diff --git a/dist/main.js b/dist/main.js index 50406e8..3e51d0c 100644 --- a/dist/main.js +++ b/dist/main.js @@ -11071,18 +11071,21 @@ async function readManifest(packagePath) { } return { packageSpec, - manifest: { name, version: version2, publishConfig, scope: (_a = SCOPE_RE.exec(name)) == null ? void 0 : _a[1] } + name, + version: version2, + publishConfig, + scope: (_a = SCOPE_RE.exec(name)) == null ? void 0 : _a[1] }; } // src/normalize-options.ts var import_node_os2 = __toESM(require("node:os")); -var DEFAULT_REGISTRY = "https://registry.npmjs.org/"; -var DEFAULT_TAG = "latest"; -function normalizeOptions(options, manifest) { +var REGISTRY_NPM = "https://registry.npmjs.org/"; +var TAG_LATEST = "latest"; +function normalizeOptions(manifest, options) { var _a, _b, _c; - const defaultTag = ((_a = manifest.publishConfig) == null ? void 0 : _a.tag) ?? DEFAULT_TAG; - const defaultRegistry = ((_b = manifest.publishConfig) == null ? void 0 : _b.registry) ?? DEFAULT_REGISTRY; + const defaultTag = ((_a = manifest.publishConfig) == null ? void 0 : _a.tag) ?? TAG_LATEST; + const defaultRegistry = ((_b = manifest.publishConfig) == null ? void 0 : _b.registry) ?? REGISTRY_NPM; const defaultAccess = ((_c = manifest.publishConfig) == null ? void 0 : _c.access) ?? (manifest.scope === void 0 ? ACCESS_PUBLIC : void 0); return { token: validateToken(options.token), @@ -11131,42 +11134,38 @@ var validateStrategy = (value) => { throw new InvalidStrategyError(value); }; -// src/npm/use-npm-environment.ts -var import_promises2 = __toESM(require("node:fs/promises")); +// src/npm/call-npm-cli.ts +var import_node_child_process = __toESM(require("node:child_process")); var import_node_os3 = __toESM(require("node:os")); -var import_node_path2 = __toESM(require("node:path")); -async function useNpmEnvironment(options, task) { - var _a; - const { registry, token, logger: logger2, temporaryDirectory } = options; - const npmrcDirectory = await import_promises2.default.mkdtemp( - import_node_path2.default.join(temporaryDirectory, "npm-publish-") +var VIEW = "view"; +var PUBLISH = "publish"; +var E404 = "E404"; +var EPUBLISHCONFLICT = "EPUBLISHCONFLICT"; +var NPM = import_node_os3.default.platform() === "win32" ? "npm.cmd" : "npm"; +var JSON_MATCH_RE = /(\{[\s\S]*\})/mu; +async function callNpmCli(command, cliArguments, options) { + var _a, _b; + const { stdout, stderr, exitCode } = await execNpm( + [command, "--ignore-scripts", "--json", ...cliArguments], + options.environment, + options.logger ); - const npmrc = import_node_path2.default.join(npmrcDirectory, ".npmrc"); - const config = [ - "; created by jsdevtools/npm-publish", - `//${registry.host}/:_authToken=\${NODE_AUTH_TOKEN}`, - `registry=${registry.href}`, - "" - ].join(import_node_os3.default.EOL); - await import_promises2.default.writeFile(npmrc, config, "utf8"); - (_a = logger2 == null ? void 0 : logger2.debug) == null ? void 0 : _a.call(logger2, `Temporary .npmrc created at ${npmrc} -${config}`); - try { - return await task({ - NODE_AUTH_TOKEN: token, - npm_config_userconfig: npmrc - }); - } finally { - await import_promises2.default.rm(npmrcDirectory, { force: true, recursive: true }); + let successData; + let errorCode; + let error; + if (exitCode === 0) { + successData = parseJson(stdout); + } else { + const errorPayload = parseJson( + stdout, + stderr + ); + errorCode = (_b = (_a = errorPayload == null ? void 0 : errorPayload.error) == null ? void 0 : _a.code) == null ? void 0 : _b.toUpperCase(); + error = new NpmCallError(command, exitCode, stderr); } + return { successData, errorCode, error }; } - -// src/npm/call-npm-cli.ts -var import_node_child_process = __toESM(require("node:child_process")); -var import_node_os4 = __toESM(require("node:os")); -var NPM = import_node_os4.default.platform() === "win32" ? "npm.cmd" : "npm"; -var JSON_MATCH_RE = /(\{[\s\S]*\})/mu; -var execNpm = (commandArguments, environment = {}, logger2) => { +async function execNpm(commandArguments, environment, logger2) { var _a; (_a = logger2 == null ? void 0 : logger2.debug) == null ? void 0 : _a.call(logger2, `Running command: ${NPM} ${commandArguments.join(" ")}`); return new Promise((resolve) => { @@ -11185,8 +11184,8 @@ var execNpm = (commandArguments, environment = {}, logger2) => { }); }); }); -}; -var parseJson = (...values) => { +} +function parseJson(...values) { var _a; for (const value of values) { const jsonValue = (_a = JSON_MATCH_RE.exec(value)) == null ? void 0 : _a[1]; @@ -11199,29 +11198,68 @@ var parseJson = (...values) => { } } return void 0; -}; -async function callNpmCli(command, cliArguments, options = {}) { - var _a, _b; - const { stdout, stderr, exitCode } = await execNpm( - [command, "--ignore-scripts", "--json", ...cliArguments], - options.environment, - options.logger +} + +// src/npm/use-npm-environment.ts +var import_promises2 = __toESM(require("node:fs/promises")); +var import_node_os4 = __toESM(require("node:os")); +var import_node_path2 = __toESM(require("node:path")); +async function useNpmEnvironment(manifest, options, task) { + var _a; + const { registry, token, logger: logger2, temporaryDirectory } = options; + const npmrcDirectory = await import_promises2.default.mkdtemp( + import_node_path2.default.join(temporaryDirectory, "npm-publish-") ); - if (exitCode !== 0) { - const errorPayload = parseJson( - stdout, - stderr - ); - const errorCode = (_b = (_a = errorPayload == null ? void 0 : errorPayload.error) == null ? void 0 : _a.code) == null ? void 0 : _b.toLowerCase(); - if (typeof errorCode === "string" && options.ifError && errorCode in options.ifError) { - return options.ifError[errorCode]; + const npmrc = import_node_path2.default.join(npmrcDirectory, ".npmrc"); + const environment = { + NODE_AUTH_TOKEN: token, + npm_config_userconfig: npmrc + }; + const config = [ + "; created by jsdevtools/npm-publish", + `//${registry.host}/:_authToken=\${NODE_AUTH_TOKEN}`, + `registry=${registry.href}`, + "" + ].join(import_node_os4.default.EOL); + await import_promises2.default.writeFile(npmrc, config, "utf8"); + (_a = logger2 == null ? void 0 : logger2.debug) == null ? void 0 : _a.call(logger2, `Temporary .npmrc created at ${npmrc} +${config}`); + try { + return await task(manifest, options, environment); + } finally { + await import_promises2.default.rm(npmrcDirectory, { force: true, recursive: true }); + } +} + +// src/compare-and-publish/compare-versions.ts +var import_diff = __toESM(require_diff()); +var import_gt = __toESM(require_gt()); +var import_valid = __toESM(require_valid()); +var INITIAL = "initial"; +var DIFFERENT = "different"; +function compareVersions(currentVersion, publishedVersions, options) { + const { versions, "dist-tags": tags } = publishedVersions ?? {}; + const { strategy, tag: publishTag } = options; + const oldVersion = (0, import_valid.default)(tags == null ? void 0 : tags[publishTag.value]) ?? void 0; + const isUnique = !(versions == null ? void 0 : versions.includes(currentVersion)); + let type; + if (isUnique) { + if (!oldVersion) { + type = INITIAL; + } else if ((0, import_gt.default)(currentVersion, oldVersion)) { + type = (0, import_diff.default)(currentVersion, oldVersion) ?? DIFFERENT; + } else if (strategy.value === STRATEGY_ALL) { + type = DIFFERENT; } - throw new NpmCallError(command, exitCode, stderr); } - return parseJson(stdout) ?? stdout; + return { type, oldVersion }; } -// src/npm/get-publish-arguments.ts +// src/compare-and-publish/get-arguments.ts +function getViewArguments(packageName, options, retryWithTag = false) { + const packageSpec = retryWithTag ? `${packageName}@${options.tag.value}` : packageName; + return [packageSpec, "dist-tags", "versions"]; +} function getPublishArguments(packageSpec, options) { const { tag, access, dryRun } = options; const publishArguments = []; @@ -11240,62 +11278,44 @@ function getPublishArguments(packageSpec, options) { return publishArguments; } -// src/npm/index.ts -async function getVersions(packageName, options) { - return useNpmEnvironment(options, (environment) => { - return callNpmCli( - "view", - [packageName, "dist-tags", "versions"], - { - logger: options.logger, - environment, - ifError: { e404: { "dist-tags": {}, versions: [] } } - } - ); - }); -} -async function publish(packageSpec, options) { +// src/compare-and-publish/compare-and-publish.ts +async function compareAndPublish(manifest, options, environment) { + const { name, version: version2, packageSpec } = manifest; + const cliOptions = { environment, logger: options.logger }; + const viewArguments = getViewArguments(name, options); const publishArguments = getPublishArguments(packageSpec, options); - return useNpmEnvironment(options, (environment) => { - return callNpmCli("publish", publishArguments, { - logger: options.logger, - environment - }); - }); -} - -// src/compare-versions.ts -var import_semver2 = __toESM(require_semver2()); -var INITIAL = "initial"; -var DIFFERENT = "different"; -function compareVersions(version2, publishedVersions, options) { - const { versions: existingVersions, "dist-tags": tags } = publishedVersions; - const { strategy, tag: publishTag } = options; - const oldVersion = (0, import_semver2.valid)(tags[publishTag.value]) ?? void 0; - const isUnique = !existingVersions.includes(version2); - let type; - if (isUnique) { - if (!oldVersion) { - type = INITIAL; - } else if ((0, import_semver2.gt)(version2, oldVersion)) { - type = (0, import_semver2.diff)(version2, oldVersion) ?? DIFFERENT; - } else if (strategy.value === STRATEGY_ALL) { - type = DIFFERENT; - } + let viewCall = await callNpmCli(VIEW, viewArguments, cliOptions); + if (!viewCall.successData && !viewCall.error) { + const viewWithTagArguments = getViewArguments(name, options, true); + viewCall = await callNpmCli(VIEW, viewWithTagArguments, cliOptions); } - return { type, oldVersion }; + if (viewCall.error && viewCall.errorCode !== E404) { + throw viewCall.error; + } + const comparison = compareVersions(version2, viewCall.successData, options); + const publishCall = comparison.type ? await callNpmCli(PUBLISH, publishArguments, cliOptions) : { successData: void 0, errorCode: void 0, error: void 0 }; + if (publishCall.error && publishCall.errorCode !== EPUBLISHCONFLICT) { + throw publishCall.error; + } + const { successData: publishData } = publishCall; + return { + id: publishData == null ? void 0 : publishData.id, + files: (publishData == null ? void 0 : publishData.files) ?? [], + type: publishData ? comparison.type : void 0, + oldVersion: comparison.oldVersion + }; } // src/format-publish-result.ts var import_node_os5 = __toESM(require("node:os")); -function formatPublishResult(manifest, options, results) { - if (results === void 0) { +function formatPublishResult(manifest, options, result) { + if (result.id === void 0) { return `\u{1F645}\u200D\u2640\uFE0F ${manifest.name}@${manifest.version} publish skipped.`; } return [ - `\u{1F4E6} ${results.id}${options.dryRun.value ? " (DRY RUN)" : ""}`, + `\u{1F4E6} ${result.id}${options.dryRun.value ? " (DRY RUN)" : ""}`, "=== Contents ===", - ...results.files.map(({ path: path3, size }) => `${formatSize(size)} ${path3}`) + ...result.files.map(({ path: path3, size }) => `${formatSize(size)} ${path3}`) ].join(import_node_os5.default.EOL); } var formatSize = (size) => { @@ -11311,28 +11331,23 @@ var formatSize = (size) => { // src/npm-publish.ts async function npmPublish(options) { var _a, _b; - const { packageSpec, manifest } = await readManifest(options.package); - const normalizedOptions = normalizeOptions(options, manifest); - const publishedVersions = await getVersions(manifest.name, normalizedOptions); - const versionComparison = compareVersions( - manifest.version, - publishedVersions, - normalizedOptions + const manifest = await readManifest(options.package); + const normalizedOptions = normalizeOptions(manifest, options); + const publishResult = await useNpmEnvironment( + manifest, + normalizedOptions, + compareAndPublish ); - let publishResult; - if (versionComparison.type !== void 0) { - publishResult = await publish(packageSpec, normalizedOptions); - } (_b = (_a = normalizedOptions.logger) == null ? void 0 : _a.info) == null ? void 0 : _b.call( _a, formatPublishResult(manifest, normalizedOptions, publishResult) ); return { - id: publishResult == null ? void 0 : publishResult.id, + id: publishResult.id, + type: publishResult.type, + oldVersion: publishResult.oldVersion, name: manifest.name, version: manifest.version, - type: versionComparison.type, - oldVersion: versionComparison.oldVersion, registry: normalizedOptions.registry, tag: normalizedOptions.tag.value, access: normalizedOptions.access.value, diff --git a/dist/main.js.map b/dist/main.js.map index 9249e27..e07819b 100644 --- a/dist/main.js.map +++ b/dist/main.js.map @@ -1,7 +1,7 @@ { "version": 3, - "sources": ["../node_modules/semver/internal/constants.js", "../node_modules/semver/internal/debug.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/clean.js", "../node_modules/semver/functions/inc.js", "../node_modules/semver/functions/diff.js", "../node_modules/semver/functions/major.js", "../node_modules/semver/functions/minor.js", "../node_modules/semver/functions/patch.js", "../node_modules/semver/functions/prerelease.js", "../node_modules/semver/functions/compare.js", "../node_modules/semver/functions/rcompare.js", "../node_modules/semver/functions/compare-loose.js", "../node_modules/semver/functions/compare-build.js", "../node_modules/semver/functions/sort.js", "../node_modules/semver/functions/rsort.js", "../node_modules/semver/functions/gt.js", "../node_modules/semver/functions/lt.js", "../node_modules/semver/functions/eq.js", "../node_modules/semver/functions/neq.js", "../node_modules/semver/functions/gte.js", "../node_modules/semver/functions/lte.js", "../node_modules/semver/functions/cmp.js", "../node_modules/semver/functions/coerce.js", "../node_modules/yallist/iterator.js", "../node_modules/yallist/yallist.js", "../node_modules/semver/node_modules/lru-cache/index.js", "../node_modules/semver/classes/range.js", "../node_modules/semver/classes/comparator.js", "../node_modules/semver/functions/satisfies.js", "../node_modules/semver/ranges/to-comparators.js", "../node_modules/semver/ranges/max-satisfying.js", "../node_modules/semver/ranges/min-satisfying.js", "../node_modules/semver/ranges/min-version.js", "../node_modules/semver/ranges/valid.js", "../node_modules/semver/ranges/outside.js", "../node_modules/semver/ranges/gtr.js", "../node_modules/semver/ranges/ltr.js", "../node_modules/semver/ranges/intersects.js", "../node_modules/semver/ranges/simplify.js", "../node_modules/semver/ranges/subset.js", "../node_modules/semver/index.js", "../node_modules/tar/lib/high-level-opt.js", "../node_modules/tar/node_modules/minipass/index.js", "../node_modules/minizlib/constants.js", "../node_modules/minizlib/node_modules/minipass/index.js", "../node_modules/minizlib/index.js", "../node_modules/tar/lib/normalize-windows-path.js", "../node_modules/tar/lib/read-entry.js", "../node_modules/tar/lib/types.js", "../node_modules/tar/lib/large-numbers.js", "../node_modules/tar/lib/header.js", "../node_modules/tar/lib/pax.js", "../node_modules/tar/lib/strip-trailing-slashes.js", "../node_modules/tar/lib/warn-mixin.js", "../node_modules/tar/lib/winchars.js", "../node_modules/tar/lib/strip-absolute-path.js", "../node_modules/tar/lib/mode-fix.js", "../node_modules/tar/lib/write-entry.js", "../node_modules/tar/lib/pack.js", "../node_modules/fs-minipass/node_modules/minipass/index.js", "../node_modules/fs-minipass/index.js", "../node_modules/tar/lib/parse.js", "../node_modules/tar/lib/list.js", "../node_modules/tar/lib/create.js", "../node_modules/tar/lib/replace.js", "../node_modules/tar/lib/update.js", "../node_modules/mkdirp/lib/opts-arg.js", "../node_modules/mkdirp/lib/path-arg.js", "../node_modules/mkdirp/lib/find-made.js", "../node_modules/mkdirp/lib/mkdirp-manual.js", "../node_modules/mkdirp/lib/mkdirp-native.js", "../node_modules/mkdirp/lib/use-native.js", "../node_modules/mkdirp/index.js", "../node_modules/chownr/chownr.js", "../node_modules/tar/lib/mkdir.js", "../node_modules/tar/lib/normalize-unicode.js", "../node_modules/tar/lib/path-reservations.js", "../node_modules/tar/lib/get-write-flag.js", "../node_modules/tar/lib/unpack.js", "../node_modules/tar/lib/extract.js", "../node_modules/tar/index.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/options.ts", "../src/errors.ts", "../src/read-manifest.ts", "../src/normalize-options.ts", "../src/npm/use-npm-environment.ts", "../src/npm/call-npm-cli.ts", "../src/npm/get-publish-arguments.ts", "../src/npm/index.ts", "../src/compare-versions.ts", "../src/format-publish-result.ts", "../src/npm-publish.ts", "../src/action/core.ts", "../src/action/main.ts"], - "sourcesContent": ["// 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\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_INTEGER,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 0b001,\n FLAG_LOOSE: 0b010,\n}\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", "const { MAX_SAFE_COMPONENT_LENGTH } = require('./constants')\nconst debug = require('./debug')\nexports = module.exports = {}\n\n// The actual regexps go on exports.re\nconst re = exports.re = []\nconst src = exports.src = []\nconst t = exports.t = {}\nlet R = 0\n\nconst createToken = (name, value, isGlobal) => {\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}\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', '[0-9]+')\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-][a-zA-Z0-9-]*')\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', '[0-9A-Za-z-]+')\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('COERCE', `${'(^|[^\\\\d])' +\n '(\\\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:$|[^\\\\d])`)\ncreateToken('COERCERTL', src[t.COERCE], 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 { 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: ${require('util').inspect(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('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 // 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.format()\n this.raw = this.version\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')\nconst clean = (version, options) => {\n const s = parse(version.trim().replace(/^[=v]+/, ''), options)\n return s ? s.version : null\n}\nmodule.exports = clean\n", "const SemVer = require('../classes/semver')\n\nconst inc = (version, release, options, identifier, identifierBase) => {\n if (typeof (options) === 'string') {\n identifierBase = identifier\n identifier = options\n options = undefined\n }\n\n try {\n return new SemVer(\n version instanceof SemVer ? version.version : version,\n options\n ).inc(release, identifier, identifierBase).version\n } catch (er) {\n return null\n }\n}\nmodule.exports = inc\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\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 // at this point we know stable versions match but overall versions are not equal,\n // so either they are both prereleases, or the lower version is a prerelease\n\n if (highHasPre) {\n // high and low are preleases\n return 'prerelease'\n }\n\n if (lowVersion.patch) {\n // anything higher than a patch bump would result in the wrong version\n return 'patch'\n }\n\n if (lowVersion.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\nmodule.exports = diff\n", "const SemVer = require('../classes/semver')\nconst major = (a, loose) => new SemVer(a, loose).major\nmodule.exports = major\n", "const SemVer = require('../classes/semver')\nconst minor = (a, loose) => new SemVer(a, loose).minor\nmodule.exports = minor\n", "const SemVer = require('../classes/semver')\nconst patch = (a, loose) => new SemVer(a, loose).patch\nmodule.exports = patch\n", "const parse = require('./parse')\nconst prerelease = (version, options) => {\n const parsed = parse(version, options)\n return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\nmodule.exports = prerelease\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 rcompare = (a, b, loose) => compare(b, a, loose)\nmodule.exports = rcompare\n", "const compare = require('./compare')\nconst compareLoose = (a, b) => compare(a, b, true)\nmodule.exports = compareLoose\n", "const SemVer = require('../classes/semver')\nconst compareBuild = (a, b, loose) => {\n const versionA = new SemVer(a, loose)\n const versionB = new SemVer(b, loose)\n return versionA.compare(versionB) || versionA.compareBuild(versionB)\n}\nmodule.exports = compareBuild\n", "const compareBuild = require('./compare-build')\nconst sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))\nmodule.exports = sort\n", "const compareBuild = require('./compare-build')\nconst rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose))\nmodule.exports = rsort\n", "const compare = require('./compare')\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n", "const compare = require('./compare')\nconst lt = (a, b, loose) => compare(a, b, loose) < 0\nmodule.exports = lt\n", "const compare = require('./compare')\nconst eq = (a, b, loose) => compare(a, b, loose) === 0\nmodule.exports = eq\n", "const compare = require('./compare')\nconst neq = (a, b, loose) => compare(a, b, loose) !== 0\nmodule.exports = neq\n", "const compare = require('./compare')\nconst gte = (a, b, loose) => compare(a, b, loose) >= 0\nmodule.exports = gte\n", "const compare = require('./compare')\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n", "const eq = require('./eq')\nconst neq = require('./neq')\nconst gt = require('./gt')\nconst gte = require('./gte')\nconst lt = require('./lt')\nconst lte = require('./lte')\n\nconst cmp = (a, op, b, loose) => {\n switch (op) {\n case '===':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a === b\n\n case '!==':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a !== b\n\n case '':\n case '=':\n case '==':\n return eq(a, b, loose)\n\n case '!=':\n return neq(a, b, loose)\n\n case '>':\n return gt(a, b, loose)\n\n case '>=':\n return gte(a, b, loose)\n\n case '<':\n return lt(a, b, loose)\n\n case '<=':\n return lte(a, b, loose)\n\n default:\n throw new TypeError(`Invalid operator: ${op}`)\n }\n}\nmodule.exports = cmp\n", "const SemVer = require('../classes/semver')\nconst parse = require('./parse')\nconst { re, t } = require('../internal/re')\n\nconst coerce = (version, options) => {\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version === 'number') {\n version = String(version)\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n options = options || {}\n\n let match = null\n if (!options.rtl) {\n match = version.match(re[t.COERCE])\n } else {\n // Find the right-most coercible string that does not share\n // a terminus with a more left-ward coercible string.\n // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'\n //\n // Walk through the string checking with a /g regexp\n // Manually set the index so as to pick up overlapping matches.\n // Stop when we get a match that ends at the string end, since no\n // coercible string can be more right-ward without the same terminus.\n let next\n while ((next = re[t.COERCERTL].exec(version)) &&\n (!match || match.index + match[0].length !== version.length)\n ) {\n if (!match ||\n next.index + next[0].length !== match.index + match[0].length) {\n match = next\n }\n re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length\n }\n // leave it in a clean state\n re[t.COERCERTL].lastIndex = -1\n }\n\n if (match === null) {\n return null\n }\n\n return parse(`${match[2]}.${match[3] || '0'}.${match[4] || '0'}`, options)\n}\nmodule.exports = coerce\n", "'use strict'\nmodule.exports = function (Yallist) {\n Yallist.prototype[Symbol.iterator] = function* () {\n for (let walker = this.head; walker; walker = walker.next) {\n yield walker.value\n }\n }\n}\n", "'use strict'\nmodule.exports = Yallist\n\nYallist.Node = Node\nYallist.create = Yallist\n\nfunction Yallist (list) {\n var self = this\n if (!(self instanceof Yallist)) {\n self = new Yallist()\n }\n\n self.tail = null\n self.head = null\n self.length = 0\n\n if (list && typeof list.forEach === 'function') {\n list.forEach(function (item) {\n self.push(item)\n })\n } else if (arguments.length > 0) {\n for (var i = 0, l = arguments.length; i < l; i++) {\n self.push(arguments[i])\n }\n }\n\n return self\n}\n\nYallist.prototype.removeNode = function (node) {\n if (node.list !== this) {\n throw new Error('removing node which does not belong to this list')\n }\n\n var next = node.next\n var 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 node.list.length--\n node.next = null\n node.prev = null\n node.list = null\n\n return next\n}\n\nYallist.prototype.unshiftNode = function (node) {\n if (node === this.head) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var 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\nYallist.prototype.pushNode = function (node) {\n if (node === this.tail) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var 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\nYallist.prototype.push = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n push(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.unshift = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n unshift(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.pop = function () {\n if (!this.tail) {\n return undefined\n }\n\n var res = this.tail.value\n this.tail = this.tail.prev\n if (this.tail) {\n this.tail.next = null\n } else {\n this.head = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.shift = function () {\n if (!this.head) {\n return undefined\n }\n\n var res = this.head.value\n this.head = this.head.next\n if (this.head) {\n this.head.prev = null\n } else {\n this.tail = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.forEach = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.head, i = 0; walker !== null; i++) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.next\n }\n}\n\nYallist.prototype.forEachReverse = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.prev\n }\n}\n\nYallist.prototype.get = function (n) {\n for (var i = 0, walker = this.head; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.next\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.getReverse = function (n) {\n for (var i = 0, walker = this.tail; walker !== null && 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 !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.map = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.head; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.next\n }\n return res\n}\n\nYallist.prototype.mapReverse = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.tail; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.prev\n }\n return res\n}\n\nYallist.prototype.reduce = function (fn, initial) {\n var acc\n var walker = this.head\n if (arguments.length > 1) {\n acc = initial\n } else if (this.head) {\n walker = this.head.next\n acc = this.head.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = 0; walker !== null; i++) {\n acc = fn(acc, walker.value, i)\n walker = walker.next\n }\n\n return acc\n}\n\nYallist.prototype.reduceReverse = function (fn, initial) {\n var acc\n var walker = this.tail\n if (arguments.length > 1) {\n acc = initial\n } else if (this.tail) {\n walker = this.tail.prev\n acc = this.tail.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = this.length - 1; walker !== null; i--) {\n acc = fn(acc, walker.value, i)\n walker = walker.prev\n }\n\n return acc\n}\n\nYallist.prototype.toArray = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.head; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.next\n }\n return arr\n}\n\nYallist.prototype.toArrayReverse = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.tail; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.prev\n }\n return arr\n}\n\nYallist.prototype.slice = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var 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 for (var i = 0, walker = this.head; walker !== null && i < from; i++) {\n walker = walker.next\n }\n for (; walker !== null && i < to; i++, walker = walker.next) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.sliceReverse = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var 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 for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {\n walker = walker.prev\n }\n for (; walker !== null && i > from; i--, walker = walker.prev) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.splice = function (start, deleteCount, ...nodes) {\n if (start > this.length) {\n start = this.length - 1\n }\n if (start < 0) {\n start = this.length + start;\n }\n\n for (var i = 0, walker = this.head; walker !== null && i < start; i++) {\n walker = walker.next\n }\n\n var ret = []\n for (var i = 0; walker && i < deleteCount; i++) {\n ret.push(walker.value)\n walker = this.removeNode(walker)\n }\n if (walker === null) {\n walker = this.tail\n }\n\n if (walker !== this.head && walker !== this.tail) {\n walker = walker.prev\n }\n\n for (var i = 0; i < nodes.length; i++) {\n walker = insert(this, walker, nodes[i])\n }\n return ret;\n}\n\nYallist.prototype.reverse = function () {\n var head = this.head\n var tail = this.tail\n for (var walker = head; walker !== null; walker = walker.prev) {\n var 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\nfunction insert (self, node, value) {\n var inserted = node === self.head ?\n new Node(value, null, node, self) :\n new Node(value, node, node.next, self)\n\n if (inserted.next === null) {\n self.tail = inserted\n }\n if (inserted.prev === null) {\n self.head = inserted\n }\n\n self.length++\n\n return inserted\n}\n\nfunction push (self, item) {\n self.tail = new Node(item, self.tail, null, self)\n if (!self.head) {\n self.head = self.tail\n }\n self.length++\n}\n\nfunction unshift (self, item) {\n self.head = new Node(item, null, self.head, self)\n if (!self.tail) {\n self.tail = self.head\n }\n self.length++\n}\n\nfunction Node (value, prev, next, list) {\n if (!(this instanceof Node)) {\n return new Node(value, prev, next, list)\n }\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 = null\n }\n\n if (next) {\n next.prev = this\n this.next = next\n } else {\n this.next = null\n }\n}\n\ntry {\n // add if support for Symbol.iterator is present\n require('./iterator.js')(Yallist)\n} catch (er) {}\n", "'use strict'\n\n// A linked list to keep track of recently-used-ness\nconst Yallist = require('yallist')\n\nconst MAX = Symbol('max')\nconst LENGTH = Symbol('length')\nconst LENGTH_CALCULATOR = Symbol('lengthCalculator')\nconst ALLOW_STALE = Symbol('allowStale')\nconst MAX_AGE = Symbol('maxAge')\nconst DISPOSE = Symbol('dispose')\nconst NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet')\nconst LRU_LIST = Symbol('lruList')\nconst CACHE = Symbol('cache')\nconst UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet')\n\nconst naiveLength = () => 1\n\n// lruList is a yallist where the head is the youngest\n// item, and the tail is the oldest. the list contains the Hit\n// objects as the entries.\n// Each Hit object has a reference to its Yallist.Node. This\n// never changes.\n//\n// cache is a Map (or PseudoMap) that matches the keys to\n// the Yallist.Node object.\nclass LRUCache {\n constructor (options) {\n if (typeof options === 'number')\n options = { max: options }\n\n if (!options)\n options = {}\n\n if (options.max && (typeof options.max !== 'number' || options.max < 0))\n throw new TypeError('max must be a non-negative number')\n // Kind of weird to have a default max of Infinity, but oh well.\n const max = this[MAX] = options.max || Infinity\n\n const lc = options.length || naiveLength\n this[LENGTH_CALCULATOR] = (typeof lc !== 'function') ? naiveLength : lc\n this[ALLOW_STALE] = options.stale || false\n if (options.maxAge && typeof options.maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n this[MAX_AGE] = options.maxAge || 0\n this[DISPOSE] = options.dispose\n this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false\n this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false\n this.reset()\n }\n\n // resize the cache when the max changes.\n set max (mL) {\n if (typeof mL !== 'number' || mL < 0)\n throw new TypeError('max must be a non-negative number')\n\n this[MAX] = mL || Infinity\n trim(this)\n }\n get max () {\n return this[MAX]\n }\n\n set allowStale (allowStale) {\n this[ALLOW_STALE] = !!allowStale\n }\n get allowStale () {\n return this[ALLOW_STALE]\n }\n\n set maxAge (mA) {\n if (typeof mA !== 'number')\n throw new TypeError('maxAge must be a non-negative number')\n\n this[MAX_AGE] = mA\n trim(this)\n }\n get maxAge () {\n return this[MAX_AGE]\n }\n\n // resize the cache when the lengthCalculator changes.\n set lengthCalculator (lC) {\n if (typeof lC !== 'function')\n lC = naiveLength\n\n if (lC !== this[LENGTH_CALCULATOR]) {\n this[LENGTH_CALCULATOR] = lC\n this[LENGTH] = 0\n this[LRU_LIST].forEach(hit => {\n hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key)\n this[LENGTH] += hit.length\n })\n }\n trim(this)\n }\n get lengthCalculator () { return this[LENGTH_CALCULATOR] }\n\n get length () { return this[LENGTH] }\n get itemCount () { return this[LRU_LIST].length }\n\n rforEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].tail; walker !== null;) {\n const prev = walker.prev\n forEachStep(this, fn, walker, thisp)\n walker = prev\n }\n }\n\n forEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].head; walker !== null;) {\n const next = walker.next\n forEachStep(this, fn, walker, thisp)\n walker = next\n }\n }\n\n keys () {\n return this[LRU_LIST].toArray().map(k => k.key)\n }\n\n values () {\n return this[LRU_LIST].toArray().map(k => k.value)\n }\n\n reset () {\n if (this[DISPOSE] &&\n this[LRU_LIST] &&\n this[LRU_LIST].length) {\n this[LRU_LIST].forEach(hit => this[DISPOSE](hit.key, hit.value))\n }\n\n this[CACHE] = new Map() // hash of items by key\n this[LRU_LIST] = new Yallist() // list of items in order of use recency\n this[LENGTH] = 0 // length of items in the list\n }\n\n dump () {\n return this[LRU_LIST].map(hit =>\n isStale(this, hit) ? false : {\n k: hit.key,\n v: hit.value,\n e: hit.now + (hit.maxAge || 0)\n }).toArray().filter(h => h)\n }\n\n dumpLru () {\n return this[LRU_LIST]\n }\n\n set (key, value, maxAge) {\n maxAge = maxAge || this[MAX_AGE]\n\n if (maxAge && typeof maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n\n const now = maxAge ? Date.now() : 0\n const len = this[LENGTH_CALCULATOR](value, key)\n\n if (this[CACHE].has(key)) {\n if (len > this[MAX]) {\n del(this, this[CACHE].get(key))\n return false\n }\n\n const node = this[CACHE].get(key)\n const item = node.value\n\n // dispose of the old one before overwriting\n // split out into 2 ifs for better coverage tracking\n if (this[DISPOSE]) {\n if (!this[NO_DISPOSE_ON_SET])\n this[DISPOSE](key, item.value)\n }\n\n item.now = now\n item.maxAge = maxAge\n item.value = value\n this[LENGTH] += len - item.length\n item.length = len\n this.get(key)\n trim(this)\n return true\n }\n\n const hit = new Entry(key, value, len, now, maxAge)\n\n // oversized objects fall out of cache automatically.\n if (hit.length > this[MAX]) {\n if (this[DISPOSE])\n this[DISPOSE](key, value)\n\n return false\n }\n\n this[LENGTH] += hit.length\n this[LRU_LIST].unshift(hit)\n this[CACHE].set(key, this[LRU_LIST].head)\n trim(this)\n return true\n }\n\n has (key) {\n if (!this[CACHE].has(key)) return false\n const hit = this[CACHE].get(key).value\n return !isStale(this, hit)\n }\n\n get (key) {\n return get(this, key, true)\n }\n\n peek (key) {\n return get(this, key, false)\n }\n\n pop () {\n const node = this[LRU_LIST].tail\n if (!node)\n return null\n\n del(this, node)\n return node.value\n }\n\n del (key) {\n del(this, this[CACHE].get(key))\n }\n\n load (arr) {\n // reset the cache\n this.reset()\n\n const now = Date.now()\n // A previous serialized cache has the most recent items first\n for (let l = arr.length - 1; l >= 0; l--) {\n const hit = arr[l]\n const expiresAt = hit.e || 0\n if (expiresAt === 0)\n // the item was created without expiration in a non aged cache\n this.set(hit.k, hit.v)\n else {\n const maxAge = expiresAt - now\n // dont add already expired items\n if (maxAge > 0) {\n this.set(hit.k, hit.v, maxAge)\n }\n }\n }\n }\n\n prune () {\n this[CACHE].forEach((value, key) => get(this, key, false))\n }\n}\n\nconst get = (self, key, doUse) => {\n const node = self[CACHE].get(key)\n if (node) {\n const hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n return undefined\n } else {\n if (doUse) {\n if (self[UPDATE_AGE_ON_GET])\n node.value.now = Date.now()\n self[LRU_LIST].unshiftNode(node)\n }\n }\n return hit.value\n }\n}\n\nconst isStale = (self, hit) => {\n if (!hit || (!hit.maxAge && !self[MAX_AGE]))\n return false\n\n const diff = Date.now() - hit.now\n return hit.maxAge ? diff > hit.maxAge\n : self[MAX_AGE] && (diff > self[MAX_AGE])\n}\n\nconst trim = self => {\n if (self[LENGTH] > self[MAX]) {\n for (let walker = self[LRU_LIST].tail;\n self[LENGTH] > self[MAX] && walker !== null;) {\n // We know that we're about to delete this one, and also\n // what the next least recently used key will be, so just\n // go ahead and set it now.\n const prev = walker.prev\n del(self, walker)\n walker = prev\n }\n }\n}\n\nconst del = (self, node) => {\n if (node) {\n const hit = node.value\n if (self[DISPOSE])\n self[DISPOSE](hit.key, hit.value)\n\n self[LENGTH] -= hit.length\n self[CACHE].delete(hit.key)\n self[LRU_LIST].removeNode(node)\n }\n}\n\nclass Entry {\n constructor (key, value, length, now, maxAge) {\n this.key = key\n this.value = value\n this.length = length\n this.now = now\n this.maxAge = maxAge || 0\n }\n}\n\nconst forEachStep = (self, fn, node, thisp) => {\n let hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n hit = undefined\n }\n if (hit)\n fn.call(thisp, hit.value, hit.key, self)\n}\n\nmodule.exports = LRUCache\n", "// hoisted class for cyclic dependency\nclass Range {\n constructor (range, options) {\n options = parseOptions(options)\n\n if (range instanceof Range) {\n if (\n range.loose === !!options.loose &&\n range.includePrerelease === !!options.includePrerelease\n ) {\n return range\n } else {\n return new Range(range.raw, options)\n }\n }\n\n if (range instanceof Comparator) {\n // just put it in the set and return\n this.raw = range.value\n this.set = [[range]]\n this.format()\n return this\n }\n\n this.options = options\n this.loose = !!options.loose\n this.includePrerelease = !!options.includePrerelease\n\n // First, split based on boolean or ||\n this.raw = range\n this.set = range\n .split('||')\n // map the range to a 2d array of comparators\n .map(r => this.parseRange(r.trim()))\n // throw out any comparator lists that are empty\n // this generally means that it was not a valid range, which is allowed\n // in loose mode, but will still throw if the WHOLE range is invalid.\n .filter(c => c.length)\n\n if (!this.set.length) {\n throw new TypeError(`Invalid SemVer Range: ${range}`)\n }\n\n // if we have any that are not the null set, throw out null sets.\n if (this.set.length > 1) {\n // keep the first one, in case they're all null sets\n const first = this.set[0]\n this.set = this.set.filter(c => !isNullSet(c[0]))\n if (this.set.length === 0) {\n this.set = [first]\n } else if (this.set.length > 1) {\n // if we have any that are *, then the range is just *\n for (const c of this.set) {\n if (c.length === 1 && isAny(c[0])) {\n this.set = [c]\n break\n }\n }\n }\n }\n\n this.format()\n }\n\n format () {\n this.range = this.set\n .map((comps) => {\n return comps.join(' ').trim()\n })\n .join('||')\n .trim()\n return this.range\n }\n\n toString () {\n return this.range\n }\n\n parseRange (range) {\n range = range.trim()\n\n // memoize range parsing for performance.\n // this is a very hot path, and fully deterministic.\n const memoOpts =\n (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) |\n (this.options.loose && FLAG_LOOSE)\n const memoKey = memoOpts + ':' + range\n const cached = cache.get(memoKey)\n if (cached) {\n return cached\n }\n\n const loose = this.options.loose\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n range = range.replace(hr, hyphenReplace(this.options.includePrerelease))\n debug('hyphen replace', range)\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n debug('comparator trim', range)\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n\n // normalize spaces\n range = range.split(/\\s+/).join(' ')\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n let rangeList = range\n .split(' ')\n .map(comp => parseComparator(comp, this.options))\n .join(' ')\n .split(/\\s+/)\n // >=0.0.0 is equivalent to *\n .map(comp => replaceGTE0(comp, this.options))\n\n if (loose) {\n // in loose mode, throw out any that are not valid comparators\n rangeList = rangeList.filter(comp => {\n debug('loose invalid filter', comp, this.options)\n return !!comp.match(re[t.COMPARATORLOOSE])\n })\n }\n debug('range list', rangeList)\n\n // if any comparators are the null set, then replace with JUST null set\n // if more than one comparator, remove any * comparators\n // also, don't include the same comparator more than once\n const rangeMap = new Map()\n const comparators = rangeList.map(comp => new Comparator(comp, this.options))\n for (const comp of comparators) {\n if (isNullSet(comp)) {\n return [comp]\n }\n rangeMap.set(comp.value, comp)\n }\n if (rangeMap.size > 1 && rangeMap.has('')) {\n rangeMap.delete('')\n }\n\n const result = [...rangeMap.values()]\n cache.set(memoKey, result)\n return result\n }\n\n intersects (range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required')\n }\n\n return this.set.some((thisComparators) => {\n return (\n isSatisfiable(thisComparators, options) &&\n range.set.some((rangeComparators) => {\n return (\n isSatisfiable(rangeComparators, options) &&\n thisComparators.every((thisComparator) => {\n return rangeComparators.every((rangeComparator) => {\n return thisComparator.intersects(rangeComparator, options)\n })\n })\n )\n })\n )\n })\n }\n\n // if ANY of the sets match ALL of its comparators, then pass\n test (version) {\n if (!version) {\n return false\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n for (let i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true\n }\n }\n return false\n }\n}\n\nmodule.exports = Range\n\nconst LRU = require('lru-cache')\nconst cache = new LRU({ max: 1000 })\n\nconst parseOptions = require('../internal/parse-options')\nconst Comparator = require('./comparator')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst {\n re,\n t,\n comparatorTrimReplace,\n tildeTrimReplace,\n caretTrimReplace,\n} = require('../internal/re')\nconst { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require('../internal/constants')\n\nconst isNullSet = c => c.value === '<0.0.0-0'\nconst isAny = c => c.value === ''\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nconst isSatisfiable = (comparators, options) => {\n let result = true\n const remainingComparators = comparators.slice()\n let testComparator = remainingComparators.pop()\n\n while (result && remainingComparators.length) {\n result = remainingComparators.every((otherComparator) => {\n return testComparator.intersects(otherComparator, options)\n })\n\n testComparator = remainingComparators.pop()\n }\n\n return result\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nconst parseComparator = (comp, options) => {\n debug('comp', comp, options)\n comp = replaceCarets(comp, options)\n debug('caret', comp)\n comp = replaceTildes(comp, options)\n debug('tildes', comp)\n comp = replaceXRanges(comp, options)\n debug('xrange', comp)\n comp = replaceStars(comp, options)\n debug('stars', comp)\n return comp\n}\n\nconst isX = id => !id || id.toLowerCase() === 'x' || id === '*'\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nconst replaceTildes = (comp, options) =>\n comp.trim().split(/\\s+/).map((c) => {\n return replaceTilde(c, options)\n }).join(' ')\n\nconst replaceTilde = (comp, options) => {\n const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('tilde', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0 <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0-0\n ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`\n } else if (pr) {\n debug('replaceTilde pr', pr)\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0-0\n ret = `>=${M}.${m}.${p\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('tilde return', ret)\n return ret\n })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nconst replaceCarets = (comp, options) =>\n comp.trim().split(/\\s+/).map((c) => {\n return replaceCaret(c, options)\n }).join(' ')\n\nconst replaceCaret = (comp, options) => {\n debug('caret', comp, options)\n const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]\n const z = options.includePrerelease ? '-0' : ''\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('caret', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n } else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`\n }\n } else if (pr) {\n debug('replaceCaret pr', pr)\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${+M + 1}.0.0-0`\n }\n } else {\n debug('no pr')\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p\n } <${+M + 1}.0.0-0`\n }\n }\n\n debug('caret return', ret)\n return ret\n })\n}\n\nconst replaceXRanges = (comp, options) => {\n debug('replaceXRanges', comp, options)\n return comp.split(/\\s+/).map((c) => {\n return replaceXRange(c, options)\n }).join(' ')\n}\n\nconst replaceXRange = (comp, options) => {\n comp = comp.trim()\n const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]\n return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n debug('xRange', comp, ret, gtlt, M, m, p, pr)\n const xM = isX(M)\n const xm = xM || isX(m)\n const xp = xm || isX(p)\n const anyX = xp\n\n if (gtlt === '=' && anyX) {\n gtlt = ''\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options.includePrerelease ? '-0' : ''\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0'\n } else {\n // nothing is forbidden\n ret = '*'\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0\n }\n p = 0\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n gtlt = '>='\n if (xm) {\n M = +M + 1\n m = 0\n p = 0\n } else {\n m = +m + 1\n p = 0\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<'\n if (xm) {\n M = +M + 1\n } else {\n m = +m + 1\n }\n }\n\n if (gtlt === '<') {\n pr = '-0'\n }\n\n ret = `${gtlt + M}.${m}.${p}${pr}`\n } else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`\n } else if (xp) {\n ret = `>=${M}.${m}.0${pr\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('xRange return', ret)\n\n return ret\n })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nconst replaceStars = (comp, options) => {\n debug('replaceStars', comp, options)\n // Looseness is ignored here. star is always as loose as it gets!\n return comp.trim().replace(re[t.STAR], '')\n}\n\nconst replaceGTE0 = (comp, options) => {\n debug('replaceGTE0', comp, options)\n return comp.trim()\n .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\nconst hyphenReplace = incPr => ($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr, tb) => {\n if (isX(fM)) {\n from = ''\n } else if (isX(fm)) {\n from = `>=${fM}.0.0${incPr ? '-0' : ''}`\n } else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`\n } else if (fpr) {\n from = `>=${from}`\n } else {\n from = `>=${from}${incPr ? '-0' : ''}`\n }\n\n if (isX(tM)) {\n to = ''\n } else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`\n } else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`\n } else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`\n } else if (incPr) {\n to = `<${tM}.${tm}.${+tp + 1}-0`\n } else {\n to = `<=${to}`\n }\n\n return (`${from} ${to}`).trim()\n}\n\nconst testSet = (set, version, options) => {\n for (let i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false\n }\n }\n\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (let i = 0; i < set.length; i++) {\n debug(set[i].semver)\n if (set[i].semver === Comparator.ANY) {\n continue\n }\n\n if (set[i].semver.prerelease.length > 0) {\n const allowed = set[i].semver\n if (allowed.major === version.major &&\n allowed.minor === version.minor &&\n allowed.patch === version.patch) {\n return true\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false\n }\n\n return true\n}\n", "const ANY = Symbol('SemVer ANY')\n// hoisted class for cyclic dependency\nclass Comparator {\n static get ANY () {\n return ANY\n }\n\n constructor (comp, options) {\n options = parseOptions(options)\n\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp\n } else {\n comp = comp.value\n }\n }\n\n debug('comparator', comp, options)\n this.options = options\n this.loose = !!options.loose\n this.parse(comp)\n\n if (this.semver === ANY) {\n this.value = ''\n } else {\n this.value = this.operator + this.semver.version\n }\n\n debug('comp', this)\n }\n\n parse (comp) {\n const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n const m = comp.match(r)\n\n if (!m) {\n throw new TypeError(`Invalid comparator: ${comp}`)\n }\n\n this.operator = m[1] !== undefined ? m[1] : ''\n if (this.operator === '=') {\n this.operator = ''\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY\n } else {\n this.semver = new SemVer(m[2], this.options.loose)\n }\n }\n\n toString () {\n return this.value\n }\n\n test (version) {\n debug('Comparator.test', version, this.options.loose)\n\n if (this.semver === ANY || version === ANY) {\n return true\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n return cmp(version, this.operator, this.semver, this.options)\n }\n\n intersects (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required')\n }\n\n if (this.operator === '') {\n if (this.value === '') {\n return true\n }\n return new Range(comp.value, options).test(this.value)\n } else if (comp.operator === '') {\n if (comp.value === '') {\n return true\n }\n return new Range(this.value, options).test(comp.semver)\n }\n\n options = parseOptions(options)\n\n // Special cases where nothing can possibly be lower\n if (options.includePrerelease &&\n (this.value === '<0.0.0-0' || comp.value === '<0.0.0-0')) {\n return false\n }\n if (!options.includePrerelease &&\n (this.value.startsWith('<0.0.0') || comp.value.startsWith('<0.0.0'))) {\n return false\n }\n\n // Same direction increasing (> or >=)\n if (this.operator.startsWith('>') && comp.operator.startsWith('>')) {\n return true\n }\n // Same direction decreasing (< or <=)\n if (this.operator.startsWith('<') && comp.operator.startsWith('<')) {\n return true\n }\n // same SemVer and both sides are inclusive (<= or >=)\n if (\n (this.semver.version === comp.semver.version) &&\n this.operator.includes('=') && comp.operator.includes('=')) {\n return true\n }\n // opposite directions less than\n if (cmp(this.semver, '<', comp.semver, options) &&\n this.operator.startsWith('>') && comp.operator.startsWith('<')) {\n return true\n }\n // opposite directions greater than\n if (cmp(this.semver, '>', comp.semver, options) &&\n this.operator.startsWith('<') && comp.operator.startsWith('>')) {\n return true\n }\n return false\n }\n}\n\nmodule.exports = Comparator\n\nconst parseOptions = require('../internal/parse-options')\nconst { re, t } = require('../internal/re')\nconst cmp = require('../functions/cmp')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst Range = require('./range')\n", "const Range = require('../classes/range')\nconst satisfies = (version, range, options) => {\n try {\n range = new Range(range, options)\n } catch (er) {\n return false\n }\n return range.test(version)\n}\nmodule.exports = satisfies\n", "const Range = require('../classes/range')\n\n// Mostly just for testing and legacy API reasons\nconst toComparators = (range, options) =>\n new Range(range, options).set\n .map(comp => comp.map(c => c.value).join(' ').trim().split(' '))\n\nmodule.exports = toComparators\n", "const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\n\nconst maxSatisfying = (versions, range, options) => {\n let max = null\n let maxSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!max || maxSV.compare(v) === -1) {\n // compare(max, v, true)\n max = v\n maxSV = new SemVer(max, options)\n }\n }\n })\n return max\n}\nmodule.exports = maxSatisfying\n", "const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst minSatisfying = (versions, range, options) => {\n let min = null\n let minSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!min || minSV.compare(v) === 1) {\n // compare(min, v, true)\n min = v\n minSV = new SemVer(min, options)\n }\n }\n })\n return min\n}\nmodule.exports = minSatisfying\n", "const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst gt = require('../functions/gt')\n\nconst minVersion = (range, loose) => {\n range = new Range(range, loose)\n\n let minver = new SemVer('0.0.0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = new SemVer('0.0.0-0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = null\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let setMin = null\n comparators.forEach((comparator) => {\n // Clone to avoid manipulating the comparator's semver object.\n const compver = new SemVer(comparator.semver.version)\n switch (comparator.operator) {\n case '>':\n if (compver.prerelease.length === 0) {\n compver.patch++\n } else {\n compver.prerelease.push(0)\n }\n compver.raw = compver.format()\n /* fallthrough */\n case '':\n case '>=':\n if (!setMin || gt(compver, setMin)) {\n setMin = compver\n }\n break\n case '<':\n case '<=':\n /* Ignore maximum versions */\n break\n /* istanbul ignore next */\n default:\n throw new Error(`Unexpected operation: ${comparator.operator}`)\n }\n })\n if (setMin && (!minver || gt(minver, setMin))) {\n minver = setMin\n }\n }\n\n if (minver && range.test(minver)) {\n return minver\n }\n\n return null\n}\nmodule.exports = minVersion\n", "const Range = require('../classes/range')\nconst validRange = (range, options) => {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, options).range || '*'\n } catch (er) {\n return null\n }\n}\nmodule.exports = validRange\n", "const SemVer = require('../classes/semver')\nconst Comparator = require('../classes/comparator')\nconst { ANY } = Comparator\nconst Range = require('../classes/range')\nconst satisfies = require('../functions/satisfies')\nconst gt = require('../functions/gt')\nconst lt = require('../functions/lt')\nconst lte = require('../functions/lte')\nconst gte = require('../functions/gte')\n\nconst outside = (version, range, hilo, options) => {\n version = new SemVer(version, options)\n range = new Range(range, options)\n\n let gtfn, ltefn, ltfn, comp, ecomp\n switch (hilo) {\n case '>':\n gtfn = gt\n ltefn = lte\n ltfn = lt\n comp = '>'\n ecomp = '>='\n break\n case '<':\n gtfn = lt\n ltefn = gte\n ltfn = gt\n comp = '<'\n ecomp = '<='\n break\n default:\n throw new TypeError('Must provide a hilo val of \"<\" or \">\"')\n }\n\n // If it satisfies the range it is not outside\n if (satisfies(version, range, options)) {\n return false\n }\n\n // From now on, variable terms are as if we're in \"gtr\" mode.\n // but note that everything is flipped for the \"ltr\" function.\n\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let high = null\n let low = null\n\n comparators.forEach((comparator) => {\n if (comparator.semver === ANY) {\n comparator = new Comparator('>=0.0.0')\n }\n high = high || comparator\n low = low || comparator\n if (gtfn(comparator.semver, high.semver, options)) {\n high = comparator\n } else if (ltfn(comparator.semver, low.semver, options)) {\n low = comparator\n }\n })\n\n // If the edge version comparator has a operator then our version\n // isn't outside it\n if (high.operator === comp || high.operator === ecomp) {\n return false\n }\n\n // If the lowest version comparator has an operator and our version\n // is less than it then it isn't higher than the range\n if ((!low.operator || low.operator === comp) &&\n ltefn(version, low.semver)) {\n return false\n } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n return false\n }\n }\n return true\n}\n\nmodule.exports = outside\n", "// Determine if version is greater than all the versions possible in the range.\nconst outside = require('./outside')\nconst gtr = (version, range, options) => outside(version, range, '>', options)\nmodule.exports = gtr\n", "const outside = require('./outside')\n// Determine if version is less than all the versions possible in the range\nconst ltr = (version, range, options) => outside(version, range, '<', options)\nmodule.exports = ltr\n", "const Range = require('../classes/range')\nconst intersects = (r1, r2, options) => {\n r1 = new Range(r1, options)\n r2 = new Range(r2, options)\n return r1.intersects(r2, options)\n}\nmodule.exports = intersects\n", "// given a set of versions and a range, create a \"simplified\" range\n// that includes the same versions that the original range does\n// If the original range is shorter than the simplified one, return that.\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\nmodule.exports = (versions, range, options) => {\n const set = []\n let first = null\n let prev = null\n const v = versions.sort((a, b) => compare(a, b, options))\n for (const version of v) {\n const included = satisfies(version, range, options)\n if (included) {\n prev = version\n if (!first) {\n first = version\n }\n } else {\n if (prev) {\n set.push([first, prev])\n }\n prev = null\n first = null\n }\n }\n if (first) {\n set.push([first, null])\n }\n\n const ranges = []\n for (const [min, max] of set) {\n if (min === max) {\n ranges.push(min)\n } else if (!max && min === v[0]) {\n ranges.push('*')\n } else if (!max) {\n ranges.push(`>=${min}`)\n } else if (min === v[0]) {\n ranges.push(`<=${max}`)\n } else {\n ranges.push(`${min} - ${max}`)\n }\n }\n const simplified = ranges.join(' || ')\n const original = typeof range.raw === 'string' ? range.raw : String(range)\n return simplified.length < original.length ? simplified : range\n}\n", "const Range = require('../classes/range.js')\nconst Comparator = require('../classes/comparator.js')\nconst { ANY } = Comparator\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\n\n// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff:\n// - Every simple range `r1, r2, ...` is a null set, OR\n// - Every simple range `r1, r2, ...` which is not a null set is a subset of\n// some `R1, R2, ...`\n//\n// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff:\n// - If c is only the ANY comparator\n// - If C is only the ANY comparator, return true\n// - Else if in prerelease mode, return false\n// - else replace c with `[>=0.0.0]`\n// - If C is only the ANY comparator\n// - if in prerelease mode, return true\n// - else replace C with `[>=0.0.0]`\n// - Let EQ be the set of = comparators in c\n// - If EQ is more than one, return true (null set)\n// - Let GT be the highest > or >= comparator in c\n// - Let LT be the lowest < or <= comparator in c\n// - If GT and LT, and GT.semver > LT.semver, return true (null set)\n// - If any C is a = range, and GT or LT are set, return false\n// - If EQ\n// - If GT, and EQ does not satisfy GT, return true (null set)\n// - If LT, and EQ does not satisfy LT, return true (null set)\n// - If EQ satisfies every C, return true\n// - Else return false\n// - If GT\n// - If GT.semver is lower than any > or >= comp in C, return false\n// - If GT is >=, and GT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the GT.semver tuple, return false\n// - If LT\n// - If LT.semver is greater than any < or <= comp in C, return false\n// - If LT is <=, and LT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the LT.semver tuple, return false\n// - Else return true\n\nconst subset = (sub, dom, options = {}) => {\n if (sub === dom) {\n return true\n }\n\n sub = new Range(sub, options)\n dom = new Range(dom, options)\n let sawNonNull = false\n\n OUTER: for (const simpleSub of sub.set) {\n for (const simpleDom of dom.set) {\n const isSub = simpleSubset(simpleSub, simpleDom, options)\n sawNonNull = sawNonNull || isSub !== null\n if (isSub) {\n continue OUTER\n }\n }\n // the null set is a subset of everything, but null simple ranges in\n // a complex range should be ignored. so if we saw a non-null range,\n // then we know this isn't a subset, but if EVERY simple range was null,\n // then it is a subset.\n if (sawNonNull) {\n return false\n }\n }\n return true\n}\n\nconst minimumVersionWithPreRelease = [new Comparator('>=0.0.0-0')]\nconst minimumVersion = [new Comparator('>=0.0.0')]\n\nconst simpleSubset = (sub, dom, options) => {\n if (sub === dom) {\n return true\n }\n\n if (sub.length === 1 && sub[0].semver === ANY) {\n if (dom.length === 1 && dom[0].semver === ANY) {\n return true\n } else if (options.includePrerelease) {\n sub = minimumVersionWithPreRelease\n } else {\n sub = minimumVersion\n }\n }\n\n if (dom.length === 1 && dom[0].semver === ANY) {\n if (options.includePrerelease) {\n return true\n } else {\n dom = minimumVersion\n }\n }\n\n const eqSet = new Set()\n let gt, lt\n for (const c of sub) {\n if (c.operator === '>' || c.operator === '>=') {\n gt = higherGT(gt, c, options)\n } else if (c.operator === '<' || c.operator === '<=') {\n lt = lowerLT(lt, c, options)\n } else {\n eqSet.add(c.semver)\n }\n }\n\n if (eqSet.size > 1) {\n return null\n }\n\n let gtltComp\n if (gt && lt) {\n gtltComp = compare(gt.semver, lt.semver, options)\n if (gtltComp > 0) {\n return null\n } else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) {\n return null\n }\n }\n\n // will iterate one or zero times\n for (const eq of eqSet) {\n if (gt && !satisfies(eq, String(gt), options)) {\n return null\n }\n\n if (lt && !satisfies(eq, String(lt), options)) {\n return null\n }\n\n for (const c of dom) {\n if (!satisfies(eq, String(c), options)) {\n return false\n }\n }\n\n return true\n }\n\n let higher, lower\n let hasDomLT, hasDomGT\n // if the subset has a prerelease, we need a comparator in the superset\n // with the same tuple and a prerelease, or it's not a subset\n let needDomLTPre = lt &&\n !options.includePrerelease &&\n lt.semver.prerelease.length ? lt.semver : false\n let needDomGTPre = gt &&\n !options.includePrerelease &&\n gt.semver.prerelease.length ? gt.semver : false\n // exception: <1.2.3-0 is the same as <1.2.3\n if (needDomLTPre && needDomLTPre.prerelease.length === 1 &&\n lt.operator === '<' && needDomLTPre.prerelease[0] === 0) {\n needDomLTPre = false\n }\n\n for (const c of dom) {\n hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>='\n hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<='\n if (gt) {\n if (needDomGTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomGTPre.major &&\n c.semver.minor === needDomGTPre.minor &&\n c.semver.patch === needDomGTPre.patch) {\n needDomGTPre = false\n }\n }\n if (c.operator === '>' || c.operator === '>=') {\n higher = higherGT(gt, c, options)\n if (higher === c && higher !== gt) {\n return false\n }\n } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options)) {\n return false\n }\n }\n if (lt) {\n if (needDomLTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomLTPre.major &&\n c.semver.minor === needDomLTPre.minor &&\n c.semver.patch === needDomLTPre.patch) {\n needDomLTPre = false\n }\n }\n if (c.operator === '<' || c.operator === '<=') {\n lower = lowerLT(lt, c, options)\n if (lower === c && lower !== lt) {\n return false\n }\n } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options)) {\n return false\n }\n }\n if (!c.operator && (lt || gt) && gtltComp !== 0) {\n return false\n }\n }\n\n // if there was a < or >, and nothing in the dom, then must be false\n // UNLESS it was limited by another range in the other direction.\n // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0\n if (gt && hasDomLT && !lt && gtltComp !== 0) {\n return false\n }\n\n if (lt && hasDomGT && !gt && gtltComp !== 0) {\n return false\n }\n\n // we needed a prerelease range in a specific tuple, but didn't get one\n // then this isn't a subset. eg >=1.2.3-pre is not a subset of >=1.0.0,\n // because it includes prereleases in the 1.2.3 tuple\n if (needDomGTPre || needDomLTPre) {\n return false\n }\n\n return true\n}\n\n// >=1.2.3 is lower than >1.2.3\nconst higherGT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp > 0 ? a\n : comp < 0 ? b\n : b.operator === '>' && a.operator === '>=' ? b\n : a\n}\n\n// <=1.2.3 is higher than <1.2.3\nconst lowerLT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp < 0 ? a\n : comp > 0 ? b\n : b.operator === '<' && a.operator === '<=' ? b\n : a\n}\n\nmodule.exports = subset\n", "// just pre-load all the stuff that index.js lazily exports\nconst internalRe = require('./internal/re')\nconst constants = require('./internal/constants')\nconst SemVer = require('./classes/semver')\nconst identifiers = require('./internal/identifiers')\nconst parse = require('./functions/parse')\nconst valid = require('./functions/valid')\nconst clean = require('./functions/clean')\nconst inc = require('./functions/inc')\nconst diff = require('./functions/diff')\nconst major = require('./functions/major')\nconst minor = require('./functions/minor')\nconst patch = require('./functions/patch')\nconst prerelease = require('./functions/prerelease')\nconst compare = require('./functions/compare')\nconst rcompare = require('./functions/rcompare')\nconst compareLoose = require('./functions/compare-loose')\nconst compareBuild = require('./functions/compare-build')\nconst sort = require('./functions/sort')\nconst rsort = require('./functions/rsort')\nconst gt = require('./functions/gt')\nconst lt = require('./functions/lt')\nconst eq = require('./functions/eq')\nconst neq = require('./functions/neq')\nconst gte = require('./functions/gte')\nconst lte = require('./functions/lte')\nconst cmp = require('./functions/cmp')\nconst coerce = require('./functions/coerce')\nconst Comparator = require('./classes/comparator')\nconst Range = require('./classes/range')\nconst satisfies = require('./functions/satisfies')\nconst toComparators = require('./ranges/to-comparators')\nconst maxSatisfying = require('./ranges/max-satisfying')\nconst minSatisfying = require('./ranges/min-satisfying')\nconst minVersion = require('./ranges/min-version')\nconst validRange = require('./ranges/valid')\nconst outside = require('./ranges/outside')\nconst gtr = require('./ranges/gtr')\nconst ltr = require('./ranges/ltr')\nconst intersects = require('./ranges/intersects')\nconst simplifyRange = require('./ranges/simplify')\nconst subset = require('./ranges/subset')\nmodule.exports = {\n parse,\n valid,\n clean,\n inc,\n diff,\n major,\n minor,\n patch,\n prerelease,\n compare,\n rcompare,\n compareLoose,\n compareBuild,\n sort,\n rsort,\n gt,\n lt,\n eq,\n neq,\n gte,\n lte,\n cmp,\n coerce,\n Comparator,\n Range,\n satisfies,\n toComparators,\n maxSatisfying,\n minSatisfying,\n minVersion,\n validRange,\n outside,\n gtr,\n ltr,\n intersects,\n simplifyRange,\n subset,\n SemVer,\n re: internalRe.re,\n src: internalRe.src,\n tokens: internalRe.t,\n SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION,\n RELEASE_TYPES: constants.RELEASE_TYPES,\n compareIdentifiers: identifiers.compareIdentifiers,\n rcompareIdentifiers: identifiers.rcompareIdentifiers,\n}\n", "'use strict'\n\n// turn tar(1) style args like `C` into the more verbose things like `cwd`\n\nconst argmap = new Map([\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\nmodule.exports = opt => opt ? Object.keys(opt).map(k => [\n argmap.has(k) ? argmap.get(k) : k, opt[k],\n]).reduce((set, kv) => (set[kv[0]] = kv[1], set), Object.create(null)) : {}\n", "'use strict'\nconst proc =\n typeof process === 'object' && process\n ? process\n : {\n stdout: null,\n stderr: null,\n }\nconst EE = require('events')\nconst Stream = require('stream')\nconst stringdecoder = require('string_decoder')\nconst SD = stringdecoder.StringDecoder\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')\n\nconst defer = fn => Promise.resolve().then(fn)\n\n// TODO remove when Node v8 support drops\nconst doIter = global._MP_NO_ITERATOR_SYMBOLS_ !== '1'\nconst ASYNCITERATOR =\n (doIter && Symbol.asyncIterator) || Symbol('asyncIterator not implemented')\nconst ITERATOR =\n (doIter && Symbol.iterator) || Symbol('iterator not implemented')\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.\nconst isEndish = ev => ev === 'end' || ev === 'finish' || ev === 'prefinish'\n\nconst isArrayBuffer = b =>\n b instanceof ArrayBuffer ||\n (typeof b === 'object' &&\n b.constructor &&\n b.constructor.name === 'ArrayBuffer' &&\n b.byteLength >= 0)\n\nconst isArrayBufferView = b => !Buffer.isBuffer(b) && ArrayBuffer.isView(b)\n\nclass Pipe {\n constructor(src, dest, opts) {\n this.src = src\n this.dest = dest\n this.opts = opts\n this.ondrain = () => src[RESUME]()\n dest.on('drain', this.ondrain)\n }\n unpipe() {\n this.dest.removeListener('drain', this.ondrain)\n }\n // istanbul ignore next - only here for the prototype\n proxyErrors() {}\n end() {\n this.unpipe()\n if (this.opts.end) this.dest.end()\n }\n}\n\nclass PipeProxyErrors extends Pipe {\n unpipe() {\n this.src.removeListener('error', this.proxyErrors)\n super.unpipe()\n }\n constructor(src, dest, opts) {\n super(src, dest, opts)\n this.proxyErrors = er => dest.emit('error', er)\n src.on('error', this.proxyErrors)\n }\n}\n\nclass Minipass extends Stream {\n constructor(options) {\n super()\n this[FLOWING] = false\n // whether we're explicitly paused\n this[PAUSED] = false\n this[PIPES] = []\n this[BUFFER] = []\n this[OBJECTMODE] = (options && options.objectMode) || false\n if (this[OBJECTMODE]) this[ENCODING] = null\n else this[ENCODING] = (options && options.encoding) || null\n if (this[ENCODING] === 'buffer') this[ENCODING] = null\n this[ASYNC] = (options && !!options.async) || false\n this[DECODER] = this[ENCODING] ? new SD(this[ENCODING]) : null\n this[EOF] = false\n this[EMITTED_END] = false\n this[EMITTING_END] = false\n this[CLOSED] = false\n this[EMITTED_ERROR] = null\n this.writable = true\n this.readable = true\n this[BUFFERLENGTH] = 0\n this[DESTROYED] = false\n if (options && options.debugExposeBuffer === true) {\n Object.defineProperty(this, 'buffer', { get: () => this[BUFFER] })\n }\n if (options && options.debugExposePipes === true) {\n Object.defineProperty(this, 'pipes', { get: () => this[PIPES] })\n }\n this[SIGNAL] = options && options.signal\n this[ABORTED] = false\n if (this[SIGNAL]) {\n this[SIGNAL].addEventListener('abort', () => this[ABORT]())\n if (this[SIGNAL].aborted) {\n this[ABORT]()\n }\n }\n }\n\n get bufferLength() {\n return this[BUFFERLENGTH]\n }\n\n get encoding() {\n return this[ENCODING]\n }\n set encoding(enc) {\n if (this[OBJECTMODE]) throw new Error('cannot set encoding in objectMode')\n\n if (\n this[ENCODING] &&\n enc !== this[ENCODING] &&\n ((this[DECODER] && this[DECODER].lastNeed) || this[BUFFERLENGTH])\n )\n throw new Error('cannot change encoding')\n\n if (this[ENCODING] !== enc) {\n this[DECODER] = enc ? new SD(enc) : null\n if (this[BUFFER].length)\n this[BUFFER] = this[BUFFER].map(chunk => this[DECODER].write(chunk))\n }\n\n this[ENCODING] = enc\n }\n\n setEncoding(enc) {\n this.encoding = enc\n }\n\n get objectMode() {\n return this[OBJECTMODE]\n }\n set objectMode(om) {\n this[OBJECTMODE] = this[OBJECTMODE] || !!om\n }\n\n get ['async']() {\n return this[ASYNC]\n }\n set ['async'](a) {\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 get aborted() {\n return this[ABORTED]\n }\n set aborted(_) {}\n\n write(chunk, encoding, cb) {\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') (cb = encoding), (encoding = 'utf8')\n\n if (!encoding) encoding = 'utf8'\n\n const fn = this[ASYNC] ? defer : f => f()\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 else switches us into object mode\n if (!this[OBJECTMODE] && !Buffer.isBuffer(chunk)) {\n if (isArrayBufferView(chunk))\n chunk = Buffer.from(chunk.buffer, chunk.byteOffset, chunk.byteLength)\n else if (isArrayBuffer(chunk)) chunk = Buffer.from(chunk)\n else if (typeof chunk !== 'string')\n // use the setter so we throw if we have encoding set\n this.objectMode = true\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 /* istanbul ignore if - maybe impossible? */\n if (this.flowing && this[BUFFERLENGTH] !== 0) this[FLUSH](true)\n\n if (this.flowing) this.emit('data', chunk)\n else this[BUFFERPUSH](chunk)\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.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 chunk = Buffer.from(chunk, encoding)\n }\n\n if (Buffer.isBuffer(chunk) && this[ENCODING])\n chunk = this[DECODER].write(chunk)\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)\n else this[BUFFERPUSH](chunk)\n\n if (this[BUFFERLENGTH] !== 0) this.emit('readable')\n\n if (cb) fn(cb)\n\n return this.flowing\n }\n\n read(n) {\n if (this[DESTROYED]) return null\n\n if (this[BUFFERLENGTH] === 0 || n === 0 || n > this[BUFFERLENGTH]) {\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 if (this.encoding) this[BUFFER] = [this[BUFFER].join('')]\n else this[BUFFER] = [Buffer.concat(this[BUFFER], this[BUFFERLENGTH])]\n }\n\n const ret = this[READ](n || null, this[BUFFER][0])\n this[MAYBE_EMIT_END]()\n return ret\n }\n\n [READ](n, chunk) {\n if (n === chunk.length || n === null) this[BUFFERSHIFT]()\n else {\n this[BUFFER][0] = chunk.slice(n)\n chunk = chunk.slice(0, n)\n this[BUFFERLENGTH] -= 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 end(chunk, encoding, cb) {\n if (typeof chunk === 'function') (cb = chunk), (chunk = null)\n if (typeof encoding === 'function') (cb = encoding), (encoding = 'utf8')\n if (chunk) 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 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 resume() {\n return this[RESUME]()\n }\n\n pause() {\n this[FLOWING] = false\n this[PAUSED] = true\n }\n\n get destroyed() {\n return this[DESTROYED]\n }\n\n get flowing() {\n return this[FLOWING]\n }\n\n get paused() {\n return this[PAUSED]\n }\n\n [BUFFERPUSH](chunk) {\n if (this[OBJECTMODE]) this[BUFFERLENGTH] += 1\n else this[BUFFERLENGTH] += chunk.length\n this[BUFFER].push(chunk)\n }\n\n [BUFFERSHIFT]() {\n if (this[OBJECTMODE]) this[BUFFERLENGTH] -= 1\n else this[BUFFERLENGTH] -= this[BUFFER][0].length\n return this[BUFFER].shift()\n }\n\n [FLUSH](noDrain) {\n do {} while (this[FLUSHCHUNK](this[BUFFERSHIFT]()) && this[BUFFER].length)\n\n if (!noDrain && !this[BUFFER].length && !this[EOF]) this.emit('drain')\n }\n\n [FLUSHCHUNK](chunk) {\n this.emit('data', chunk)\n return this.flowing\n }\n\n pipe(dest, opts) {\n if (this[DESTROYED]) return\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 this[PIPES].push(\n !opts.proxyErrors\n ? new Pipe(this, dest, opts)\n : new PipeProxyErrors(this, dest, opts)\n )\n if (this[ASYNC]) defer(() => this[RESUME]())\n else this[RESUME]()\n }\n\n return dest\n }\n\n unpipe(dest) {\n const p = this[PIPES].find(p => p.dest === dest)\n if (p) {\n this[PIPES].splice(this[PIPES].indexOf(p), 1)\n p.unpipe()\n }\n }\n\n addListener(ev, fn) {\n return this.on(ev, fn)\n }\n\n on(ev, fn) {\n const ret = super.on(ev, fn)\n if (ev === 'data' && !this[PIPES].length && !this.flowing) this[RESUME]()\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 if (this[ASYNC]) defer(() => fn.call(this, this[EMITTED_ERROR]))\n else fn.call(this, this[EMITTED_ERROR])\n }\n return ret\n }\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 emit(ev, data, ...extra) {\n // error and close are only events allowed after calling destroy()\n if (ev !== 'error' && ev !== 'close' && ev !== DESTROYED && this[DESTROYED])\n return\n else if (ev === 'data') {\n return !this[OBJECTMODE] && !data\n ? false\n : this[ASYNC]\n ? defer(() => this[EMITDATA](data))\n : this[EMITDATA](data)\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\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, data, ...extra)\n this[MAYBE_EMIT_END]()\n return ret\n }\n\n [EMITDATA](data) {\n for (const p of this[PIPES]) {\n if (p.dest.write(data) === false) this.pause()\n }\n const ret = super.emit('data', data)\n this[MAYBE_EMIT_END]()\n return ret\n }\n\n [EMITEND]() {\n if (this[EMITTED_END]) return\n\n this[EMITTED_END] = true\n this.readable = false\n if (this[ASYNC]) defer(() => this[EMITEND2]())\n else 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)\n }\n 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 // const all = await stream.collect()\n collect() {\n const buf = []\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]) buf.dataLength += c.length\n })\n return p.then(() => buf)\n }\n\n // const data = await stream.concat()\n concat() {\n return this[OBJECTMODE]\n ? Promise.reject(new Error('cannot concat in objectMode'))\n : this.collect().then(buf =>\n this[OBJECTMODE]\n ? Promise.reject(new Error('cannot concat in objectMode'))\n : this[ENCODING]\n ? buf.join('')\n : Buffer.concat(buf, buf.dataLength)\n )\n }\n\n // stream.promise().then(() => done, er => emitted error)\n 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 // for await (let chunk of stream)\n [ASYNCITERATOR]() {\n let stopped = false\n const stop = () => {\n this.pause()\n stopped = true\n return Promise.resolve({ done: true })\n }\n const next = () => {\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 = null\n let reject = null\n const onerr = er => {\n this.removeListener('data', ondata)\n this.removeListener('end', onend)\n this.removeListener(DESTROYED, ondestroy)\n stop()\n reject(er)\n }\n const ondata = value => {\n this.removeListener('error', onerr)\n this.removeListener('end', onend)\n this.removeListener(DESTROYED, ondestroy)\n this.pause()\n resolve({ value: value, done: !!this[EOF] })\n }\n const onend = () => {\n this.removeListener('error', onerr)\n this.removeListener('data', ondata)\n this.removeListener(DESTROYED, ondestroy)\n stop()\n resolve({ done: true })\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 [ASYNCITERATOR]() {\n return this\n },\n }\n }\n\n // for (let chunk of stream)\n [ITERATOR]() {\n let stopped = false\n const stop = () => {\n this.pause()\n this.removeListener(ERROR, stop)\n this.removeListener(DESTROYED, stop)\n this.removeListener('end', stop)\n stopped = true\n return { done: true }\n }\n\n const next = () => {\n if (stopped) return stop()\n const value = this.read()\n return value === null ? stop() : { value }\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 [ITERATOR]() {\n return this\n },\n }\n }\n\n destroy(er) {\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\n // throw away all buffered data, it's never coming out\n this[BUFFER].length = 0\n this[BUFFERLENGTH] = 0\n\n if (typeof this.close === 'function' && !this[CLOSED]) this.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 static isStream(s) {\n return (\n !!s &&\n (s instanceof Minipass ||\n s instanceof Stream ||\n (s instanceof EE &&\n // readable\n (typeof s.pipe === 'function' ||\n // writable\n (typeof s.write === 'function' && typeof s.end === 'function'))))\n )\n }\n}\n\nmodule.exports = Minipass\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.\nconst realZlibConstants = require('zlib').constants ||\n /* istanbul ignore next */ { ZLIB_VERNUM: 4736 }\n\nmodule.exports = Object.freeze(Object.assign(Object.create(null), {\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}, realZlibConstants))\n", "'use strict'\nconst proc = typeof process === 'object' && process ? process : {\n stdout: null,\n stderr: null,\n}\nconst EE = require('events')\nconst Stream = require('stream')\nconst SD = require('string_decoder').StringDecoder\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 BUFFERLENGTH = Symbol('bufferLength')\nconst BUFFERPUSH = Symbol('bufferPush')\nconst BUFFERSHIFT = Symbol('bufferShift')\nconst OBJECTMODE = Symbol('objectMode')\nconst DESTROYED = Symbol('destroyed')\nconst EMITDATA = Symbol('emitData')\nconst EMITEND = Symbol('emitEnd')\nconst EMITEND2 = Symbol('emitEnd2')\nconst ASYNC = Symbol('async')\n\nconst defer = fn => Promise.resolve().then(fn)\n\n// TODO remove when Node v8 support drops\nconst doIter = global._MP_NO_ITERATOR_SYMBOLS_ !== '1'\nconst ASYNCITERATOR = doIter && Symbol.asyncIterator\n || Symbol('asyncIterator not implemented')\nconst ITERATOR = doIter && Symbol.iterator\n || Symbol('iterator not implemented')\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.\nconst isEndish = ev =>\n ev === 'end' ||\n ev === 'finish' ||\n ev === 'prefinish'\n\nconst isArrayBuffer = b => b instanceof ArrayBuffer ||\n typeof b === 'object' &&\n b.constructor &&\n b.constructor.name === 'ArrayBuffer' &&\n b.byteLength >= 0\n\nconst isArrayBufferView = b => !Buffer.isBuffer(b) && ArrayBuffer.isView(b)\n\nclass Pipe {\n constructor (src, dest, opts) {\n this.src = src\n this.dest = dest\n this.opts = opts\n this.ondrain = () => src[RESUME]()\n dest.on('drain', this.ondrain)\n }\n unpipe () {\n this.dest.removeListener('drain', this.ondrain)\n }\n // istanbul ignore next - only here for the prototype\n proxyErrors () {}\n end () {\n this.unpipe()\n if (this.opts.end)\n this.dest.end()\n }\n}\n\nclass PipeProxyErrors extends Pipe {\n unpipe () {\n this.src.removeListener('error', this.proxyErrors)\n super.unpipe()\n }\n constructor (src, dest, opts) {\n super(src, dest, opts)\n this.proxyErrors = er => dest.emit('error', er)\n src.on('error', this.proxyErrors)\n }\n}\n\nmodule.exports = class Minipass extends Stream {\n constructor (options) {\n super()\n this[FLOWING] = false\n // whether we're explicitly paused\n this[PAUSED] = false\n this.pipes = []\n this.buffer = []\n this[OBJECTMODE] = options && options.objectMode || false\n if (this[OBJECTMODE])\n this[ENCODING] = null\n else\n this[ENCODING] = options && options.encoding || null\n if (this[ENCODING] === 'buffer')\n this[ENCODING] = null\n this[ASYNC] = options && !!options.async || false\n this[DECODER] = this[ENCODING] ? new SD(this[ENCODING]) : null\n this[EOF] = false\n this[EMITTED_END] = false\n this[EMITTING_END] = false\n this[CLOSED] = false\n this[EMITTED_ERROR] = null\n this.writable = true\n this.readable = true\n this[BUFFERLENGTH] = 0\n this[DESTROYED] = false\n }\n\n get bufferLength () { return this[BUFFERLENGTH] }\n\n get encoding () { return this[ENCODING] }\n set encoding (enc) {\n if (this[OBJECTMODE])\n throw new Error('cannot set encoding in objectMode')\n\n if (this[ENCODING] && enc !== this[ENCODING] &&\n (this[DECODER] && this[DECODER].lastNeed || this[BUFFERLENGTH]))\n throw new Error('cannot change encoding')\n\n if (this[ENCODING] !== enc) {\n this[DECODER] = enc ? new SD(enc) : null\n if (this.buffer.length)\n this.buffer = this.buffer.map(chunk => this[DECODER].write(chunk))\n }\n\n this[ENCODING] = enc\n }\n\n setEncoding (enc) {\n this.encoding = enc\n }\n\n get objectMode () { return this[OBJECTMODE] }\n set objectMode (om) { this[OBJECTMODE] = this[OBJECTMODE] || !!om }\n\n get ['async'] () { return this[ASYNC] }\n set ['async'] (a) { this[ASYNC] = this[ASYNC] || !!a }\n\n write (chunk, encoding, cb) {\n if (this[EOF])\n throw new Error('write after end')\n\n if (this[DESTROYED]) {\n this.emit('error', Object.assign(\n new Error('Cannot call write after a stream was destroyed'),\n { code: 'ERR_STREAM_DESTROYED' }\n ))\n return true\n }\n\n if (typeof encoding === 'function')\n cb = encoding, encoding = 'utf8'\n\n if (!encoding)\n encoding = 'utf8'\n\n const fn = this[ASYNC] ? defer : f => f()\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 else switches us into object mode\n if (!this[OBJECTMODE] && !Buffer.isBuffer(chunk)) {\n if (isArrayBufferView(chunk))\n chunk = Buffer.from(chunk.buffer, chunk.byteOffset, chunk.byteLength)\n else if (isArrayBuffer(chunk))\n chunk = Buffer.from(chunk)\n else if (typeof chunk !== 'string')\n // use the setter so we throw if we have encoding set\n this.objectMode = true\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 /* istanbul ignore if - maybe impossible? */\n if (this.flowing && this[BUFFERLENGTH] !== 0)\n this[FLUSH](true)\n\n if (this.flowing)\n this.emit('data', chunk)\n else\n this[BUFFERPUSH](chunk)\n\n if (this[BUFFERLENGTH] !== 0)\n this.emit('readable')\n\n if (cb)\n 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.length) {\n if (this[BUFFERLENGTH] !== 0)\n this.emit('readable')\n if (cb)\n 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 (typeof chunk === 'string' &&\n // unless it is a string already ready for us to use\n !(encoding === this[ENCODING] && !this[DECODER].lastNeed)) {\n chunk = Buffer.from(chunk, encoding)\n }\n\n if (Buffer.isBuffer(chunk) && this[ENCODING])\n chunk = this[DECODER].write(chunk)\n\n // Note: flushing CAN potentially switch us into not-flowing mode\n if (this.flowing && this[BUFFERLENGTH] !== 0)\n this[FLUSH](true)\n\n if (this.flowing)\n this.emit('data', chunk)\n else\n this[BUFFERPUSH](chunk)\n\n if (this[BUFFERLENGTH] !== 0)\n this.emit('readable')\n\n if (cb)\n fn(cb)\n\n return this.flowing\n }\n\n read (n) {\n if (this[DESTROYED])\n return null\n\n if (this[BUFFERLENGTH] === 0 || n === 0 || n > this[BUFFERLENGTH]) {\n this[MAYBE_EMIT_END]()\n return null\n }\n\n if (this[OBJECTMODE])\n n = null\n\n if (this.buffer.length > 1 && !this[OBJECTMODE]) {\n if (this.encoding)\n this.buffer = [this.buffer.join('')]\n else\n this.buffer = [Buffer.concat(this.buffer, this[BUFFERLENGTH])]\n }\n\n const ret = this[READ](n || null, this.buffer[0])\n this[MAYBE_EMIT_END]()\n return ret\n }\n\n [READ] (n, chunk) {\n if (n === chunk.length || n === null)\n this[BUFFERSHIFT]()\n else {\n this.buffer[0] = chunk.slice(n)\n chunk = chunk.slice(0, n)\n this[BUFFERLENGTH] -= n\n }\n\n this.emit('data', chunk)\n\n if (!this.buffer.length && !this[EOF])\n this.emit('drain')\n\n return chunk\n }\n\n end (chunk, encoding, cb) {\n if (typeof chunk === 'function')\n cb = chunk, chunk = null\n if (typeof encoding === 'function')\n cb = encoding, encoding = 'utf8'\n if (chunk)\n this.write(chunk, encoding)\n if (cb)\n 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])\n this[MAYBE_EMIT_END]()\n return this\n }\n\n // don't let the internal resume be overwritten\n [RESUME] () {\n if (this[DESTROYED])\n return\n\n this[PAUSED] = false\n this[FLOWING] = true\n this.emit('resume')\n if (this.buffer.length)\n this[FLUSH]()\n else if (this[EOF])\n this[MAYBE_EMIT_END]()\n else\n this.emit('drain')\n }\n\n resume () {\n return this[RESUME]()\n }\n\n pause () {\n this[FLOWING] = false\n this[PAUSED] = true\n }\n\n get destroyed () {\n return this[DESTROYED]\n }\n\n get flowing () {\n return this[FLOWING]\n }\n\n get paused () {\n return this[PAUSED]\n }\n\n [BUFFERPUSH] (chunk) {\n if (this[OBJECTMODE])\n this[BUFFERLENGTH] += 1\n else\n this[BUFFERLENGTH] += chunk.length\n this.buffer.push(chunk)\n }\n\n [BUFFERSHIFT] () {\n if (this.buffer.length) {\n if (this[OBJECTMODE])\n this[BUFFERLENGTH] -= 1\n else\n this[BUFFERLENGTH] -= this.buffer[0].length\n }\n return this.buffer.shift()\n }\n\n [FLUSH] (noDrain) {\n do {} while (this[FLUSHCHUNK](this[BUFFERSHIFT]()))\n\n if (!noDrain && !this.buffer.length && !this[EOF])\n this.emit('drain')\n }\n\n [FLUSHCHUNK] (chunk) {\n return chunk ? (this.emit('data', chunk), this.flowing) : false\n }\n\n pipe (dest, opts) {\n if (this[DESTROYED])\n return\n\n const ended = this[EMITTED_END]\n opts = opts || {}\n if (dest === proc.stdout || dest === proc.stderr)\n opts.end = false\n else\n 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)\n dest.end()\n } else {\n this.pipes.push(!opts.proxyErrors ? new Pipe(this, dest, opts)\n : new PipeProxyErrors(this, dest, opts))\n if (this[ASYNC])\n defer(() => this[RESUME]())\n else\n this[RESUME]()\n }\n\n return dest\n }\n\n unpipe (dest) {\n const p = this.pipes.find(p => p.dest === dest)\n if (p) {\n this.pipes.splice(this.pipes.indexOf(p), 1)\n p.unpipe()\n }\n }\n\n addListener (ev, fn) {\n return this.on(ev, fn)\n }\n\n on (ev, fn) {\n const ret = super.on(ev, fn)\n if (ev === 'data' && !this.pipes.length && !this.flowing)\n this[RESUME]()\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 if (this[ASYNC])\n defer(() => fn.call(this, this[EMITTED_ERROR]))\n else\n fn.call(this, this[EMITTED_ERROR])\n }\n return ret\n }\n\n get emittedEnd () {\n return this[EMITTED_END]\n }\n\n [MAYBE_EMIT_END] () {\n if (!this[EMITTING_END] &&\n !this[EMITTED_END] &&\n !this[DESTROYED] &&\n this.buffer.length === 0 &&\n this[EOF]) {\n this[EMITTING_END] = true\n this.emit('end')\n this.emit('prefinish')\n this.emit('finish')\n if (this[CLOSED])\n this.emit('close')\n this[EMITTING_END] = false\n }\n }\n\n emit (ev, data, ...extra) {\n // error and close are only events allowed after calling destroy()\n if (ev !== 'error' && ev !== 'close' && ev !== DESTROYED && this[DESTROYED])\n return\n else if (ev === 'data') {\n return !data ? false\n : this[ASYNC] ? defer(() => this[EMITDATA](data))\n : this[EMITDATA](data)\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])\n return\n const ret = super.emit('close')\n this.removeAllListeners('close')\n return ret\n } else if (ev === 'error') {\n this[EMITTED_ERROR] = data\n const ret = super.emit('error', data)\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, data, ...extra)\n this[MAYBE_EMIT_END]()\n return ret\n }\n\n [EMITDATA] (data) {\n for (const p of this.pipes) {\n if (p.dest.write(data) === false)\n this.pause()\n }\n const ret = super.emit('data', data)\n this[MAYBE_EMIT_END]()\n return ret\n }\n\n [EMITEND] () {\n if (this[EMITTED_END])\n return\n\n this[EMITTED_END] = true\n this.readable = false\n if (this[ASYNC])\n defer(() => this[EMITEND2]())\n else\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)\n }\n 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 // const all = await stream.collect()\n collect () {\n const buf = []\n if (!this[OBJECTMODE])\n 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.length\n })\n return p.then(() => buf)\n }\n\n // const data = await stream.concat()\n concat () {\n return this[OBJECTMODE]\n ? Promise.reject(new Error('cannot concat in objectMode'))\n : this.collect().then(buf =>\n this[OBJECTMODE]\n ? Promise.reject(new Error('cannot concat in objectMode'))\n : this[ENCODING] ? buf.join('') : Buffer.concat(buf, buf.dataLength))\n }\n\n // stream.promise().then(() => done, er => emitted error)\n 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 // for await (let chunk of stream)\n [ASYNCITERATOR] () {\n const next = () => {\n const res = this.read()\n if (res !== null)\n return Promise.resolve({ done: false, value: res })\n\n if (this[EOF])\n return Promise.resolve({ done: true })\n\n let resolve = null\n let reject = null\n const onerr = er => {\n this.removeListener('data', ondata)\n this.removeListener('end', onend)\n reject(er)\n }\n const ondata = value => {\n this.removeListener('error', onerr)\n this.removeListener('end', onend)\n this.pause()\n resolve({ value: value, done: !!this[EOF] })\n }\n const onend = () => {\n this.removeListener('error', onerr)\n this.removeListener('data', ondata)\n resolve({ done: true })\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 { next }\n }\n\n // for (let chunk of stream)\n [ITERATOR] () {\n const next = () => {\n const value = this.read()\n const done = value === null\n return { value, done }\n }\n return { next }\n }\n\n destroy (er) {\n if (this[DESTROYED]) {\n if (er)\n this.emit('error', er)\n else\n this.emit(DESTROYED)\n return this\n }\n\n this[DESTROYED] = true\n\n // throw away all buffered data, it's never coming out\n this.buffer.length = 0\n this[BUFFERLENGTH] = 0\n\n if (typeof this.close === 'function' && !this[CLOSED])\n this.close()\n\n if (er)\n this.emit('error', er)\n else // if no error to emit, still reject pending promises\n this.emit(DESTROYED)\n\n return this\n }\n\n static isStream (s) {\n return !!s && (s instanceof Minipass || s instanceof Stream ||\n s instanceof EE && (\n typeof s.pipe === 'function' || // readable\n (typeof s.write === 'function' && typeof s.end === 'function') // writable\n ))\n }\n}\n", "'use strict'\n\nconst assert = require('assert')\nconst Buffer = require('buffer').Buffer\nconst realZlib = require('zlib')\n\nconst constants = exports.constants = require('./constants.js')\nconst Minipass = require('minipass')\n\nconst OriginalBufferConcat = Buffer.concat\n\nconst _superWrite = Symbol('_superWrite')\nclass ZlibError extends Error {\n constructor (err) {\n super('zlib: ' + err.message)\n this.code = err.code\n this.errno = err.errno\n /* istanbul ignore if */\n if (!this.code)\n 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 _opts = Symbol('opts')\nconst _flushFlag = Symbol('flushFlag')\nconst _finishFlushFlag = Symbol('finishFlushFlag')\nconst _fullFlushFlag = Symbol('fullFlushFlag')\nconst _handle = Symbol('handle')\nconst _onError = Symbol('onError')\nconst _sawError = Symbol('sawError')\nconst _level = Symbol('level')\nconst _strategy = Symbol('strategy')\nconst _ended = Symbol('ended')\nconst _defaultFullFlush = Symbol('_defaultFullFlush')\n\nclass ZlibBase extends Minipass {\n constructor (opts, mode) {\n if (!opts || typeof opts !== 'object')\n throw new TypeError('invalid options for ZlibBase constructor')\n\n super(opts)\n this[_sawError] = false\n this[_ended] = false\n this[_opts] = opts\n\n this[_flushFlag] = opts.flush\n this[_finishFlushFlag] = opts.finishFlush\n // this will throw if any options are invalid for the class selected\n try {\n this[_handle] = new realZlib[mode](opts)\n } catch (er) {\n // make sure that all errors get decorated properly\n throw new ZlibError(er)\n }\n\n this[_onError] = (err) => {\n // no sense raising multiple errors, since we abort on the first one.\n if (this[_sawError])\n 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] = null\n this.emit('close')\n }\n }\n\n reset () {\n if (!this[_sawError]) {\n assert(this[_handle], 'zlib binding closed')\n return this[_handle].reset()\n }\n }\n\n flush (flushFlag) {\n if (this.ended)\n return\n\n if (typeof flushFlag !== 'number')\n flushFlag = this[_fullFlushFlag]\n this.write(Object.assign(Buffer.alloc(0), { [_flushFlag]: flushFlag }))\n }\n\n end (chunk, encoding, cb) {\n if (chunk)\n this.write(chunk, encoding)\n this.flush(this[_finishFlushFlag])\n this[_ended] = true\n return super.end(null, null, cb)\n }\n\n get ended () {\n return this[_ended]\n }\n\n write (chunk, encoding, cb) {\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, encoding)\n\n if (this[_sawError])\n 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 const nativeHandle = this[_handle]._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\n let result\n try {\n const flushFlag = typeof chunk[_flushFlag] === 'number'\n ? chunk[_flushFlag] : this[_flushFlag]\n result = this[_handle]._processChunk(chunk, 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))\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]._handle = 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 // 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(result[0]))\n for (let i = 1; i < result.length; i++) {\n writeReturn = this[_superWrite](result[i])\n }\n } else {\n writeReturn = this[_superWrite](Buffer.from(result))\n }\n }\n\n if (cb)\n cb()\n return writeReturn\n }\n\n [_superWrite] (data) {\n return super.write(data)\n }\n}\n\nclass Zlib extends ZlibBase {\n constructor (opts, mode) {\n opts = opts || {}\n\n opts.flush = opts.flush || constants.Z_NO_FLUSH\n opts.finishFlush = opts.finishFlush || constants.Z_FINISH\n super(opts, mode)\n\n this[_fullFlushFlag] = constants.Z_FULL_FLUSH\n this[_level] = opts.level\n this[_strategy] = opts.strategy\n }\n\n params (level, strategy) {\n if (this[_sawError])\n 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 /* istanbul ignore if */\n if (!this[_handle].params)\n throw new Error('not supported in this implementation')\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 = (flushFlag, cb) => {\n this.flush(flushFlag)\n cb()\n }\n try {\n this[_handle].params(level, strategy)\n } finally {\n this[_handle].flush = origFlush\n }\n /* istanbul ignore else */\n if (this[_handle]) {\n this[_level] = level\n this[_strategy] = strategy\n }\n }\n }\n}\n\n// minimal 2-byte header\nclass Deflate extends Zlib {\n constructor (opts) {\n super(opts, 'Deflate')\n }\n}\n\nclass Inflate extends Zlib {\n constructor (opts) {\n super(opts, 'Inflate')\n }\n}\n\n// gzip - bigger header, same deflate compression\nconst _portable = Symbol('_portable')\nclass Gzip extends Zlib {\n constructor (opts) {\n super(opts, 'Gzip')\n this[_portable] = opts && !!opts.portable\n }\n\n [_superWrite] (data) {\n if (!this[_portable])\n 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\nclass Gunzip extends Zlib {\n constructor (opts) {\n super(opts, 'Gunzip')\n }\n}\n\n// raw - no header\nclass DeflateRaw extends Zlib {\n constructor (opts) {\n super(opts, 'DeflateRaw')\n }\n}\n\nclass InflateRaw extends Zlib {\n constructor (opts) {\n super(opts, 'InflateRaw')\n }\n}\n\n// auto-detect header.\nclass Unzip extends Zlib {\n constructor (opts) {\n super(opts, 'Unzip')\n }\n}\n\nclass Brotli extends ZlibBase {\n constructor (opts, mode) {\n opts = opts || {}\n\n opts.flush = opts.flush || constants.BROTLI_OPERATION_PROCESS\n opts.finishFlush = opts.finishFlush || constants.BROTLI_OPERATION_FINISH\n\n super(opts, mode)\n\n this[_fullFlushFlag] = constants.BROTLI_OPERATION_FLUSH\n }\n}\n\nclass BrotliCompress extends Brotli {\n constructor (opts) {\n super(opts, 'BrotliCompress')\n }\n}\n\nclass BrotliDecompress extends Brotli {\n constructor (opts) {\n super(opts, 'BrotliDecompress')\n }\n}\n\nexports.Deflate = Deflate\nexports.Inflate = Inflate\nexports.Gzip = Gzip\nexports.Gunzip = Gunzip\nexports.DeflateRaw = DeflateRaw\nexports.InflateRaw = InflateRaw\nexports.Unzip = Unzip\n/* istanbul ignore else */\nif (typeof realZlib.BrotliCompress === 'function') {\n exports.BrotliCompress = BrotliCompress\n exports.BrotliDecompress = BrotliDecompress\n} else {\n exports.BrotliCompress = exports.BrotliDecompress = class {\n constructor () {\n throw new Error('Brotli is not supported in this version of Node.js')\n }\n }\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 = process.env.TESTING_TAR_FAKE_PLATFORM || process.platform\nmodule.exports = platform !== 'win32' ? p => p\n : p => p && p.replace(/\\\\/g, '/')\n", "'use strict'\nconst MiniPass = require('minipass')\nconst normPath = require('./normalize-windows-path.js')\n\nconst SLURP = Symbol('slurp')\nmodule.exports = class ReadEntry extends MiniPass {\n constructor (header, ex, gex) {\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 this.startBlockSize = 512 * Math.ceil(header.size / 512)\n this.blockRemain = this.startBlockSize\n this.remain = header.size\n this.type = header.type\n this.meta = false\n this.ignore = false\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 this.path = normPath(header.path)\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 = header.size\n this.mtime = header.mtime\n this.atime = header.atime\n this.ctime = header.ctime\n this.linkpath = normPath(header.linkpath)\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) {\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.slice(0, r))\n }\n\n [SLURP] (ex, global) {\n for (const k in ex) {\n // we slurp in everything except for the path attribute in\n // a global extended header, because that's weird.\n if (ex[k] !== null && ex[k] !== undefined &&\n !(global && k === 'path')) {\n this[k] = k === 'path' || k === 'linkpath' ? normPath(ex[k]) : ex[k]\n }\n }\n }\n}\n", "'use strict'\n// map types from key to human-friendly name\nexports.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\nexports.code = new Map(Array.from(exports.name).map(kv => [kv[1], kv[0]]))\n", "'use strict'\n// Tar can encode large and negative numbers using a leading byte of\n// 0xff for negative, and 0x80 for positive.\n\nconst encode = (num, buf) => {\n if (!Number.isSafeInteger(num)) {\n // The number is so large that javascript cannot represent it with integer\n // precision.\n throw Error('cannot encode number outside of javascript safe integer range')\n } else if (num < 0) {\n encodeNegative(num, buf)\n } else {\n encodePositive(num, buf)\n }\n return buf\n}\n\nconst encodePositive = (num, buf) => {\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, buf) => {\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\nconst parse = (buf) => {\n const pre = buf[0]\n const value = pre === 0x80 ? pos(buf.slice(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('parsed number outside of javascript safe integer range')\n }\n\n return value\n}\n\nconst twos = (buf) => {\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 = 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) => {\n var len = buf.length\n var sum = 0\n for (var i = len - 1; i > -1; i--) {\n var byte = 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 => (0xff ^ byte) & 0xff\n\nconst twosComp = byte => ((0xff ^ byte) + 1) & 0xff\n\nmodule.exports = {\n encode,\n parse,\n}\n", "'use strict'\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\nconst types = require('./types.js')\nconst pathModule = require('path').posix\nconst large = require('./large-numbers.js')\n\nconst SLURP = Symbol('slurp')\nconst TYPE = Symbol('type')\n\nclass Header {\n constructor (data, off, ex, gex) {\n this.cksumValid = false\n this.needPax = false\n this.nullBlock = false\n\n this.block = null\n this.path = null\n this.mode = null\n this.uid = null\n this.gid = null\n this.size = null\n this.mtime = null\n this.cksum = null\n this[TYPE] = '0'\n this.linkpath = null\n this.uname = null\n this.gname = null\n this.devmaj = 0\n this.devmin = 0\n this.atime = null\n this.ctime = null\n\n if (Buffer.isBuffer(data)) {\n this.decode(data, off || 0, ex, gex)\n } else if (data) {\n this.set(data)\n }\n }\n\n decode (buf, off, ex, gex) {\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 this[SLURP](ex)\n this[SLURP](gex, true)\n\n // old tar versions marked dirs as a file with a trailing /\n this[TYPE] = decString(buf, off + 156, 1)\n if (this[TYPE] === '') {\n this[TYPE] = '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 (buf.slice(off + 257, off + 265).toString() === 'ustar\\u000000') {\n this.uname = decString(buf, off + 265, 32)\n this.gname = decString(buf, off + 297, 32)\n this.devmaj = decNumber(buf, off + 329, 8)\n this.devmin = decNumber(buf, off + 337, 8)\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]\n }\n\n for (let i = off + 156; i < off + 512; i++) {\n sum += buf[i]\n }\n\n this.cksumValid = sum === this.cksum\n if (this.cksum === null && sum === 8 * 0x20) {\n this.nullBlock = true\n }\n }\n\n [SLURP] (ex, global) {\n for (const k in ex) {\n // we slurp in everything except for the path attribute in\n // a global extended header, because that's weird.\n if (ex[k] !== null && ex[k] !== undefined &&\n !(global && k === 'path')) {\n this[k] = ex[k]\n }\n }\n }\n\n encode (buf, off) {\n if (!buf) {\n buf = this.block = Buffer.alloc(512)\n off = 0\n }\n\n if (!off) {\n off = 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 = encNumber(buf, off + 100, 8, this.mode) || this.needPax\n this.needPax = encNumber(buf, off + 108, 8, this.uid) || this.needPax\n this.needPax = encNumber(buf, off + 116, 8, this.gid) || this.needPax\n this.needPax = encNumber(buf, off + 124, 12, this.size) || this.needPax\n this.needPax = encDate(buf, off + 136, 12, this.mtime) || this.needPax\n buf[off + 156] = this[TYPE].charCodeAt(0)\n this.needPax = encString(buf, off + 157, 100, this.linkpath) || this.needPax\n buf.write('ustar\\u000000', off + 257, 8)\n this.needPax = encString(buf, off + 265, 32, this.uname) || this.needPax\n this.needPax = encString(buf, off + 297, 32, this.gname) || this.needPax\n this.needPax = encNumber(buf, off + 329, 8, this.devmaj) || this.needPax\n this.needPax = encNumber(buf, off + 337, 8, this.devmin) || this.needPax\n this.needPax = encString(buf, off + 345, prefixSize, prefix) || this.needPax\n if (buf[off + 475] !== 0) {\n this.needPax = encString(buf, off + 345, 155, prefix) || this.needPax\n } else {\n this.needPax = encString(buf, off + 345, 130, prefix) || this.needPax\n this.needPax = encDate(buf, off + 476, 12, this.atime) || this.needPax\n this.needPax = 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]\n }\n\n for (let i = off + 156; i < off + 512; i++) {\n sum += buf[i]\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 set (data) {\n for (const i in data) {\n if (data[i] !== null && data[i] !== undefined) {\n this[i] = data[i]\n }\n }\n }\n\n get type () {\n return types.name.get(this[TYPE]) || this[TYPE]\n }\n\n get typeKey () {\n return this[TYPE]\n }\n\n set type (type) {\n if (types.code.has(type)) {\n this[TYPE] = types.code.get(type)\n } else {\n this[TYPE] = type\n }\n }\n}\n\nconst splitPrefix = (p, prefixSize) => {\n const pathSize = 100\n let pp = p\n let prefix = ''\n let ret\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 (Buffer.byteLength(pp) <= pathSize &&\n Buffer.byteLength(prefix) <= prefixSize) {\n // both fit!\n ret = [pp, prefix, false]\n } else if (Buffer.byteLength(pp) > pathSize &&\n Buffer.byteLength(prefix) <= prefixSize) {\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)\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, off, size) =>\n buf.slice(off, off + size).toString('utf8').replace(/\\0.*/, '')\n\nconst decDate = (buf, off, size) =>\n numToDate(decNumber(buf, off, size))\n\nconst numToDate = num => num === null ? null : new Date(num * 1000)\n\nconst decNumber = (buf, off, size) =>\n buf[off] & 0x80 ? large.parse(buf.slice(off, off + size))\n : decSmallNumber(buf, off, size)\n\nconst nanNull = value => isNaN(value) ? null : value\n\nconst decSmallNumber = (buf, off, size) =>\n nanNull(parseInt(\n buf.slice(off, off + size)\n .toString('utf8').replace(/\\0.*$/, '').trim(), 8))\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 = (buf, off, size, number) =>\n number === null ? false :\n number > MAXNUM[size] || number < 0\n ? (large.encode(number, buf.slice(off, off + size)), true)\n : (encSmallNumber(buf, off, size, number), false)\n\nconst encSmallNumber = (buf, off, size, number) =>\n buf.write(octalString(number, size), off, size, 'ascii')\n\nconst octalString = (number, size) =>\n padOctal(Math.floor(number).toString(8), size)\n\nconst padOctal = (string, size) =>\n (string.length === size - 1 ? string\n : new Array(size - string.length - 1).join('0') + string + ' ') + '\\0'\n\nconst encDate = (buf, off, size, date) =>\n date === null ? false :\n encNumber(buf, off, size, date.getTime() / 1000)\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 = (buf, off, size, string) =>\n string === null ? false :\n (buf.write(string + NULLS, off, size, 'utf8'),\n string.length !== Buffer.byteLength(string) || string.length > size)\n\nmodule.exports = Header\n", "'use strict'\nconst Header = require('./header.js')\nconst path = require('path')\n\nclass Pax {\n constructor (obj, global) {\n this.atime = obj.atime || null\n this.charset = obj.charset || null\n this.comment = obj.comment || null\n this.ctime = obj.ctime || null\n this.gid = obj.gid || null\n this.gname = obj.gname || null\n this.linkpath = obj.linkpath || null\n this.mtime = obj.mtime || null\n this.path = obj.path || null\n this.size = obj.size || null\n this.uid = obj.uid || null\n this.uname = obj.uname || null\n this.dev = obj.dev || null\n this.ino = obj.ino || null\n this.nlink = obj.nlink || null\n this.global = global || false\n }\n\n encode () {\n const body = this.encodeBody()\n if (body === '') {\n return null\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 path: ('PaxHeader/' + path.basename(this.path)).slice(0, 99),\n mode: this.mode || 0o644,\n uid: this.uid || null,\n gid: this.gid || null,\n size: bodyLen,\n mtime: this.mtime || null,\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 || null,\n ctime: this.ctime || null,\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) {\n if (this[field] === null || this[field] === undefined) {\n return ''\n }\n const v = this[field] instanceof Date ? this[field].getTime() / 1000\n : this[field]\n const s = ' ' +\n (field === 'dev' || field === 'ino' || field === 'nlink'\n ? 'SCHILY.' : '') +\n field + '=' + v + '\\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\nPax.parse = (string, ex, g) => new Pax(merge(parseKV(string), ex), g)\n\nconst merge = (a, b) =>\n b ? Object.keys(a).reduce((s, k) => (s[k] = a[k], s), b) : a\n\nconst parseKV = string =>\n string\n .replace(/\\n$/, '')\n .split('\\n')\n .reduce(parseKVLine, Object.create(null))\n\nconst parseKVLine = (set, line) => {\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 k = kv.shift().replace(/^SCHILY\\.(dev|ino|nlink)/, '$1')\n if (!k) {\n return set\n }\n\n const v = kv.join('=')\n set[k] = /^([A-Z]+\\.)?([mac]|birth|creation)time$/.test(k)\n ? new Date(v * 1000)\n : /^[0-9]+$/.test(v) ? +v\n : v\n return set\n}\n\nmodule.exports = Pax\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.\nmodule.exports = str => {\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", "'use strict'\nmodule.exports = Base => class extends Base {\n warn (code, message, data = {}) {\n if (this.file) {\n data.file = this.file\n }\n if (this.cwd) {\n data.cwd = this.cwd\n }\n data.code = message instanceof Error && message.code || code\n data.tarCode = code\n if (!this.strict && data.recoverable !== false) {\n if (message instanceof Error) {\n data = Object.assign(message, data)\n message = message.message\n }\n this.emit('warn', data.tarCode, message, data)\n } else if (message instanceof Error) {\n this.emit('error', Object.assign(message, data))\n } else {\n this.emit('error', Object.assign(new Error(`${code}: ${message}`), data))\n }\n }\n}\n", "'use strict'\n\n// When writing files on Windows, translate the characters to their\n// 0xf000 higher-encoded versions.\n\nconst raw = [\n '|',\n '<',\n '>',\n '?',\n ':',\n]\n\nconst win = raw.map(char =>\n String.fromCharCode(0xf000 + char.charCodeAt(0)))\n\nconst toWin = new Map(raw.map((char, i) => [char, win[i]]))\nconst toRaw = new Map(win.map((char, i) => [char, raw[i]]))\n\nmodule.exports = {\n encode: s => raw.reduce((s, c) => s.split(c).join(toWin.get(c)), s),\n decode: s => win.reduce((s, c) => s.split(c).join(toRaw.get(c)), s),\n}\n", "// unix absolute paths are also absolute on win32, so we use this for both\nconst { isAbsolute, parse } = require('path').win32\n\n// returns [root, stripped]\n// Note that windows will think that //x/y/z/a has a \"root\" of //x/y, and in\n// those cases, we want to sanitize it to x/y/z/a, not z/a, so we strip /\n// explicitly if it's the first character.\n// drive-specific relative paths on Windows get their root stripped off even\n// though they are not absolute, so `c:../foo` becomes ['c:', '../foo']\nmodule.exports = path => {\n let r = ''\n\n let parsed = parse(path)\n while (isAbsolute(path) || parsed.root) {\n // windows will think that //x/y/z has a \"root\" of //x/y/\n // but strip the //?/C:/ off of //?/C:/path\n const root = path.charAt(0) === '/' && path.slice(0, 4) !== '//?/' ? '/'\n : parsed.root\n path = path.slice(root.length)\n r += root\n parsed = parse(path)\n }\n return [r, path]\n}\n", "'use strict'\nmodule.exports = (mode, isDir, portable) => {\n mode &= 0o7777\n\n // in portable mode, use the minimum reasonable umask\n // if this system creates files with 0o664 by default\n // (as some linux distros do), then we'll write the\n // archive with 0o644 instead. Also, don't ever create\n // a file that is not readable/writable by the owner.\n if (portable) {\n mode = (mode | 0o600) & ~0o22\n }\n\n // if dirs are readable, then they should be listable\n if (isDir) {\n if (mode & 0o400) {\n mode |= 0o100\n }\n if (mode & 0o40) {\n mode |= 0o10\n }\n if (mode & 0o4) {\n mode |= 0o1\n }\n }\n return mode\n}\n", "'use strict'\nconst MiniPass = require('minipass')\nconst Pax = require('./pax.js')\nconst Header = require('./header.js')\nconst fs = require('fs')\nconst path = require('path')\nconst normPath = require('./normalize-windows-path.js')\nconst stripSlash = require('./strip-trailing-slashes.js')\n\nconst prefixPath = (path, prefix) => {\n if (!prefix) {\n return normPath(path)\n }\n path = normPath(path).replace(/^\\.(\\/|$)/, '')\n return stripSlash(prefix) + '/' + path\n}\n\nconst maxReadSize = 16 * 1024 * 1024\nconst PROCESS = Symbol('process')\nconst FILE = Symbol('file')\nconst DIRECTORY = Symbol('directory')\nconst SYMLINK = Symbol('symlink')\nconst HARDLINK = Symbol('hardlink')\nconst HEADER = Symbol('header')\nconst READ = Symbol('read')\nconst LSTAT = Symbol('lstat')\nconst ONLSTAT = Symbol('onlstat')\nconst ONREAD = Symbol('onread')\nconst ONREADLINK = Symbol('onreadlink')\nconst OPENFILE = Symbol('openfile')\nconst ONOPENFILE = Symbol('onopenfile')\nconst CLOSE = Symbol('close')\nconst MODE = Symbol('mode')\nconst AWAITDRAIN = Symbol('awaitDrain')\nconst ONDRAIN = Symbol('ondrain')\nconst PREFIX = Symbol('prefix')\nconst HAD_ERROR = Symbol('hadError')\nconst warner = require('./warn-mixin.js')\nconst winchars = require('./winchars.js')\nconst stripAbsolutePath = require('./strip-absolute-path.js')\n\nconst modeFix = require('./mode-fix.js')\n\nconst WriteEntry = warner(class WriteEntry extends MiniPass {\n constructor (p, opt) {\n opt = opt || {}\n super(opt)\n if (typeof p !== 'string') {\n throw new TypeError('path is required')\n }\n this.path = normPath(p)\n // suppress atime, ctime, uid, gid, uname, gname\n this.portable = !!opt.portable\n // until node has builtin pwnam functions, this'll have to do\n this.myuid = process.getuid && process.getuid() || 0\n this.myuser = process.env.USER || ''\n this.maxReadSize = opt.maxReadSize || maxReadSize\n this.linkCache = opt.linkCache || new Map()\n this.statCache = opt.statCache || new Map()\n this.preservePaths = !!opt.preservePaths\n this.cwd = normPath(opt.cwd || process.cwd())\n this.strict = !!opt.strict\n this.noPax = !!opt.noPax\n this.noMtime = !!opt.noMtime\n this.mtime = opt.mtime || null\n this.prefix = opt.prefix ? normPath(opt.prefix) : null\n\n this.fd = null\n this.blockLen = null\n this.blockRemain = null\n this.buf = null\n this.offset = null\n this.length = null\n this.pos = null\n this.remain = null\n\n if (typeof opt.onwarn === 'function') {\n this.on('warn', opt.onwarn)\n }\n\n let pathWarn = false\n if (!this.preservePaths) {\n const [root, stripped] = stripAbsolutePath(this.path)\n if (root) {\n this.path = stripped\n pathWarn = root\n }\n }\n\n this.win32 = !!opt.win32 || process.platform === 'win32'\n if (this.win32) {\n // force the \\ to / normalization, since we might not *actually*\n // be on windows, but want \\ to be considered a path separator.\n this.path = winchars.decode(this.path.replace(/\\\\/g, '/'))\n p = p.replace(/\\\\/g, '/')\n }\n\n this.absolute = normPath(opt.absolute || path.resolve(this.cwd, p))\n\n if (this.path === '') {\n this.path = './'\n }\n\n if (pathWarn) {\n this.warn('TAR_ENTRY_INFO', `stripping ${pathWarn} from absolute path`, {\n entry: this,\n path: pathWarn + this.path,\n })\n }\n\n if (this.statCache.has(this.absolute)) {\n this[ONLSTAT](this.statCache.get(this.absolute))\n } else {\n this[LSTAT]()\n }\n }\n\n emit (ev, ...data) {\n if (ev === 'error') {\n this[HAD_ERROR] = true\n }\n return super.emit(ev, ...data)\n }\n\n [LSTAT] () {\n fs.lstat(this.absolute, (er, stat) => {\n if (er) {\n return this.emit('error', er)\n }\n this[ONLSTAT](stat)\n })\n }\n\n [ONLSTAT] (stat) {\n this.statCache.set(this.absolute, stat)\n this.stat = stat\n if (!stat.isFile()) {\n stat.size = 0\n }\n this.type = getType(stat)\n this.emit('stat', stat)\n this[PROCESS]()\n }\n\n [PROCESS] () {\n switch (this.type) {\n case 'File': return this[FILE]()\n case 'Directory': return this[DIRECTORY]()\n case 'SymbolicLink': return this[SYMLINK]()\n // unsupported types are ignored.\n default: return this.end()\n }\n }\n\n [MODE] (mode) {\n return modeFix(mode, this.type === 'Directory', this.portable)\n }\n\n [PREFIX] (path) {\n return prefixPath(path, this.prefix)\n }\n\n [HEADER] () {\n if (this.type === 'Directory' && this.portable) {\n this.noMtime = true\n }\n\n this.header = new Header({\n path: this[PREFIX](this.path),\n // only apply the prefix to hard links.\n linkpath: this.type === 'Link' ? this[PREFIX](this.linkpath)\n : this.linkpath,\n // only the permissions and setuid/setgid/sticky bitflags\n // not the higher-order bits that specify file type\n mode: this[MODE](this.stat.mode),\n uid: this.portable ? null : this.stat.uid,\n gid: this.portable ? null : this.stat.gid,\n size: this.stat.size,\n mtime: this.noMtime ? null : this.mtime || this.stat.mtime,\n type: this.type,\n uname: this.portable ? null :\n this.stat.uid === this.myuid ? this.myuser : '',\n atime: this.portable ? null : this.stat.atime,\n ctime: this.portable ? null : this.stat.ctime,\n })\n\n if (this.header.encode() && !this.noPax) {\n super.write(new Pax({\n atime: this.portable ? null : this.header.atime,\n ctime: this.portable ? null : this.header.ctime,\n gid: this.portable ? null : this.header.gid,\n mtime: this.noMtime ? null : this.mtime || this.header.mtime,\n path: this[PREFIX](this.path),\n linkpath: this.type === 'Link' ? this[PREFIX](this.linkpath)\n : this.linkpath,\n size: this.header.size,\n uid: this.portable ? null : this.header.uid,\n uname: this.portable ? null : this.header.uname,\n dev: this.portable ? null : this.stat.dev,\n ino: this.portable ? null : this.stat.ino,\n nlink: this.portable ? null : this.stat.nlink,\n }).encode())\n }\n super.write(this.header.block)\n }\n\n [DIRECTORY] () {\n if (this.path.slice(-1) !== '/') {\n this.path += '/'\n }\n this.stat.size = 0\n this[HEADER]()\n this.end()\n }\n\n [SYMLINK] () {\n fs.readlink(this.absolute, (er, linkpath) => {\n if (er) {\n return this.emit('error', er)\n }\n this[ONREADLINK](linkpath)\n })\n }\n\n [ONREADLINK] (linkpath) {\n this.linkpath = normPath(linkpath)\n this[HEADER]()\n this.end()\n }\n\n [HARDLINK] (linkpath) {\n this.type = 'Link'\n this.linkpath = normPath(path.relative(this.cwd, linkpath))\n this.stat.size = 0\n this[HEADER]()\n this.end()\n }\n\n [FILE] () {\n if (this.stat.nlink > 1) {\n const linkKey = this.stat.dev + ':' + this.stat.ino\n if (this.linkCache.has(linkKey)) {\n const linkpath = this.linkCache.get(linkKey)\n if (linkpath.indexOf(this.cwd) === 0) {\n return this[HARDLINK](linkpath)\n }\n }\n this.linkCache.set(linkKey, this.absolute)\n }\n\n this[HEADER]()\n if (this.stat.size === 0) {\n return this.end()\n }\n\n this[OPENFILE]()\n }\n\n [OPENFILE] () {\n fs.open(this.absolute, 'r', (er, fd) => {\n if (er) {\n return this.emit('error', er)\n }\n this[ONOPENFILE](fd)\n })\n }\n\n [ONOPENFILE] (fd) {\n this.fd = fd\n if (this[HAD_ERROR]) {\n return this[CLOSE]()\n }\n\n this.blockLen = 512 * Math.ceil(this.stat.size / 512)\n this.blockRemain = this.blockLen\n const bufLen = Math.min(this.blockLen, this.maxReadSize)\n this.buf = Buffer.allocUnsafe(bufLen)\n this.offset = 0\n this.pos = 0\n this.remain = this.stat.size\n this.length = this.buf.length\n this[READ]()\n }\n\n [READ] () {\n const { fd, buf, offset, length, pos } = this\n fs.read(fd, buf, offset, length, pos, (er, bytesRead) => {\n if (er) {\n // ignoring the error from close(2) is a bad practice, but at\n // this point we already have an error, don't need another one\n return this[CLOSE](() => this.emit('error', er))\n }\n this[ONREAD](bytesRead)\n })\n }\n\n [CLOSE] (cb) {\n fs.close(this.fd, cb)\n }\n\n [ONREAD] (bytesRead) {\n if (bytesRead <= 0 && this.remain > 0) {\n const er = new Error('encountered unexpected EOF')\n er.path = this.absolute\n er.syscall = 'read'\n er.code = 'EOF'\n return this[CLOSE](() => this.emit('error', er))\n }\n\n if (bytesRead > this.remain) {\n const er = new Error('did not encounter expected EOF')\n er.path = this.absolute\n er.syscall = 'read'\n er.code = 'EOF'\n return this[CLOSE](() => this.emit('error', er))\n }\n\n // null out the rest of the buffer, if we could fit the block padding\n // at the end of this loop, we've incremented bytesRead and this.remain\n // to be incremented up to the blockRemain level, as if we had expected\n // to get a null-padded file, and read it until the end. then we will\n // decrement both remain and blockRemain by bytesRead, and know that we\n // reached the expected EOF, without any null buffer to append.\n if (bytesRead === this.remain) {\n for (let i = bytesRead; i < this.length && bytesRead < this.blockRemain; i++) {\n this.buf[i + this.offset] = 0\n bytesRead++\n this.remain++\n }\n }\n\n const writeBuf = this.offset === 0 && bytesRead === this.buf.length ?\n this.buf : this.buf.slice(this.offset, this.offset + bytesRead)\n\n const flushed = this.write(writeBuf)\n if (!flushed) {\n this[AWAITDRAIN](() => this[ONDRAIN]())\n } else {\n this[ONDRAIN]()\n }\n }\n\n [AWAITDRAIN] (cb) {\n this.once('drain', cb)\n }\n\n write (writeBuf) {\n if (this.blockRemain < writeBuf.length) {\n const er = new Error('writing more data than expected')\n er.path = this.absolute\n return this.emit('error', er)\n }\n this.remain -= writeBuf.length\n this.blockRemain -= writeBuf.length\n this.pos += writeBuf.length\n this.offset += writeBuf.length\n return super.write(writeBuf)\n }\n\n [ONDRAIN] () {\n if (!this.remain) {\n if (this.blockRemain) {\n super.write(Buffer.alloc(this.blockRemain))\n }\n return this[CLOSE](er => er ? this.emit('error', er) : this.end())\n }\n\n if (this.offset >= this.length) {\n // if we only have a smaller bit left to read, alloc a smaller buffer\n // otherwise, keep it the same length it was before.\n this.buf = Buffer.allocUnsafe(Math.min(this.blockRemain, this.buf.length))\n this.offset = 0\n }\n this.length = this.buf.length - this.offset\n this[READ]()\n }\n})\n\nclass WriteEntrySync extends WriteEntry {\n [LSTAT] () {\n this[ONLSTAT](fs.lstatSync(this.absolute))\n }\n\n [SYMLINK] () {\n this[ONREADLINK](fs.readlinkSync(this.absolute))\n }\n\n [OPENFILE] () {\n this[ONOPENFILE](fs.openSync(this.absolute, 'r'))\n }\n\n [READ] () {\n let threw = true\n try {\n const { fd, buf, offset, length, pos } = this\n const bytesRead = fs.readSync(fd, buf, offset, length, pos)\n this[ONREAD](bytesRead)\n threw = false\n } finally {\n // ignoring the error from close(2) is a bad practice, but at\n // this point we already have an error, don't need another one\n if (threw) {\n try {\n this[CLOSE](() => {})\n } catch (er) {}\n }\n }\n }\n\n [AWAITDRAIN] (cb) {\n cb()\n }\n\n [CLOSE] (cb) {\n fs.closeSync(this.fd)\n cb()\n }\n}\n\nconst WriteEntryTar = warner(class WriteEntryTar extends MiniPass {\n constructor (readEntry, opt) {\n opt = opt || {}\n super(opt)\n this.preservePaths = !!opt.preservePaths\n this.portable = !!opt.portable\n this.strict = !!opt.strict\n this.noPax = !!opt.noPax\n this.noMtime = !!opt.noMtime\n\n this.readEntry = readEntry\n this.type = readEntry.type\n if (this.type === 'Directory' && this.portable) {\n this.noMtime = true\n }\n\n this.prefix = opt.prefix || null\n\n this.path = normPath(readEntry.path)\n this.mode = this[MODE](readEntry.mode)\n this.uid = this.portable ? null : readEntry.uid\n this.gid = this.portable ? null : readEntry.gid\n this.uname = this.portable ? null : readEntry.uname\n this.gname = this.portable ? null : readEntry.gname\n this.size = readEntry.size\n this.mtime = this.noMtime ? null : opt.mtime || readEntry.mtime\n this.atime = this.portable ? null : readEntry.atime\n this.ctime = this.portable ? null : readEntry.ctime\n this.linkpath = normPath(readEntry.linkpath)\n\n if (typeof opt.onwarn === 'function') {\n this.on('warn', opt.onwarn)\n }\n\n let pathWarn = false\n if (!this.preservePaths) {\n const [root, stripped] = stripAbsolutePath(this.path)\n if (root) {\n this.path = stripped\n pathWarn = root\n }\n }\n\n this.remain = readEntry.size\n this.blockRemain = readEntry.startBlockSize\n\n this.header = new Header({\n path: this[PREFIX](this.path),\n linkpath: this.type === 'Link' ? this[PREFIX](this.linkpath)\n : this.linkpath,\n // only the permissions and setuid/setgid/sticky bitflags\n // not the higher-order bits that specify file type\n mode: this.mode,\n uid: this.portable ? null : this.uid,\n gid: this.portable ? null : this.gid,\n size: this.size,\n mtime: this.noMtime ? null : this.mtime,\n type: this.type,\n uname: this.portable ? null : this.uname,\n atime: this.portable ? null : this.atime,\n ctime: this.portable ? null : this.ctime,\n })\n\n if (pathWarn) {\n this.warn('TAR_ENTRY_INFO', `stripping ${pathWarn} from absolute path`, {\n entry: this,\n path: pathWarn + this.path,\n })\n }\n\n if (this.header.encode() && !this.noPax) {\n super.write(new Pax({\n atime: this.portable ? null : this.atime,\n ctime: this.portable ? null : this.ctime,\n gid: this.portable ? null : this.gid,\n mtime: this.noMtime ? null : this.mtime,\n path: this[PREFIX](this.path),\n linkpath: this.type === 'Link' ? this[PREFIX](this.linkpath)\n : this.linkpath,\n size: this.size,\n uid: this.portable ? null : this.uid,\n uname: this.portable ? null : this.uname,\n dev: this.portable ? null : this.readEntry.dev,\n ino: this.portable ? null : this.readEntry.ino,\n nlink: this.portable ? null : this.readEntry.nlink,\n }).encode())\n }\n\n super.write(this.header.block)\n readEntry.pipe(this)\n }\n\n [PREFIX] (path) {\n return prefixPath(path, this.prefix)\n }\n\n [MODE] (mode) {\n return modeFix(mode, this.type === 'Directory', this.portable)\n }\n\n write (data) {\n const writeLen = data.length\n if (writeLen > this.blockRemain) {\n throw new Error('writing more to entry than is appropriate')\n }\n this.blockRemain -= writeLen\n return super.write(data)\n }\n\n end () {\n if (this.blockRemain) {\n super.write(Buffer.alloc(this.blockRemain))\n }\n return super.end()\n }\n})\n\nWriteEntry.Sync = WriteEntrySync\nWriteEntry.Tar = WriteEntryTar\n\nconst getType = stat =>\n stat.isFile() ? 'File'\n : stat.isDirectory() ? 'Directory'\n : stat.isSymbolicLink() ? 'SymbolicLink'\n : 'Unsupported'\n\nmodule.exports = WriteEntry\n", "'use strict'\n\n// A readable tar stream creator\n// Technically, this is a transform stream that you write paths into,\n// and tar format comes out of.\n// The `add()` method is like `write()` but returns this,\n// and end() return `this` as well, so you can\n// do `new Pack(opt).add('files').add('dir').end().pipe(output)\n// You could also do something like:\n// streamOfPaths().pipe(new Pack()).pipe(new fs.WriteStream('out.tar'))\n\nclass PackJob {\n constructor (path, absolute) {\n this.path = path || './'\n this.absolute = absolute\n this.entry = null\n this.stat = null\n this.readdir = null\n this.pending = false\n this.ignore = false\n this.piped = false\n }\n}\n\nconst MiniPass = require('minipass')\nconst zlib = require('minizlib')\nconst ReadEntry = require('./read-entry.js')\nconst WriteEntry = require('./write-entry.js')\nconst WriteEntrySync = WriteEntry.Sync\nconst WriteEntryTar = WriteEntry.Tar\nconst Yallist = require('yallist')\nconst EOF = Buffer.alloc(1024)\nconst ONSTAT = Symbol('onStat')\nconst ENDED = Symbol('ended')\nconst QUEUE = Symbol('queue')\nconst CURRENT = Symbol('current')\nconst PROCESS = Symbol('process')\nconst PROCESSING = Symbol('processing')\nconst PROCESSJOB = Symbol('processJob')\nconst JOBS = Symbol('jobs')\nconst JOBDONE = Symbol('jobDone')\nconst ADDFSENTRY = Symbol('addFSEntry')\nconst ADDTARENTRY = Symbol('addTarEntry')\nconst STAT = Symbol('stat')\nconst READDIR = Symbol('readdir')\nconst ONREADDIR = Symbol('onreaddir')\nconst PIPE = Symbol('pipe')\nconst ENTRY = Symbol('entry')\nconst ENTRYOPT = Symbol('entryOpt')\nconst WRITEENTRYCLASS = Symbol('writeEntryClass')\nconst WRITE = Symbol('write')\nconst ONDRAIN = Symbol('ondrain')\n\nconst fs = require('fs')\nconst path = require('path')\nconst warner = require('./warn-mixin.js')\nconst normPath = require('./normalize-windows-path.js')\n\nconst Pack = warner(class Pack extends MiniPass {\n constructor (opt) {\n super(opt)\n opt = opt || Object.create(null)\n this.opt = opt\n this.file = opt.file || ''\n this.cwd = opt.cwd || process.cwd()\n this.maxReadSize = opt.maxReadSize\n this.preservePaths = !!opt.preservePaths\n this.strict = !!opt.strict\n this.noPax = !!opt.noPax\n this.prefix = normPath(opt.prefix || '')\n this.linkCache = opt.linkCache || new Map()\n this.statCache = opt.statCache || new Map()\n this.readdirCache = opt.readdirCache || new Map()\n\n this[WRITEENTRYCLASS] = WriteEntry\n if (typeof opt.onwarn === 'function') {\n this.on('warn', opt.onwarn)\n }\n\n this.portable = !!opt.portable\n this.zip = null\n if (opt.gzip) {\n if (typeof opt.gzip !== 'object') {\n opt.gzip = {}\n }\n if (this.portable) {\n opt.gzip.portable = true\n }\n this.zip = new zlib.Gzip(opt.gzip)\n this.zip.on('data', chunk => super.write(chunk))\n this.zip.on('end', _ => super.end())\n this.zip.on('drain', _ => this[ONDRAIN]())\n this.on('resume', _ => this.zip.resume())\n } else {\n this.on('drain', this[ONDRAIN])\n }\n\n this.noDirRecurse = !!opt.noDirRecurse\n this.follow = !!opt.follow\n this.noMtime = !!opt.noMtime\n this.mtime = opt.mtime || null\n\n this.filter = typeof opt.filter === 'function' ? opt.filter : _ => true\n\n this[QUEUE] = new Yallist()\n this[JOBS] = 0\n this.jobs = +opt.jobs || 4\n this[PROCESSING] = false\n this[ENDED] = false\n }\n\n [WRITE] (chunk) {\n return super.write(chunk)\n }\n\n add (path) {\n this.write(path)\n return this\n }\n\n end (path) {\n if (path) {\n this.write(path)\n }\n this[ENDED] = true\n this[PROCESS]()\n return this\n }\n\n write (path) {\n if (this[ENDED]) {\n throw new Error('write after end')\n }\n\n if (path instanceof ReadEntry) {\n this[ADDTARENTRY](path)\n } else {\n this[ADDFSENTRY](path)\n }\n return this.flowing\n }\n\n [ADDTARENTRY] (p) {\n const absolute = normPath(path.resolve(this.cwd, p.path))\n // in this case, we don't have to wait for the stat\n if (!this.filter(p.path, p)) {\n p.resume()\n } else {\n const job = new PackJob(p.path, absolute, false)\n job.entry = new WriteEntryTar(p, this[ENTRYOPT](job))\n job.entry.on('end', _ => this[JOBDONE](job))\n this[JOBS] += 1\n this[QUEUE].push(job)\n }\n\n this[PROCESS]()\n }\n\n [ADDFSENTRY] (p) {\n const absolute = normPath(path.resolve(this.cwd, p))\n this[QUEUE].push(new PackJob(p, absolute))\n this[PROCESS]()\n }\n\n [STAT] (job) {\n job.pending = true\n this[JOBS] += 1\n const stat = this.follow ? 'stat' : 'lstat'\n fs[stat](job.absolute, (er, stat) => {\n job.pending = false\n this[JOBS] -= 1\n if (er) {\n this.emit('error', er)\n } else {\n this[ONSTAT](job, stat)\n }\n })\n }\n\n [ONSTAT] (job, stat) {\n this.statCache.set(job.absolute, stat)\n job.stat = stat\n\n // now we have the stat, we can filter it.\n if (!this.filter(job.path, stat)) {\n job.ignore = true\n }\n\n this[PROCESS]()\n }\n\n [READDIR] (job) {\n job.pending = true\n this[JOBS] += 1\n fs.readdir(job.absolute, (er, entries) => {\n job.pending = false\n this[JOBS] -= 1\n if (er) {\n return this.emit('error', er)\n }\n this[ONREADDIR](job, entries)\n })\n }\n\n [ONREADDIR] (job, entries) {\n this.readdirCache.set(job.absolute, entries)\n job.readdir = entries\n this[PROCESS]()\n }\n\n [PROCESS] () {\n if (this[PROCESSING]) {\n return\n }\n\n this[PROCESSING] = true\n for (let w = this[QUEUE].head;\n w !== null && this[JOBS] < this.jobs;\n w = w.next) {\n this[PROCESSJOB](w.value)\n if (w.value.ignore) {\n const p = w.next\n this[QUEUE].removeNode(w)\n w.next = p\n }\n }\n\n this[PROCESSING] = false\n\n if (this[ENDED] && !this[QUEUE].length && this[JOBS] === 0) {\n if (this.zip) {\n this.zip.end(EOF)\n } else {\n super.write(EOF)\n super.end()\n }\n }\n }\n\n get [CURRENT] () {\n return this[QUEUE] && this[QUEUE].head && this[QUEUE].head.value\n }\n\n [JOBDONE] (job) {\n this[QUEUE].shift()\n this[JOBS] -= 1\n this[PROCESS]()\n }\n\n [PROCESSJOB] (job) {\n if (job.pending) {\n return\n }\n\n if (job.entry) {\n if (job === this[CURRENT] && !job.piped) {\n this[PIPE](job)\n }\n return\n }\n\n if (!job.stat) {\n if (this.statCache.has(job.absolute)) {\n this[ONSTAT](job, this.statCache.get(job.absolute))\n } else {\n this[STAT](job)\n }\n }\n if (!job.stat) {\n return\n }\n\n // filtered out!\n if (job.ignore) {\n return\n }\n\n if (!this.noDirRecurse && job.stat.isDirectory() && !job.readdir) {\n if (this.readdirCache.has(job.absolute)) {\n this[ONREADDIR](job, this.readdirCache.get(job.absolute))\n } else {\n this[READDIR](job)\n }\n if (!job.readdir) {\n return\n }\n }\n\n // we know it doesn't have an entry, because that got checked above\n job.entry = this[ENTRY](job)\n if (!job.entry) {\n job.ignore = true\n return\n }\n\n if (job === this[CURRENT] && !job.piped) {\n this[PIPE](job)\n }\n }\n\n [ENTRYOPT] (job) {\n return {\n onwarn: (code, msg, data) => this.warn(code, msg, data),\n noPax: this.noPax,\n cwd: this.cwd,\n absolute: job.absolute,\n preservePaths: this.preservePaths,\n maxReadSize: this.maxReadSize,\n strict: this.strict,\n portable: this.portable,\n linkCache: this.linkCache,\n statCache: this.statCache,\n noMtime: this.noMtime,\n mtime: this.mtime,\n prefix: this.prefix,\n }\n }\n\n [ENTRY] (job) {\n this[JOBS] += 1\n try {\n return new this[WRITEENTRYCLASS](job.path, this[ENTRYOPT](job))\n .on('end', () => this[JOBDONE](job))\n .on('error', er => this.emit('error', er))\n } catch (er) {\n this.emit('error', er)\n }\n }\n\n [ONDRAIN] () {\n if (this[CURRENT] && this[CURRENT].entry) {\n this[CURRENT].entry.resume()\n }\n }\n\n // like .pipe() but using super, because our write() is special\n [PIPE] (job) {\n job.piped = true\n\n if (job.readdir) {\n job.readdir.forEach(entry => {\n const p = job.path\n const base = p === './' ? '' : p.replace(/\\/*$/, '/')\n this[ADDFSENTRY](base + entry)\n })\n }\n\n const source = job.entry\n const zip = this.zip\n\n if (zip) {\n source.on('data', chunk => {\n if (!zip.write(chunk)) {\n source.pause()\n }\n })\n } else {\n source.on('data', chunk => {\n if (!super.write(chunk)) {\n source.pause()\n }\n })\n }\n }\n\n pause () {\n if (this.zip) {\n this.zip.pause()\n }\n return super.pause()\n }\n})\n\nclass PackSync extends Pack {\n constructor (opt) {\n super(opt)\n this[WRITEENTRYCLASS] = WriteEntrySync\n }\n\n // pause/resume are no-ops in sync streams.\n pause () {}\n resume () {}\n\n [STAT] (job) {\n const stat = this.follow ? 'statSync' : 'lstatSync'\n this[ONSTAT](job, fs[stat](job.absolute))\n }\n\n [READDIR] (job, stat) {\n this[ONREADDIR](job, fs.readdirSync(job.absolute))\n }\n\n // gotta get it all in this tick\n [PIPE] (job) {\n const source = job.entry\n const zip = this.zip\n\n if (job.readdir) {\n job.readdir.forEach(entry => {\n const p = job.path\n const base = p === './' ? '' : p.replace(/\\/*$/, '/')\n this[ADDFSENTRY](base + entry)\n })\n }\n\n if (zip) {\n source.on('data', chunk => {\n zip.write(chunk)\n })\n } else {\n source.on('data', chunk => {\n super[WRITE](chunk)\n })\n }\n }\n}\n\nPack.Sync = PackSync\n\nmodule.exports = Pack\n", "'use strict'\nconst proc = typeof process === 'object' && process ? process : {\n stdout: null,\n stderr: null,\n}\nconst EE = require('events')\nconst Stream = require('stream')\nconst SD = require('string_decoder').StringDecoder\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 BUFFERLENGTH = Symbol('bufferLength')\nconst BUFFERPUSH = Symbol('bufferPush')\nconst BUFFERSHIFT = Symbol('bufferShift')\nconst OBJECTMODE = Symbol('objectMode')\nconst DESTROYED = Symbol('destroyed')\nconst EMITDATA = Symbol('emitData')\nconst EMITEND = Symbol('emitEnd')\nconst EMITEND2 = Symbol('emitEnd2')\nconst ASYNC = Symbol('async')\n\nconst defer = fn => Promise.resolve().then(fn)\n\n// TODO remove when Node v8 support drops\nconst doIter = global._MP_NO_ITERATOR_SYMBOLS_ !== '1'\nconst ASYNCITERATOR = doIter && Symbol.asyncIterator\n || Symbol('asyncIterator not implemented')\nconst ITERATOR = doIter && Symbol.iterator\n || Symbol('iterator not implemented')\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.\nconst isEndish = ev =>\n ev === 'end' ||\n ev === 'finish' ||\n ev === 'prefinish'\n\nconst isArrayBuffer = b => b instanceof ArrayBuffer ||\n typeof b === 'object' &&\n b.constructor &&\n b.constructor.name === 'ArrayBuffer' &&\n b.byteLength >= 0\n\nconst isArrayBufferView = b => !Buffer.isBuffer(b) && ArrayBuffer.isView(b)\n\nclass Pipe {\n constructor (src, dest, opts) {\n this.src = src\n this.dest = dest\n this.opts = opts\n this.ondrain = () => src[RESUME]()\n dest.on('drain', this.ondrain)\n }\n unpipe () {\n this.dest.removeListener('drain', this.ondrain)\n }\n // istanbul ignore next - only here for the prototype\n proxyErrors () {}\n end () {\n this.unpipe()\n if (this.opts.end)\n this.dest.end()\n }\n}\n\nclass PipeProxyErrors extends Pipe {\n unpipe () {\n this.src.removeListener('error', this.proxyErrors)\n super.unpipe()\n }\n constructor (src, dest, opts) {\n super(src, dest, opts)\n this.proxyErrors = er => dest.emit('error', er)\n src.on('error', this.proxyErrors)\n }\n}\n\nmodule.exports = class Minipass extends Stream {\n constructor (options) {\n super()\n this[FLOWING] = false\n // whether we're explicitly paused\n this[PAUSED] = false\n this.pipes = []\n this.buffer = []\n this[OBJECTMODE] = options && options.objectMode || false\n if (this[OBJECTMODE])\n this[ENCODING] = null\n else\n this[ENCODING] = options && options.encoding || null\n if (this[ENCODING] === 'buffer')\n this[ENCODING] = null\n this[ASYNC] = options && !!options.async || false\n this[DECODER] = this[ENCODING] ? new SD(this[ENCODING]) : null\n this[EOF] = false\n this[EMITTED_END] = false\n this[EMITTING_END] = false\n this[CLOSED] = false\n this[EMITTED_ERROR] = null\n this.writable = true\n this.readable = true\n this[BUFFERLENGTH] = 0\n this[DESTROYED] = false\n }\n\n get bufferLength () { return this[BUFFERLENGTH] }\n\n get encoding () { return this[ENCODING] }\n set encoding (enc) {\n if (this[OBJECTMODE])\n throw new Error('cannot set encoding in objectMode')\n\n if (this[ENCODING] && enc !== this[ENCODING] &&\n (this[DECODER] && this[DECODER].lastNeed || this[BUFFERLENGTH]))\n throw new Error('cannot change encoding')\n\n if (this[ENCODING] !== enc) {\n this[DECODER] = enc ? new SD(enc) : null\n if (this.buffer.length)\n this.buffer = this.buffer.map(chunk => this[DECODER].write(chunk))\n }\n\n this[ENCODING] = enc\n }\n\n setEncoding (enc) {\n this.encoding = enc\n }\n\n get objectMode () { return this[OBJECTMODE] }\n set objectMode (om) { this[OBJECTMODE] = this[OBJECTMODE] || !!om }\n\n get ['async'] () { return this[ASYNC] }\n set ['async'] (a) { this[ASYNC] = this[ASYNC] || !!a }\n\n write (chunk, encoding, cb) {\n if (this[EOF])\n throw new Error('write after end')\n\n if (this[DESTROYED]) {\n this.emit('error', Object.assign(\n new Error('Cannot call write after a stream was destroyed'),\n { code: 'ERR_STREAM_DESTROYED' }\n ))\n return true\n }\n\n if (typeof encoding === 'function')\n cb = encoding, encoding = 'utf8'\n\n if (!encoding)\n encoding = 'utf8'\n\n const fn = this[ASYNC] ? defer : f => f()\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 else switches us into object mode\n if (!this[OBJECTMODE] && !Buffer.isBuffer(chunk)) {\n if (isArrayBufferView(chunk))\n chunk = Buffer.from(chunk.buffer, chunk.byteOffset, chunk.byteLength)\n else if (isArrayBuffer(chunk))\n chunk = Buffer.from(chunk)\n else if (typeof chunk !== 'string')\n // use the setter so we throw if we have encoding set\n this.objectMode = true\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 /* istanbul ignore if - maybe impossible? */\n if (this.flowing && this[BUFFERLENGTH] !== 0)\n this[FLUSH](true)\n\n if (this.flowing)\n this.emit('data', chunk)\n else\n this[BUFFERPUSH](chunk)\n\n if (this[BUFFERLENGTH] !== 0)\n this.emit('readable')\n\n if (cb)\n 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.length) {\n if (this[BUFFERLENGTH] !== 0)\n this.emit('readable')\n if (cb)\n 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 (typeof chunk === 'string' &&\n // unless it is a string already ready for us to use\n !(encoding === this[ENCODING] && !this[DECODER].lastNeed)) {\n chunk = Buffer.from(chunk, encoding)\n }\n\n if (Buffer.isBuffer(chunk) && this[ENCODING])\n chunk = this[DECODER].write(chunk)\n\n // Note: flushing CAN potentially switch us into not-flowing mode\n if (this.flowing && this[BUFFERLENGTH] !== 0)\n this[FLUSH](true)\n\n if (this.flowing)\n this.emit('data', chunk)\n else\n this[BUFFERPUSH](chunk)\n\n if (this[BUFFERLENGTH] !== 0)\n this.emit('readable')\n\n if (cb)\n fn(cb)\n\n return this.flowing\n }\n\n read (n) {\n if (this[DESTROYED])\n return null\n\n if (this[BUFFERLENGTH] === 0 || n === 0 || n > this[BUFFERLENGTH]) {\n this[MAYBE_EMIT_END]()\n return null\n }\n\n if (this[OBJECTMODE])\n n = null\n\n if (this.buffer.length > 1 && !this[OBJECTMODE]) {\n if (this.encoding)\n this.buffer = [this.buffer.join('')]\n else\n this.buffer = [Buffer.concat(this.buffer, this[BUFFERLENGTH])]\n }\n\n const ret = this[READ](n || null, this.buffer[0])\n this[MAYBE_EMIT_END]()\n return ret\n }\n\n [READ] (n, chunk) {\n if (n === chunk.length || n === null)\n this[BUFFERSHIFT]()\n else {\n this.buffer[0] = chunk.slice(n)\n chunk = chunk.slice(0, n)\n this[BUFFERLENGTH] -= n\n }\n\n this.emit('data', chunk)\n\n if (!this.buffer.length && !this[EOF])\n this.emit('drain')\n\n return chunk\n }\n\n end (chunk, encoding, cb) {\n if (typeof chunk === 'function')\n cb = chunk, chunk = null\n if (typeof encoding === 'function')\n cb = encoding, encoding = 'utf8'\n if (chunk)\n this.write(chunk, encoding)\n if (cb)\n 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])\n this[MAYBE_EMIT_END]()\n return this\n }\n\n // don't let the internal resume be overwritten\n [RESUME] () {\n if (this[DESTROYED])\n return\n\n this[PAUSED] = false\n this[FLOWING] = true\n this.emit('resume')\n if (this.buffer.length)\n this[FLUSH]()\n else if (this[EOF])\n this[MAYBE_EMIT_END]()\n else\n this.emit('drain')\n }\n\n resume () {\n return this[RESUME]()\n }\n\n pause () {\n this[FLOWING] = false\n this[PAUSED] = true\n }\n\n get destroyed () {\n return this[DESTROYED]\n }\n\n get flowing () {\n return this[FLOWING]\n }\n\n get paused () {\n return this[PAUSED]\n }\n\n [BUFFERPUSH] (chunk) {\n if (this[OBJECTMODE])\n this[BUFFERLENGTH] += 1\n else\n this[BUFFERLENGTH] += chunk.length\n this.buffer.push(chunk)\n }\n\n [BUFFERSHIFT] () {\n if (this.buffer.length) {\n if (this[OBJECTMODE])\n this[BUFFERLENGTH] -= 1\n else\n this[BUFFERLENGTH] -= this.buffer[0].length\n }\n return this.buffer.shift()\n }\n\n [FLUSH] (noDrain) {\n do {} while (this[FLUSHCHUNK](this[BUFFERSHIFT]()))\n\n if (!noDrain && !this.buffer.length && !this[EOF])\n this.emit('drain')\n }\n\n [FLUSHCHUNK] (chunk) {\n return chunk ? (this.emit('data', chunk), this.flowing) : false\n }\n\n pipe (dest, opts) {\n if (this[DESTROYED])\n return\n\n const ended = this[EMITTED_END]\n opts = opts || {}\n if (dest === proc.stdout || dest === proc.stderr)\n opts.end = false\n else\n 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)\n dest.end()\n } else {\n this.pipes.push(!opts.proxyErrors ? new Pipe(this, dest, opts)\n : new PipeProxyErrors(this, dest, opts))\n if (this[ASYNC])\n defer(() => this[RESUME]())\n else\n this[RESUME]()\n }\n\n return dest\n }\n\n unpipe (dest) {\n const p = this.pipes.find(p => p.dest === dest)\n if (p) {\n this.pipes.splice(this.pipes.indexOf(p), 1)\n p.unpipe()\n }\n }\n\n addListener (ev, fn) {\n return this.on(ev, fn)\n }\n\n on (ev, fn) {\n const ret = super.on(ev, fn)\n if (ev === 'data' && !this.pipes.length && !this.flowing)\n this[RESUME]()\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 if (this[ASYNC])\n defer(() => fn.call(this, this[EMITTED_ERROR]))\n else\n fn.call(this, this[EMITTED_ERROR])\n }\n return ret\n }\n\n get emittedEnd () {\n return this[EMITTED_END]\n }\n\n [MAYBE_EMIT_END] () {\n if (!this[EMITTING_END] &&\n !this[EMITTED_END] &&\n !this[DESTROYED] &&\n this.buffer.length === 0 &&\n this[EOF]) {\n this[EMITTING_END] = true\n this.emit('end')\n this.emit('prefinish')\n this.emit('finish')\n if (this[CLOSED])\n this.emit('close')\n this[EMITTING_END] = false\n }\n }\n\n emit (ev, data, ...extra) {\n // error and close are only events allowed after calling destroy()\n if (ev !== 'error' && ev !== 'close' && ev !== DESTROYED && this[DESTROYED])\n return\n else if (ev === 'data') {\n return !data ? false\n : this[ASYNC] ? defer(() => this[EMITDATA](data))\n : this[EMITDATA](data)\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])\n return\n const ret = super.emit('close')\n this.removeAllListeners('close')\n return ret\n } else if (ev === 'error') {\n this[EMITTED_ERROR] = data\n const ret = super.emit('error', data)\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, data, ...extra)\n this[MAYBE_EMIT_END]()\n return ret\n }\n\n [EMITDATA] (data) {\n for (const p of this.pipes) {\n if (p.dest.write(data) === false)\n this.pause()\n }\n const ret = super.emit('data', data)\n this[MAYBE_EMIT_END]()\n return ret\n }\n\n [EMITEND] () {\n if (this[EMITTED_END])\n return\n\n this[EMITTED_END] = true\n this.readable = false\n if (this[ASYNC])\n defer(() => this[EMITEND2]())\n else\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)\n }\n 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 // const all = await stream.collect()\n collect () {\n const buf = []\n if (!this[OBJECTMODE])\n 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.length\n })\n return p.then(() => buf)\n }\n\n // const data = await stream.concat()\n concat () {\n return this[OBJECTMODE]\n ? Promise.reject(new Error('cannot concat in objectMode'))\n : this.collect().then(buf =>\n this[OBJECTMODE]\n ? Promise.reject(new Error('cannot concat in objectMode'))\n : this[ENCODING] ? buf.join('') : Buffer.concat(buf, buf.dataLength))\n }\n\n // stream.promise().then(() => done, er => emitted error)\n 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 // for await (let chunk of stream)\n [ASYNCITERATOR] () {\n const next = () => {\n const res = this.read()\n if (res !== null)\n return Promise.resolve({ done: false, value: res })\n\n if (this[EOF])\n return Promise.resolve({ done: true })\n\n let resolve = null\n let reject = null\n const onerr = er => {\n this.removeListener('data', ondata)\n this.removeListener('end', onend)\n reject(er)\n }\n const ondata = value => {\n this.removeListener('error', onerr)\n this.removeListener('end', onend)\n this.pause()\n resolve({ value: value, done: !!this[EOF] })\n }\n const onend = () => {\n this.removeListener('error', onerr)\n this.removeListener('data', ondata)\n resolve({ done: true })\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 { next }\n }\n\n // for (let chunk of stream)\n [ITERATOR] () {\n const next = () => {\n const value = this.read()\n const done = value === null\n return { value, done }\n }\n return { next }\n }\n\n destroy (er) {\n if (this[DESTROYED]) {\n if (er)\n this.emit('error', er)\n else\n this.emit(DESTROYED)\n return this\n }\n\n this[DESTROYED] = true\n\n // throw away all buffered data, it's never coming out\n this.buffer.length = 0\n this[BUFFERLENGTH] = 0\n\n if (typeof this.close === 'function' && !this[CLOSED])\n this.close()\n\n if (er)\n this.emit('error', er)\n else // if no error to emit, still reject pending promises\n this.emit(DESTROYED)\n\n return this\n }\n\n static isStream (s) {\n return !!s && (s instanceof Minipass || s instanceof Stream ||\n s instanceof EE && (\n typeof s.pipe === 'function' || // readable\n (typeof s.write === 'function' && typeof s.end === 'function') // writable\n ))\n }\n}\n", "'use strict'\nconst MiniPass = require('minipass')\nconst EE = require('events').EventEmitter\nconst fs = require('fs')\n\nlet writev = fs.writev\n/* istanbul ignore next */\nif (!writev) {\n // This entire block can be removed if support for earlier than Node.js\n // 12.9.0 is not needed.\n const binding = process.binding('fs')\n const FSReqWrap = binding.FSReqWrap || binding.FSReqCallback\n\n writev = (fd, iovec, pos, cb) => {\n const done = (er, bw) => cb(er, bw, iovec)\n const req = new FSReqWrap()\n req.oncomplete = done\n binding.writeBuffers(fd, iovec, pos, req)\n }\n}\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\nclass ReadStream extends MiniPass {\n constructor (path, opt) {\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 this[_errored] = false\n this[_fd] = typeof opt.fd === 'number' ? opt.fd : null\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] = typeof opt.autoClose === 'boolean' ?\n opt.autoClose : true\n\n if (typeof this[_fd] === 'number')\n this[_read]()\n else\n this[_open]()\n }\n\n get fd () { return this[_fd] }\n get path () { return this[_path] }\n\n write () {\n throw new TypeError('this is a readable stream')\n }\n\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, fd) {\n if (er)\n this[_onerror](er)\n else {\n this[_fd] = fd\n this.emit('open', fd)\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 /* istanbul ignore if */\n if (buf.length === 0)\n return process.nextTick(() => this[_onread](null, 0, buf))\n fs.read(this[_fd], buf, 0, buf.length, null, (er, br, buf) =>\n this[_onread](er, br, buf))\n }\n }\n\n [_onread] (er, br, buf) {\n this[_reading] = false\n if (er)\n this[_onerror](er)\n else if (this[_handleChunk](br, buf))\n this[_read]()\n }\n\n [_close] () {\n if (this[_autoClose] && typeof this[_fd] === 'number') {\n const fd = this[_fd]\n this[_fd] = null\n fs.close(fd, er => er ? this.emit('error', er) : this.emit('close'))\n }\n }\n\n [_onerror] (er) {\n this[_reading] = true\n this[_close]()\n this.emit('error', er)\n }\n\n [_handleChunk] (br, buf) {\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.slice(0, br) : buf)\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 (ev, data) {\n switch (ev) {\n case 'prefinish':\n case 'finish':\n break\n\n case 'drain':\n if (typeof this[_fd] === 'number')\n this[_read]()\n break\n\n case 'error':\n if (this[_errored])\n return\n this[_errored] = true\n return super.emit(ev, data)\n\n default:\n return super.emit(ev, data)\n }\n }\n}\n\nclass 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 [_read] () {\n let threw = true\n try {\n if (!this[_reading]) {\n this[_reading] = true\n do {\n const buf = this[_makeBuf]()\n /* istanbul ignore next */\n const br = buf.length === 0 ? 0\n : fs.readSync(this[_fd], buf, 0, buf.length, null)\n if (!this[_handleChunk](br, buf))\n break\n } while (true)\n this[_reading] = false\n }\n threw = false\n } finally {\n if (threw)\n this[_close]()\n }\n }\n\n [_close] () {\n if (this[_autoClose] && typeof this[_fd] === 'number') {\n const fd = this[_fd]\n this[_fd] = null\n fs.closeSync(fd)\n this.emit('close')\n }\n }\n}\n\nclass WriteStream extends EE {\n constructor (path, opt) {\n opt = opt || {}\n super(opt)\n this.readable = false\n this.writable = true\n this[_errored] = false\n this[_writing] = false\n this[_ended] = false\n this[_needDrain] = false\n this[_queue] = []\n this[_path] = path\n this[_fd] = typeof opt.fd === 'number' ? opt.fd : null\n this[_mode] = opt.mode === undefined ? 0o666 : opt.mode\n this[_pos] = typeof opt.start === 'number' ? opt.start : null\n this[_autoClose] = typeof opt.autoClose === 'boolean' ?\n opt.autoClose : true\n\n // truncating makes no sense when writing into the middle\n const defaultFlag = this[_pos] !== null ? 'r+' : 'w'\n this[_defaultFlag] = opt.flags === undefined\n this[_flags] = this[_defaultFlag] ? defaultFlag : opt.flags\n\n if (this[_fd] === null)\n this[_open]()\n }\n\n emit (ev, data) {\n if (ev === 'error') {\n if (this[_errored])\n return\n this[_errored] = true\n }\n return super.emit(ev, data)\n }\n\n\n get fd () { return this[_fd] }\n get path () { return this[_path] }\n\n [_onerror] (er) {\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],\n (er, fd) => this[_onopen](er, fd))\n }\n\n [_onopen] (er, fd) {\n if (this[_defaultFlag] &&\n this[_flags] === 'r+' &&\n er && er.code === 'ENOENT') {\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 this[_flush]()\n }\n }\n\n end (buf, enc) {\n if (buf)\n this.write(buf, enc)\n\n this[_ended] = true\n\n // synthetic after-write logic, where drain/finish live\n if (!this[_writing] && !this[_queue].length &&\n typeof this[_fd] === 'number')\n this[_onwrite](null, 0)\n return this\n }\n\n write (buf, enc) {\n if (typeof buf === 'string')\n buf = Buffer.from(buf, enc)\n\n if (this[_ended]) {\n this.emit('error', new Error('write() after end()'))\n return false\n }\n\n if (this[_fd] === null || 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) {\n fs.write(this[_fd], buf, 0, buf.length, this[_pos], (er, bw) =>\n this[_onwrite](er, bw))\n }\n\n [_onwrite] (er, bw) {\n if (er)\n this[_onerror](er)\n else {\n if (this[_pos] !== null)\n this[_pos] += bw\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 } else if (this[_queue].length === 1)\n this[_write](this[_queue].pop())\n else {\n const iovec = this[_queue]\n this[_queue] = []\n writev(this[_fd], iovec, this[_pos],\n (er, bw) => this[_onwrite](er, bw))\n }\n }\n\n [_close] () {\n if (this[_autoClose] && typeof this[_fd] === 'number') {\n const fd = this[_fd]\n this[_fd] = null\n fs.close(fd, er => er ? this.emit('error', er) : this.emit('close'))\n }\n }\n}\n\nclass WriteStreamSync extends WriteStream {\n [_open] () {\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.code === 'ENOENT') {\n this[_flags] = 'w'\n return this[_open]()\n } else\n throw er\n }\n } else\n fd = fs.openSync(this[_path], this[_flags], this[_mode])\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] = null\n fs.closeSync(fd)\n this.emit('close')\n }\n }\n\n [_write] (buf) {\n // throw the original, but try to close if it fails\n let threw = true\n try {\n this[_onwrite](null,\n fs.writeSync(this[_fd], buf, 0, buf.length, this[_pos]))\n threw = false\n } finally {\n if (threw)\n try { this[_close]() } catch (_) {}\n }\n }\n}\n\nexports.ReadStream = ReadStream\nexports.ReadStreamSync = ReadStreamSync\n\nexports.WriteStream = WriteStream\nexports.WriteStreamSync = WriteStreamSync\n", "'use strict'\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\nconst warner = require('./warn-mixin.js')\nconst Header = require('./header.js')\nconst EE = require('events')\nconst Yallist = require('yallist')\nconst maxMetaEntrySize = 1024 * 1024\nconst Entry = require('./read-entry.js')\nconst Pax = require('./pax.js')\nconst zlib = require('minizlib')\nconst { nextTick } = require('process')\n\nconst gzipHeader = Buffer.from([0x1f, 0x8b])\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\nmodule.exports = warner(class Parser extends EE {\n constructor (opt) {\n opt = opt || {}\n super(opt)\n\n this.file = opt.file || ''\n\n // set to boolean false when an entry starts. 1024 bytes of \\0\n // is technically a valid tarball, albeit a boring one.\n this[SAW_VALID_ENTRY] = null\n\n // these BADARCHIVE errors can't be detected early. listen on DONE.\n this.on(DONE, _ => {\n if (this[STATE] === 'begin' || this[SAW_VALID_ENTRY] === false) {\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\n // have to set this so that streams are ok piping into it\n this.writable = true\n this.readable = false\n\n this[QUEUE] = new Yallist()\n this[BUFFER] = null\n this[READENTRY] = null\n this[WRITEENTRY] = null\n this[STATE] = 'begin'\n this[META] = ''\n this[EX] = null\n this[GEX] = null\n this[ENDED] = false\n this[UNZIP] = null\n this[ABORTED] = false\n this[SAW_NULL_BLOCK] = false\n this[SAW_EOF] = false\n\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 [CONSUMEHEADER] (chunk, position) {\n if (this[SAW_VALID_ENTRY] === null) {\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)\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', { header })\n } else if (!/^(Symbolic)?Link$/.test(type) && header.linkpath) {\n this.warn('TAR_ENTRY_INVALID', 'linkpath forbidden', { header })\n } else {\n const entry = this[WRITEENTRY] = new Entry(header, this[EX], this[GEX])\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] = null\n entry.ignore = 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 nextTick(() => this.emit('close'))\n }\n\n [PROCESSENTRY] (entry) {\n let go = true\n\n if (!entry) {\n this[READENTRY] = null\n go = false\n } else if (Array.isArray(entry)) {\n this.emit.apply(this, entry)\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, position) {\n // write up to but no more than writeEntry.blockRemain\n const entry = this[WRITEENTRY]\n const br = entry.blockRemain\n const c = (br >= chunk.length && position === 0) ? chunk\n : chunk.slice(position, position + br)\n\n entry.write(c)\n\n if (!entry.blockRemain) {\n this[STATE] = 'header'\n this[WRITEENTRY] = null\n entry.end()\n }\n\n return c.length\n }\n\n [CONSUMEMETA] (chunk, position) {\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]) {\n this[EMITMETA](entry)\n }\n\n return ret\n }\n\n [EMIT] (ev, data, extra) {\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) {\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 this[EX] = this[EX] || Object.create(null)\n this[EX].path = this[META].replace(/\\0.*/, '')\n break\n\n case 'NextFileHasLongLinkpath':\n this[EX] = this[EX] || Object.create(null)\n this[EX].linkpath = this[META].replace(/\\0.*/, '')\n break\n\n /* istanbul ignore next */\n default: throw new Error('unknown meta: ' + entry.type)\n }\n }\n\n abort (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 (chunk) {\n if (this[ABORTED]) {\n return\n }\n\n // first write, might be gzipped\n if (this[UNZIP] === null && chunk) {\n if (this[BUFFER]) {\n chunk = Buffer.concat([this[BUFFER], chunk])\n this[BUFFER] = null\n }\n if (chunk.length < gzipHeader.length) {\n this[BUFFER] = chunk\n return true\n }\n for (let i = 0; this[UNZIP] === null && i < gzipHeader.length; i++) {\n if (chunk[i] !== gzipHeader[i]) {\n this[UNZIP] = false\n }\n }\n if (this[UNZIP] === null) {\n const ended = this[ENDED]\n this[ENDED] = false\n this[UNZIP] = new zlib.Unzip()\n this[UNZIP].on('data', chunk => this[CONSUMECHUNK](chunk))\n this[UNZIP].on('error', er => this.abort(er))\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 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 return ret\n }\n\n [BUFFERCONCAT] (c) {\n if (c && !this[ABORTED]) {\n this[BUFFER] = this[BUFFER] ? Buffer.concat([this[BUFFER], c]) : c\n }\n }\n\n [MAYBEEND] () {\n if (this[ENDED] &&\n !this[EMITTEDEND] &&\n !this[ABORTED] &&\n !this[CONSUMING]) {\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('TAR_BAD_ARCHIVE', `Truncated input (needed ${\n entry.blockRemain} more bytes, only ${have} available)`, { entry })\n if (this[BUFFER]) {\n entry.write(this[BUFFER])\n }\n entry.end()\n }\n this[EMIT](DONE)\n }\n }\n\n [CONSUMECHUNK] (chunk) {\n if (this[CONSUMING]) {\n this[BUFFERCONCAT](chunk)\n } else if (!chunk && !this[BUFFER]) {\n this[MAYBEEND]()\n } else {\n this[CONSUMING] = true\n if (this[BUFFER]) {\n this[BUFFERCONCAT](chunk)\n const c = this[BUFFER]\n this[BUFFER] = null\n this[CONSUMECHUNKSUB](c)\n } else {\n this[CONSUMECHUNKSUB](chunk)\n }\n\n while (this[BUFFER] &&\n this[BUFFER].length >= 512 &&\n !this[ABORTED] &&\n !this[SAW_EOF]) {\n const c = this[BUFFER]\n this[BUFFER] = null\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) {\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 (position + 512 <= length && !this[ABORTED] && !this[SAW_EOF]) {\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 /* istanbul ignore next */\n default:\n throw new Error('invalid state: ' + this[STATE])\n }\n }\n\n if (position < length) {\n if (this[BUFFER]) {\n this[BUFFER] = Buffer.concat([chunk.slice(position), this[BUFFER]])\n } else {\n this[BUFFER] = chunk.slice(position)\n }\n }\n }\n\n end (chunk) {\n if (!this[ABORTED]) {\n if (this[UNZIP]) {\n this[UNZIP].end(chunk)\n } else {\n this[ENDED] = true\n this.write(chunk)\n }\n }\n }\n})\n", "'use strict'\n\n// XXX: This shares a lot in common with extract.js\n// maybe some DRY opportunity here?\n\n// tar -t\nconst hlo = require('./high-level-opt.js')\nconst Parser = require('./parse.js')\nconst fs = require('fs')\nconst fsm = require('fs-minipass')\nconst path = require('path')\nconst stripSlash = require('./strip-trailing-slashes.js')\n\nmodule.exports = (opt_, files, cb) => {\n if (typeof opt_ === 'function') {\n cb = opt_, files = null, opt_ = {}\n } else if (Array.isArray(opt_)) {\n files = opt_, opt_ = {}\n }\n\n if (typeof files === 'function') {\n cb = files, files = null\n }\n\n if (!files) {\n files = []\n } else {\n files = Array.from(files)\n }\n\n const opt = hlo(opt_)\n\n if (opt.sync && typeof cb === 'function') {\n throw new TypeError('callback not supported for sync tar functions')\n }\n\n if (!opt.file && typeof cb === 'function') {\n throw new TypeError('callback only supported with file option')\n }\n\n if (files.length) {\n filesFilter(opt, files)\n }\n\n if (!opt.noResume) {\n onentryFunction(opt)\n }\n\n return opt.file && opt.sync ? listFileSync(opt)\n : opt.file ? listFile(opt, cb)\n : list(opt)\n}\n\nconst onentryFunction = opt => {\n const onentry = opt.onentry\n opt.onentry = onentry ? e => {\n onentry(e)\n e.resume()\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\nconst filesFilter = (opt, files) => {\n const map = new Map(files.map(f => [stripSlash(f), true]))\n const filter = opt.filter\n\n const mapHas = (file, r) => {\n const root = r || path.parse(file).root || '.'\n const ret = file === root ? false\n : map.has(file) ? map.get(file)\n : mapHas(path.dirname(file), root)\n\n map.set(file, ret)\n return ret\n }\n\n opt.filter = filter\n ? (file, entry) => filter(file, entry) && mapHas(stripSlash(file))\n : file => mapHas(stripSlash(file))\n}\n\nconst listFileSync = opt => {\n const p = list(opt)\n const file = opt.file\n let threw = true\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.slice(0, bytesRead))\n }\n p.end()\n }\n threw = false\n } finally {\n if (threw && fd) {\n try {\n fs.closeSync(fd)\n } catch (er) {}\n }\n }\n}\n\nconst listFile = (opt, cb) => {\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 cb ? p.then(cb, cb) : p\n}\n\nconst list = opt => new Parser(opt)\n", "'use strict'\n\n// tar -c\nconst hlo = require('./high-level-opt.js')\n\nconst Pack = require('./pack.js')\nconst fsm = require('fs-minipass')\nconst t = require('./list.js')\nconst path = require('path')\n\nmodule.exports = (opt_, files, cb) => {\n if (typeof files === 'function') {\n cb = files\n }\n\n if (Array.isArray(opt_)) {\n files = opt_, opt_ = {}\n }\n\n if (!files || !Array.isArray(files) || !files.length) {\n throw new TypeError('no files or directories specified')\n }\n\n files = Array.from(files)\n\n const opt = hlo(opt_)\n\n if (opt.sync && typeof cb === 'function') {\n throw new TypeError('callback not supported for sync tar functions')\n }\n\n if (!opt.file && typeof cb === 'function') {\n throw new TypeError('callback only supported with file option')\n }\n\n return opt.file && opt.sync ? createFileSync(opt, files)\n : opt.file ? createFile(opt, files, cb)\n : opt.sync ? createSync(opt, files)\n : create(opt, files)\n}\n\nconst createFileSync = (opt, files) => {\n const p = new Pack.Sync(opt)\n const stream = new fsm.WriteStreamSync(opt.file, {\n mode: opt.mode || 0o666,\n })\n p.pipe(stream)\n addFilesSync(p, files)\n}\n\nconst createFile = (opt, files, cb) => {\n const p = new Pack(opt)\n const stream = new fsm.WriteStream(opt.file, {\n mode: opt.mode || 0o666,\n })\n p.pipe(stream)\n\n const promise = new Promise((res, rej) => {\n stream.on('error', rej)\n stream.on('close', res)\n p.on('error', rej)\n })\n\n addFilesAsync(p, files)\n\n return cb ? promise.then(cb, cb) : promise\n}\n\nconst addFilesSync = (p, files) => {\n files.forEach(file => {\n if (file.charAt(0) === '@') {\n t({\n file: path.resolve(p.cwd, file.slice(1)),\n sync: true,\n noResume: true,\n onentry: entry => p.add(entry),\n })\n } else {\n p.add(file)\n }\n })\n p.end()\n}\n\nconst addFilesAsync = (p, files) => {\n while (files.length) {\n const file = files.shift()\n if (file.charAt(0) === '@') {\n return t({\n file: path.resolve(p.cwd, file.slice(1)),\n noResume: true,\n onentry: entry => p.add(entry),\n }).then(_ => addFilesAsync(p, files))\n } else {\n p.add(file)\n }\n }\n p.end()\n}\n\nconst createSync = (opt, files) => {\n const p = new Pack.Sync(opt)\n addFilesSync(p, files)\n return p\n}\n\nconst create = (opt, files) => {\n const p = new Pack(opt)\n addFilesAsync(p, files)\n return p\n}\n", "'use strict'\n\n// tar -r\nconst hlo = require('./high-level-opt.js')\nconst Pack = require('./pack.js')\nconst fs = require('fs')\nconst fsm = require('fs-minipass')\nconst t = require('./list.js')\nconst path = require('path')\n\n// starting at the head of the file, read a Header\n// If the checksum is invalid, that's our position to start writing\n// If it is, jump forward by the specified size (round up to 512)\n// and try again.\n// Write the new Pack stream starting there.\n\nconst Header = require('./header.js')\n\nmodule.exports = (opt_, files, cb) => {\n const opt = hlo(opt_)\n\n if (!opt.file) {\n throw new TypeError('file is required')\n }\n\n if (opt.gzip) {\n throw new TypeError('cannot append to compressed archives')\n }\n\n if (!files || !Array.isArray(files) || !files.length) {\n throw new TypeError('no files or directories specified')\n }\n\n files = Array.from(files)\n\n return opt.sync ? replaceSync(opt, files)\n : replace(opt, files, cb)\n}\n\nconst replaceSync = (opt, files) => {\n const p = new Pack.Sync(opt)\n\n let threw = true\n let fd\n let position\n\n try {\n try {\n fd = fs.openSync(opt.file, 'r+')\n } catch (er) {\n if (er.code === 'ENOENT') {\n fd = fs.openSync(opt.file, 'w+')\n } else {\n throw er\n }\n }\n\n const st = fs.fstatSync(fd)\n const headBuf = Buffer.alloc(512)\n\n POSITION: for (position = 0; position < st.size; position += 512) {\n for (let bufPos = 0, bytes = 0; bufPos < 512; bufPos += bytes) {\n bytes = fs.readSync(\n fd, headBuf, bufPos, headBuf.length - bufPos, position + bufPos\n )\n\n if (position === 0 && headBuf[0] === 0x1f && headBuf[1] === 0x8b) {\n throw new Error('cannot append to compressed archives')\n }\n\n if (!bytes) {\n break POSITION\n }\n }\n\n const h = new Header(headBuf)\n if (!h.cksumValid) {\n break\n }\n const entryBlockSize = 512 * Math.ceil(h.size / 512)\n if (position + entryBlockSize + 512 > st.size) {\n break\n }\n // the 512 for the header we just parsed will be added as well\n // also jump ahead all the blocks for the body\n position += entryBlockSize\n if (opt.mtimeCache) {\n opt.mtimeCache.set(h.path, h.mtime)\n }\n }\n threw = false\n\n streamSync(opt, p, position, fd, files)\n } finally {\n if (threw) {\n try {\n fs.closeSync(fd)\n } catch (er) {}\n }\n }\n}\n\nconst streamSync = (opt, p, position, fd, files) => {\n const stream = new fsm.WriteStreamSync(opt.file, {\n fd: fd,\n start: position,\n })\n p.pipe(stream)\n addFilesSync(p, files)\n}\n\nconst replace = (opt, files, cb) => {\n files = Array.from(files)\n const p = new Pack(opt)\n\n const getPos = (fd, size, cb_) => {\n const cb = (er, pos) => {\n if (er) {\n fs.close(fd, _ => cb_(er))\n } else {\n cb_(null, pos)\n }\n }\n\n let position = 0\n if (size === 0) {\n return cb(null, 0)\n }\n\n let bufPos = 0\n const headBuf = Buffer.alloc(512)\n const onread = (er, bytes) => {\n if (er) {\n return cb(er)\n }\n bufPos += bytes\n if (bufPos < 512 && bytes) {\n return fs.read(\n fd, headBuf, bufPos, headBuf.length - bufPos,\n position + bufPos, onread\n )\n }\n\n if (position === 0 && headBuf[0] === 0x1f && headBuf[1] === 0x8b) {\n return cb(new Error('cannot append to compressed archives'))\n }\n\n // truncated header\n if (bufPos < 512) {\n return cb(null, position)\n }\n\n const h = new Header(headBuf)\n if (!h.cksumValid) {\n return cb(null, position)\n }\n\n const entryBlockSize = 512 * Math.ceil(h.size / 512)\n if (position + entryBlockSize + 512 > size) {\n return cb(null, position)\n }\n\n position += entryBlockSize + 512\n if (position >= size) {\n return cb(null, position)\n }\n\n if (opt.mtimeCache) {\n opt.mtimeCache.set(h.path, h.mtime)\n }\n bufPos = 0\n fs.read(fd, headBuf, 0, 512, position, onread)\n }\n fs.read(fd, headBuf, 0, 512, position, onread)\n }\n\n const promise = new Promise((resolve, reject) => {\n p.on('error', reject)\n let flag = 'r+'\n const onopen = (er, fd) => {\n if (er && er.code === 'ENOENT' && flag === 'r+') {\n flag = 'w+'\n return fs.open(opt.file, flag, onopen)\n }\n\n if (er) {\n return reject(er)\n }\n\n fs.fstat(fd, (er, st) => {\n if (er) {\n return fs.close(fd, () => reject(er))\n }\n\n getPos(fd, st.size, (er, position) => {\n if (er) {\n return reject(er)\n }\n const stream = new fsm.WriteStream(opt.file, {\n fd: fd,\n start: position,\n })\n p.pipe(stream)\n stream.on('error', reject)\n stream.on('close', resolve)\n addFilesAsync(p, files)\n })\n })\n }\n fs.open(opt.file, flag, onopen)\n })\n\n return cb ? promise.then(cb, cb) : promise\n}\n\nconst addFilesSync = (p, files) => {\n files.forEach(file => {\n if (file.charAt(0) === '@') {\n t({\n file: path.resolve(p.cwd, file.slice(1)),\n sync: true,\n noResume: true,\n onentry: entry => p.add(entry),\n })\n } else {\n p.add(file)\n }\n })\n p.end()\n}\n\nconst addFilesAsync = (p, files) => {\n while (files.length) {\n const file = files.shift()\n if (file.charAt(0) === '@') {\n return t({\n file: path.resolve(p.cwd, file.slice(1)),\n noResume: true,\n onentry: entry => p.add(entry),\n }).then(_ => addFilesAsync(p, files))\n } else {\n p.add(file)\n }\n }\n p.end()\n}\n", "'use strict'\n\n// tar -u\n\nconst hlo = require('./high-level-opt.js')\nconst r = require('./replace.js')\n// just call tar.r with the filter and mtimeCache\n\nmodule.exports = (opt_, files, cb) => {\n const opt = hlo(opt_)\n\n if (!opt.file) {\n throw new TypeError('file is required')\n }\n\n if (opt.gzip) {\n throw new TypeError('cannot append to compressed archives')\n }\n\n if (!files || !Array.isArray(files) || !files.length) {\n throw new TypeError('no files or directories specified')\n }\n\n files = Array.from(files)\n\n mtimeFilter(opt)\n return r(opt, files, cb)\n}\n\nconst mtimeFilter = opt => {\n const filter = opt.filter\n\n if (!opt.mtimeCache) {\n opt.mtimeCache = new Map()\n }\n\n opt.filter = filter ? (path, stat) =>\n filter(path, stat) && !(opt.mtimeCache.get(path) > stat.mtime)\n : (path, stat) => !(opt.mtimeCache.get(path) > stat.mtime)\n}\n", "const { promisify } = require('util')\nconst fs = require('fs')\nconst optsArg = opts => {\n if (!opts)\n opts = { mode: 0o777, fs }\n else if (typeof opts === 'object')\n opts = { mode: 0o777, fs, ...opts }\n else if (typeof opts === 'number')\n opts = { mode: opts, fs }\n else if (typeof opts === 'string')\n opts = { mode: parseInt(opts, 8), fs }\n else\n throw new TypeError('invalid options argument')\n\n opts.mkdir = opts.mkdir || opts.fs.mkdir || fs.mkdir\n opts.mkdirAsync = promisify(opts.mkdir)\n opts.stat = opts.stat || opts.fs.stat || fs.stat\n opts.statAsync = promisify(opts.stat)\n opts.statSync = opts.statSync || opts.fs.statSync || fs.statSync\n opts.mkdirSync = opts.mkdirSync || opts.fs.mkdirSync || fs.mkdirSync\n return opts\n}\nmodule.exports = optsArg\n", "const platform = process.env.__TESTING_MKDIRP_PLATFORM__ || process.platform\nconst { resolve, parse } = require('path')\nconst pathArg = path => {\n if (/\\0/.test(path)) {\n // simulate same failure that node raises\n throw Object.assign(\n new TypeError('path must be a string without null bytes'),\n {\n path,\n code: 'ERR_INVALID_ARG_VALUE',\n }\n )\n }\n\n path = resolve(path)\n if (platform === 'win32') {\n const badWinChars = /[*|\"<>?:]/\n const {root} = parse(path)\n if (badWinChars.test(path.substr(root.length))) {\n throw Object.assign(new Error('Illegal characters in path.'), {\n path,\n code: 'EINVAL',\n })\n }\n }\n\n return path\n}\nmodule.exports = pathArg\n", "const {dirname} = require('path')\n\nconst findMade = (opts, parent, path = undefined) => {\n // we never want the 'made' return value to be a root directory\n if (path === parent)\n return Promise.resolve()\n\n return opts.statAsync(parent).then(\n st => st.isDirectory() ? path : undefined, // will fail later\n er => er.code === 'ENOENT'\n ? findMade(opts, dirname(parent), parent)\n : undefined\n )\n}\n\nconst findMadeSync = (opts, parent, path = undefined) => {\n if (path === parent)\n return undefined\n\n try {\n return opts.statSync(parent).isDirectory() ? path : undefined\n } catch (er) {\n return er.code === 'ENOENT'\n ? findMadeSync(opts, dirname(parent), parent)\n : undefined\n }\n}\n\nmodule.exports = {findMade, findMadeSync}\n", "const {dirname} = require('path')\n\nconst mkdirpManual = (path, opts, made) => {\n opts.recursive = false\n const parent = dirname(path)\n if (parent === path) {\n return opts.mkdirAsync(path, opts).catch(er => {\n // swallowed by recursive implementation on posix systems\n // any other error is a failure\n if (er.code !== 'EISDIR')\n throw er\n })\n }\n\n return opts.mkdirAsync(path, opts).then(() => made || path, er => {\n if (er.code === 'ENOENT')\n return mkdirpManual(parent, opts)\n .then(made => mkdirpManual(path, opts, made))\n if (er.code !== 'EEXIST' && er.code !== 'EROFS')\n throw er\n return opts.statAsync(path).then(st => {\n if (st.isDirectory())\n return made\n else\n throw er\n }, () => { throw er })\n })\n}\n\nconst mkdirpManualSync = (path, opts, made) => {\n const parent = dirname(path)\n opts.recursive = false\n\n if (parent === path) {\n try {\n return opts.mkdirSync(path, opts)\n } catch (er) {\n // swallowed by recursive implementation on posix systems\n // any other error is a failure\n if (er.code !== 'EISDIR')\n throw er\n else\n return\n }\n }\n\n try {\n opts.mkdirSync(path, opts)\n return made || path\n } catch (er) {\n if (er.code === 'ENOENT')\n return mkdirpManualSync(path, opts, mkdirpManualSync(parent, opts, made))\n if (er.code !== 'EEXIST' && er.code !== 'EROFS')\n throw er\n try {\n if (!opts.statSync(path).isDirectory())\n throw er\n } catch (_) {\n throw er\n }\n }\n}\n\nmodule.exports = {mkdirpManual, mkdirpManualSync}\n", "const {dirname} = require('path')\nconst {findMade, findMadeSync} = require('./find-made.js')\nconst {mkdirpManual, mkdirpManualSync} = require('./mkdirp-manual.js')\n\nconst mkdirpNative = (path, opts) => {\n opts.recursive = true\n const parent = dirname(path)\n if (parent === path)\n return opts.mkdirAsync(path, opts)\n\n return findMade(opts, path).then(made =>\n opts.mkdirAsync(path, opts).then(() => made)\n .catch(er => {\n if (er.code === 'ENOENT')\n return mkdirpManual(path, opts)\n else\n throw er\n }))\n}\n\nconst mkdirpNativeSync = (path, opts) => {\n opts.recursive = true\n const parent = dirname(path)\n if (parent === path)\n return opts.mkdirSync(path, opts)\n\n const made = findMadeSync(opts, path)\n try {\n opts.mkdirSync(path, opts)\n return made\n } catch (er) {\n if (er.code === 'ENOENT')\n return mkdirpManualSync(path, opts)\n else\n throw er\n }\n}\n\nmodule.exports = {mkdirpNative, mkdirpNativeSync}\n", "const fs = require('fs')\n\nconst version = process.env.__TESTING_MKDIRP_NODE_VERSION__ || process.version\nconst versArr = version.replace(/^v/, '').split('.')\nconst hasNative = +versArr[0] > 10 || +versArr[0] === 10 && +versArr[1] >= 12\n\nconst useNative = !hasNative ? () => false : opts => opts.mkdir === fs.mkdir\nconst useNativeSync = !hasNative ? () => false : opts => opts.mkdirSync === fs.mkdirSync\n\nmodule.exports = {useNative, useNativeSync}\n", "const optsArg = require('./lib/opts-arg.js')\nconst pathArg = require('./lib/path-arg.js')\n\nconst {mkdirpNative, mkdirpNativeSync} = require('./lib/mkdirp-native.js')\nconst {mkdirpManual, mkdirpManualSync} = require('./lib/mkdirp-manual.js')\nconst {useNative, useNativeSync} = require('./lib/use-native.js')\n\n\nconst mkdirp = (path, opts) => {\n path = pathArg(path)\n opts = optsArg(opts)\n return useNative(opts)\n ? mkdirpNative(path, opts)\n : mkdirpManual(path, opts)\n}\n\nconst mkdirpSync = (path, opts) => {\n path = pathArg(path)\n opts = optsArg(opts)\n return useNativeSync(opts)\n ? mkdirpNativeSync(path, opts)\n : mkdirpManualSync(path, opts)\n}\n\nmkdirp.sync = mkdirpSync\nmkdirp.native = (path, opts) => mkdirpNative(pathArg(path), optsArg(opts))\nmkdirp.manual = (path, opts) => mkdirpManual(pathArg(path), optsArg(opts))\nmkdirp.nativeSync = (path, opts) => mkdirpNativeSync(pathArg(path), optsArg(opts))\nmkdirp.manualSync = (path, opts) => mkdirpManualSync(pathArg(path), optsArg(opts))\n\nmodule.exports = mkdirp\n", "'use strict'\nconst fs = require('fs')\nconst path = require('path')\n\n/* istanbul ignore next */\nconst LCHOWN = fs.lchown ? 'lchown' : 'chown'\n/* istanbul ignore next */\nconst LCHOWNSYNC = fs.lchownSync ? 'lchownSync' : 'chownSync'\n\n/* istanbul ignore next */\nconst needEISDIRHandled = fs.lchown &&\n !process.version.match(/v1[1-9]+\\./) &&\n !process.version.match(/v10\\.[6-9]/)\n\nconst lchownSync = (path, uid, gid) => {\n try {\n return fs[LCHOWNSYNC](path, uid, gid)\n } catch (er) {\n if (er.code !== 'ENOENT')\n throw er\n }\n}\n\n/* istanbul ignore next */\nconst chownSync = (path, uid, gid) => {\n try {\n return fs.chownSync(path, uid, gid)\n } catch (er) {\n if (er.code !== 'ENOENT')\n throw er\n }\n}\n\n/* istanbul ignore next */\nconst handleEISDIR =\n needEISDIRHandled ? (path, uid, gid, cb) => er => {\n // Node prior to v10 had a very questionable implementation of\n // fs.lchown, which would always try to call fs.open on a directory\n // Fall back to fs.chown in those cases.\n if (!er || er.code !== 'EISDIR')\n cb(er)\n else\n fs.chown(path, uid, gid, cb)\n }\n : (_, __, ___, cb) => cb\n\n/* istanbul ignore next */\nconst handleEISDirSync =\n needEISDIRHandled ? (path, uid, gid) => {\n try {\n return lchownSync(path, uid, gid)\n } catch (er) {\n if (er.code !== 'EISDIR')\n throw er\n chownSync(path, uid, gid)\n }\n }\n : (path, uid, gid) => lchownSync(path, uid, gid)\n\n// fs.readdir could only accept an options object as of node v6\nconst nodeVersion = process.version\nlet readdir = (path, options, cb) => fs.readdir(path, options, cb)\nlet readdirSync = (path, options) => fs.readdirSync(path, options)\n/* istanbul ignore next */\nif (/^v4\\./.test(nodeVersion))\n readdir = (path, options, cb) => fs.readdir(path, cb)\n\nconst chown = (cpath, uid, gid, cb) => {\n fs[LCHOWN](cpath, uid, gid, handleEISDIR(cpath, uid, gid, er => {\n // Skip ENOENT error\n cb(er && er.code !== 'ENOENT' ? er : null)\n }))\n}\n\nconst chownrKid = (p, child, uid, gid, cb) => {\n if (typeof child === 'string')\n return fs.lstat(path.resolve(p, child), (er, stats) => {\n // Skip ENOENT error\n if (er)\n return cb(er.code !== 'ENOENT' ? er : null)\n stats.name = child\n chownrKid(p, stats, uid, gid, cb)\n })\n\n if (child.isDirectory()) {\n chownr(path.resolve(p, child.name), uid, gid, er => {\n if (er)\n return cb(er)\n const cpath = path.resolve(p, child.name)\n chown(cpath, uid, gid, cb)\n })\n } else {\n const cpath = path.resolve(p, child.name)\n chown(cpath, uid, gid, cb)\n }\n}\n\n\nconst chownr = (p, uid, gid, cb) => {\n readdir(p, { withFileTypes: true }, (er, children) => {\n // any error other than ENOTDIR or ENOTSUP means it's not readable,\n // or doesn't exist. give up.\n if (er) {\n if (er.code === 'ENOENT')\n return cb()\n else if (er.code !== 'ENOTDIR' && er.code !== 'ENOTSUP')\n return cb(er)\n }\n if (er || !children.length)\n return chown(p, uid, gid, cb)\n\n let len = children.length\n let errState = null\n const then = er => {\n if (errState)\n return\n if (er)\n return cb(errState = er)\n if (-- len === 0)\n return chown(p, uid, gid, cb)\n }\n\n children.forEach(child => chownrKid(p, child, uid, gid, then))\n })\n}\n\nconst chownrKidSync = (p, child, uid, gid) => {\n if (typeof child === 'string') {\n try {\n const stats = fs.lstatSync(path.resolve(p, child))\n stats.name = child\n child = stats\n } catch (er) {\n if (er.code === 'ENOENT')\n return\n else\n throw er\n }\n }\n\n if (child.isDirectory())\n chownrSync(path.resolve(p, child.name), uid, gid)\n\n handleEISDirSync(path.resolve(p, child.name), uid, gid)\n}\n\nconst chownrSync = (p, uid, gid) => {\n let children\n try {\n children = readdirSync(p, { withFileTypes: true })\n } catch (er) {\n if (er.code === 'ENOENT')\n return\n else if (er.code === 'ENOTDIR' || er.code === 'ENOTSUP')\n return handleEISDirSync(p, uid, gid)\n else\n throw er\n }\n\n if (children && children.length)\n children.forEach(child => chownrKidSync(p, child, uid, gid))\n\n return handleEISDirSync(p, uid, gid)\n}\n\nmodule.exports = chownr\nchownr.sync = chownrSync\n", "'use strict'\n// wrapper around mkdirp for tar's needs.\n\n// TODO: This should probably be a class, not functionally\n// passing around state in a gazillion args.\n\nconst mkdirp = require('mkdirp')\nconst fs = require('fs')\nconst path = require('path')\nconst chownr = require('chownr')\nconst normPath = require('./normalize-windows-path.js')\n\nclass SymlinkError extends Error {\n constructor (symlink, path) {\n super('Cannot extract through symbolic link')\n this.path = path\n this.symlink = symlink\n }\n\n get name () {\n return 'SylinkError'\n }\n}\n\nclass CwdError extends Error {\n constructor (path, code) {\n super(code + ': Cannot cd into \\'' + path + '\\'')\n this.path = path\n this.code = code\n }\n\n get name () {\n return 'CwdError'\n }\n}\n\nconst cGet = (cache, key) => cache.get(normPath(key))\nconst cSet = (cache, key, val) => cache.set(normPath(key), val)\n\nconst checkCwd = (dir, cb) => {\n fs.stat(dir, (er, st) => {\n if (er || !st.isDirectory()) {\n er = new CwdError(dir, er && er.code || 'ENOTDIR')\n }\n cb(er)\n })\n}\n\nmodule.exports = (dir, opt, cb) => {\n dir = normPath(dir)\n\n // if there's any overlap between mask and mode,\n // then we'll need an explicit chmod\n const umask = opt.umask\n const mode = opt.mode | 0o0700\n const needChmod = (mode & umask) !== 0\n\n const uid = opt.uid\n const gid = opt.gid\n const doChown = typeof uid === 'number' &&\n typeof gid === 'number' &&\n (uid !== opt.processUid || gid !== opt.processGid)\n\n const preserve = opt.preserve\n const unlink = opt.unlink\n const cache = opt.cache\n const cwd = normPath(opt.cwd)\n\n const done = (er, created) => {\n if (er) {\n cb(er)\n } else {\n cSet(cache, dir, true)\n if (created && doChown) {\n chownr(created, uid, gid, er => done(er))\n } else if (needChmod) {\n fs.chmod(dir, mode, cb)\n } else {\n cb()\n }\n }\n }\n\n if (cache && cGet(cache, dir) === true) {\n return done()\n }\n\n if (dir === cwd) {\n return checkCwd(dir, done)\n }\n\n if (preserve) {\n return mkdirp(dir, { mode }).then(made => done(null, made), done)\n }\n\n const sub = normPath(path.relative(cwd, dir))\n const parts = sub.split('/')\n mkdir_(cwd, parts, mode, cache, unlink, cwd, null, done)\n}\n\nconst mkdir_ = (base, parts, mode, cache, unlink, cwd, created, cb) => {\n if (!parts.length) {\n return cb(null, created)\n }\n const p = parts.shift()\n const part = normPath(path.resolve(base + '/' + p))\n if (cGet(cache, part)) {\n return mkdir_(part, parts, mode, cache, unlink, cwd, created, cb)\n }\n fs.mkdir(part, mode, onmkdir(part, parts, mode, cache, unlink, cwd, created, cb))\n}\n\nconst onmkdir = (part, parts, mode, cache, unlink, cwd, created, cb) => er => {\n if (er) {\n fs.lstat(part, (statEr, st) => {\n if (statEr) {\n statEr.path = statEr.path && normPath(statEr.path)\n cb(statEr)\n } else if (st.isDirectory()) {\n mkdir_(part, parts, mode, cache, unlink, cwd, created, cb)\n } else if (unlink) {\n fs.unlink(part, er => {\n if (er) {\n return cb(er)\n }\n fs.mkdir(part, mode, onmkdir(part, parts, mode, cache, unlink, cwd, created, cb))\n })\n } else if (st.isSymbolicLink()) {\n return cb(new SymlinkError(part, part + '/' + parts.join('/')))\n } else {\n cb(er)\n }\n })\n } else {\n created = created || part\n mkdir_(part, parts, mode, cache, unlink, cwd, created, cb)\n }\n}\n\nconst checkCwdSync = dir => {\n let ok = false\n let code = 'ENOTDIR'\n try {\n ok = fs.statSync(dir).isDirectory()\n } catch (er) {\n code = er.code\n } finally {\n if (!ok) {\n throw new CwdError(dir, code)\n }\n }\n}\n\nmodule.exports.sync = (dir, opt) => {\n dir = normPath(dir)\n // if there's any overlap between mask and mode,\n // then we'll need an explicit chmod\n const umask = opt.umask\n const mode = opt.mode | 0o0700\n const needChmod = (mode & umask) !== 0\n\n const uid = opt.uid\n const gid = opt.gid\n const doChown = typeof uid === 'number' &&\n typeof gid === 'number' &&\n (uid !== opt.processUid || gid !== opt.processGid)\n\n const preserve = opt.preserve\n const unlink = opt.unlink\n const cache = opt.cache\n const cwd = normPath(opt.cwd)\n\n const done = (created) => {\n cSet(cache, dir, true)\n if (created && doChown) {\n chownr.sync(created, uid, gid)\n }\n if (needChmod) {\n fs.chmodSync(dir, mode)\n }\n }\n\n if (cache && cGet(cache, dir) === true) {\n return done()\n }\n\n if (dir === cwd) {\n checkCwdSync(cwd)\n return done()\n }\n\n if (preserve) {\n return done(mkdirp.sync(dir, mode))\n }\n\n const sub = normPath(path.relative(cwd, dir))\n const parts = sub.split('/')\n let created = null\n for (let p = parts.shift(), part = cwd;\n p && (part += '/' + p);\n p = parts.shift()) {\n part = normPath(path.resolve(part))\n if (cGet(cache, part)) {\n continue\n }\n\n try {\n fs.mkdirSync(part, mode)\n created = created || part\n cSet(cache, part, true)\n } catch (er) {\n const st = fs.lstatSync(part)\n if (st.isDirectory()) {\n cSet(cache, part, true)\n continue\n } else if (unlink) {\n fs.unlinkSync(part)\n fs.mkdirSync(part, mode)\n created = created || part\n cSet(cache, part, true)\n continue\n } else if (st.isSymbolicLink()) {\n return new SymlinkError(part, part + '/' + parts.join('/'))\n }\n }\n }\n\n return done(created)\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.\nconst normalizeCache = Object.create(null)\nconst { hasOwnProperty } = Object.prototype\nmodule.exports = s => {\n if (!hasOwnProperty.call(normalizeCache, s)) {\n normalizeCache[s] = s.normalize('NFKD')\n }\n return normalizeCache[s]\n}\n", "// A path exclusive reservation system\n// reserve([list, of, paths], fn)\n// When the fn is first in line for all its paths, it\n// is called with a cb that clears the reservation.\n//\n// Used by async unpack to avoid clobbering paths in use,\n// while still allowing maximal safe parallelization.\n\nconst assert = require('assert')\nconst normalize = require('./normalize-unicode.js')\nconst stripSlashes = require('./strip-trailing-slashes.js')\nconst { join } = require('path')\n\nconst platform = process.env.TESTING_TAR_FAKE_PLATFORM || process.platform\nconst isWindows = platform === 'win32'\n\nmodule.exports = () => {\n // path => [function or Set]\n // A Set object means a directory reservation\n // A fn is a direct reservation on that path\n const queues = new Map()\n\n // fn => {paths:[path,...], dirs:[path, ...]}\n const reservations = new Map()\n\n // return a set of parent dirs for a given path\n // '/a/b/c/d' -> ['/', '/a', '/a/b', '/a/b/c', '/a/b/c/d']\n const getDirs = path => {\n const dirs = path.split('/').slice(0, -1).reduce((set, path) => {\n if (set.length) {\n path = join(set[set.length - 1], path)\n }\n set.push(path || '/')\n return set\n }, [])\n return dirs\n }\n\n // functions currently running\n const running = new Set()\n\n // return the queues for each path the function cares about\n // fn => {paths, dirs}\n const getQueues = fn => {\n const res = reservations.get(fn)\n /* istanbul ignore if - unpossible */\n if (!res) {\n throw new Error('function does not have any path reservations')\n }\n return {\n paths: res.paths.map(path => queues.get(path)),\n dirs: [...res.dirs].map(path => queues.get(path)),\n }\n }\n\n // check if fn is first in line for all its paths, and is\n // included in the first set for all its dir queues\n const check = fn => {\n const { paths, dirs } = getQueues(fn)\n return paths.every(q => q[0] === fn) &&\n dirs.every(q => q[0] instanceof Set && q[0].has(fn))\n }\n\n // run the function if it's first in line and not already running\n const run = fn => {\n if (running.has(fn) || !check(fn)) {\n return false\n }\n running.add(fn)\n fn(() => clear(fn))\n return true\n }\n\n const clear = fn => {\n if (!running.has(fn)) {\n return false\n }\n\n const { paths, dirs } = reservations.get(fn)\n const next = new Set()\n\n paths.forEach(path => {\n const q = queues.get(path)\n assert.equal(q[0], fn)\n if (q.length === 1) {\n queues.delete(path)\n } else {\n q.shift()\n if (typeof q[0] === 'function') {\n next.add(q[0])\n } else {\n q[0].forEach(fn => next.add(fn))\n }\n }\n })\n\n dirs.forEach(dir => {\n const q = queues.get(dir)\n assert(q[0] instanceof Set)\n if (q[0].size === 1 && q.length === 1) {\n queues.delete(dir)\n } else if (q[0].size === 1) {\n q.shift()\n\n // must be a function or else the Set would've been reused\n next.add(q[0])\n } else {\n q[0].delete(fn)\n }\n })\n running.delete(fn)\n\n next.forEach(fn => run(fn))\n return true\n }\n\n const reserve = (paths, fn) => {\n // collide on matches across case and unicode normalization\n // On windows, thanks to the magic of 8.3 shortnames, it is fundamentally\n // impossible to determine whether two paths refer to the same thing on\n // disk, without asking the kernel for a shortname.\n // So, we just pretend that every path matches every other path here,\n // effectively removing all parallelization on windows.\n paths = isWindows ? ['win32 parallelization disabled'] : paths.map(p => {\n // don't need normPath, because we skip this entirely for windows\n return normalize(stripSlashes(join(p))).toLowerCase()\n })\n\n const dirs = new Set(\n paths.map(path => getDirs(path)).reduce((a, b) => a.concat(b))\n )\n reservations.set(fn, { dirs, paths })\n paths.forEach(path => {\n const q = queues.get(path)\n if (!q) {\n queues.set(path, [fn])\n } else {\n q.push(fn)\n }\n })\n dirs.forEach(dir => {\n const q = queues.get(dir)\n if (!q) {\n queues.set(dir, [new Set([fn])])\n } else if (q[q.length - 1] instanceof Set) {\n q[q.length - 1].add(fn)\n } else {\n q.push(new Set([fn]))\n }\n })\n\n return run(fn)\n }\n\n return { check, reserve }\n}\n", "// Get the appropriate flag to use for creating files\n// We use fmap on Windows platforms for files less than\n// 512kb. This is a fairly low limit, but avoids making\n// things slower in some cases. Since most of what this\n// library is used for is extracting tarballs of many\n// relatively small files in npm packages and the like,\n// it can be a big boost on Windows platforms.\n// Only supported in Node v12.9.0 and above.\nconst platform = process.env.__FAKE_PLATFORM__ || process.platform\nconst isWindows = platform === 'win32'\nconst fs = global.__FAKE_TESTING_FS__ || require('fs')\n\n/* istanbul ignore next */\nconst { O_CREAT, O_TRUNC, O_WRONLY, UV_FS_O_FILEMAP = 0 } = fs.constants\n\nconst fMapEnabled = isWindows && !!UV_FS_O_FILEMAP\nconst fMapLimit = 512 * 1024\nconst fMapFlag = UV_FS_O_FILEMAP | O_TRUNC | O_CREAT | O_WRONLY\nmodule.exports = !fMapEnabled ? () => 'w'\n : size => size < fMapLimit ? fMapFlag : 'w'\n", "'use strict'\n\n// the PEND/UNPEND stuff tracks whether we're ready to emit end/close yet.\n// but the path reservations are required to avoid race conditions where\n// parallelized unpack ops may mess with one another, due to dependencies\n// (like a Link depending on its target) or destructive operations (like\n// clobbering an fs object to create one of a different type.)\n\nconst assert = require('assert')\nconst Parser = require('./parse.js')\nconst fs = require('fs')\nconst fsm = require('fs-minipass')\nconst path = require('path')\nconst mkdir = require('./mkdir.js')\nconst wc = require('./winchars.js')\nconst pathReservations = require('./path-reservations.js')\nconst stripAbsolutePath = require('./strip-absolute-path.js')\nconst normPath = require('./normalize-windows-path.js')\nconst stripSlash = require('./strip-trailing-slashes.js')\nconst normalize = require('./normalize-unicode.js')\n\nconst ONENTRY = Symbol('onEntry')\nconst CHECKFS = Symbol('checkFs')\nconst CHECKFS2 = Symbol('checkFs2')\nconst PRUNECACHE = Symbol('pruneCache')\nconst ISREUSABLE = Symbol('isReusable')\nconst MAKEFS = Symbol('makeFs')\nconst FILE = Symbol('file')\nconst DIRECTORY = Symbol('directory')\nconst LINK = Symbol('link')\nconst SYMLINK = Symbol('symlink')\nconst HARDLINK = Symbol('hardlink')\nconst UNSUPPORTED = Symbol('unsupported')\nconst CHECKPATH = Symbol('checkPath')\nconst MKDIR = Symbol('mkdir')\nconst ONERROR = Symbol('onError')\nconst PENDING = Symbol('pending')\nconst PEND = Symbol('pend')\nconst UNPEND = Symbol('unpend')\nconst ENDED = Symbol('ended')\nconst MAYBECLOSE = Symbol('maybeClose')\nconst SKIP = Symbol('skip')\nconst DOCHOWN = Symbol('doChown')\nconst UID = Symbol('uid')\nconst GID = Symbol('gid')\nconst CHECKED_CWD = Symbol('checkedCwd')\nconst crypto = require('crypto')\nconst getFlag = require('./get-write-flag.js')\nconst platform = process.env.TESTING_TAR_FAKE_PLATFORM || process.platform\nconst isWindows = platform === 'win32'\n\n// Unlinks on Windows are not atomic.\n//\n// This means that if you have a file entry, followed by another\n// file entry with an identical name, and you cannot re-use the file\n// (because it's a hardlink, or because unlink:true is set, or it's\n// Windows, which does not have useful nlink values), then the unlink\n// will be committed to the disk AFTER the new file has been written\n// over the old one, deleting the new file.\n//\n// To work around this, on Windows systems, we rename the file and then\n// delete the renamed file. It's a sloppy kludge, but frankly, I do not\n// know of a better way to do this, given windows' non-atomic unlink\n// semantics.\n//\n// See: https://github.com/npm/node-tar/issues/183\n/* istanbul ignore next */\nconst unlinkFile = (path, cb) => {\n if (!isWindows) {\n return fs.unlink(path, cb)\n }\n\n const name = path + '.DELETE.' + crypto.randomBytes(16).toString('hex')\n fs.rename(path, name, er => {\n if (er) {\n return cb(er)\n }\n fs.unlink(name, cb)\n })\n}\n\n/* istanbul ignore next */\nconst unlinkFileSync = path => {\n if (!isWindows) {\n return fs.unlinkSync(path)\n }\n\n const name = path + '.DELETE.' + crypto.randomBytes(16).toString('hex')\n fs.renameSync(path, name)\n fs.unlinkSync(name)\n}\n\n// this.gid, entry.gid, this.processUid\nconst uint32 = (a, b, c) =>\n a === a >>> 0 ? a\n : b === b >>> 0 ? b\n : c\n\n// clear the cache if it's a case-insensitive unicode-squashing match.\n// we can't know if the current file system is case-sensitive or supports\n// unicode fully, so we check for similarity on the maximally compatible\n// representation. Err on the side of pruning, since all it's doing is\n// preventing lstats, and it's not the end of the world if we get a false\n// positive.\n// Note that on windows, we always drop the entire cache whenever a\n// symbolic link is encountered, because 8.3 filenames are impossible\n// to reason about, and collisions are hazards rather than just failures.\nconst cacheKeyNormalize = path => normalize(stripSlash(normPath(path)))\n .toLowerCase()\n\nconst pruneCache = (cache, abs) => {\n abs = cacheKeyNormalize(abs)\n for (const path of cache.keys()) {\n const pnorm = cacheKeyNormalize(path)\n if (pnorm === abs || pnorm.indexOf(abs + '/') === 0) {\n cache.delete(path)\n }\n }\n}\n\nconst dropCache = cache => {\n for (const key of cache.keys()) {\n cache.delete(key)\n }\n}\n\nclass Unpack extends Parser {\n constructor (opt) {\n if (!opt) {\n opt = {}\n }\n\n opt.ondone = _ => {\n this[ENDED] = true\n this[MAYBECLOSE]()\n }\n\n super(opt)\n\n this[CHECKED_CWD] = false\n\n this.reservations = pathReservations()\n\n this.transform = typeof opt.transform === 'function' ? opt.transform : null\n\n this.writable = true\n this.readable = false\n\n this[PENDING] = 0\n this[ENDED] = false\n\n this.dirCache = opt.dirCache || new Map()\n\n if (typeof opt.uid === 'number' || typeof opt.gid === 'number') {\n // need both or neither\n if (typeof opt.uid !== 'number' || typeof opt.gid !== 'number') {\n throw new TypeError('cannot set owner without number uid and gid')\n }\n if (opt.preserveOwner) {\n throw new TypeError(\n 'cannot preserve owner in archive and also set owner explicitly')\n }\n this.uid = opt.uid\n this.gid = opt.gid\n this.setOwner = true\n } else {\n this.uid = null\n this.gid = null\n this.setOwner = false\n }\n\n // default true for root\n if (opt.preserveOwner === undefined && typeof opt.uid !== 'number') {\n this.preserveOwner = process.getuid && process.getuid() === 0\n } else {\n this.preserveOwner = !!opt.preserveOwner\n }\n\n this.processUid = (this.preserveOwner || this.setOwner) && process.getuid ?\n process.getuid() : null\n this.processGid = (this.preserveOwner || this.setOwner) && process.getgid ?\n process.getgid() : null\n\n // mostly just for testing, but useful in some cases.\n // Forcibly trigger a chown on every entry, no matter what\n this.forceChown = opt.forceChown === true\n\n // turn > this[ONENTRY](entry))\n }\n\n // a bad or damaged archive is a warning for Parser, but an error\n // when extracting. Mark those errors as unrecoverable, because\n // the Unpack contract cannot be met.\n warn (code, msg, data = {}) {\n if (code === 'TAR_BAD_ARCHIVE' || code === 'TAR_ABORT') {\n data.recoverable = false\n }\n return super.warn(code, msg, data)\n }\n\n [MAYBECLOSE] () {\n if (this[ENDED] && this[PENDING] === 0) {\n this.emit('prefinish')\n this.emit('finish')\n this.emit('end')\n }\n }\n\n [CHECKPATH] (entry) {\n if (this.strip) {\n const parts = normPath(entry.path).split('/')\n if (parts.length < this.strip) {\n return false\n }\n entry.path = parts.slice(this.strip).join('/')\n\n if (entry.type === 'Link') {\n const linkparts = normPath(entry.linkpath).split('/')\n if (linkparts.length >= this.strip) {\n entry.linkpath = linkparts.slice(this.strip).join('/')\n } else {\n return false\n }\n }\n }\n\n if (!this.preservePaths) {\n const p = normPath(entry.path)\n const parts = p.split('/')\n if (parts.includes('..') || isWindows && /^[a-z]:\\.\\.$/i.test(parts[0])) {\n this.warn('TAR_ENTRY_ERROR', `path contains '..'`, {\n entry,\n path: p,\n })\n return false\n }\n\n // strip off the root\n const [root, stripped] = stripAbsolutePath(p)\n if (root) {\n entry.path = stripped\n this.warn('TAR_ENTRY_INFO', `stripping ${root} from absolute path`, {\n entry,\n path: p,\n })\n }\n }\n\n if (path.isAbsolute(entry.path)) {\n entry.absolute = normPath(path.resolve(entry.path))\n } else {\n entry.absolute = normPath(path.resolve(this.cwd, entry.path))\n }\n\n // if we somehow ended up with a path that escapes the cwd, and we are\n // not in preservePaths mode, then something is fishy! This should have\n // been prevented above, so ignore this for coverage.\n /* istanbul ignore if - defense in depth */\n if (!this.preservePaths &&\n entry.absolute.indexOf(this.cwd + '/') !== 0 &&\n entry.absolute !== this.cwd) {\n this.warn('TAR_ENTRY_ERROR', 'path escaped extraction target', {\n entry,\n path: normPath(entry.path),\n resolvedPath: entry.absolute,\n cwd: this.cwd,\n })\n return false\n }\n\n // an archive can set properties on the extraction directory, but it\n // may not replace the cwd with a different kind of thing entirely.\n if (entry.absolute === this.cwd &&\n entry.type !== 'Directory' &&\n entry.type !== 'GNUDumpDir') {\n return false\n }\n\n // only encode : chars that aren't drive letter indicators\n if (this.win32) {\n const { root: aRoot } = path.win32.parse(entry.absolute)\n entry.absolute = aRoot + wc.encode(entry.absolute.slice(aRoot.length))\n const { root: pRoot } = path.win32.parse(entry.path)\n entry.path = pRoot + wc.encode(entry.path.slice(pRoot.length))\n }\n\n return true\n }\n\n [ONENTRY] (entry) {\n if (!this[CHECKPATH](entry)) {\n return entry.resume()\n }\n\n assert.equal(typeof entry.absolute, 'string')\n\n switch (entry.type) {\n case 'Directory':\n case 'GNUDumpDir':\n if (entry.mode) {\n entry.mode = entry.mode | 0o700\n }\n\n // eslint-disable-next-line no-fallthrough\n case 'File':\n case 'OldFile':\n case 'ContiguousFile':\n case 'Link':\n case 'SymbolicLink':\n return this[CHECKFS](entry)\n\n case 'CharacterDevice':\n case 'BlockDevice':\n case 'FIFO':\n default:\n return this[UNSUPPORTED](entry)\n }\n }\n\n [ONERROR] (er, entry) {\n // Cwd has to exist, or else nothing works. That's serious.\n // Other errors are warnings, which raise the error in strict\n // mode, but otherwise continue on.\n if (er.name === 'CwdError') {\n this.emit('error', er)\n } else {\n this.warn('TAR_ENTRY_ERROR', er, { entry })\n this[UNPEND]()\n entry.resume()\n }\n }\n\n [MKDIR] (dir, mode, cb) {\n mkdir(normPath(dir), {\n uid: this.uid,\n gid: this.gid,\n processUid: this.processUid,\n processGid: this.processGid,\n umask: this.processUmask,\n preserve: this.preservePaths,\n unlink: this.unlink,\n cache: this.dirCache,\n cwd: this.cwd,\n mode: mode,\n noChmod: this.noChmod,\n }, cb)\n }\n\n [DOCHOWN] (entry) {\n // in preserve owner mode, chown if the entry doesn't match process\n // in set owner mode, chown if setting doesn't match process\n return this.forceChown ||\n this.preserveOwner &&\n (typeof entry.uid === 'number' && entry.uid !== this.processUid ||\n typeof entry.gid === 'number' && entry.gid !== this.processGid)\n ||\n (typeof this.uid === 'number' && this.uid !== this.processUid ||\n typeof this.gid === 'number' && this.gid !== this.processGid)\n }\n\n [UID] (entry) {\n return uint32(this.uid, entry.uid, this.processUid)\n }\n\n [GID] (entry) {\n return uint32(this.gid, entry.gid, this.processGid)\n }\n\n [FILE] (entry, fullyDone) {\n const mode = entry.mode & 0o7777 || this.fmode\n const stream = new fsm.WriteStream(entry.absolute, {\n flags: getFlag(entry.size),\n mode: mode,\n autoClose: false,\n })\n stream.on('error', er => {\n if (stream.fd) {\n fs.close(stream.fd, () => {})\n }\n\n // flush all the data out so that we aren't left hanging\n // if the error wasn't actually fatal. otherwise the parse\n // is blocked, and we never proceed.\n stream.write = () => true\n this[ONERROR](er, entry)\n fullyDone()\n })\n\n let actions = 1\n const done = er => {\n if (er) {\n /* istanbul ignore else - we should always have a fd by now */\n if (stream.fd) {\n fs.close(stream.fd, () => {})\n }\n\n this[ONERROR](er, entry)\n fullyDone()\n return\n }\n\n if (--actions === 0) {\n fs.close(stream.fd, er => {\n if (er) {\n this[ONERROR](er, entry)\n } else {\n this[UNPEND]()\n }\n fullyDone()\n })\n }\n }\n\n stream.on('finish', _ => {\n // if futimes fails, try utimes\n // if utimes fails, fail with the original error\n // same for fchown/chown\n const abs = entry.absolute\n const fd = stream.fd\n\n if (entry.mtime && !this.noMtime) {\n actions++\n const atime = entry.atime || new Date()\n const mtime = entry.mtime\n fs.futimes(fd, atime, mtime, er =>\n er ? fs.utimes(abs, atime, mtime, er2 => done(er2 && er))\n : done())\n }\n\n if (this[DOCHOWN](entry)) {\n actions++\n const uid = this[UID](entry)\n const gid = this[GID](entry)\n fs.fchown(fd, uid, gid, er =>\n er ? fs.chown(abs, uid, gid, er2 => done(er2 && er))\n : done())\n }\n\n done()\n })\n\n const tx = this.transform ? this.transform(entry) || entry : entry\n if (tx !== entry) {\n tx.on('error', er => {\n this[ONERROR](er, entry)\n fullyDone()\n })\n entry.pipe(tx)\n }\n tx.pipe(stream)\n }\n\n [DIRECTORY] (entry, fullyDone) {\n const mode = entry.mode & 0o7777 || this.dmode\n this[MKDIR](entry.absolute, mode, er => {\n if (er) {\n this[ONERROR](er, entry)\n fullyDone()\n return\n }\n\n let actions = 1\n const done = _ => {\n if (--actions === 0) {\n fullyDone()\n this[UNPEND]()\n entry.resume()\n }\n }\n\n if (entry.mtime && !this.noMtime) {\n actions++\n fs.utimes(entry.absolute, entry.atime || new Date(), entry.mtime, done)\n }\n\n if (this[DOCHOWN](entry)) {\n actions++\n fs.chown(entry.absolute, this[UID](entry), this[GID](entry), done)\n }\n\n done()\n })\n }\n\n [UNSUPPORTED] (entry) {\n entry.unsupported = true\n this.warn('TAR_ENTRY_UNSUPPORTED',\n `unsupported entry type: ${entry.type}`, { entry })\n entry.resume()\n }\n\n [SYMLINK] (entry, done) {\n this[LINK](entry, entry.linkpath, 'symlink', done)\n }\n\n [HARDLINK] (entry, done) {\n const linkpath = normPath(path.resolve(this.cwd, entry.linkpath))\n this[LINK](entry, linkpath, 'link', done)\n }\n\n [PEND] () {\n this[PENDING]++\n }\n\n [UNPEND] () {\n this[PENDING]--\n this[MAYBECLOSE]()\n }\n\n [SKIP] (entry) {\n this[UNPEND]()\n entry.resume()\n }\n\n // Check if we can reuse an existing filesystem entry safely and\n // overwrite it, rather than unlinking and recreating\n // Windows doesn't report a useful nlink, so we just never reuse entries\n [ISREUSABLE] (entry, st) {\n return entry.type === 'File' &&\n !this.unlink &&\n st.isFile() &&\n st.nlink <= 1 &&\n !isWindows\n }\n\n // check if a thing is there, and if so, try to clobber it\n [CHECKFS] (entry) {\n this[PEND]()\n const paths = [entry.path]\n if (entry.linkpath) {\n paths.push(entry.linkpath)\n }\n this.reservations.reserve(paths, done => this[CHECKFS2](entry, done))\n }\n\n [PRUNECACHE] (entry) {\n // if we are not creating a directory, and the path is in the dirCache,\n // then that means we are about to delete the directory we created\n // previously, and it is no longer going to be a directory, and neither\n // is any of its children.\n // If a symbolic link is encountered, all bets are off. There is no\n // reasonable way to sanitize the cache in such a way we will be able to\n // avoid having filesystem collisions. If this happens with a non-symlink\n // entry, it'll just fail to unpack, but a symlink to a directory, using an\n // 8.3 shortname or certain unicode attacks, can evade detection and lead\n // to arbitrary writes to anywhere on the system.\n if (entry.type === 'SymbolicLink') {\n dropCache(this.dirCache)\n } else if (entry.type !== 'Directory') {\n pruneCache(this.dirCache, entry.absolute)\n }\n }\n\n [CHECKFS2] (entry, fullyDone) {\n this[PRUNECACHE](entry)\n\n const done = er => {\n this[PRUNECACHE](entry)\n fullyDone(er)\n }\n\n const checkCwd = () => {\n this[MKDIR](this.cwd, this.dmode, er => {\n if (er) {\n this[ONERROR](er, entry)\n done()\n return\n }\n this[CHECKED_CWD] = true\n start()\n })\n }\n\n const start = () => {\n if (entry.absolute !== this.cwd) {\n const parent = normPath(path.dirname(entry.absolute))\n if (parent !== this.cwd) {\n return this[MKDIR](parent, this.dmode, er => {\n if (er) {\n this[ONERROR](er, entry)\n done()\n return\n }\n afterMakeParent()\n })\n }\n }\n afterMakeParent()\n }\n\n const afterMakeParent = () => {\n fs.lstat(entry.absolute, (lstatEr, st) => {\n if (st && (this.keep || this.newer && st.mtime > entry.mtime)) {\n this[SKIP](entry)\n done()\n return\n }\n if (lstatEr || this[ISREUSABLE](entry, st)) {\n return this[MAKEFS](null, entry, done)\n }\n\n if (st.isDirectory()) {\n if (entry.type === 'Directory') {\n const needChmod = !this.noChmod &&\n entry.mode &&\n (st.mode & 0o7777) !== entry.mode\n const afterChmod = er => this[MAKEFS](er, entry, done)\n if (!needChmod) {\n return afterChmod()\n }\n return fs.chmod(entry.absolute, entry.mode, afterChmod)\n }\n // Not a dir entry, have to remove it.\n // NB: the only way to end up with an entry that is the cwd\n // itself, in such a way that == does not detect, is a\n // tricky windows absolute path with UNC or 8.3 parts (and\n // preservePaths:true, or else it will have been stripped).\n // In that case, the user has opted out of path protections\n // explicitly, so if they blow away the cwd, c'est la vie.\n if (entry.absolute !== this.cwd) {\n return fs.rmdir(entry.absolute, er =>\n this[MAKEFS](er, entry, done))\n }\n }\n\n // not a dir, and not reusable\n // don't remove if the cwd, we want that error\n if (entry.absolute === this.cwd) {\n return this[MAKEFS](null, entry, done)\n }\n\n unlinkFile(entry.absolute, er =>\n this[MAKEFS](er, entry, done))\n })\n }\n\n if (this[CHECKED_CWD]) {\n start()\n } else {\n checkCwd()\n }\n }\n\n [MAKEFS] (er, entry, done) {\n if (er) {\n this[ONERROR](er, entry)\n done()\n return\n }\n\n switch (entry.type) {\n case 'File':\n case 'OldFile':\n case 'ContiguousFile':\n return this[FILE](entry, done)\n\n case 'Link':\n return this[HARDLINK](entry, done)\n\n case 'SymbolicLink':\n return this[SYMLINK](entry, done)\n\n case 'Directory':\n case 'GNUDumpDir':\n return this[DIRECTORY](entry, done)\n }\n }\n\n [LINK] (entry, linkpath, link, done) {\n // XXX: get the type ('symlink' or 'junction') for windows\n fs[link](linkpath, entry.absolute, er => {\n if (er) {\n this[ONERROR](er, entry)\n } else {\n this[UNPEND]()\n entry.resume()\n }\n done()\n })\n }\n}\n\nconst callSync = fn => {\n try {\n return [null, fn()]\n } catch (er) {\n return [er, null]\n }\n}\nclass UnpackSync extends Unpack {\n [MAKEFS] (er, entry) {\n return super[MAKEFS](er, entry, () => {})\n }\n\n [CHECKFS] (entry) {\n this[PRUNECACHE](entry)\n\n if (!this[CHECKED_CWD]) {\n const er = this[MKDIR](this.cwd, this.dmode)\n if (er) {\n return this[ONERROR](er, entry)\n }\n this[CHECKED_CWD] = true\n }\n\n // don't bother to make the parent if the current entry is the cwd,\n // we've already checked it.\n if (entry.absolute !== this.cwd) {\n const parent = normPath(path.dirname(entry.absolute))\n if (parent !== this.cwd) {\n const mkParent = this[MKDIR](parent, this.dmode)\n if (mkParent) {\n return this[ONERROR](mkParent, entry)\n }\n }\n }\n\n const [lstatEr, st] = callSync(() => fs.lstatSync(entry.absolute))\n if (st && (this.keep || this.newer && st.mtime > entry.mtime)) {\n return this[SKIP](entry)\n }\n\n if (lstatEr || this[ISREUSABLE](entry, st)) {\n return this[MAKEFS](null, entry)\n }\n\n if (st.isDirectory()) {\n if (entry.type === 'Directory') {\n const needChmod = !this.noChmod &&\n entry.mode &&\n (st.mode & 0o7777) !== entry.mode\n const [er] = needChmod ? callSync(() => {\n fs.chmodSync(entry.absolute, entry.mode)\n }) : []\n return this[MAKEFS](er, entry)\n }\n // not a dir entry, have to remove it\n const [er] = callSync(() => fs.rmdirSync(entry.absolute))\n this[MAKEFS](er, entry)\n }\n\n // not a dir, and not reusable.\n // don't remove if it's the cwd, since we want that error.\n const [er] = entry.absolute === this.cwd ? []\n : callSync(() => unlinkFileSync(entry.absolute))\n this[MAKEFS](er, entry)\n }\n\n [FILE] (entry, done) {\n const mode = entry.mode & 0o7777 || this.fmode\n\n const oner = er => {\n let closeError\n try {\n fs.closeSync(fd)\n } catch (e) {\n closeError = e\n }\n if (er || closeError) {\n this[ONERROR](er || closeError, entry)\n }\n done()\n }\n\n let fd\n try {\n fd = fs.openSync(entry.absolute, getFlag(entry.size), mode)\n } catch (er) {\n return oner(er)\n }\n const tx = this.transform ? this.transform(entry) || entry : entry\n if (tx !== entry) {\n tx.on('error', er => this[ONERROR](er, entry))\n entry.pipe(tx)\n }\n\n tx.on('data', chunk => {\n try {\n fs.writeSync(fd, chunk, 0, chunk.length)\n } catch (er) {\n oner(er)\n }\n })\n\n tx.on('end', _ => {\n let er = null\n // try both, falling futimes back to utimes\n // if either fails, handle the first error\n if (entry.mtime && !this.noMtime) {\n const atime = entry.atime || new Date()\n const mtime = entry.mtime\n try {\n fs.futimesSync(fd, atime, mtime)\n } catch (futimeser) {\n try {\n fs.utimesSync(entry.absolute, atime, mtime)\n } catch (utimeser) {\n er = futimeser\n }\n }\n }\n\n if (this[DOCHOWN](entry)) {\n const uid = this[UID](entry)\n const gid = this[GID](entry)\n\n try {\n fs.fchownSync(fd, uid, gid)\n } catch (fchowner) {\n try {\n fs.chownSync(entry.absolute, uid, gid)\n } catch (chowner) {\n er = er || fchowner\n }\n }\n }\n\n oner(er)\n })\n }\n\n [DIRECTORY] (entry, done) {\n const mode = entry.mode & 0o7777 || this.dmode\n const er = this[MKDIR](entry.absolute, mode)\n if (er) {\n this[ONERROR](er, entry)\n done()\n return\n }\n if (entry.mtime && !this.noMtime) {\n try {\n fs.utimesSync(entry.absolute, entry.atime || new Date(), entry.mtime)\n } catch (er) {}\n }\n if (this[DOCHOWN](entry)) {\n try {\n fs.chownSync(entry.absolute, this[UID](entry), this[GID](entry))\n } catch (er) {}\n }\n done()\n entry.resume()\n }\n\n [MKDIR] (dir, mode) {\n try {\n return mkdir.sync(normPath(dir), {\n uid: this.uid,\n gid: this.gid,\n processUid: this.processUid,\n processGid: this.processGid,\n umask: this.processUmask,\n preserve: this.preservePaths,\n unlink: this.unlink,\n cache: this.dirCache,\n cwd: this.cwd,\n mode: mode,\n })\n } catch (er) {\n return er\n }\n }\n\n [LINK] (entry, linkpath, link, done) {\n try {\n fs[link + 'Sync'](linkpath, entry.absolute)\n done()\n entry.resume()\n } catch (er) {\n return this[ONERROR](er, entry)\n }\n }\n}\n\nUnpack.Sync = UnpackSync\nmodule.exports = Unpack\n", "'use strict'\n\n// tar -x\nconst hlo = require('./high-level-opt.js')\nconst Unpack = require('./unpack.js')\nconst fs = require('fs')\nconst fsm = require('fs-minipass')\nconst path = require('path')\nconst stripSlash = require('./strip-trailing-slashes.js')\n\nmodule.exports = (opt_, files, cb) => {\n if (typeof opt_ === 'function') {\n cb = opt_, files = null, opt_ = {}\n } else if (Array.isArray(opt_)) {\n files = opt_, opt_ = {}\n }\n\n if (typeof files === 'function') {\n cb = files, files = null\n }\n\n if (!files) {\n files = []\n } else {\n files = Array.from(files)\n }\n\n const opt = hlo(opt_)\n\n if (opt.sync && typeof cb === 'function') {\n throw new TypeError('callback not supported for sync tar functions')\n }\n\n if (!opt.file && typeof cb === 'function') {\n throw new TypeError('callback only supported with file option')\n }\n\n if (files.length) {\n filesFilter(opt, files)\n }\n\n return opt.file && opt.sync ? extractFileSync(opt)\n : opt.file ? extractFile(opt, cb)\n : opt.sync ? extractSync(opt)\n : extract(opt)\n}\n\n// construct a filter that limits the file entries listed\n// include child entries if a dir is included\nconst filesFilter = (opt, files) => {\n const map = new Map(files.map(f => [stripSlash(f), true]))\n const filter = opt.filter\n\n const mapHas = (file, r) => {\n const root = r || path.parse(file).root || '.'\n const ret = file === root ? false\n : map.has(file) ? map.get(file)\n : mapHas(path.dirname(file), root)\n\n map.set(file, ret)\n return ret\n }\n\n opt.filter = filter\n ? (file, entry) => filter(file, entry) && mapHas(stripSlash(file))\n : file => mapHas(stripSlash(file))\n}\n\nconst extractFileSync = opt => {\n const u = new Unpack.Sync(opt)\n\n const file = opt.file\n const stat = fs.statSync(file)\n // This trades a zero-byte read() syscall for a stat\n // However, it will usually result in less memory allocation\n const readSize = opt.maxReadSize || 16 * 1024 * 1024\n const stream = new fsm.ReadStreamSync(file, {\n readSize: readSize,\n size: stat.size,\n })\n stream.pipe(u)\n}\n\nconst extractFile = (opt, cb) => {\n const u = new Unpack(opt)\n const readSize = opt.maxReadSize || 16 * 1024 * 1024\n\n const file = opt.file\n const p = new Promise((resolve, reject) => {\n u.on('error', reject)\n u.on('close', resolve)\n\n // This trades a zero-byte read() syscall for a stat\n // However, it will usually result in less memory allocation\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(u)\n }\n })\n })\n return cb ? p.then(cb, cb) : p\n}\n\nconst extractSync = opt => new Unpack.Sync(opt)\n\nconst extract = opt => new Unpack(opt)\n", "'use strict'\n\n// high-level commands\nexports.c = exports.create = require('./lib/create.js')\nexports.r = exports.replace = require('./lib/replace.js')\nexports.t = exports.list = require('./lib/list.js')\nexports.u = exports.update = require('./lib/update.js')\nexports.x = exports.extract = require('./lib/extract.js')\n\n// classes\nexports.Pack = require('./lib/pack.js')\nexports.Unpack = require('./lib/unpack.js')\nexports.Parse = require('./lib/parse.js')\nexports.ReadEntry = require('./lib/read-entry.js')\nexports.WriteEntry = require('./lib/write-entry.js')\nexports.Header = require('./lib/header.js')\nexports.Pax = require('./lib/pax.js')\nexports.types = require('./lib/types.js')\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, "/** 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 overridden 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 overridden 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 overridden by the package.json's `publishConfig` field.\n */\n access?: Access | undefined;\n\n /**\n * Version check strategy.\n *\n * If \"upgrade\" (default), the package will only be published if its version\n * is higher than the existing version on the configured tag. If \"always\", the\n * package will be published if its version is simply not yet published.\n *\n * Defaults to `upgrade`.\n */\n strategy?: Strategy | 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 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 must be a string, got \"${String(value)}\"`);\n this.name = \"InvalidPackageNameError\";\n }\n}\n\nexport class InvalidPackageVersionError extends TypeError {\n public constructor(value: unknown) {\n super(`Package version must be a string, got \"${String(value)}\"`);\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 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 { valid as semverValid } from \"semver\";\nimport { list as tarList, type ReadEntry } from \"tar\";\n\nimport * as errors from \"./errors.js\";\n\n/** The result of reading a package manifest */\nexport interface ManifestReadResult {\n packageSpec: string;\n manifest: PackageManifest;\n}\n\n/** A package manifest (package.json) */\nexport interface PackageManifest {\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}\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 isVersion = (version: unknown): version is string => {\n return semverValid(version as string) !== null;\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 = manifestJson[\"version\"];\n publishConfig = manifestJson[\"publishConfig\"] ?? {};\n } catch (error) {\n throw new errors.PackageJsonParseError(packageSpec, error);\n }\n\n if (typeof name !== \"string\" || name.length === 0) {\n throw new errors.InvalidPackageNameError(name);\n }\n\n if (!isVersion(version)) {\n throw new errors.InvalidPackageVersionError(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 manifest: { name, version, publishConfig, scope: SCOPE_RE.exec(name)?.[1] },\n };\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 DEFAULT_REGISTRY = \"https://registry.npmjs.org/\";\nconst DEFAULT_TAG = \"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 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 options User-input options.\n * @param manifest Package metadata from package.json.\n * @returns Validated auth and publish configuration.\n */\nexport function normalizeOptions(\n options: Options,\n manifest: PackageManifest\n): NormalizedOptions {\n const defaultTag = manifest.publishConfig?.tag ?? DEFAULT_TAG;\n\n const defaultRegistry = manifest.publishConfig?.registry ?? DEFAULT_REGISTRY;\n\n const defaultAccess =\n manifest.publishConfig?.access ??\n (manifest.scope === undefined ? ACCESS_PUBLIC : undefined);\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 dryRun: setValue(options.dryRun, false, validateDryRun),\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 return value as string;\n};\n\nconst validateDryRun = (value: unknown): boolean => {\n return value as boolean;\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 fs from \"node:fs/promises\";\nimport os from \"node:os\";\nimport path from \"node:path\";\n\nimport type { NormalizedOptions } from \"../normalize-options.js\";\n\nexport type NpmCliEnvironment = Record;\n\nexport type NpmCliTask = (\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 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 options: NormalizedOptions,\n task: NpmCliTask\n): Promise {\n const { registry, token, logger, temporaryDirectory } = options;\n const npmrcDirectory = await fs.mkdtemp(\n path.join(temporaryDirectory, \"npm-publish-\")\n );\n const npmrc = path.join(npmrcDirectory, \".npmrc\");\n\n const config = [\n \"; created by jsdevtools/npm-publish\",\n `//${registry.host}/:_authToken=\\${NODE_AUTH_TOKEN}`,\n `registry=${registry.href}`,\n \"\",\n ].join(os.EOL);\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({\n NODE_AUTH_TOKEN: token,\n npm_config_userconfig: npmrc,\n });\n } finally {\n await fs.rm(npmrcDirectory, { force: true, recursive: true });\n }\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 ifError?: Record;\n logger?: Logger | undefined;\n}\n\nconst NPM = os.platform() === \"win32\" ? \"npm.cmd\" : \"npm\";\nconst JSON_MATCH_RE = /(\\{[\\s\\S]*\\})/mu;\n\nconst 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 });\n\n npm.stdout.on(\"data\", (data) => (stdout += data));\n npm.stderr.on(\"data\", (data) => (stderr += data));\n npm.on(\"close\", (code) => {\n resolve({\n stdout: stdout.trim(),\n stderr: stderr.trim(),\n exitCode: code ?? 0,\n });\n });\n });\n};\n\nconst 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\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: string,\n cliArguments: string[],\n options: NpmCliOptions = {}\n): Promise {\n const { stdout, stderr, exitCode } = await execNpm(\n [command, \"--ignore-scripts\", \"--json\", ...cliArguments],\n options.environment,\n options.logger\n );\n\n if (exitCode !== 0) {\n const errorPayload = parseJson<{ error?: { code?: string | null } }>(\n stdout,\n stderr\n );\n const errorCode = errorPayload?.error?.code?.toLowerCase();\n\n if (\n typeof errorCode === \"string\" &&\n options.ifError &&\n errorCode in options.ifError\n ) {\n return options.ifError[errorCode] as TReturn;\n }\n\n throw new errors.NpmCallError(command, exitCode, stderr);\n }\n\n return parseJson(stdout) ?? (stdout as unknown as TReturn);\n}\n", "import type { NormalizedOptions } from \"../normalize-options.js\";\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 } = 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 (dryRun.value) {\n publishArguments.push(\"--dry-run\");\n }\n\n return publishArguments;\n}\n", "import type { NormalizedOptions } from \"../normalize-options.js\";\nimport { useNpmEnvironment } from \"./use-npm-environment.js\";\nimport { callNpmCli } from \"./call-npm-cli.js\";\nimport { getPublishArguments } from \"./get-publish-arguments.js\";\n\nexport interface PublishedVersions {\n \"dist-tags\": Record;\n versions: string[];\n}\n\nexport interface PublishFile {\n path: string;\n size: number;\n}\n\nexport interface PublishResult {\n id: string;\n files: PublishFile[];\n}\n\n/**\n * Get a package's published versions.\n *\n * @param packageName The name of the package to get published versions for.\n * @param options Configuration options.\n * @returns All published versions and tags.\n */\nexport async function getVersions(\n packageName: string,\n options: NormalizedOptions\n): Promise {\n return useNpmEnvironment(options, (environment) => {\n return callNpmCli(\n \"view\",\n [packageName, \"dist-tags\", \"versions\"],\n {\n logger: options.logger,\n environment,\n ifError: { e404: { \"dist-tags\": {}, versions: [] } },\n }\n );\n });\n}\n\n/**\n * Publish a package.\n *\n * @param packageSpec Package specification to pass to npm.\n * @param options Configuration options.\n * @returns Release metadata.\n */\nexport async function publish(\n packageSpec: string,\n options: NormalizedOptions\n): Promise {\n const publishArguments = getPublishArguments(packageSpec, options);\n\n return useNpmEnvironment(options, (environment) => {\n return callNpmCli(\"publish\", publishArguments, {\n logger: options.logger,\n environment,\n });\n });\n}\n", "import {\n valid as semverValid,\n gt as semverGreaterThan,\n diff as semverDifference,\n type ReleaseType as SemverReleaseType,\n} from \"semver\";\n\nimport { STRATEGY_ALL } from \"./options.js\";\nimport type { NormalizedOptions } from \"./normalize-options.js\";\nimport type { PublishedVersions } from \"./npm/index.js\";\n\nexport type ReleaseType = SemverReleaseType | typeof INITIAL | typeof DIFFERENT;\n\nexport interface VersionComparison {\n type: ReleaseType | undefined;\n oldVersion: string | undefined;\n}\n\nconst INITIAL = \"initial\";\nconst DIFFERENT = \"different\";\n\n/**\n * Compare previously published versions with the package's current version.\n *\n * @param version 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 version: string,\n publishedVersions: PublishedVersions,\n options: NormalizedOptions\n): VersionComparison {\n const { versions: existingVersions, \"dist-tags\": tags } = publishedVersions;\n const { strategy, tag: publishTag } = options;\n const oldVersion = semverValid(tags[publishTag.value]) ?? undefined;\n const isUnique = !existingVersions.includes(version);\n let type: ReleaseType | undefined;\n\n if (isUnique) {\n if (!oldVersion) {\n type = INITIAL;\n } else if (semverGreaterThan(version, oldVersion)) {\n type = semverDifference(version, oldVersion) ?? DIFFERENT;\n } else if (strategy.value === STRATEGY_ALL) {\n type = DIFFERENT;\n }\n }\n\n return { type, oldVersion };\n}\n", "import os from \"node:os\";\n\nimport type { PublishResult } from \"./npm/index.js\";\nimport type { PackageManifest } from \"./read-manifest.js\";\nimport type { NormalizedOptions } from \"./normalize-options.js\";\n\n/**\n * Format publish results into a string.\n *\n * @param manifest Package manifest\n * @param options Configuration options.\n * @param results Results from running npm publish.\n * @returns Formatted string.\n */\nexport function formatPublishResult(\n manifest: PackageManifest,\n options: NormalizedOptions,\n results?: PublishResult\n): string {\n if (results === undefined) {\n return `\uD83D\uDE45\u200D\u2640\uFE0F ${manifest.name}@${manifest.version} publish skipped.`;\n }\n\n return [\n `\uD83D\uDCE6 ${results.id}${options.dryRun.value ? \" (DRY RUN)\" : \"\"}`,\n \"=== Contents ===\",\n ...results.files.map(({ path, size }) => `${formatSize(size)}\\t${path}`),\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 { getVersions, publish } from \"./npm/index.js\";\nimport { compareVersions } from \"./compare-versions.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 { packageSpec, manifest } = await readManifest(options.package);\n const normalizedOptions = normalizeOptions(options, manifest);\n const publishedVersions = await getVersions(manifest.name, normalizedOptions);\n const versionComparison = compareVersions(\n manifest.version,\n publishedVersions,\n normalizedOptions\n );\n\n let publishResult;\n\n if (versionComparison.type !== undefined) {\n publishResult = await publish(packageSpec, normalizedOptions);\n }\n\n normalizedOptions.logger?.info?.(\n formatPublishResult(manifest, normalizedOptions, publishResult)\n );\n\n return {\n id: publishResult?.id,\n name: manifest.name,\n version: manifest.version,\n type: versionComparison.type,\n oldVersion: versionComparison.oldVersion,\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 not\n */\nexport function getBooleanInput(name: string): boolean {\n return ghGetInput(name) === \"true\";\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", "/** 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 strategy: core.getInput(\"strategy\"),\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\nrun().catch((error: Error) => core.setFailed(error));\n"], - "mappings": "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", - "names": ["module", "module", "module", "module", "module", "module", "version", "module", "parse", "version", "module", "parse", "version", "module", "parse", "version", "module", "version", "module", "parse", "v1", "module", "module", "module", "module", "parse", "version", "module", "module", "module", "module", "module", "module", "module", "module", "module", "module", "module", "module", "module", "module", "parse", "version", "module", "module", "module", "module", "version", "module", "version", "module", "version", "module", "module", "module", "module", "require_valid", "module", "module", "version", "module", "version", "module", "version", "module", "module", "version", "module", "require_semver", "module", "parse", "module", "module", "p", "ret", "res", "require_constants", "module", "require_minipass", "module", "p", "ret", "res", "Buffer", "module", "module", "global", "module", "parse", "module", "global", "path", "module", "path", "global", "module", "module", "module", "s", "module", "parse", "path", "module", "module", "fs", "path", "module", "path", "fs", "stat", "require_minipass", "module", "p", "ret", "res", "fs", "path", "buf", "require_parse", "module", "chunk", "ret", "module", "fs", "path", "parse", "module", "path", "module", "fs", "path", "cb", "er", "module", "path", "module", "fs", "module", "parse", "path", "module", "path", "module", "path", "made", "module", "path", "module", "fs", "version", "module", "path", "module", "fs", "path", "er", "module", "fs", "path", "er", "created", "module", "module", "path", "run", "fn", "module", "fs", "module", "fs", "path", "crypto", "er", "module", "fs", "path", "os", "crypto", "version", "URL", "crypto", "import_crypto", "crypto", "import_crypto", "fs", "os", "options", "socket", "require_tunnel", "module", "HttpCodes", "Headers", "MediaTypes", "path", "os", "path", "ExitCode", "getInput", "getBooleanInput", "setOutput", "setFailed", "os", "path", "version", "semverValid", "fs", "tarList", "import_node_os", "os", "validate", "import_promises", "import_node_os", "import_node_path", "logger", "fs", "path", "os", "import_node_os", "os", "logger", "childProcess", "import_semver", "version", "semverValid", "semverGreaterThan", "semverDifference", "import_node_os", "path", "os", "ghLogDebug", "ghLogInfo", "ghLogError", "ghGetInput", "ghSetSecret", "ghSetFailed", "ghSetOutput"] + "sources": ["../node_modules/semver/internal/constants.js", "../node_modules/semver/internal/debug.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/clean.js", "../node_modules/semver/functions/inc.js", "../node_modules/semver/functions/diff.js", "../node_modules/semver/functions/major.js", "../node_modules/semver/functions/minor.js", "../node_modules/semver/functions/patch.js", "../node_modules/semver/functions/prerelease.js", "../node_modules/semver/functions/compare.js", "../node_modules/semver/functions/rcompare.js", "../node_modules/semver/functions/compare-loose.js", "../node_modules/semver/functions/compare-build.js", "../node_modules/semver/functions/sort.js", "../node_modules/semver/functions/rsort.js", "../node_modules/semver/functions/gt.js", "../node_modules/semver/functions/lt.js", "../node_modules/semver/functions/eq.js", "../node_modules/semver/functions/neq.js", "../node_modules/semver/functions/gte.js", "../node_modules/semver/functions/lte.js", "../node_modules/semver/functions/cmp.js", "../node_modules/semver/functions/coerce.js", "../node_modules/yallist/iterator.js", "../node_modules/yallist/yallist.js", "../node_modules/semver/node_modules/lru-cache/index.js", "../node_modules/semver/classes/range.js", "../node_modules/semver/classes/comparator.js", "../node_modules/semver/functions/satisfies.js", "../node_modules/semver/ranges/to-comparators.js", "../node_modules/semver/ranges/max-satisfying.js", "../node_modules/semver/ranges/min-satisfying.js", "../node_modules/semver/ranges/min-version.js", "../node_modules/semver/ranges/valid.js", "../node_modules/semver/ranges/outside.js", "../node_modules/semver/ranges/gtr.js", "../node_modules/semver/ranges/ltr.js", "../node_modules/semver/ranges/intersects.js", "../node_modules/semver/ranges/simplify.js", "../node_modules/semver/ranges/subset.js", "../node_modules/semver/index.js", "../node_modules/tar/lib/high-level-opt.js", "../node_modules/tar/node_modules/minipass/index.js", "../node_modules/minizlib/constants.js", "../node_modules/minizlib/node_modules/minipass/index.js", "../node_modules/minizlib/index.js", "../node_modules/tar/lib/normalize-windows-path.js", "../node_modules/tar/lib/read-entry.js", "../node_modules/tar/lib/types.js", "../node_modules/tar/lib/large-numbers.js", "../node_modules/tar/lib/header.js", "../node_modules/tar/lib/pax.js", "../node_modules/tar/lib/strip-trailing-slashes.js", "../node_modules/tar/lib/warn-mixin.js", "../node_modules/tar/lib/winchars.js", "../node_modules/tar/lib/strip-absolute-path.js", "../node_modules/tar/lib/mode-fix.js", "../node_modules/tar/lib/write-entry.js", "../node_modules/tar/lib/pack.js", "../node_modules/fs-minipass/node_modules/minipass/index.js", "../node_modules/fs-minipass/index.js", "../node_modules/tar/lib/parse.js", "../node_modules/tar/lib/list.js", "../node_modules/tar/lib/create.js", "../node_modules/tar/lib/replace.js", "../node_modules/tar/lib/update.js", "../node_modules/mkdirp/lib/opts-arg.js", "../node_modules/mkdirp/lib/path-arg.js", "../node_modules/mkdirp/lib/find-made.js", "../node_modules/mkdirp/lib/mkdirp-manual.js", "../node_modules/mkdirp/lib/mkdirp-native.js", "../node_modules/mkdirp/lib/use-native.js", "../node_modules/mkdirp/index.js", "../node_modules/chownr/chownr.js", "../node_modules/tar/lib/mkdir.js", "../node_modules/tar/lib/normalize-unicode.js", "../node_modules/tar/lib/path-reservations.js", "../node_modules/tar/lib/get-write-flag.js", "../node_modules/tar/lib/unpack.js", "../node_modules/tar/lib/extract.js", "../node_modules/tar/index.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/options.ts", "../src/errors.ts", "../src/read-manifest.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", "../src/action/main.ts"], + "sourcesContent": ["// 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\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_INTEGER,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 0b001,\n FLAG_LOOSE: 0b010,\n}\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", "const { MAX_SAFE_COMPONENT_LENGTH } = require('./constants')\nconst debug = require('./debug')\nexports = module.exports = {}\n\n// The actual regexps go on exports.re\nconst re = exports.re = []\nconst src = exports.src = []\nconst t = exports.t = {}\nlet R = 0\n\nconst createToken = (name, value, isGlobal) => {\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}\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', '[0-9]+')\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-][a-zA-Z0-9-]*')\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', '[0-9A-Za-z-]+')\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('COERCE', `${'(^|[^\\\\d])' +\n '(\\\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:$|[^\\\\d])`)\ncreateToken('COERCERTL', src[t.COERCE], 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 { 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: ${require('util').inspect(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('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 // 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.format()\n this.raw = this.version\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')\nconst clean = (version, options) => {\n const s = parse(version.trim().replace(/^[=v]+/, ''), options)\n return s ? s.version : null\n}\nmodule.exports = clean\n", "const SemVer = require('../classes/semver')\n\nconst inc = (version, release, options, identifier, identifierBase) => {\n if (typeof (options) === 'string') {\n identifierBase = identifier\n identifier = options\n options = undefined\n }\n\n try {\n return new SemVer(\n version instanceof SemVer ? version.version : version,\n options\n ).inc(release, identifier, identifierBase).version\n } catch (er) {\n return null\n }\n}\nmodule.exports = inc\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\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 // at this point we know stable versions match but overall versions are not equal,\n // so either they are both prereleases, or the lower version is a prerelease\n\n if (highHasPre) {\n // high and low are preleases\n return 'prerelease'\n }\n\n if (lowVersion.patch) {\n // anything higher than a patch bump would result in the wrong version\n return 'patch'\n }\n\n if (lowVersion.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\nmodule.exports = diff\n", "const SemVer = require('../classes/semver')\nconst major = (a, loose) => new SemVer(a, loose).major\nmodule.exports = major\n", "const SemVer = require('../classes/semver')\nconst minor = (a, loose) => new SemVer(a, loose).minor\nmodule.exports = minor\n", "const SemVer = require('../classes/semver')\nconst patch = (a, loose) => new SemVer(a, loose).patch\nmodule.exports = patch\n", "const parse = require('./parse')\nconst prerelease = (version, options) => {\n const parsed = parse(version, options)\n return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\nmodule.exports = prerelease\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 rcompare = (a, b, loose) => compare(b, a, loose)\nmodule.exports = rcompare\n", "const compare = require('./compare')\nconst compareLoose = (a, b) => compare(a, b, true)\nmodule.exports = compareLoose\n", "const SemVer = require('../classes/semver')\nconst compareBuild = (a, b, loose) => {\n const versionA = new SemVer(a, loose)\n const versionB = new SemVer(b, loose)\n return versionA.compare(versionB) || versionA.compareBuild(versionB)\n}\nmodule.exports = compareBuild\n", "const compareBuild = require('./compare-build')\nconst sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))\nmodule.exports = sort\n", "const compareBuild = require('./compare-build')\nconst rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose))\nmodule.exports = rsort\n", "const compare = require('./compare')\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n", "const compare = require('./compare')\nconst lt = (a, b, loose) => compare(a, b, loose) < 0\nmodule.exports = lt\n", "const compare = require('./compare')\nconst eq = (a, b, loose) => compare(a, b, loose) === 0\nmodule.exports = eq\n", "const compare = require('./compare')\nconst neq = (a, b, loose) => compare(a, b, loose) !== 0\nmodule.exports = neq\n", "const compare = require('./compare')\nconst gte = (a, b, loose) => compare(a, b, loose) >= 0\nmodule.exports = gte\n", "const compare = require('./compare')\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n", "const eq = require('./eq')\nconst neq = require('./neq')\nconst gt = require('./gt')\nconst gte = require('./gte')\nconst lt = require('./lt')\nconst lte = require('./lte')\n\nconst cmp = (a, op, b, loose) => {\n switch (op) {\n case '===':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a === b\n\n case '!==':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a !== b\n\n case '':\n case '=':\n case '==':\n return eq(a, b, loose)\n\n case '!=':\n return neq(a, b, loose)\n\n case '>':\n return gt(a, b, loose)\n\n case '>=':\n return gte(a, b, loose)\n\n case '<':\n return lt(a, b, loose)\n\n case '<=':\n return lte(a, b, loose)\n\n default:\n throw new TypeError(`Invalid operator: ${op}`)\n }\n}\nmodule.exports = cmp\n", "const SemVer = require('../classes/semver')\nconst parse = require('./parse')\nconst { re, t } = require('../internal/re')\n\nconst coerce = (version, options) => {\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version === 'number') {\n version = String(version)\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n options = options || {}\n\n let match = null\n if (!options.rtl) {\n match = version.match(re[t.COERCE])\n } else {\n // Find the right-most coercible string that does not share\n // a terminus with a more left-ward coercible string.\n // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'\n //\n // Walk through the string checking with a /g regexp\n // Manually set the index so as to pick up overlapping matches.\n // Stop when we get a match that ends at the string end, since no\n // coercible string can be more right-ward without the same terminus.\n let next\n while ((next = re[t.COERCERTL].exec(version)) &&\n (!match || match.index + match[0].length !== version.length)\n ) {\n if (!match ||\n next.index + next[0].length !== match.index + match[0].length) {\n match = next\n }\n re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length\n }\n // leave it in a clean state\n re[t.COERCERTL].lastIndex = -1\n }\n\n if (match === null) {\n return null\n }\n\n return parse(`${match[2]}.${match[3] || '0'}.${match[4] || '0'}`, options)\n}\nmodule.exports = coerce\n", "'use strict'\nmodule.exports = function (Yallist) {\n Yallist.prototype[Symbol.iterator] = function* () {\n for (let walker = this.head; walker; walker = walker.next) {\n yield walker.value\n }\n }\n}\n", "'use strict'\nmodule.exports = Yallist\n\nYallist.Node = Node\nYallist.create = Yallist\n\nfunction Yallist (list) {\n var self = this\n if (!(self instanceof Yallist)) {\n self = new Yallist()\n }\n\n self.tail = null\n self.head = null\n self.length = 0\n\n if (list && typeof list.forEach === 'function') {\n list.forEach(function (item) {\n self.push(item)\n })\n } else if (arguments.length > 0) {\n for (var i = 0, l = arguments.length; i < l; i++) {\n self.push(arguments[i])\n }\n }\n\n return self\n}\n\nYallist.prototype.removeNode = function (node) {\n if (node.list !== this) {\n throw new Error('removing node which does not belong to this list')\n }\n\n var next = node.next\n var 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 node.list.length--\n node.next = null\n node.prev = null\n node.list = null\n\n return next\n}\n\nYallist.prototype.unshiftNode = function (node) {\n if (node === this.head) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var 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\nYallist.prototype.pushNode = function (node) {\n if (node === this.tail) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var 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\nYallist.prototype.push = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n push(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.unshift = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n unshift(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.pop = function () {\n if (!this.tail) {\n return undefined\n }\n\n var res = this.tail.value\n this.tail = this.tail.prev\n if (this.tail) {\n this.tail.next = null\n } else {\n this.head = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.shift = function () {\n if (!this.head) {\n return undefined\n }\n\n var res = this.head.value\n this.head = this.head.next\n if (this.head) {\n this.head.prev = null\n } else {\n this.tail = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.forEach = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.head, i = 0; walker !== null; i++) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.next\n }\n}\n\nYallist.prototype.forEachReverse = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.prev\n }\n}\n\nYallist.prototype.get = function (n) {\n for (var i = 0, walker = this.head; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.next\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.getReverse = function (n) {\n for (var i = 0, walker = this.tail; walker !== null && 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 !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.map = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.head; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.next\n }\n return res\n}\n\nYallist.prototype.mapReverse = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.tail; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.prev\n }\n return res\n}\n\nYallist.prototype.reduce = function (fn, initial) {\n var acc\n var walker = this.head\n if (arguments.length > 1) {\n acc = initial\n } else if (this.head) {\n walker = this.head.next\n acc = this.head.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = 0; walker !== null; i++) {\n acc = fn(acc, walker.value, i)\n walker = walker.next\n }\n\n return acc\n}\n\nYallist.prototype.reduceReverse = function (fn, initial) {\n var acc\n var walker = this.tail\n if (arguments.length > 1) {\n acc = initial\n } else if (this.tail) {\n walker = this.tail.prev\n acc = this.tail.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = this.length - 1; walker !== null; i--) {\n acc = fn(acc, walker.value, i)\n walker = walker.prev\n }\n\n return acc\n}\n\nYallist.prototype.toArray = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.head; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.next\n }\n return arr\n}\n\nYallist.prototype.toArrayReverse = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.tail; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.prev\n }\n return arr\n}\n\nYallist.prototype.slice = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var 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 for (var i = 0, walker = this.head; walker !== null && i < from; i++) {\n walker = walker.next\n }\n for (; walker !== null && i < to; i++, walker = walker.next) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.sliceReverse = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var 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 for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {\n walker = walker.prev\n }\n for (; walker !== null && i > from; i--, walker = walker.prev) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.splice = function (start, deleteCount, ...nodes) {\n if (start > this.length) {\n start = this.length - 1\n }\n if (start < 0) {\n start = this.length + start;\n }\n\n for (var i = 0, walker = this.head; walker !== null && i < start; i++) {\n walker = walker.next\n }\n\n var ret = []\n for (var i = 0; walker && i < deleteCount; i++) {\n ret.push(walker.value)\n walker = this.removeNode(walker)\n }\n if (walker === null) {\n walker = this.tail\n }\n\n if (walker !== this.head && walker !== this.tail) {\n walker = walker.prev\n }\n\n for (var i = 0; i < nodes.length; i++) {\n walker = insert(this, walker, nodes[i])\n }\n return ret;\n}\n\nYallist.prototype.reverse = function () {\n var head = this.head\n var tail = this.tail\n for (var walker = head; walker !== null; walker = walker.prev) {\n var 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\nfunction insert (self, node, value) {\n var inserted = node === self.head ?\n new Node(value, null, node, self) :\n new Node(value, node, node.next, self)\n\n if (inserted.next === null) {\n self.tail = inserted\n }\n if (inserted.prev === null) {\n self.head = inserted\n }\n\n self.length++\n\n return inserted\n}\n\nfunction push (self, item) {\n self.tail = new Node(item, self.tail, null, self)\n if (!self.head) {\n self.head = self.tail\n }\n self.length++\n}\n\nfunction unshift (self, item) {\n self.head = new Node(item, null, self.head, self)\n if (!self.tail) {\n self.tail = self.head\n }\n self.length++\n}\n\nfunction Node (value, prev, next, list) {\n if (!(this instanceof Node)) {\n return new Node(value, prev, next, list)\n }\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 = null\n }\n\n if (next) {\n next.prev = this\n this.next = next\n } else {\n this.next = null\n }\n}\n\ntry {\n // add if support for Symbol.iterator is present\n require('./iterator.js')(Yallist)\n} catch (er) {}\n", "'use strict'\n\n// A linked list to keep track of recently-used-ness\nconst Yallist = require('yallist')\n\nconst MAX = Symbol('max')\nconst LENGTH = Symbol('length')\nconst LENGTH_CALCULATOR = Symbol('lengthCalculator')\nconst ALLOW_STALE = Symbol('allowStale')\nconst MAX_AGE = Symbol('maxAge')\nconst DISPOSE = Symbol('dispose')\nconst NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet')\nconst LRU_LIST = Symbol('lruList')\nconst CACHE = Symbol('cache')\nconst UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet')\n\nconst naiveLength = () => 1\n\n// lruList is a yallist where the head is the youngest\n// item, and the tail is the oldest. the list contains the Hit\n// objects as the entries.\n// Each Hit object has a reference to its Yallist.Node. This\n// never changes.\n//\n// cache is a Map (or PseudoMap) that matches the keys to\n// the Yallist.Node object.\nclass LRUCache {\n constructor (options) {\n if (typeof options === 'number')\n options = { max: options }\n\n if (!options)\n options = {}\n\n if (options.max && (typeof options.max !== 'number' || options.max < 0))\n throw new TypeError('max must be a non-negative number')\n // Kind of weird to have a default max of Infinity, but oh well.\n const max = this[MAX] = options.max || Infinity\n\n const lc = options.length || naiveLength\n this[LENGTH_CALCULATOR] = (typeof lc !== 'function') ? naiveLength : lc\n this[ALLOW_STALE] = options.stale || false\n if (options.maxAge && typeof options.maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n this[MAX_AGE] = options.maxAge || 0\n this[DISPOSE] = options.dispose\n this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false\n this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false\n this.reset()\n }\n\n // resize the cache when the max changes.\n set max (mL) {\n if (typeof mL !== 'number' || mL < 0)\n throw new TypeError('max must be a non-negative number')\n\n this[MAX] = mL || Infinity\n trim(this)\n }\n get max () {\n return this[MAX]\n }\n\n set allowStale (allowStale) {\n this[ALLOW_STALE] = !!allowStale\n }\n get allowStale () {\n return this[ALLOW_STALE]\n }\n\n set maxAge (mA) {\n if (typeof mA !== 'number')\n throw new TypeError('maxAge must be a non-negative number')\n\n this[MAX_AGE] = mA\n trim(this)\n }\n get maxAge () {\n return this[MAX_AGE]\n }\n\n // resize the cache when the lengthCalculator changes.\n set lengthCalculator (lC) {\n if (typeof lC !== 'function')\n lC = naiveLength\n\n if (lC !== this[LENGTH_CALCULATOR]) {\n this[LENGTH_CALCULATOR] = lC\n this[LENGTH] = 0\n this[LRU_LIST].forEach(hit => {\n hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key)\n this[LENGTH] += hit.length\n })\n }\n trim(this)\n }\n get lengthCalculator () { return this[LENGTH_CALCULATOR] }\n\n get length () { return this[LENGTH] }\n get itemCount () { return this[LRU_LIST].length }\n\n rforEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].tail; walker !== null;) {\n const prev = walker.prev\n forEachStep(this, fn, walker, thisp)\n walker = prev\n }\n }\n\n forEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].head; walker !== null;) {\n const next = walker.next\n forEachStep(this, fn, walker, thisp)\n walker = next\n }\n }\n\n keys () {\n return this[LRU_LIST].toArray().map(k => k.key)\n }\n\n values () {\n return this[LRU_LIST].toArray().map(k => k.value)\n }\n\n reset () {\n if (this[DISPOSE] &&\n this[LRU_LIST] &&\n this[LRU_LIST].length) {\n this[LRU_LIST].forEach(hit => this[DISPOSE](hit.key, hit.value))\n }\n\n this[CACHE] = new Map() // hash of items by key\n this[LRU_LIST] = new Yallist() // list of items in order of use recency\n this[LENGTH] = 0 // length of items in the list\n }\n\n dump () {\n return this[LRU_LIST].map(hit =>\n isStale(this, hit) ? false : {\n k: hit.key,\n v: hit.value,\n e: hit.now + (hit.maxAge || 0)\n }).toArray().filter(h => h)\n }\n\n dumpLru () {\n return this[LRU_LIST]\n }\n\n set (key, value, maxAge) {\n maxAge = maxAge || this[MAX_AGE]\n\n if (maxAge && typeof maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n\n const now = maxAge ? Date.now() : 0\n const len = this[LENGTH_CALCULATOR](value, key)\n\n if (this[CACHE].has(key)) {\n if (len > this[MAX]) {\n del(this, this[CACHE].get(key))\n return false\n }\n\n const node = this[CACHE].get(key)\n const item = node.value\n\n // dispose of the old one before overwriting\n // split out into 2 ifs for better coverage tracking\n if (this[DISPOSE]) {\n if (!this[NO_DISPOSE_ON_SET])\n this[DISPOSE](key, item.value)\n }\n\n item.now = now\n item.maxAge = maxAge\n item.value = value\n this[LENGTH] += len - item.length\n item.length = len\n this.get(key)\n trim(this)\n return true\n }\n\n const hit = new Entry(key, value, len, now, maxAge)\n\n // oversized objects fall out of cache automatically.\n if (hit.length > this[MAX]) {\n if (this[DISPOSE])\n this[DISPOSE](key, value)\n\n return false\n }\n\n this[LENGTH] += hit.length\n this[LRU_LIST].unshift(hit)\n this[CACHE].set(key, this[LRU_LIST].head)\n trim(this)\n return true\n }\n\n has (key) {\n if (!this[CACHE].has(key)) return false\n const hit = this[CACHE].get(key).value\n return !isStale(this, hit)\n }\n\n get (key) {\n return get(this, key, true)\n }\n\n peek (key) {\n return get(this, key, false)\n }\n\n pop () {\n const node = this[LRU_LIST].tail\n if (!node)\n return null\n\n del(this, node)\n return node.value\n }\n\n del (key) {\n del(this, this[CACHE].get(key))\n }\n\n load (arr) {\n // reset the cache\n this.reset()\n\n const now = Date.now()\n // A previous serialized cache has the most recent items first\n for (let l = arr.length - 1; l >= 0; l--) {\n const hit = arr[l]\n const expiresAt = hit.e || 0\n if (expiresAt === 0)\n // the item was created without expiration in a non aged cache\n this.set(hit.k, hit.v)\n else {\n const maxAge = expiresAt - now\n // dont add already expired items\n if (maxAge > 0) {\n this.set(hit.k, hit.v, maxAge)\n }\n }\n }\n }\n\n prune () {\n this[CACHE].forEach((value, key) => get(this, key, false))\n }\n}\n\nconst get = (self, key, doUse) => {\n const node = self[CACHE].get(key)\n if (node) {\n const hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n return undefined\n } else {\n if (doUse) {\n if (self[UPDATE_AGE_ON_GET])\n node.value.now = Date.now()\n self[LRU_LIST].unshiftNode(node)\n }\n }\n return hit.value\n }\n}\n\nconst isStale = (self, hit) => {\n if (!hit || (!hit.maxAge && !self[MAX_AGE]))\n return false\n\n const diff = Date.now() - hit.now\n return hit.maxAge ? diff > hit.maxAge\n : self[MAX_AGE] && (diff > self[MAX_AGE])\n}\n\nconst trim = self => {\n if (self[LENGTH] > self[MAX]) {\n for (let walker = self[LRU_LIST].tail;\n self[LENGTH] > self[MAX] && walker !== null;) {\n // We know that we're about to delete this one, and also\n // what the next least recently used key will be, so just\n // go ahead and set it now.\n const prev = walker.prev\n del(self, walker)\n walker = prev\n }\n }\n}\n\nconst del = (self, node) => {\n if (node) {\n const hit = node.value\n if (self[DISPOSE])\n self[DISPOSE](hit.key, hit.value)\n\n self[LENGTH] -= hit.length\n self[CACHE].delete(hit.key)\n self[LRU_LIST].removeNode(node)\n }\n}\n\nclass Entry {\n constructor (key, value, length, now, maxAge) {\n this.key = key\n this.value = value\n this.length = length\n this.now = now\n this.maxAge = maxAge || 0\n }\n}\n\nconst forEachStep = (self, fn, node, thisp) => {\n let hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n hit = undefined\n }\n if (hit)\n fn.call(thisp, hit.value, hit.key, self)\n}\n\nmodule.exports = LRUCache\n", "// hoisted class for cyclic dependency\nclass Range {\n constructor (range, options) {\n options = parseOptions(options)\n\n if (range instanceof Range) {\n if (\n range.loose === !!options.loose &&\n range.includePrerelease === !!options.includePrerelease\n ) {\n return range\n } else {\n return new Range(range.raw, options)\n }\n }\n\n if (range instanceof Comparator) {\n // just put it in the set and return\n this.raw = range.value\n this.set = [[range]]\n this.format()\n return this\n }\n\n this.options = options\n this.loose = !!options.loose\n this.includePrerelease = !!options.includePrerelease\n\n // First, split based on boolean or ||\n this.raw = range\n this.set = range\n .split('||')\n // map the range to a 2d array of comparators\n .map(r => this.parseRange(r.trim()))\n // throw out any comparator lists that are empty\n // this generally means that it was not a valid range, which is allowed\n // in loose mode, but will still throw if the WHOLE range is invalid.\n .filter(c => c.length)\n\n if (!this.set.length) {\n throw new TypeError(`Invalid SemVer Range: ${range}`)\n }\n\n // if we have any that are not the null set, throw out null sets.\n if (this.set.length > 1) {\n // keep the first one, in case they're all null sets\n const first = this.set[0]\n this.set = this.set.filter(c => !isNullSet(c[0]))\n if (this.set.length === 0) {\n this.set = [first]\n } else if (this.set.length > 1) {\n // if we have any that are *, then the range is just *\n for (const c of this.set) {\n if (c.length === 1 && isAny(c[0])) {\n this.set = [c]\n break\n }\n }\n }\n }\n\n this.format()\n }\n\n format () {\n this.range = this.set\n .map((comps) => {\n return comps.join(' ').trim()\n })\n .join('||')\n .trim()\n return this.range\n }\n\n toString () {\n return this.range\n }\n\n parseRange (range) {\n range = range.trim()\n\n // memoize range parsing for performance.\n // this is a very hot path, and fully deterministic.\n const memoOpts =\n (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) |\n (this.options.loose && FLAG_LOOSE)\n const memoKey = memoOpts + ':' + range\n const cached = cache.get(memoKey)\n if (cached) {\n return cached\n }\n\n const loose = this.options.loose\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n range = range.replace(hr, hyphenReplace(this.options.includePrerelease))\n debug('hyphen replace', range)\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n debug('comparator trim', range)\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n\n // normalize spaces\n range = range.split(/\\s+/).join(' ')\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n let rangeList = range\n .split(' ')\n .map(comp => parseComparator(comp, this.options))\n .join(' ')\n .split(/\\s+/)\n // >=0.0.0 is equivalent to *\n .map(comp => replaceGTE0(comp, this.options))\n\n if (loose) {\n // in loose mode, throw out any that are not valid comparators\n rangeList = rangeList.filter(comp => {\n debug('loose invalid filter', comp, this.options)\n return !!comp.match(re[t.COMPARATORLOOSE])\n })\n }\n debug('range list', rangeList)\n\n // if any comparators are the null set, then replace with JUST null set\n // if more than one comparator, remove any * comparators\n // also, don't include the same comparator more than once\n const rangeMap = new Map()\n const comparators = rangeList.map(comp => new Comparator(comp, this.options))\n for (const comp of comparators) {\n if (isNullSet(comp)) {\n return [comp]\n }\n rangeMap.set(comp.value, comp)\n }\n if (rangeMap.size > 1 && rangeMap.has('')) {\n rangeMap.delete('')\n }\n\n const result = [...rangeMap.values()]\n cache.set(memoKey, result)\n return result\n }\n\n intersects (range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required')\n }\n\n return this.set.some((thisComparators) => {\n return (\n isSatisfiable(thisComparators, options) &&\n range.set.some((rangeComparators) => {\n return (\n isSatisfiable(rangeComparators, options) &&\n thisComparators.every((thisComparator) => {\n return rangeComparators.every((rangeComparator) => {\n return thisComparator.intersects(rangeComparator, options)\n })\n })\n )\n })\n )\n })\n }\n\n // if ANY of the sets match ALL of its comparators, then pass\n test (version) {\n if (!version) {\n return false\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n for (let i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true\n }\n }\n return false\n }\n}\n\nmodule.exports = Range\n\nconst LRU = require('lru-cache')\nconst cache = new LRU({ max: 1000 })\n\nconst parseOptions = require('../internal/parse-options')\nconst Comparator = require('./comparator')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst {\n re,\n t,\n comparatorTrimReplace,\n tildeTrimReplace,\n caretTrimReplace,\n} = require('../internal/re')\nconst { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require('../internal/constants')\n\nconst isNullSet = c => c.value === '<0.0.0-0'\nconst isAny = c => c.value === ''\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nconst isSatisfiable = (comparators, options) => {\n let result = true\n const remainingComparators = comparators.slice()\n let testComparator = remainingComparators.pop()\n\n while (result && remainingComparators.length) {\n result = remainingComparators.every((otherComparator) => {\n return testComparator.intersects(otherComparator, options)\n })\n\n testComparator = remainingComparators.pop()\n }\n\n return result\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nconst parseComparator = (comp, options) => {\n debug('comp', comp, options)\n comp = replaceCarets(comp, options)\n debug('caret', comp)\n comp = replaceTildes(comp, options)\n debug('tildes', comp)\n comp = replaceXRanges(comp, options)\n debug('xrange', comp)\n comp = replaceStars(comp, options)\n debug('stars', comp)\n return comp\n}\n\nconst isX = id => !id || id.toLowerCase() === 'x' || id === '*'\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nconst replaceTildes = (comp, options) =>\n comp.trim().split(/\\s+/).map((c) => {\n return replaceTilde(c, options)\n }).join(' ')\n\nconst replaceTilde = (comp, options) => {\n const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('tilde', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0 <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0-0\n ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`\n } else if (pr) {\n debug('replaceTilde pr', pr)\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0-0\n ret = `>=${M}.${m}.${p\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('tilde return', ret)\n return ret\n })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nconst replaceCarets = (comp, options) =>\n comp.trim().split(/\\s+/).map((c) => {\n return replaceCaret(c, options)\n }).join(' ')\n\nconst replaceCaret = (comp, options) => {\n debug('caret', comp, options)\n const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]\n const z = options.includePrerelease ? '-0' : ''\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('caret', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n } else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`\n }\n } else if (pr) {\n debug('replaceCaret pr', pr)\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${+M + 1}.0.0-0`\n }\n } else {\n debug('no pr')\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p\n } <${+M + 1}.0.0-0`\n }\n }\n\n debug('caret return', ret)\n return ret\n })\n}\n\nconst replaceXRanges = (comp, options) => {\n debug('replaceXRanges', comp, options)\n return comp.split(/\\s+/).map((c) => {\n return replaceXRange(c, options)\n }).join(' ')\n}\n\nconst replaceXRange = (comp, options) => {\n comp = comp.trim()\n const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]\n return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n debug('xRange', comp, ret, gtlt, M, m, p, pr)\n const xM = isX(M)\n const xm = xM || isX(m)\n const xp = xm || isX(p)\n const anyX = xp\n\n if (gtlt === '=' && anyX) {\n gtlt = ''\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options.includePrerelease ? '-0' : ''\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0'\n } else {\n // nothing is forbidden\n ret = '*'\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0\n }\n p = 0\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n gtlt = '>='\n if (xm) {\n M = +M + 1\n m = 0\n p = 0\n } else {\n m = +m + 1\n p = 0\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<'\n if (xm) {\n M = +M + 1\n } else {\n m = +m + 1\n }\n }\n\n if (gtlt === '<') {\n pr = '-0'\n }\n\n ret = `${gtlt + M}.${m}.${p}${pr}`\n } else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`\n } else if (xp) {\n ret = `>=${M}.${m}.0${pr\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('xRange return', ret)\n\n return ret\n })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nconst replaceStars = (comp, options) => {\n debug('replaceStars', comp, options)\n // Looseness is ignored here. star is always as loose as it gets!\n return comp.trim().replace(re[t.STAR], '')\n}\n\nconst replaceGTE0 = (comp, options) => {\n debug('replaceGTE0', comp, options)\n return comp.trim()\n .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\nconst hyphenReplace = incPr => ($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr, tb) => {\n if (isX(fM)) {\n from = ''\n } else if (isX(fm)) {\n from = `>=${fM}.0.0${incPr ? '-0' : ''}`\n } else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`\n } else if (fpr) {\n from = `>=${from}`\n } else {\n from = `>=${from}${incPr ? '-0' : ''}`\n }\n\n if (isX(tM)) {\n to = ''\n } else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`\n } else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`\n } else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`\n } else if (incPr) {\n to = `<${tM}.${tm}.${+tp + 1}-0`\n } else {\n to = `<=${to}`\n }\n\n return (`${from} ${to}`).trim()\n}\n\nconst testSet = (set, version, options) => {\n for (let i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false\n }\n }\n\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (let i = 0; i < set.length; i++) {\n debug(set[i].semver)\n if (set[i].semver === Comparator.ANY) {\n continue\n }\n\n if (set[i].semver.prerelease.length > 0) {\n const allowed = set[i].semver\n if (allowed.major === version.major &&\n allowed.minor === version.minor &&\n allowed.patch === version.patch) {\n return true\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false\n }\n\n return true\n}\n", "const ANY = Symbol('SemVer ANY')\n// hoisted class for cyclic dependency\nclass Comparator {\n static get ANY () {\n return ANY\n }\n\n constructor (comp, options) {\n options = parseOptions(options)\n\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp\n } else {\n comp = comp.value\n }\n }\n\n debug('comparator', comp, options)\n this.options = options\n this.loose = !!options.loose\n this.parse(comp)\n\n if (this.semver === ANY) {\n this.value = ''\n } else {\n this.value = this.operator + this.semver.version\n }\n\n debug('comp', this)\n }\n\n parse (comp) {\n const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n const m = comp.match(r)\n\n if (!m) {\n throw new TypeError(`Invalid comparator: ${comp}`)\n }\n\n this.operator = m[1] !== undefined ? m[1] : ''\n if (this.operator === '=') {\n this.operator = ''\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY\n } else {\n this.semver = new SemVer(m[2], this.options.loose)\n }\n }\n\n toString () {\n return this.value\n }\n\n test (version) {\n debug('Comparator.test', version, this.options.loose)\n\n if (this.semver === ANY || version === ANY) {\n return true\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n return cmp(version, this.operator, this.semver, this.options)\n }\n\n intersects (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required')\n }\n\n if (this.operator === '') {\n if (this.value === '') {\n return true\n }\n return new Range(comp.value, options).test(this.value)\n } else if (comp.operator === '') {\n if (comp.value === '') {\n return true\n }\n return new Range(this.value, options).test(comp.semver)\n }\n\n options = parseOptions(options)\n\n // Special cases where nothing can possibly be lower\n if (options.includePrerelease &&\n (this.value === '<0.0.0-0' || comp.value === '<0.0.0-0')) {\n return false\n }\n if (!options.includePrerelease &&\n (this.value.startsWith('<0.0.0') || comp.value.startsWith('<0.0.0'))) {\n return false\n }\n\n // Same direction increasing (> or >=)\n if (this.operator.startsWith('>') && comp.operator.startsWith('>')) {\n return true\n }\n // Same direction decreasing (< or <=)\n if (this.operator.startsWith('<') && comp.operator.startsWith('<')) {\n return true\n }\n // same SemVer and both sides are inclusive (<= or >=)\n if (\n (this.semver.version === comp.semver.version) &&\n this.operator.includes('=') && comp.operator.includes('=')) {\n return true\n }\n // opposite directions less than\n if (cmp(this.semver, '<', comp.semver, options) &&\n this.operator.startsWith('>') && comp.operator.startsWith('<')) {\n return true\n }\n // opposite directions greater than\n if (cmp(this.semver, '>', comp.semver, options) &&\n this.operator.startsWith('<') && comp.operator.startsWith('>')) {\n return true\n }\n return false\n }\n}\n\nmodule.exports = Comparator\n\nconst parseOptions = require('../internal/parse-options')\nconst { re, t } = require('../internal/re')\nconst cmp = require('../functions/cmp')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst Range = require('./range')\n", "const Range = require('../classes/range')\nconst satisfies = (version, range, options) => {\n try {\n range = new Range(range, options)\n } catch (er) {\n return false\n }\n return range.test(version)\n}\nmodule.exports = satisfies\n", "const Range = require('../classes/range')\n\n// Mostly just for testing and legacy API reasons\nconst toComparators = (range, options) =>\n new Range(range, options).set\n .map(comp => comp.map(c => c.value).join(' ').trim().split(' '))\n\nmodule.exports = toComparators\n", "const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\n\nconst maxSatisfying = (versions, range, options) => {\n let max = null\n let maxSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!max || maxSV.compare(v) === -1) {\n // compare(max, v, true)\n max = v\n maxSV = new SemVer(max, options)\n }\n }\n })\n return max\n}\nmodule.exports = maxSatisfying\n", "const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst minSatisfying = (versions, range, options) => {\n let min = null\n let minSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!min || minSV.compare(v) === 1) {\n // compare(min, v, true)\n min = v\n minSV = new SemVer(min, options)\n }\n }\n })\n return min\n}\nmodule.exports = minSatisfying\n", "const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst gt = require('../functions/gt')\n\nconst minVersion = (range, loose) => {\n range = new Range(range, loose)\n\n let minver = new SemVer('0.0.0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = new SemVer('0.0.0-0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = null\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let setMin = null\n comparators.forEach((comparator) => {\n // Clone to avoid manipulating the comparator's semver object.\n const compver = new SemVer(comparator.semver.version)\n switch (comparator.operator) {\n case '>':\n if (compver.prerelease.length === 0) {\n compver.patch++\n } else {\n compver.prerelease.push(0)\n }\n compver.raw = compver.format()\n /* fallthrough */\n case '':\n case '>=':\n if (!setMin || gt(compver, setMin)) {\n setMin = compver\n }\n break\n case '<':\n case '<=':\n /* Ignore maximum versions */\n break\n /* istanbul ignore next */\n default:\n throw new Error(`Unexpected operation: ${comparator.operator}`)\n }\n })\n if (setMin && (!minver || gt(minver, setMin))) {\n minver = setMin\n }\n }\n\n if (minver && range.test(minver)) {\n return minver\n }\n\n return null\n}\nmodule.exports = minVersion\n", "const Range = require('../classes/range')\nconst validRange = (range, options) => {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, options).range || '*'\n } catch (er) {\n return null\n }\n}\nmodule.exports = validRange\n", "const SemVer = require('../classes/semver')\nconst Comparator = require('../classes/comparator')\nconst { ANY } = Comparator\nconst Range = require('../classes/range')\nconst satisfies = require('../functions/satisfies')\nconst gt = require('../functions/gt')\nconst lt = require('../functions/lt')\nconst lte = require('../functions/lte')\nconst gte = require('../functions/gte')\n\nconst outside = (version, range, hilo, options) => {\n version = new SemVer(version, options)\n range = new Range(range, options)\n\n let gtfn, ltefn, ltfn, comp, ecomp\n switch (hilo) {\n case '>':\n gtfn = gt\n ltefn = lte\n ltfn = lt\n comp = '>'\n ecomp = '>='\n break\n case '<':\n gtfn = lt\n ltefn = gte\n ltfn = gt\n comp = '<'\n ecomp = '<='\n break\n default:\n throw new TypeError('Must provide a hilo val of \"<\" or \">\"')\n }\n\n // If it satisfies the range it is not outside\n if (satisfies(version, range, options)) {\n return false\n }\n\n // From now on, variable terms are as if we're in \"gtr\" mode.\n // but note that everything is flipped for the \"ltr\" function.\n\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let high = null\n let low = null\n\n comparators.forEach((comparator) => {\n if (comparator.semver === ANY) {\n comparator = new Comparator('>=0.0.0')\n }\n high = high || comparator\n low = low || comparator\n if (gtfn(comparator.semver, high.semver, options)) {\n high = comparator\n } else if (ltfn(comparator.semver, low.semver, options)) {\n low = comparator\n }\n })\n\n // If the edge version comparator has a operator then our version\n // isn't outside it\n if (high.operator === comp || high.operator === ecomp) {\n return false\n }\n\n // If the lowest version comparator has an operator and our version\n // is less than it then it isn't higher than the range\n if ((!low.operator || low.operator === comp) &&\n ltefn(version, low.semver)) {\n return false\n } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n return false\n }\n }\n return true\n}\n\nmodule.exports = outside\n", "// Determine if version is greater than all the versions possible in the range.\nconst outside = require('./outside')\nconst gtr = (version, range, options) => outside(version, range, '>', options)\nmodule.exports = gtr\n", "const outside = require('./outside')\n// Determine if version is less than all the versions possible in the range\nconst ltr = (version, range, options) => outside(version, range, '<', options)\nmodule.exports = ltr\n", "const Range = require('../classes/range')\nconst intersects = (r1, r2, options) => {\n r1 = new Range(r1, options)\n r2 = new Range(r2, options)\n return r1.intersects(r2, options)\n}\nmodule.exports = intersects\n", "// given a set of versions and a range, create a \"simplified\" range\n// that includes the same versions that the original range does\n// If the original range is shorter than the simplified one, return that.\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\nmodule.exports = (versions, range, options) => {\n const set = []\n let first = null\n let prev = null\n const v = versions.sort((a, b) => compare(a, b, options))\n for (const version of v) {\n const included = satisfies(version, range, options)\n if (included) {\n prev = version\n if (!first) {\n first = version\n }\n } else {\n if (prev) {\n set.push([first, prev])\n }\n prev = null\n first = null\n }\n }\n if (first) {\n set.push([first, null])\n }\n\n const ranges = []\n for (const [min, max] of set) {\n if (min === max) {\n ranges.push(min)\n } else if (!max && min === v[0]) {\n ranges.push('*')\n } else if (!max) {\n ranges.push(`>=${min}`)\n } else if (min === v[0]) {\n ranges.push(`<=${max}`)\n } else {\n ranges.push(`${min} - ${max}`)\n }\n }\n const simplified = ranges.join(' || ')\n const original = typeof range.raw === 'string' ? range.raw : String(range)\n return simplified.length < original.length ? simplified : range\n}\n", "const Range = require('../classes/range.js')\nconst Comparator = require('../classes/comparator.js')\nconst { ANY } = Comparator\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\n\n// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff:\n// - Every simple range `r1, r2, ...` is a null set, OR\n// - Every simple range `r1, r2, ...` which is not a null set is a subset of\n// some `R1, R2, ...`\n//\n// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff:\n// - If c is only the ANY comparator\n// - If C is only the ANY comparator, return true\n// - Else if in prerelease mode, return false\n// - else replace c with `[>=0.0.0]`\n// - If C is only the ANY comparator\n// - if in prerelease mode, return true\n// - else replace C with `[>=0.0.0]`\n// - Let EQ be the set of = comparators in c\n// - If EQ is more than one, return true (null set)\n// - Let GT be the highest > or >= comparator in c\n// - Let LT be the lowest < or <= comparator in c\n// - If GT and LT, and GT.semver > LT.semver, return true (null set)\n// - If any C is a = range, and GT or LT are set, return false\n// - If EQ\n// - If GT, and EQ does not satisfy GT, return true (null set)\n// - If LT, and EQ does not satisfy LT, return true (null set)\n// - If EQ satisfies every C, return true\n// - Else return false\n// - If GT\n// - If GT.semver is lower than any > or >= comp in C, return false\n// - If GT is >=, and GT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the GT.semver tuple, return false\n// - If LT\n// - If LT.semver is greater than any < or <= comp in C, return false\n// - If LT is <=, and LT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the LT.semver tuple, return false\n// - Else return true\n\nconst subset = (sub, dom, options = {}) => {\n if (sub === dom) {\n return true\n }\n\n sub = new Range(sub, options)\n dom = new Range(dom, options)\n let sawNonNull = false\n\n OUTER: for (const simpleSub of sub.set) {\n for (const simpleDom of dom.set) {\n const isSub = simpleSubset(simpleSub, simpleDom, options)\n sawNonNull = sawNonNull || isSub !== null\n if (isSub) {\n continue OUTER\n }\n }\n // the null set is a subset of everything, but null simple ranges in\n // a complex range should be ignored. so if we saw a non-null range,\n // then we know this isn't a subset, but if EVERY simple range was null,\n // then it is a subset.\n if (sawNonNull) {\n return false\n }\n }\n return true\n}\n\nconst minimumVersionWithPreRelease = [new Comparator('>=0.0.0-0')]\nconst minimumVersion = [new Comparator('>=0.0.0')]\n\nconst simpleSubset = (sub, dom, options) => {\n if (sub === dom) {\n return true\n }\n\n if (sub.length === 1 && sub[0].semver === ANY) {\n if (dom.length === 1 && dom[0].semver === ANY) {\n return true\n } else if (options.includePrerelease) {\n sub = minimumVersionWithPreRelease\n } else {\n sub = minimumVersion\n }\n }\n\n if (dom.length === 1 && dom[0].semver === ANY) {\n if (options.includePrerelease) {\n return true\n } else {\n dom = minimumVersion\n }\n }\n\n const eqSet = new Set()\n let gt, lt\n for (const c of sub) {\n if (c.operator === '>' || c.operator === '>=') {\n gt = higherGT(gt, c, options)\n } else if (c.operator === '<' || c.operator === '<=') {\n lt = lowerLT(lt, c, options)\n } else {\n eqSet.add(c.semver)\n }\n }\n\n if (eqSet.size > 1) {\n return null\n }\n\n let gtltComp\n if (gt && lt) {\n gtltComp = compare(gt.semver, lt.semver, options)\n if (gtltComp > 0) {\n return null\n } else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) {\n return null\n }\n }\n\n // will iterate one or zero times\n for (const eq of eqSet) {\n if (gt && !satisfies(eq, String(gt), options)) {\n return null\n }\n\n if (lt && !satisfies(eq, String(lt), options)) {\n return null\n }\n\n for (const c of dom) {\n if (!satisfies(eq, String(c), options)) {\n return false\n }\n }\n\n return true\n }\n\n let higher, lower\n let hasDomLT, hasDomGT\n // if the subset has a prerelease, we need a comparator in the superset\n // with the same tuple and a prerelease, or it's not a subset\n let needDomLTPre = lt &&\n !options.includePrerelease &&\n lt.semver.prerelease.length ? lt.semver : false\n let needDomGTPre = gt &&\n !options.includePrerelease &&\n gt.semver.prerelease.length ? gt.semver : false\n // exception: <1.2.3-0 is the same as <1.2.3\n if (needDomLTPre && needDomLTPre.prerelease.length === 1 &&\n lt.operator === '<' && needDomLTPre.prerelease[0] === 0) {\n needDomLTPre = false\n }\n\n for (const c of dom) {\n hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>='\n hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<='\n if (gt) {\n if (needDomGTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomGTPre.major &&\n c.semver.minor === needDomGTPre.minor &&\n c.semver.patch === needDomGTPre.patch) {\n needDomGTPre = false\n }\n }\n if (c.operator === '>' || c.operator === '>=') {\n higher = higherGT(gt, c, options)\n if (higher === c && higher !== gt) {\n return false\n }\n } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options)) {\n return false\n }\n }\n if (lt) {\n if (needDomLTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomLTPre.major &&\n c.semver.minor === needDomLTPre.minor &&\n c.semver.patch === needDomLTPre.patch) {\n needDomLTPre = false\n }\n }\n if (c.operator === '<' || c.operator === '<=') {\n lower = lowerLT(lt, c, options)\n if (lower === c && lower !== lt) {\n return false\n }\n } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options)) {\n return false\n }\n }\n if (!c.operator && (lt || gt) && gtltComp !== 0) {\n return false\n }\n }\n\n // if there was a < or >, and nothing in the dom, then must be false\n // UNLESS it was limited by another range in the other direction.\n // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0\n if (gt && hasDomLT && !lt && gtltComp !== 0) {\n return false\n }\n\n if (lt && hasDomGT && !gt && gtltComp !== 0) {\n return false\n }\n\n // we needed a prerelease range in a specific tuple, but didn't get one\n // then this isn't a subset. eg >=1.2.3-pre is not a subset of >=1.0.0,\n // because it includes prereleases in the 1.2.3 tuple\n if (needDomGTPre || needDomLTPre) {\n return false\n }\n\n return true\n}\n\n// >=1.2.3 is lower than >1.2.3\nconst higherGT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp > 0 ? a\n : comp < 0 ? b\n : b.operator === '>' && a.operator === '>=' ? b\n : a\n}\n\n// <=1.2.3 is higher than <1.2.3\nconst lowerLT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp < 0 ? a\n : comp > 0 ? b\n : b.operator === '<' && a.operator === '<=' ? b\n : a\n}\n\nmodule.exports = subset\n", "// just pre-load all the stuff that index.js lazily exports\nconst internalRe = require('./internal/re')\nconst constants = require('./internal/constants')\nconst SemVer = require('./classes/semver')\nconst identifiers = require('./internal/identifiers')\nconst parse = require('./functions/parse')\nconst valid = require('./functions/valid')\nconst clean = require('./functions/clean')\nconst inc = require('./functions/inc')\nconst diff = require('./functions/diff')\nconst major = require('./functions/major')\nconst minor = require('./functions/minor')\nconst patch = require('./functions/patch')\nconst prerelease = require('./functions/prerelease')\nconst compare = require('./functions/compare')\nconst rcompare = require('./functions/rcompare')\nconst compareLoose = require('./functions/compare-loose')\nconst compareBuild = require('./functions/compare-build')\nconst sort = require('./functions/sort')\nconst rsort = require('./functions/rsort')\nconst gt = require('./functions/gt')\nconst lt = require('./functions/lt')\nconst eq = require('./functions/eq')\nconst neq = require('./functions/neq')\nconst gte = require('./functions/gte')\nconst lte = require('./functions/lte')\nconst cmp = require('./functions/cmp')\nconst coerce = require('./functions/coerce')\nconst Comparator = require('./classes/comparator')\nconst Range = require('./classes/range')\nconst satisfies = require('./functions/satisfies')\nconst toComparators = require('./ranges/to-comparators')\nconst maxSatisfying = require('./ranges/max-satisfying')\nconst minSatisfying = require('./ranges/min-satisfying')\nconst minVersion = require('./ranges/min-version')\nconst validRange = require('./ranges/valid')\nconst outside = require('./ranges/outside')\nconst gtr = require('./ranges/gtr')\nconst ltr = require('./ranges/ltr')\nconst intersects = require('./ranges/intersects')\nconst simplifyRange = require('./ranges/simplify')\nconst subset = require('./ranges/subset')\nmodule.exports = {\n parse,\n valid,\n clean,\n inc,\n diff,\n major,\n minor,\n patch,\n prerelease,\n compare,\n rcompare,\n compareLoose,\n compareBuild,\n sort,\n rsort,\n gt,\n lt,\n eq,\n neq,\n gte,\n lte,\n cmp,\n coerce,\n Comparator,\n Range,\n satisfies,\n toComparators,\n maxSatisfying,\n minSatisfying,\n minVersion,\n validRange,\n outside,\n gtr,\n ltr,\n intersects,\n simplifyRange,\n subset,\n SemVer,\n re: internalRe.re,\n src: internalRe.src,\n tokens: internalRe.t,\n SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION,\n RELEASE_TYPES: constants.RELEASE_TYPES,\n compareIdentifiers: identifiers.compareIdentifiers,\n rcompareIdentifiers: identifiers.rcompareIdentifiers,\n}\n", "'use strict'\n\n// turn tar(1) style args like `C` into the more verbose things like `cwd`\n\nconst argmap = new Map([\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\nmodule.exports = opt => opt ? Object.keys(opt).map(k => [\n argmap.has(k) ? argmap.get(k) : k, opt[k],\n]).reduce((set, kv) => (set[kv[0]] = kv[1], set), Object.create(null)) : {}\n", "'use strict'\nconst proc =\n typeof process === 'object' && process\n ? process\n : {\n stdout: null,\n stderr: null,\n }\nconst EE = require('events')\nconst Stream = require('stream')\nconst stringdecoder = require('string_decoder')\nconst SD = stringdecoder.StringDecoder\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')\n\nconst defer = fn => Promise.resolve().then(fn)\n\n// TODO remove when Node v8 support drops\nconst doIter = global._MP_NO_ITERATOR_SYMBOLS_ !== '1'\nconst ASYNCITERATOR =\n (doIter && Symbol.asyncIterator) || Symbol('asyncIterator not implemented')\nconst ITERATOR =\n (doIter && Symbol.iterator) || Symbol('iterator not implemented')\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.\nconst isEndish = ev => ev === 'end' || ev === 'finish' || ev === 'prefinish'\n\nconst isArrayBuffer = b =>\n b instanceof ArrayBuffer ||\n (typeof b === 'object' &&\n b.constructor &&\n b.constructor.name === 'ArrayBuffer' &&\n b.byteLength >= 0)\n\nconst isArrayBufferView = b => !Buffer.isBuffer(b) && ArrayBuffer.isView(b)\n\nclass Pipe {\n constructor(src, dest, opts) {\n this.src = src\n this.dest = dest\n this.opts = opts\n this.ondrain = () => src[RESUME]()\n dest.on('drain', this.ondrain)\n }\n unpipe() {\n this.dest.removeListener('drain', this.ondrain)\n }\n // istanbul ignore next - only here for the prototype\n proxyErrors() {}\n end() {\n this.unpipe()\n if (this.opts.end) this.dest.end()\n }\n}\n\nclass PipeProxyErrors extends Pipe {\n unpipe() {\n this.src.removeListener('error', this.proxyErrors)\n super.unpipe()\n }\n constructor(src, dest, opts) {\n super(src, dest, opts)\n this.proxyErrors = er => dest.emit('error', er)\n src.on('error', this.proxyErrors)\n }\n}\n\nclass Minipass extends Stream {\n constructor(options) {\n super()\n this[FLOWING] = false\n // whether we're explicitly paused\n this[PAUSED] = false\n this[PIPES] = []\n this[BUFFER] = []\n this[OBJECTMODE] = (options && options.objectMode) || false\n if (this[OBJECTMODE]) this[ENCODING] = null\n else this[ENCODING] = (options && options.encoding) || null\n if (this[ENCODING] === 'buffer') this[ENCODING] = null\n this[ASYNC] = (options && !!options.async) || false\n this[DECODER] = this[ENCODING] ? new SD(this[ENCODING]) : null\n this[EOF] = false\n this[EMITTED_END] = false\n this[EMITTING_END] = false\n this[CLOSED] = false\n this[EMITTED_ERROR] = null\n this.writable = true\n this.readable = true\n this[BUFFERLENGTH] = 0\n this[DESTROYED] = false\n if (options && options.debugExposeBuffer === true) {\n Object.defineProperty(this, 'buffer', { get: () => this[BUFFER] })\n }\n if (options && options.debugExposePipes === true) {\n Object.defineProperty(this, 'pipes', { get: () => this[PIPES] })\n }\n this[SIGNAL] = options && options.signal\n this[ABORTED] = false\n if (this[SIGNAL]) {\n this[SIGNAL].addEventListener('abort', () => this[ABORT]())\n if (this[SIGNAL].aborted) {\n this[ABORT]()\n }\n }\n }\n\n get bufferLength() {\n return this[BUFFERLENGTH]\n }\n\n get encoding() {\n return this[ENCODING]\n }\n set encoding(enc) {\n if (this[OBJECTMODE]) throw new Error('cannot set encoding in objectMode')\n\n if (\n this[ENCODING] &&\n enc !== this[ENCODING] &&\n ((this[DECODER] && this[DECODER].lastNeed) || this[BUFFERLENGTH])\n )\n throw new Error('cannot change encoding')\n\n if (this[ENCODING] !== enc) {\n this[DECODER] = enc ? new SD(enc) : null\n if (this[BUFFER].length)\n this[BUFFER] = this[BUFFER].map(chunk => this[DECODER].write(chunk))\n }\n\n this[ENCODING] = enc\n }\n\n setEncoding(enc) {\n this.encoding = enc\n }\n\n get objectMode() {\n return this[OBJECTMODE]\n }\n set objectMode(om) {\n this[OBJECTMODE] = this[OBJECTMODE] || !!om\n }\n\n get ['async']() {\n return this[ASYNC]\n }\n set ['async'](a) {\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 get aborted() {\n return this[ABORTED]\n }\n set aborted(_) {}\n\n write(chunk, encoding, cb) {\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') (cb = encoding), (encoding = 'utf8')\n\n if (!encoding) encoding = 'utf8'\n\n const fn = this[ASYNC] ? defer : f => f()\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 else switches us into object mode\n if (!this[OBJECTMODE] && !Buffer.isBuffer(chunk)) {\n if (isArrayBufferView(chunk))\n chunk = Buffer.from(chunk.buffer, chunk.byteOffset, chunk.byteLength)\n else if (isArrayBuffer(chunk)) chunk = Buffer.from(chunk)\n else if (typeof chunk !== 'string')\n // use the setter so we throw if we have encoding set\n this.objectMode = true\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 /* istanbul ignore if - maybe impossible? */\n if (this.flowing && this[BUFFERLENGTH] !== 0) this[FLUSH](true)\n\n if (this.flowing) this.emit('data', chunk)\n else this[BUFFERPUSH](chunk)\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.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 chunk = Buffer.from(chunk, encoding)\n }\n\n if (Buffer.isBuffer(chunk) && this[ENCODING])\n chunk = this[DECODER].write(chunk)\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)\n else this[BUFFERPUSH](chunk)\n\n if (this[BUFFERLENGTH] !== 0) this.emit('readable')\n\n if (cb) fn(cb)\n\n return this.flowing\n }\n\n read(n) {\n if (this[DESTROYED]) return null\n\n if (this[BUFFERLENGTH] === 0 || n === 0 || n > this[BUFFERLENGTH]) {\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 if (this.encoding) this[BUFFER] = [this[BUFFER].join('')]\n else this[BUFFER] = [Buffer.concat(this[BUFFER], this[BUFFERLENGTH])]\n }\n\n const ret = this[READ](n || null, this[BUFFER][0])\n this[MAYBE_EMIT_END]()\n return ret\n }\n\n [READ](n, chunk) {\n if (n === chunk.length || n === null) this[BUFFERSHIFT]()\n else {\n this[BUFFER][0] = chunk.slice(n)\n chunk = chunk.slice(0, n)\n this[BUFFERLENGTH] -= 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 end(chunk, encoding, cb) {\n if (typeof chunk === 'function') (cb = chunk), (chunk = null)\n if (typeof encoding === 'function') (cb = encoding), (encoding = 'utf8')\n if (chunk) 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 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 resume() {\n return this[RESUME]()\n }\n\n pause() {\n this[FLOWING] = false\n this[PAUSED] = true\n }\n\n get destroyed() {\n return this[DESTROYED]\n }\n\n get flowing() {\n return this[FLOWING]\n }\n\n get paused() {\n return this[PAUSED]\n }\n\n [BUFFERPUSH](chunk) {\n if (this[OBJECTMODE]) this[BUFFERLENGTH] += 1\n else this[BUFFERLENGTH] += chunk.length\n this[BUFFER].push(chunk)\n }\n\n [BUFFERSHIFT]() {\n if (this[OBJECTMODE]) this[BUFFERLENGTH] -= 1\n else this[BUFFERLENGTH] -= this[BUFFER][0].length\n return this[BUFFER].shift()\n }\n\n [FLUSH](noDrain) {\n do {} while (this[FLUSHCHUNK](this[BUFFERSHIFT]()) && this[BUFFER].length)\n\n if (!noDrain && !this[BUFFER].length && !this[EOF]) this.emit('drain')\n }\n\n [FLUSHCHUNK](chunk) {\n this.emit('data', chunk)\n return this.flowing\n }\n\n pipe(dest, opts) {\n if (this[DESTROYED]) return\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 this[PIPES].push(\n !opts.proxyErrors\n ? new Pipe(this, dest, opts)\n : new PipeProxyErrors(this, dest, opts)\n )\n if (this[ASYNC]) defer(() => this[RESUME]())\n else this[RESUME]()\n }\n\n return dest\n }\n\n unpipe(dest) {\n const p = this[PIPES].find(p => p.dest === dest)\n if (p) {\n this[PIPES].splice(this[PIPES].indexOf(p), 1)\n p.unpipe()\n }\n }\n\n addListener(ev, fn) {\n return this.on(ev, fn)\n }\n\n on(ev, fn) {\n const ret = super.on(ev, fn)\n if (ev === 'data' && !this[PIPES].length && !this.flowing) this[RESUME]()\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 if (this[ASYNC]) defer(() => fn.call(this, this[EMITTED_ERROR]))\n else fn.call(this, this[EMITTED_ERROR])\n }\n return ret\n }\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 emit(ev, data, ...extra) {\n // error and close are only events allowed after calling destroy()\n if (ev !== 'error' && ev !== 'close' && ev !== DESTROYED && this[DESTROYED])\n return\n else if (ev === 'data') {\n return !this[OBJECTMODE] && !data\n ? false\n : this[ASYNC]\n ? defer(() => this[EMITDATA](data))\n : this[EMITDATA](data)\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\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, data, ...extra)\n this[MAYBE_EMIT_END]()\n return ret\n }\n\n [EMITDATA](data) {\n for (const p of this[PIPES]) {\n if (p.dest.write(data) === false) this.pause()\n }\n const ret = super.emit('data', data)\n this[MAYBE_EMIT_END]()\n return ret\n }\n\n [EMITEND]() {\n if (this[EMITTED_END]) return\n\n this[EMITTED_END] = true\n this.readable = false\n if (this[ASYNC]) defer(() => this[EMITEND2]())\n else 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)\n }\n 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 // const all = await stream.collect()\n collect() {\n const buf = []\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]) buf.dataLength += c.length\n })\n return p.then(() => buf)\n }\n\n // const data = await stream.concat()\n concat() {\n return this[OBJECTMODE]\n ? Promise.reject(new Error('cannot concat in objectMode'))\n : this.collect().then(buf =>\n this[OBJECTMODE]\n ? Promise.reject(new Error('cannot concat in objectMode'))\n : this[ENCODING]\n ? buf.join('')\n : Buffer.concat(buf, buf.dataLength)\n )\n }\n\n // stream.promise().then(() => done, er => emitted error)\n 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 // for await (let chunk of stream)\n [ASYNCITERATOR]() {\n let stopped = false\n const stop = () => {\n this.pause()\n stopped = true\n return Promise.resolve({ done: true })\n }\n const next = () => {\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 = null\n let reject = null\n const onerr = er => {\n this.removeListener('data', ondata)\n this.removeListener('end', onend)\n this.removeListener(DESTROYED, ondestroy)\n stop()\n reject(er)\n }\n const ondata = value => {\n this.removeListener('error', onerr)\n this.removeListener('end', onend)\n this.removeListener(DESTROYED, ondestroy)\n this.pause()\n resolve({ value: value, done: !!this[EOF] })\n }\n const onend = () => {\n this.removeListener('error', onerr)\n this.removeListener('data', ondata)\n this.removeListener(DESTROYED, ondestroy)\n stop()\n resolve({ done: true })\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 [ASYNCITERATOR]() {\n return this\n },\n }\n }\n\n // for (let chunk of stream)\n [ITERATOR]() {\n let stopped = false\n const stop = () => {\n this.pause()\n this.removeListener(ERROR, stop)\n this.removeListener(DESTROYED, stop)\n this.removeListener('end', stop)\n stopped = true\n return { done: true }\n }\n\n const next = () => {\n if (stopped) return stop()\n const value = this.read()\n return value === null ? stop() : { value }\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 [ITERATOR]() {\n return this\n },\n }\n }\n\n destroy(er) {\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\n // throw away all buffered data, it's never coming out\n this[BUFFER].length = 0\n this[BUFFERLENGTH] = 0\n\n if (typeof this.close === 'function' && !this[CLOSED]) this.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 static isStream(s) {\n return (\n !!s &&\n (s instanceof Minipass ||\n s instanceof Stream ||\n (s instanceof EE &&\n // readable\n (typeof s.pipe === 'function' ||\n // writable\n (typeof s.write === 'function' && typeof s.end === 'function'))))\n )\n }\n}\n\nmodule.exports = Minipass\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.\nconst realZlibConstants = require('zlib').constants ||\n /* istanbul ignore next */ { ZLIB_VERNUM: 4736 }\n\nmodule.exports = Object.freeze(Object.assign(Object.create(null), {\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}, realZlibConstants))\n", "'use strict'\nconst proc = typeof process === 'object' && process ? process : {\n stdout: null,\n stderr: null,\n}\nconst EE = require('events')\nconst Stream = require('stream')\nconst SD = require('string_decoder').StringDecoder\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 BUFFERLENGTH = Symbol('bufferLength')\nconst BUFFERPUSH = Symbol('bufferPush')\nconst BUFFERSHIFT = Symbol('bufferShift')\nconst OBJECTMODE = Symbol('objectMode')\nconst DESTROYED = Symbol('destroyed')\nconst EMITDATA = Symbol('emitData')\nconst EMITEND = Symbol('emitEnd')\nconst EMITEND2 = Symbol('emitEnd2')\nconst ASYNC = Symbol('async')\n\nconst defer = fn => Promise.resolve().then(fn)\n\n// TODO remove when Node v8 support drops\nconst doIter = global._MP_NO_ITERATOR_SYMBOLS_ !== '1'\nconst ASYNCITERATOR = doIter && Symbol.asyncIterator\n || Symbol('asyncIterator not implemented')\nconst ITERATOR = doIter && Symbol.iterator\n || Symbol('iterator not implemented')\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.\nconst isEndish = ev =>\n ev === 'end' ||\n ev === 'finish' ||\n ev === 'prefinish'\n\nconst isArrayBuffer = b => b instanceof ArrayBuffer ||\n typeof b === 'object' &&\n b.constructor &&\n b.constructor.name === 'ArrayBuffer' &&\n b.byteLength >= 0\n\nconst isArrayBufferView = b => !Buffer.isBuffer(b) && ArrayBuffer.isView(b)\n\nclass Pipe {\n constructor (src, dest, opts) {\n this.src = src\n this.dest = dest\n this.opts = opts\n this.ondrain = () => src[RESUME]()\n dest.on('drain', this.ondrain)\n }\n unpipe () {\n this.dest.removeListener('drain', this.ondrain)\n }\n // istanbul ignore next - only here for the prototype\n proxyErrors () {}\n end () {\n this.unpipe()\n if (this.opts.end)\n this.dest.end()\n }\n}\n\nclass PipeProxyErrors extends Pipe {\n unpipe () {\n this.src.removeListener('error', this.proxyErrors)\n super.unpipe()\n }\n constructor (src, dest, opts) {\n super(src, dest, opts)\n this.proxyErrors = er => dest.emit('error', er)\n src.on('error', this.proxyErrors)\n }\n}\n\nmodule.exports = class Minipass extends Stream {\n constructor (options) {\n super()\n this[FLOWING] = false\n // whether we're explicitly paused\n this[PAUSED] = false\n this.pipes = []\n this.buffer = []\n this[OBJECTMODE] = options && options.objectMode || false\n if (this[OBJECTMODE])\n this[ENCODING] = null\n else\n this[ENCODING] = options && options.encoding || null\n if (this[ENCODING] === 'buffer')\n this[ENCODING] = null\n this[ASYNC] = options && !!options.async || false\n this[DECODER] = this[ENCODING] ? new SD(this[ENCODING]) : null\n this[EOF] = false\n this[EMITTED_END] = false\n this[EMITTING_END] = false\n this[CLOSED] = false\n this[EMITTED_ERROR] = null\n this.writable = true\n this.readable = true\n this[BUFFERLENGTH] = 0\n this[DESTROYED] = false\n }\n\n get bufferLength () { return this[BUFFERLENGTH] }\n\n get encoding () { return this[ENCODING] }\n set encoding (enc) {\n if (this[OBJECTMODE])\n throw new Error('cannot set encoding in objectMode')\n\n if (this[ENCODING] && enc !== this[ENCODING] &&\n (this[DECODER] && this[DECODER].lastNeed || this[BUFFERLENGTH]))\n throw new Error('cannot change encoding')\n\n if (this[ENCODING] !== enc) {\n this[DECODER] = enc ? new SD(enc) : null\n if (this.buffer.length)\n this.buffer = this.buffer.map(chunk => this[DECODER].write(chunk))\n }\n\n this[ENCODING] = enc\n }\n\n setEncoding (enc) {\n this.encoding = enc\n }\n\n get objectMode () { return this[OBJECTMODE] }\n set objectMode (om) { this[OBJECTMODE] = this[OBJECTMODE] || !!om }\n\n get ['async'] () { return this[ASYNC] }\n set ['async'] (a) { this[ASYNC] = this[ASYNC] || !!a }\n\n write (chunk, encoding, cb) {\n if (this[EOF])\n throw new Error('write after end')\n\n if (this[DESTROYED]) {\n this.emit('error', Object.assign(\n new Error('Cannot call write after a stream was destroyed'),\n { code: 'ERR_STREAM_DESTROYED' }\n ))\n return true\n }\n\n if (typeof encoding === 'function')\n cb = encoding, encoding = 'utf8'\n\n if (!encoding)\n encoding = 'utf8'\n\n const fn = this[ASYNC] ? defer : f => f()\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 else switches us into object mode\n if (!this[OBJECTMODE] && !Buffer.isBuffer(chunk)) {\n if (isArrayBufferView(chunk))\n chunk = Buffer.from(chunk.buffer, chunk.byteOffset, chunk.byteLength)\n else if (isArrayBuffer(chunk))\n chunk = Buffer.from(chunk)\n else if (typeof chunk !== 'string')\n // use the setter so we throw if we have encoding set\n this.objectMode = true\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 /* istanbul ignore if - maybe impossible? */\n if (this.flowing && this[BUFFERLENGTH] !== 0)\n this[FLUSH](true)\n\n if (this.flowing)\n this.emit('data', chunk)\n else\n this[BUFFERPUSH](chunk)\n\n if (this[BUFFERLENGTH] !== 0)\n this.emit('readable')\n\n if (cb)\n 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.length) {\n if (this[BUFFERLENGTH] !== 0)\n this.emit('readable')\n if (cb)\n 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 (typeof chunk === 'string' &&\n // unless it is a string already ready for us to use\n !(encoding === this[ENCODING] && !this[DECODER].lastNeed)) {\n chunk = Buffer.from(chunk, encoding)\n }\n\n if (Buffer.isBuffer(chunk) && this[ENCODING])\n chunk = this[DECODER].write(chunk)\n\n // Note: flushing CAN potentially switch us into not-flowing mode\n if (this.flowing && this[BUFFERLENGTH] !== 0)\n this[FLUSH](true)\n\n if (this.flowing)\n this.emit('data', chunk)\n else\n this[BUFFERPUSH](chunk)\n\n if (this[BUFFERLENGTH] !== 0)\n this.emit('readable')\n\n if (cb)\n fn(cb)\n\n return this.flowing\n }\n\n read (n) {\n if (this[DESTROYED])\n return null\n\n if (this[BUFFERLENGTH] === 0 || n === 0 || n > this[BUFFERLENGTH]) {\n this[MAYBE_EMIT_END]()\n return null\n }\n\n if (this[OBJECTMODE])\n n = null\n\n if (this.buffer.length > 1 && !this[OBJECTMODE]) {\n if (this.encoding)\n this.buffer = [this.buffer.join('')]\n else\n this.buffer = [Buffer.concat(this.buffer, this[BUFFERLENGTH])]\n }\n\n const ret = this[READ](n || null, this.buffer[0])\n this[MAYBE_EMIT_END]()\n return ret\n }\n\n [READ] (n, chunk) {\n if (n === chunk.length || n === null)\n this[BUFFERSHIFT]()\n else {\n this.buffer[0] = chunk.slice(n)\n chunk = chunk.slice(0, n)\n this[BUFFERLENGTH] -= n\n }\n\n this.emit('data', chunk)\n\n if (!this.buffer.length && !this[EOF])\n this.emit('drain')\n\n return chunk\n }\n\n end (chunk, encoding, cb) {\n if (typeof chunk === 'function')\n cb = chunk, chunk = null\n if (typeof encoding === 'function')\n cb = encoding, encoding = 'utf8'\n if (chunk)\n this.write(chunk, encoding)\n if (cb)\n 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])\n this[MAYBE_EMIT_END]()\n return this\n }\n\n // don't let the internal resume be overwritten\n [RESUME] () {\n if (this[DESTROYED])\n return\n\n this[PAUSED] = false\n this[FLOWING] = true\n this.emit('resume')\n if (this.buffer.length)\n this[FLUSH]()\n else if (this[EOF])\n this[MAYBE_EMIT_END]()\n else\n this.emit('drain')\n }\n\n resume () {\n return this[RESUME]()\n }\n\n pause () {\n this[FLOWING] = false\n this[PAUSED] = true\n }\n\n get destroyed () {\n return this[DESTROYED]\n }\n\n get flowing () {\n return this[FLOWING]\n }\n\n get paused () {\n return this[PAUSED]\n }\n\n [BUFFERPUSH] (chunk) {\n if (this[OBJECTMODE])\n this[BUFFERLENGTH] += 1\n else\n this[BUFFERLENGTH] += chunk.length\n this.buffer.push(chunk)\n }\n\n [BUFFERSHIFT] () {\n if (this.buffer.length) {\n if (this[OBJECTMODE])\n this[BUFFERLENGTH] -= 1\n else\n this[BUFFERLENGTH] -= this.buffer[0].length\n }\n return this.buffer.shift()\n }\n\n [FLUSH] (noDrain) {\n do {} while (this[FLUSHCHUNK](this[BUFFERSHIFT]()))\n\n if (!noDrain && !this.buffer.length && !this[EOF])\n this.emit('drain')\n }\n\n [FLUSHCHUNK] (chunk) {\n return chunk ? (this.emit('data', chunk), this.flowing) : false\n }\n\n pipe (dest, opts) {\n if (this[DESTROYED])\n return\n\n const ended = this[EMITTED_END]\n opts = opts || {}\n if (dest === proc.stdout || dest === proc.stderr)\n opts.end = false\n else\n 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)\n dest.end()\n } else {\n this.pipes.push(!opts.proxyErrors ? new Pipe(this, dest, opts)\n : new PipeProxyErrors(this, dest, opts))\n if (this[ASYNC])\n defer(() => this[RESUME]())\n else\n this[RESUME]()\n }\n\n return dest\n }\n\n unpipe (dest) {\n const p = this.pipes.find(p => p.dest === dest)\n if (p) {\n this.pipes.splice(this.pipes.indexOf(p), 1)\n p.unpipe()\n }\n }\n\n addListener (ev, fn) {\n return this.on(ev, fn)\n }\n\n on (ev, fn) {\n const ret = super.on(ev, fn)\n if (ev === 'data' && !this.pipes.length && !this.flowing)\n this[RESUME]()\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 if (this[ASYNC])\n defer(() => fn.call(this, this[EMITTED_ERROR]))\n else\n fn.call(this, this[EMITTED_ERROR])\n }\n return ret\n }\n\n get emittedEnd () {\n return this[EMITTED_END]\n }\n\n [MAYBE_EMIT_END] () {\n if (!this[EMITTING_END] &&\n !this[EMITTED_END] &&\n !this[DESTROYED] &&\n this.buffer.length === 0 &&\n this[EOF]) {\n this[EMITTING_END] = true\n this.emit('end')\n this.emit('prefinish')\n this.emit('finish')\n if (this[CLOSED])\n this.emit('close')\n this[EMITTING_END] = false\n }\n }\n\n emit (ev, data, ...extra) {\n // error and close are only events allowed after calling destroy()\n if (ev !== 'error' && ev !== 'close' && ev !== DESTROYED && this[DESTROYED])\n return\n else if (ev === 'data') {\n return !data ? false\n : this[ASYNC] ? defer(() => this[EMITDATA](data))\n : this[EMITDATA](data)\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])\n return\n const ret = super.emit('close')\n this.removeAllListeners('close')\n return ret\n } else if (ev === 'error') {\n this[EMITTED_ERROR] = data\n const ret = super.emit('error', data)\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, data, ...extra)\n this[MAYBE_EMIT_END]()\n return ret\n }\n\n [EMITDATA] (data) {\n for (const p of this.pipes) {\n if (p.dest.write(data) === false)\n this.pause()\n }\n const ret = super.emit('data', data)\n this[MAYBE_EMIT_END]()\n return ret\n }\n\n [EMITEND] () {\n if (this[EMITTED_END])\n return\n\n this[EMITTED_END] = true\n this.readable = false\n if (this[ASYNC])\n defer(() => this[EMITEND2]())\n else\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)\n }\n 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 // const all = await stream.collect()\n collect () {\n const buf = []\n if (!this[OBJECTMODE])\n 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.length\n })\n return p.then(() => buf)\n }\n\n // const data = await stream.concat()\n concat () {\n return this[OBJECTMODE]\n ? Promise.reject(new Error('cannot concat in objectMode'))\n : this.collect().then(buf =>\n this[OBJECTMODE]\n ? Promise.reject(new Error('cannot concat in objectMode'))\n : this[ENCODING] ? buf.join('') : Buffer.concat(buf, buf.dataLength))\n }\n\n // stream.promise().then(() => done, er => emitted error)\n 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 // for await (let chunk of stream)\n [ASYNCITERATOR] () {\n const next = () => {\n const res = this.read()\n if (res !== null)\n return Promise.resolve({ done: false, value: res })\n\n if (this[EOF])\n return Promise.resolve({ done: true })\n\n let resolve = null\n let reject = null\n const onerr = er => {\n this.removeListener('data', ondata)\n this.removeListener('end', onend)\n reject(er)\n }\n const ondata = value => {\n this.removeListener('error', onerr)\n this.removeListener('end', onend)\n this.pause()\n resolve({ value: value, done: !!this[EOF] })\n }\n const onend = () => {\n this.removeListener('error', onerr)\n this.removeListener('data', ondata)\n resolve({ done: true })\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 { next }\n }\n\n // for (let chunk of stream)\n [ITERATOR] () {\n const next = () => {\n const value = this.read()\n const done = value === null\n return { value, done }\n }\n return { next }\n }\n\n destroy (er) {\n if (this[DESTROYED]) {\n if (er)\n this.emit('error', er)\n else\n this.emit(DESTROYED)\n return this\n }\n\n this[DESTROYED] = true\n\n // throw away all buffered data, it's never coming out\n this.buffer.length = 0\n this[BUFFERLENGTH] = 0\n\n if (typeof this.close === 'function' && !this[CLOSED])\n this.close()\n\n if (er)\n this.emit('error', er)\n else // if no error to emit, still reject pending promises\n this.emit(DESTROYED)\n\n return this\n }\n\n static isStream (s) {\n return !!s && (s instanceof Minipass || s instanceof Stream ||\n s instanceof EE && (\n typeof s.pipe === 'function' || // readable\n (typeof s.write === 'function' && typeof s.end === 'function') // writable\n ))\n }\n}\n", "'use strict'\n\nconst assert = require('assert')\nconst Buffer = require('buffer').Buffer\nconst realZlib = require('zlib')\n\nconst constants = exports.constants = require('./constants.js')\nconst Minipass = require('minipass')\n\nconst OriginalBufferConcat = Buffer.concat\n\nconst _superWrite = Symbol('_superWrite')\nclass ZlibError extends Error {\n constructor (err) {\n super('zlib: ' + err.message)\n this.code = err.code\n this.errno = err.errno\n /* istanbul ignore if */\n if (!this.code)\n 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 _opts = Symbol('opts')\nconst _flushFlag = Symbol('flushFlag')\nconst _finishFlushFlag = Symbol('finishFlushFlag')\nconst _fullFlushFlag = Symbol('fullFlushFlag')\nconst _handle = Symbol('handle')\nconst _onError = Symbol('onError')\nconst _sawError = Symbol('sawError')\nconst _level = Symbol('level')\nconst _strategy = Symbol('strategy')\nconst _ended = Symbol('ended')\nconst _defaultFullFlush = Symbol('_defaultFullFlush')\n\nclass ZlibBase extends Minipass {\n constructor (opts, mode) {\n if (!opts || typeof opts !== 'object')\n throw new TypeError('invalid options for ZlibBase constructor')\n\n super(opts)\n this[_sawError] = false\n this[_ended] = false\n this[_opts] = opts\n\n this[_flushFlag] = opts.flush\n this[_finishFlushFlag] = opts.finishFlush\n // this will throw if any options are invalid for the class selected\n try {\n this[_handle] = new realZlib[mode](opts)\n } catch (er) {\n // make sure that all errors get decorated properly\n throw new ZlibError(er)\n }\n\n this[_onError] = (err) => {\n // no sense raising multiple errors, since we abort on the first one.\n if (this[_sawError])\n 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] = null\n this.emit('close')\n }\n }\n\n reset () {\n if (!this[_sawError]) {\n assert(this[_handle], 'zlib binding closed')\n return this[_handle].reset()\n }\n }\n\n flush (flushFlag) {\n if (this.ended)\n return\n\n if (typeof flushFlag !== 'number')\n flushFlag = this[_fullFlushFlag]\n this.write(Object.assign(Buffer.alloc(0), { [_flushFlag]: flushFlag }))\n }\n\n end (chunk, encoding, cb) {\n if (chunk)\n this.write(chunk, encoding)\n this.flush(this[_finishFlushFlag])\n this[_ended] = true\n return super.end(null, null, cb)\n }\n\n get ended () {\n return this[_ended]\n }\n\n write (chunk, encoding, cb) {\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, encoding)\n\n if (this[_sawError])\n 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 const nativeHandle = this[_handle]._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\n let result\n try {\n const flushFlag = typeof chunk[_flushFlag] === 'number'\n ? chunk[_flushFlag] : this[_flushFlag]\n result = this[_handle]._processChunk(chunk, 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))\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]._handle = 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 // 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(result[0]))\n for (let i = 1; i < result.length; i++) {\n writeReturn = this[_superWrite](result[i])\n }\n } else {\n writeReturn = this[_superWrite](Buffer.from(result))\n }\n }\n\n if (cb)\n cb()\n return writeReturn\n }\n\n [_superWrite] (data) {\n return super.write(data)\n }\n}\n\nclass Zlib extends ZlibBase {\n constructor (opts, mode) {\n opts = opts || {}\n\n opts.flush = opts.flush || constants.Z_NO_FLUSH\n opts.finishFlush = opts.finishFlush || constants.Z_FINISH\n super(opts, mode)\n\n this[_fullFlushFlag] = constants.Z_FULL_FLUSH\n this[_level] = opts.level\n this[_strategy] = opts.strategy\n }\n\n params (level, strategy) {\n if (this[_sawError])\n 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 /* istanbul ignore if */\n if (!this[_handle].params)\n throw new Error('not supported in this implementation')\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 = (flushFlag, cb) => {\n this.flush(flushFlag)\n cb()\n }\n try {\n this[_handle].params(level, strategy)\n } finally {\n this[_handle].flush = origFlush\n }\n /* istanbul ignore else */\n if (this[_handle]) {\n this[_level] = level\n this[_strategy] = strategy\n }\n }\n }\n}\n\n// minimal 2-byte header\nclass Deflate extends Zlib {\n constructor (opts) {\n super(opts, 'Deflate')\n }\n}\n\nclass Inflate extends Zlib {\n constructor (opts) {\n super(opts, 'Inflate')\n }\n}\n\n// gzip - bigger header, same deflate compression\nconst _portable = Symbol('_portable')\nclass Gzip extends Zlib {\n constructor (opts) {\n super(opts, 'Gzip')\n this[_portable] = opts && !!opts.portable\n }\n\n [_superWrite] (data) {\n if (!this[_portable])\n 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\nclass Gunzip extends Zlib {\n constructor (opts) {\n super(opts, 'Gunzip')\n }\n}\n\n// raw - no header\nclass DeflateRaw extends Zlib {\n constructor (opts) {\n super(opts, 'DeflateRaw')\n }\n}\n\nclass InflateRaw extends Zlib {\n constructor (opts) {\n super(opts, 'InflateRaw')\n }\n}\n\n// auto-detect header.\nclass Unzip extends Zlib {\n constructor (opts) {\n super(opts, 'Unzip')\n }\n}\n\nclass Brotli extends ZlibBase {\n constructor (opts, mode) {\n opts = opts || {}\n\n opts.flush = opts.flush || constants.BROTLI_OPERATION_PROCESS\n opts.finishFlush = opts.finishFlush || constants.BROTLI_OPERATION_FINISH\n\n super(opts, mode)\n\n this[_fullFlushFlag] = constants.BROTLI_OPERATION_FLUSH\n }\n}\n\nclass BrotliCompress extends Brotli {\n constructor (opts) {\n super(opts, 'BrotliCompress')\n }\n}\n\nclass BrotliDecompress extends Brotli {\n constructor (opts) {\n super(opts, 'BrotliDecompress')\n }\n}\n\nexports.Deflate = Deflate\nexports.Inflate = Inflate\nexports.Gzip = Gzip\nexports.Gunzip = Gunzip\nexports.DeflateRaw = DeflateRaw\nexports.InflateRaw = InflateRaw\nexports.Unzip = Unzip\n/* istanbul ignore else */\nif (typeof realZlib.BrotliCompress === 'function') {\n exports.BrotliCompress = BrotliCompress\n exports.BrotliDecompress = BrotliDecompress\n} else {\n exports.BrotliCompress = exports.BrotliDecompress = class {\n constructor () {\n throw new Error('Brotli is not supported in this version of Node.js')\n }\n }\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 = process.env.TESTING_TAR_FAKE_PLATFORM || process.platform\nmodule.exports = platform !== 'win32' ? p => p\n : p => p && p.replace(/\\\\/g, '/')\n", "'use strict'\nconst MiniPass = require('minipass')\nconst normPath = require('./normalize-windows-path.js')\n\nconst SLURP = Symbol('slurp')\nmodule.exports = class ReadEntry extends MiniPass {\n constructor (header, ex, gex) {\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 this.startBlockSize = 512 * Math.ceil(header.size / 512)\n this.blockRemain = this.startBlockSize\n this.remain = header.size\n this.type = header.type\n this.meta = false\n this.ignore = false\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 this.path = normPath(header.path)\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 = header.size\n this.mtime = header.mtime\n this.atime = header.atime\n this.ctime = header.ctime\n this.linkpath = normPath(header.linkpath)\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) {\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.slice(0, r))\n }\n\n [SLURP] (ex, global) {\n for (const k in ex) {\n // we slurp in everything except for the path attribute in\n // a global extended header, because that's weird.\n if (ex[k] !== null && ex[k] !== undefined &&\n !(global && k === 'path')) {\n this[k] = k === 'path' || k === 'linkpath' ? normPath(ex[k]) : ex[k]\n }\n }\n }\n}\n", "'use strict'\n// map types from key to human-friendly name\nexports.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\nexports.code = new Map(Array.from(exports.name).map(kv => [kv[1], kv[0]]))\n", "'use strict'\n// Tar can encode large and negative numbers using a leading byte of\n// 0xff for negative, and 0x80 for positive.\n\nconst encode = (num, buf) => {\n if (!Number.isSafeInteger(num)) {\n // The number is so large that javascript cannot represent it with integer\n // precision.\n throw Error('cannot encode number outside of javascript safe integer range')\n } else if (num < 0) {\n encodeNegative(num, buf)\n } else {\n encodePositive(num, buf)\n }\n return buf\n}\n\nconst encodePositive = (num, buf) => {\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, buf) => {\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\nconst parse = (buf) => {\n const pre = buf[0]\n const value = pre === 0x80 ? pos(buf.slice(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('parsed number outside of javascript safe integer range')\n }\n\n return value\n}\n\nconst twos = (buf) => {\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 = 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) => {\n var len = buf.length\n var sum = 0\n for (var i = len - 1; i > -1; i--) {\n var byte = 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 => (0xff ^ byte) & 0xff\n\nconst twosComp = byte => ((0xff ^ byte) + 1) & 0xff\n\nmodule.exports = {\n encode,\n parse,\n}\n", "'use strict'\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\nconst types = require('./types.js')\nconst pathModule = require('path').posix\nconst large = require('./large-numbers.js')\n\nconst SLURP = Symbol('slurp')\nconst TYPE = Symbol('type')\n\nclass Header {\n constructor (data, off, ex, gex) {\n this.cksumValid = false\n this.needPax = false\n this.nullBlock = false\n\n this.block = null\n this.path = null\n this.mode = null\n this.uid = null\n this.gid = null\n this.size = null\n this.mtime = null\n this.cksum = null\n this[TYPE] = '0'\n this.linkpath = null\n this.uname = null\n this.gname = null\n this.devmaj = 0\n this.devmin = 0\n this.atime = null\n this.ctime = null\n\n if (Buffer.isBuffer(data)) {\n this.decode(data, off || 0, ex, gex)\n } else if (data) {\n this.set(data)\n }\n }\n\n decode (buf, off, ex, gex) {\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 this[SLURP](ex)\n this[SLURP](gex, true)\n\n // old tar versions marked dirs as a file with a trailing /\n this[TYPE] = decString(buf, off + 156, 1)\n if (this[TYPE] === '') {\n this[TYPE] = '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 (buf.slice(off + 257, off + 265).toString() === 'ustar\\u000000') {\n this.uname = decString(buf, off + 265, 32)\n this.gname = decString(buf, off + 297, 32)\n this.devmaj = decNumber(buf, off + 329, 8)\n this.devmin = decNumber(buf, off + 337, 8)\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]\n }\n\n for (let i = off + 156; i < off + 512; i++) {\n sum += buf[i]\n }\n\n this.cksumValid = sum === this.cksum\n if (this.cksum === null && sum === 8 * 0x20) {\n this.nullBlock = true\n }\n }\n\n [SLURP] (ex, global) {\n for (const k in ex) {\n // we slurp in everything except for the path attribute in\n // a global extended header, because that's weird.\n if (ex[k] !== null && ex[k] !== undefined &&\n !(global && k === 'path')) {\n this[k] = ex[k]\n }\n }\n }\n\n encode (buf, off) {\n if (!buf) {\n buf = this.block = Buffer.alloc(512)\n off = 0\n }\n\n if (!off) {\n off = 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 = encNumber(buf, off + 100, 8, this.mode) || this.needPax\n this.needPax = encNumber(buf, off + 108, 8, this.uid) || this.needPax\n this.needPax = encNumber(buf, off + 116, 8, this.gid) || this.needPax\n this.needPax = encNumber(buf, off + 124, 12, this.size) || this.needPax\n this.needPax = encDate(buf, off + 136, 12, this.mtime) || this.needPax\n buf[off + 156] = this[TYPE].charCodeAt(0)\n this.needPax = encString(buf, off + 157, 100, this.linkpath) || this.needPax\n buf.write('ustar\\u000000', off + 257, 8)\n this.needPax = encString(buf, off + 265, 32, this.uname) || this.needPax\n this.needPax = encString(buf, off + 297, 32, this.gname) || this.needPax\n this.needPax = encNumber(buf, off + 329, 8, this.devmaj) || this.needPax\n this.needPax = encNumber(buf, off + 337, 8, this.devmin) || this.needPax\n this.needPax = encString(buf, off + 345, prefixSize, prefix) || this.needPax\n if (buf[off + 475] !== 0) {\n this.needPax = encString(buf, off + 345, 155, prefix) || this.needPax\n } else {\n this.needPax = encString(buf, off + 345, 130, prefix) || this.needPax\n this.needPax = encDate(buf, off + 476, 12, this.atime) || this.needPax\n this.needPax = 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]\n }\n\n for (let i = off + 156; i < off + 512; i++) {\n sum += buf[i]\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 set (data) {\n for (const i in data) {\n if (data[i] !== null && data[i] !== undefined) {\n this[i] = data[i]\n }\n }\n }\n\n get type () {\n return types.name.get(this[TYPE]) || this[TYPE]\n }\n\n get typeKey () {\n return this[TYPE]\n }\n\n set type (type) {\n if (types.code.has(type)) {\n this[TYPE] = types.code.get(type)\n } else {\n this[TYPE] = type\n }\n }\n}\n\nconst splitPrefix = (p, prefixSize) => {\n const pathSize = 100\n let pp = p\n let prefix = ''\n let ret\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 (Buffer.byteLength(pp) <= pathSize &&\n Buffer.byteLength(prefix) <= prefixSize) {\n // both fit!\n ret = [pp, prefix, false]\n } else if (Buffer.byteLength(pp) > pathSize &&\n Buffer.byteLength(prefix) <= prefixSize) {\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)\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, off, size) =>\n buf.slice(off, off + size).toString('utf8').replace(/\\0.*/, '')\n\nconst decDate = (buf, off, size) =>\n numToDate(decNumber(buf, off, size))\n\nconst numToDate = num => num === null ? null : new Date(num * 1000)\n\nconst decNumber = (buf, off, size) =>\n buf[off] & 0x80 ? large.parse(buf.slice(off, off + size))\n : decSmallNumber(buf, off, size)\n\nconst nanNull = value => isNaN(value) ? null : value\n\nconst decSmallNumber = (buf, off, size) =>\n nanNull(parseInt(\n buf.slice(off, off + size)\n .toString('utf8').replace(/\\0.*$/, '').trim(), 8))\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 = (buf, off, size, number) =>\n number === null ? false :\n number > MAXNUM[size] || number < 0\n ? (large.encode(number, buf.slice(off, off + size)), true)\n : (encSmallNumber(buf, off, size, number), false)\n\nconst encSmallNumber = (buf, off, size, number) =>\n buf.write(octalString(number, size), off, size, 'ascii')\n\nconst octalString = (number, size) =>\n padOctal(Math.floor(number).toString(8), size)\n\nconst padOctal = (string, size) =>\n (string.length === size - 1 ? string\n : new Array(size - string.length - 1).join('0') + string + ' ') + '\\0'\n\nconst encDate = (buf, off, size, date) =>\n date === null ? false :\n encNumber(buf, off, size, date.getTime() / 1000)\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 = (buf, off, size, string) =>\n string === null ? false :\n (buf.write(string + NULLS, off, size, 'utf8'),\n string.length !== Buffer.byteLength(string) || string.length > size)\n\nmodule.exports = Header\n", "'use strict'\nconst Header = require('./header.js')\nconst path = require('path')\n\nclass Pax {\n constructor (obj, global) {\n this.atime = obj.atime || null\n this.charset = obj.charset || null\n this.comment = obj.comment || null\n this.ctime = obj.ctime || null\n this.gid = obj.gid || null\n this.gname = obj.gname || null\n this.linkpath = obj.linkpath || null\n this.mtime = obj.mtime || null\n this.path = obj.path || null\n this.size = obj.size || null\n this.uid = obj.uid || null\n this.uname = obj.uname || null\n this.dev = obj.dev || null\n this.ino = obj.ino || null\n this.nlink = obj.nlink || null\n this.global = global || false\n }\n\n encode () {\n const body = this.encodeBody()\n if (body === '') {\n return null\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 path: ('PaxHeader/' + path.basename(this.path)).slice(0, 99),\n mode: this.mode || 0o644,\n uid: this.uid || null,\n gid: this.gid || null,\n size: bodyLen,\n mtime: this.mtime || null,\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 || null,\n ctime: this.ctime || null,\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) {\n if (this[field] === null || this[field] === undefined) {\n return ''\n }\n const v = this[field] instanceof Date ? this[field].getTime() / 1000\n : this[field]\n const s = ' ' +\n (field === 'dev' || field === 'ino' || field === 'nlink'\n ? 'SCHILY.' : '') +\n field + '=' + v + '\\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\nPax.parse = (string, ex, g) => new Pax(merge(parseKV(string), ex), g)\n\nconst merge = (a, b) =>\n b ? Object.keys(a).reduce((s, k) => (s[k] = a[k], s), b) : a\n\nconst parseKV = string =>\n string\n .replace(/\\n$/, '')\n .split('\\n')\n .reduce(parseKVLine, Object.create(null))\n\nconst parseKVLine = (set, line) => {\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 k = kv.shift().replace(/^SCHILY\\.(dev|ino|nlink)/, '$1')\n if (!k) {\n return set\n }\n\n const v = kv.join('=')\n set[k] = /^([A-Z]+\\.)?([mac]|birth|creation)time$/.test(k)\n ? new Date(v * 1000)\n : /^[0-9]+$/.test(v) ? +v\n : v\n return set\n}\n\nmodule.exports = Pax\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.\nmodule.exports = str => {\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", "'use strict'\nmodule.exports = Base => class extends Base {\n warn (code, message, data = {}) {\n if (this.file) {\n data.file = this.file\n }\n if (this.cwd) {\n data.cwd = this.cwd\n }\n data.code = message instanceof Error && message.code || code\n data.tarCode = code\n if (!this.strict && data.recoverable !== false) {\n if (message instanceof Error) {\n data = Object.assign(message, data)\n message = message.message\n }\n this.emit('warn', data.tarCode, message, data)\n } else if (message instanceof Error) {\n this.emit('error', Object.assign(message, data))\n } else {\n this.emit('error', Object.assign(new Error(`${code}: ${message}`), data))\n }\n }\n}\n", "'use strict'\n\n// When writing files on Windows, translate the characters to their\n// 0xf000 higher-encoded versions.\n\nconst raw = [\n '|',\n '<',\n '>',\n '?',\n ':',\n]\n\nconst win = raw.map(char =>\n String.fromCharCode(0xf000 + char.charCodeAt(0)))\n\nconst toWin = new Map(raw.map((char, i) => [char, win[i]]))\nconst toRaw = new Map(win.map((char, i) => [char, raw[i]]))\n\nmodule.exports = {\n encode: s => raw.reduce((s, c) => s.split(c).join(toWin.get(c)), s),\n decode: s => win.reduce((s, c) => s.split(c).join(toRaw.get(c)), s),\n}\n", "// unix absolute paths are also absolute on win32, so we use this for both\nconst { isAbsolute, parse } = require('path').win32\n\n// returns [root, stripped]\n// Note that windows will think that //x/y/z/a has a \"root\" of //x/y, and in\n// those cases, we want to sanitize it to x/y/z/a, not z/a, so we strip /\n// explicitly if it's the first character.\n// drive-specific relative paths on Windows get their root stripped off even\n// though they are not absolute, so `c:../foo` becomes ['c:', '../foo']\nmodule.exports = path => {\n let r = ''\n\n let parsed = parse(path)\n while (isAbsolute(path) || parsed.root) {\n // windows will think that //x/y/z has a \"root\" of //x/y/\n // but strip the //?/C:/ off of //?/C:/path\n const root = path.charAt(0) === '/' && path.slice(0, 4) !== '//?/' ? '/'\n : parsed.root\n path = path.slice(root.length)\n r += root\n parsed = parse(path)\n }\n return [r, path]\n}\n", "'use strict'\nmodule.exports = (mode, isDir, portable) => {\n mode &= 0o7777\n\n // in portable mode, use the minimum reasonable umask\n // if this system creates files with 0o664 by default\n // (as some linux distros do), then we'll write the\n // archive with 0o644 instead. Also, don't ever create\n // a file that is not readable/writable by the owner.\n if (portable) {\n mode = (mode | 0o600) & ~0o22\n }\n\n // if dirs are readable, then they should be listable\n if (isDir) {\n if (mode & 0o400) {\n mode |= 0o100\n }\n if (mode & 0o40) {\n mode |= 0o10\n }\n if (mode & 0o4) {\n mode |= 0o1\n }\n }\n return mode\n}\n", "'use strict'\nconst MiniPass = require('minipass')\nconst Pax = require('./pax.js')\nconst Header = require('./header.js')\nconst fs = require('fs')\nconst path = require('path')\nconst normPath = require('./normalize-windows-path.js')\nconst stripSlash = require('./strip-trailing-slashes.js')\n\nconst prefixPath = (path, prefix) => {\n if (!prefix) {\n return normPath(path)\n }\n path = normPath(path).replace(/^\\.(\\/|$)/, '')\n return stripSlash(prefix) + '/' + path\n}\n\nconst maxReadSize = 16 * 1024 * 1024\nconst PROCESS = Symbol('process')\nconst FILE = Symbol('file')\nconst DIRECTORY = Symbol('directory')\nconst SYMLINK = Symbol('symlink')\nconst HARDLINK = Symbol('hardlink')\nconst HEADER = Symbol('header')\nconst READ = Symbol('read')\nconst LSTAT = Symbol('lstat')\nconst ONLSTAT = Symbol('onlstat')\nconst ONREAD = Symbol('onread')\nconst ONREADLINK = Symbol('onreadlink')\nconst OPENFILE = Symbol('openfile')\nconst ONOPENFILE = Symbol('onopenfile')\nconst CLOSE = Symbol('close')\nconst MODE = Symbol('mode')\nconst AWAITDRAIN = Symbol('awaitDrain')\nconst ONDRAIN = Symbol('ondrain')\nconst PREFIX = Symbol('prefix')\nconst HAD_ERROR = Symbol('hadError')\nconst warner = require('./warn-mixin.js')\nconst winchars = require('./winchars.js')\nconst stripAbsolutePath = require('./strip-absolute-path.js')\n\nconst modeFix = require('./mode-fix.js')\n\nconst WriteEntry = warner(class WriteEntry extends MiniPass {\n constructor (p, opt) {\n opt = opt || {}\n super(opt)\n if (typeof p !== 'string') {\n throw new TypeError('path is required')\n }\n this.path = normPath(p)\n // suppress atime, ctime, uid, gid, uname, gname\n this.portable = !!opt.portable\n // until node has builtin pwnam functions, this'll have to do\n this.myuid = process.getuid && process.getuid() || 0\n this.myuser = process.env.USER || ''\n this.maxReadSize = opt.maxReadSize || maxReadSize\n this.linkCache = opt.linkCache || new Map()\n this.statCache = opt.statCache || new Map()\n this.preservePaths = !!opt.preservePaths\n this.cwd = normPath(opt.cwd || process.cwd())\n this.strict = !!opt.strict\n this.noPax = !!opt.noPax\n this.noMtime = !!opt.noMtime\n this.mtime = opt.mtime || null\n this.prefix = opt.prefix ? normPath(opt.prefix) : null\n\n this.fd = null\n this.blockLen = null\n this.blockRemain = null\n this.buf = null\n this.offset = null\n this.length = null\n this.pos = null\n this.remain = null\n\n if (typeof opt.onwarn === 'function') {\n this.on('warn', opt.onwarn)\n }\n\n let pathWarn = false\n if (!this.preservePaths) {\n const [root, stripped] = stripAbsolutePath(this.path)\n if (root) {\n this.path = stripped\n pathWarn = root\n }\n }\n\n this.win32 = !!opt.win32 || process.platform === 'win32'\n if (this.win32) {\n // force the \\ to / normalization, since we might not *actually*\n // be on windows, but want \\ to be considered a path separator.\n this.path = winchars.decode(this.path.replace(/\\\\/g, '/'))\n p = p.replace(/\\\\/g, '/')\n }\n\n this.absolute = normPath(opt.absolute || path.resolve(this.cwd, p))\n\n if (this.path === '') {\n this.path = './'\n }\n\n if (pathWarn) {\n this.warn('TAR_ENTRY_INFO', `stripping ${pathWarn} from absolute path`, {\n entry: this,\n path: pathWarn + this.path,\n })\n }\n\n if (this.statCache.has(this.absolute)) {\n this[ONLSTAT](this.statCache.get(this.absolute))\n } else {\n this[LSTAT]()\n }\n }\n\n emit (ev, ...data) {\n if (ev === 'error') {\n this[HAD_ERROR] = true\n }\n return super.emit(ev, ...data)\n }\n\n [LSTAT] () {\n fs.lstat(this.absolute, (er, stat) => {\n if (er) {\n return this.emit('error', er)\n }\n this[ONLSTAT](stat)\n })\n }\n\n [ONLSTAT] (stat) {\n this.statCache.set(this.absolute, stat)\n this.stat = stat\n if (!stat.isFile()) {\n stat.size = 0\n }\n this.type = getType(stat)\n this.emit('stat', stat)\n this[PROCESS]()\n }\n\n [PROCESS] () {\n switch (this.type) {\n case 'File': return this[FILE]()\n case 'Directory': return this[DIRECTORY]()\n case 'SymbolicLink': return this[SYMLINK]()\n // unsupported types are ignored.\n default: return this.end()\n }\n }\n\n [MODE] (mode) {\n return modeFix(mode, this.type === 'Directory', this.portable)\n }\n\n [PREFIX] (path) {\n return prefixPath(path, this.prefix)\n }\n\n [HEADER] () {\n if (this.type === 'Directory' && this.portable) {\n this.noMtime = true\n }\n\n this.header = new Header({\n path: this[PREFIX](this.path),\n // only apply the prefix to hard links.\n linkpath: this.type === 'Link' ? this[PREFIX](this.linkpath)\n : this.linkpath,\n // only the permissions and setuid/setgid/sticky bitflags\n // not the higher-order bits that specify file type\n mode: this[MODE](this.stat.mode),\n uid: this.portable ? null : this.stat.uid,\n gid: this.portable ? null : this.stat.gid,\n size: this.stat.size,\n mtime: this.noMtime ? null : this.mtime || this.stat.mtime,\n type: this.type,\n uname: this.portable ? null :\n this.stat.uid === this.myuid ? this.myuser : '',\n atime: this.portable ? null : this.stat.atime,\n ctime: this.portable ? null : this.stat.ctime,\n })\n\n if (this.header.encode() && !this.noPax) {\n super.write(new Pax({\n atime: this.portable ? null : this.header.atime,\n ctime: this.portable ? null : this.header.ctime,\n gid: this.portable ? null : this.header.gid,\n mtime: this.noMtime ? null : this.mtime || this.header.mtime,\n path: this[PREFIX](this.path),\n linkpath: this.type === 'Link' ? this[PREFIX](this.linkpath)\n : this.linkpath,\n size: this.header.size,\n uid: this.portable ? null : this.header.uid,\n uname: this.portable ? null : this.header.uname,\n dev: this.portable ? null : this.stat.dev,\n ino: this.portable ? null : this.stat.ino,\n nlink: this.portable ? null : this.stat.nlink,\n }).encode())\n }\n super.write(this.header.block)\n }\n\n [DIRECTORY] () {\n if (this.path.slice(-1) !== '/') {\n this.path += '/'\n }\n this.stat.size = 0\n this[HEADER]()\n this.end()\n }\n\n [SYMLINK] () {\n fs.readlink(this.absolute, (er, linkpath) => {\n if (er) {\n return this.emit('error', er)\n }\n this[ONREADLINK](linkpath)\n })\n }\n\n [ONREADLINK] (linkpath) {\n this.linkpath = normPath(linkpath)\n this[HEADER]()\n this.end()\n }\n\n [HARDLINK] (linkpath) {\n this.type = 'Link'\n this.linkpath = normPath(path.relative(this.cwd, linkpath))\n this.stat.size = 0\n this[HEADER]()\n this.end()\n }\n\n [FILE] () {\n if (this.stat.nlink > 1) {\n const linkKey = this.stat.dev + ':' + this.stat.ino\n if (this.linkCache.has(linkKey)) {\n const linkpath = this.linkCache.get(linkKey)\n if (linkpath.indexOf(this.cwd) === 0) {\n return this[HARDLINK](linkpath)\n }\n }\n this.linkCache.set(linkKey, this.absolute)\n }\n\n this[HEADER]()\n if (this.stat.size === 0) {\n return this.end()\n }\n\n this[OPENFILE]()\n }\n\n [OPENFILE] () {\n fs.open(this.absolute, 'r', (er, fd) => {\n if (er) {\n return this.emit('error', er)\n }\n this[ONOPENFILE](fd)\n })\n }\n\n [ONOPENFILE] (fd) {\n this.fd = fd\n if (this[HAD_ERROR]) {\n return this[CLOSE]()\n }\n\n this.blockLen = 512 * Math.ceil(this.stat.size / 512)\n this.blockRemain = this.blockLen\n const bufLen = Math.min(this.blockLen, this.maxReadSize)\n this.buf = Buffer.allocUnsafe(bufLen)\n this.offset = 0\n this.pos = 0\n this.remain = this.stat.size\n this.length = this.buf.length\n this[READ]()\n }\n\n [READ] () {\n const { fd, buf, offset, length, pos } = this\n fs.read(fd, buf, offset, length, pos, (er, bytesRead) => {\n if (er) {\n // ignoring the error from close(2) is a bad practice, but at\n // this point we already have an error, don't need another one\n return this[CLOSE](() => this.emit('error', er))\n }\n this[ONREAD](bytesRead)\n })\n }\n\n [CLOSE] (cb) {\n fs.close(this.fd, cb)\n }\n\n [ONREAD] (bytesRead) {\n if (bytesRead <= 0 && this.remain > 0) {\n const er = new Error('encountered unexpected EOF')\n er.path = this.absolute\n er.syscall = 'read'\n er.code = 'EOF'\n return this[CLOSE](() => this.emit('error', er))\n }\n\n if (bytesRead > this.remain) {\n const er = new Error('did not encounter expected EOF')\n er.path = this.absolute\n er.syscall = 'read'\n er.code = 'EOF'\n return this[CLOSE](() => this.emit('error', er))\n }\n\n // null out the rest of the buffer, if we could fit the block padding\n // at the end of this loop, we've incremented bytesRead and this.remain\n // to be incremented up to the blockRemain level, as if we had expected\n // to get a null-padded file, and read it until the end. then we will\n // decrement both remain and blockRemain by bytesRead, and know that we\n // reached the expected EOF, without any null buffer to append.\n if (bytesRead === this.remain) {\n for (let i = bytesRead; i < this.length && bytesRead < this.blockRemain; i++) {\n this.buf[i + this.offset] = 0\n bytesRead++\n this.remain++\n }\n }\n\n const writeBuf = this.offset === 0 && bytesRead === this.buf.length ?\n this.buf : this.buf.slice(this.offset, this.offset + bytesRead)\n\n const flushed = this.write(writeBuf)\n if (!flushed) {\n this[AWAITDRAIN](() => this[ONDRAIN]())\n } else {\n this[ONDRAIN]()\n }\n }\n\n [AWAITDRAIN] (cb) {\n this.once('drain', cb)\n }\n\n write (writeBuf) {\n if (this.blockRemain < writeBuf.length) {\n const er = new Error('writing more data than expected')\n er.path = this.absolute\n return this.emit('error', er)\n }\n this.remain -= writeBuf.length\n this.blockRemain -= writeBuf.length\n this.pos += writeBuf.length\n this.offset += writeBuf.length\n return super.write(writeBuf)\n }\n\n [ONDRAIN] () {\n if (!this.remain) {\n if (this.blockRemain) {\n super.write(Buffer.alloc(this.blockRemain))\n }\n return this[CLOSE](er => er ? this.emit('error', er) : this.end())\n }\n\n if (this.offset >= this.length) {\n // if we only have a smaller bit left to read, alloc a smaller buffer\n // otherwise, keep it the same length it was before.\n this.buf = Buffer.allocUnsafe(Math.min(this.blockRemain, this.buf.length))\n this.offset = 0\n }\n this.length = this.buf.length - this.offset\n this[READ]()\n }\n})\n\nclass WriteEntrySync extends WriteEntry {\n [LSTAT] () {\n this[ONLSTAT](fs.lstatSync(this.absolute))\n }\n\n [SYMLINK] () {\n this[ONREADLINK](fs.readlinkSync(this.absolute))\n }\n\n [OPENFILE] () {\n this[ONOPENFILE](fs.openSync(this.absolute, 'r'))\n }\n\n [READ] () {\n let threw = true\n try {\n const { fd, buf, offset, length, pos } = this\n const bytesRead = fs.readSync(fd, buf, offset, length, pos)\n this[ONREAD](bytesRead)\n threw = false\n } finally {\n // ignoring the error from close(2) is a bad practice, but at\n // this point we already have an error, don't need another one\n if (threw) {\n try {\n this[CLOSE](() => {})\n } catch (er) {}\n }\n }\n }\n\n [AWAITDRAIN] (cb) {\n cb()\n }\n\n [CLOSE] (cb) {\n fs.closeSync(this.fd)\n cb()\n }\n}\n\nconst WriteEntryTar = warner(class WriteEntryTar extends MiniPass {\n constructor (readEntry, opt) {\n opt = opt || {}\n super(opt)\n this.preservePaths = !!opt.preservePaths\n this.portable = !!opt.portable\n this.strict = !!opt.strict\n this.noPax = !!opt.noPax\n this.noMtime = !!opt.noMtime\n\n this.readEntry = readEntry\n this.type = readEntry.type\n if (this.type === 'Directory' && this.portable) {\n this.noMtime = true\n }\n\n this.prefix = opt.prefix || null\n\n this.path = normPath(readEntry.path)\n this.mode = this[MODE](readEntry.mode)\n this.uid = this.portable ? null : readEntry.uid\n this.gid = this.portable ? null : readEntry.gid\n this.uname = this.portable ? null : readEntry.uname\n this.gname = this.portable ? null : readEntry.gname\n this.size = readEntry.size\n this.mtime = this.noMtime ? null : opt.mtime || readEntry.mtime\n this.atime = this.portable ? null : readEntry.atime\n this.ctime = this.portable ? null : readEntry.ctime\n this.linkpath = normPath(readEntry.linkpath)\n\n if (typeof opt.onwarn === 'function') {\n this.on('warn', opt.onwarn)\n }\n\n let pathWarn = false\n if (!this.preservePaths) {\n const [root, stripped] = stripAbsolutePath(this.path)\n if (root) {\n this.path = stripped\n pathWarn = root\n }\n }\n\n this.remain = readEntry.size\n this.blockRemain = readEntry.startBlockSize\n\n this.header = new Header({\n path: this[PREFIX](this.path),\n linkpath: this.type === 'Link' ? this[PREFIX](this.linkpath)\n : this.linkpath,\n // only the permissions and setuid/setgid/sticky bitflags\n // not the higher-order bits that specify file type\n mode: this.mode,\n uid: this.portable ? null : this.uid,\n gid: this.portable ? null : this.gid,\n size: this.size,\n mtime: this.noMtime ? null : this.mtime,\n type: this.type,\n uname: this.portable ? null : this.uname,\n atime: this.portable ? null : this.atime,\n ctime: this.portable ? null : this.ctime,\n })\n\n if (pathWarn) {\n this.warn('TAR_ENTRY_INFO', `stripping ${pathWarn} from absolute path`, {\n entry: this,\n path: pathWarn + this.path,\n })\n }\n\n if (this.header.encode() && !this.noPax) {\n super.write(new Pax({\n atime: this.portable ? null : this.atime,\n ctime: this.portable ? null : this.ctime,\n gid: this.portable ? null : this.gid,\n mtime: this.noMtime ? null : this.mtime,\n path: this[PREFIX](this.path),\n linkpath: this.type === 'Link' ? this[PREFIX](this.linkpath)\n : this.linkpath,\n size: this.size,\n uid: this.portable ? null : this.uid,\n uname: this.portable ? null : this.uname,\n dev: this.portable ? null : this.readEntry.dev,\n ino: this.portable ? null : this.readEntry.ino,\n nlink: this.portable ? null : this.readEntry.nlink,\n }).encode())\n }\n\n super.write(this.header.block)\n readEntry.pipe(this)\n }\n\n [PREFIX] (path) {\n return prefixPath(path, this.prefix)\n }\n\n [MODE] (mode) {\n return modeFix(mode, this.type === 'Directory', this.portable)\n }\n\n write (data) {\n const writeLen = data.length\n if (writeLen > this.blockRemain) {\n throw new Error('writing more to entry than is appropriate')\n }\n this.blockRemain -= writeLen\n return super.write(data)\n }\n\n end () {\n if (this.blockRemain) {\n super.write(Buffer.alloc(this.blockRemain))\n }\n return super.end()\n }\n})\n\nWriteEntry.Sync = WriteEntrySync\nWriteEntry.Tar = WriteEntryTar\n\nconst getType = stat =>\n stat.isFile() ? 'File'\n : stat.isDirectory() ? 'Directory'\n : stat.isSymbolicLink() ? 'SymbolicLink'\n : 'Unsupported'\n\nmodule.exports = WriteEntry\n", "'use strict'\n\n// A readable tar stream creator\n// Technically, this is a transform stream that you write paths into,\n// and tar format comes out of.\n// The `add()` method is like `write()` but returns this,\n// and end() return `this` as well, so you can\n// do `new Pack(opt).add('files').add('dir').end().pipe(output)\n// You could also do something like:\n// streamOfPaths().pipe(new Pack()).pipe(new fs.WriteStream('out.tar'))\n\nclass PackJob {\n constructor (path, absolute) {\n this.path = path || './'\n this.absolute = absolute\n this.entry = null\n this.stat = null\n this.readdir = null\n this.pending = false\n this.ignore = false\n this.piped = false\n }\n}\n\nconst MiniPass = require('minipass')\nconst zlib = require('minizlib')\nconst ReadEntry = require('./read-entry.js')\nconst WriteEntry = require('./write-entry.js')\nconst WriteEntrySync = WriteEntry.Sync\nconst WriteEntryTar = WriteEntry.Tar\nconst Yallist = require('yallist')\nconst EOF = Buffer.alloc(1024)\nconst ONSTAT = Symbol('onStat')\nconst ENDED = Symbol('ended')\nconst QUEUE = Symbol('queue')\nconst CURRENT = Symbol('current')\nconst PROCESS = Symbol('process')\nconst PROCESSING = Symbol('processing')\nconst PROCESSJOB = Symbol('processJob')\nconst JOBS = Symbol('jobs')\nconst JOBDONE = Symbol('jobDone')\nconst ADDFSENTRY = Symbol('addFSEntry')\nconst ADDTARENTRY = Symbol('addTarEntry')\nconst STAT = Symbol('stat')\nconst READDIR = Symbol('readdir')\nconst ONREADDIR = Symbol('onreaddir')\nconst PIPE = Symbol('pipe')\nconst ENTRY = Symbol('entry')\nconst ENTRYOPT = Symbol('entryOpt')\nconst WRITEENTRYCLASS = Symbol('writeEntryClass')\nconst WRITE = Symbol('write')\nconst ONDRAIN = Symbol('ondrain')\n\nconst fs = require('fs')\nconst path = require('path')\nconst warner = require('./warn-mixin.js')\nconst normPath = require('./normalize-windows-path.js')\n\nconst Pack = warner(class Pack extends MiniPass {\n constructor (opt) {\n super(opt)\n opt = opt || Object.create(null)\n this.opt = opt\n this.file = opt.file || ''\n this.cwd = opt.cwd || process.cwd()\n this.maxReadSize = opt.maxReadSize\n this.preservePaths = !!opt.preservePaths\n this.strict = !!opt.strict\n this.noPax = !!opt.noPax\n this.prefix = normPath(opt.prefix || '')\n this.linkCache = opt.linkCache || new Map()\n this.statCache = opt.statCache || new Map()\n this.readdirCache = opt.readdirCache || new Map()\n\n this[WRITEENTRYCLASS] = WriteEntry\n if (typeof opt.onwarn === 'function') {\n this.on('warn', opt.onwarn)\n }\n\n this.portable = !!opt.portable\n this.zip = null\n if (opt.gzip) {\n if (typeof opt.gzip !== 'object') {\n opt.gzip = {}\n }\n if (this.portable) {\n opt.gzip.portable = true\n }\n this.zip = new zlib.Gzip(opt.gzip)\n this.zip.on('data', chunk => super.write(chunk))\n this.zip.on('end', _ => super.end())\n this.zip.on('drain', _ => this[ONDRAIN]())\n this.on('resume', _ => this.zip.resume())\n } else {\n this.on('drain', this[ONDRAIN])\n }\n\n this.noDirRecurse = !!opt.noDirRecurse\n this.follow = !!opt.follow\n this.noMtime = !!opt.noMtime\n this.mtime = opt.mtime || null\n\n this.filter = typeof opt.filter === 'function' ? opt.filter : _ => true\n\n this[QUEUE] = new Yallist()\n this[JOBS] = 0\n this.jobs = +opt.jobs || 4\n this[PROCESSING] = false\n this[ENDED] = false\n }\n\n [WRITE] (chunk) {\n return super.write(chunk)\n }\n\n add (path) {\n this.write(path)\n return this\n }\n\n end (path) {\n if (path) {\n this.write(path)\n }\n this[ENDED] = true\n this[PROCESS]()\n return this\n }\n\n write (path) {\n if (this[ENDED]) {\n throw new Error('write after end')\n }\n\n if (path instanceof ReadEntry) {\n this[ADDTARENTRY](path)\n } else {\n this[ADDFSENTRY](path)\n }\n return this.flowing\n }\n\n [ADDTARENTRY] (p) {\n const absolute = normPath(path.resolve(this.cwd, p.path))\n // in this case, we don't have to wait for the stat\n if (!this.filter(p.path, p)) {\n p.resume()\n } else {\n const job = new PackJob(p.path, absolute, false)\n job.entry = new WriteEntryTar(p, this[ENTRYOPT](job))\n job.entry.on('end', _ => this[JOBDONE](job))\n this[JOBS] += 1\n this[QUEUE].push(job)\n }\n\n this[PROCESS]()\n }\n\n [ADDFSENTRY] (p) {\n const absolute = normPath(path.resolve(this.cwd, p))\n this[QUEUE].push(new PackJob(p, absolute))\n this[PROCESS]()\n }\n\n [STAT] (job) {\n job.pending = true\n this[JOBS] += 1\n const stat = this.follow ? 'stat' : 'lstat'\n fs[stat](job.absolute, (er, stat) => {\n job.pending = false\n this[JOBS] -= 1\n if (er) {\n this.emit('error', er)\n } else {\n this[ONSTAT](job, stat)\n }\n })\n }\n\n [ONSTAT] (job, stat) {\n this.statCache.set(job.absolute, stat)\n job.stat = stat\n\n // now we have the stat, we can filter it.\n if (!this.filter(job.path, stat)) {\n job.ignore = true\n }\n\n this[PROCESS]()\n }\n\n [READDIR] (job) {\n job.pending = true\n this[JOBS] += 1\n fs.readdir(job.absolute, (er, entries) => {\n job.pending = false\n this[JOBS] -= 1\n if (er) {\n return this.emit('error', er)\n }\n this[ONREADDIR](job, entries)\n })\n }\n\n [ONREADDIR] (job, entries) {\n this.readdirCache.set(job.absolute, entries)\n job.readdir = entries\n this[PROCESS]()\n }\n\n [PROCESS] () {\n if (this[PROCESSING]) {\n return\n }\n\n this[PROCESSING] = true\n for (let w = this[QUEUE].head;\n w !== null && this[JOBS] < this.jobs;\n w = w.next) {\n this[PROCESSJOB](w.value)\n if (w.value.ignore) {\n const p = w.next\n this[QUEUE].removeNode(w)\n w.next = p\n }\n }\n\n this[PROCESSING] = false\n\n if (this[ENDED] && !this[QUEUE].length && this[JOBS] === 0) {\n if (this.zip) {\n this.zip.end(EOF)\n } else {\n super.write(EOF)\n super.end()\n }\n }\n }\n\n get [CURRENT] () {\n return this[QUEUE] && this[QUEUE].head && this[QUEUE].head.value\n }\n\n [JOBDONE] (job) {\n this[QUEUE].shift()\n this[JOBS] -= 1\n this[PROCESS]()\n }\n\n [PROCESSJOB] (job) {\n if (job.pending) {\n return\n }\n\n if (job.entry) {\n if (job === this[CURRENT] && !job.piped) {\n this[PIPE](job)\n }\n return\n }\n\n if (!job.stat) {\n if (this.statCache.has(job.absolute)) {\n this[ONSTAT](job, this.statCache.get(job.absolute))\n } else {\n this[STAT](job)\n }\n }\n if (!job.stat) {\n return\n }\n\n // filtered out!\n if (job.ignore) {\n return\n }\n\n if (!this.noDirRecurse && job.stat.isDirectory() && !job.readdir) {\n if (this.readdirCache.has(job.absolute)) {\n this[ONREADDIR](job, this.readdirCache.get(job.absolute))\n } else {\n this[READDIR](job)\n }\n if (!job.readdir) {\n return\n }\n }\n\n // we know it doesn't have an entry, because that got checked above\n job.entry = this[ENTRY](job)\n if (!job.entry) {\n job.ignore = true\n return\n }\n\n if (job === this[CURRENT] && !job.piped) {\n this[PIPE](job)\n }\n }\n\n [ENTRYOPT] (job) {\n return {\n onwarn: (code, msg, data) => this.warn(code, msg, data),\n noPax: this.noPax,\n cwd: this.cwd,\n absolute: job.absolute,\n preservePaths: this.preservePaths,\n maxReadSize: this.maxReadSize,\n strict: this.strict,\n portable: this.portable,\n linkCache: this.linkCache,\n statCache: this.statCache,\n noMtime: this.noMtime,\n mtime: this.mtime,\n prefix: this.prefix,\n }\n }\n\n [ENTRY] (job) {\n this[JOBS] += 1\n try {\n return new this[WRITEENTRYCLASS](job.path, this[ENTRYOPT](job))\n .on('end', () => this[JOBDONE](job))\n .on('error', er => this.emit('error', er))\n } catch (er) {\n this.emit('error', er)\n }\n }\n\n [ONDRAIN] () {\n if (this[CURRENT] && this[CURRENT].entry) {\n this[CURRENT].entry.resume()\n }\n }\n\n // like .pipe() but using super, because our write() is special\n [PIPE] (job) {\n job.piped = true\n\n if (job.readdir) {\n job.readdir.forEach(entry => {\n const p = job.path\n const base = p === './' ? '' : p.replace(/\\/*$/, '/')\n this[ADDFSENTRY](base + entry)\n })\n }\n\n const source = job.entry\n const zip = this.zip\n\n if (zip) {\n source.on('data', chunk => {\n if (!zip.write(chunk)) {\n source.pause()\n }\n })\n } else {\n source.on('data', chunk => {\n if (!super.write(chunk)) {\n source.pause()\n }\n })\n }\n }\n\n pause () {\n if (this.zip) {\n this.zip.pause()\n }\n return super.pause()\n }\n})\n\nclass PackSync extends Pack {\n constructor (opt) {\n super(opt)\n this[WRITEENTRYCLASS] = WriteEntrySync\n }\n\n // pause/resume are no-ops in sync streams.\n pause () {}\n resume () {}\n\n [STAT] (job) {\n const stat = this.follow ? 'statSync' : 'lstatSync'\n this[ONSTAT](job, fs[stat](job.absolute))\n }\n\n [READDIR] (job, stat) {\n this[ONREADDIR](job, fs.readdirSync(job.absolute))\n }\n\n // gotta get it all in this tick\n [PIPE] (job) {\n const source = job.entry\n const zip = this.zip\n\n if (job.readdir) {\n job.readdir.forEach(entry => {\n const p = job.path\n const base = p === './' ? '' : p.replace(/\\/*$/, '/')\n this[ADDFSENTRY](base + entry)\n })\n }\n\n if (zip) {\n source.on('data', chunk => {\n zip.write(chunk)\n })\n } else {\n source.on('data', chunk => {\n super[WRITE](chunk)\n })\n }\n }\n}\n\nPack.Sync = PackSync\n\nmodule.exports = Pack\n", "'use strict'\nconst proc = typeof process === 'object' && process ? process : {\n stdout: null,\n stderr: null,\n}\nconst EE = require('events')\nconst Stream = require('stream')\nconst SD = require('string_decoder').StringDecoder\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 BUFFERLENGTH = Symbol('bufferLength')\nconst BUFFERPUSH = Symbol('bufferPush')\nconst BUFFERSHIFT = Symbol('bufferShift')\nconst OBJECTMODE = Symbol('objectMode')\nconst DESTROYED = Symbol('destroyed')\nconst EMITDATA = Symbol('emitData')\nconst EMITEND = Symbol('emitEnd')\nconst EMITEND2 = Symbol('emitEnd2')\nconst ASYNC = Symbol('async')\n\nconst defer = fn => Promise.resolve().then(fn)\n\n// TODO remove when Node v8 support drops\nconst doIter = global._MP_NO_ITERATOR_SYMBOLS_ !== '1'\nconst ASYNCITERATOR = doIter && Symbol.asyncIterator\n || Symbol('asyncIterator not implemented')\nconst ITERATOR = doIter && Symbol.iterator\n || Symbol('iterator not implemented')\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.\nconst isEndish = ev =>\n ev === 'end' ||\n ev === 'finish' ||\n ev === 'prefinish'\n\nconst isArrayBuffer = b => b instanceof ArrayBuffer ||\n typeof b === 'object' &&\n b.constructor &&\n b.constructor.name === 'ArrayBuffer' &&\n b.byteLength >= 0\n\nconst isArrayBufferView = b => !Buffer.isBuffer(b) && ArrayBuffer.isView(b)\n\nclass Pipe {\n constructor (src, dest, opts) {\n this.src = src\n this.dest = dest\n this.opts = opts\n this.ondrain = () => src[RESUME]()\n dest.on('drain', this.ondrain)\n }\n unpipe () {\n this.dest.removeListener('drain', this.ondrain)\n }\n // istanbul ignore next - only here for the prototype\n proxyErrors () {}\n end () {\n this.unpipe()\n if (this.opts.end)\n this.dest.end()\n }\n}\n\nclass PipeProxyErrors extends Pipe {\n unpipe () {\n this.src.removeListener('error', this.proxyErrors)\n super.unpipe()\n }\n constructor (src, dest, opts) {\n super(src, dest, opts)\n this.proxyErrors = er => dest.emit('error', er)\n src.on('error', this.proxyErrors)\n }\n}\n\nmodule.exports = class Minipass extends Stream {\n constructor (options) {\n super()\n this[FLOWING] = false\n // whether we're explicitly paused\n this[PAUSED] = false\n this.pipes = []\n this.buffer = []\n this[OBJECTMODE] = options && options.objectMode || false\n if (this[OBJECTMODE])\n this[ENCODING] = null\n else\n this[ENCODING] = options && options.encoding || null\n if (this[ENCODING] === 'buffer')\n this[ENCODING] = null\n this[ASYNC] = options && !!options.async || false\n this[DECODER] = this[ENCODING] ? new SD(this[ENCODING]) : null\n this[EOF] = false\n this[EMITTED_END] = false\n this[EMITTING_END] = false\n this[CLOSED] = false\n this[EMITTED_ERROR] = null\n this.writable = true\n this.readable = true\n this[BUFFERLENGTH] = 0\n this[DESTROYED] = false\n }\n\n get bufferLength () { return this[BUFFERLENGTH] }\n\n get encoding () { return this[ENCODING] }\n set encoding (enc) {\n if (this[OBJECTMODE])\n throw new Error('cannot set encoding in objectMode')\n\n if (this[ENCODING] && enc !== this[ENCODING] &&\n (this[DECODER] && this[DECODER].lastNeed || this[BUFFERLENGTH]))\n throw new Error('cannot change encoding')\n\n if (this[ENCODING] !== enc) {\n this[DECODER] = enc ? new SD(enc) : null\n if (this.buffer.length)\n this.buffer = this.buffer.map(chunk => this[DECODER].write(chunk))\n }\n\n this[ENCODING] = enc\n }\n\n setEncoding (enc) {\n this.encoding = enc\n }\n\n get objectMode () { return this[OBJECTMODE] }\n set objectMode (om) { this[OBJECTMODE] = this[OBJECTMODE] || !!om }\n\n get ['async'] () { return this[ASYNC] }\n set ['async'] (a) { this[ASYNC] = this[ASYNC] || !!a }\n\n write (chunk, encoding, cb) {\n if (this[EOF])\n throw new Error('write after end')\n\n if (this[DESTROYED]) {\n this.emit('error', Object.assign(\n new Error('Cannot call write after a stream was destroyed'),\n { code: 'ERR_STREAM_DESTROYED' }\n ))\n return true\n }\n\n if (typeof encoding === 'function')\n cb = encoding, encoding = 'utf8'\n\n if (!encoding)\n encoding = 'utf8'\n\n const fn = this[ASYNC] ? defer : f => f()\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 else switches us into object mode\n if (!this[OBJECTMODE] && !Buffer.isBuffer(chunk)) {\n if (isArrayBufferView(chunk))\n chunk = Buffer.from(chunk.buffer, chunk.byteOffset, chunk.byteLength)\n else if (isArrayBuffer(chunk))\n chunk = Buffer.from(chunk)\n else if (typeof chunk !== 'string')\n // use the setter so we throw if we have encoding set\n this.objectMode = true\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 /* istanbul ignore if - maybe impossible? */\n if (this.flowing && this[BUFFERLENGTH] !== 0)\n this[FLUSH](true)\n\n if (this.flowing)\n this.emit('data', chunk)\n else\n this[BUFFERPUSH](chunk)\n\n if (this[BUFFERLENGTH] !== 0)\n this.emit('readable')\n\n if (cb)\n 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.length) {\n if (this[BUFFERLENGTH] !== 0)\n this.emit('readable')\n if (cb)\n 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 (typeof chunk === 'string' &&\n // unless it is a string already ready for us to use\n !(encoding === this[ENCODING] && !this[DECODER].lastNeed)) {\n chunk = Buffer.from(chunk, encoding)\n }\n\n if (Buffer.isBuffer(chunk) && this[ENCODING])\n chunk = this[DECODER].write(chunk)\n\n // Note: flushing CAN potentially switch us into not-flowing mode\n if (this.flowing && this[BUFFERLENGTH] !== 0)\n this[FLUSH](true)\n\n if (this.flowing)\n this.emit('data', chunk)\n else\n this[BUFFERPUSH](chunk)\n\n if (this[BUFFERLENGTH] !== 0)\n this.emit('readable')\n\n if (cb)\n fn(cb)\n\n return this.flowing\n }\n\n read (n) {\n if (this[DESTROYED])\n return null\n\n if (this[BUFFERLENGTH] === 0 || n === 0 || n > this[BUFFERLENGTH]) {\n this[MAYBE_EMIT_END]()\n return null\n }\n\n if (this[OBJECTMODE])\n n = null\n\n if (this.buffer.length > 1 && !this[OBJECTMODE]) {\n if (this.encoding)\n this.buffer = [this.buffer.join('')]\n else\n this.buffer = [Buffer.concat(this.buffer, this[BUFFERLENGTH])]\n }\n\n const ret = this[READ](n || null, this.buffer[0])\n this[MAYBE_EMIT_END]()\n return ret\n }\n\n [READ] (n, chunk) {\n if (n === chunk.length || n === null)\n this[BUFFERSHIFT]()\n else {\n this.buffer[0] = chunk.slice(n)\n chunk = chunk.slice(0, n)\n this[BUFFERLENGTH] -= n\n }\n\n this.emit('data', chunk)\n\n if (!this.buffer.length && !this[EOF])\n this.emit('drain')\n\n return chunk\n }\n\n end (chunk, encoding, cb) {\n if (typeof chunk === 'function')\n cb = chunk, chunk = null\n if (typeof encoding === 'function')\n cb = encoding, encoding = 'utf8'\n if (chunk)\n this.write(chunk, encoding)\n if (cb)\n 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])\n this[MAYBE_EMIT_END]()\n return this\n }\n\n // don't let the internal resume be overwritten\n [RESUME] () {\n if (this[DESTROYED])\n return\n\n this[PAUSED] = false\n this[FLOWING] = true\n this.emit('resume')\n if (this.buffer.length)\n this[FLUSH]()\n else if (this[EOF])\n this[MAYBE_EMIT_END]()\n else\n this.emit('drain')\n }\n\n resume () {\n return this[RESUME]()\n }\n\n pause () {\n this[FLOWING] = false\n this[PAUSED] = true\n }\n\n get destroyed () {\n return this[DESTROYED]\n }\n\n get flowing () {\n return this[FLOWING]\n }\n\n get paused () {\n return this[PAUSED]\n }\n\n [BUFFERPUSH] (chunk) {\n if (this[OBJECTMODE])\n this[BUFFERLENGTH] += 1\n else\n this[BUFFERLENGTH] += chunk.length\n this.buffer.push(chunk)\n }\n\n [BUFFERSHIFT] () {\n if (this.buffer.length) {\n if (this[OBJECTMODE])\n this[BUFFERLENGTH] -= 1\n else\n this[BUFFERLENGTH] -= this.buffer[0].length\n }\n return this.buffer.shift()\n }\n\n [FLUSH] (noDrain) {\n do {} while (this[FLUSHCHUNK](this[BUFFERSHIFT]()))\n\n if (!noDrain && !this.buffer.length && !this[EOF])\n this.emit('drain')\n }\n\n [FLUSHCHUNK] (chunk) {\n return chunk ? (this.emit('data', chunk), this.flowing) : false\n }\n\n pipe (dest, opts) {\n if (this[DESTROYED])\n return\n\n const ended = this[EMITTED_END]\n opts = opts || {}\n if (dest === proc.stdout || dest === proc.stderr)\n opts.end = false\n else\n 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)\n dest.end()\n } else {\n this.pipes.push(!opts.proxyErrors ? new Pipe(this, dest, opts)\n : new PipeProxyErrors(this, dest, opts))\n if (this[ASYNC])\n defer(() => this[RESUME]())\n else\n this[RESUME]()\n }\n\n return dest\n }\n\n unpipe (dest) {\n const p = this.pipes.find(p => p.dest === dest)\n if (p) {\n this.pipes.splice(this.pipes.indexOf(p), 1)\n p.unpipe()\n }\n }\n\n addListener (ev, fn) {\n return this.on(ev, fn)\n }\n\n on (ev, fn) {\n const ret = super.on(ev, fn)\n if (ev === 'data' && !this.pipes.length && !this.flowing)\n this[RESUME]()\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 if (this[ASYNC])\n defer(() => fn.call(this, this[EMITTED_ERROR]))\n else\n fn.call(this, this[EMITTED_ERROR])\n }\n return ret\n }\n\n get emittedEnd () {\n return this[EMITTED_END]\n }\n\n [MAYBE_EMIT_END] () {\n if (!this[EMITTING_END] &&\n !this[EMITTED_END] &&\n !this[DESTROYED] &&\n this.buffer.length === 0 &&\n this[EOF]) {\n this[EMITTING_END] = true\n this.emit('end')\n this.emit('prefinish')\n this.emit('finish')\n if (this[CLOSED])\n this.emit('close')\n this[EMITTING_END] = false\n }\n }\n\n emit (ev, data, ...extra) {\n // error and close are only events allowed after calling destroy()\n if (ev !== 'error' && ev !== 'close' && ev !== DESTROYED && this[DESTROYED])\n return\n else if (ev === 'data') {\n return !data ? false\n : this[ASYNC] ? defer(() => this[EMITDATA](data))\n : this[EMITDATA](data)\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])\n return\n const ret = super.emit('close')\n this.removeAllListeners('close')\n return ret\n } else if (ev === 'error') {\n this[EMITTED_ERROR] = data\n const ret = super.emit('error', data)\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, data, ...extra)\n this[MAYBE_EMIT_END]()\n return ret\n }\n\n [EMITDATA] (data) {\n for (const p of this.pipes) {\n if (p.dest.write(data) === false)\n this.pause()\n }\n const ret = super.emit('data', data)\n this[MAYBE_EMIT_END]()\n return ret\n }\n\n [EMITEND] () {\n if (this[EMITTED_END])\n return\n\n this[EMITTED_END] = true\n this.readable = false\n if (this[ASYNC])\n defer(() => this[EMITEND2]())\n else\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)\n }\n 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 // const all = await stream.collect()\n collect () {\n const buf = []\n if (!this[OBJECTMODE])\n 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.length\n })\n return p.then(() => buf)\n }\n\n // const data = await stream.concat()\n concat () {\n return this[OBJECTMODE]\n ? Promise.reject(new Error('cannot concat in objectMode'))\n : this.collect().then(buf =>\n this[OBJECTMODE]\n ? Promise.reject(new Error('cannot concat in objectMode'))\n : this[ENCODING] ? buf.join('') : Buffer.concat(buf, buf.dataLength))\n }\n\n // stream.promise().then(() => done, er => emitted error)\n 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 // for await (let chunk of stream)\n [ASYNCITERATOR] () {\n const next = () => {\n const res = this.read()\n if (res !== null)\n return Promise.resolve({ done: false, value: res })\n\n if (this[EOF])\n return Promise.resolve({ done: true })\n\n let resolve = null\n let reject = null\n const onerr = er => {\n this.removeListener('data', ondata)\n this.removeListener('end', onend)\n reject(er)\n }\n const ondata = value => {\n this.removeListener('error', onerr)\n this.removeListener('end', onend)\n this.pause()\n resolve({ value: value, done: !!this[EOF] })\n }\n const onend = () => {\n this.removeListener('error', onerr)\n this.removeListener('data', ondata)\n resolve({ done: true })\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 { next }\n }\n\n // for (let chunk of stream)\n [ITERATOR] () {\n const next = () => {\n const value = this.read()\n const done = value === null\n return { value, done }\n }\n return { next }\n }\n\n destroy (er) {\n if (this[DESTROYED]) {\n if (er)\n this.emit('error', er)\n else\n this.emit(DESTROYED)\n return this\n }\n\n this[DESTROYED] = true\n\n // throw away all buffered data, it's never coming out\n this.buffer.length = 0\n this[BUFFERLENGTH] = 0\n\n if (typeof this.close === 'function' && !this[CLOSED])\n this.close()\n\n if (er)\n this.emit('error', er)\n else // if no error to emit, still reject pending promises\n this.emit(DESTROYED)\n\n return this\n }\n\n static isStream (s) {\n return !!s && (s instanceof Minipass || s instanceof Stream ||\n s instanceof EE && (\n typeof s.pipe === 'function' || // readable\n (typeof s.write === 'function' && typeof s.end === 'function') // writable\n ))\n }\n}\n", "'use strict'\nconst MiniPass = require('minipass')\nconst EE = require('events').EventEmitter\nconst fs = require('fs')\n\nlet writev = fs.writev\n/* istanbul ignore next */\nif (!writev) {\n // This entire block can be removed if support for earlier than Node.js\n // 12.9.0 is not needed.\n const binding = process.binding('fs')\n const FSReqWrap = binding.FSReqWrap || binding.FSReqCallback\n\n writev = (fd, iovec, pos, cb) => {\n const done = (er, bw) => cb(er, bw, iovec)\n const req = new FSReqWrap()\n req.oncomplete = done\n binding.writeBuffers(fd, iovec, pos, req)\n }\n}\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\nclass ReadStream extends MiniPass {\n constructor (path, opt) {\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 this[_errored] = false\n this[_fd] = typeof opt.fd === 'number' ? opt.fd : null\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] = typeof opt.autoClose === 'boolean' ?\n opt.autoClose : true\n\n if (typeof this[_fd] === 'number')\n this[_read]()\n else\n this[_open]()\n }\n\n get fd () { return this[_fd] }\n get path () { return this[_path] }\n\n write () {\n throw new TypeError('this is a readable stream')\n }\n\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, fd) {\n if (er)\n this[_onerror](er)\n else {\n this[_fd] = fd\n this.emit('open', fd)\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 /* istanbul ignore if */\n if (buf.length === 0)\n return process.nextTick(() => this[_onread](null, 0, buf))\n fs.read(this[_fd], buf, 0, buf.length, null, (er, br, buf) =>\n this[_onread](er, br, buf))\n }\n }\n\n [_onread] (er, br, buf) {\n this[_reading] = false\n if (er)\n this[_onerror](er)\n else if (this[_handleChunk](br, buf))\n this[_read]()\n }\n\n [_close] () {\n if (this[_autoClose] && typeof this[_fd] === 'number') {\n const fd = this[_fd]\n this[_fd] = null\n fs.close(fd, er => er ? this.emit('error', er) : this.emit('close'))\n }\n }\n\n [_onerror] (er) {\n this[_reading] = true\n this[_close]()\n this.emit('error', er)\n }\n\n [_handleChunk] (br, buf) {\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.slice(0, br) : buf)\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 (ev, data) {\n switch (ev) {\n case 'prefinish':\n case 'finish':\n break\n\n case 'drain':\n if (typeof this[_fd] === 'number')\n this[_read]()\n break\n\n case 'error':\n if (this[_errored])\n return\n this[_errored] = true\n return super.emit(ev, data)\n\n default:\n return super.emit(ev, data)\n }\n }\n}\n\nclass 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 [_read] () {\n let threw = true\n try {\n if (!this[_reading]) {\n this[_reading] = true\n do {\n const buf = this[_makeBuf]()\n /* istanbul ignore next */\n const br = buf.length === 0 ? 0\n : fs.readSync(this[_fd], buf, 0, buf.length, null)\n if (!this[_handleChunk](br, buf))\n break\n } while (true)\n this[_reading] = false\n }\n threw = false\n } finally {\n if (threw)\n this[_close]()\n }\n }\n\n [_close] () {\n if (this[_autoClose] && typeof this[_fd] === 'number') {\n const fd = this[_fd]\n this[_fd] = null\n fs.closeSync(fd)\n this.emit('close')\n }\n }\n}\n\nclass WriteStream extends EE {\n constructor (path, opt) {\n opt = opt || {}\n super(opt)\n this.readable = false\n this.writable = true\n this[_errored] = false\n this[_writing] = false\n this[_ended] = false\n this[_needDrain] = false\n this[_queue] = []\n this[_path] = path\n this[_fd] = typeof opt.fd === 'number' ? opt.fd : null\n this[_mode] = opt.mode === undefined ? 0o666 : opt.mode\n this[_pos] = typeof opt.start === 'number' ? opt.start : null\n this[_autoClose] = typeof opt.autoClose === 'boolean' ?\n opt.autoClose : true\n\n // truncating makes no sense when writing into the middle\n const defaultFlag = this[_pos] !== null ? 'r+' : 'w'\n this[_defaultFlag] = opt.flags === undefined\n this[_flags] = this[_defaultFlag] ? defaultFlag : opt.flags\n\n if (this[_fd] === null)\n this[_open]()\n }\n\n emit (ev, data) {\n if (ev === 'error') {\n if (this[_errored])\n return\n this[_errored] = true\n }\n return super.emit(ev, data)\n }\n\n\n get fd () { return this[_fd] }\n get path () { return this[_path] }\n\n [_onerror] (er) {\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],\n (er, fd) => this[_onopen](er, fd))\n }\n\n [_onopen] (er, fd) {\n if (this[_defaultFlag] &&\n this[_flags] === 'r+' &&\n er && er.code === 'ENOENT') {\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 this[_flush]()\n }\n }\n\n end (buf, enc) {\n if (buf)\n this.write(buf, enc)\n\n this[_ended] = true\n\n // synthetic after-write logic, where drain/finish live\n if (!this[_writing] && !this[_queue].length &&\n typeof this[_fd] === 'number')\n this[_onwrite](null, 0)\n return this\n }\n\n write (buf, enc) {\n if (typeof buf === 'string')\n buf = Buffer.from(buf, enc)\n\n if (this[_ended]) {\n this.emit('error', new Error('write() after end()'))\n return false\n }\n\n if (this[_fd] === null || 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) {\n fs.write(this[_fd], buf, 0, buf.length, this[_pos], (er, bw) =>\n this[_onwrite](er, bw))\n }\n\n [_onwrite] (er, bw) {\n if (er)\n this[_onerror](er)\n else {\n if (this[_pos] !== null)\n this[_pos] += bw\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 } else if (this[_queue].length === 1)\n this[_write](this[_queue].pop())\n else {\n const iovec = this[_queue]\n this[_queue] = []\n writev(this[_fd], iovec, this[_pos],\n (er, bw) => this[_onwrite](er, bw))\n }\n }\n\n [_close] () {\n if (this[_autoClose] && typeof this[_fd] === 'number') {\n const fd = this[_fd]\n this[_fd] = null\n fs.close(fd, er => er ? this.emit('error', er) : this.emit('close'))\n }\n }\n}\n\nclass WriteStreamSync extends WriteStream {\n [_open] () {\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.code === 'ENOENT') {\n this[_flags] = 'w'\n return this[_open]()\n } else\n throw er\n }\n } else\n fd = fs.openSync(this[_path], this[_flags], this[_mode])\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] = null\n fs.closeSync(fd)\n this.emit('close')\n }\n }\n\n [_write] (buf) {\n // throw the original, but try to close if it fails\n let threw = true\n try {\n this[_onwrite](null,\n fs.writeSync(this[_fd], buf, 0, buf.length, this[_pos]))\n threw = false\n } finally {\n if (threw)\n try { this[_close]() } catch (_) {}\n }\n }\n}\n\nexports.ReadStream = ReadStream\nexports.ReadStreamSync = ReadStreamSync\n\nexports.WriteStream = WriteStream\nexports.WriteStreamSync = WriteStreamSync\n", "'use strict'\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\nconst warner = require('./warn-mixin.js')\nconst Header = require('./header.js')\nconst EE = require('events')\nconst Yallist = require('yallist')\nconst maxMetaEntrySize = 1024 * 1024\nconst Entry = require('./read-entry.js')\nconst Pax = require('./pax.js')\nconst zlib = require('minizlib')\nconst { nextTick } = require('process')\n\nconst gzipHeader = Buffer.from([0x1f, 0x8b])\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\nmodule.exports = warner(class Parser extends EE {\n constructor (opt) {\n opt = opt || {}\n super(opt)\n\n this.file = opt.file || ''\n\n // set to boolean false when an entry starts. 1024 bytes of \\0\n // is technically a valid tarball, albeit a boring one.\n this[SAW_VALID_ENTRY] = null\n\n // these BADARCHIVE errors can't be detected early. listen on DONE.\n this.on(DONE, _ => {\n if (this[STATE] === 'begin' || this[SAW_VALID_ENTRY] === false) {\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\n // have to set this so that streams are ok piping into it\n this.writable = true\n this.readable = false\n\n this[QUEUE] = new Yallist()\n this[BUFFER] = null\n this[READENTRY] = null\n this[WRITEENTRY] = null\n this[STATE] = 'begin'\n this[META] = ''\n this[EX] = null\n this[GEX] = null\n this[ENDED] = false\n this[UNZIP] = null\n this[ABORTED] = false\n this[SAW_NULL_BLOCK] = false\n this[SAW_EOF] = false\n\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 [CONSUMEHEADER] (chunk, position) {\n if (this[SAW_VALID_ENTRY] === null) {\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)\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', { header })\n } else if (!/^(Symbolic)?Link$/.test(type) && header.linkpath) {\n this.warn('TAR_ENTRY_INVALID', 'linkpath forbidden', { header })\n } else {\n const entry = this[WRITEENTRY] = new Entry(header, this[EX], this[GEX])\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] = null\n entry.ignore = 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 nextTick(() => this.emit('close'))\n }\n\n [PROCESSENTRY] (entry) {\n let go = true\n\n if (!entry) {\n this[READENTRY] = null\n go = false\n } else if (Array.isArray(entry)) {\n this.emit.apply(this, entry)\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, position) {\n // write up to but no more than writeEntry.blockRemain\n const entry = this[WRITEENTRY]\n const br = entry.blockRemain\n const c = (br >= chunk.length && position === 0) ? chunk\n : chunk.slice(position, position + br)\n\n entry.write(c)\n\n if (!entry.blockRemain) {\n this[STATE] = 'header'\n this[WRITEENTRY] = null\n entry.end()\n }\n\n return c.length\n }\n\n [CONSUMEMETA] (chunk, position) {\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]) {\n this[EMITMETA](entry)\n }\n\n return ret\n }\n\n [EMIT] (ev, data, extra) {\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) {\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 this[EX] = this[EX] || Object.create(null)\n this[EX].path = this[META].replace(/\\0.*/, '')\n break\n\n case 'NextFileHasLongLinkpath':\n this[EX] = this[EX] || Object.create(null)\n this[EX].linkpath = this[META].replace(/\\0.*/, '')\n break\n\n /* istanbul ignore next */\n default: throw new Error('unknown meta: ' + entry.type)\n }\n }\n\n abort (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 (chunk) {\n if (this[ABORTED]) {\n return\n }\n\n // first write, might be gzipped\n if (this[UNZIP] === null && chunk) {\n if (this[BUFFER]) {\n chunk = Buffer.concat([this[BUFFER], chunk])\n this[BUFFER] = null\n }\n if (chunk.length < gzipHeader.length) {\n this[BUFFER] = chunk\n return true\n }\n for (let i = 0; this[UNZIP] === null && i < gzipHeader.length; i++) {\n if (chunk[i] !== gzipHeader[i]) {\n this[UNZIP] = false\n }\n }\n if (this[UNZIP] === null) {\n const ended = this[ENDED]\n this[ENDED] = false\n this[UNZIP] = new zlib.Unzip()\n this[UNZIP].on('data', chunk => this[CONSUMECHUNK](chunk))\n this[UNZIP].on('error', er => this.abort(er))\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 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 return ret\n }\n\n [BUFFERCONCAT] (c) {\n if (c && !this[ABORTED]) {\n this[BUFFER] = this[BUFFER] ? Buffer.concat([this[BUFFER], c]) : c\n }\n }\n\n [MAYBEEND] () {\n if (this[ENDED] &&\n !this[EMITTEDEND] &&\n !this[ABORTED] &&\n !this[CONSUMING]) {\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('TAR_BAD_ARCHIVE', `Truncated input (needed ${\n entry.blockRemain} more bytes, only ${have} available)`, { entry })\n if (this[BUFFER]) {\n entry.write(this[BUFFER])\n }\n entry.end()\n }\n this[EMIT](DONE)\n }\n }\n\n [CONSUMECHUNK] (chunk) {\n if (this[CONSUMING]) {\n this[BUFFERCONCAT](chunk)\n } else if (!chunk && !this[BUFFER]) {\n this[MAYBEEND]()\n } else {\n this[CONSUMING] = true\n if (this[BUFFER]) {\n this[BUFFERCONCAT](chunk)\n const c = this[BUFFER]\n this[BUFFER] = null\n this[CONSUMECHUNKSUB](c)\n } else {\n this[CONSUMECHUNKSUB](chunk)\n }\n\n while (this[BUFFER] &&\n this[BUFFER].length >= 512 &&\n !this[ABORTED] &&\n !this[SAW_EOF]) {\n const c = this[BUFFER]\n this[BUFFER] = null\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) {\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 (position + 512 <= length && !this[ABORTED] && !this[SAW_EOF]) {\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 /* istanbul ignore next */\n default:\n throw new Error('invalid state: ' + this[STATE])\n }\n }\n\n if (position < length) {\n if (this[BUFFER]) {\n this[BUFFER] = Buffer.concat([chunk.slice(position), this[BUFFER]])\n } else {\n this[BUFFER] = chunk.slice(position)\n }\n }\n }\n\n end (chunk) {\n if (!this[ABORTED]) {\n if (this[UNZIP]) {\n this[UNZIP].end(chunk)\n } else {\n this[ENDED] = true\n this.write(chunk)\n }\n }\n }\n})\n", "'use strict'\n\n// XXX: This shares a lot in common with extract.js\n// maybe some DRY opportunity here?\n\n// tar -t\nconst hlo = require('./high-level-opt.js')\nconst Parser = require('./parse.js')\nconst fs = require('fs')\nconst fsm = require('fs-minipass')\nconst path = require('path')\nconst stripSlash = require('./strip-trailing-slashes.js')\n\nmodule.exports = (opt_, files, cb) => {\n if (typeof opt_ === 'function') {\n cb = opt_, files = null, opt_ = {}\n } else if (Array.isArray(opt_)) {\n files = opt_, opt_ = {}\n }\n\n if (typeof files === 'function') {\n cb = files, files = null\n }\n\n if (!files) {\n files = []\n } else {\n files = Array.from(files)\n }\n\n const opt = hlo(opt_)\n\n if (opt.sync && typeof cb === 'function') {\n throw new TypeError('callback not supported for sync tar functions')\n }\n\n if (!opt.file && typeof cb === 'function') {\n throw new TypeError('callback only supported with file option')\n }\n\n if (files.length) {\n filesFilter(opt, files)\n }\n\n if (!opt.noResume) {\n onentryFunction(opt)\n }\n\n return opt.file && opt.sync ? listFileSync(opt)\n : opt.file ? listFile(opt, cb)\n : list(opt)\n}\n\nconst onentryFunction = opt => {\n const onentry = opt.onentry\n opt.onentry = onentry ? e => {\n onentry(e)\n e.resume()\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\nconst filesFilter = (opt, files) => {\n const map = new Map(files.map(f => [stripSlash(f), true]))\n const filter = opt.filter\n\n const mapHas = (file, r) => {\n const root = r || path.parse(file).root || '.'\n const ret = file === root ? false\n : map.has(file) ? map.get(file)\n : mapHas(path.dirname(file), root)\n\n map.set(file, ret)\n return ret\n }\n\n opt.filter = filter\n ? (file, entry) => filter(file, entry) && mapHas(stripSlash(file))\n : file => mapHas(stripSlash(file))\n}\n\nconst listFileSync = opt => {\n const p = list(opt)\n const file = opt.file\n let threw = true\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.slice(0, bytesRead))\n }\n p.end()\n }\n threw = false\n } finally {\n if (threw && fd) {\n try {\n fs.closeSync(fd)\n } catch (er) {}\n }\n }\n}\n\nconst listFile = (opt, cb) => {\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 cb ? p.then(cb, cb) : p\n}\n\nconst list = opt => new Parser(opt)\n", "'use strict'\n\n// tar -c\nconst hlo = require('./high-level-opt.js')\n\nconst Pack = require('./pack.js')\nconst fsm = require('fs-minipass')\nconst t = require('./list.js')\nconst path = require('path')\n\nmodule.exports = (opt_, files, cb) => {\n if (typeof files === 'function') {\n cb = files\n }\n\n if (Array.isArray(opt_)) {\n files = opt_, opt_ = {}\n }\n\n if (!files || !Array.isArray(files) || !files.length) {\n throw new TypeError('no files or directories specified')\n }\n\n files = Array.from(files)\n\n const opt = hlo(opt_)\n\n if (opt.sync && typeof cb === 'function') {\n throw new TypeError('callback not supported for sync tar functions')\n }\n\n if (!opt.file && typeof cb === 'function') {\n throw new TypeError('callback only supported with file option')\n }\n\n return opt.file && opt.sync ? createFileSync(opt, files)\n : opt.file ? createFile(opt, files, cb)\n : opt.sync ? createSync(opt, files)\n : create(opt, files)\n}\n\nconst createFileSync = (opt, files) => {\n const p = new Pack.Sync(opt)\n const stream = new fsm.WriteStreamSync(opt.file, {\n mode: opt.mode || 0o666,\n })\n p.pipe(stream)\n addFilesSync(p, files)\n}\n\nconst createFile = (opt, files, cb) => {\n const p = new Pack(opt)\n const stream = new fsm.WriteStream(opt.file, {\n mode: opt.mode || 0o666,\n })\n p.pipe(stream)\n\n const promise = new Promise((res, rej) => {\n stream.on('error', rej)\n stream.on('close', res)\n p.on('error', rej)\n })\n\n addFilesAsync(p, files)\n\n return cb ? promise.then(cb, cb) : promise\n}\n\nconst addFilesSync = (p, files) => {\n files.forEach(file => {\n if (file.charAt(0) === '@') {\n t({\n file: path.resolve(p.cwd, file.slice(1)),\n sync: true,\n noResume: true,\n onentry: entry => p.add(entry),\n })\n } else {\n p.add(file)\n }\n })\n p.end()\n}\n\nconst addFilesAsync = (p, files) => {\n while (files.length) {\n const file = files.shift()\n if (file.charAt(0) === '@') {\n return t({\n file: path.resolve(p.cwd, file.slice(1)),\n noResume: true,\n onentry: entry => p.add(entry),\n }).then(_ => addFilesAsync(p, files))\n } else {\n p.add(file)\n }\n }\n p.end()\n}\n\nconst createSync = (opt, files) => {\n const p = new Pack.Sync(opt)\n addFilesSync(p, files)\n return p\n}\n\nconst create = (opt, files) => {\n const p = new Pack(opt)\n addFilesAsync(p, files)\n return p\n}\n", "'use strict'\n\n// tar -r\nconst hlo = require('./high-level-opt.js')\nconst Pack = require('./pack.js')\nconst fs = require('fs')\nconst fsm = require('fs-minipass')\nconst t = require('./list.js')\nconst path = require('path')\n\n// starting at the head of the file, read a Header\n// If the checksum is invalid, that's our position to start writing\n// If it is, jump forward by the specified size (round up to 512)\n// and try again.\n// Write the new Pack stream starting there.\n\nconst Header = require('./header.js')\n\nmodule.exports = (opt_, files, cb) => {\n const opt = hlo(opt_)\n\n if (!opt.file) {\n throw new TypeError('file is required')\n }\n\n if (opt.gzip) {\n throw new TypeError('cannot append to compressed archives')\n }\n\n if (!files || !Array.isArray(files) || !files.length) {\n throw new TypeError('no files or directories specified')\n }\n\n files = Array.from(files)\n\n return opt.sync ? replaceSync(opt, files)\n : replace(opt, files, cb)\n}\n\nconst replaceSync = (opt, files) => {\n const p = new Pack.Sync(opt)\n\n let threw = true\n let fd\n let position\n\n try {\n try {\n fd = fs.openSync(opt.file, 'r+')\n } catch (er) {\n if (er.code === 'ENOENT') {\n fd = fs.openSync(opt.file, 'w+')\n } else {\n throw er\n }\n }\n\n const st = fs.fstatSync(fd)\n const headBuf = Buffer.alloc(512)\n\n POSITION: for (position = 0; position < st.size; position += 512) {\n for (let bufPos = 0, bytes = 0; bufPos < 512; bufPos += bytes) {\n bytes = fs.readSync(\n fd, headBuf, bufPos, headBuf.length - bufPos, position + bufPos\n )\n\n if (position === 0 && headBuf[0] === 0x1f && headBuf[1] === 0x8b) {\n throw new Error('cannot append to compressed archives')\n }\n\n if (!bytes) {\n break POSITION\n }\n }\n\n const h = new Header(headBuf)\n if (!h.cksumValid) {\n break\n }\n const entryBlockSize = 512 * Math.ceil(h.size / 512)\n if (position + entryBlockSize + 512 > st.size) {\n break\n }\n // the 512 for the header we just parsed will be added as well\n // also jump ahead all the blocks for the body\n position += entryBlockSize\n if (opt.mtimeCache) {\n opt.mtimeCache.set(h.path, h.mtime)\n }\n }\n threw = false\n\n streamSync(opt, p, position, fd, files)\n } finally {\n if (threw) {\n try {\n fs.closeSync(fd)\n } catch (er) {}\n }\n }\n}\n\nconst streamSync = (opt, p, position, fd, files) => {\n const stream = new fsm.WriteStreamSync(opt.file, {\n fd: fd,\n start: position,\n })\n p.pipe(stream)\n addFilesSync(p, files)\n}\n\nconst replace = (opt, files, cb) => {\n files = Array.from(files)\n const p = new Pack(opt)\n\n const getPos = (fd, size, cb_) => {\n const cb = (er, pos) => {\n if (er) {\n fs.close(fd, _ => cb_(er))\n } else {\n cb_(null, pos)\n }\n }\n\n let position = 0\n if (size === 0) {\n return cb(null, 0)\n }\n\n let bufPos = 0\n const headBuf = Buffer.alloc(512)\n const onread = (er, bytes) => {\n if (er) {\n return cb(er)\n }\n bufPos += bytes\n if (bufPos < 512 && bytes) {\n return fs.read(\n fd, headBuf, bufPos, headBuf.length - bufPos,\n position + bufPos, onread\n )\n }\n\n if (position === 0 && headBuf[0] === 0x1f && headBuf[1] === 0x8b) {\n return cb(new Error('cannot append to compressed archives'))\n }\n\n // truncated header\n if (bufPos < 512) {\n return cb(null, position)\n }\n\n const h = new Header(headBuf)\n if (!h.cksumValid) {\n return cb(null, position)\n }\n\n const entryBlockSize = 512 * Math.ceil(h.size / 512)\n if (position + entryBlockSize + 512 > size) {\n return cb(null, position)\n }\n\n position += entryBlockSize + 512\n if (position >= size) {\n return cb(null, position)\n }\n\n if (opt.mtimeCache) {\n opt.mtimeCache.set(h.path, h.mtime)\n }\n bufPos = 0\n fs.read(fd, headBuf, 0, 512, position, onread)\n }\n fs.read(fd, headBuf, 0, 512, position, onread)\n }\n\n const promise = new Promise((resolve, reject) => {\n p.on('error', reject)\n let flag = 'r+'\n const onopen = (er, fd) => {\n if (er && er.code === 'ENOENT' && flag === 'r+') {\n flag = 'w+'\n return fs.open(opt.file, flag, onopen)\n }\n\n if (er) {\n return reject(er)\n }\n\n fs.fstat(fd, (er, st) => {\n if (er) {\n return fs.close(fd, () => reject(er))\n }\n\n getPos(fd, st.size, (er, position) => {\n if (er) {\n return reject(er)\n }\n const stream = new fsm.WriteStream(opt.file, {\n fd: fd,\n start: position,\n })\n p.pipe(stream)\n stream.on('error', reject)\n stream.on('close', resolve)\n addFilesAsync(p, files)\n })\n })\n }\n fs.open(opt.file, flag, onopen)\n })\n\n return cb ? promise.then(cb, cb) : promise\n}\n\nconst addFilesSync = (p, files) => {\n files.forEach(file => {\n if (file.charAt(0) === '@') {\n t({\n file: path.resolve(p.cwd, file.slice(1)),\n sync: true,\n noResume: true,\n onentry: entry => p.add(entry),\n })\n } else {\n p.add(file)\n }\n })\n p.end()\n}\n\nconst addFilesAsync = (p, files) => {\n while (files.length) {\n const file = files.shift()\n if (file.charAt(0) === '@') {\n return t({\n file: path.resolve(p.cwd, file.slice(1)),\n noResume: true,\n onentry: entry => p.add(entry),\n }).then(_ => addFilesAsync(p, files))\n } else {\n p.add(file)\n }\n }\n p.end()\n}\n", "'use strict'\n\n// tar -u\n\nconst hlo = require('./high-level-opt.js')\nconst r = require('./replace.js')\n// just call tar.r with the filter and mtimeCache\n\nmodule.exports = (opt_, files, cb) => {\n const opt = hlo(opt_)\n\n if (!opt.file) {\n throw new TypeError('file is required')\n }\n\n if (opt.gzip) {\n throw new TypeError('cannot append to compressed archives')\n }\n\n if (!files || !Array.isArray(files) || !files.length) {\n throw new TypeError('no files or directories specified')\n }\n\n files = Array.from(files)\n\n mtimeFilter(opt)\n return r(opt, files, cb)\n}\n\nconst mtimeFilter = opt => {\n const filter = opt.filter\n\n if (!opt.mtimeCache) {\n opt.mtimeCache = new Map()\n }\n\n opt.filter = filter ? (path, stat) =>\n filter(path, stat) && !(opt.mtimeCache.get(path) > stat.mtime)\n : (path, stat) => !(opt.mtimeCache.get(path) > stat.mtime)\n}\n", "const { promisify } = require('util')\nconst fs = require('fs')\nconst optsArg = opts => {\n if (!opts)\n opts = { mode: 0o777, fs }\n else if (typeof opts === 'object')\n opts = { mode: 0o777, fs, ...opts }\n else if (typeof opts === 'number')\n opts = { mode: opts, fs }\n else if (typeof opts === 'string')\n opts = { mode: parseInt(opts, 8), fs }\n else\n throw new TypeError('invalid options argument')\n\n opts.mkdir = opts.mkdir || opts.fs.mkdir || fs.mkdir\n opts.mkdirAsync = promisify(opts.mkdir)\n opts.stat = opts.stat || opts.fs.stat || fs.stat\n opts.statAsync = promisify(opts.stat)\n opts.statSync = opts.statSync || opts.fs.statSync || fs.statSync\n opts.mkdirSync = opts.mkdirSync || opts.fs.mkdirSync || fs.mkdirSync\n return opts\n}\nmodule.exports = optsArg\n", "const platform = process.env.__TESTING_MKDIRP_PLATFORM__ || process.platform\nconst { resolve, parse } = require('path')\nconst pathArg = path => {\n if (/\\0/.test(path)) {\n // simulate same failure that node raises\n throw Object.assign(\n new TypeError('path must be a string without null bytes'),\n {\n path,\n code: 'ERR_INVALID_ARG_VALUE',\n }\n )\n }\n\n path = resolve(path)\n if (platform === 'win32') {\n const badWinChars = /[*|\"<>?:]/\n const {root} = parse(path)\n if (badWinChars.test(path.substr(root.length))) {\n throw Object.assign(new Error('Illegal characters in path.'), {\n path,\n code: 'EINVAL',\n })\n }\n }\n\n return path\n}\nmodule.exports = pathArg\n", "const {dirname} = require('path')\n\nconst findMade = (opts, parent, path = undefined) => {\n // we never want the 'made' return value to be a root directory\n if (path === parent)\n return Promise.resolve()\n\n return opts.statAsync(parent).then(\n st => st.isDirectory() ? path : undefined, // will fail later\n er => er.code === 'ENOENT'\n ? findMade(opts, dirname(parent), parent)\n : undefined\n )\n}\n\nconst findMadeSync = (opts, parent, path = undefined) => {\n if (path === parent)\n return undefined\n\n try {\n return opts.statSync(parent).isDirectory() ? path : undefined\n } catch (er) {\n return er.code === 'ENOENT'\n ? findMadeSync(opts, dirname(parent), parent)\n : undefined\n }\n}\n\nmodule.exports = {findMade, findMadeSync}\n", "const {dirname} = require('path')\n\nconst mkdirpManual = (path, opts, made) => {\n opts.recursive = false\n const parent = dirname(path)\n if (parent === path) {\n return opts.mkdirAsync(path, opts).catch(er => {\n // swallowed by recursive implementation on posix systems\n // any other error is a failure\n if (er.code !== 'EISDIR')\n throw er\n })\n }\n\n return opts.mkdirAsync(path, opts).then(() => made || path, er => {\n if (er.code === 'ENOENT')\n return mkdirpManual(parent, opts)\n .then(made => mkdirpManual(path, opts, made))\n if (er.code !== 'EEXIST' && er.code !== 'EROFS')\n throw er\n return opts.statAsync(path).then(st => {\n if (st.isDirectory())\n return made\n else\n throw er\n }, () => { throw er })\n })\n}\n\nconst mkdirpManualSync = (path, opts, made) => {\n const parent = dirname(path)\n opts.recursive = false\n\n if (parent === path) {\n try {\n return opts.mkdirSync(path, opts)\n } catch (er) {\n // swallowed by recursive implementation on posix systems\n // any other error is a failure\n if (er.code !== 'EISDIR')\n throw er\n else\n return\n }\n }\n\n try {\n opts.mkdirSync(path, opts)\n return made || path\n } catch (er) {\n if (er.code === 'ENOENT')\n return mkdirpManualSync(path, opts, mkdirpManualSync(parent, opts, made))\n if (er.code !== 'EEXIST' && er.code !== 'EROFS')\n throw er\n try {\n if (!opts.statSync(path).isDirectory())\n throw er\n } catch (_) {\n throw er\n }\n }\n}\n\nmodule.exports = {mkdirpManual, mkdirpManualSync}\n", "const {dirname} = require('path')\nconst {findMade, findMadeSync} = require('./find-made.js')\nconst {mkdirpManual, mkdirpManualSync} = require('./mkdirp-manual.js')\n\nconst mkdirpNative = (path, opts) => {\n opts.recursive = true\n const parent = dirname(path)\n if (parent === path)\n return opts.mkdirAsync(path, opts)\n\n return findMade(opts, path).then(made =>\n opts.mkdirAsync(path, opts).then(() => made)\n .catch(er => {\n if (er.code === 'ENOENT')\n return mkdirpManual(path, opts)\n else\n throw er\n }))\n}\n\nconst mkdirpNativeSync = (path, opts) => {\n opts.recursive = true\n const parent = dirname(path)\n if (parent === path)\n return opts.mkdirSync(path, opts)\n\n const made = findMadeSync(opts, path)\n try {\n opts.mkdirSync(path, opts)\n return made\n } catch (er) {\n if (er.code === 'ENOENT')\n return mkdirpManualSync(path, opts)\n else\n throw er\n }\n}\n\nmodule.exports = {mkdirpNative, mkdirpNativeSync}\n", "const fs = require('fs')\n\nconst version = process.env.__TESTING_MKDIRP_NODE_VERSION__ || process.version\nconst versArr = version.replace(/^v/, '').split('.')\nconst hasNative = +versArr[0] > 10 || +versArr[0] === 10 && +versArr[1] >= 12\n\nconst useNative = !hasNative ? () => false : opts => opts.mkdir === fs.mkdir\nconst useNativeSync = !hasNative ? () => false : opts => opts.mkdirSync === fs.mkdirSync\n\nmodule.exports = {useNative, useNativeSync}\n", "const optsArg = require('./lib/opts-arg.js')\nconst pathArg = require('./lib/path-arg.js')\n\nconst {mkdirpNative, mkdirpNativeSync} = require('./lib/mkdirp-native.js')\nconst {mkdirpManual, mkdirpManualSync} = require('./lib/mkdirp-manual.js')\nconst {useNative, useNativeSync} = require('./lib/use-native.js')\n\n\nconst mkdirp = (path, opts) => {\n path = pathArg(path)\n opts = optsArg(opts)\n return useNative(opts)\n ? mkdirpNative(path, opts)\n : mkdirpManual(path, opts)\n}\n\nconst mkdirpSync = (path, opts) => {\n path = pathArg(path)\n opts = optsArg(opts)\n return useNativeSync(opts)\n ? mkdirpNativeSync(path, opts)\n : mkdirpManualSync(path, opts)\n}\n\nmkdirp.sync = mkdirpSync\nmkdirp.native = (path, opts) => mkdirpNative(pathArg(path), optsArg(opts))\nmkdirp.manual = (path, opts) => mkdirpManual(pathArg(path), optsArg(opts))\nmkdirp.nativeSync = (path, opts) => mkdirpNativeSync(pathArg(path), optsArg(opts))\nmkdirp.manualSync = (path, opts) => mkdirpManualSync(pathArg(path), optsArg(opts))\n\nmodule.exports = mkdirp\n", "'use strict'\nconst fs = require('fs')\nconst path = require('path')\n\n/* istanbul ignore next */\nconst LCHOWN = fs.lchown ? 'lchown' : 'chown'\n/* istanbul ignore next */\nconst LCHOWNSYNC = fs.lchownSync ? 'lchownSync' : 'chownSync'\n\n/* istanbul ignore next */\nconst needEISDIRHandled = fs.lchown &&\n !process.version.match(/v1[1-9]+\\./) &&\n !process.version.match(/v10\\.[6-9]/)\n\nconst lchownSync = (path, uid, gid) => {\n try {\n return fs[LCHOWNSYNC](path, uid, gid)\n } catch (er) {\n if (er.code !== 'ENOENT')\n throw er\n }\n}\n\n/* istanbul ignore next */\nconst chownSync = (path, uid, gid) => {\n try {\n return fs.chownSync(path, uid, gid)\n } catch (er) {\n if (er.code !== 'ENOENT')\n throw er\n }\n}\n\n/* istanbul ignore next */\nconst handleEISDIR =\n needEISDIRHandled ? (path, uid, gid, cb) => er => {\n // Node prior to v10 had a very questionable implementation of\n // fs.lchown, which would always try to call fs.open on a directory\n // Fall back to fs.chown in those cases.\n if (!er || er.code !== 'EISDIR')\n cb(er)\n else\n fs.chown(path, uid, gid, cb)\n }\n : (_, __, ___, cb) => cb\n\n/* istanbul ignore next */\nconst handleEISDirSync =\n needEISDIRHandled ? (path, uid, gid) => {\n try {\n return lchownSync(path, uid, gid)\n } catch (er) {\n if (er.code !== 'EISDIR')\n throw er\n chownSync(path, uid, gid)\n }\n }\n : (path, uid, gid) => lchownSync(path, uid, gid)\n\n// fs.readdir could only accept an options object as of node v6\nconst nodeVersion = process.version\nlet readdir = (path, options, cb) => fs.readdir(path, options, cb)\nlet readdirSync = (path, options) => fs.readdirSync(path, options)\n/* istanbul ignore next */\nif (/^v4\\./.test(nodeVersion))\n readdir = (path, options, cb) => fs.readdir(path, cb)\n\nconst chown = (cpath, uid, gid, cb) => {\n fs[LCHOWN](cpath, uid, gid, handleEISDIR(cpath, uid, gid, er => {\n // Skip ENOENT error\n cb(er && er.code !== 'ENOENT' ? er : null)\n }))\n}\n\nconst chownrKid = (p, child, uid, gid, cb) => {\n if (typeof child === 'string')\n return fs.lstat(path.resolve(p, child), (er, stats) => {\n // Skip ENOENT error\n if (er)\n return cb(er.code !== 'ENOENT' ? er : null)\n stats.name = child\n chownrKid(p, stats, uid, gid, cb)\n })\n\n if (child.isDirectory()) {\n chownr(path.resolve(p, child.name), uid, gid, er => {\n if (er)\n return cb(er)\n const cpath = path.resolve(p, child.name)\n chown(cpath, uid, gid, cb)\n })\n } else {\n const cpath = path.resolve(p, child.name)\n chown(cpath, uid, gid, cb)\n }\n}\n\n\nconst chownr = (p, uid, gid, cb) => {\n readdir(p, { withFileTypes: true }, (er, children) => {\n // any error other than ENOTDIR or ENOTSUP means it's not readable,\n // or doesn't exist. give up.\n if (er) {\n if (er.code === 'ENOENT')\n return cb()\n else if (er.code !== 'ENOTDIR' && er.code !== 'ENOTSUP')\n return cb(er)\n }\n if (er || !children.length)\n return chown(p, uid, gid, cb)\n\n let len = children.length\n let errState = null\n const then = er => {\n if (errState)\n return\n if (er)\n return cb(errState = er)\n if (-- len === 0)\n return chown(p, uid, gid, cb)\n }\n\n children.forEach(child => chownrKid(p, child, uid, gid, then))\n })\n}\n\nconst chownrKidSync = (p, child, uid, gid) => {\n if (typeof child === 'string') {\n try {\n const stats = fs.lstatSync(path.resolve(p, child))\n stats.name = child\n child = stats\n } catch (er) {\n if (er.code === 'ENOENT')\n return\n else\n throw er\n }\n }\n\n if (child.isDirectory())\n chownrSync(path.resolve(p, child.name), uid, gid)\n\n handleEISDirSync(path.resolve(p, child.name), uid, gid)\n}\n\nconst chownrSync = (p, uid, gid) => {\n let children\n try {\n children = readdirSync(p, { withFileTypes: true })\n } catch (er) {\n if (er.code === 'ENOENT')\n return\n else if (er.code === 'ENOTDIR' || er.code === 'ENOTSUP')\n return handleEISDirSync(p, uid, gid)\n else\n throw er\n }\n\n if (children && children.length)\n children.forEach(child => chownrKidSync(p, child, uid, gid))\n\n return handleEISDirSync(p, uid, gid)\n}\n\nmodule.exports = chownr\nchownr.sync = chownrSync\n", "'use strict'\n// wrapper around mkdirp for tar's needs.\n\n// TODO: This should probably be a class, not functionally\n// passing around state in a gazillion args.\n\nconst mkdirp = require('mkdirp')\nconst fs = require('fs')\nconst path = require('path')\nconst chownr = require('chownr')\nconst normPath = require('./normalize-windows-path.js')\n\nclass SymlinkError extends Error {\n constructor (symlink, path) {\n super('Cannot extract through symbolic link')\n this.path = path\n this.symlink = symlink\n }\n\n get name () {\n return 'SylinkError'\n }\n}\n\nclass CwdError extends Error {\n constructor (path, code) {\n super(code + ': Cannot cd into \\'' + path + '\\'')\n this.path = path\n this.code = code\n }\n\n get name () {\n return 'CwdError'\n }\n}\n\nconst cGet = (cache, key) => cache.get(normPath(key))\nconst cSet = (cache, key, val) => cache.set(normPath(key), val)\n\nconst checkCwd = (dir, cb) => {\n fs.stat(dir, (er, st) => {\n if (er || !st.isDirectory()) {\n er = new CwdError(dir, er && er.code || 'ENOTDIR')\n }\n cb(er)\n })\n}\n\nmodule.exports = (dir, opt, cb) => {\n dir = normPath(dir)\n\n // if there's any overlap between mask and mode,\n // then we'll need an explicit chmod\n const umask = opt.umask\n const mode = opt.mode | 0o0700\n const needChmod = (mode & umask) !== 0\n\n const uid = opt.uid\n const gid = opt.gid\n const doChown = typeof uid === 'number' &&\n typeof gid === 'number' &&\n (uid !== opt.processUid || gid !== opt.processGid)\n\n const preserve = opt.preserve\n const unlink = opt.unlink\n const cache = opt.cache\n const cwd = normPath(opt.cwd)\n\n const done = (er, created) => {\n if (er) {\n cb(er)\n } else {\n cSet(cache, dir, true)\n if (created && doChown) {\n chownr(created, uid, gid, er => done(er))\n } else if (needChmod) {\n fs.chmod(dir, mode, cb)\n } else {\n cb()\n }\n }\n }\n\n if (cache && cGet(cache, dir) === true) {\n return done()\n }\n\n if (dir === cwd) {\n return checkCwd(dir, done)\n }\n\n if (preserve) {\n return mkdirp(dir, { mode }).then(made => done(null, made), done)\n }\n\n const sub = normPath(path.relative(cwd, dir))\n const parts = sub.split('/')\n mkdir_(cwd, parts, mode, cache, unlink, cwd, null, done)\n}\n\nconst mkdir_ = (base, parts, mode, cache, unlink, cwd, created, cb) => {\n if (!parts.length) {\n return cb(null, created)\n }\n const p = parts.shift()\n const part = normPath(path.resolve(base + '/' + p))\n if (cGet(cache, part)) {\n return mkdir_(part, parts, mode, cache, unlink, cwd, created, cb)\n }\n fs.mkdir(part, mode, onmkdir(part, parts, mode, cache, unlink, cwd, created, cb))\n}\n\nconst onmkdir = (part, parts, mode, cache, unlink, cwd, created, cb) => er => {\n if (er) {\n fs.lstat(part, (statEr, st) => {\n if (statEr) {\n statEr.path = statEr.path && normPath(statEr.path)\n cb(statEr)\n } else if (st.isDirectory()) {\n mkdir_(part, parts, mode, cache, unlink, cwd, created, cb)\n } else if (unlink) {\n fs.unlink(part, er => {\n if (er) {\n return cb(er)\n }\n fs.mkdir(part, mode, onmkdir(part, parts, mode, cache, unlink, cwd, created, cb))\n })\n } else if (st.isSymbolicLink()) {\n return cb(new SymlinkError(part, part + '/' + parts.join('/')))\n } else {\n cb(er)\n }\n })\n } else {\n created = created || part\n mkdir_(part, parts, mode, cache, unlink, cwd, created, cb)\n }\n}\n\nconst checkCwdSync = dir => {\n let ok = false\n let code = 'ENOTDIR'\n try {\n ok = fs.statSync(dir).isDirectory()\n } catch (er) {\n code = er.code\n } finally {\n if (!ok) {\n throw new CwdError(dir, code)\n }\n }\n}\n\nmodule.exports.sync = (dir, opt) => {\n dir = normPath(dir)\n // if there's any overlap between mask and mode,\n // then we'll need an explicit chmod\n const umask = opt.umask\n const mode = opt.mode | 0o0700\n const needChmod = (mode & umask) !== 0\n\n const uid = opt.uid\n const gid = opt.gid\n const doChown = typeof uid === 'number' &&\n typeof gid === 'number' &&\n (uid !== opt.processUid || gid !== opt.processGid)\n\n const preserve = opt.preserve\n const unlink = opt.unlink\n const cache = opt.cache\n const cwd = normPath(opt.cwd)\n\n const done = (created) => {\n cSet(cache, dir, true)\n if (created && doChown) {\n chownr.sync(created, uid, gid)\n }\n if (needChmod) {\n fs.chmodSync(dir, mode)\n }\n }\n\n if (cache && cGet(cache, dir) === true) {\n return done()\n }\n\n if (dir === cwd) {\n checkCwdSync(cwd)\n return done()\n }\n\n if (preserve) {\n return done(mkdirp.sync(dir, mode))\n }\n\n const sub = normPath(path.relative(cwd, dir))\n const parts = sub.split('/')\n let created = null\n for (let p = parts.shift(), part = cwd;\n p && (part += '/' + p);\n p = parts.shift()) {\n part = normPath(path.resolve(part))\n if (cGet(cache, part)) {\n continue\n }\n\n try {\n fs.mkdirSync(part, mode)\n created = created || part\n cSet(cache, part, true)\n } catch (er) {\n const st = fs.lstatSync(part)\n if (st.isDirectory()) {\n cSet(cache, part, true)\n continue\n } else if (unlink) {\n fs.unlinkSync(part)\n fs.mkdirSync(part, mode)\n created = created || part\n cSet(cache, part, true)\n continue\n } else if (st.isSymbolicLink()) {\n return new SymlinkError(part, part + '/' + parts.join('/'))\n }\n }\n }\n\n return done(created)\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.\nconst normalizeCache = Object.create(null)\nconst { hasOwnProperty } = Object.prototype\nmodule.exports = s => {\n if (!hasOwnProperty.call(normalizeCache, s)) {\n normalizeCache[s] = s.normalize('NFKD')\n }\n return normalizeCache[s]\n}\n", "// A path exclusive reservation system\n// reserve([list, of, paths], fn)\n// When the fn is first in line for all its paths, it\n// is called with a cb that clears the reservation.\n//\n// Used by async unpack to avoid clobbering paths in use,\n// while still allowing maximal safe parallelization.\n\nconst assert = require('assert')\nconst normalize = require('./normalize-unicode.js')\nconst stripSlashes = require('./strip-trailing-slashes.js')\nconst { join } = require('path')\n\nconst platform = process.env.TESTING_TAR_FAKE_PLATFORM || process.platform\nconst isWindows = platform === 'win32'\n\nmodule.exports = () => {\n // path => [function or Set]\n // A Set object means a directory reservation\n // A fn is a direct reservation on that path\n const queues = new Map()\n\n // fn => {paths:[path,...], dirs:[path, ...]}\n const reservations = new Map()\n\n // return a set of parent dirs for a given path\n // '/a/b/c/d' -> ['/', '/a', '/a/b', '/a/b/c', '/a/b/c/d']\n const getDirs = path => {\n const dirs = path.split('/').slice(0, -1).reduce((set, path) => {\n if (set.length) {\n path = join(set[set.length - 1], path)\n }\n set.push(path || '/')\n return set\n }, [])\n return dirs\n }\n\n // functions currently running\n const running = new Set()\n\n // return the queues for each path the function cares about\n // fn => {paths, dirs}\n const getQueues = fn => {\n const res = reservations.get(fn)\n /* istanbul ignore if - unpossible */\n if (!res) {\n throw new Error('function does not have any path reservations')\n }\n return {\n paths: res.paths.map(path => queues.get(path)),\n dirs: [...res.dirs].map(path => queues.get(path)),\n }\n }\n\n // check if fn is first in line for all its paths, and is\n // included in the first set for all its dir queues\n const check = fn => {\n const { paths, dirs } = getQueues(fn)\n return paths.every(q => q[0] === fn) &&\n dirs.every(q => q[0] instanceof Set && q[0].has(fn))\n }\n\n // run the function if it's first in line and not already running\n const run = fn => {\n if (running.has(fn) || !check(fn)) {\n return false\n }\n running.add(fn)\n fn(() => clear(fn))\n return true\n }\n\n const clear = fn => {\n if (!running.has(fn)) {\n return false\n }\n\n const { paths, dirs } = reservations.get(fn)\n const next = new Set()\n\n paths.forEach(path => {\n const q = queues.get(path)\n assert.equal(q[0], fn)\n if (q.length === 1) {\n queues.delete(path)\n } else {\n q.shift()\n if (typeof q[0] === 'function') {\n next.add(q[0])\n } else {\n q[0].forEach(fn => next.add(fn))\n }\n }\n })\n\n dirs.forEach(dir => {\n const q = queues.get(dir)\n assert(q[0] instanceof Set)\n if (q[0].size === 1 && q.length === 1) {\n queues.delete(dir)\n } else if (q[0].size === 1) {\n q.shift()\n\n // must be a function or else the Set would've been reused\n next.add(q[0])\n } else {\n q[0].delete(fn)\n }\n })\n running.delete(fn)\n\n next.forEach(fn => run(fn))\n return true\n }\n\n const reserve = (paths, fn) => {\n // collide on matches across case and unicode normalization\n // On windows, thanks to the magic of 8.3 shortnames, it is fundamentally\n // impossible to determine whether two paths refer to the same thing on\n // disk, without asking the kernel for a shortname.\n // So, we just pretend that every path matches every other path here,\n // effectively removing all parallelization on windows.\n paths = isWindows ? ['win32 parallelization disabled'] : paths.map(p => {\n // don't need normPath, because we skip this entirely for windows\n return normalize(stripSlashes(join(p))).toLowerCase()\n })\n\n const dirs = new Set(\n paths.map(path => getDirs(path)).reduce((a, b) => a.concat(b))\n )\n reservations.set(fn, { dirs, paths })\n paths.forEach(path => {\n const q = queues.get(path)\n if (!q) {\n queues.set(path, [fn])\n } else {\n q.push(fn)\n }\n })\n dirs.forEach(dir => {\n const q = queues.get(dir)\n if (!q) {\n queues.set(dir, [new Set([fn])])\n } else if (q[q.length - 1] instanceof Set) {\n q[q.length - 1].add(fn)\n } else {\n q.push(new Set([fn]))\n }\n })\n\n return run(fn)\n }\n\n return { check, reserve }\n}\n", "// Get the appropriate flag to use for creating files\n// We use fmap on Windows platforms for files less than\n// 512kb. This is a fairly low limit, but avoids making\n// things slower in some cases. Since most of what this\n// library is used for is extracting tarballs of many\n// relatively small files in npm packages and the like,\n// it can be a big boost on Windows platforms.\n// Only supported in Node v12.9.0 and above.\nconst platform = process.env.__FAKE_PLATFORM__ || process.platform\nconst isWindows = platform === 'win32'\nconst fs = global.__FAKE_TESTING_FS__ || require('fs')\n\n/* istanbul ignore next */\nconst { O_CREAT, O_TRUNC, O_WRONLY, UV_FS_O_FILEMAP = 0 } = fs.constants\n\nconst fMapEnabled = isWindows && !!UV_FS_O_FILEMAP\nconst fMapLimit = 512 * 1024\nconst fMapFlag = UV_FS_O_FILEMAP | O_TRUNC | O_CREAT | O_WRONLY\nmodule.exports = !fMapEnabled ? () => 'w'\n : size => size < fMapLimit ? fMapFlag : 'w'\n", "'use strict'\n\n// the PEND/UNPEND stuff tracks whether we're ready to emit end/close yet.\n// but the path reservations are required to avoid race conditions where\n// parallelized unpack ops may mess with one another, due to dependencies\n// (like a Link depending on its target) or destructive operations (like\n// clobbering an fs object to create one of a different type.)\n\nconst assert = require('assert')\nconst Parser = require('./parse.js')\nconst fs = require('fs')\nconst fsm = require('fs-minipass')\nconst path = require('path')\nconst mkdir = require('./mkdir.js')\nconst wc = require('./winchars.js')\nconst pathReservations = require('./path-reservations.js')\nconst stripAbsolutePath = require('./strip-absolute-path.js')\nconst normPath = require('./normalize-windows-path.js')\nconst stripSlash = require('./strip-trailing-slashes.js')\nconst normalize = require('./normalize-unicode.js')\n\nconst ONENTRY = Symbol('onEntry')\nconst CHECKFS = Symbol('checkFs')\nconst CHECKFS2 = Symbol('checkFs2')\nconst PRUNECACHE = Symbol('pruneCache')\nconst ISREUSABLE = Symbol('isReusable')\nconst MAKEFS = Symbol('makeFs')\nconst FILE = Symbol('file')\nconst DIRECTORY = Symbol('directory')\nconst LINK = Symbol('link')\nconst SYMLINK = Symbol('symlink')\nconst HARDLINK = Symbol('hardlink')\nconst UNSUPPORTED = Symbol('unsupported')\nconst CHECKPATH = Symbol('checkPath')\nconst MKDIR = Symbol('mkdir')\nconst ONERROR = Symbol('onError')\nconst PENDING = Symbol('pending')\nconst PEND = Symbol('pend')\nconst UNPEND = Symbol('unpend')\nconst ENDED = Symbol('ended')\nconst MAYBECLOSE = Symbol('maybeClose')\nconst SKIP = Symbol('skip')\nconst DOCHOWN = Symbol('doChown')\nconst UID = Symbol('uid')\nconst GID = Symbol('gid')\nconst CHECKED_CWD = Symbol('checkedCwd')\nconst crypto = require('crypto')\nconst getFlag = require('./get-write-flag.js')\nconst platform = process.env.TESTING_TAR_FAKE_PLATFORM || process.platform\nconst isWindows = platform === 'win32'\n\n// Unlinks on Windows are not atomic.\n//\n// This means that if you have a file entry, followed by another\n// file entry with an identical name, and you cannot re-use the file\n// (because it's a hardlink, or because unlink:true is set, or it's\n// Windows, which does not have useful nlink values), then the unlink\n// will be committed to the disk AFTER the new file has been written\n// over the old one, deleting the new file.\n//\n// To work around this, on Windows systems, we rename the file and then\n// delete the renamed file. It's a sloppy kludge, but frankly, I do not\n// know of a better way to do this, given windows' non-atomic unlink\n// semantics.\n//\n// See: https://github.com/npm/node-tar/issues/183\n/* istanbul ignore next */\nconst unlinkFile = (path, cb) => {\n if (!isWindows) {\n return fs.unlink(path, cb)\n }\n\n const name = path + '.DELETE.' + crypto.randomBytes(16).toString('hex')\n fs.rename(path, name, er => {\n if (er) {\n return cb(er)\n }\n fs.unlink(name, cb)\n })\n}\n\n/* istanbul ignore next */\nconst unlinkFileSync = path => {\n if (!isWindows) {\n return fs.unlinkSync(path)\n }\n\n const name = path + '.DELETE.' + crypto.randomBytes(16).toString('hex')\n fs.renameSync(path, name)\n fs.unlinkSync(name)\n}\n\n// this.gid, entry.gid, this.processUid\nconst uint32 = (a, b, c) =>\n a === a >>> 0 ? a\n : b === b >>> 0 ? b\n : c\n\n// clear the cache if it's a case-insensitive unicode-squashing match.\n// we can't know if the current file system is case-sensitive or supports\n// unicode fully, so we check for similarity on the maximally compatible\n// representation. Err on the side of pruning, since all it's doing is\n// preventing lstats, and it's not the end of the world if we get a false\n// positive.\n// Note that on windows, we always drop the entire cache whenever a\n// symbolic link is encountered, because 8.3 filenames are impossible\n// to reason about, and collisions are hazards rather than just failures.\nconst cacheKeyNormalize = path => normalize(stripSlash(normPath(path)))\n .toLowerCase()\n\nconst pruneCache = (cache, abs) => {\n abs = cacheKeyNormalize(abs)\n for (const path of cache.keys()) {\n const pnorm = cacheKeyNormalize(path)\n if (pnorm === abs || pnorm.indexOf(abs + '/') === 0) {\n cache.delete(path)\n }\n }\n}\n\nconst dropCache = cache => {\n for (const key of cache.keys()) {\n cache.delete(key)\n }\n}\n\nclass Unpack extends Parser {\n constructor (opt) {\n if (!opt) {\n opt = {}\n }\n\n opt.ondone = _ => {\n this[ENDED] = true\n this[MAYBECLOSE]()\n }\n\n super(opt)\n\n this[CHECKED_CWD] = false\n\n this.reservations = pathReservations()\n\n this.transform = typeof opt.transform === 'function' ? opt.transform : null\n\n this.writable = true\n this.readable = false\n\n this[PENDING] = 0\n this[ENDED] = false\n\n this.dirCache = opt.dirCache || new Map()\n\n if (typeof opt.uid === 'number' || typeof opt.gid === 'number') {\n // need both or neither\n if (typeof opt.uid !== 'number' || typeof opt.gid !== 'number') {\n throw new TypeError('cannot set owner without number uid and gid')\n }\n if (opt.preserveOwner) {\n throw new TypeError(\n 'cannot preserve owner in archive and also set owner explicitly')\n }\n this.uid = opt.uid\n this.gid = opt.gid\n this.setOwner = true\n } else {\n this.uid = null\n this.gid = null\n this.setOwner = false\n }\n\n // default true for root\n if (opt.preserveOwner === undefined && typeof opt.uid !== 'number') {\n this.preserveOwner = process.getuid && process.getuid() === 0\n } else {\n this.preserveOwner = !!opt.preserveOwner\n }\n\n this.processUid = (this.preserveOwner || this.setOwner) && process.getuid ?\n process.getuid() : null\n this.processGid = (this.preserveOwner || this.setOwner) && process.getgid ?\n process.getgid() : null\n\n // mostly just for testing, but useful in some cases.\n // Forcibly trigger a chown on every entry, no matter what\n this.forceChown = opt.forceChown === true\n\n // turn > this[ONENTRY](entry))\n }\n\n // a bad or damaged archive is a warning for Parser, but an error\n // when extracting. Mark those errors as unrecoverable, because\n // the Unpack contract cannot be met.\n warn (code, msg, data = {}) {\n if (code === 'TAR_BAD_ARCHIVE' || code === 'TAR_ABORT') {\n data.recoverable = false\n }\n return super.warn(code, msg, data)\n }\n\n [MAYBECLOSE] () {\n if (this[ENDED] && this[PENDING] === 0) {\n this.emit('prefinish')\n this.emit('finish')\n this.emit('end')\n }\n }\n\n [CHECKPATH] (entry) {\n if (this.strip) {\n const parts = normPath(entry.path).split('/')\n if (parts.length < this.strip) {\n return false\n }\n entry.path = parts.slice(this.strip).join('/')\n\n if (entry.type === 'Link') {\n const linkparts = normPath(entry.linkpath).split('/')\n if (linkparts.length >= this.strip) {\n entry.linkpath = linkparts.slice(this.strip).join('/')\n } else {\n return false\n }\n }\n }\n\n if (!this.preservePaths) {\n const p = normPath(entry.path)\n const parts = p.split('/')\n if (parts.includes('..') || isWindows && /^[a-z]:\\.\\.$/i.test(parts[0])) {\n this.warn('TAR_ENTRY_ERROR', `path contains '..'`, {\n entry,\n path: p,\n })\n return false\n }\n\n // strip off the root\n const [root, stripped] = stripAbsolutePath(p)\n if (root) {\n entry.path = stripped\n this.warn('TAR_ENTRY_INFO', `stripping ${root} from absolute path`, {\n entry,\n path: p,\n })\n }\n }\n\n if (path.isAbsolute(entry.path)) {\n entry.absolute = normPath(path.resolve(entry.path))\n } else {\n entry.absolute = normPath(path.resolve(this.cwd, entry.path))\n }\n\n // if we somehow ended up with a path that escapes the cwd, and we are\n // not in preservePaths mode, then something is fishy! This should have\n // been prevented above, so ignore this for coverage.\n /* istanbul ignore if - defense in depth */\n if (!this.preservePaths &&\n entry.absolute.indexOf(this.cwd + '/') !== 0 &&\n entry.absolute !== this.cwd) {\n this.warn('TAR_ENTRY_ERROR', 'path escaped extraction target', {\n entry,\n path: normPath(entry.path),\n resolvedPath: entry.absolute,\n cwd: this.cwd,\n })\n return false\n }\n\n // an archive can set properties on the extraction directory, but it\n // may not replace the cwd with a different kind of thing entirely.\n if (entry.absolute === this.cwd &&\n entry.type !== 'Directory' &&\n entry.type !== 'GNUDumpDir') {\n return false\n }\n\n // only encode : chars that aren't drive letter indicators\n if (this.win32) {\n const { root: aRoot } = path.win32.parse(entry.absolute)\n entry.absolute = aRoot + wc.encode(entry.absolute.slice(aRoot.length))\n const { root: pRoot } = path.win32.parse(entry.path)\n entry.path = pRoot + wc.encode(entry.path.slice(pRoot.length))\n }\n\n return true\n }\n\n [ONENTRY] (entry) {\n if (!this[CHECKPATH](entry)) {\n return entry.resume()\n }\n\n assert.equal(typeof entry.absolute, 'string')\n\n switch (entry.type) {\n case 'Directory':\n case 'GNUDumpDir':\n if (entry.mode) {\n entry.mode = entry.mode | 0o700\n }\n\n // eslint-disable-next-line no-fallthrough\n case 'File':\n case 'OldFile':\n case 'ContiguousFile':\n case 'Link':\n case 'SymbolicLink':\n return this[CHECKFS](entry)\n\n case 'CharacterDevice':\n case 'BlockDevice':\n case 'FIFO':\n default:\n return this[UNSUPPORTED](entry)\n }\n }\n\n [ONERROR] (er, entry) {\n // Cwd has to exist, or else nothing works. That's serious.\n // Other errors are warnings, which raise the error in strict\n // mode, but otherwise continue on.\n if (er.name === 'CwdError') {\n this.emit('error', er)\n } else {\n this.warn('TAR_ENTRY_ERROR', er, { entry })\n this[UNPEND]()\n entry.resume()\n }\n }\n\n [MKDIR] (dir, mode, cb) {\n mkdir(normPath(dir), {\n uid: this.uid,\n gid: this.gid,\n processUid: this.processUid,\n processGid: this.processGid,\n umask: this.processUmask,\n preserve: this.preservePaths,\n unlink: this.unlink,\n cache: this.dirCache,\n cwd: this.cwd,\n mode: mode,\n noChmod: this.noChmod,\n }, cb)\n }\n\n [DOCHOWN] (entry) {\n // in preserve owner mode, chown if the entry doesn't match process\n // in set owner mode, chown if setting doesn't match process\n return this.forceChown ||\n this.preserveOwner &&\n (typeof entry.uid === 'number' && entry.uid !== this.processUid ||\n typeof entry.gid === 'number' && entry.gid !== this.processGid)\n ||\n (typeof this.uid === 'number' && this.uid !== this.processUid ||\n typeof this.gid === 'number' && this.gid !== this.processGid)\n }\n\n [UID] (entry) {\n return uint32(this.uid, entry.uid, this.processUid)\n }\n\n [GID] (entry) {\n return uint32(this.gid, entry.gid, this.processGid)\n }\n\n [FILE] (entry, fullyDone) {\n const mode = entry.mode & 0o7777 || this.fmode\n const stream = new fsm.WriteStream(entry.absolute, {\n flags: getFlag(entry.size),\n mode: mode,\n autoClose: false,\n })\n stream.on('error', er => {\n if (stream.fd) {\n fs.close(stream.fd, () => {})\n }\n\n // flush all the data out so that we aren't left hanging\n // if the error wasn't actually fatal. otherwise the parse\n // is blocked, and we never proceed.\n stream.write = () => true\n this[ONERROR](er, entry)\n fullyDone()\n })\n\n let actions = 1\n const done = er => {\n if (er) {\n /* istanbul ignore else - we should always have a fd by now */\n if (stream.fd) {\n fs.close(stream.fd, () => {})\n }\n\n this[ONERROR](er, entry)\n fullyDone()\n return\n }\n\n if (--actions === 0) {\n fs.close(stream.fd, er => {\n if (er) {\n this[ONERROR](er, entry)\n } else {\n this[UNPEND]()\n }\n fullyDone()\n })\n }\n }\n\n stream.on('finish', _ => {\n // if futimes fails, try utimes\n // if utimes fails, fail with the original error\n // same for fchown/chown\n const abs = entry.absolute\n const fd = stream.fd\n\n if (entry.mtime && !this.noMtime) {\n actions++\n const atime = entry.atime || new Date()\n const mtime = entry.mtime\n fs.futimes(fd, atime, mtime, er =>\n er ? fs.utimes(abs, atime, mtime, er2 => done(er2 && er))\n : done())\n }\n\n if (this[DOCHOWN](entry)) {\n actions++\n const uid = this[UID](entry)\n const gid = this[GID](entry)\n fs.fchown(fd, uid, gid, er =>\n er ? fs.chown(abs, uid, gid, er2 => done(er2 && er))\n : done())\n }\n\n done()\n })\n\n const tx = this.transform ? this.transform(entry) || entry : entry\n if (tx !== entry) {\n tx.on('error', er => {\n this[ONERROR](er, entry)\n fullyDone()\n })\n entry.pipe(tx)\n }\n tx.pipe(stream)\n }\n\n [DIRECTORY] (entry, fullyDone) {\n const mode = entry.mode & 0o7777 || this.dmode\n this[MKDIR](entry.absolute, mode, er => {\n if (er) {\n this[ONERROR](er, entry)\n fullyDone()\n return\n }\n\n let actions = 1\n const done = _ => {\n if (--actions === 0) {\n fullyDone()\n this[UNPEND]()\n entry.resume()\n }\n }\n\n if (entry.mtime && !this.noMtime) {\n actions++\n fs.utimes(entry.absolute, entry.atime || new Date(), entry.mtime, done)\n }\n\n if (this[DOCHOWN](entry)) {\n actions++\n fs.chown(entry.absolute, this[UID](entry), this[GID](entry), done)\n }\n\n done()\n })\n }\n\n [UNSUPPORTED] (entry) {\n entry.unsupported = true\n this.warn('TAR_ENTRY_UNSUPPORTED',\n `unsupported entry type: ${entry.type}`, { entry })\n entry.resume()\n }\n\n [SYMLINK] (entry, done) {\n this[LINK](entry, entry.linkpath, 'symlink', done)\n }\n\n [HARDLINK] (entry, done) {\n const linkpath = normPath(path.resolve(this.cwd, entry.linkpath))\n this[LINK](entry, linkpath, 'link', done)\n }\n\n [PEND] () {\n this[PENDING]++\n }\n\n [UNPEND] () {\n this[PENDING]--\n this[MAYBECLOSE]()\n }\n\n [SKIP] (entry) {\n this[UNPEND]()\n entry.resume()\n }\n\n // Check if we can reuse an existing filesystem entry safely and\n // overwrite it, rather than unlinking and recreating\n // Windows doesn't report a useful nlink, so we just never reuse entries\n [ISREUSABLE] (entry, st) {\n return entry.type === 'File' &&\n !this.unlink &&\n st.isFile() &&\n st.nlink <= 1 &&\n !isWindows\n }\n\n // check if a thing is there, and if so, try to clobber it\n [CHECKFS] (entry) {\n this[PEND]()\n const paths = [entry.path]\n if (entry.linkpath) {\n paths.push(entry.linkpath)\n }\n this.reservations.reserve(paths, done => this[CHECKFS2](entry, done))\n }\n\n [PRUNECACHE] (entry) {\n // if we are not creating a directory, and the path is in the dirCache,\n // then that means we are about to delete the directory we created\n // previously, and it is no longer going to be a directory, and neither\n // is any of its children.\n // If a symbolic link is encountered, all bets are off. There is no\n // reasonable way to sanitize the cache in such a way we will be able to\n // avoid having filesystem collisions. If this happens with a non-symlink\n // entry, it'll just fail to unpack, but a symlink to a directory, using an\n // 8.3 shortname or certain unicode attacks, can evade detection and lead\n // to arbitrary writes to anywhere on the system.\n if (entry.type === 'SymbolicLink') {\n dropCache(this.dirCache)\n } else if (entry.type !== 'Directory') {\n pruneCache(this.dirCache, entry.absolute)\n }\n }\n\n [CHECKFS2] (entry, fullyDone) {\n this[PRUNECACHE](entry)\n\n const done = er => {\n this[PRUNECACHE](entry)\n fullyDone(er)\n }\n\n const checkCwd = () => {\n this[MKDIR](this.cwd, this.dmode, er => {\n if (er) {\n this[ONERROR](er, entry)\n done()\n return\n }\n this[CHECKED_CWD] = true\n start()\n })\n }\n\n const start = () => {\n if (entry.absolute !== this.cwd) {\n const parent = normPath(path.dirname(entry.absolute))\n if (parent !== this.cwd) {\n return this[MKDIR](parent, this.dmode, er => {\n if (er) {\n this[ONERROR](er, entry)\n done()\n return\n }\n afterMakeParent()\n })\n }\n }\n afterMakeParent()\n }\n\n const afterMakeParent = () => {\n fs.lstat(entry.absolute, (lstatEr, st) => {\n if (st && (this.keep || this.newer && st.mtime > entry.mtime)) {\n this[SKIP](entry)\n done()\n return\n }\n if (lstatEr || this[ISREUSABLE](entry, st)) {\n return this[MAKEFS](null, entry, done)\n }\n\n if (st.isDirectory()) {\n if (entry.type === 'Directory') {\n const needChmod = !this.noChmod &&\n entry.mode &&\n (st.mode & 0o7777) !== entry.mode\n const afterChmod = er => this[MAKEFS](er, entry, done)\n if (!needChmod) {\n return afterChmod()\n }\n return fs.chmod(entry.absolute, entry.mode, afterChmod)\n }\n // Not a dir entry, have to remove it.\n // NB: the only way to end up with an entry that is the cwd\n // itself, in such a way that == does not detect, is a\n // tricky windows absolute path with UNC or 8.3 parts (and\n // preservePaths:true, or else it will have been stripped).\n // In that case, the user has opted out of path protections\n // explicitly, so if they blow away the cwd, c'est la vie.\n if (entry.absolute !== this.cwd) {\n return fs.rmdir(entry.absolute, er =>\n this[MAKEFS](er, entry, done))\n }\n }\n\n // not a dir, and not reusable\n // don't remove if the cwd, we want that error\n if (entry.absolute === this.cwd) {\n return this[MAKEFS](null, entry, done)\n }\n\n unlinkFile(entry.absolute, er =>\n this[MAKEFS](er, entry, done))\n })\n }\n\n if (this[CHECKED_CWD]) {\n start()\n } else {\n checkCwd()\n }\n }\n\n [MAKEFS] (er, entry, done) {\n if (er) {\n this[ONERROR](er, entry)\n done()\n return\n }\n\n switch (entry.type) {\n case 'File':\n case 'OldFile':\n case 'ContiguousFile':\n return this[FILE](entry, done)\n\n case 'Link':\n return this[HARDLINK](entry, done)\n\n case 'SymbolicLink':\n return this[SYMLINK](entry, done)\n\n case 'Directory':\n case 'GNUDumpDir':\n return this[DIRECTORY](entry, done)\n }\n }\n\n [LINK] (entry, linkpath, link, done) {\n // XXX: get the type ('symlink' or 'junction') for windows\n fs[link](linkpath, entry.absolute, er => {\n if (er) {\n this[ONERROR](er, entry)\n } else {\n this[UNPEND]()\n entry.resume()\n }\n done()\n })\n }\n}\n\nconst callSync = fn => {\n try {\n return [null, fn()]\n } catch (er) {\n return [er, null]\n }\n}\nclass UnpackSync extends Unpack {\n [MAKEFS] (er, entry) {\n return super[MAKEFS](er, entry, () => {})\n }\n\n [CHECKFS] (entry) {\n this[PRUNECACHE](entry)\n\n if (!this[CHECKED_CWD]) {\n const er = this[MKDIR](this.cwd, this.dmode)\n if (er) {\n return this[ONERROR](er, entry)\n }\n this[CHECKED_CWD] = true\n }\n\n // don't bother to make the parent if the current entry is the cwd,\n // we've already checked it.\n if (entry.absolute !== this.cwd) {\n const parent = normPath(path.dirname(entry.absolute))\n if (parent !== this.cwd) {\n const mkParent = this[MKDIR](parent, this.dmode)\n if (mkParent) {\n return this[ONERROR](mkParent, entry)\n }\n }\n }\n\n const [lstatEr, st] = callSync(() => fs.lstatSync(entry.absolute))\n if (st && (this.keep || this.newer && st.mtime > entry.mtime)) {\n return this[SKIP](entry)\n }\n\n if (lstatEr || this[ISREUSABLE](entry, st)) {\n return this[MAKEFS](null, entry)\n }\n\n if (st.isDirectory()) {\n if (entry.type === 'Directory') {\n const needChmod = !this.noChmod &&\n entry.mode &&\n (st.mode & 0o7777) !== entry.mode\n const [er] = needChmod ? callSync(() => {\n fs.chmodSync(entry.absolute, entry.mode)\n }) : []\n return this[MAKEFS](er, entry)\n }\n // not a dir entry, have to remove it\n const [er] = callSync(() => fs.rmdirSync(entry.absolute))\n this[MAKEFS](er, entry)\n }\n\n // not a dir, and not reusable.\n // don't remove if it's the cwd, since we want that error.\n const [er] = entry.absolute === this.cwd ? []\n : callSync(() => unlinkFileSync(entry.absolute))\n this[MAKEFS](er, entry)\n }\n\n [FILE] (entry, done) {\n const mode = entry.mode & 0o7777 || this.fmode\n\n const oner = er => {\n let closeError\n try {\n fs.closeSync(fd)\n } catch (e) {\n closeError = e\n }\n if (er || closeError) {\n this[ONERROR](er || closeError, entry)\n }\n done()\n }\n\n let fd\n try {\n fd = fs.openSync(entry.absolute, getFlag(entry.size), mode)\n } catch (er) {\n return oner(er)\n }\n const tx = this.transform ? this.transform(entry) || entry : entry\n if (tx !== entry) {\n tx.on('error', er => this[ONERROR](er, entry))\n entry.pipe(tx)\n }\n\n tx.on('data', chunk => {\n try {\n fs.writeSync(fd, chunk, 0, chunk.length)\n } catch (er) {\n oner(er)\n }\n })\n\n tx.on('end', _ => {\n let er = null\n // try both, falling futimes back to utimes\n // if either fails, handle the first error\n if (entry.mtime && !this.noMtime) {\n const atime = entry.atime || new Date()\n const mtime = entry.mtime\n try {\n fs.futimesSync(fd, atime, mtime)\n } catch (futimeser) {\n try {\n fs.utimesSync(entry.absolute, atime, mtime)\n } catch (utimeser) {\n er = futimeser\n }\n }\n }\n\n if (this[DOCHOWN](entry)) {\n const uid = this[UID](entry)\n const gid = this[GID](entry)\n\n try {\n fs.fchownSync(fd, uid, gid)\n } catch (fchowner) {\n try {\n fs.chownSync(entry.absolute, uid, gid)\n } catch (chowner) {\n er = er || fchowner\n }\n }\n }\n\n oner(er)\n })\n }\n\n [DIRECTORY] (entry, done) {\n const mode = entry.mode & 0o7777 || this.dmode\n const er = this[MKDIR](entry.absolute, mode)\n if (er) {\n this[ONERROR](er, entry)\n done()\n return\n }\n if (entry.mtime && !this.noMtime) {\n try {\n fs.utimesSync(entry.absolute, entry.atime || new Date(), entry.mtime)\n } catch (er) {}\n }\n if (this[DOCHOWN](entry)) {\n try {\n fs.chownSync(entry.absolute, this[UID](entry), this[GID](entry))\n } catch (er) {}\n }\n done()\n entry.resume()\n }\n\n [MKDIR] (dir, mode) {\n try {\n return mkdir.sync(normPath(dir), {\n uid: this.uid,\n gid: this.gid,\n processUid: this.processUid,\n processGid: this.processGid,\n umask: this.processUmask,\n preserve: this.preservePaths,\n unlink: this.unlink,\n cache: this.dirCache,\n cwd: this.cwd,\n mode: mode,\n })\n } catch (er) {\n return er\n }\n }\n\n [LINK] (entry, linkpath, link, done) {\n try {\n fs[link + 'Sync'](linkpath, entry.absolute)\n done()\n entry.resume()\n } catch (er) {\n return this[ONERROR](er, entry)\n }\n }\n}\n\nUnpack.Sync = UnpackSync\nmodule.exports = Unpack\n", "'use strict'\n\n// tar -x\nconst hlo = require('./high-level-opt.js')\nconst Unpack = require('./unpack.js')\nconst fs = require('fs')\nconst fsm = require('fs-minipass')\nconst path = require('path')\nconst stripSlash = require('./strip-trailing-slashes.js')\n\nmodule.exports = (opt_, files, cb) => {\n if (typeof opt_ === 'function') {\n cb = opt_, files = null, opt_ = {}\n } else if (Array.isArray(opt_)) {\n files = opt_, opt_ = {}\n }\n\n if (typeof files === 'function') {\n cb = files, files = null\n }\n\n if (!files) {\n files = []\n } else {\n files = Array.from(files)\n }\n\n const opt = hlo(opt_)\n\n if (opt.sync && typeof cb === 'function') {\n throw new TypeError('callback not supported for sync tar functions')\n }\n\n if (!opt.file && typeof cb === 'function') {\n throw new TypeError('callback only supported with file option')\n }\n\n if (files.length) {\n filesFilter(opt, files)\n }\n\n return opt.file && opt.sync ? extractFileSync(opt)\n : opt.file ? extractFile(opt, cb)\n : opt.sync ? extractSync(opt)\n : extract(opt)\n}\n\n// construct a filter that limits the file entries listed\n// include child entries if a dir is included\nconst filesFilter = (opt, files) => {\n const map = new Map(files.map(f => [stripSlash(f), true]))\n const filter = opt.filter\n\n const mapHas = (file, r) => {\n const root = r || path.parse(file).root || '.'\n const ret = file === root ? false\n : map.has(file) ? map.get(file)\n : mapHas(path.dirname(file), root)\n\n map.set(file, ret)\n return ret\n }\n\n opt.filter = filter\n ? (file, entry) => filter(file, entry) && mapHas(stripSlash(file))\n : file => mapHas(stripSlash(file))\n}\n\nconst extractFileSync = opt => {\n const u = new Unpack.Sync(opt)\n\n const file = opt.file\n const stat = fs.statSync(file)\n // This trades a zero-byte read() syscall for a stat\n // However, it will usually result in less memory allocation\n const readSize = opt.maxReadSize || 16 * 1024 * 1024\n const stream = new fsm.ReadStreamSync(file, {\n readSize: readSize,\n size: stat.size,\n })\n stream.pipe(u)\n}\n\nconst extractFile = (opt, cb) => {\n const u = new Unpack(opt)\n const readSize = opt.maxReadSize || 16 * 1024 * 1024\n\n const file = opt.file\n const p = new Promise((resolve, reject) => {\n u.on('error', reject)\n u.on('close', resolve)\n\n // This trades a zero-byte read() syscall for a stat\n // However, it will usually result in less memory allocation\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(u)\n }\n })\n })\n return cb ? p.then(cb, cb) : p\n}\n\nconst extractSync = opt => new Unpack.Sync(opt)\n\nconst extract = opt => new Unpack(opt)\n", "'use strict'\n\n// high-level commands\nexports.c = exports.create = require('./lib/create.js')\nexports.r = exports.replace = require('./lib/replace.js')\nexports.t = exports.list = require('./lib/list.js')\nexports.u = exports.update = require('./lib/update.js')\nexports.x = exports.extract = require('./lib/extract.js')\n\n// classes\nexports.Pack = require('./lib/pack.js')\nexports.Unpack = require('./lib/unpack.js')\nexports.Parse = require('./lib/parse.js')\nexports.ReadEntry = require('./lib/read-entry.js')\nexports.WriteEntry = require('./lib/write-entry.js')\nexports.Header = require('./lib/header.js')\nexports.Pax = require('./lib/pax.js')\nexports.types = require('./lib/types.js')\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, "/** 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 overridden 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 overridden 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 overridden by the package.json's `publishConfig` field.\n */\n access?: Access | undefined;\n\n /**\n * Version check strategy.\n *\n * If \"upgrade\" (default), the package will only be published if its version\n * is higher than the existing version on the configured tag. If \"always\", the\n * package will be published if its version is simply not yet published.\n *\n * Defaults to `upgrade`.\n */\n strategy?: Strategy | 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 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 must be a string, got \"${String(value)}\"`);\n this.name = \"InvalidPackageNameError\";\n }\n}\n\nexport class InvalidPackageVersionError extends TypeError {\n public constructor(value: unknown) {\n super(`Package version must be a string, got \"${String(value)}\"`);\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 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 { valid as semverValid } from \"semver\";\nimport { list as tarList, type ReadEntry } from \"tar\";\n\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}\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 isVersion = (version: unknown): version is string => {\n return semverValid(version as string) !== null;\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 = manifestJson[\"version\"];\n publishConfig = manifestJson[\"publishConfig\"] ?? {};\n } catch (error) {\n throw new errors.PackageJsonParseError(packageSpec, error);\n }\n\n if (typeof name !== \"string\" || name.length === 0) {\n throw new errors.InvalidPackageNameError(name);\n }\n\n if (!isVersion(version)) {\n throw new errors.InvalidPackageVersionError(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 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 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 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 dryRun: setValue(options.dryRun, false, validateDryRun),\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 return value as string;\n};\n\nconst validateDryRun = (value: unknown): boolean => {\n return value as boolean;\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 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 type Command = typeof VIEW | typeof PUBLISH | string;\nexport const VIEW = \"view\";\nexport const PUBLISH = \"publish\";\n\nexport const E404 = \"E404\";\nexport const EPUBLISHCONFLICT = \"EPUBLISHCONFLICT\";\n\nconst NPM = os.platform() === \"win32\" ? \"npm.cmd\" : \"npm\";\nconst JSON_MATCH_RE = /(\\{[\\s\\S]*\\})/mu;\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, \"--ignore-scripts\", \"--json\", ...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?: string | null } }>(\n stdout,\n stderr\n );\n\n errorCode = errorPayload?.error?.code?.toUpperCase();\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 });\n\n npm.stdout.on(\"data\", (data) => (stdout += data));\n npm.stderr.on(\"data\", (data) => (stderr += data));\n npm.on(\"close\", (code) => {\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 npmrcDirectory = await fs.mkdtemp(\n path.join(temporaryDirectory, \"npm-publish-\")\n );\n const npmrc = path.join(npmrcDirectory, \".npmrc\");\n const environment = {\n NODE_AUTH_TOKEN: token,\n npm_config_userconfig: npmrc,\n };\n\n const config = [\n \"; created by jsdevtools/npm-publish\",\n `//${registry.host}/:_authToken=\\${NODE_AUTH_TOKEN}`,\n `registry=${registry.href}`,\n \"\",\n ].join(os.EOL);\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.js\";\nimport semverGreaterThan from \"semver/functions/gt.js\";\nimport semverValid from \"semver/functions/valid.js\";\n\nimport { STRATEGY_ALL } from \"../options.js\";\nimport type { NormalizedOptions } from \"../normalize-options.js\";\nimport 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\nconst INITIAL = \"initial\";\nconst DIFFERENT = \"different\";\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 } = 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 (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 = { environment, logger: options.logger };\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 comparison = compareVersions(version, viewCall.successData, options);\n const publishCall = comparison.type\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: 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\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 if (result.id === undefined) {\n return `\uD83D\uDE45\u200D\u2640\uFE0F ${manifest.name}@${manifest.version} publish skipped.`;\n }\n\n return [\n `\uD83D\uDCE6 ${result.id}${options.dryRun.value ? \" (DRY RUN)\" : \"\"}`,\n \"=== Contents ===\",\n ...result.files.map(({ path, size }) => `${formatSize(size)}\\t${path}`),\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 not\n */\nexport function getBooleanInput(name: string): boolean {\n return ghGetInput(name) === \"true\";\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", "/** 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 strategy: core.getInput(\"strategy\"),\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\nrun().catch((error: Error) => core.setFailed(error));\n"], + "mappings": "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", + "names": ["module", "module", "module", "module", "module", "module", "version", "module", "parse", "version", "module", "parse", "version", "module", "parse", "version", "module", "version", "module", "parse", "v1", "module", "module", "module", "module", "parse", "version", "module", "module", "module", "module", "module", "module", "module", "module", "module", "module", "module", "module", "module", "module", "parse", "version", "module", "module", "module", "module", "version", "module", "version", "module", "version", "module", "module", "module", "module", "require_valid", "module", "module", "version", "module", "version", "module", "version", "module", "module", "version", "module", "require_semver", "module", "parse", "module", "module", "p", "ret", "res", "require_constants", "module", "require_minipass", "module", "p", "ret", "res", "Buffer", "module", "module", "global", "module", "parse", "module", "global", "path", "module", "path", "global", "module", "module", "module", "s", "module", "parse", "path", "module", "module", "fs", "path", "module", "path", "fs", "stat", "require_minipass", "module", "p", "ret", "res", "fs", "path", "buf", "require_parse", "module", "chunk", "ret", "module", "fs", "path", "parse", "module", "path", "module", "fs", "path", "cb", "er", "module", "path", "module", "fs", "module", "parse", "path", "module", "path", "module", "path", "made", "module", "path", "module", "fs", "version", "module", "path", "module", "fs", "path", "er", "module", "fs", "path", "er", "created", "module", "module", "path", "run", "fn", "module", "fs", "module", "fs", "path", "crypto", "er", "module", "fs", "path", "os", "crypto", "version", "URL", "crypto", "import_crypto", "crypto", "import_crypto", "fs", "os", "options", "socket", "require_tunnel", "module", "HttpCodes", "Headers", "MediaTypes", "path", "os", "path", "ExitCode", "getInput", "getBooleanInput", "setOutput", "setFailed", "os", "path", "version", "semverValid", "fs", "tarList", "import_node_os", "os", "validate", "import_node_os", "os", "logger", "childProcess", "import_promises", "import_node_os", "import_node_path", "logger", "fs", "path", "os", "semverValid", "semverGreaterThan", "semverDifference", "version", "import_node_os", "path", "os", "ghLogDebug", "ghLogInfo", "ghLogError", "ghGetInput", "ghSetSecret", "ghSetFailed", "ghSetOutput"] } diff --git a/package.json b/package.json index 74362de..3d42994 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "!__tests__" ], "scripts": { - "all": "npm run clean && npm run build && npm run lint && npm run coverage", + "all": "npm run clean && npm run build && npm run format && npm run coverage", "clean": "rimraf coverage lib dist e2e/fixture *.tgz", "lint": "npm run _eslint && npm run _prettier -- --check", "format": "npm run _eslint -- --fix && npm run _prettier -- --write", diff --git a/src/__tests__/format-publish-result.test.ts b/src/__tests__/format-publish-result.test.ts index 7d2afb5..811073a 100644 --- a/src/__tests__/format-publish-result.test.ts +++ b/src/__tests__/format-publish-result.test.ts @@ -3,12 +3,14 @@ import { describe, it, expect } from "vitest"; import * as subject from "../format-publish-result.js"; import type { PackageManifest } from "../read-manifest.js"; import type { NormalizedOptions } from "../normalize-options.js"; +import type { PublishResult } from "../compare-and-publish/index.js"; describe("formatPublishResult", () => { it("should say if a publish was skipped", () => { const result = subject.formatPublishResult( { name: "cool-package", version: "1.2.3" } as PackageManifest, - {} as NormalizedOptions + {} as NormalizedOptions, + { id: undefined } as PublishResult ); expect(result).toMatch(/cool-package@1\.2\.3.+skipped/); @@ -18,7 +20,10 @@ describe("formatPublishResult", () => { const result = subject.formatPublishResult( { name: "cool-package", version: "1.2.3" } as PackageManifest, { dryRun: { value: true } } as NormalizedOptions, - { id: "cool-package@1.2.3", files: [] } + { + id: "cool-package@1.2.3", + files: [{ path: "cool-file-1", size: 1 }], + } as PublishResult ); expect(result).toMatch(/cool-package@1\.2\.3.+DRY RUN/); @@ -35,7 +40,7 @@ describe("formatPublishResult", () => { { path: "cool-file-2", size: 1234 }, { path: "cool-file-3", size: 5_678_910 }, ], - } + } as PublishResult ); expect(result).not.toMatch(/DRY RUN/); diff --git a/src/__tests__/normalize-options.test.ts b/src/__tests__/normalize-options.test.ts index 5650bc6..0ba1bb5 100644 --- a/src/__tests__/normalize-options.test.ts +++ b/src/__tests__/normalize-options.test.ts @@ -7,6 +7,7 @@ import type { Logger } from "../options.js"; describe("normalizeOptions", () => { const manifest = { + packageSpec: ".", name: "cool-package", version: "1.2.3", scope: undefined, @@ -15,7 +16,7 @@ describe("normalizeOptions", () => { describe("authConfig", () => { it("should set auth config defaults", () => { - const result = subject.normalizeOptions({ token: "abc123" }, manifest); + const result = subject.normalizeOptions(manifest, { token: "abc123" }); expect(result).toMatchObject({ token: "abc123", @@ -24,10 +25,10 @@ describe("normalizeOptions", () => { }); it("should normalize registry URL", () => { - const result = subject.normalizeOptions( - { token: "abc123", registry: "https://example.com" }, - manifest - ); + const result = subject.normalizeOptions(manifest, { + token: "abc123", + registry: "https://example.com", + }); expect(result).toMatchObject({ registry: new URL("https://example.com"), @@ -36,13 +37,8 @@ describe("normalizeOptions", () => { it("should take defaults from `pkg.publishConfig`", () => { const result = subject.normalizeOptions( - { token: "abc123" }, - { - ...manifest, - publishConfig: { - registry: "https://example.com", - }, - } + { ...manifest, publishConfig: { registry: "https://example.com" } }, + { token: "abc123" } ); expect(result).toMatchObject({ @@ -52,16 +48,16 @@ describe("normalizeOptions", () => { it("should throw if registry URL invalid", () => { expect(() => { - subject.normalizeOptions( - { token: "abc123", registry: "hello world" }, - manifest - ); + subject.normalizeOptions(manifest, { + token: "abc123", + registry: "hello world", + }); }).toThrow(errors.InvalidRegistryUrlError); }); it("should throw if token invalid", () => { expect(() => { - subject.normalizeOptions({ token: "" }, manifest); + subject.normalizeOptions(manifest, { token: "" }); }).toThrow(errors.InvalidTokenError); expect(() => { @@ -73,7 +69,7 @@ describe("normalizeOptions", () => { describe("publishConfig", () => { it("should set publish config defaults", () => { - const result = subject.normalizeOptions({ token: "abc123" }, manifest); + const result = subject.normalizeOptions(manifest, { token: "abc123" }); expect(result).toMatchObject({ tag: { value: "latest", isDefault: true }, @@ -85,8 +81,8 @@ describe("normalizeOptions", () => { it("should set publish config defaults for scoped package", () => { const result = subject.normalizeOptions( - { token: "abc123" }, - { ...manifest, scope: "@cool-scope" } + { ...manifest, scope: "@cool-scope" }, + { token: "abc123" } ); expect(result).toMatchObject({ @@ -96,6 +92,7 @@ describe("normalizeOptions", () => { it("should allow options to be overridden", () => { const result = subject.normalizeOptions( + { ...manifest, scope: "@cool-scope" }, { token: "abc123", package: "./cool-package", @@ -103,8 +100,7 @@ describe("normalizeOptions", () => { access: "public", dryRun: true, strategy: "all", - }, - { ...manifest, scope: "@cool-scope" } + } ); expect(result).toMatchObject({ @@ -117,15 +113,12 @@ describe("normalizeOptions", () => { it("should take default configs from `pkg.publishConfig`", () => { const result = subject.normalizeOptions( - { token: "abc123" }, { ...manifest, scope: "@cool-scope", - publishConfig: { - tag: "next", - access: "public", - }, - } + publishConfig: { tag: "next", access: "public" }, + }, + { token: "abc123" } ); expect(result).toMatchObject({ @@ -136,34 +129,28 @@ describe("normalizeOptions", () => { it("should validate access value", () => { expect(() => { - subject.normalizeOptions( - { - token: "abc123", - // @ts-expect-error: intentionally mistyped for validation testing - access: "NOT-VALID-ACCESS", - }, - manifest - ); + subject.normalizeOptions(manifest, { + token: "abc123", + // @ts-expect-error: intentionally mistyped for validation testing + access: "NOT-VALID-ACCESS", + }); }).toThrow(errors.InvalidAccessError); }); it("should validate strategy value", () => { expect(() => { - subject.normalizeOptions( - { - token: "abc123", - // @ts-expect-error: intentionally mistyped for validation testing - strategy: "NOT-VALID-STRATEGY", - }, - manifest - ); + subject.normalizeOptions(manifest, { + token: "abc123", + // @ts-expect-error: intentionally mistyped for validation testing + strategy: "NOT-VALID-STRATEGY", + }); }).toThrow(errors.InvalidStrategyError); }); }); describe("runtime config", () => { it("should have no logger and set a temporary directory by default", () => { - const result = subject.normalizeOptions({ token: "abc123" }, manifest); + const result = subject.normalizeOptions(manifest, { token: "abc123" }); expect(result).toMatchObject({ logger: undefined, @@ -175,10 +162,11 @@ describe("normalizeOptions", () => { const logger = { debug: (message) => void message } as Logger; const temporaryDirectory = "/some/temp/dir"; - const result = subject.normalizeOptions( - { token: "abc123", logger, temporaryDirectory }, - manifest - ); + const result = subject.normalizeOptions(manifest, { + token: "abc123", + logger, + temporaryDirectory, + }); expect(result).toMatchObject({ logger, temporaryDirectory }); }); diff --git a/src/__tests__/npm-publish.test.ts b/src/__tests__/npm-publish.test.ts index 9779c78..c37b564 100644 --- a/src/__tests__/npm-publish.test.ts +++ b/src/__tests__/npm-publish.test.ts @@ -8,22 +8,17 @@ import { normalizeOptions, type NormalizedOptions, } from "../normalize-options.js"; +import { useNpmEnvironment } from "../npm/index.js"; import { - getVersions, - publish, - type PublishedVersions, + compareAndPublish, type PublishResult, -} from "../npm/index.js"; -import { - compareVersions, - type VersionComparison, -} from "../compare-versions.js"; -import type { Options } from "../options.js"; +} from "../compare-and-publish/index.js"; +import type { Logger, Options } from "../options.js"; vi.mock("../read-manifest", () => imitateEsm("../read-manifest")); vi.mock("../normalize-options", () => imitateEsm("../normalize-options")); vi.mock("../npm", () => imitateEsm("../npm")); -vi.mock("../compare-versions", () => imitateEsm("../compare-versions")); +vi.mock("../compare-and-publish", () => imitateEsm("../compare-and-publish")); describe("npmPublish", () => { afterEach(() => { @@ -32,104 +27,42 @@ describe("npmPublish", () => { it("should read the manifest, get publish config, compare, and publish", async () => { const options: Options = { package: "./cool-package", token: "abc123" }; - const packageSpec = "."; - const manifest = { - name: "cool-package", - version: "1.2.3", - } as PackageManifest; + + const manifest = { name: "fizzbuzz", version: "1.2.3" } as PackageManifest; + const normalizedOptions = { registry: new URL("http://example.com"), tag: { value: "latest" }, access: { value: "public" }, dryRun: { value: false }, strategy: { value: "upgrade" }, + logger: { debug: (message: string) => void message } as Logger, } as NormalizedOptions; - const versions: PublishedVersions = { "dist-tags": {}, versions: [] }; - const comparison: VersionComparison = { - type: "major", - oldVersion: "0.1.2", - }; + const publishResult: PublishResult = { - id: "cool-package@1.2.3", + id: "fizzbuzz@1.2.3", files: [], - }; - - td.when(readManifest("./cool-package")).thenResolve({ - packageSpec, - manifest, - }); - td.when(normalizeOptions(options, manifest)).thenReturn(normalizedOptions); - td.when(getVersions("cool-package", normalizedOptions)).thenResolve( - versions - ); - td.when(compareVersions("1.2.3", versions, normalizedOptions)).thenReturn( - comparison - ); - td.when(publish(packageSpec, normalizedOptions)).thenResolve(publishResult); - - const result = await subject.npmPublish(options); - - expect(result).toEqual({ - id: "cool-package@1.2.3", - name: "cool-package", - version: "1.2.3", - oldVersion: "0.1.2", - tag: "latest", - access: "public", - registry: new URL("http://example.com"), type: "major", - strategy: "upgrade", - dryRun: false, - }); - }); - - it("should skip publish if not needed", async () => { - const options: Options = { package: "./cool-package", token: "abc123" }; - const packageSpec = "."; - const manifest = { - name: "cool-package", - version: "1.2.3", - } as PackageManifest; - const normalizedOptions = { - registry: new URL("http://example.com"), - tag: { value: "latest" }, - access: { value: "public" }, - dryRun: { value: false }, - strategy: { value: "upgrade" }, - } as NormalizedOptions; - const versions: PublishedVersions = { "dist-tags": {}, versions: [] }; - const comparison: VersionComparison = { - type: undefined, oldVersion: "0.1.2", }; - td.when(readManifest("./cool-package")).thenResolve({ - packageSpec, - manifest, - }); - td.when(normalizeOptions(options, manifest)).thenReturn(normalizedOptions); - td.when(getVersions("cool-package", normalizedOptions)).thenResolve( - versions - ); - td.when(compareVersions("1.2.3", versions, normalizedOptions)).thenReturn( - comparison - ); + td.when(readManifest("./cool-package")).thenResolve(manifest); + td.when(normalizeOptions(manifest, options)).thenReturn(normalizedOptions); + td.when( + useNpmEnvironment(manifest, normalizedOptions, compareAndPublish) + ).thenResolve(publishResult); const result = await subject.npmPublish(options); - td.verify(publish(packageSpec, normalizedOptions), { - times: 0, - }); - expect(result).toEqual({ - id: undefined, - name: "cool-package", + id: "fizzbuzz@1.2.3", + name: "fizzbuzz", version: "1.2.3", oldVersion: "0.1.2", tag: "latest", access: "public", registry: new URL("http://example.com"), - type: undefined, + type: "major", strategy: "upgrade", dryRun: false, }); diff --git a/src/__tests__/read-manifest.test.ts b/src/__tests__/read-manifest.test.ts index ddf7fd8..31ea29e 100644 --- a/src/__tests__/read-manifest.test.ts +++ b/src/__tests__/read-manifest.test.ts @@ -31,12 +31,10 @@ describe("readManifest", () => { expect(result).toEqual({ packageSpec: directory, - manifest: { - name: "cool-name", - version: "1.2.3", - scope: undefined, - publishConfig: {}, - }, + name: "cool-name", + version: "1.2.3", + scope: undefined, + publishConfig: {}, }); }); @@ -51,7 +49,7 @@ describe("readManifest", () => { expect(result).toMatchObject({ packageSpec: directory, - manifest: { name: "cool-name" }, + name: "cool-name", }); }); @@ -60,7 +58,7 @@ describe("readManifest", () => { expect(result).toMatchObject({ packageSpec: "", - manifest: { name: "@jsdevtools/npm-publish" }, + name: "@jsdevtools/npm-publish", }); }); @@ -90,7 +88,7 @@ describe("readManifest", () => { expect(result).toMatchObject({ packageSpec: path.join(directory, "package-tarball.tgz"), - manifest: { name: "cool-name" }, + name: "cool-name", }); }); @@ -116,7 +114,7 @@ describe("readManifest", () => { const result = await subject.readManifest(directory); - expect(result.manifest).toMatchObject({ + expect(result).toMatchObject({ publishConfig: { access: "public" }, }); }); @@ -133,7 +131,7 @@ describe("readManifest", () => { const result = await subject.readManifest(directory); - expect(result.manifest).toMatchObject({ + expect(result).toMatchObject({ scope: "@cool-scope", }); }); diff --git a/src/compare-and-publish/__tests__/compare-and-publish.test.ts b/src/compare-and-publish/__tests__/compare-and-publish.test.ts new file mode 100644 index 0000000..43bc877 --- /dev/null +++ b/src/compare-and-publish/__tests__/compare-and-publish.test.ts @@ -0,0 +1,255 @@ +import { vi, describe, it, beforeEach, afterEach, expect } from "vitest"; +import { imitateEsm, reset } from "testdouble-vitest"; +import * as td from "testdouble"; + +import type { PackageManifest } from "../../read-manifest.js"; +import type { NormalizedOptions } from "../../normalize-options.js"; + +import * as subject from "../compare-and-publish.js"; +import * as errors from "../../errors.js"; +import type { Logger } from "../../options.js"; +import { callNpmCli } from "../../npm/index.js"; +import { compareVersions } from "../compare-versions.js"; +import { getViewArguments, getPublishArguments } from "../get-arguments.js"; + +vi.mock("../../npm", () => imitateEsm("../../npm")); +vi.mock("../compare-versions", () => imitateEsm("../compare-versions")); +vi.mock("../get-arguments", () => imitateEsm("../get-arguments")); + +describe("compareAndPublish", () => { + const manifest = { + packageSpec: ".", + name: "fizzbuzz", + version: "1.2.3", + } as PackageManifest; + + const logger = { debug: (message: string) => void message } as Logger; + const normalizedOptions = { token: "abc123", logger } as NormalizedOptions; + const environment = { foo: "bar" }; + const npmViewResult = { versions: ["0.0.1"], "dist-tags": {} }; + const npmPublishResult = { id: "fizzbuzz@1.2.3", files: [] }; + + beforeEach(() => { + td.when(getViewArguments("fizzbuzz", normalizedOptions)).thenReturn([ + "fizzbuzz", + ]); + td.when(getPublishArguments(".", normalizedOptions)).thenReturn(["."]); + + td.when( + callNpmCli("view", ["fizzbuzz"], { logger, environment }) + ).thenResolve({ + successData: npmViewResult, + errorCode: undefined, + error: undefined, + }); + + td.when(callNpmCli("publish", ["."], { logger, environment })).thenResolve({ + successData: npmPublishResult, + errorCode: undefined, + error: undefined, + }); + + td.when( + compareVersions( + "1.2.3", + { versions: ["0.0.1"], "dist-tags": {} }, + normalizedOptions + ) + ).thenReturn({ type: "major", oldVersion: "0.0.1" }); + }); + + afterEach(() => { + reset(); + }); + + it("should get versions, compare, and publish", async () => { + const result = await subject.compareAndPublish( + manifest, + normalizedOptions, + environment + ); + + expect(result).toEqual({ + id: "fizzbuzz@1.2.3", + files: [], + oldVersion: "0.0.1", + type: "major", + }); + }); + + it("should skip publish if version exists", async () => { + td.when( + compareVersions( + "1.2.3", + { versions: ["0.0.1"], "dist-tags": {} }, + normalizedOptions + ) + ).thenReturn({ type: undefined, oldVersion: "0.0.1" }); + + const result = await subject.compareAndPublish( + manifest, + normalizedOptions, + environment + ); + + expect(result).toEqual({ + id: undefined, + files: [], + oldVersion: "0.0.1", + type: undefined, + }); + + td.verify( + callNpmCli("publish", td.matchers.anything(), td.matchers.anything()), + { times: 0 } + ); + }); + + it("should handle an E404 from npm view", async () => { + td.when( + callNpmCli("view", ["fizzbuzz"], { logger, environment }) + ).thenResolve({ + successData: undefined, + errorCode: "E404", + error: new errors.NpmCallError("view", 1, "oh no"), + }); + + td.when(compareVersions("1.2.3", undefined, normalizedOptions)).thenReturn({ + type: "major", + oldVersion: "0.0.1", + }); + + const result = await subject.compareAndPublish( + manifest, + normalizedOptions, + environment + ); + + expect(result).toEqual({ + id: "fizzbuzz@1.2.3", + files: [], + oldVersion: "0.0.1", + type: "major", + }); + }); + + it("should raise a non-E404 from npm view", async () => { + td.when( + callNpmCli("view", ["fizzbuzz"], { logger, environment }) + ).thenResolve({ + successData: undefined, + errorCode: "E500", + error: new errors.NpmCallError("view", 1, "oh no"), + }); + + const result = subject.compareAndPublish( + manifest, + normalizedOptions, + environment + ); + + await expect(result).rejects.toThrow(errors.NpmCallError); + }); + + it("should allow an EPUBLISHCONFLICT from npm publish", async () => { + td.when(callNpmCli("publish", ["."], { logger, environment })).thenResolve({ + successData: undefined, + errorCode: "EPUBLISHCONFLICT", + error: new errors.NpmCallError("publish", 1, "oh no"), + }); + + const result = await subject.compareAndPublish( + manifest, + normalizedOptions, + environment + ); + + expect(result).toEqual({ + id: undefined, + files: [], + oldVersion: "0.0.1", + type: undefined, + }); + }); + + it("should raise a non-EPUBLISHCONFLIG from npm publish", async () => { + td.when(callNpmCli("publish", ["."], { logger, environment })).thenResolve({ + successData: undefined, + errorCode: "E500", + error: new errors.NpmCallError("publish", 1, "oh no"), + }); + + const result = subject.compareAndPublish( + manifest, + normalizedOptions, + environment + ); + + await expect(result).rejects.toThrow(errors.NpmCallError); + }); + + it("should retry the npm view call is successful but no version data", async () => { + td.when(getViewArguments("fizzbuzz", normalizedOptions, true)).thenReturn([ + "fizzbuzz@cool-tag", + ]); + + td.when( + callNpmCli("view", ["fizzbuzz"], { logger, environment }) + ).thenResolve({ + successData: undefined, + errorCode: undefined, + error: undefined, + }); + + td.when( + callNpmCli("view", ["fizzbuzz@cool-tag"], { logger, environment }) + ).thenResolve({ + successData: npmViewResult, + errorCode: undefined, + error: undefined, + }); + + const result = await subject.compareAndPublish( + manifest, + normalizedOptions, + environment + ); + + expect(result).toEqual({ + id: "fizzbuzz@1.2.3", + files: [], + oldVersion: "0.0.1", + type: "major", + }); + }); + + it("should raise if the retried npm view call fails", async () => { + td.when(getViewArguments("fizzbuzz", normalizedOptions, true)).thenReturn([ + "fizzbuzz@cool-tag", + ]); + + td.when( + callNpmCli("view", ["fizzbuzz"], { logger, environment }) + ).thenResolve({ + successData: undefined, + errorCode: undefined, + error: undefined, + }); + + td.when( + callNpmCli("view", ["fizzbuzz@cool-tag"], { logger, environment }) + ).thenResolve({ + successData: undefined, + errorCode: "E500", + error: new errors.NpmCallError("view", 1, "oh no"), + }); + + const result = subject.compareAndPublish( + manifest, + normalizedOptions, + environment + ); + + await expect(result).rejects.toThrow(errors.NpmCallError); + }); +}); diff --git a/src/__tests__/compare-versions.test.ts b/src/compare-and-publish/__tests__/compare-versions.test.ts similarity index 87% rename from src/__tests__/compare-versions.test.ts rename to src/compare-and-publish/__tests__/compare-versions.test.ts index 334732a..b57c19e 100644 --- a/src/__tests__/compare-versions.test.ts +++ b/src/compare-and-publish/__tests__/compare-versions.test.ts @@ -1,7 +1,7 @@ import { describe, it, expect } from "vitest"; import * as subject from "../compare-versions.js"; -import type { NormalizedOptions } from "../normalize-options.js"; +import type { NormalizedOptions } from "../../normalize-options.js"; describe("compareVersions", () => { it("should recognize initial release on a tag", () => { @@ -17,6 +17,17 @@ describe("compareVersions", () => { }); }); + it("should handle no known versions or dist tags", () => { + const result = subject.compareVersions("0.0.0", undefined, { + tag: { value: "next" }, + } as NormalizedOptions); + + expect(result).toEqual({ + type: "initial", + oldVersion: undefined, + }); + }); + it("should recognize an unpublished release", () => { const result = subject.compareVersions( "0.0.0", diff --git a/src/compare-and-publish/__tests__/get-arguments.test.ts b/src/compare-and-publish/__tests__/get-arguments.test.ts new file mode 100644 index 0000000..dce2a43 --- /dev/null +++ b/src/compare-and-publish/__tests__/get-arguments.test.ts @@ -0,0 +1,70 @@ +import { describe, it, expect } from "vitest"; + +import * as subject from "../get-arguments.js"; +import type { NormalizedOptions } from "../../normalize-options.js"; + +describe("get command arguments", () => { + describe("getViewArguments", () => { + it("should get dist-tags and versions", () => { + const result = subject.getViewArguments( + "cool-package", + {} as NormalizedOptions + ); + + expect(result).toEqual(["cool-package", "dist-tags", "versions"]); + }); + + it("should include a tag", () => { + const options = { tag: { value: "cool-tag" } } as NormalizedOptions; + const result = subject.getViewArguments("cool-package", options, true); + + expect(result).toEqual([ + "cool-package@cool-tag", + "dist-tags", + "versions", + ]); + }); + }); + + describe("getPublishArguments", () => { + it("should add explicit arguments", () => { + const result = subject.getPublishArguments("./cool-package", { + tag: { value: "next", isDefault: false }, + access: { value: "restricted", isDefault: false }, + dryRun: { value: true, isDefault: false }, + strategy: { value: "upgrade", isDefault: true }, + } as NormalizedOptions); + + expect(result).toEqual([ + "./cool-package", + "--tag", + "next", + "--access", + "restricted", + "--dry-run", + ]); + }); + + it("should omit default arguments", () => { + const result = subject.getPublishArguments("./cool-package", { + tag: { value: "next", isDefault: true }, + access: { value: "restricted", isDefault: true }, + dryRun: { value: false, isDefault: true }, + strategy: { value: "upgrade", isDefault: true }, + } as NormalizedOptions); + + expect(result).toEqual(["./cool-package"]); + }); + + it("should omit undefined string arguments and false boolean arguments", () => { + const result = subject.getPublishArguments("./cool-package", { + tag: { value: "next", isDefault: false }, + access: { value: undefined, isDefault: false }, + dryRun: { value: false, isDefault: false }, + strategy: { value: "upgrade", isDefault: true }, + } as NormalizedOptions); + + expect(result).toEqual(["./cool-package", "--tag", "next"]); + }); + }); +}); diff --git a/src/compare-and-publish/compare-and-publish.ts b/src/compare-and-publish/compare-and-publish.ts new file mode 100644 index 0000000..e885024 --- /dev/null +++ b/src/compare-and-publish/compare-and-publish.ts @@ -0,0 +1,75 @@ +import type { PackageManifest } from "../read-manifest.js"; +import type { NormalizedOptions } from "../normalize-options.js"; +import { + VIEW, + PUBLISH, + E404, + EPUBLISHCONFLICT, + callNpmCli, + type NpmCliEnvironment, +} from "../npm/index.js"; +import { compareVersions, type VersionComparison } from "./compare-versions.js"; +import { getViewArguments, getPublishArguments } from "./get-arguments.js"; + +export interface PublishResult extends VersionComparison { + id: string | undefined; + files: PublishFile[]; +} + +export interface PublishFile { + path: string; + size: number; +} + +/** + * Get the currently published versions of a package and publish if needed. + * + * @param manifest The package to potentially publish. + * @param options Configuration options. + * @param environment Environment variables for the npm cli. + * @returns Information about the publish, including if it occurred. + */ +export async function compareAndPublish( + manifest: PackageManifest, + options: NormalizedOptions, + environment: NpmCliEnvironment +): Promise { + const { name, version, packageSpec } = manifest; + const cliOptions = { environment, logger: options.logger }; + + const viewArguments = getViewArguments(name, options); + const publishArguments = getPublishArguments(packageSpec, options); + let viewCall = await callNpmCli(VIEW, viewArguments, cliOptions); + + // `npm view` will succeed with no output the package exists in the registry + // with no `latest` tag. This is only possible with third-party registries. + // https://github.com/npm/cli/issues/6408 + if (!viewCall.successData && !viewCall.error) { + // Retry the call to `npm view` with the configured publish tag, + // to at least try to get something. + const viewWithTagArguments = getViewArguments(name, options, true); + viewCall = await callNpmCli(VIEW, viewWithTagArguments, cliOptions); + } + + if (viewCall.error && viewCall.errorCode !== E404) { + throw viewCall.error; + } + + const comparison = compareVersions(version, viewCall.successData, options); + const publishCall = comparison.type + ? await callNpmCli(PUBLISH, publishArguments, cliOptions) + : { successData: undefined, errorCode: undefined, error: undefined }; + + if (publishCall.error && publishCall.errorCode !== EPUBLISHCONFLICT) { + throw publishCall.error; + } + + const { successData: publishData } = publishCall; + + return { + id: publishData?.id, + files: publishData?.files ?? [], + type: publishData ? comparison.type : undefined, + oldVersion: comparison.oldVersion, + }; +} diff --git a/src/compare-and-publish/compare-versions.ts b/src/compare-and-publish/compare-versions.ts new file mode 100644 index 0000000..b599e7a --- /dev/null +++ b/src/compare-and-publish/compare-versions.ts @@ -0,0 +1,48 @@ +import semverDifference from "semver/functions/diff.js"; +import semverGreaterThan from "semver/functions/gt.js"; +import semverValid from "semver/functions/valid.js"; + +import { STRATEGY_ALL } from "../options.js"; +import type { NormalizedOptions } from "../normalize-options.js"; +import type { ReleaseType } from "../results.js"; +import type { NpmViewData } from "../npm/index.js"; + +export interface VersionComparison { + type: ReleaseType | undefined; + oldVersion: string | undefined; +} + +const INITIAL = "initial"; +const DIFFERENT = "different"; + +/** + * Compare previously published versions with the package's current version. + * + * @param currentVersion The current package version. + * @param publishedVersions The versions that have already been published. + * @param options Configuration options + * @returns The release type and previous version. + */ +export function compareVersions( + currentVersion: string, + publishedVersions: NpmViewData | undefined, + options: NormalizedOptions +): VersionComparison { + const { versions, "dist-tags": tags } = publishedVersions ?? {}; + const { strategy, tag: publishTag } = options; + const oldVersion = semverValid(tags?.[publishTag.value]) ?? undefined; + const isUnique = !versions?.includes(currentVersion); + let type: ReleaseType | undefined; + + if (isUnique) { + if (!oldVersion) { + type = INITIAL; + } else if (semverGreaterThan(currentVersion, oldVersion)) { + type = semverDifference(currentVersion, oldVersion) ?? DIFFERENT; + } else if (strategy.value === STRATEGY_ALL) { + type = DIFFERENT; + } + } + + return { type, oldVersion }; +} diff --git a/src/npm/get-publish-arguments.ts b/src/compare-and-publish/get-arguments.ts similarity index 53% rename from src/npm/get-publish-arguments.ts rename to src/compare-and-publish/get-arguments.ts index cbae648..17be1ce 100644 --- a/src/npm/get-publish-arguments.ts +++ b/src/compare-and-publish/get-arguments.ts @@ -1,5 +1,28 @@ import type { NormalizedOptions } from "../normalize-options.js"; +/** + * Given a package name and publish configuration, get the NPM CLI view + * arguments. + * + * @param packageName Package name. + * @param options Publish configuration. + * @param retryWithTag Include a non-latest tag in the package spec for a rety + * attempt. + * @returns Arguments to pass to the NPM CLI. If `retryWithTag` is true, but the + * publish config is using the `latest` tag, will return `undefined`. + */ +export function getViewArguments( + packageName: string, + options: NormalizedOptions, + retryWithTag = false +): string[] { + const packageSpec = retryWithTag + ? `${packageName}@${options.tag.value}` + : packageName; + + return [packageSpec, "dist-tags", "versions"]; +} + /** * Given a publish configuration, get the NPM CLI publish arguments. * diff --git a/src/compare-and-publish/index.ts b/src/compare-and-publish/index.ts new file mode 100644 index 0000000..1abc321 --- /dev/null +++ b/src/compare-and-publish/index.ts @@ -0,0 +1 @@ +export * from "./compare-and-publish.js"; diff --git a/src/compare-versions.ts b/src/compare-versions.ts deleted file mode 100644 index e62e9f7..0000000 --- a/src/compare-versions.ts +++ /dev/null @@ -1,52 +0,0 @@ -import { - valid as semverValid, - gt as semverGreaterThan, - diff as semverDifference, - type ReleaseType as SemverReleaseType, -} from "semver"; - -import { STRATEGY_ALL } from "./options.js"; -import type { NormalizedOptions } from "./normalize-options.js"; -import type { PublishedVersions } from "./npm/index.js"; - -export type ReleaseType = SemverReleaseType | typeof INITIAL | typeof DIFFERENT; - -export interface VersionComparison { - type: ReleaseType | undefined; - oldVersion: string | undefined; -} - -const INITIAL = "initial"; -const DIFFERENT = "different"; - -/** - * Compare previously published versions with the package's current version. - * - * @param version The current package version. - * @param publishedVersions The versions that have already been published. - * @param options Configuration options - * @returns The release type and previous version. - */ -export function compareVersions( - version: string, - publishedVersions: PublishedVersions, - options: NormalizedOptions -): VersionComparison { - const { versions: existingVersions, "dist-tags": tags } = publishedVersions; - const { strategy, tag: publishTag } = options; - const oldVersion = semverValid(tags[publishTag.value]) ?? undefined; - const isUnique = !existingVersions.includes(version); - let type: ReleaseType | undefined; - - if (isUnique) { - if (!oldVersion) { - type = INITIAL; - } else if (semverGreaterThan(version, oldVersion)) { - type = semverDifference(version, oldVersion) ?? DIFFERENT; - } else if (strategy.value === STRATEGY_ALL) { - type = DIFFERENT; - } - } - - return { type, oldVersion }; -} diff --git a/src/format-publish-result.ts b/src/format-publish-result.ts index 8d70be6..e3dd1bf 100644 --- a/src/format-publish-result.ts +++ b/src/format-publish-result.ts @@ -1,6 +1,6 @@ import os from "node:os"; -import type { PublishResult } from "./npm/index.js"; +import type { PublishResult } from "./compare-and-publish/index.js"; import type { PackageManifest } from "./read-manifest.js"; import type { NormalizedOptions } from "./normalize-options.js"; @@ -9,22 +9,22 @@ import type { NormalizedOptions } from "./normalize-options.js"; * * @param manifest Package manifest * @param options Configuration options. - * @param results Results from running npm publish. + * @param result Results from running npm publish. * @returns Formatted string. */ export function formatPublishResult( manifest: PackageManifest, options: NormalizedOptions, - results?: PublishResult + result: PublishResult ): string { - if (results === undefined) { + if (result.id === undefined) { return `🙅‍♀️ ${manifest.name}@${manifest.version} publish skipped.`; } return [ - `📦 ${results.id}${options.dryRun.value ? " (DRY RUN)" : ""}`, + `📦 ${result.id}${options.dryRun.value ? " (DRY RUN)" : ""}`, "=== Contents ===", - ...results.files.map(({ path, size }) => `${formatSize(size)}\t${path}`), + ...result.files.map(({ path, size }) => `${formatSize(size)}\t${path}`), ].join(os.EOL); } diff --git a/src/normalize-options.ts b/src/normalize-options.ts index 8947225..2af869f 100644 --- a/src/normalize-options.ts +++ b/src/normalize-options.ts @@ -13,8 +13,8 @@ import { type Logger, } from "./options.js"; -const DEFAULT_REGISTRY = "https://registry.npmjs.org/"; -const DEFAULT_TAG = "latest"; +const REGISTRY_NPM = "https://registry.npmjs.org/"; +export const TAG_LATEST = "latest"; /** Normalized and sanitized auth, publish, and runtime configurations. */ export interface NormalizedOptions { @@ -37,17 +37,17 @@ export interface ConfigValue { /** * Normalizes and sanitizes options, and fills-in any default values. * - * @param options User-input options. * @param manifest Package metadata from package.json. + * @param options User-input options. * @returns Validated auth and publish configuration. */ export function normalizeOptions( - options: Options, - manifest: PackageManifest + manifest: PackageManifest, + options: Options ): NormalizedOptions { - const defaultTag = manifest.publishConfig?.tag ?? DEFAULT_TAG; + const defaultTag = manifest.publishConfig?.tag ?? TAG_LATEST; - const defaultRegistry = manifest.publishConfig?.registry ?? DEFAULT_REGISTRY; + const defaultRegistry = manifest.publishConfig?.registry ?? REGISTRY_NPM; const defaultAccess = manifest.publishConfig?.access ?? diff --git a/src/npm-publish.ts b/src/npm-publish.ts index ad5a071..7bd3f05 100644 --- a/src/npm-publish.ts +++ b/src/npm-publish.ts @@ -1,7 +1,7 @@ import { readManifest } from "./read-manifest.js"; import { normalizeOptions } from "./normalize-options.js"; -import { getVersions, publish } from "./npm/index.js"; -import { compareVersions } from "./compare-versions.js"; +import { useNpmEnvironment } from "./npm/index.js"; +import { compareAndPublish } from "./compare-and-publish/index.js"; import { formatPublishResult } from "./format-publish-result.js"; import type { Options } from "./options.js"; import type { Results } from "./results.js"; @@ -13,31 +13,24 @@ import type { Results } from "./results.js"; * @returns Release metadata. */ export async function npmPublish(options: Options): Promise { - const { packageSpec, manifest } = await readManifest(options.package); - const normalizedOptions = normalizeOptions(options, manifest); - const publishedVersions = await getVersions(manifest.name, normalizedOptions); - const versionComparison = compareVersions( - manifest.version, - publishedVersions, - normalizedOptions + const manifest = await readManifest(options.package); + const normalizedOptions = normalizeOptions(manifest, options); + const publishResult = await useNpmEnvironment( + manifest, + normalizedOptions, + compareAndPublish ); - let publishResult; - - if (versionComparison.type !== undefined) { - publishResult = await publish(packageSpec, normalizedOptions); - } - normalizedOptions.logger?.info?.( formatPublishResult(manifest, normalizedOptions, publishResult) ); return { - id: publishResult?.id, + id: publishResult.id, + type: publishResult.type, + oldVersion: publishResult.oldVersion, name: manifest.name, version: manifest.version, - type: versionComparison.type, - oldVersion: versionComparison.oldVersion, registry: normalizedOptions.registry, tag: normalizedOptions.tag.value, access: normalizedOptions.access.value, diff --git a/src/npm/__tests__/call-npm-cli.test.ts b/src/npm/__tests__/call-npm-cli.test.ts index 9d97aa3..18b8bb2 100644 --- a/src/npm/__tests__/call-npm-cli.test.ts +++ b/src/npm/__tests__/call-npm-cli.test.ts @@ -1,52 +1,48 @@ -import os from "node:os"; -import path from "node:path"; -import { describe, it, expect } from "vitest"; +import { describe, it } from "vitest"; import * as errors from "../../errors.js"; import * as subject from "../call-npm-cli.js"; -describe("callNpmCli", () => { - it("should call the NPM CLI in JSON mode", async () => { - const result = await subject.callNpmCli("config", ["list"]); - - expect(result).toMatchObject({ json: true }); - }); - - it("should call the NPM CLI in JSON mode", async () => { - const result = await subject.callNpmCli("config", ["list"]); - - expect(result).toMatchObject({ json: true, "ignore-scripts": true }); - }); - - it("should raise if error", async () => { - const result = subject.callNpmCli("explain", ["not-a-real-package"]); - - await expect(result).rejects.toThrow(errors.NpmCallError); - }); - - it("should map an error code to a return value", async () => { - const result = await subject.callNpmCli("config", [], { - ifError: { eusage: 42 }, +describe.concurrent("callNpmCli", () => { + it("should call npm CLI", async ({ expect }) => { + const result = await subject.callNpmCli("config", ["list"], { + environment: { + npm_config_scope: "@cool-scope", + }, }); - expect(result).toEqual(42); + expect(result).toEqual({ + successData: expect.objectContaining({ + json: true, + "ignore-scripts": true, + scope: "@cool-scope", + }), + errorCode: undefined, + error: undefined, + }); }); - it("should return plain strings", async () => { - const result = await subject.callNpmCli("config", ["get", "userconfig"]); + it("should return undefined if no JSON in output", async ({ expect }) => { + const result = await subject.callNpmCli("config", ["get", "scope"], { + environment: { + npm_config_scope: "", + }, + }); - expect(result).toMatch(/^.+\.npmrc$/); + expect(result).toEqual({ + successData: undefined, + errorCode: undefined, + error: undefined, + }); }); - it("should allow the environment to be overriden", async () => { - const customPath = path.join(os.homedir(), "foo", ".npmrc"); + it("should return error details if error", async ({ expect }) => { + const result = await subject.callNpmCli("config", [], { environment: {} }); - const result = await subject.callNpmCli("config", ["get", "userconfig"], { - environment: { - npm_config_userconfig: customPath, - }, + expect(result).toEqual({ + successData: undefined, + errorCode: "EUSAGE", + error: expect.any(errors.NpmCallError), }); - - expect(result).toEqual(customPath); }); }); diff --git a/src/npm/__tests__/get-publish-arguments.test.ts b/src/npm/__tests__/get-publish-arguments.test.ts deleted file mode 100644 index 030fa94..0000000 --- a/src/npm/__tests__/get-publish-arguments.test.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { describe, it, expect } from "vitest"; - -import * as subject from "../get-publish-arguments.js"; -import type { NormalizedOptions } from "../../normalize-options.js"; - -describe("getPublishArguments", () => { - it("should add explicit arguments", () => { - const result = subject.getPublishArguments("./cool-package", { - tag: { value: "next", isDefault: false }, - access: { value: "restricted", isDefault: false }, - dryRun: { value: true, isDefault: false }, - strategy: { value: "upgrade", isDefault: true }, - } as NormalizedOptions); - - expect(result).toEqual([ - "./cool-package", - "--tag", - "next", - "--access", - "restricted", - "--dry-run", - ]); - }); - - it("should omit default arguments", () => { - const result = subject.getPublishArguments("./cool-package", { - tag: { value: "next", isDefault: true }, - access: { value: "restricted", isDefault: true }, - dryRun: { value: false, isDefault: true }, - strategy: { value: "upgrade", isDefault: true }, - } as NormalizedOptions); - - expect(result).toEqual(["./cool-package"]); - }); - - it("should omit undefined string arguments and false boolean arguments", () => { - const result = subject.getPublishArguments("./cool-package", { - tag: { value: "next", isDefault: false }, - access: { value: undefined, isDefault: false }, - dryRun: { value: false, isDefault: false }, - strategy: { value: "upgrade", isDefault: true }, - } as NormalizedOptions); - - expect(result).toEqual(["./cool-package", "--tag", "next"]); - }); -}); diff --git a/src/npm/__tests__/npm.test.ts b/src/npm/__tests__/npm.test.ts deleted file mode 100644 index cdb28d3..0000000 --- a/src/npm/__tests__/npm.test.ts +++ /dev/null @@ -1,74 +0,0 @@ -import { vi, describe, it, beforeEach, afterEach, expect } from "vitest"; -import { imitateEsm, reset } from "testdouble-vitest"; -import * as td from "testdouble"; - -import type { Logger } from "../../options.js"; -import type { NormalizedOptions } from "../../normalize-options.js"; - -import * as subject from "../index.js"; -import { useNpmEnvironment, type NpmCliTask } from "../use-npm-environment.js"; -import { callNpmCli } from "../call-npm-cli.js"; -import { getPublishArguments } from "../get-publish-arguments.js"; - -vi.mock("../use-npm-environment", () => imitateEsm("../use-npm-environment")); -vi.mock("../call-npm-cli", () => imitateEsm("../call-npm-cli")); -vi.mock("../get-publish-arguments", () => - imitateEsm("../get-publish-arguments") -); - -describe("npm", () => { - const environment = { foo: "bar" }; - const logger = { debug: (message: string) => void message } as Logger; - const options = { token: "abc123", logger } as NormalizedOptions; - - beforeEach(() => { - td.when(useNpmEnvironment(options, td.matchers.isA(Function))).thenDo( - (_: unknown, task: NpmCliTask) => task(environment) - ); - }); - - afterEach(() => { - reset(); - }); - - it("should get existing versions", async () => { - td.when( - callNpmCli( - "view", - ["@example/cool-package", "dist-tags", "versions"], - { - logger, - environment, - ifError: { e404: { "dist-tags": {}, versions: [] } }, - } - ) - ).thenResolve({ - "dist-tags": { latest: "1.2.3" }, - versions: ["1.2.3", "4.5.6"], - }); - - const result = await subject.getVersions("@example/cool-package", options); - - expect(result).toEqual({ - "dist-tags": { latest: "1.2.3" }, - versions: ["1.2.3", "4.5.6"], - }); - }); - - it("should publish a package", async () => { - td.when(getPublishArguments("./package", options)).thenReturn([ - "--tag", - "next", - ]); - td.when( - callNpmCli("publish", ["--tag", "next"], { - environment, - logger, - }) - ).thenResolve({ id: "@example/cool-package@1.2.3" }); - - const result = await subject.publish("./package", options); - - expect(result).toEqual({ id: "@example/cool-package@1.2.3" }); - }); -}); diff --git a/src/npm/__tests__/use-npm-environment.test.ts b/src/npm/__tests__/use-npm-environment.test.ts index 686039d..bbf0ca4 100644 --- a/src/npm/__tests__/use-npm-environment.test.ts +++ b/src/npm/__tests__/use-npm-environment.test.ts @@ -4,6 +4,7 @@ import path from "node:path"; import { describe, beforeEach, afterEach, it, expect } from "vitest"; +import type { PackageManifest } from "../../read-manifest.js"; import type { NormalizedOptions } from "../../normalize-options.js"; import * as subject from "../use-npm-environment.js"; @@ -19,26 +20,33 @@ describe("useNpmEnvironment", () => { }); it("create an npmrc file ", async () => { - let result: subject.NpmCliEnvironment | undefined; + const inputManifest = { name: "fizzbuzz" } as PackageManifest; + const inputOptions = { + token: "abc123", + registry: new URL("http://example.com/cool-registry/"), + temporaryDirectory: directory, + } as NormalizedOptions; + let npmrcPath: string | undefined; let npmrcContents: string | undefined; - await subject.useNpmEnvironment( - { - token: "abc123", - registry: new URL("http://example.com/cool-registry/"), - temporaryDirectory: directory, - } as NormalizedOptions, - async (environment) => { - result = environment; - npmrcPath = result["npm_config_userconfig"]!; + const result = await subject.useNpmEnvironment( + inputManifest, + inputOptions, + async (manifest, options, environment) => { + npmrcPath = environment["npm_config_userconfig"]!; npmrcContents = await fs.readFile(npmrcPath, "utf8"); + return { manifest, options, environment }; } ); expect(result).toEqual({ - NODE_AUTH_TOKEN: "abc123", - npm_config_userconfig: npmrcPath, + manifest: inputManifest, + options: inputOptions, + environment: { + NODE_AUTH_TOKEN: "abc123", + npm_config_userconfig: npmrcPath, + }, }); expect(npmrcContents).toContain( "//example.com/:_authToken=${NODE_AUTH_TOKEN}" diff --git a/src/npm/call-npm-cli.ts b/src/npm/call-npm-cli.ts index 0d74583..365c748 100644 --- a/src/npm/call-npm-cli.ts +++ b/src/npm/call-npm-cli.ts @@ -5,20 +5,93 @@ import * as errors from "../errors.js"; import type { Logger } from "../options.js"; import type { NpmCliEnvironment } from "./use-npm-environment.js"; -export interface NpmCliOptions { - environment?: NpmCliEnvironment; - ifError?: Record; +export interface NpmCliOptions { + environment: NpmCliEnvironment; logger?: Logger | undefined; } +export interface NpmCallResult { + successData: SuccessData | undefined; + errorCode: string | undefined; + error: Error | undefined; +} + +type SuccessData = T extends typeof VIEW + ? NpmViewData + : T extends typeof PUBLISH + ? NpmPublishData + : unknown; + +export interface NpmViewData { + "dist-tags": Record; + versions: string[]; +} +export interface NpmPublishData { + id: string; + files: { path: string; size: number }[]; +} + +export type Command = typeof VIEW | typeof PUBLISH | string; +export const VIEW = "view"; +export const PUBLISH = "publish"; + +export const E404 = "E404"; +export const EPUBLISHCONFLICT = "EPUBLISHCONFLICT"; + const NPM = os.platform() === "win32" ? "npm.cmd" : "npm"; const JSON_MATCH_RE = /(\{[\s\S]*\})/mu; -const execNpm = ( +/** + * Call the NPM CLI in JSON mode. + * + * @param command The command of the NPM CLI to call + * @param cliArguments Any arguments to send to the command + * @param options Customize environment variables or add an error handler. + * @returns The parsed JSON, or stdout if unparsable. + */ +export async function callNpmCli( + command: CommandT, + cliArguments: string[], + options: NpmCliOptions +): Promise> { + const { stdout, stderr, exitCode } = await execNpm( + [command, "--ignore-scripts", "--json", ...cliArguments], + options.environment, + options.logger + ); + + let successData; + let errorCode; + let error; + + if (exitCode === 0) { + successData = parseJson>(stdout); + } else { + const errorPayload = parseJson<{ error?: { code?: string | null } }>( + stdout, + stderr + ); + + errorCode = errorPayload?.error?.code?.toUpperCase(); + error = new errors.NpmCallError(command, exitCode, stderr); + } + + return { successData, errorCode, error }; +} + +/** + * Execute the npm CLI. + * + * @param commandArguments Npm subcommand and arguments. + * @param environment Environment variables. + * @param logger Optional logger. + * @returns Stdout, stderr, and the exit code. + */ +async function execNpm( commandArguments: string[], - environment: Record = {}, + environment: Record, logger?: Logger -): Promise<{ stdout: string; stderr: string; exitCode: number }> => { +): Promise<{ stdout: string; stderr: string; exitCode: number }> { logger?.debug?.(`Running command: ${NPM} ${commandArguments.join(" ")}`); return new Promise((resolve) => { @@ -39,9 +112,18 @@ const execNpm = ( }); }); }); -}; +} -const parseJson = (...values: string[]): TParsed | undefined => { +/** + * Parse CLI outputs for JSON data. + * + * Certain versions of the npm CLI may intersperse JSON with human-readable + * output, which this function accounts for. + * + * @param values CLI outputs to check + * @returns Parsed JSON, if able to parse. + */ +function parseJson(...values: string[]): TParsed | undefined { for (const value of values) { const jsonValue = JSON_MATCH_RE.exec(value)?.[1]; @@ -55,44 +137,4 @@ const parseJson = (...values: string[]): TParsed | undefined => { } return undefined; -}; - -/** - * Call the NPM CLI in JSON mode. - * - * @param command The command of the NPM CLI to call - * @param cliArguments Any arguments to send to the command - * @param options Customize environment variables or add an error handler. - * @returns The parsed JSON, or stdout if unparsable. - */ -export async function callNpmCli( - command: string, - cliArguments: string[], - options: NpmCliOptions = {} -): Promise { - const { stdout, stderr, exitCode } = await execNpm( - [command, "--ignore-scripts", "--json", ...cliArguments], - options.environment, - options.logger - ); - - if (exitCode !== 0) { - const errorPayload = parseJson<{ error?: { code?: string | null } }>( - stdout, - stderr - ); - const errorCode = errorPayload?.error?.code?.toLowerCase(); - - if ( - typeof errorCode === "string" && - options.ifError && - errorCode in options.ifError - ) { - return options.ifError[errorCode] as TReturn; - } - - throw new errors.NpmCallError(command, exitCode, stderr); - } - - return parseJson(stdout) ?? (stdout as unknown as TReturn); } diff --git a/src/npm/index.ts b/src/npm/index.ts index 4d58656..623233b 100644 --- a/src/npm/index.ts +++ b/src/npm/index.ts @@ -1,64 +1,2 @@ -import type { NormalizedOptions } from "../normalize-options.js"; -import { useNpmEnvironment } from "./use-npm-environment.js"; -import { callNpmCli } from "./call-npm-cli.js"; -import { getPublishArguments } from "./get-publish-arguments.js"; - -export interface PublishedVersions { - "dist-tags": Record; - versions: string[]; -} - -export interface PublishFile { - path: string; - size: number; -} - -export interface PublishResult { - id: string; - files: PublishFile[]; -} - -/** - * Get a package's published versions. - * - * @param packageName The name of the package to get published versions for. - * @param options Configuration options. - * @returns All published versions and tags. - */ -export async function getVersions( - packageName: string, - options: NormalizedOptions -): Promise { - return useNpmEnvironment(options, (environment) => { - return callNpmCli( - "view", - [packageName, "dist-tags", "versions"], - { - logger: options.logger, - environment, - ifError: { e404: { "dist-tags": {}, versions: [] } }, - } - ); - }); -} - -/** - * Publish a package. - * - * @param packageSpec Package specification to pass to npm. - * @param options Configuration options. - * @returns Release metadata. - */ -export async function publish( - packageSpec: string, - options: NormalizedOptions -): Promise { - const publishArguments = getPublishArguments(packageSpec, options); - - return useNpmEnvironment(options, (environment) => { - return callNpmCli("publish", publishArguments, { - logger: options.logger, - environment, - }); - }); -} +export * from "./call-npm-cli.js"; +export * from "./use-npm-environment.js"; diff --git a/src/npm/use-npm-environment.ts b/src/npm/use-npm-environment.ts index bc8f1f5..5b696c4 100644 --- a/src/npm/use-npm-environment.ts +++ b/src/npm/use-npm-environment.ts @@ -2,11 +2,14 @@ import fs from "node:fs/promises"; import os from "node:os"; import path from "node:path"; +import type { PackageManifest } from "../read-manifest.js"; import type { NormalizedOptions } from "../normalize-options.js"; export type NpmCliEnvironment = Record; export type NpmCliTask = ( + manifest: PackageManifest, + options: NormalizedOptions, environment: NpmCliEnvironment ) => Promise; @@ -14,12 +17,14 @@ export type NpmCliTask = ( * Create a temporary .npmrc file with the given auth token, and call a task * with env vars set to use that .npmrc. * + * @param manifest Pacakge metadata. * @param options Configuration options. * @param task A function called with the configured environment. After the * function resolves, the temporary .npmrc file will be removed. * @returns The resolved value of `task` */ export async function useNpmEnvironment( + manifest: PackageManifest, options: NormalizedOptions, task: NpmCliTask ): Promise { @@ -28,6 +33,10 @@ export async function useNpmEnvironment( path.join(temporaryDirectory, "npm-publish-") ); const npmrc = path.join(npmrcDirectory, ".npmrc"); + const environment = { + NODE_AUTH_TOKEN: token, + npm_config_userconfig: npmrc, + }; const config = [ "; created by jsdevtools/npm-publish", @@ -41,10 +50,7 @@ export async function useNpmEnvironment( logger?.debug?.(`Temporary .npmrc created at ${npmrc}\n${config}`); try { - return await task({ - NODE_AUTH_TOKEN: token, - npm_config_userconfig: npmrc, - }); + return await task(manifest, options, environment); } finally { await fs.rm(npmrcDirectory, { force: true, recursive: true }); } diff --git a/src/read-manifest.ts b/src/read-manifest.ts index 7621f3d..7300bec 100644 --- a/src/read-manifest.ts +++ b/src/read-manifest.ts @@ -5,14 +5,9 @@ import { list as tarList, type ReadEntry } from "tar"; import * as errors from "./errors.js"; -/** The result of reading a package manifest */ -export interface ManifestReadResult { - packageSpec: string; - manifest: PackageManifest; -} - -/** A package manifest (package.json) */ +/** A package manifest (package.json) and associated details. */ export interface PackageManifest { + packageSpec: string; name: string; version: string; scope: string | undefined; @@ -86,7 +81,7 @@ const readTarballPackageJson = async (file: string): Promise => { */ export async function readManifest( packagePath: unknown -): Promise { +): Promise { let packageSpec: string | undefined; let manifestContents: string; @@ -138,6 +133,9 @@ export async function readManifest( return { packageSpec, - manifest: { name, version, publishConfig, scope: SCOPE_RE.exec(name)?.[1] }, + name, + version, + publishConfig, + scope: SCOPE_RE.exec(name)?.[1], }; } diff --git a/src/results.ts b/src/results.ts index 9537a43..be94aa0 100644 --- a/src/results.ts +++ b/src/results.ts @@ -1,5 +1,10 @@ import type { Access, Strategy } from "./options.js"; -import type { ReleaseType } from "./compare-versions.js"; +import type { ReleaseType as SemverReleaseType } from "semver"; + +/** Release type */ +export type ReleaseType = SemverReleaseType | typeof INITIAL | typeof DIFFERENT; +export const INITIAL = "initial"; +export const DIFFERENT = "different"; /** Results of the publish */ export interface Results {