@pipelab/plugin-filesystem 1.0.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/LICENSE +110 -0
- package/README.md +3 -0
- package/dist/index.cjs +28051 -0
- package/dist/index.d.cts +4 -0
- package/dist/index.d.cts.map +1 -0
- package/dist/index.d.mts +5 -0
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +28053 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +48 -0
- package/src/copy.spec.ts +100 -0
- package/src/copy.ts +154 -0
- package/src/index.ts +58 -0
- package/src/is-file.ts +36 -0
- package/src/list-files.ts +70 -0
- package/src/open.ts +67 -0
- package/src/remove.ts +58 -0
- package/src/run.ts +138 -0
- package/src/temporary-folder.ts +50 -0
- package/src/unzip.spec.ts +33 -0
- package/src/unzip.ts +58 -0
- package/src/zip-v2.ts +120 -0
- package/src/zip.ts +133 -0
- package/tests/e2e/filesystem.spec.ts +103 -0
- package/tests/e2e/vitest.config.mts +20 -0
- package/tsconfig.json +8 -0
- package/tsdown.config.ts +15 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["fs","exports","Stream","fs","util","buffer","util","util","Stream","util","bufferModule","EE","Buffer","Buffer","EE","Buffer","Buffer","Buffer","#hasMagic","#parent","#root","#options","#negs","#filledNegs","#parentIndex","#parts","#toString","#parseAST","#canAdoptType","#emptyExt","#canAdopt","#adopt","#canUsurpType","#flatten","#canAdoptWithSpace","#adoptWithSpace","#canUsurp","#usurp","#fillNegs","#parseGlob","#uflag","#partsToRegExp","#matchGlobstar","#matchOne","#matchGlobStarBodySections","#constructing","#starts","#ttls","#sizes","#keyMap","#keyList","#valList","#next","#prev","#head","#tail","#free","#isBackgroundFetch","#backgroundFetch","#moveToTail","#indexes","#rindexes","#isStale","#max","#maxSize","#calculatedSize","#size","#fetchMethod","#memoMethod","#dispose","#disposeAfter","#hasFetchMethod","#disposed","#hasDispose","#hasDisposeAfter","#initializeSizeTracking","#initializeTTLTracking","#setItemTTL","#delete","#updateItemAge","#statusTTL","#removeItemSize","#requireSize","#addItemSize","#evict","#isValidIndex","#connect","#clear","node_url_1","#dev","#mode","#nlink","#uid","#gid","#rdev","#blksize","#ino","#size","#blocks","#atimeMs","#mtimeMs","#ctimeMs","#birthtimeMs","#atime","#mtime","#ctime","#birthtime","#matchName","#type","#children","#fullpath","#relative","#relativePosix","#fs","#depth","#resolveParts","#fullpathPosix","#linkTarget","#realpath","#readlinkFail","#markENOENT","#markChildrenENOENT","#markENOTDIR","#readdirMaybePromoteChild","#readdirAddNewChild","#readdirPromoteChild","#applyStat","#lstatFail","#readdirCBInFlight","#onReaddirCB","#readdirFail","#readdirAddChild","#readdirSuccess","#callOnReaddirCB","#asyncReaddirInFlight","#markENOREALPATH","#resolveCache","#resolvePosixCache","#patternList","#globList","#index","#platform","#globString","#rest","#isAbsolute","#isUNC","#isDrive","#followGlobstar","#sep","#ignore","#onResume","#ignored","#childrenIgnored","path","path","inherits","module","inherits","inherits","module","inherits","inherits","module","ID","ID","ID","ID","ID","ID"],"sources":["../../../node_modules/readdir-glob/node_modules/minimatch/lib/path.js","../../../node_modules/balanced-match/index.js","../../../node_modules/brace-expansion/index.js","../../../node_modules/readdir-glob/node_modules/minimatch/minimatch.js","../../../node_modules/readdir-glob/index.js","../../../node_modules/archiver/node_modules/async/dist/async.js","../../../node_modules/graceful-fs/polyfills.js","../../../node_modules/graceful-fs/legacy-streams.js","../../../node_modules/graceful-fs/clone.js","../../../node_modules/graceful-fs/graceful-fs.js","../../../node_modules/archiver-utils/node_modules/is-stream/index.js","../../../node_modules/process-nextick-args/index.js","../../../node_modules/isarray/index.js","../../../node_modules/lazystream/node_modules/readable-stream/lib/internal/streams/stream.js","../../../node_modules/lazystream/node_modules/safe-buffer/index.js","../../../node_modules/core-util-is/lib/util.js","../../../node_modules/inherits/inherits_browser.js","../../../node_modules/inherits/inherits.js","../../../node_modules/lazystream/node_modules/readable-stream/lib/internal/streams/BufferList.js","../../../node_modules/lazystream/node_modules/readable-stream/lib/internal/streams/destroy.js","../../../node_modules/util-deprecate/node.js","../../../node_modules/lazystream/node_modules/readable-stream/lib/_stream_writable.js","../../../node_modules/lazystream/node_modules/readable-stream/lib/_stream_duplex.js","../../../node_modules/lazystream/node_modules/string_decoder/lib/string_decoder.js","../../../node_modules/lazystream/node_modules/readable-stream/lib/_stream_readable.js","../../../node_modules/lazystream/node_modules/readable-stream/lib/_stream_transform.js","../../../node_modules/lazystream/node_modules/readable-stream/lib/_stream_passthrough.js","../../../node_modules/lazystream/node_modules/readable-stream/readable.js","../../../node_modules/lazystream/node_modules/readable-stream/passthrough.js","../../../node_modules/lazystream/lib/lazystream.js","../../../node_modules/normalize-path/index.js","../../../node_modules/lodash/identity.js","../../../node_modules/lodash/_apply.js","../../../node_modules/lodash/_overRest.js","../../../node_modules/lodash/constant.js","../../../node_modules/lodash/_freeGlobal.js","../../../node_modules/lodash/_root.js","../../../node_modules/lodash/_Symbol.js","../../../node_modules/lodash/_getRawTag.js","../../../node_modules/lodash/_objectToString.js","../../../node_modules/lodash/_baseGetTag.js","../../../node_modules/lodash/isObject.js","../../../node_modules/lodash/isFunction.js","../../../node_modules/lodash/_coreJsData.js","../../../node_modules/lodash/_isMasked.js","../../../node_modules/lodash/_toSource.js","../../../node_modules/lodash/_baseIsNative.js","../../../node_modules/lodash/_getValue.js","../../../node_modules/lodash/_getNative.js","../../../node_modules/lodash/_defineProperty.js","../../../node_modules/lodash/_baseSetToString.js","../../../node_modules/lodash/_shortOut.js","../../../node_modules/lodash/_setToString.js","../../../node_modules/lodash/_baseRest.js","../../../node_modules/lodash/eq.js","../../../node_modules/lodash/isLength.js","../../../node_modules/lodash/isArrayLike.js","../../../node_modules/lodash/_isIndex.js","../../../node_modules/lodash/_isIterateeCall.js","../../../node_modules/lodash/_baseTimes.js","../../../node_modules/lodash/isObjectLike.js","../../../node_modules/lodash/_baseIsArguments.js","../../../node_modules/lodash/isArguments.js","../../../node_modules/lodash/isArray.js","../../../node_modules/lodash/stubFalse.js","../../../node_modules/lodash/isBuffer.js","../../../node_modules/lodash/_baseIsTypedArray.js","../../../node_modules/lodash/_baseUnary.js","../../../node_modules/lodash/_nodeUtil.js","../../../node_modules/lodash/isTypedArray.js","../../../node_modules/lodash/_arrayLikeKeys.js","../../../node_modules/lodash/_isPrototype.js","../../../node_modules/lodash/_nativeKeysIn.js","../../../node_modules/lodash/_baseKeysIn.js","../../../node_modules/lodash/keysIn.js","../../../node_modules/lodash/defaults.js","../../../node_modules/readable-stream/lib/ours/primordials.js","../../../node_modules/readable-stream/lib/ours/util/inspect.js","../../../node_modules/readable-stream/lib/ours/errors.js","../../../node_modules/event-target-shim/dist/event-target-shim.js","../../../node_modules/abort-controller/dist/abort-controller.js","../../../node_modules/readable-stream/lib/ours/util.js","../../../node_modules/readable-stream/lib/internal/validators.js","../../../node_modules/process/index.js","../../../node_modules/readable-stream/lib/internal/streams/utils.js","../../../node_modules/readable-stream/lib/internal/streams/end-of-stream.js","../../../node_modules/readable-stream/lib/internal/streams/destroy.js","../../../node_modules/readable-stream/lib/internal/streams/legacy.js","../../../node_modules/readable-stream/lib/internal/streams/add-abort-signal.js","../../../node_modules/readable-stream/lib/internal/streams/buffer_list.js","../../../node_modules/readable-stream/lib/internal/streams/state.js","../../../node_modules/safe-buffer/index.js","../../../node_modules/string_decoder/lib/string_decoder.js","../../../node_modules/readable-stream/lib/internal/streams/from.js","../../../node_modules/readable-stream/lib/internal/streams/readable.js","../../../node_modules/readable-stream/lib/internal/streams/writable.js","../../../node_modules/readable-stream/lib/internal/streams/duplexify.js","../../../node_modules/readable-stream/lib/internal/streams/duplex.js","../../../node_modules/readable-stream/lib/internal/streams/transform.js","../../../node_modules/readable-stream/lib/internal/streams/passthrough.js","../../../node_modules/readable-stream/lib/internal/streams/pipeline.js","../../../node_modules/readable-stream/lib/internal/streams/compose.js","../../../node_modules/readable-stream/lib/internal/streams/operators.js","../../../node_modules/readable-stream/lib/stream/promises.js","../../../node_modules/readable-stream/lib/stream.js","../../../node_modules/readable-stream/lib/ours/index.js","../../../node_modules/lodash/_arrayPush.js","../../../node_modules/lodash/_isFlattenable.js","../../../node_modules/lodash/_baseFlatten.js","../../../node_modules/lodash/flatten.js","../../../node_modules/lodash/_nativeCreate.js","../../../node_modules/lodash/_hashClear.js","../../../node_modules/lodash/_hashDelete.js","../../../node_modules/lodash/_hashGet.js","../../../node_modules/lodash/_hashHas.js","../../../node_modules/lodash/_hashSet.js","../../../node_modules/lodash/_Hash.js","../../../node_modules/lodash/_listCacheClear.js","../../../node_modules/lodash/_assocIndexOf.js","../../../node_modules/lodash/_listCacheDelete.js","../../../node_modules/lodash/_listCacheGet.js","../../../node_modules/lodash/_listCacheHas.js","../../../node_modules/lodash/_listCacheSet.js","../../../node_modules/lodash/_ListCache.js","../../../node_modules/lodash/_Map.js","../../../node_modules/lodash/_mapCacheClear.js","../../../node_modules/lodash/_isKeyable.js","../../../node_modules/lodash/_getMapData.js","../../../node_modules/lodash/_mapCacheDelete.js","../../../node_modules/lodash/_mapCacheGet.js","../../../node_modules/lodash/_mapCacheHas.js","../../../node_modules/lodash/_mapCacheSet.js","../../../node_modules/lodash/_MapCache.js","../../../node_modules/lodash/_setCacheAdd.js","../../../node_modules/lodash/_setCacheHas.js","../../../node_modules/lodash/_SetCache.js","../../../node_modules/lodash/_baseFindIndex.js","../../../node_modules/lodash/_baseIsNaN.js","../../../node_modules/lodash/_strictIndexOf.js","../../../node_modules/lodash/_baseIndexOf.js","../../../node_modules/lodash/_arrayIncludes.js","../../../node_modules/lodash/_arrayIncludesWith.js","../../../node_modules/lodash/_arrayMap.js","../../../node_modules/lodash/_cacheHas.js","../../../node_modules/lodash/_baseDifference.js","../../../node_modules/lodash/isArrayLikeObject.js","../../../node_modules/lodash/difference.js","../../../node_modules/lodash/_Set.js","../../../node_modules/lodash/noop.js","../../../node_modules/lodash/_setToArray.js","../../../node_modules/lodash/_createSet.js","../../../node_modules/lodash/_baseUniq.js","../../../node_modules/lodash/union.js","../../../node_modules/lodash/_overArg.js","../../../node_modules/lodash/_getPrototype.js","../../../node_modules/lodash/isPlainObject.js","../../../node_modules/minimatch/dist/commonjs/assert-valid-pattern.js","../../../node_modules/minimatch/dist/commonjs/brace-expressions.js","../../../node_modules/minimatch/dist/commonjs/unescape.js","../../../node_modules/minimatch/dist/commonjs/ast.js","../../../node_modules/minimatch/dist/commonjs/escape.js","../../../node_modules/minimatch/dist/commonjs/index.js","../../../node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/index.js","../../../node_modules/minipass/dist/commonjs/index.js","../../../node_modules/path-scurry/dist/commonjs/index.js","../../../node_modules/archiver-utils/node_modules/glob/dist/commonjs/pattern.js","../../../node_modules/archiver-utils/node_modules/glob/dist/commonjs/ignore.js","../../../node_modules/archiver-utils/node_modules/glob/dist/commonjs/processor.js","../../../node_modules/archiver-utils/node_modules/glob/dist/commonjs/walker.js","../../../node_modules/archiver-utils/node_modules/glob/dist/commonjs/glob.js","../../../node_modules/archiver-utils/node_modules/glob/dist/commonjs/has-magic.js","../../../node_modules/archiver-utils/node_modules/glob/dist/commonjs/index.js","../../../node_modules/archiver-utils/file.js","../../../node_modules/archiver-utils/index.js","../../../node_modules/archiver/lib/error.js","../../../node_modules/archiver/lib/core.js","../../../node_modules/compress-commons/lib/archivers/archive-entry.js","../../../node_modules/compress-commons/lib/archivers/zip/util.js","../../../node_modules/compress-commons/lib/archivers/zip/general-purpose-bit.js","../../../node_modules/compress-commons/lib/archivers/zip/unix-stat.js","../../../node_modules/compress-commons/lib/archivers/zip/constants.js","../../../node_modules/compress-commons/lib/archivers/zip/zip-archive-entry.js","../../../node_modules/compress-commons/node_modules/is-stream/index.js","../../../node_modules/compress-commons/lib/util/index.js","../../../node_modules/compress-commons/lib/archivers/archive-output-stream.js","../../../node_modules/crc-32/crc32.js","../../../node_modules/crc32-stream/lib/crc32-stream.js","../../../node_modules/crc32-stream/lib/deflate-crc32-stream.js","../../../node_modules/crc32-stream/lib/index.js","../../../node_modules/compress-commons/lib/archivers/zip/zip-archive-output-stream.js","../../../node_modules/compress-commons/lib/compress-commons.js","../../../node_modules/zip-stream/index.js","../../../node_modules/archiver/lib/plugins/zip.js","../../../node_modules/events-universal/default.js","../../../node_modules/fast-fifo/fixed-size.js","../../../node_modules/fast-fifo/index.js","../../../node_modules/b4a/index.js","../../../node_modules/text-decoder/lib/pass-through-decoder.js","../../../node_modules/text-decoder/lib/utf8-decoder.js","../../../node_modules/text-decoder/index.js","../../../node_modules/streamx/index.js","../../../node_modules/tar-stream/headers.js","../../../node_modules/tar-stream/extract.js","../../../node_modules/tar-stream/constants.js","../../../node_modules/tar-stream/pack.js","../../../node_modules/tar-stream/index.js","../../../node_modules/archiver/lib/plugins/tar.js","../../../node_modules/archiver/node_modules/buffer-crc32/dist/index.cjs","../../../node_modules/archiver/lib/plugins/json.js","../../../node_modules/archiver/index.js","../src/zip.ts","../src/zip-v2.ts","../src/unzip.ts","../src/copy.ts","../src/remove.ts","../src/run.ts","../src/open.ts","../src/index.ts"],"sourcesContent":["const isWindows = typeof process === 'object' &&\n process &&\n process.platform === 'win32'\nmodule.exports = isWindows ? { sep: '\\\\' } : { sep: '/' }\n","'use strict';\nmodule.exports = balanced;\nfunction balanced(a, b, str) {\n if (a instanceof RegExp) a = maybeMatch(a, str);\n if (b instanceof RegExp) b = maybeMatch(b, str);\n\n var r = range(a, b, str);\n\n return r && {\n start: r[0],\n end: r[1],\n pre: str.slice(0, r[0]),\n body: str.slice(r[0] + a.length, r[1]),\n post: str.slice(r[1] + b.length)\n };\n}\n\nfunction maybeMatch(reg, str) {\n var m = str.match(reg);\n return m ? m[0] : null;\n}\n\nbalanced.range = range;\nfunction range(a, b, str) {\n var begs, beg, left, right, result;\n var ai = str.indexOf(a);\n var bi = str.indexOf(b, ai + 1);\n var i = ai;\n\n if (ai >= 0 && bi > 0) {\n if(a===b) {\n return [ai, bi];\n }\n begs = [];\n left = str.length;\n\n while (i >= 0 && !result) {\n if (i == ai) {\n begs.push(i);\n ai = str.indexOf(a, i + 1);\n } else if (begs.length == 1) {\n result = [ begs.pop(), bi ];\n } else {\n beg = begs.pop();\n if (beg < left) {\n left = beg;\n right = bi;\n }\n\n bi = str.indexOf(b, i + 1);\n }\n\n i = ai < bi && ai >= 0 ? ai : bi;\n }\n\n if (begs.length) {\n result = [ left, right ];\n }\n }\n\n return result;\n}\n","var balanced = require('balanced-match');\n\nmodule.exports = expandTop;\n\nvar escSlash = '\\0SLASH'+Math.random()+'\\0';\nvar escOpen = '\\0OPEN'+Math.random()+'\\0';\nvar escClose = '\\0CLOSE'+Math.random()+'\\0';\nvar escComma = '\\0COMMA'+Math.random()+'\\0';\nvar escPeriod = '\\0PERIOD'+Math.random()+'\\0';\n\nfunction numeric(str) {\n return parseInt(str, 10) == str\n ? parseInt(str, 10)\n : str.charCodeAt(0);\n}\n\nfunction escapeBraces(str) {\n return str.split('\\\\\\\\').join(escSlash)\n .split('\\\\{').join(escOpen)\n .split('\\\\}').join(escClose)\n .split('\\\\,').join(escComma)\n .split('\\\\.').join(escPeriod);\n}\n\nfunction unescapeBraces(str) {\n return str.split(escSlash).join('\\\\')\n .split(escOpen).join('{')\n .split(escClose).join('}')\n .split(escComma).join(',')\n .split(escPeriod).join('.');\n}\n\n\n// Basically just str.split(\",\"), but handling cases\n// where we have nested braced sections, which should be\n// treated as individual members, like {a,{b,c},d}\nfunction parseCommaParts(str) {\n if (!str)\n return [''];\n\n var parts = [];\n var m = balanced('{', '}', str);\n\n if (!m)\n return str.split(',');\n\n var pre = m.pre;\n var body = m.body;\n var post = m.post;\n var p = pre.split(',');\n\n p[p.length-1] += '{' + body + '}';\n var postParts = parseCommaParts(post);\n if (post.length) {\n p[p.length-1] += postParts.shift();\n p.push.apply(p, postParts);\n }\n\n parts.push.apply(parts, p);\n\n return parts;\n}\n\nfunction expandTop(str, options) {\n if (!str)\n return [];\n\n options = options || {};\n var max = options.max == null ? Infinity : options.max;\n\n // I don't know why Bash 4.3 does this, but it does.\n // Anything starting with {} will have the first two bytes preserved\n // but *only* at the top level, so {},a}b will not expand to anything,\n // but a{},b}c will be expanded to [a}c,abc].\n // One could argue that this is a bug in Bash, but since the goal of\n // this module is to match Bash's rules, we escape a leading {}\n if (str.substr(0, 2) === '{}') {\n str = '\\\\{\\\\}' + str.substr(2);\n }\n\n return expand(escapeBraces(str), max, true).map(unescapeBraces);\n}\n\nfunction embrace(str) {\n return '{' + str + '}';\n}\nfunction isPadded(el) {\n return /^-?0\\d/.test(el);\n}\n\nfunction lte(i, y) {\n return i <= y;\n}\nfunction gte(i, y) {\n return i >= y;\n}\n\nfunction expand(str, max, isTop) {\n var expansions = [];\n\n var m = balanced('{', '}', str);\n if (!m) return [str];\n\n // no need to expand pre, since it is guaranteed to be free of brace-sets\n var pre = m.pre;\n var post = m.post.length\n ? expand(m.post, max, false)\n : [''];\n\n if (/\\$$/.test(m.pre)) { \n for (var k = 0; k < post.length && k < max; k++) {\n var expansion = pre+ '{' + m.body + '}' + post[k];\n expansions.push(expansion);\n }\n } else {\n var isNumericSequence = /^-?\\d+\\.\\.-?\\d+(?:\\.\\.-?\\d+)?$/.test(m.body);\n var isAlphaSequence = /^[a-zA-Z]\\.\\.[a-zA-Z](?:\\.\\.-?\\d+)?$/.test(m.body);\n var isSequence = isNumericSequence || isAlphaSequence;\n var isOptions = m.body.indexOf(',') >= 0;\n if (!isSequence && !isOptions) {\n // {a},b}\n if (m.post.match(/,(?!,).*\\}/)) {\n str = m.pre + '{' + m.body + escClose + m.post;\n return expand(str, max, true);\n }\n return [str];\n }\n\n var n;\n if (isSequence) {\n n = m.body.split(/\\.\\./);\n } else {\n n = parseCommaParts(m.body);\n if (n.length === 1) {\n // x{{a,b}}y ==> x{a}y x{b}y\n n = expand(n[0], max, false).map(embrace);\n if (n.length === 1) {\n return post.map(function(p) {\n return m.pre + n[0] + p;\n });\n }\n }\n }\n\n // at this point, n is the parts, and we know it's not a comma set\n // with a single entry.\n var N;\n\n if (isSequence) {\n var x = numeric(n[0]);\n var y = numeric(n[1]);\n var width = Math.max(n[0].length, n[1].length)\n var incr = n.length == 3\n ? Math.max(Math.abs(numeric(n[2])), 1)\n : 1;\n var test = lte;\n var reverse = y < x;\n if (reverse) {\n incr *= -1;\n test = gte;\n }\n var pad = n.some(isPadded);\n\n N = [];\n\n for (var i = x; test(i, y); i += incr) {\n var c;\n if (isAlphaSequence) {\n c = String.fromCharCode(i);\n if (c === '\\\\')\n c = '';\n } else {\n c = String(i);\n if (pad) {\n var need = width - c.length;\n if (need > 0) {\n var z = new Array(need + 1).join('0');\n if (i < 0)\n c = '-' + z + c.slice(1);\n else\n c = z + c;\n }\n }\n }\n N.push(c);\n }\n } else {\n N = [];\n\n for (var j = 0; j < n.length; j++) {\n N.push.apply(N, expand(n[j], max, false));\n }\n }\n\n for (var j = 0; j < N.length; j++) {\n for (var k = 0; k < post.length && expansions.length < max; k++) {\n var expansion = pre + N[j] + post[k];\n if (!isTop || isSequence || expansion)\n expansions.push(expansion);\n }\n }\n }\n\n return expansions;\n}\n","const minimatch = module.exports = (p, pattern, options = {}) => {\n assertValidPattern(pattern)\n\n // shortcut: comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n return false\n }\n\n return new Minimatch(pattern, options).match(p)\n}\n\nmodule.exports = minimatch\n\nconst path = require('./lib/path.js')\nminimatch.sep = path.sep\n\nconst GLOBSTAR = Symbol('globstar **')\nminimatch.GLOBSTAR = GLOBSTAR\nconst expand = require('brace-expansion')\n\nconst plTypes = {\n '!': { open: '(?:(?!(?:', close: '))[^/]*?)'},\n '?': { open: '(?:', close: ')?' },\n '+': { open: '(?:', close: ')+' },\n '*': { open: '(?:', close: ')*' },\n '@': { open: '(?:', close: ')' }\n}\n\n// any single thing other than /\n// don't need to escape / when using new RegExp()\nconst qmark = '[^/]'\n\n// * => any number of characters\nconst star = qmark + '*?'\n\n// ** when dots are allowed. Anything goes, except .. and .\n// not (^ or / followed by one or two dots followed by $ or /),\n// followed by anything, any number of times.\nconst twoStarDot = '(?:(?!(?:\\\\\\/|^)(?:\\\\.{1,2})($|\\\\\\/)).)*?'\n\n// not a ^ or / followed by a dot,\n// followed by anything, any number of times.\nconst twoStarNoDot = '(?:(?!(?:\\\\\\/|^)\\\\.).)*?'\n\n// \"abc\" -> { a:true, b:true, c:true }\nconst charSet = s => s.split('').reduce((set, c) => {\n set[c] = true\n return set\n}, {})\n\n// characters that need to be escaped in RegExp.\nconst reSpecials = charSet('().*{}+?[]^$\\\\!')\n\n// characters that indicate we have to add the pattern start\nconst addPatternStartSet = charSet('[.(')\n\n// normalizes slashes.\nconst slashSplit = /\\/+/\n\nminimatch.filter = (pattern, options = {}) =>\n (p, i, list) => minimatch(p, pattern, options)\n\nconst ext = (a, b = {}) => {\n const t = {}\n Object.keys(a).forEach(k => t[k] = a[k])\n Object.keys(b).forEach(k => t[k] = b[k])\n return t\n}\n\nminimatch.defaults = def => {\n if (!def || typeof def !== 'object' || !Object.keys(def).length) {\n return minimatch\n }\n\n const orig = minimatch\n\n const m = (p, pattern, options) => orig(p, pattern, ext(def, options))\n m.Minimatch = class Minimatch extends orig.Minimatch {\n constructor (pattern, options) {\n super(pattern, ext(def, options))\n }\n }\n m.Minimatch.defaults = options => orig.defaults(ext(def, options)).Minimatch\n m.filter = (pattern, options) => orig.filter(pattern, ext(def, options))\n m.defaults = options => orig.defaults(ext(def, options))\n m.makeRe = (pattern, options) => orig.makeRe(pattern, ext(def, options))\n m.braceExpand = (pattern, options) => orig.braceExpand(pattern, ext(def, options))\n m.match = (list, pattern, options) => orig.match(list, pattern, ext(def, options))\n\n return m\n}\n\n\n\n\n\n// Brace expansion:\n// a{b,c}d -> abd acd\n// a{b,}c -> abc ac\n// a{0..3}d -> a0d a1d a2d a3d\n// a{b,c{d,e}f}g -> abg acdfg acefg\n// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg\n//\n// Invalid sets are not expanded.\n// a{2..}b -> a{2..}b\n// a{b}c -> a{b}c\nminimatch.braceExpand = (pattern, options) => braceExpand(pattern, options)\n\nconst braceExpand = (pattern, options = {}) => {\n assertValidPattern(pattern)\n\n // Thanks to Yeting Li <https://github.com/yetingli> for\n // improving this regexp to avoid a ReDOS vulnerability.\n if (options.nobrace || !/\\{(?:(?!\\{).)*\\}/.test(pattern)) {\n // shortcut. no need to expand.\n return [pattern]\n }\n\n return expand(pattern)\n}\n\nconst MAX_PATTERN_LENGTH = 1024 * 64\nconst assertValidPattern = pattern => {\n if (typeof pattern !== 'string') {\n throw new TypeError('invalid pattern')\n }\n\n if (pattern.length > MAX_PATTERN_LENGTH) {\n throw new TypeError('pattern is too long')\n }\n}\n\n// parse a component of the expanded set.\n// At this point, no pattern may contain \"/\" in it\n// so we're going to return a 2d array, where each entry is the full\n// pattern, split on '/', and then turned into a regular expression.\n// A regexp is made at the end which joins each array with an\n// escaped /, and another full one which joins each regexp with |.\n//\n// Following the lead of Bash 4.1, note that \"**\" only has special meaning\n// when it is the *only* thing in a path portion. Otherwise, any series\n// of * is equivalent to a single *. Globstar behavior is enabled by\n// default, and can be disabled by setting options.noglobstar.\nconst SUBPARSE = Symbol('subparse')\n\nminimatch.makeRe = (pattern, options) =>\n new Minimatch(pattern, options || {}).makeRe()\n\nminimatch.match = (list, pattern, options = {}) => {\n const mm = new Minimatch(pattern, options)\n list = list.filter(f => mm.match(f))\n if (mm.options.nonull && !list.length) {\n list.push(pattern)\n }\n return list\n}\n\n// replace stuff like \\* with *\nconst globUnescape = s => s.replace(/\\\\(.)/g, '$1')\nconst charUnescape = s => s.replace(/\\\\([^-\\]])/g, '$1')\nconst regExpEscape = s => s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\nconst braExpEscape = s => s.replace(/[[\\]\\\\]/g, '\\\\$&')\n\nclass Minimatch {\n constructor (pattern, options) {\n assertValidPattern(pattern)\n\n if (!options) options = {}\n\n this.options = options\n this.maxGlobstarRecursion = options.maxGlobstarRecursion !== undefined\n ? options.maxGlobstarRecursion : 200\n this.set = []\n this.pattern = pattern\n this.windowsPathsNoEscape = !!options.windowsPathsNoEscape ||\n options.allowWindowsEscape === false\n if (this.windowsPathsNoEscape) {\n this.pattern = this.pattern.replace(/\\\\/g, '/')\n }\n this.regexp = null\n this.negate = false\n this.comment = false\n this.empty = false\n this.partial = !!options.partial\n\n // make the set of regexps etc.\n this.make()\n }\n\n debug () {}\n\n make () {\n const pattern = this.pattern\n const options = this.options\n\n // empty patterns and comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n this.comment = true\n return\n }\n if (!pattern) {\n this.empty = true\n return\n }\n\n // step 1: figure out negation, etc.\n this.parseNegate()\n\n // step 2: expand braces\n let set = this.globSet = this.braceExpand()\n\n if (options.debug) this.debug = (...args) => console.error(...args)\n\n this.debug(this.pattern, set)\n\n // step 3: now we have a set, so turn each one into a series of path-portion\n // matching patterns.\n // These will be regexps, except in the case of \"**\", which is\n // set to the GLOBSTAR object for globstar behavior,\n // and will not contain any / characters\n set = this.globParts = set.map(s => s.split(slashSplit))\n\n this.debug(this.pattern, set)\n\n // glob --> regexps\n set = set.map((s, si, set) => s.map(this.parse, this))\n\n this.debug(this.pattern, set)\n\n // filter out everything that didn't compile properly.\n set = set.filter(s => s.indexOf(false) === -1)\n\n this.debug(this.pattern, set)\n\n this.set = set\n }\n\n parseNegate () {\n if (this.options.nonegate) return\n\n const pattern = this.pattern\n let negate = false\n let negateOffset = 0\n\n for (let i = 0; i < pattern.length && pattern.charAt(i) === '!'; i++) {\n negate = !negate\n negateOffset++\n }\n\n if (negateOffset) this.pattern = pattern.slice(negateOffset)\n this.negate = negate\n }\n\n // set partial to true to test if, for example,\n // \"/a/b\" matches the start of \"/*/b/*/d\"\n // Partial means, if you run out of file before you run\n // out of pattern, then that's fine, as long as all\n // the parts match.\n matchOne (file, pattern, partial) {\n if (pattern.indexOf(GLOBSTAR) !== -1) {\n return this._matchGlobstar(file, pattern, partial, 0, 0)\n }\n return this._matchOne(file, pattern, partial, 0, 0)\n }\n\n _matchGlobstar (file, pattern, partial, fileIndex, patternIndex) {\n // find first globstar from patternIndex\n let firstgs = -1\n for (let i = patternIndex; i < pattern.length; i++) {\n if (pattern[i] === GLOBSTAR) { firstgs = i; break }\n }\n\n // find last globstar\n let lastgs = -1\n for (let i = pattern.length - 1; i >= 0; i--) {\n if (pattern[i] === GLOBSTAR) { lastgs = i; break }\n }\n\n const head = pattern.slice(patternIndex, firstgs)\n const body = partial ? pattern.slice(firstgs + 1) : pattern.slice(firstgs + 1, lastgs)\n const tail = partial ? [] : pattern.slice(lastgs + 1)\n\n // check the head\n if (head.length) {\n const fileHead = file.slice(fileIndex, fileIndex + head.length)\n if (!this._matchOne(fileHead, head, partial, 0, 0)) {\n return false\n }\n fileIndex += head.length\n }\n\n // check the tail\n let fileTailMatch = 0\n if (tail.length) {\n if (tail.length + fileIndex > file.length) return false\n\n const tailStart = file.length - tail.length\n if (this._matchOne(file, tail, partial, tailStart, 0)) {\n fileTailMatch = tail.length\n } else {\n // affordance for stuff like a/**/* matching a/b/\n if (file[file.length - 1] !== '' ||\n fileIndex + tail.length === file.length) {\n return false\n }\n if (!this._matchOne(file, tail, partial, tailStart - 1, 0)) {\n return false\n }\n fileTailMatch = tail.length + 1\n }\n }\n\n // if body is empty (single ** between head and tail)\n if (!body.length) {\n let sawSome = !!fileTailMatch\n for (let i = fileIndex; i < file.length - fileTailMatch; i++) {\n const f = String(file[i])\n sawSome = true\n if (f === '.' || f === '..' ||\n (!this.options.dot && f.charAt(0) === '.')) {\n return false\n }\n }\n return partial || sawSome\n }\n\n // split body into segments at each GLOBSTAR\n const bodySegments = [[[], 0]]\n let currentBody = bodySegments[0]\n let nonGsParts = 0\n const nonGsPartsSums = [0]\n for (const b of body) {\n if (b === GLOBSTAR) {\n nonGsPartsSums.push(nonGsParts)\n currentBody = [[], 0]\n bodySegments.push(currentBody)\n } else {\n currentBody[0].push(b)\n nonGsParts++\n }\n }\n\n let idx = bodySegments.length - 1\n const fileLength = file.length - fileTailMatch\n for (const b of bodySegments) {\n b[1] = fileLength - (nonGsPartsSums[idx--] + b[0].length)\n }\n\n return !!this._matchGlobStarBodySections(\n file, bodySegments, fileIndex, 0, partial, 0, !!fileTailMatch\n )\n }\n\n // return false for \"nope, not matching\"\n // return null for \"not matching, cannot keep trying\"\n _matchGlobStarBodySections (\n file, bodySegments, fileIndex, bodyIndex, partial, globStarDepth, sawTail\n ) {\n const bs = bodySegments[bodyIndex]\n if (!bs) {\n // just make sure there are no bad dots\n for (let i = fileIndex; i < file.length; i++) {\n sawTail = true\n const f = file[i]\n if (f === '.' || f === '..' ||\n (!this.options.dot && f.charAt(0) === '.')) {\n return false\n }\n }\n return sawTail\n }\n\n const [body, after] = bs\n while (fileIndex <= after) {\n const m = this._matchOne(\n file.slice(0, fileIndex + body.length),\n body,\n partial,\n fileIndex,\n 0\n )\n // if limit exceeded, no match. intentional false negative,\n // acceptable break in correctness for security.\n if (m && globStarDepth < this.maxGlobstarRecursion) {\n const sub = this._matchGlobStarBodySections(\n file, bodySegments,\n fileIndex + body.length, bodyIndex + 1,\n partial, globStarDepth + 1, sawTail\n )\n if (sub !== false) {\n return sub\n }\n }\n const f = file[fileIndex]\n if (f === '.' || f === '..' ||\n (!this.options.dot && f.charAt(0) === '.')) {\n return false\n }\n fileIndex++\n }\n return partial || null\n }\n\n _matchOne (file, pattern, partial, fileIndex, patternIndex) {\n let fi, pi, fl, pl\n for (\n fi = fileIndex, pi = patternIndex, fl = file.length, pl = pattern.length\n ; (fi < fl) && (pi < pl)\n ; fi++, pi++\n ) {\n this.debug('matchOne loop')\n const p = pattern[pi]\n const f = file[fi]\n\n this.debug(pattern, p, f)\n\n // should be impossible.\n // some invalid regexp stuff in the set.\n /* istanbul ignore if */\n if (p === false || p === GLOBSTAR) return false\n\n // something other than **\n // non-magic patterns just have to match exactly\n // patterns with magic have been turned into regexps.\n let hit\n if (typeof p === 'string') {\n hit = f === p\n this.debug('string match', p, f, hit)\n } else {\n hit = f.match(p)\n this.debug('pattern match', p, f, hit)\n }\n\n if (!hit) return false\n }\n\n // now either we fell off the end of the pattern, or we're done.\n if (fi === fl && pi === pl) {\n // ran out of pattern and filename at the same time.\n // an exact hit!\n return true\n } else if (fi === fl) {\n // ran out of file, but still had pattern left.\n // this is ok if we're doing the match as part of\n // a glob fs traversal.\n return partial\n } else /* istanbul ignore else */ if (pi === pl) {\n // ran out of pattern, still have file left.\n // this is only acceptable if we're on the very last\n // empty segment of a file with a trailing slash.\n // a/* should match a/b/\n return (fi === fl - 1) && (file[fi] === '')\n }\n\n // should be unreachable.\n /* istanbul ignore next */\n throw new Error('wtf?')\n }\n\n braceExpand () {\n return braceExpand(this.pattern, this.options)\n }\n\n parse (pattern, isSub) {\n assertValidPattern(pattern)\n\n const options = this.options\n\n // shortcuts\n if (pattern === '**') {\n if (!options.noglobstar)\n return GLOBSTAR\n else\n pattern = '*'\n }\n if (pattern === '') return ''\n\n let re = ''\n let hasMagic = false\n let escaping = false\n // ? => one single character\n const patternListStack = []\n const negativeLists = []\n let stateChar\n let inClass = false\n let reClassStart = -1\n let classStart = -1\n let cs\n let pl\n let sp\n // . and .. never match anything that doesn't start with .,\n // even when options.dot is set. However, if the pattern\n // starts with ., then traversal patterns can match.\n let dotTravAllowed = pattern.charAt(0) === '.'\n let dotFileAllowed = options.dot || dotTravAllowed\n const patternStart = () =>\n dotTravAllowed\n ? ''\n : dotFileAllowed\n ? '(?!(?:^|\\\\/)\\\\.{1,2}(?:$|\\\\/))'\n : '(?!\\\\.)'\n const subPatternStart = (p) =>\n p.charAt(0) === '.'\n ? ''\n : options.dot\n ? '(?!(?:^|\\\\/)\\\\.{1,2}(?:$|\\\\/))'\n : '(?!\\\\.)'\n\n\n const clearStateChar = () => {\n if (stateChar) {\n // we had some state-tracking character\n // that wasn't consumed by this pass.\n switch (stateChar) {\n case '*':\n re += star\n hasMagic = true\n break\n case '?':\n re += qmark\n hasMagic = true\n break\n default:\n re += '\\\\' + stateChar\n break\n }\n this.debug('clearStateChar %j %j', stateChar, re)\n stateChar = false\n }\n }\n\n for (let i = 0, c; (i < pattern.length) && (c = pattern.charAt(i)); i++) {\n this.debug('%s\\t%s %s %j', pattern, i, re, c)\n\n // skip over any that are escaped.\n if (escaping) {\n /* istanbul ignore next - completely not allowed, even escaped. */\n if (c === '/') {\n return false\n }\n\n if (reSpecials[c]) {\n re += '\\\\'\n }\n re += c\n escaping = false\n continue\n }\n\n switch (c) {\n /* istanbul ignore next */\n case '/': {\n // Should already be path-split by now.\n return false\n }\n\n case '\\\\':\n if (inClass && pattern.charAt(i + 1) === '-') {\n re += c\n continue\n }\n\n clearStateChar()\n escaping = true\n continue\n\n // the various stateChar values\n // for the \"extglob\" stuff.\n case '?':\n case '*':\n case '+':\n case '@':\n case '!':\n this.debug('%s\\t%s %s %j <-- stateChar', pattern, i, re, c)\n\n // all of those are literals inside a class, except that\n // the glob [!a] means [^a] in regexp\n if (inClass) {\n this.debug(' in class')\n if (c === '!' && i === classStart + 1) c = '^'\n re += c\n continue\n }\n\n // coalesce consecutive non-globstar * characters\n if (c === '*' && stateChar === '*') continue\n\n // if we already have a stateChar, then it means\n // that there was something like ** or +? in there.\n // Handle the stateChar, then proceed with this one.\n this.debug('call clearStateChar %j', stateChar)\n clearStateChar()\n stateChar = c\n // if extglob is disabled, then +(asdf|foo) isn't a thing.\n // just clear the statechar *now*, rather than even diving into\n // the patternList stuff.\n if (options.noext) clearStateChar()\n continue\n\n case '(': {\n if (inClass) {\n re += '('\n continue\n }\n\n if (!stateChar) {\n re += '\\\\('\n continue\n }\n\n const plEntry = {\n type: stateChar,\n start: i - 1,\n reStart: re.length,\n open: plTypes[stateChar].open,\n close: plTypes[stateChar].close,\n }\n this.debug(this.pattern, '\\t', plEntry)\n patternListStack.push(plEntry)\n // negation is (?:(?!(?:js)(?:<rest>))[^/]*)\n re += plEntry.open\n // next entry starts with a dot maybe?\n if (plEntry.start === 0 && plEntry.type !== '!') {\n dotTravAllowed = true\n re += subPatternStart(pattern.slice(i + 1))\n }\n this.debug('plType %j %j', stateChar, re)\n stateChar = false\n continue\n }\n\n case ')': {\n const plEntry = patternListStack[patternListStack.length - 1]\n if (inClass || !plEntry) {\n re += '\\\\)'\n continue\n }\n patternListStack.pop()\n\n // closing an extglob\n clearStateChar()\n hasMagic = true\n pl = plEntry\n // negation is (?:(?!js)[^/]*)\n // The others are (?:<pattern>)<type>\n re += pl.close\n if (pl.type === '!') {\n negativeLists.push(Object.assign(pl, { reEnd: re.length }))\n }\n continue\n }\n\n case '|': {\n const plEntry = patternListStack[patternListStack.length - 1]\n if (inClass || !plEntry) {\n re += '\\\\|'\n continue\n }\n\n clearStateChar()\n re += '|'\n // next subpattern can start with a dot?\n if (plEntry.start === 0 && plEntry.type !== '!') {\n dotTravAllowed = true\n re += subPatternStart(pattern.slice(i + 1))\n }\n continue\n }\n\n // these are mostly the same in regexp and glob\n case '[':\n // swallow any state-tracking char before the [\n clearStateChar()\n\n if (inClass) {\n re += '\\\\' + c\n continue\n }\n\n inClass = true\n classStart = i\n reClassStart = re.length\n re += c\n continue\n\n case ']':\n // a right bracket shall lose its special\n // meaning and represent itself in\n // a bracket expression if it occurs\n // first in the list. -- POSIX.2 2.8.3.2\n if (i === classStart + 1 || !inClass) {\n re += '\\\\' + c\n continue\n }\n\n // split where the last [ was, make sure we don't have\n // an invalid re. if so, re-walk the contents of the\n // would-be class to re-translate any characters that\n // were passed through as-is\n // TODO: It would probably be faster to determine this\n // without a try/catch and a new RegExp, but it's tricky\n // to do safely. For now, this is safe and works.\n cs = pattern.substring(classStart + 1, i)\n try {\n RegExp('[' + braExpEscape(charUnescape(cs)) + ']')\n // looks good, finish up the class.\n re += c\n } catch (er) {\n // out of order ranges in JS are errors, but in glob syntax,\n // they're just a range that matches nothing.\n re = re.substring(0, reClassStart) + '(?:$.)' // match nothing ever\n }\n hasMagic = true\n inClass = false\n continue\n\n default:\n // swallow any state char that wasn't consumed\n clearStateChar()\n\n if (reSpecials[c] && !(c === '^' && inClass)) {\n re += '\\\\'\n }\n\n re += c\n break\n\n } // switch\n } // for\n\n // handle the case where we left a class open.\n // \"[abc\" is valid, equivalent to \"\\[abc\"\n if (inClass) {\n // split where the last [ was, and escape it\n // this is a huge pita. We now have to re-walk\n // the contents of the would-be class to re-translate\n // any characters that were passed through as-is\n cs = pattern.slice(classStart + 1)\n sp = this.parse(cs, SUBPARSE)\n re = re.substring(0, reClassStart) + '\\\\[' + sp[0]\n hasMagic = hasMagic || sp[1]\n }\n\n // handle the case where we had a +( thing at the *end*\n // of the pattern.\n // each pattern list stack adds 3 chars, and we need to go through\n // and escape any | chars that were passed through as-is for the regexp.\n // Go through and escape them, taking care not to double-escape any\n // | chars that were already escaped.\n for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) {\n let tail\n tail = re.slice(pl.reStart + pl.open.length)\n this.debug('setting tail', re, pl)\n // maybe some even number of \\, then maybe 1 \\, followed by a |\n tail = tail.replace(/((?:\\\\{2}){0,64})(\\\\?)\\|/g, (_, $1, $2) => {\n /* istanbul ignore else - should already be done */\n if (!$2) {\n // the | isn't already escaped, so escape it.\n $2 = '\\\\'\n }\n\n // need to escape all those slashes *again*, without escaping the\n // one that we need for escaping the | character. As it works out,\n // escaping an even number of slashes can be done by simply repeating\n // it exactly after itself. That's why this trick works.\n //\n // I am sorry that you have to see this.\n return $1 + $1 + $2 + '|'\n })\n\n this.debug('tail=%j\\n %s', tail, tail, pl, re)\n const t = pl.type === '*' ? star\n : pl.type === '?' ? qmark\n : '\\\\' + pl.type\n\n hasMagic = true\n re = re.slice(0, pl.reStart) + t + '\\\\(' + tail\n }\n\n // handle trailing things that only matter at the very end.\n clearStateChar()\n if (escaping) {\n // trailing \\\\\n re += '\\\\\\\\'\n }\n\n // only need to apply the nodot start if the re starts with\n // something that could conceivably capture a dot\n const addPatternStart = addPatternStartSet[re.charAt(0)]\n\n // Hack to work around lack of negative lookbehind in JS\n // A pattern like: *.!(x).!(y|z) needs to ensure that a name\n // like 'a.xyz.yz' doesn't match. So, the first negative\n // lookahead, has to look ALL the way ahead, to the end of\n // the pattern.\n for (let n = negativeLists.length - 1; n > -1; n--) {\n const nl = negativeLists[n]\n\n const nlBefore = re.slice(0, nl.reStart)\n const nlFirst = re.slice(nl.reStart, nl.reEnd - 8)\n let nlAfter = re.slice(nl.reEnd)\n const nlLast = re.slice(nl.reEnd - 8, nl.reEnd) + nlAfter\n\n // Handle nested stuff like *(*.js|!(*.json)), where open parens\n // mean that we should *not* include the ) in the bit that is considered\n // \"after\" the negated section.\n const closeParensBefore = nlBefore.split(')').length\n const openParensBefore = nlBefore.split('(').length - closeParensBefore\n let cleanAfter = nlAfter\n for (let i = 0; i < openParensBefore; i++) {\n cleanAfter = cleanAfter.replace(/\\)[+*?]?/, '')\n }\n nlAfter = cleanAfter\n\n const dollar = nlAfter === '' && isSub !== SUBPARSE ? '(?:$|\\\\/)' : ''\n\n re = nlBefore + nlFirst + nlAfter + dollar + nlLast\n }\n\n // if the re is not \"\" at this point, then we need to make sure\n // it doesn't match against an empty path part.\n // Otherwise a/* will match a/, which it should not.\n if (re !== '' && hasMagic) {\n re = '(?=.)' + re\n }\n\n if (addPatternStart) {\n re = patternStart() + re\n }\n\n // parsing just a piece of a larger pattern.\n if (isSub === SUBPARSE) {\n return [re, hasMagic]\n }\n\n // if it's nocase, and the lcase/uppercase don't match, it's magic\n if (options.nocase && !hasMagic) {\n hasMagic = pattern.toUpperCase() !== pattern.toLowerCase()\n }\n\n // skip the regexp for non-magical patterns\n // unescape anything in it, though, so that it'll be\n // an exact match against a file etc.\n if (!hasMagic) {\n return globUnescape(pattern)\n }\n\n const flags = options.nocase ? 'i' : ''\n try {\n return Object.assign(new RegExp('^' + re + '$', flags), {\n _glob: pattern,\n _src: re,\n })\n } catch (er) /* istanbul ignore next - should be impossible */ {\n // If it was an invalid regular expression, then it can't match\n // anything. This trick looks for a character after the end of\n // the string, which is of course impossible, except in multi-line\n // mode, but it's not a /m regex.\n return new RegExp('$.')\n }\n }\n\n makeRe () {\n if (this.regexp || this.regexp === false) return this.regexp\n\n // at this point, this.set is a 2d array of partial\n // pattern strings, or \"**\".\n //\n // It's better to use .match(). This function shouldn't\n // be used, really, but it's pretty convenient sometimes,\n // when you just want to work with a regex.\n const set = this.set\n\n if (!set.length) {\n this.regexp = false\n return this.regexp\n }\n const options = this.options\n\n const twoStar = options.noglobstar ? star\n : options.dot ? twoStarDot\n : twoStarNoDot\n const flags = options.nocase ? 'i' : ''\n\n // coalesce globstars and regexpify non-globstar patterns\n // if it's the only item, then we just do one twoStar\n // if it's the first, and there are more, prepend (\\/|twoStar\\/)? to next\n // if it's the last, append (\\/twoStar|) to previous\n // if it's in the middle, append (\\/|\\/twoStar\\/) to previous\n // then filter out GLOBSTAR symbols\n let re = set.map(pattern => {\n pattern = pattern.map(p =>\n typeof p === 'string' ? regExpEscape(p)\n : p === GLOBSTAR ? GLOBSTAR\n : p._src\n ).reduce((set, p) => {\n if (!(set[set.length - 1] === GLOBSTAR && p === GLOBSTAR)) {\n set.push(p)\n }\n return set\n }, [])\n pattern.forEach((p, i) => {\n if (p !== GLOBSTAR || pattern[i-1] === GLOBSTAR) {\n return\n }\n if (i === 0) {\n if (pattern.length > 1) {\n pattern[i+1] = '(?:\\\\\\/|' + twoStar + '\\\\\\/)?' + pattern[i+1]\n } else {\n pattern[i] = twoStar\n }\n } else if (i === pattern.length - 1) {\n pattern[i-1] += '(?:\\\\\\/|' + twoStar + ')?'\n } else {\n pattern[i-1] += '(?:\\\\\\/|\\\\\\/' + twoStar + '\\\\\\/)' + pattern[i+1]\n pattern[i+1] = GLOBSTAR\n }\n })\n return pattern.filter(p => p !== GLOBSTAR).join('/')\n }).join('|')\n\n // must match entire pattern\n // ending in a * or ** will make it less strict.\n re = '^(?:' + re + ')$'\n\n // can match anything, as long as it's not this.\n if (this.negate) re = '^(?!' + re + ').*$'\n\n try {\n this.regexp = new RegExp(re, flags)\n } catch (ex) /* istanbul ignore next - should be impossible */ {\n this.regexp = false\n }\n return this.regexp\n }\n\n match (f, partial = this.partial) {\n this.debug('match', f, this.pattern)\n // short-circuit in the case of busted things.\n // comments, etc.\n if (this.comment) return false\n if (this.empty) return f === ''\n\n if (f === '/' && partial) return true\n\n const options = this.options\n\n // windows: need to use /, not \\\n if (path.sep !== '/') {\n f = f.split(path.sep).join('/')\n }\n\n // treat the test path as a set of pathparts.\n f = f.split(slashSplit)\n this.debug(this.pattern, 'split', f)\n\n // just ONE of the pattern sets in this.set needs to match\n // in order for it to be valid. If negating, then just one\n // match means that we have failed.\n // Either way, return on the first hit.\n\n const set = this.set\n this.debug(this.pattern, 'set', set)\n\n // Find the basename of the path by looking for the last non-empty segment\n let filename\n for (let i = f.length - 1; i >= 0; i--) {\n filename = f[i]\n if (filename) break\n }\n\n for (let i = 0; i < set.length; i++) {\n const pattern = set[i]\n let file = f\n if (options.matchBase && pattern.length === 1) {\n file = [filename]\n }\n const hit = this.matchOne(file, pattern, partial)\n if (hit) {\n if (options.flipNegate) return true\n return !this.negate\n }\n }\n\n // didn't get any hits. this is success if it's a negative\n // pattern, failure otherwise.\n if (options.flipNegate) return false\n return this.negate\n }\n\n static defaults (def) {\n return minimatch.defaults(def).Minimatch\n }\n}\n\nminimatch.Minimatch = Minimatch\n","module.exports = readdirGlob;\n\nconst fs = require('fs');\nconst { EventEmitter } = require('events');\nconst { Minimatch } = require('minimatch');\nconst { resolve } = require('path');\n\nfunction readdir(dir, strict) {\n return new Promise((resolve, reject) => {\n fs.readdir(dir, {withFileTypes: true} ,(err, files) => {\n if(err) {\n switch (err.code) {\n case 'ENOTDIR': // Not a directory\n if(strict) {\n reject(err);\n } else {\n resolve([]);\n }\n break;\n case 'ENOTSUP': // Operation not supported\n case 'ENOENT': // No such file or directory\n case 'ENAMETOOLONG': // Filename too long\n case 'UNKNOWN':\n resolve([]);\n break;\n case 'ELOOP': // Too many levels of symbolic links\n default:\n reject(err);\n break;\n }\n } else {\n resolve(files);\n }\n });\n });\n}\nfunction stat(file, followSymlinks) {\n return new Promise((resolve, reject) => {\n const statFunc = followSymlinks ? fs.stat : fs.lstat;\n statFunc(file, (err, stats) => {\n if(err) {\n switch (err.code) {\n case 'ENOENT':\n if(followSymlinks) {\n // Fallback to lstat to handle broken links as files\n resolve(stat(file, false)); \n } else {\n resolve(null);\n }\n break;\n default:\n resolve(null);\n break;\n }\n } else {\n resolve(stats);\n }\n });\n });\n}\n\nasync function* exploreWalkAsync(dir, path, followSymlinks, useStat, shouldSkip, strict) {\n let files = await readdir(path + dir, strict);\n for(const file of files) {\n let name = file.name;\n if(name === undefined) {\n // undefined file.name means the `withFileTypes` options is not supported by node\n // we have to call the stat function to know if file is directory or not.\n name = file;\n useStat = true;\n }\n const filename = dir + '/' + name;\n const relative = filename.slice(1); // Remove the leading /\n const absolute = path + '/' + relative;\n let stats = null;\n if(useStat || followSymlinks) {\n stats = await stat(absolute, followSymlinks);\n }\n if(!stats && file.name !== undefined) {\n stats = file;\n }\n if(stats === null) {\n stats = { isDirectory: () => false };\n }\n\n if(stats.isDirectory()) {\n if(!shouldSkip(relative)) {\n yield {relative, absolute, stats};\n yield* exploreWalkAsync(filename, path, followSymlinks, useStat, shouldSkip, false);\n }\n } else {\n yield {relative, absolute, stats};\n }\n }\n}\nasync function* explore(path, followSymlinks, useStat, shouldSkip) {\n yield* exploreWalkAsync('', path, followSymlinks, useStat, shouldSkip, true);\n}\n\n\nfunction readOptions(options) {\n return {\n pattern: options.pattern,\n dot: !!options.dot,\n noglobstar: !!options.noglobstar,\n matchBase: !!options.matchBase,\n nocase: !!options.nocase,\n ignore: options.ignore,\n skip: options.skip,\n\n follow: !!options.follow,\n stat: !!options.stat,\n nodir: !!options.nodir,\n mark: !!options.mark,\n silent: !!options.silent,\n absolute: !!options.absolute\n };\n}\n\nclass ReaddirGlob extends EventEmitter {\n constructor(cwd, options, cb) {\n super();\n if(typeof options === 'function') {\n cb = options;\n options = null;\n }\n\n this.options = readOptions(options || {});\n \n this.matchers = [];\n if(this.options.pattern) {\n const matchers = Array.isArray(this.options.pattern) ? this.options.pattern : [this.options.pattern];\n this.matchers = matchers.map( m =>\n new Minimatch(m, {\n dot: this.options.dot,\n noglobstar:this.options.noglobstar,\n matchBase:this.options.matchBase,\n nocase:this.options.nocase\n })\n );\n }\n \n this.ignoreMatchers = [];\n if(this.options.ignore) {\n const ignorePatterns = Array.isArray(this.options.ignore) ? this.options.ignore : [this.options.ignore];\n this.ignoreMatchers = ignorePatterns.map( ignore =>\n new Minimatch(ignore, {dot: true})\n );\n }\n \n this.skipMatchers = [];\n if(this.options.skip) {\n const skipPatterns = Array.isArray(this.options.skip) ? this.options.skip : [this.options.skip];\n this.skipMatchers = skipPatterns.map( skip =>\n new Minimatch(skip, {dot: true})\n );\n }\n\n this.iterator = explore(resolve(cwd || '.'), this.options.follow, this.options.stat, this._shouldSkipDirectory.bind(this));\n this.paused = false;\n this.inactive = false;\n this.aborted = false;\n \n if(cb) {\n this._matches = []; \n this.on('match', match => this._matches.push(this.options.absolute ? match.absolute : match.relative));\n this.on('error', err => cb(err));\n this.on('end', () => cb(null, this._matches));\n }\n\n setTimeout( () => this._next(), 0);\n }\n\n _shouldSkipDirectory(relative) {\n //console.log(relative, this.skipMatchers.some(m => m.match(relative)));\n return this.skipMatchers.some(m => m.match(relative));\n }\n\n _fileMatches(relative, isDirectory) {\n const file = relative + (isDirectory ? '/' : '');\n return (this.matchers.length === 0 || this.matchers.some(m => m.match(file)))\n && !this.ignoreMatchers.some(m => m.match(file))\n && (!this.options.nodir || !isDirectory);\n }\n\n _next() {\n if(!this.paused && !this.aborted) {\n this.iterator.next()\n .then((obj)=> {\n if(!obj.done) {\n const isDirectory = obj.value.stats.isDirectory();\n if(this._fileMatches(obj.value.relative, isDirectory )) {\n let relative = obj.value.relative;\n let absolute = obj.value.absolute;\n if(this.options.mark && isDirectory) {\n relative += '/';\n absolute += '/';\n }\n if(this.options.stat) {\n this.emit('match', {relative, absolute, stat:obj.value.stats});\n } else {\n this.emit('match', {relative, absolute});\n }\n }\n this._next(this.iterator);\n } else {\n this.emit('end');\n }\n })\n .catch((err) => {\n this.abort();\n this.emit('error', err);\n if(!err.code && !this.options.silent) {\n console.error(err);\n }\n });\n } else {\n this.inactive = true;\n }\n }\n\n abort() {\n this.aborted = true;\n }\n\n pause() {\n this.paused = true;\n }\n\n resume() {\n this.paused = false;\n if(this.inactive) {\n this.inactive = false;\n this._next();\n }\n }\n}\n\n\nfunction readdirGlob(pattern, options, cb) {\n return new ReaddirGlob(pattern, options, cb);\n}\nreaddirGlob.ReaddirGlob = ReaddirGlob;","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.async = {}));\n})(this, (function (exports) { 'use strict';\n\n /**\n * Creates a continuation function with some arguments already applied.\n *\n * Useful as a shorthand when combined with other control flow functions. Any\n * arguments passed to the returned function are added to the arguments\n * originally passed to apply.\n *\n * @name apply\n * @static\n * @memberOf module:Utils\n * @method\n * @category Util\n * @param {Function} fn - The function you want to eventually apply all\n * arguments to. Invokes with (arguments...).\n * @param {...*} arguments... - Any number of arguments to automatically apply\n * when the continuation is called.\n * @returns {Function} the partially-applied function\n * @example\n *\n * // using apply\n * async.parallel([\n * async.apply(fs.writeFile, 'testfile1', 'test1'),\n * async.apply(fs.writeFile, 'testfile2', 'test2')\n * ]);\n *\n *\n * // the same process without using apply\n * async.parallel([\n * function(callback) {\n * fs.writeFile('testfile1', 'test1', callback);\n * },\n * function(callback) {\n * fs.writeFile('testfile2', 'test2', callback);\n * }\n * ]);\n *\n * // It's possible to pass any number of additional arguments when calling the\n * // continuation:\n *\n * node> var fn = async.apply(sys.puts, 'one');\n * node> fn('two', 'three');\n * one\n * two\n * three\n */\n function apply(fn, ...args) {\n return (...callArgs) => fn(...args,...callArgs);\n }\n\n function initialParams (fn) {\n return function (...args/*, callback*/) {\n var callback = args.pop();\n return fn.call(this, args, callback);\n };\n }\n\n /* istanbul ignore file */\n\n var hasQueueMicrotask = typeof queueMicrotask === 'function' && queueMicrotask;\n var hasSetImmediate = typeof setImmediate === 'function' && setImmediate;\n var hasNextTick = typeof process === 'object' && typeof process.nextTick === 'function';\n\n function fallback(fn) {\n setTimeout(fn, 0);\n }\n\n function wrap(defer) {\n return (fn, ...args) => defer(() => fn(...args));\n }\n\n var _defer$1;\n\n if (hasQueueMicrotask) {\n _defer$1 = queueMicrotask;\n } else if (hasSetImmediate) {\n _defer$1 = setImmediate;\n } else if (hasNextTick) {\n _defer$1 = process.nextTick;\n } else {\n _defer$1 = fallback;\n }\n\n var setImmediate$1 = wrap(_defer$1);\n\n /**\n * Take a sync function and make it async, passing its return value to a\n * callback. This is useful for plugging sync functions into a waterfall,\n * series, or other async functions. Any arguments passed to the generated\n * function will be passed to the wrapped function (except for the final\n * callback argument). Errors thrown will be passed to the callback.\n *\n * If the function passed to `asyncify` returns a Promise, that promises's\n * resolved/rejected state will be used to call the callback, rather than simply\n * the synchronous return value.\n *\n * This also means you can asyncify ES2017 `async` functions.\n *\n * @name asyncify\n * @static\n * @memberOf module:Utils\n * @method\n * @alias wrapSync\n * @category Util\n * @param {Function} func - The synchronous function, or Promise-returning\n * function to convert to an {@link AsyncFunction}.\n * @returns {AsyncFunction} An asynchronous wrapper of the `func`. To be\n * invoked with `(args..., callback)`.\n * @example\n *\n * // passing a regular synchronous function\n * async.waterfall([\n * async.apply(fs.readFile, filename, \"utf8\"),\n * async.asyncify(JSON.parse),\n * function (data, next) {\n * // data is the result of parsing the text.\n * // If there was a parsing error, it would have been caught.\n * }\n * ], callback);\n *\n * // passing a function returning a promise\n * async.waterfall([\n * async.apply(fs.readFile, filename, \"utf8\"),\n * async.asyncify(function (contents) {\n * return db.model.create(contents);\n * }),\n * function (model, next) {\n * // `model` is the instantiated model object.\n * // If there was an error, this function would be skipped.\n * }\n * ], callback);\n *\n * // es2017 example, though `asyncify` is not needed if your JS environment\n * // supports async functions out of the box\n * var q = async.queue(async.asyncify(async function(file) {\n * var intermediateStep = await processFile(file);\n * return await somePromise(intermediateStep)\n * }));\n *\n * q.push(files);\n */\n function asyncify(func) {\n if (isAsync(func)) {\n return function (...args/*, callback*/) {\n const callback = args.pop();\n const promise = func.apply(this, args);\n return handlePromise(promise, callback)\n }\n }\n\n return initialParams(function (args, callback) {\n var result;\n try {\n result = func.apply(this, args);\n } catch (e) {\n return callback(e);\n }\n // if result is Promise object\n if (result && typeof result.then === 'function') {\n return handlePromise(result, callback)\n } else {\n callback(null, result);\n }\n });\n }\n\n function handlePromise(promise, callback) {\n return promise.then(value => {\n invokeCallback(callback, null, value);\n }, err => {\n invokeCallback(callback, err && (err instanceof Error || err.message) ? err : new Error(err));\n });\n }\n\n function invokeCallback(callback, error, value) {\n try {\n callback(error, value);\n } catch (err) {\n setImmediate$1(e => { throw e }, err);\n }\n }\n\n function isAsync(fn) {\n return fn[Symbol.toStringTag] === 'AsyncFunction';\n }\n\n function isAsyncGenerator(fn) {\n return fn[Symbol.toStringTag] === 'AsyncGenerator';\n }\n\n function isAsyncIterable(obj) {\n return typeof obj[Symbol.asyncIterator] === 'function';\n }\n\n function wrapAsync(asyncFn) {\n if (typeof asyncFn !== 'function') throw new Error('expected a function')\n return isAsync(asyncFn) ? asyncify(asyncFn) : asyncFn;\n }\n\n // conditionally promisify a function.\n // only return a promise if a callback is omitted\n function awaitify (asyncFn, arity) {\n if (!arity) arity = asyncFn.length;\n if (!arity) throw new Error('arity is undefined')\n function awaitable (...args) {\n if (typeof args[arity - 1] === 'function') {\n return asyncFn.apply(this, args)\n }\n\n return new Promise((resolve, reject) => {\n args[arity - 1] = (err, ...cbArgs) => {\n if (err) return reject(err)\n resolve(cbArgs.length > 1 ? cbArgs : cbArgs[0]);\n };\n asyncFn.apply(this, args);\n })\n }\n\n return awaitable\n }\n\n function applyEach$1 (eachfn) {\n return function applyEach(fns, ...callArgs) {\n const go = awaitify(function (callback) {\n var that = this;\n return eachfn(fns, (fn, cb) => {\n wrapAsync(fn).apply(that, callArgs.concat(cb));\n }, callback);\n });\n return go;\n };\n }\n\n function _asyncMap(eachfn, arr, iteratee, callback) {\n arr = arr || [];\n var results = [];\n var counter = 0;\n var _iteratee = wrapAsync(iteratee);\n\n return eachfn(arr, (value, _, iterCb) => {\n var index = counter++;\n _iteratee(value, (err, v) => {\n results[index] = v;\n iterCb(err);\n });\n }, err => {\n callback(err, results);\n });\n }\n\n function isArrayLike(value) {\n return value &&\n typeof value.length === 'number' &&\n value.length >= 0 &&\n value.length % 1 === 0;\n }\n\n // A temporary value used to identify if the loop should be broken.\n // See #1064, #1293\n const breakLoop = {};\n\n function once(fn) {\n function wrapper (...args) {\n if (fn === null) return;\n var callFn = fn;\n fn = null;\n callFn.apply(this, args);\n }\n Object.assign(wrapper, fn);\n return wrapper\n }\n\n function getIterator (coll) {\n return coll[Symbol.iterator] && coll[Symbol.iterator]();\n }\n\n function createArrayIterator(coll) {\n var i = -1;\n var len = coll.length;\n return function next() {\n return ++i < len ? {value: coll[i], key: i} : null;\n }\n }\n\n function createES2015Iterator(iterator) {\n var i = -1;\n return function next() {\n var item = iterator.next();\n if (item.done)\n return null;\n i++;\n return {value: item.value, key: i};\n }\n }\n\n function createObjectIterator(obj) {\n var okeys = obj ? Object.keys(obj) : [];\n var i = -1;\n var len = okeys.length;\n return function next() {\n var key = okeys[++i];\n if (key === '__proto__') {\n return next();\n }\n return i < len ? {value: obj[key], key} : null;\n };\n }\n\n function createIterator(coll) {\n if (isArrayLike(coll)) {\n return createArrayIterator(coll);\n }\n\n var iterator = getIterator(coll);\n return iterator ? createES2015Iterator(iterator) : createObjectIterator(coll);\n }\n\n function onlyOnce(fn) {\n return function (...args) {\n if (fn === null) throw new Error(\"Callback was already called.\");\n var callFn = fn;\n fn = null;\n callFn.apply(this, args);\n };\n }\n\n // for async generators\n function asyncEachOfLimit(generator, limit, iteratee, callback) {\n let done = false;\n let canceled = false;\n let awaiting = false;\n let running = 0;\n let idx = 0;\n\n function replenish() {\n //console.log('replenish')\n if (running >= limit || awaiting || done) return\n //console.log('replenish awaiting')\n awaiting = true;\n generator.next().then(({value, done: iterDone}) => {\n //console.log('got value', value)\n if (canceled || done) return\n awaiting = false;\n if (iterDone) {\n done = true;\n if (running <= 0) {\n //console.log('done nextCb')\n callback(null);\n }\n return;\n }\n running++;\n iteratee(value, idx, iterateeCallback);\n idx++;\n replenish();\n }).catch(handleError);\n }\n\n function iterateeCallback(err, result) {\n //console.log('iterateeCallback')\n running -= 1;\n if (canceled) return\n if (err) return handleError(err)\n\n if (err === false) {\n done = true;\n canceled = true;\n return\n }\n\n if (result === breakLoop || (done && running <= 0)) {\n done = true;\n //console.log('done iterCb')\n return callback(null);\n }\n replenish();\n }\n\n function handleError(err) {\n if (canceled) return\n awaiting = false;\n done = true;\n callback(err);\n }\n\n replenish();\n }\n\n var eachOfLimit$2 = (limit) => {\n return (obj, iteratee, callback) => {\n callback = once(callback);\n if (limit <= 0) {\n throw new RangeError('concurrency limit cannot be less than 1')\n }\n if (!obj) {\n return callback(null);\n }\n if (isAsyncGenerator(obj)) {\n return asyncEachOfLimit(obj, limit, iteratee, callback)\n }\n if (isAsyncIterable(obj)) {\n return asyncEachOfLimit(obj[Symbol.asyncIterator](), limit, iteratee, callback)\n }\n var nextElem = createIterator(obj);\n var done = false;\n var canceled = false;\n var running = 0;\n var looping = false;\n\n function iterateeCallback(err, value) {\n if (canceled) return\n running -= 1;\n if (err) {\n done = true;\n callback(err);\n }\n else if (err === false) {\n done = true;\n canceled = true;\n }\n else if (value === breakLoop || (done && running <= 0)) {\n done = true;\n return callback(null);\n }\n else if (!looping) {\n replenish();\n }\n }\n\n function replenish () {\n looping = true;\n while (running < limit && !done) {\n var elem = nextElem();\n if (elem === null) {\n done = true;\n if (running <= 0) {\n callback(null);\n }\n return;\n }\n running += 1;\n iteratee(elem.value, elem.key, onlyOnce(iterateeCallback));\n }\n looping = false;\n }\n\n replenish();\n };\n };\n\n /**\n * The same as [`eachOf`]{@link module:Collections.eachOf} but runs a maximum of `limit` async operations at a\n * time.\n *\n * @name eachOfLimit\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.eachOf]{@link module:Collections.eachOf}\n * @alias forEachOfLimit\n * @category Collection\n * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n * @param {number} limit - The maximum number of async operations at a time.\n * @param {AsyncFunction} iteratee - An async function to apply to each\n * item in `coll`. The `key` is the item's key, or index in the case of an\n * array.\n * Invoked with (item, key, callback).\n * @param {Function} [callback] - A callback which is called when all\n * `iteratee` functions have finished, or an error occurs. Invoked with (err).\n * @returns {Promise} a promise, if a callback is omitted\n */\n function eachOfLimit(coll, limit, iteratee, callback) {\n return eachOfLimit$2(limit)(coll, wrapAsync(iteratee), callback);\n }\n\n var eachOfLimit$1 = awaitify(eachOfLimit, 4);\n\n // eachOf implementation optimized for array-likes\n function eachOfArrayLike(coll, iteratee, callback) {\n callback = once(callback);\n var index = 0,\n completed = 0,\n {length} = coll,\n canceled = false;\n if (length === 0) {\n callback(null);\n }\n\n function iteratorCallback(err, value) {\n if (err === false) {\n canceled = true;\n }\n if (canceled === true) return\n if (err) {\n callback(err);\n } else if ((++completed === length) || value === breakLoop) {\n callback(null);\n }\n }\n\n for (; index < length; index++) {\n iteratee(coll[index], index, onlyOnce(iteratorCallback));\n }\n }\n\n // a generic version of eachOf which can handle array, object, and iterator cases.\n function eachOfGeneric (coll, iteratee, callback) {\n return eachOfLimit$1(coll, Infinity, iteratee, callback);\n }\n\n /**\n * Like [`each`]{@link module:Collections.each}, except that it passes the key (or index) as the second argument\n * to the iteratee.\n *\n * @name eachOf\n * @static\n * @memberOf module:Collections\n * @method\n * @alias forEachOf\n * @category Collection\n * @see [async.each]{@link module:Collections.each}\n * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n * @param {AsyncFunction} iteratee - A function to apply to each\n * item in `coll`.\n * The `key` is the item's key, or index in the case of an array.\n * Invoked with (item, key, callback).\n * @param {Function} [callback] - A callback which is called when all\n * `iteratee` functions have finished, or an error occurs. Invoked with (err).\n * @returns {Promise} a promise, if a callback is omitted\n * @example\n *\n * // dev.json is a file containing a valid json object config for dev environment\n * // dev.json is a file containing a valid json object config for test environment\n * // prod.json is a file containing a valid json object config for prod environment\n * // invalid.json is a file with a malformed json object\n *\n * let configs = {}; //global variable\n * let validConfigFileMap = {dev: 'dev.json', test: 'test.json', prod: 'prod.json'};\n * let invalidConfigFileMap = {dev: 'dev.json', test: 'test.json', invalid: 'invalid.json'};\n *\n * // asynchronous function that reads a json file and parses the contents as json object\n * function parseFile(file, key, callback) {\n * fs.readFile(file, \"utf8\", function(err, data) {\n * if (err) return calback(err);\n * try {\n * configs[key] = JSON.parse(data);\n * } catch (e) {\n * return callback(e);\n * }\n * callback();\n * });\n * }\n *\n * // Using callbacks\n * async.forEachOf(validConfigFileMap, parseFile, function (err) {\n * if (err) {\n * console.error(err);\n * } else {\n * console.log(configs);\n * // configs is now a map of JSON data, e.g.\n * // { dev: //parsed dev.json, test: //parsed test.json, prod: //parsed prod.json}\n * }\n * });\n *\n * //Error handing\n * async.forEachOf(invalidConfigFileMap, parseFile, function (err) {\n * if (err) {\n * console.error(err);\n * // JSON parse error exception\n * } else {\n * console.log(configs);\n * }\n * });\n *\n * // Using Promises\n * async.forEachOf(validConfigFileMap, parseFile)\n * .then( () => {\n * console.log(configs);\n * // configs is now a map of JSON data, e.g.\n * // { dev: //parsed dev.json, test: //parsed test.json, prod: //parsed prod.json}\n * }).catch( err => {\n * console.error(err);\n * });\n *\n * //Error handing\n * async.forEachOf(invalidConfigFileMap, parseFile)\n * .then( () => {\n * console.log(configs);\n * }).catch( err => {\n * console.error(err);\n * // JSON parse error exception\n * });\n *\n * // Using async/await\n * async () => {\n * try {\n * let result = await async.forEachOf(validConfigFileMap, parseFile);\n * console.log(configs);\n * // configs is now a map of JSON data, e.g.\n * // { dev: //parsed dev.json, test: //parsed test.json, prod: //parsed prod.json}\n * }\n * catch (err) {\n * console.log(err);\n * }\n * }\n *\n * //Error handing\n * async () => {\n * try {\n * let result = await async.forEachOf(invalidConfigFileMap, parseFile);\n * console.log(configs);\n * }\n * catch (err) {\n * console.log(err);\n * // JSON parse error exception\n * }\n * }\n *\n */\n function eachOf(coll, iteratee, callback) {\n var eachOfImplementation = isArrayLike(coll) ? eachOfArrayLike : eachOfGeneric;\n return eachOfImplementation(coll, wrapAsync(iteratee), callback);\n }\n\n var eachOf$1 = awaitify(eachOf, 3);\n\n /**\n * Produces a new collection of values by mapping each value in `coll` through\n * the `iteratee` function. The `iteratee` is called with an item from `coll`\n * and a callback for when it has finished processing. Each of these callbacks\n * takes 2 arguments: an `error`, and the transformed item from `coll`. If\n * `iteratee` passes an error to its callback, the main `callback` (for the\n * `map` function) is immediately called with the error.\n *\n * Note, that since this function applies the `iteratee` to each item in\n * parallel, there is no guarantee that the `iteratee` functions will complete\n * in order. However, the results array will be in the same order as the\n * original `coll`.\n *\n * If `map` is passed an Object, the results will be an Array. The results\n * will roughly be in the order of the original Objects' keys (but this can\n * vary across JavaScript engines).\n *\n * @name map\n * @static\n * @memberOf module:Collections\n * @method\n * @category Collection\n * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n * @param {AsyncFunction} iteratee - An async function to apply to each item in\n * `coll`.\n * The iteratee should complete with the transformed item.\n * Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called when all `iteratee`\n * functions have finished, or an error occurs. Results is an Array of the\n * transformed items from the `coll`. Invoked with (err, results).\n * @returns {Promise} a promise, if no callback is passed\n * @example\n *\n * // file1.txt is a file that is 1000 bytes in size\n * // file2.txt is a file that is 2000 bytes in size\n * // file3.txt is a file that is 3000 bytes in size\n * // file4.txt does not exist\n *\n * const fileList = ['file1.txt','file2.txt','file3.txt'];\n * const withMissingFileList = ['file1.txt','file2.txt','file4.txt'];\n *\n * // asynchronous function that returns the file size in bytes\n * function getFileSizeInBytes(file, callback) {\n * fs.stat(file, function(err, stat) {\n * if (err) {\n * return callback(err);\n * }\n * callback(null, stat.size);\n * });\n * }\n *\n * // Using callbacks\n * async.map(fileList, getFileSizeInBytes, function(err, results) {\n * if (err) {\n * console.log(err);\n * } else {\n * console.log(results);\n * // results is now an array of the file size in bytes for each file, e.g.\n * // [ 1000, 2000, 3000]\n * }\n * });\n *\n * // Error Handling\n * async.map(withMissingFileList, getFileSizeInBytes, function(err, results) {\n * if (err) {\n * console.log(err);\n * // [ Error: ENOENT: no such file or directory ]\n * } else {\n * console.log(results);\n * }\n * });\n *\n * // Using Promises\n * async.map(fileList, getFileSizeInBytes)\n * .then( results => {\n * console.log(results);\n * // results is now an array of the file size in bytes for each file, e.g.\n * // [ 1000, 2000, 3000]\n * }).catch( err => {\n * console.log(err);\n * });\n *\n * // Error Handling\n * async.map(withMissingFileList, getFileSizeInBytes)\n * .then( results => {\n * console.log(results);\n * }).catch( err => {\n * console.log(err);\n * // [ Error: ENOENT: no such file or directory ]\n * });\n *\n * // Using async/await\n * async () => {\n * try {\n * let results = await async.map(fileList, getFileSizeInBytes);\n * console.log(results);\n * // results is now an array of the file size in bytes for each file, e.g.\n * // [ 1000, 2000, 3000]\n * }\n * catch (err) {\n * console.log(err);\n * }\n * }\n *\n * // Error Handling\n * async () => {\n * try {\n * let results = await async.map(withMissingFileList, getFileSizeInBytes);\n * console.log(results);\n * }\n * catch (err) {\n * console.log(err);\n * // [ Error: ENOENT: no such file or directory ]\n * }\n * }\n *\n */\n function map (coll, iteratee, callback) {\n return _asyncMap(eachOf$1, coll, iteratee, callback)\n }\n var map$1 = awaitify(map, 3);\n\n /**\n * Applies the provided arguments to each function in the array, calling\n * `callback` after all functions have completed. If you only provide the first\n * argument, `fns`, then it will return a function which lets you pass in the\n * arguments as if it were a single function call. If more arguments are\n * provided, `callback` is required while `args` is still optional. The results\n * for each of the applied async functions are passed to the final callback\n * as an array.\n *\n * @name applyEach\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @category Control Flow\n * @param {Array|Iterable|AsyncIterable|Object} fns - A collection of {@link AsyncFunction}s\n * to all call with the same arguments\n * @param {...*} [args] - any number of separate arguments to pass to the\n * function.\n * @param {Function} [callback] - the final argument should be the callback,\n * called when all functions have completed processing.\n * @returns {AsyncFunction} - Returns a function that takes no args other than\n * an optional callback, that is the result of applying the `args` to each\n * of the functions.\n * @example\n *\n * const appliedFn = async.applyEach([enableSearch, updateSchema], 'bucket')\n *\n * appliedFn((err, results) => {\n * // results[0] is the results for `enableSearch`\n * // results[1] is the results for `updateSchema`\n * });\n *\n * // partial application example:\n * async.each(\n * buckets,\n * async (bucket) => async.applyEach([enableSearch, updateSchema], bucket)(),\n * callback\n * );\n */\n var applyEach = applyEach$1(map$1);\n\n /**\n * The same as [`eachOf`]{@link module:Collections.eachOf} but runs only a single async operation at a time.\n *\n * @name eachOfSeries\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.eachOf]{@link module:Collections.eachOf}\n * @alias forEachOfSeries\n * @category Collection\n * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n * @param {AsyncFunction} iteratee - An async function to apply to each item in\n * `coll`.\n * Invoked with (item, key, callback).\n * @param {Function} [callback] - A callback which is called when all `iteratee`\n * functions have finished, or an error occurs. Invoked with (err).\n * @returns {Promise} a promise, if a callback is omitted\n */\n function eachOfSeries(coll, iteratee, callback) {\n return eachOfLimit$1(coll, 1, iteratee, callback)\n }\n var eachOfSeries$1 = awaitify(eachOfSeries, 3);\n\n /**\n * The same as [`map`]{@link module:Collections.map} but runs only a single async operation at a time.\n *\n * @name mapSeries\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.map]{@link module:Collections.map}\n * @category Collection\n * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n * @param {AsyncFunction} iteratee - An async function to apply to each item in\n * `coll`.\n * The iteratee should complete with the transformed item.\n * Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called when all `iteratee`\n * functions have finished, or an error occurs. Results is an array of the\n * transformed items from the `coll`. Invoked with (err, results).\n * @returns {Promise} a promise, if no callback is passed\n */\n function mapSeries (coll, iteratee, callback) {\n return _asyncMap(eachOfSeries$1, coll, iteratee, callback)\n }\n var mapSeries$1 = awaitify(mapSeries, 3);\n\n /**\n * The same as [`applyEach`]{@link module:ControlFlow.applyEach} but runs only a single async operation at a time.\n *\n * @name applyEachSeries\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @see [async.applyEach]{@link module:ControlFlow.applyEach}\n * @category Control Flow\n * @param {Array|Iterable|AsyncIterable|Object} fns - A collection of {@link AsyncFunction}s to all\n * call with the same arguments\n * @param {...*} [args] - any number of separate arguments to pass to the\n * function.\n * @param {Function} [callback] - the final argument should be the callback,\n * called when all functions have completed processing.\n * @returns {AsyncFunction} - A function, that when called, is the result of\n * appling the `args` to the list of functions. It takes no args, other than\n * a callback.\n */\n var applyEachSeries = applyEach$1(mapSeries$1);\n\n const PROMISE_SYMBOL = Symbol('promiseCallback');\n\n function promiseCallback () {\n let resolve, reject;\n function callback (err, ...args) {\n if (err) return reject(err)\n resolve(args.length > 1 ? args : args[0]);\n }\n\n callback[PROMISE_SYMBOL] = new Promise((res, rej) => {\n resolve = res,\n reject = rej;\n });\n\n return callback\n }\n\n /**\n * Determines the best order for running the {@link AsyncFunction}s in `tasks`, based on\n * their requirements. Each function can optionally depend on other functions\n * being completed first, and each function is run as soon as its requirements\n * are satisfied.\n *\n * If any of the {@link AsyncFunction}s pass an error to their callback, the `auto` sequence\n * will stop. Further tasks will not execute (so any other functions depending\n * on it will not run), and the main `callback` is immediately called with the\n * error.\n *\n * {@link AsyncFunction}s also receive an object containing the results of functions which\n * have completed so far as the first argument, if they have dependencies. If a\n * task function has no dependencies, it will only be passed a callback.\n *\n * @name auto\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @category Control Flow\n * @param {Object} tasks - An object. Each of its properties is either a\n * function or an array of requirements, with the {@link AsyncFunction} itself the last item\n * in the array. The object's key of a property serves as the name of the task\n * defined by that property, i.e. can be used when specifying requirements for\n * other tasks. The function receives one or two arguments:\n * * a `results` object, containing the results of the previously executed\n * functions, only passed if the task has any dependencies,\n * * a `callback(err, result)` function, which must be called when finished,\n * passing an `error` (which can be `null`) and the result of the function's\n * execution.\n * @param {number} [concurrency=Infinity] - An optional `integer` for\n * determining the maximum number of tasks that can be run in parallel. By\n * default, as many as possible.\n * @param {Function} [callback] - An optional callback which is called when all\n * the tasks have been completed. It receives the `err` argument if any `tasks`\n * pass an error to their callback. Results are always returned; however, if an\n * error occurs, no further `tasks` will be performed, and the results object\n * will only contain partial results. Invoked with (err, results).\n * @returns {Promise} a promise, if a callback is not passed\n * @example\n *\n * //Using Callbacks\n * async.auto({\n * get_data: function(callback) {\n * // async code to get some data\n * callback(null, 'data', 'converted to array');\n * },\n * make_folder: function(callback) {\n * // async code to create a directory to store a file in\n * // this is run at the same time as getting the data\n * callback(null, 'folder');\n * },\n * write_file: ['get_data', 'make_folder', function(results, callback) {\n * // once there is some data and the directory exists,\n * // write the data to a file in the directory\n * callback(null, 'filename');\n * }],\n * email_link: ['write_file', function(results, callback) {\n * // once the file is written let's email a link to it...\n * callback(null, {'file':results.write_file, 'email':'user@example.com'});\n * }]\n * }, function(err, results) {\n * if (err) {\n * console.log('err = ', err);\n * }\n * console.log('results = ', results);\n * // results = {\n * // get_data: ['data', 'converted to array']\n * // make_folder; 'folder',\n * // write_file: 'filename'\n * // email_link: { file: 'filename', email: 'user@example.com' }\n * // }\n * });\n *\n * //Using Promises\n * async.auto({\n * get_data: function(callback) {\n * console.log('in get_data');\n * // async code to get some data\n * callback(null, 'data', 'converted to array');\n * },\n * make_folder: function(callback) {\n * console.log('in make_folder');\n * // async code to create a directory to store a file in\n * // this is run at the same time as getting the data\n * callback(null, 'folder');\n * },\n * write_file: ['get_data', 'make_folder', function(results, callback) {\n * // once there is some data and the directory exists,\n * // write the data to a file in the directory\n * callback(null, 'filename');\n * }],\n * email_link: ['write_file', function(results, callback) {\n * // once the file is written let's email a link to it...\n * callback(null, {'file':results.write_file, 'email':'user@example.com'});\n * }]\n * }).then(results => {\n * console.log('results = ', results);\n * // results = {\n * // get_data: ['data', 'converted to array']\n * // make_folder; 'folder',\n * // write_file: 'filename'\n * // email_link: { file: 'filename', email: 'user@example.com' }\n * // }\n * }).catch(err => {\n * console.log('err = ', err);\n * });\n *\n * //Using async/await\n * async () => {\n * try {\n * let results = await async.auto({\n * get_data: function(callback) {\n * // async code to get some data\n * callback(null, 'data', 'converted to array');\n * },\n * make_folder: function(callback) {\n * // async code to create a directory to store a file in\n * // this is run at the same time as getting the data\n * callback(null, 'folder');\n * },\n * write_file: ['get_data', 'make_folder', function(results, callback) {\n * // once there is some data and the directory exists,\n * // write the data to a file in the directory\n * callback(null, 'filename');\n * }],\n * email_link: ['write_file', function(results, callback) {\n * // once the file is written let's email a link to it...\n * callback(null, {'file':results.write_file, 'email':'user@example.com'});\n * }]\n * });\n * console.log('results = ', results);\n * // results = {\n * // get_data: ['data', 'converted to array']\n * // make_folder; 'folder',\n * // write_file: 'filename'\n * // email_link: { file: 'filename', email: 'user@example.com' }\n * // }\n * }\n * catch (err) {\n * console.log(err);\n * }\n * }\n *\n */\n function auto(tasks, concurrency, callback) {\n if (typeof concurrency !== 'number') {\n // concurrency is optional, shift the args.\n callback = concurrency;\n concurrency = null;\n }\n callback = once(callback || promiseCallback());\n var numTasks = Object.keys(tasks).length;\n if (!numTasks) {\n return callback(null);\n }\n if (!concurrency) {\n concurrency = numTasks;\n }\n\n var results = {};\n var runningTasks = 0;\n var canceled = false;\n var hasError = false;\n\n var listeners = Object.create(null);\n\n var readyTasks = [];\n\n // for cycle detection:\n var readyToCheck = []; // tasks that have been identified as reachable\n // without the possibility of returning to an ancestor task\n var uncheckedDependencies = {};\n\n Object.keys(tasks).forEach(key => {\n var task = tasks[key];\n if (!Array.isArray(task)) {\n // no dependencies\n enqueueTask(key, [task]);\n readyToCheck.push(key);\n return;\n }\n\n var dependencies = task.slice(0, task.length - 1);\n var remainingDependencies = dependencies.length;\n if (remainingDependencies === 0) {\n enqueueTask(key, task);\n readyToCheck.push(key);\n return;\n }\n uncheckedDependencies[key] = remainingDependencies;\n\n dependencies.forEach(dependencyName => {\n if (!tasks[dependencyName]) {\n throw new Error('async.auto task `' + key +\n '` has a non-existent dependency `' +\n dependencyName + '` in ' +\n dependencies.join(', '));\n }\n addListener(dependencyName, () => {\n remainingDependencies--;\n if (remainingDependencies === 0) {\n enqueueTask(key, task);\n }\n });\n });\n });\n\n checkForDeadlocks();\n processQueue();\n\n function enqueueTask(key, task) {\n readyTasks.push(() => runTask(key, task));\n }\n\n function processQueue() {\n if (canceled) return\n if (readyTasks.length === 0 && runningTasks === 0) {\n return callback(null, results);\n }\n while(readyTasks.length && runningTasks < concurrency) {\n var run = readyTasks.shift();\n run();\n }\n\n }\n\n function addListener(taskName, fn) {\n var taskListeners = listeners[taskName];\n if (!taskListeners) {\n taskListeners = listeners[taskName] = [];\n }\n\n taskListeners.push(fn);\n }\n\n function taskComplete(taskName) {\n var taskListeners = listeners[taskName] || [];\n taskListeners.forEach(fn => fn());\n processQueue();\n }\n\n\n function runTask(key, task) {\n if (hasError) return;\n\n var taskCallback = onlyOnce((err, ...result) => {\n runningTasks--;\n if (err === false) {\n canceled = true;\n return\n }\n if (result.length < 2) {\n [result] = result;\n }\n if (err) {\n var safeResults = {};\n Object.keys(results).forEach(rkey => {\n safeResults[rkey] = results[rkey];\n });\n safeResults[key] = result;\n hasError = true;\n listeners = Object.create(null);\n if (canceled) return\n callback(err, safeResults);\n } else {\n results[key] = result;\n taskComplete(key);\n }\n });\n\n runningTasks++;\n var taskFn = wrapAsync(task[task.length - 1]);\n if (task.length > 1) {\n taskFn(results, taskCallback);\n } else {\n taskFn(taskCallback);\n }\n }\n\n function checkForDeadlocks() {\n // Kahn's algorithm\n // https://en.wikipedia.org/wiki/Topological_sorting#Kahn.27s_algorithm\n // http://connalle.blogspot.com/2013/10/topological-sortingkahn-algorithm.html\n var currentTask;\n var counter = 0;\n while (readyToCheck.length) {\n currentTask = readyToCheck.pop();\n counter++;\n getDependents(currentTask).forEach(dependent => {\n if (--uncheckedDependencies[dependent] === 0) {\n readyToCheck.push(dependent);\n }\n });\n }\n\n if (counter !== numTasks) {\n throw new Error(\n 'async.auto cannot execute tasks due to a recursive dependency'\n );\n }\n }\n\n function getDependents(taskName) {\n var result = [];\n Object.keys(tasks).forEach(key => {\n const task = tasks[key];\n if (Array.isArray(task) && task.indexOf(taskName) >= 0) {\n result.push(key);\n }\n });\n return result;\n }\n\n return callback[PROMISE_SYMBOL]\n }\n\n var FN_ARGS = /^(?:async\\s)?(?:function)?\\s*(?:\\w+\\s*)?\\(([^)]+)\\)(?:\\s*{)/;\n var ARROW_FN_ARGS = /^(?:async\\s)?\\s*(?:\\(\\s*)?((?:[^)=\\s]\\s*)*)(?:\\)\\s*)?=>/;\n var FN_ARG_SPLIT = /,/;\n var FN_ARG = /(=.+)?(\\s*)$/;\n\n function stripComments(string) {\n let stripped = '';\n let index = 0;\n let endBlockComment = string.indexOf('*/');\n while (index < string.length) {\n if (string[index] === '/' && string[index+1] === '/') {\n // inline comment\n let endIndex = string.indexOf('\\n', index);\n index = (endIndex === -1) ? string.length : endIndex;\n } else if ((endBlockComment !== -1) && (string[index] === '/') && (string[index+1] === '*')) {\n // block comment\n let endIndex = string.indexOf('*/', index);\n if (endIndex !== -1) {\n index = endIndex + 2;\n endBlockComment = string.indexOf('*/', index);\n } else {\n stripped += string[index];\n index++;\n }\n } else {\n stripped += string[index];\n index++;\n }\n }\n return stripped;\n }\n\n function parseParams(func) {\n const src = stripComments(func.toString());\n let match = src.match(FN_ARGS);\n if (!match) {\n match = src.match(ARROW_FN_ARGS);\n }\n if (!match) throw new Error('could not parse args in autoInject\\nSource:\\n' + src)\n let [, args] = match;\n return args\n .replace(/\\s/g, '')\n .split(FN_ARG_SPLIT)\n .map((arg) => arg.replace(FN_ARG, '').trim());\n }\n\n /**\n * A dependency-injected version of the [async.auto]{@link module:ControlFlow.auto} function. Dependent\n * tasks are specified as parameters to the function, after the usual callback\n * parameter, with the parameter names matching the names of the tasks it\n * depends on. This can provide even more readable task graphs which can be\n * easier to maintain.\n *\n * If a final callback is specified, the task results are similarly injected,\n * specified as named parameters after the initial error parameter.\n *\n * The autoInject function is purely syntactic sugar and its semantics are\n * otherwise equivalent to [async.auto]{@link module:ControlFlow.auto}.\n *\n * @name autoInject\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @see [async.auto]{@link module:ControlFlow.auto}\n * @category Control Flow\n * @param {Object} tasks - An object, each of whose properties is an {@link AsyncFunction} of\n * the form 'func([dependencies...], callback). The object's key of a property\n * serves as the name of the task defined by that property, i.e. can be used\n * when specifying requirements for other tasks.\n * * The `callback` parameter is a `callback(err, result)` which must be called\n * when finished, passing an `error` (which can be `null`) and the result of\n * the function's execution. The remaining parameters name other tasks on\n * which the task is dependent, and the results from those tasks are the\n * arguments of those parameters.\n * @param {Function} [callback] - An optional callback which is called when all\n * the tasks have been completed. It receives the `err` argument if any `tasks`\n * pass an error to their callback, and a `results` object with any completed\n * task results, similar to `auto`.\n * @returns {Promise} a promise, if no callback is passed\n * @example\n *\n * // The example from `auto` can be rewritten as follows:\n * async.autoInject({\n * get_data: function(callback) {\n * // async code to get some data\n * callback(null, 'data', 'converted to array');\n * },\n * make_folder: function(callback) {\n * // async code to create a directory to store a file in\n * // this is run at the same time as getting the data\n * callback(null, 'folder');\n * },\n * write_file: function(get_data, make_folder, callback) {\n * // once there is some data and the directory exists,\n * // write the data to a file in the directory\n * callback(null, 'filename');\n * },\n * email_link: function(write_file, callback) {\n * // once the file is written let's email a link to it...\n * // write_file contains the filename returned by write_file.\n * callback(null, {'file':write_file, 'email':'user@example.com'});\n * }\n * }, function(err, results) {\n * console.log('err = ', err);\n * console.log('email_link = ', results.email_link);\n * });\n *\n * // If you are using a JS minifier that mangles parameter names, `autoInject`\n * // will not work with plain functions, since the parameter names will be\n * // collapsed to a single letter identifier. To work around this, you can\n * // explicitly specify the names of the parameters your task function needs\n * // in an array, similar to Angular.js dependency injection.\n *\n * // This still has an advantage over plain `auto`, since the results a task\n * // depends on are still spread into arguments.\n * async.autoInject({\n * //...\n * write_file: ['get_data', 'make_folder', function(get_data, make_folder, callback) {\n * callback(null, 'filename');\n * }],\n * email_link: ['write_file', function(write_file, callback) {\n * callback(null, {'file':write_file, 'email':'user@example.com'});\n * }]\n * //...\n * }, function(err, results) {\n * console.log('err = ', err);\n * console.log('email_link = ', results.email_link);\n * });\n */\n function autoInject(tasks, callback) {\n var newTasks = {};\n\n Object.keys(tasks).forEach(key => {\n var taskFn = tasks[key];\n var params;\n var fnIsAsync = isAsync(taskFn);\n var hasNoDeps =\n (!fnIsAsync && taskFn.length === 1) ||\n (fnIsAsync && taskFn.length === 0);\n\n if (Array.isArray(taskFn)) {\n params = [...taskFn];\n taskFn = params.pop();\n\n newTasks[key] = params.concat(params.length > 0 ? newTask : taskFn);\n } else if (hasNoDeps) {\n // no dependencies, use the function as-is\n newTasks[key] = taskFn;\n } else {\n params = parseParams(taskFn);\n if ((taskFn.length === 0 && !fnIsAsync) && params.length === 0) {\n throw new Error(\"autoInject task functions require explicit parameters.\");\n }\n\n // remove callback param\n if (!fnIsAsync) params.pop();\n\n newTasks[key] = params.concat(newTask);\n }\n\n function newTask(results, taskCb) {\n var newArgs = params.map(name => results[name]);\n newArgs.push(taskCb);\n wrapAsync(taskFn)(...newArgs);\n }\n });\n\n return auto(newTasks, callback);\n }\n\n // Simple doubly linked list (https://en.wikipedia.org/wiki/Doubly_linked_list) implementation\n // used for queues. This implementation assumes that the node provided by the user can be modified\n // to adjust the next and last properties. We implement only the minimal functionality\n // for queue support.\n class DLL {\n constructor() {\n this.head = this.tail = null;\n this.length = 0;\n }\n\n removeLink(node) {\n if (node.prev) node.prev.next = node.next;\n else this.head = node.next;\n if (node.next) node.next.prev = node.prev;\n else this.tail = node.prev;\n\n node.prev = node.next = null;\n this.length -= 1;\n return node;\n }\n\n empty () {\n while(this.head) this.shift();\n return this;\n }\n\n insertAfter(node, newNode) {\n newNode.prev = node;\n newNode.next = node.next;\n if (node.next) node.next.prev = newNode;\n else this.tail = newNode;\n node.next = newNode;\n this.length += 1;\n }\n\n insertBefore(node, newNode) {\n newNode.prev = node.prev;\n newNode.next = node;\n if (node.prev) node.prev.next = newNode;\n else this.head = newNode;\n node.prev = newNode;\n this.length += 1;\n }\n\n unshift(node) {\n if (this.head) this.insertBefore(this.head, node);\n else setInitial(this, node);\n }\n\n push(node) {\n if (this.tail) this.insertAfter(this.tail, node);\n else setInitial(this, node);\n }\n\n shift() {\n return this.head && this.removeLink(this.head);\n }\n\n pop() {\n return this.tail && this.removeLink(this.tail);\n }\n\n toArray() {\n return [...this]\n }\n\n *[Symbol.iterator] () {\n var cur = this.head;\n while (cur) {\n yield cur.data;\n cur = cur.next;\n }\n }\n\n remove (testFn) {\n var curr = this.head;\n while(curr) {\n var {next} = curr;\n if (testFn(curr)) {\n this.removeLink(curr);\n }\n curr = next;\n }\n return this;\n }\n }\n\n function setInitial(dll, node) {\n dll.length = 1;\n dll.head = dll.tail = node;\n }\n\n function queue$1(worker, concurrency, payload) {\n if (concurrency == null) {\n concurrency = 1;\n }\n else if(concurrency === 0) {\n throw new RangeError('Concurrency must not be zero');\n }\n\n var _worker = wrapAsync(worker);\n var numRunning = 0;\n var workersList = [];\n const events = {\n error: [],\n drain: [],\n saturated: [],\n unsaturated: [],\n empty: []\n };\n\n function on (event, handler) {\n events[event].push(handler);\n }\n\n function once (event, handler) {\n const handleAndRemove = (...args) => {\n off(event, handleAndRemove);\n handler(...args);\n };\n events[event].push(handleAndRemove);\n }\n\n function off (event, handler) {\n if (!event) return Object.keys(events).forEach(ev => events[ev] = [])\n if (!handler) return events[event] = []\n events[event] = events[event].filter(ev => ev !== handler);\n }\n\n function trigger (event, ...args) {\n events[event].forEach(handler => handler(...args));\n }\n\n var processingScheduled = false;\n function _insert(data, insertAtFront, rejectOnError, callback) {\n if (callback != null && typeof callback !== 'function') {\n throw new Error('task callback must be a function');\n }\n q.started = true;\n\n var res, rej;\n function promiseCallback (err, ...args) {\n // we don't care about the error, let the global error handler\n // deal with it\n if (err) return rejectOnError ? rej(err) : res()\n if (args.length <= 1) return res(args[0])\n res(args);\n }\n\n var item = q._createTaskItem(\n data,\n rejectOnError ? promiseCallback :\n (callback || promiseCallback)\n );\n\n if (insertAtFront) {\n q._tasks.unshift(item);\n } else {\n q._tasks.push(item);\n }\n\n if (!processingScheduled) {\n processingScheduled = true;\n setImmediate$1(() => {\n processingScheduled = false;\n q.process();\n });\n }\n\n if (rejectOnError || !callback) {\n return new Promise((resolve, reject) => {\n res = resolve;\n rej = reject;\n })\n }\n }\n\n function _createCB(tasks) {\n return function (err, ...args) {\n numRunning -= 1;\n\n for (var i = 0, l = tasks.length; i < l; i++) {\n var task = tasks[i];\n\n var index = workersList.indexOf(task);\n if (index === 0) {\n workersList.shift();\n } else if (index > 0) {\n workersList.splice(index, 1);\n }\n\n task.callback(err, ...args);\n\n if (err != null) {\n trigger('error', err, task.data);\n }\n }\n\n if (numRunning <= (q.concurrency - q.buffer) ) {\n trigger('unsaturated');\n }\n\n if (q.idle()) {\n trigger('drain');\n }\n q.process();\n };\n }\n\n function _maybeDrain(data) {\n if (data.length === 0 && q.idle()) {\n // call drain immediately if there are no tasks\n setImmediate$1(() => trigger('drain'));\n return true\n }\n return false\n }\n\n const eventMethod = (name) => (handler) => {\n if (!handler) {\n return new Promise((resolve, reject) => {\n once(name, (err, data) => {\n if (err) return reject(err)\n resolve(data);\n });\n })\n }\n off(name);\n on(name, handler);\n\n };\n\n var isProcessing = false;\n var q = {\n _tasks: new DLL(),\n _createTaskItem (data, callback) {\n return {\n data,\n callback\n };\n },\n *[Symbol.iterator] () {\n yield* q._tasks[Symbol.iterator]();\n },\n concurrency,\n payload,\n buffer: concurrency / 4,\n started: false,\n paused: false,\n push (data, callback) {\n if (Array.isArray(data)) {\n if (_maybeDrain(data)) return\n return data.map(datum => _insert(datum, false, false, callback))\n }\n return _insert(data, false, false, callback);\n },\n pushAsync (data, callback) {\n if (Array.isArray(data)) {\n if (_maybeDrain(data)) return\n return data.map(datum => _insert(datum, false, true, callback))\n }\n return _insert(data, false, true, callback);\n },\n kill () {\n off();\n q._tasks.empty();\n },\n unshift (data, callback) {\n if (Array.isArray(data)) {\n if (_maybeDrain(data)) return\n return data.map(datum => _insert(datum, true, false, callback))\n }\n return _insert(data, true, false, callback);\n },\n unshiftAsync (data, callback) {\n if (Array.isArray(data)) {\n if (_maybeDrain(data)) return\n return data.map(datum => _insert(datum, true, true, callback))\n }\n return _insert(data, true, true, callback);\n },\n remove (testFn) {\n q._tasks.remove(testFn);\n },\n process () {\n // Avoid trying to start too many processing operations. This can occur\n // when callbacks resolve synchronously (#1267).\n if (isProcessing) {\n return;\n }\n isProcessing = true;\n while(!q.paused && numRunning < q.concurrency && q._tasks.length){\n var tasks = [], data = [];\n var l = q._tasks.length;\n if (q.payload) l = Math.min(l, q.payload);\n for (var i = 0; i < l; i++) {\n var node = q._tasks.shift();\n tasks.push(node);\n workersList.push(node);\n data.push(node.data);\n }\n\n numRunning += 1;\n\n if (q._tasks.length === 0) {\n trigger('empty');\n }\n\n if (numRunning === q.concurrency) {\n trigger('saturated');\n }\n\n var cb = onlyOnce(_createCB(tasks));\n _worker(data, cb);\n }\n isProcessing = false;\n },\n length () {\n return q._tasks.length;\n },\n running () {\n return numRunning;\n },\n workersList () {\n return workersList;\n },\n idle() {\n return q._tasks.length + numRunning === 0;\n },\n pause () {\n q.paused = true;\n },\n resume () {\n if (q.paused === false) { return; }\n q.paused = false;\n setImmediate$1(q.process);\n }\n };\n // define these as fixed properties, so people get useful errors when updating\n Object.defineProperties(q, {\n saturated: {\n writable: false,\n value: eventMethod('saturated')\n },\n unsaturated: {\n writable: false,\n value: eventMethod('unsaturated')\n },\n empty: {\n writable: false,\n value: eventMethod('empty')\n },\n drain: {\n writable: false,\n value: eventMethod('drain')\n },\n error: {\n writable: false,\n value: eventMethod('error')\n },\n });\n return q;\n }\n\n /**\n * Creates a `cargo` object with the specified payload. Tasks added to the\n * cargo will be processed altogether (up to the `payload` limit). If the\n * `worker` is in progress, the task is queued until it becomes available. Once\n * the `worker` has completed some tasks, each callback of those tasks is\n * called. Check out [these](https://camo.githubusercontent.com/6bbd36f4cf5b35a0f11a96dcd2e97711ffc2fb37/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f313637363837312f36383130382f62626330636662302d356632392d313165322d393734662d3333393763363464633835382e676966) [animations](https://camo.githubusercontent.com/f4810e00e1c5f5f8addbe3e9f49064fd5d102699/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f313637363837312f36383130312f38346339323036362d356632392d313165322d383134662d3964336430323431336266642e676966)\n * for how `cargo` and `queue` work.\n *\n * While [`queue`]{@link module:ControlFlow.queue} passes only one task to one of a group of workers\n * at a time, cargo passes an array of tasks to a single worker, repeating\n * when the worker is finished.\n *\n * @name cargo\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @see [async.queue]{@link module:ControlFlow.queue}\n * @category Control Flow\n * @param {AsyncFunction} worker - An asynchronous function for processing an array\n * of queued tasks. Invoked with `(tasks, callback)`.\n * @param {number} [payload=Infinity] - An optional `integer` for determining\n * how many tasks should be processed per round; if omitted, the default is\n * unlimited.\n * @returns {module:ControlFlow.QueueObject} A cargo object to manage the tasks. Callbacks can\n * attached as certain properties to listen for specific events during the\n * lifecycle of the cargo and inner queue.\n * @example\n *\n * // create a cargo object with payload 2\n * var cargo = async.cargo(function(tasks, callback) {\n * for (var i=0; i<tasks.length; i++) {\n * console.log('hello ' + tasks[i].name);\n * }\n * callback();\n * }, 2);\n *\n * // add some items\n * cargo.push({name: 'foo'}, function(err) {\n * console.log('finished processing foo');\n * });\n * cargo.push({name: 'bar'}, function(err) {\n * console.log('finished processing bar');\n * });\n * await cargo.push({name: 'baz'});\n * console.log('finished processing baz');\n */\n function cargo$1(worker, payload) {\n return queue$1(worker, 1, payload);\n }\n\n /**\n * Creates a `cargoQueue` object with the specified payload. Tasks added to the\n * cargoQueue will be processed together (up to the `payload` limit) in `concurrency` parallel workers.\n * If the all `workers` are in progress, the task is queued until one becomes available. Once\n * a `worker` has completed some tasks, each callback of those tasks is\n * called. Check out [these](https://camo.githubusercontent.com/6bbd36f4cf5b35a0f11a96dcd2e97711ffc2fb37/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f313637363837312f36383130382f62626330636662302d356632392d313165322d393734662d3333393763363464633835382e676966) [animations](https://camo.githubusercontent.com/f4810e00e1c5f5f8addbe3e9f49064fd5d102699/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f313637363837312f36383130312f38346339323036362d356632392d313165322d383134662d3964336430323431336266642e676966)\n * for how `cargo` and `queue` work.\n *\n * While [`queue`]{@link module:ControlFlow.queue} passes only one task to one of a group of workers\n * at a time, and [`cargo`]{@link module:ControlFlow.cargo} passes an array of tasks to a single worker,\n * the cargoQueue passes an array of tasks to multiple parallel workers.\n *\n * @name cargoQueue\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @see [async.queue]{@link module:ControlFlow.queue}\n * @see [async.cargo]{@link module:ControlFLow.cargo}\n * @category Control Flow\n * @param {AsyncFunction} worker - An asynchronous function for processing an array\n * of queued tasks. Invoked with `(tasks, callback)`.\n * @param {number} [concurrency=1] - An `integer` for determining how many\n * `worker` functions should be run in parallel. If omitted, the concurrency\n * defaults to `1`. If the concurrency is `0`, an error is thrown.\n * @param {number} [payload=Infinity] - An optional `integer` for determining\n * how many tasks should be processed per round; if omitted, the default is\n * unlimited.\n * @returns {module:ControlFlow.QueueObject} A cargoQueue object to manage the tasks. Callbacks can\n * attached as certain properties to listen for specific events during the\n * lifecycle of the cargoQueue and inner queue.\n * @example\n *\n * // create a cargoQueue object with payload 2 and concurrency 2\n * var cargoQueue = async.cargoQueue(function(tasks, callback) {\n * for (var i=0; i<tasks.length; i++) {\n * console.log('hello ' + tasks[i].name);\n * }\n * callback();\n * }, 2, 2);\n *\n * // add some items\n * cargoQueue.push({name: 'foo'}, function(err) {\n * console.log('finished processing foo');\n * });\n * cargoQueue.push({name: 'bar'}, function(err) {\n * console.log('finished processing bar');\n * });\n * cargoQueue.push({name: 'baz'}, function(err) {\n * console.log('finished processing baz');\n * });\n * cargoQueue.push({name: 'boo'}, function(err) {\n * console.log('finished processing boo');\n * });\n */\n function cargo(worker, concurrency, payload) {\n return queue$1(worker, concurrency, payload);\n }\n\n /**\n * Reduces `coll` into a single value using an async `iteratee` to return each\n * successive step. `memo` is the initial state of the reduction. This function\n * only operates in series.\n *\n * For performance reasons, it may make sense to split a call to this function\n * into a parallel map, and then use the normal `Array.prototype.reduce` on the\n * results. This function is for situations where each step in the reduction\n * needs to be async; if you can get the data before reducing it, then it's\n * probably a good idea to do so.\n *\n * @name reduce\n * @static\n * @memberOf module:Collections\n * @method\n * @alias inject\n * @alias foldl\n * @category Collection\n * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n * @param {*} memo - The initial state of the reduction.\n * @param {AsyncFunction} iteratee - A function applied to each item in the\n * array to produce the next step in the reduction.\n * The `iteratee` should complete with the next state of the reduction.\n * If the iteratee completes with an error, the reduction is stopped and the\n * main `callback` is immediately called with the error.\n * Invoked with (memo, item, callback).\n * @param {Function} [callback] - A callback which is called after all the\n * `iteratee` functions have finished. Result is the reduced value. Invoked with\n * (err, result).\n * @returns {Promise} a promise, if no callback is passed\n * @example\n *\n * // file1.txt is a file that is 1000 bytes in size\n * // file2.txt is a file that is 2000 bytes in size\n * // file3.txt is a file that is 3000 bytes in size\n * // file4.txt does not exist\n *\n * const fileList = ['file1.txt','file2.txt','file3.txt'];\n * const withMissingFileList = ['file1.txt','file2.txt','file3.txt', 'file4.txt'];\n *\n * // asynchronous function that computes the file size in bytes\n * // file size is added to the memoized value, then returned\n * function getFileSizeInBytes(memo, file, callback) {\n * fs.stat(file, function(err, stat) {\n * if (err) {\n * return callback(err);\n * }\n * callback(null, memo + stat.size);\n * });\n * }\n *\n * // Using callbacks\n * async.reduce(fileList, 0, getFileSizeInBytes, function(err, result) {\n * if (err) {\n * console.log(err);\n * } else {\n * console.log(result);\n * // 6000\n * // which is the sum of the file sizes of the three files\n * }\n * });\n *\n * // Error Handling\n * async.reduce(withMissingFileList, 0, getFileSizeInBytes, function(err, result) {\n * if (err) {\n * console.log(err);\n * // [ Error: ENOENT: no such file or directory ]\n * } else {\n * console.log(result);\n * }\n * });\n *\n * // Using Promises\n * async.reduce(fileList, 0, getFileSizeInBytes)\n * .then( result => {\n * console.log(result);\n * // 6000\n * // which is the sum of the file sizes of the three files\n * }).catch( err => {\n * console.log(err);\n * });\n *\n * // Error Handling\n * async.reduce(withMissingFileList, 0, getFileSizeInBytes)\n * .then( result => {\n * console.log(result);\n * }).catch( err => {\n * console.log(err);\n * // [ Error: ENOENT: no such file or directory ]\n * });\n *\n * // Using async/await\n * async () => {\n * try {\n * let result = await async.reduce(fileList, 0, getFileSizeInBytes);\n * console.log(result);\n * // 6000\n * // which is the sum of the file sizes of the three files\n * }\n * catch (err) {\n * console.log(err);\n * }\n * }\n *\n * // Error Handling\n * async () => {\n * try {\n * let result = await async.reduce(withMissingFileList, 0, getFileSizeInBytes);\n * console.log(result);\n * }\n * catch (err) {\n * console.log(err);\n * // [ Error: ENOENT: no such file or directory ]\n * }\n * }\n *\n */\n function reduce(coll, memo, iteratee, callback) {\n callback = once(callback);\n var _iteratee = wrapAsync(iteratee);\n return eachOfSeries$1(coll, (x, i, iterCb) => {\n _iteratee(memo, x, (err, v) => {\n memo = v;\n iterCb(err);\n });\n }, err => callback(err, memo));\n }\n var reduce$1 = awaitify(reduce, 4);\n\n /**\n * Version of the compose function that is more natural to read. Each function\n * consumes the return value of the previous function. It is the equivalent of\n * [compose]{@link module:ControlFlow.compose} with the arguments reversed.\n *\n * Each function is executed with the `this` binding of the composed function.\n *\n * @name seq\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @see [async.compose]{@link module:ControlFlow.compose}\n * @category Control Flow\n * @param {...AsyncFunction} functions - the asynchronous functions to compose\n * @returns {Function} a function that composes the `functions` in order\n * @example\n *\n * // Requires lodash (or underscore), express3 and dresende's orm2.\n * // Part of an app, that fetches cats of the logged user.\n * // This example uses `seq` function to avoid overnesting and error\n * // handling clutter.\n * app.get('/cats', function(request, response) {\n * var User = request.models.User;\n * async.seq(\n * User.get.bind(User), // 'User.get' has signature (id, callback(err, data))\n * function(user, fn) {\n * user.getCats(fn); // 'getCats' has signature (callback(err, data))\n * }\n * )(req.session.user_id, function (err, cats) {\n * if (err) {\n * console.error(err);\n * response.json({ status: 'error', message: err.message });\n * } else {\n * response.json({ status: 'ok', message: 'Cats found', data: cats });\n * }\n * });\n * });\n */\n function seq(...functions) {\n var _functions = functions.map(wrapAsync);\n return function (...args) {\n var that = this;\n\n var cb = args[args.length - 1];\n if (typeof cb == 'function') {\n args.pop();\n } else {\n cb = promiseCallback();\n }\n\n reduce$1(_functions, args, (newargs, fn, iterCb) => {\n fn.apply(that, newargs.concat((err, ...nextargs) => {\n iterCb(err, nextargs);\n }));\n },\n (err, results) => cb(err, ...results));\n\n return cb[PROMISE_SYMBOL]\n };\n }\n\n /**\n * Creates a function which is a composition of the passed asynchronous\n * functions. Each function consumes the return value of the function that\n * follows. Composing functions `f()`, `g()`, and `h()` would produce the result\n * of `f(g(h()))`, only this version uses callbacks to obtain the return values.\n *\n * If the last argument to the composed function is not a function, a promise\n * is returned when you call it.\n *\n * Each function is executed with the `this` binding of the composed function.\n *\n * @name compose\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @category Control Flow\n * @param {...AsyncFunction} functions - the asynchronous functions to compose\n * @returns {Function} an asynchronous function that is the composed\n * asynchronous `functions`\n * @example\n *\n * function add1(n, callback) {\n * setTimeout(function () {\n * callback(null, n + 1);\n * }, 10);\n * }\n *\n * function mul3(n, callback) {\n * setTimeout(function () {\n * callback(null, n * 3);\n * }, 10);\n * }\n *\n * var add1mul3 = async.compose(mul3, add1);\n * add1mul3(4, function (err, result) {\n * // result now equals 15\n * });\n */\n function compose(...args) {\n return seq(...args.reverse());\n }\n\n /**\n * The same as [`map`]{@link module:Collections.map} but runs a maximum of `limit` async operations at a time.\n *\n * @name mapLimit\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.map]{@link module:Collections.map}\n * @category Collection\n * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n * @param {number} limit - The maximum number of async operations at a time.\n * @param {AsyncFunction} iteratee - An async function to apply to each item in\n * `coll`.\n * The iteratee should complete with the transformed item.\n * Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called when all `iteratee`\n * functions have finished, or an error occurs. Results is an array of the\n * transformed items from the `coll`. Invoked with (err, results).\n * @returns {Promise} a promise, if no callback is passed\n */\n function mapLimit (coll, limit, iteratee, callback) {\n return _asyncMap(eachOfLimit$2(limit), coll, iteratee, callback)\n }\n var mapLimit$1 = awaitify(mapLimit, 4);\n\n /**\n * The same as [`concat`]{@link module:Collections.concat} but runs a maximum of `limit` async operations at a time.\n *\n * @name concatLimit\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.concat]{@link module:Collections.concat}\n * @category Collection\n * @alias flatMapLimit\n * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n * @param {number} limit - The maximum number of async operations at a time.\n * @param {AsyncFunction} iteratee - A function to apply to each item in `coll`,\n * which should use an array as its result. Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called after all the\n * `iteratee` functions have finished, or an error occurs. Results is an array\n * containing the concatenated results of the `iteratee` function. Invoked with\n * (err, results).\n * @returns A Promise, if no callback is passed\n */\n function concatLimit(coll, limit, iteratee, callback) {\n var _iteratee = wrapAsync(iteratee);\n return mapLimit$1(coll, limit, (val, iterCb) => {\n _iteratee(val, (err, ...args) => {\n if (err) return iterCb(err);\n return iterCb(err, args);\n });\n }, (err, mapResults) => {\n var result = [];\n for (var i = 0; i < mapResults.length; i++) {\n if (mapResults[i]) {\n result = result.concat(...mapResults[i]);\n }\n }\n\n return callback(err, result);\n });\n }\n var concatLimit$1 = awaitify(concatLimit, 4);\n\n /**\n * Applies `iteratee` to each item in `coll`, concatenating the results. Returns\n * the concatenated list. The `iteratee`s are called in parallel, and the\n * results are concatenated as they return. The results array will be returned in\n * the original order of `coll` passed to the `iteratee` function.\n *\n * @name concat\n * @static\n * @memberOf module:Collections\n * @method\n * @category Collection\n * @alias flatMap\n * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n * @param {AsyncFunction} iteratee - A function to apply to each item in `coll`,\n * which should use an array as its result. Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called after all the\n * `iteratee` functions have finished, or an error occurs. Results is an array\n * containing the concatenated results of the `iteratee` function. Invoked with\n * (err, results).\n * @returns A Promise, if no callback is passed\n * @example\n *\n * // dir1 is a directory that contains file1.txt, file2.txt\n * // dir2 is a directory that contains file3.txt, file4.txt\n * // dir3 is a directory that contains file5.txt\n * // dir4 does not exist\n *\n * let directoryList = ['dir1','dir2','dir3'];\n * let withMissingDirectoryList = ['dir1','dir2','dir3', 'dir4'];\n *\n * // Using callbacks\n * async.concat(directoryList, fs.readdir, function(err, results) {\n * if (err) {\n * console.log(err);\n * } else {\n * console.log(results);\n * // [ 'file1.txt', 'file2.txt', 'file3.txt', 'file4.txt', file5.txt ]\n * }\n * });\n *\n * // Error Handling\n * async.concat(withMissingDirectoryList, fs.readdir, function(err, results) {\n * if (err) {\n * console.log(err);\n * // [ Error: ENOENT: no such file or directory ]\n * // since dir4 does not exist\n * } else {\n * console.log(results);\n * }\n * });\n *\n * // Using Promises\n * async.concat(directoryList, fs.readdir)\n * .then(results => {\n * console.log(results);\n * // [ 'file1.txt', 'file2.txt', 'file3.txt', 'file4.txt', file5.txt ]\n * }).catch(err => {\n * console.log(err);\n * });\n *\n * // Error Handling\n * async.concat(withMissingDirectoryList, fs.readdir)\n * .then(results => {\n * console.log(results);\n * }).catch(err => {\n * console.log(err);\n * // [ Error: ENOENT: no such file or directory ]\n * // since dir4 does not exist\n * });\n *\n * // Using async/await\n * async () => {\n * try {\n * let results = await async.concat(directoryList, fs.readdir);\n * console.log(results);\n * // [ 'file1.txt', 'file2.txt', 'file3.txt', 'file4.txt', file5.txt ]\n * } catch (err) {\n * console.log(err);\n * }\n * }\n *\n * // Error Handling\n * async () => {\n * try {\n * let results = await async.concat(withMissingDirectoryList, fs.readdir);\n * console.log(results);\n * } catch (err) {\n * console.log(err);\n * // [ Error: ENOENT: no such file or directory ]\n * // since dir4 does not exist\n * }\n * }\n *\n */\n function concat(coll, iteratee, callback) {\n return concatLimit$1(coll, Infinity, iteratee, callback)\n }\n var concat$1 = awaitify(concat, 3);\n\n /**\n * The same as [`concat`]{@link module:Collections.concat} but runs only a single async operation at a time.\n *\n * @name concatSeries\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.concat]{@link module:Collections.concat}\n * @category Collection\n * @alias flatMapSeries\n * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n * @param {AsyncFunction} iteratee - A function to apply to each item in `coll`.\n * The iteratee should complete with an array an array of results.\n * Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called after all the\n * `iteratee` functions have finished, or an error occurs. Results is an array\n * containing the concatenated results of the `iteratee` function. Invoked with\n * (err, results).\n * @returns A Promise, if no callback is passed\n */\n function concatSeries(coll, iteratee, callback) {\n return concatLimit$1(coll, 1, iteratee, callback)\n }\n var concatSeries$1 = awaitify(concatSeries, 3);\n\n /**\n * Returns a function that when called, calls-back with the values provided.\n * Useful as the first function in a [`waterfall`]{@link module:ControlFlow.waterfall}, or for plugging values in to\n * [`auto`]{@link module:ControlFlow.auto}.\n *\n * @name constant\n * @static\n * @memberOf module:Utils\n * @method\n * @category Util\n * @param {...*} arguments... - Any number of arguments to automatically invoke\n * callback with.\n * @returns {AsyncFunction} Returns a function that when invoked, automatically\n * invokes the callback with the previous given arguments.\n * @example\n *\n * async.waterfall([\n * async.constant(42),\n * function (value, next) {\n * // value === 42\n * },\n * //...\n * ], callback);\n *\n * async.waterfall([\n * async.constant(filename, \"utf8\"),\n * fs.readFile,\n * function (fileData, next) {\n * //...\n * }\n * //...\n * ], callback);\n *\n * async.auto({\n * hostname: async.constant(\"https://server.net/\"),\n * port: findFreePort,\n * launchServer: [\"hostname\", \"port\", function (options, cb) {\n * startServer(options, cb);\n * }],\n * //...\n * }, callback);\n */\n function constant$1(...args) {\n return function (...ignoredArgs/*, callback*/) {\n var callback = ignoredArgs.pop();\n return callback(null, ...args);\n };\n }\n\n function _createTester(check, getResult) {\n return (eachfn, arr, _iteratee, cb) => {\n var testPassed = false;\n var testResult;\n const iteratee = wrapAsync(_iteratee);\n eachfn(arr, (value, _, callback) => {\n iteratee(value, (err, result) => {\n if (err || err === false) return callback(err);\n\n if (check(result) && !testResult) {\n testPassed = true;\n testResult = getResult(true, value);\n return callback(null, breakLoop);\n }\n callback();\n });\n }, err => {\n if (err) return cb(err);\n cb(null, testPassed ? testResult : getResult(false));\n });\n };\n }\n\n /**\n * Returns the first value in `coll` that passes an async truth test. The\n * `iteratee` is applied in parallel, meaning the first iteratee to return\n * `true` will fire the detect `callback` with that result. That means the\n * result might not be the first item in the original `coll` (in terms of order)\n * that passes the test.\n\n * If order within the original `coll` is important, then look at\n * [`detectSeries`]{@link module:Collections.detectSeries}.\n *\n * @name detect\n * @static\n * @memberOf module:Collections\n * @method\n * @alias find\n * @category Collections\n * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n * @param {AsyncFunction} iteratee - A truth test to apply to each item in `coll`.\n * The iteratee must complete with a boolean value as its result.\n * Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called as soon as any\n * iteratee returns `true`, or after all the `iteratee` functions have finished.\n * Result will be the first item in the array that passes the truth test\n * (iteratee) or the value `undefined` if none passed. Invoked with\n * (err, result).\n * @returns {Promise} a promise, if a callback is omitted\n * @example\n *\n * // dir1 is a directory that contains file1.txt, file2.txt\n * // dir2 is a directory that contains file3.txt, file4.txt\n * // dir3 is a directory that contains file5.txt\n *\n * // asynchronous function that checks if a file exists\n * function fileExists(file, callback) {\n * fs.access(file, fs.constants.F_OK, (err) => {\n * callback(null, !err);\n * });\n * }\n *\n * async.detect(['file3.txt','file2.txt','dir1/file1.txt'], fileExists,\n * function(err, result) {\n * console.log(result);\n * // dir1/file1.txt\n * // result now equals the first file in the list that exists\n * }\n *);\n *\n * // Using Promises\n * async.detect(['file3.txt','file2.txt','dir1/file1.txt'], fileExists)\n * .then(result => {\n * console.log(result);\n * // dir1/file1.txt\n * // result now equals the first file in the list that exists\n * }).catch(err => {\n * console.log(err);\n * });\n *\n * // Using async/await\n * async () => {\n * try {\n * let result = await async.detect(['file3.txt','file2.txt','dir1/file1.txt'], fileExists);\n * console.log(result);\n * // dir1/file1.txt\n * // result now equals the file in the list that exists\n * }\n * catch (err) {\n * console.log(err);\n * }\n * }\n *\n */\n function detect(coll, iteratee, callback) {\n return _createTester(bool => bool, (res, item) => item)(eachOf$1, coll, iteratee, callback)\n }\n var detect$1 = awaitify(detect, 3);\n\n /**\n * The same as [`detect`]{@link module:Collections.detect} but runs a maximum of `limit` async operations at a\n * time.\n *\n * @name detectLimit\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.detect]{@link module:Collections.detect}\n * @alias findLimit\n * @category Collections\n * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n * @param {number} limit - The maximum number of async operations at a time.\n * @param {AsyncFunction} iteratee - A truth test to apply to each item in `coll`.\n * The iteratee must complete with a boolean value as its result.\n * Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called as soon as any\n * iteratee returns `true`, or after all the `iteratee` functions have finished.\n * Result will be the first item in the array that passes the truth test\n * (iteratee) or the value `undefined` if none passed. Invoked with\n * (err, result).\n * @returns {Promise} a promise, if a callback is omitted\n */\n function detectLimit(coll, limit, iteratee, callback) {\n return _createTester(bool => bool, (res, item) => item)(eachOfLimit$2(limit), coll, iteratee, callback)\n }\n var detectLimit$1 = awaitify(detectLimit, 4);\n\n /**\n * The same as [`detect`]{@link module:Collections.detect} but runs only a single async operation at a time.\n *\n * @name detectSeries\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.detect]{@link module:Collections.detect}\n * @alias findSeries\n * @category Collections\n * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n * @param {AsyncFunction} iteratee - A truth test to apply to each item in `coll`.\n * The iteratee must complete with a boolean value as its result.\n * Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called as soon as any\n * iteratee returns `true`, or after all the `iteratee` functions have finished.\n * Result will be the first item in the array that passes the truth test\n * (iteratee) or the value `undefined` if none passed. Invoked with\n * (err, result).\n * @returns {Promise} a promise, if a callback is omitted\n */\n function detectSeries(coll, iteratee, callback) {\n return _createTester(bool => bool, (res, item) => item)(eachOfLimit$2(1), coll, iteratee, callback)\n }\n\n var detectSeries$1 = awaitify(detectSeries, 3);\n\n function consoleFunc(name) {\n return (fn, ...args) => wrapAsync(fn)(...args, (err, ...resultArgs) => {\n /* istanbul ignore else */\n if (typeof console === 'object') {\n /* istanbul ignore else */\n if (err) {\n /* istanbul ignore else */\n if (console.error) {\n console.error(err);\n }\n } else if (console[name]) { /* istanbul ignore else */\n resultArgs.forEach(x => console[name](x));\n }\n }\n })\n }\n\n /**\n * Logs the result of an [`async` function]{@link AsyncFunction} to the\n * `console` using `console.dir` to display the properties of the resulting object.\n * Only works in Node.js or in browsers that support `console.dir` and\n * `console.error` (such as FF and Chrome).\n * If multiple arguments are returned from the async function,\n * `console.dir` is called on each argument in order.\n *\n * @name dir\n * @static\n * @memberOf module:Utils\n * @method\n * @category Util\n * @param {AsyncFunction} function - The function you want to eventually apply\n * all arguments to.\n * @param {...*} arguments... - Any number of arguments to apply to the function.\n * @example\n *\n * // in a module\n * var hello = function(name, callback) {\n * setTimeout(function() {\n * callback(null, {hello: name});\n * }, 1000);\n * };\n *\n * // in the node repl\n * node> async.dir(hello, 'world');\n * {hello: 'world'}\n */\n var dir = consoleFunc('dir');\n\n /**\n * The post-check version of [`whilst`]{@link module:ControlFlow.whilst}. To reflect the difference in\n * the order of operations, the arguments `test` and `iteratee` are switched.\n *\n * `doWhilst` is to `whilst` as `do while` is to `while` in plain JavaScript.\n *\n * @name doWhilst\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @see [async.whilst]{@link module:ControlFlow.whilst}\n * @category Control Flow\n * @param {AsyncFunction} iteratee - A function which is called each time `test`\n * passes. Invoked with (callback).\n * @param {AsyncFunction} test - asynchronous truth test to perform after each\n * execution of `iteratee`. Invoked with (...args, callback), where `...args` are the\n * non-error args from the previous callback of `iteratee`.\n * @param {Function} [callback] - A callback which is called after the test\n * function has failed and repeated execution of `iteratee` has stopped.\n * `callback` will be passed an error and any arguments passed to the final\n * `iteratee`'s callback. Invoked with (err, [results]);\n * @returns {Promise} a promise, if no callback is passed\n */\n function doWhilst(iteratee, test, callback) {\n callback = onlyOnce(callback);\n var _fn = wrapAsync(iteratee);\n var _test = wrapAsync(test);\n var results;\n\n function next(err, ...args) {\n if (err) return callback(err);\n if (err === false) return;\n results = args;\n _test(...args, check);\n }\n\n function check(err, truth) {\n if (err) return callback(err);\n if (err === false) return;\n if (!truth) return callback(null, ...results);\n _fn(next);\n }\n\n return check(null, true);\n }\n\n var doWhilst$1 = awaitify(doWhilst, 3);\n\n /**\n * Like ['doWhilst']{@link module:ControlFlow.doWhilst}, except the `test` is inverted. Note the\n * argument ordering differs from `until`.\n *\n * @name doUntil\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @see [async.doWhilst]{@link module:ControlFlow.doWhilst}\n * @category Control Flow\n * @param {AsyncFunction} iteratee - An async function which is called each time\n * `test` fails. Invoked with (callback).\n * @param {AsyncFunction} test - asynchronous truth test to perform after each\n * execution of `iteratee`. Invoked with (...args, callback), where `...args` are the\n * non-error args from the previous callback of `iteratee`\n * @param {Function} [callback] - A callback which is called after the test\n * function has passed and repeated execution of `iteratee` has stopped. `callback`\n * will be passed an error and any arguments passed to the final `iteratee`'s\n * callback. Invoked with (err, [results]);\n * @returns {Promise} a promise, if no callback is passed\n */\n function doUntil(iteratee, test, callback) {\n const _test = wrapAsync(test);\n return doWhilst$1(iteratee, (...args) => {\n const cb = args.pop();\n _test(...args, (err, truth) => cb (err, !truth));\n }, callback);\n }\n\n function _withoutIndex(iteratee) {\n return (value, index, callback) => iteratee(value, callback);\n }\n\n /**\n * Applies the function `iteratee` to each item in `coll`, in parallel.\n * The `iteratee` is called with an item from the list, and a callback for when\n * it has finished. If the `iteratee` passes an error to its `callback`, the\n * main `callback` (for the `each` function) is immediately called with the\n * error.\n *\n * Note, that since this function applies `iteratee` to each item in parallel,\n * there is no guarantee that the iteratee functions will complete in order.\n *\n * @name each\n * @static\n * @memberOf module:Collections\n * @method\n * @alias forEach\n * @category Collection\n * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n * @param {AsyncFunction} iteratee - An async function to apply to\n * each item in `coll`. Invoked with (item, callback).\n * The array index is not passed to the iteratee.\n * If you need the index, use `eachOf`.\n * @param {Function} [callback] - A callback which is called when all\n * `iteratee` functions have finished, or an error occurs. Invoked with (err).\n * @returns {Promise} a promise, if a callback is omitted\n * @example\n *\n * // dir1 is a directory that contains file1.txt, file2.txt\n * // dir2 is a directory that contains file3.txt, file4.txt\n * // dir3 is a directory that contains file5.txt\n * // dir4 does not exist\n *\n * const fileList = [ 'dir1/file2.txt', 'dir2/file3.txt', 'dir/file5.txt'];\n * const withMissingFileList = ['dir1/file1.txt', 'dir4/file2.txt'];\n *\n * // asynchronous function that deletes a file\n * const deleteFile = function(file, callback) {\n * fs.unlink(file, callback);\n * };\n *\n * // Using callbacks\n * async.each(fileList, deleteFile, function(err) {\n * if( err ) {\n * console.log(err);\n * } else {\n * console.log('All files have been deleted successfully');\n * }\n * });\n *\n * // Error Handling\n * async.each(withMissingFileList, deleteFile, function(err){\n * console.log(err);\n * // [ Error: ENOENT: no such file or directory ]\n * // since dir4/file2.txt does not exist\n * // dir1/file1.txt could have been deleted\n * });\n *\n * // Using Promises\n * async.each(fileList, deleteFile)\n * .then( () => {\n * console.log('All files have been deleted successfully');\n * }).catch( err => {\n * console.log(err);\n * });\n *\n * // Error Handling\n * async.each(fileList, deleteFile)\n * .then( () => {\n * console.log('All files have been deleted successfully');\n * }).catch( err => {\n * console.log(err);\n * // [ Error: ENOENT: no such file or directory ]\n * // since dir4/file2.txt does not exist\n * // dir1/file1.txt could have been deleted\n * });\n *\n * // Using async/await\n * async () => {\n * try {\n * await async.each(files, deleteFile);\n * }\n * catch (err) {\n * console.log(err);\n * }\n * }\n *\n * // Error Handling\n * async () => {\n * try {\n * await async.each(withMissingFileList, deleteFile);\n * }\n * catch (err) {\n * console.log(err);\n * // [ Error: ENOENT: no such file or directory ]\n * // since dir4/file2.txt does not exist\n * // dir1/file1.txt could have been deleted\n * }\n * }\n *\n */\n function eachLimit$2(coll, iteratee, callback) {\n return eachOf$1(coll, _withoutIndex(wrapAsync(iteratee)), callback);\n }\n\n var each = awaitify(eachLimit$2, 3);\n\n /**\n * The same as [`each`]{@link module:Collections.each} but runs a maximum of `limit` async operations at a time.\n *\n * @name eachLimit\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.each]{@link module:Collections.each}\n * @alias forEachLimit\n * @category Collection\n * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n * @param {number} limit - The maximum number of async operations at a time.\n * @param {AsyncFunction} iteratee - An async function to apply to each item in\n * `coll`.\n * The array index is not passed to the iteratee.\n * If you need the index, use `eachOfLimit`.\n * Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called when all\n * `iteratee` functions have finished, or an error occurs. Invoked with (err).\n * @returns {Promise} a promise, if a callback is omitted\n */\n function eachLimit(coll, limit, iteratee, callback) {\n return eachOfLimit$2(limit)(coll, _withoutIndex(wrapAsync(iteratee)), callback);\n }\n var eachLimit$1 = awaitify(eachLimit, 4);\n\n /**\n * The same as [`each`]{@link module:Collections.each} but runs only a single async operation at a time.\n *\n * Note, that unlike [`each`]{@link module:Collections.each}, this function applies iteratee to each item\n * in series and therefore the iteratee functions will complete in order.\n\n * @name eachSeries\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.each]{@link module:Collections.each}\n * @alias forEachSeries\n * @category Collection\n * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n * @param {AsyncFunction} iteratee - An async function to apply to each\n * item in `coll`.\n * The array index is not passed to the iteratee.\n * If you need the index, use `eachOfSeries`.\n * Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called when all\n * `iteratee` functions have finished, or an error occurs. Invoked with (err).\n * @returns {Promise} a promise, if a callback is omitted\n */\n function eachSeries(coll, iteratee, callback) {\n return eachLimit$1(coll, 1, iteratee, callback)\n }\n var eachSeries$1 = awaitify(eachSeries, 3);\n\n /**\n * Wrap an async function and ensure it calls its callback on a later tick of\n * the event loop. If the function already calls its callback on a next tick,\n * no extra deferral is added. This is useful for preventing stack overflows\n * (`RangeError: Maximum call stack size exceeded`) and generally keeping\n * [Zalgo](http://blog.izs.me/post/59142742143/designing-apis-for-asynchrony)\n * contained. ES2017 `async` functions are returned as-is -- they are immune\n * to Zalgo's corrupting influences, as they always resolve on a later tick.\n *\n * @name ensureAsync\n * @static\n * @memberOf module:Utils\n * @method\n * @category Util\n * @param {AsyncFunction} fn - an async function, one that expects a node-style\n * callback as its last argument.\n * @returns {AsyncFunction} Returns a wrapped function with the exact same call\n * signature as the function passed in.\n * @example\n *\n * function sometimesAsync(arg, callback) {\n * if (cache[arg]) {\n * return callback(null, cache[arg]); // this would be synchronous!!\n * } else {\n * doSomeIO(arg, callback); // this IO would be asynchronous\n * }\n * }\n *\n * // this has a risk of stack overflows if many results are cached in a row\n * async.mapSeries(args, sometimesAsync, done);\n *\n * // this will defer sometimesAsync's callback if necessary,\n * // preventing stack overflows\n * async.mapSeries(args, async.ensureAsync(sometimesAsync), done);\n */\n function ensureAsync(fn) {\n if (isAsync(fn)) return fn;\n return function (...args/*, callback*/) {\n var callback = args.pop();\n var sync = true;\n args.push((...innerArgs) => {\n if (sync) {\n setImmediate$1(() => callback(...innerArgs));\n } else {\n callback(...innerArgs);\n }\n });\n fn.apply(this, args);\n sync = false;\n };\n }\n\n /**\n * Returns `true` if every element in `coll` satisfies an async test. If any\n * iteratee call returns `false`, the main `callback` is immediately called.\n *\n * @name every\n * @static\n * @memberOf module:Collections\n * @method\n * @alias all\n * @category Collection\n * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n * @param {AsyncFunction} iteratee - An async truth test to apply to each item\n * in the collection in parallel.\n * The iteratee must complete with a boolean result value.\n * Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called after all the\n * `iteratee` functions have finished. Result will be either `true` or `false`\n * depending on the values of the async tests. Invoked with (err, result).\n * @returns {Promise} a promise, if no callback provided\n * @example\n *\n * // dir1 is a directory that contains file1.txt, file2.txt\n * // dir2 is a directory that contains file3.txt, file4.txt\n * // dir3 is a directory that contains file5.txt\n * // dir4 does not exist\n *\n * const fileList = ['dir1/file1.txt','dir2/file3.txt','dir3/file5.txt'];\n * const withMissingFileList = ['file1.txt','file2.txt','file4.txt'];\n *\n * // asynchronous function that checks if a file exists\n * function fileExists(file, callback) {\n * fs.access(file, fs.constants.F_OK, (err) => {\n * callback(null, !err);\n * });\n * }\n *\n * // Using callbacks\n * async.every(fileList, fileExists, function(err, result) {\n * console.log(result);\n * // true\n * // result is true since every file exists\n * });\n *\n * async.every(withMissingFileList, fileExists, function(err, result) {\n * console.log(result);\n * // false\n * // result is false since NOT every file exists\n * });\n *\n * // Using Promises\n * async.every(fileList, fileExists)\n * .then( result => {\n * console.log(result);\n * // true\n * // result is true since every file exists\n * }).catch( err => {\n * console.log(err);\n * });\n *\n * async.every(withMissingFileList, fileExists)\n * .then( result => {\n * console.log(result);\n * // false\n * // result is false since NOT every file exists\n * }).catch( err => {\n * console.log(err);\n * });\n *\n * // Using async/await\n * async () => {\n * try {\n * let result = await async.every(fileList, fileExists);\n * console.log(result);\n * // true\n * // result is true since every file exists\n * }\n * catch (err) {\n * console.log(err);\n * }\n * }\n *\n * async () => {\n * try {\n * let result = await async.every(withMissingFileList, fileExists);\n * console.log(result);\n * // false\n * // result is false since NOT every file exists\n * }\n * catch (err) {\n * console.log(err);\n * }\n * }\n *\n */\n function every(coll, iteratee, callback) {\n return _createTester(bool => !bool, res => !res)(eachOf$1, coll, iteratee, callback)\n }\n var every$1 = awaitify(every, 3);\n\n /**\n * The same as [`every`]{@link module:Collections.every} but runs a maximum of `limit` async operations at a time.\n *\n * @name everyLimit\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.every]{@link module:Collections.every}\n * @alias allLimit\n * @category Collection\n * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n * @param {number} limit - The maximum number of async operations at a time.\n * @param {AsyncFunction} iteratee - An async truth test to apply to each item\n * in the collection in parallel.\n * The iteratee must complete with a boolean result value.\n * Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called after all the\n * `iteratee` functions have finished. Result will be either `true` or `false`\n * depending on the values of the async tests. Invoked with (err, result).\n * @returns {Promise} a promise, if no callback provided\n */\n function everyLimit(coll, limit, iteratee, callback) {\n return _createTester(bool => !bool, res => !res)(eachOfLimit$2(limit), coll, iteratee, callback)\n }\n var everyLimit$1 = awaitify(everyLimit, 4);\n\n /**\n * The same as [`every`]{@link module:Collections.every} but runs only a single async operation at a time.\n *\n * @name everySeries\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.every]{@link module:Collections.every}\n * @alias allSeries\n * @category Collection\n * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n * @param {AsyncFunction} iteratee - An async truth test to apply to each item\n * in the collection in series.\n * The iteratee must complete with a boolean result value.\n * Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called after all the\n * `iteratee` functions have finished. Result will be either `true` or `false`\n * depending on the values of the async tests. Invoked with (err, result).\n * @returns {Promise} a promise, if no callback provided\n */\n function everySeries(coll, iteratee, callback) {\n return _createTester(bool => !bool, res => !res)(eachOfSeries$1, coll, iteratee, callback)\n }\n var everySeries$1 = awaitify(everySeries, 3);\n\n function filterArray(eachfn, arr, iteratee, callback) {\n var truthValues = new Array(arr.length);\n eachfn(arr, (x, index, iterCb) => {\n iteratee(x, (err, v) => {\n truthValues[index] = !!v;\n iterCb(err);\n });\n }, err => {\n if (err) return callback(err);\n var results = [];\n for (var i = 0; i < arr.length; i++) {\n if (truthValues[i]) results.push(arr[i]);\n }\n callback(null, results);\n });\n }\n\n function filterGeneric(eachfn, coll, iteratee, callback) {\n var results = [];\n eachfn(coll, (x, index, iterCb) => {\n iteratee(x, (err, v) => {\n if (err) return iterCb(err);\n if (v) {\n results.push({index, value: x});\n }\n iterCb(err);\n });\n }, err => {\n if (err) return callback(err);\n callback(null, results\n .sort((a, b) => a.index - b.index)\n .map(v => v.value));\n });\n }\n\n function _filter(eachfn, coll, iteratee, callback) {\n var filter = isArrayLike(coll) ? filterArray : filterGeneric;\n return filter(eachfn, coll, wrapAsync(iteratee), callback);\n }\n\n /**\n * Returns a new array of all the values in `coll` which pass an async truth\n * test. This operation is performed in parallel, but the results array will be\n * in the same order as the original.\n *\n * @name filter\n * @static\n * @memberOf module:Collections\n * @method\n * @alias select\n * @category Collection\n * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n * @param {Function} iteratee - A truth test to apply to each item in `coll`.\n * The `iteratee` is passed a `callback(err, truthValue)`, which must be called\n * with a boolean argument once it has completed. Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called after all the\n * `iteratee` functions have finished. Invoked with (err, results).\n * @returns {Promise} a promise, if no callback provided\n * @example\n *\n * // dir1 is a directory that contains file1.txt, file2.txt\n * // dir2 is a directory that contains file3.txt, file4.txt\n * // dir3 is a directory that contains file5.txt\n *\n * const files = ['dir1/file1.txt','dir2/file3.txt','dir3/file6.txt'];\n *\n * // asynchronous function that checks if a file exists\n * function fileExists(file, callback) {\n * fs.access(file, fs.constants.F_OK, (err) => {\n * callback(null, !err);\n * });\n * }\n *\n * // Using callbacks\n * async.filter(files, fileExists, function(err, results) {\n * if(err) {\n * console.log(err);\n * } else {\n * console.log(results);\n * // [ 'dir1/file1.txt', 'dir2/file3.txt' ]\n * // results is now an array of the existing files\n * }\n * });\n *\n * // Using Promises\n * async.filter(files, fileExists)\n * .then(results => {\n * console.log(results);\n * // [ 'dir1/file1.txt', 'dir2/file3.txt' ]\n * // results is now an array of the existing files\n * }).catch(err => {\n * console.log(err);\n * });\n *\n * // Using async/await\n * async () => {\n * try {\n * let results = await async.filter(files, fileExists);\n * console.log(results);\n * // [ 'dir1/file1.txt', 'dir2/file3.txt' ]\n * // results is now an array of the existing files\n * }\n * catch (err) {\n * console.log(err);\n * }\n * }\n *\n */\n function filter (coll, iteratee, callback) {\n return _filter(eachOf$1, coll, iteratee, callback)\n }\n var filter$1 = awaitify(filter, 3);\n\n /**\n * The same as [`filter`]{@link module:Collections.filter} but runs a maximum of `limit` async operations at a\n * time.\n *\n * @name filterLimit\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.filter]{@link module:Collections.filter}\n * @alias selectLimit\n * @category Collection\n * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n * @param {number} limit - The maximum number of async operations at a time.\n * @param {Function} iteratee - A truth test to apply to each item in `coll`.\n * The `iteratee` is passed a `callback(err, truthValue)`, which must be called\n * with a boolean argument once it has completed. Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called after all the\n * `iteratee` functions have finished. Invoked with (err, results).\n * @returns {Promise} a promise, if no callback provided\n */\n function filterLimit (coll, limit, iteratee, callback) {\n return _filter(eachOfLimit$2(limit), coll, iteratee, callback)\n }\n var filterLimit$1 = awaitify(filterLimit, 4);\n\n /**\n * The same as [`filter`]{@link module:Collections.filter} but runs only a single async operation at a time.\n *\n * @name filterSeries\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.filter]{@link module:Collections.filter}\n * @alias selectSeries\n * @category Collection\n * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n * @param {Function} iteratee - A truth test to apply to each item in `coll`.\n * The `iteratee` is passed a `callback(err, truthValue)`, which must be called\n * with a boolean argument once it has completed. Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called after all the\n * `iteratee` functions have finished. Invoked with (err, results)\n * @returns {Promise} a promise, if no callback provided\n */\n function filterSeries (coll, iteratee, callback) {\n return _filter(eachOfSeries$1, coll, iteratee, callback)\n }\n var filterSeries$1 = awaitify(filterSeries, 3);\n\n /**\n * Calls the asynchronous function `fn` with a callback parameter that allows it\n * to call itself again, in series, indefinitely.\n\n * If an error is passed to the callback then `errback` is called with the\n * error, and execution stops, otherwise it will never be called.\n *\n * @name forever\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @category Control Flow\n * @param {AsyncFunction} fn - an async function to call repeatedly.\n * Invoked with (next).\n * @param {Function} [errback] - when `fn` passes an error to it's callback,\n * this function will be called, and execution stops. Invoked with (err).\n * @returns {Promise} a promise that rejects if an error occurs and an errback\n * is not passed\n * @example\n *\n * async.forever(\n * function(next) {\n * // next is suitable for passing to things that need a callback(err [, whatever]);\n * // it will result in this function being called again.\n * },\n * function(err) {\n * // if next is called with a value in its first parameter, it will appear\n * // in here as 'err', and execution will stop.\n * }\n * );\n */\n function forever(fn, errback) {\n var done = onlyOnce(errback);\n var task = wrapAsync(ensureAsync(fn));\n\n function next(err) {\n if (err) return done(err);\n if (err === false) return;\n task(next);\n }\n return next();\n }\n var forever$1 = awaitify(forever, 2);\n\n /**\n * The same as [`groupBy`]{@link module:Collections.groupBy} but runs a maximum of `limit` async operations at a time.\n *\n * @name groupByLimit\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.groupBy]{@link module:Collections.groupBy}\n * @category Collection\n * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n * @param {number} limit - The maximum number of async operations at a time.\n * @param {AsyncFunction} iteratee - An async function to apply to each item in\n * `coll`.\n * The iteratee should complete with a `key` to group the value under.\n * Invoked with (value, callback).\n * @param {Function} [callback] - A callback which is called when all `iteratee`\n * functions have finished, or an error occurs. Result is an `Object` whoses\n * properties are arrays of values which returned the corresponding key.\n * @returns {Promise} a promise, if no callback is passed\n */\n function groupByLimit(coll, limit, iteratee, callback) {\n var _iteratee = wrapAsync(iteratee);\n return mapLimit$1(coll, limit, (val, iterCb) => {\n _iteratee(val, (err, key) => {\n if (err) return iterCb(err);\n return iterCb(err, {key, val});\n });\n }, (err, mapResults) => {\n var result = {};\n // from MDN, handle object having an `hasOwnProperty` prop\n var {hasOwnProperty} = Object.prototype;\n\n for (var i = 0; i < mapResults.length; i++) {\n if (mapResults[i]) {\n var {key} = mapResults[i];\n var {val} = mapResults[i];\n\n if (hasOwnProperty.call(result, key)) {\n result[key].push(val);\n } else {\n result[key] = [val];\n }\n }\n }\n\n return callback(err, result);\n });\n }\n\n var groupByLimit$1 = awaitify(groupByLimit, 4);\n\n /**\n * Returns a new object, where each value corresponds to an array of items, from\n * `coll`, that returned the corresponding key. That is, the keys of the object\n * correspond to the values passed to the `iteratee` callback.\n *\n * Note: Since this function applies the `iteratee` to each item in parallel,\n * there is no guarantee that the `iteratee` functions will complete in order.\n * However, the values for each key in the `result` will be in the same order as\n * the original `coll`. For Objects, the values will roughly be in the order of\n * the original Objects' keys (but this can vary across JavaScript engines).\n *\n * @name groupBy\n * @static\n * @memberOf module:Collections\n * @method\n * @category Collection\n * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n * @param {AsyncFunction} iteratee - An async function to apply to each item in\n * `coll`.\n * The iteratee should complete with a `key` to group the value under.\n * Invoked with (value, callback).\n * @param {Function} [callback] - A callback which is called when all `iteratee`\n * functions have finished, or an error occurs. Result is an `Object` whoses\n * properties are arrays of values which returned the corresponding key.\n * @returns {Promise} a promise, if no callback is passed\n * @example\n *\n * // dir1 is a directory that contains file1.txt, file2.txt\n * // dir2 is a directory that contains file3.txt, file4.txt\n * // dir3 is a directory that contains file5.txt\n * // dir4 does not exist\n *\n * const files = ['dir1/file1.txt','dir2','dir4']\n *\n * // asynchronous function that detects file type as none, file, or directory\n * function detectFile(file, callback) {\n * fs.stat(file, function(err, stat) {\n * if (err) {\n * return callback(null, 'none');\n * }\n * callback(null, stat.isDirectory() ? 'directory' : 'file');\n * });\n * }\n *\n * //Using callbacks\n * async.groupBy(files, detectFile, function(err, result) {\n * if(err) {\n * console.log(err);\n * } else {\n *\t console.log(result);\n * // {\n * // file: [ 'dir1/file1.txt' ],\n * // none: [ 'dir4' ],\n * // directory: [ 'dir2']\n * // }\n * // result is object containing the files grouped by type\n * }\n * });\n *\n * // Using Promises\n * async.groupBy(files, detectFile)\n * .then( result => {\n * console.log(result);\n * // {\n * // file: [ 'dir1/file1.txt' ],\n * // none: [ 'dir4' ],\n * // directory: [ 'dir2']\n * // }\n * // result is object containing the files grouped by type\n * }).catch( err => {\n * console.log(err);\n * });\n *\n * // Using async/await\n * async () => {\n * try {\n * let result = await async.groupBy(files, detectFile);\n * console.log(result);\n * // {\n * // file: [ 'dir1/file1.txt' ],\n * // none: [ 'dir4' ],\n * // directory: [ 'dir2']\n * // }\n * // result is object containing the files grouped by type\n * }\n * catch (err) {\n * console.log(err);\n * }\n * }\n *\n */\n function groupBy (coll, iteratee, callback) {\n return groupByLimit$1(coll, Infinity, iteratee, callback)\n }\n\n /**\n * The same as [`groupBy`]{@link module:Collections.groupBy} but runs only a single async operation at a time.\n *\n * @name groupBySeries\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.groupBy]{@link module:Collections.groupBy}\n * @category Collection\n * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n * @param {AsyncFunction} iteratee - An async function to apply to each item in\n * `coll`.\n * The iteratee should complete with a `key` to group the value under.\n * Invoked with (value, callback).\n * @param {Function} [callback] - A callback which is called when all `iteratee`\n * functions have finished, or an error occurs. Result is an `Object` whose\n * properties are arrays of values which returned the corresponding key.\n * @returns {Promise} a promise, if no callback is passed\n */\n function groupBySeries (coll, iteratee, callback) {\n return groupByLimit$1(coll, 1, iteratee, callback)\n }\n\n /**\n * Logs the result of an `async` function to the `console`. Only works in\n * Node.js or in browsers that support `console.log` and `console.error` (such\n * as FF and Chrome). If multiple arguments are returned from the async\n * function, `console.log` is called on each argument in order.\n *\n * @name log\n * @static\n * @memberOf module:Utils\n * @method\n * @category Util\n * @param {AsyncFunction} function - The function you want to eventually apply\n * all arguments to.\n * @param {...*} arguments... - Any number of arguments to apply to the function.\n * @example\n *\n * // in a module\n * var hello = function(name, callback) {\n * setTimeout(function() {\n * callback(null, 'hello ' + name);\n * }, 1000);\n * };\n *\n * // in the node repl\n * node> async.log(hello, 'world');\n * 'hello world'\n */\n var log = consoleFunc('log');\n\n /**\n * The same as [`mapValues`]{@link module:Collections.mapValues} but runs a maximum of `limit` async operations at a\n * time.\n *\n * @name mapValuesLimit\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.mapValues]{@link module:Collections.mapValues}\n * @category Collection\n * @param {Object} obj - A collection to iterate over.\n * @param {number} limit - The maximum number of async operations at a time.\n * @param {AsyncFunction} iteratee - A function to apply to each value and key\n * in `coll`.\n * The iteratee should complete with the transformed value as its result.\n * Invoked with (value, key, callback).\n * @param {Function} [callback] - A callback which is called when all `iteratee`\n * functions have finished, or an error occurs. `result` is a new object consisting\n * of each key from `obj`, with each transformed value on the right-hand side.\n * Invoked with (err, result).\n * @returns {Promise} a promise, if no callback is passed\n */\n function mapValuesLimit(obj, limit, iteratee, callback) {\n callback = once(callback);\n var newObj = {};\n var _iteratee = wrapAsync(iteratee);\n return eachOfLimit$2(limit)(obj, (val, key, next) => {\n _iteratee(val, key, (err, result) => {\n if (err) return next(err);\n newObj[key] = result;\n next(err);\n });\n }, err => callback(err, newObj));\n }\n\n var mapValuesLimit$1 = awaitify(mapValuesLimit, 4);\n\n /**\n * A relative of [`map`]{@link module:Collections.map}, designed for use with objects.\n *\n * Produces a new Object by mapping each value of `obj` through the `iteratee`\n * function. The `iteratee` is called each `value` and `key` from `obj` and a\n * callback for when it has finished processing. Each of these callbacks takes\n * two arguments: an `error`, and the transformed item from `obj`. If `iteratee`\n * passes an error to its callback, the main `callback` (for the `mapValues`\n * function) is immediately called with the error.\n *\n * Note, the order of the keys in the result is not guaranteed. The keys will\n * be roughly in the order they complete, (but this is very engine-specific)\n *\n * @name mapValues\n * @static\n * @memberOf module:Collections\n * @method\n * @category Collection\n * @param {Object} obj - A collection to iterate over.\n * @param {AsyncFunction} iteratee - A function to apply to each value and key\n * in `coll`.\n * The iteratee should complete with the transformed value as its result.\n * Invoked with (value, key, callback).\n * @param {Function} [callback] - A callback which is called when all `iteratee`\n * functions have finished, or an error occurs. `result` is a new object consisting\n * of each key from `obj`, with each transformed value on the right-hand side.\n * Invoked with (err, result).\n * @returns {Promise} a promise, if no callback is passed\n * @example\n *\n * // file1.txt is a file that is 1000 bytes in size\n * // file2.txt is a file that is 2000 bytes in size\n * // file3.txt is a file that is 3000 bytes in size\n * // file4.txt does not exist\n *\n * const fileMap = {\n * f1: 'file1.txt',\n * f2: 'file2.txt',\n * f3: 'file3.txt'\n * };\n *\n * const withMissingFileMap = {\n * f1: 'file1.txt',\n * f2: 'file2.txt',\n * f3: 'file4.txt'\n * };\n *\n * // asynchronous function that returns the file size in bytes\n * function getFileSizeInBytes(file, key, callback) {\n * fs.stat(file, function(err, stat) {\n * if (err) {\n * return callback(err);\n * }\n * callback(null, stat.size);\n * });\n * }\n *\n * // Using callbacks\n * async.mapValues(fileMap, getFileSizeInBytes, function(err, result) {\n * if (err) {\n * console.log(err);\n * } else {\n * console.log(result);\n * // result is now a map of file size in bytes for each file, e.g.\n * // {\n * // f1: 1000,\n * // f2: 2000,\n * // f3: 3000\n * // }\n * }\n * });\n *\n * // Error handling\n * async.mapValues(withMissingFileMap, getFileSizeInBytes, function(err, result) {\n * if (err) {\n * console.log(err);\n * // [ Error: ENOENT: no such file or directory ]\n * } else {\n * console.log(result);\n * }\n * });\n *\n * // Using Promises\n * async.mapValues(fileMap, getFileSizeInBytes)\n * .then( result => {\n * console.log(result);\n * // result is now a map of file size in bytes for each file, e.g.\n * // {\n * // f1: 1000,\n * // f2: 2000,\n * // f3: 3000\n * // }\n * }).catch (err => {\n * console.log(err);\n * });\n *\n * // Error Handling\n * async.mapValues(withMissingFileMap, getFileSizeInBytes)\n * .then( result => {\n * console.log(result);\n * }).catch (err => {\n * console.log(err);\n * // [ Error: ENOENT: no such file or directory ]\n * });\n *\n * // Using async/await\n * async () => {\n * try {\n * let result = await async.mapValues(fileMap, getFileSizeInBytes);\n * console.log(result);\n * // result is now a map of file size in bytes for each file, e.g.\n * // {\n * // f1: 1000,\n * // f2: 2000,\n * // f3: 3000\n * // }\n * }\n * catch (err) {\n * console.log(err);\n * }\n * }\n *\n * // Error Handling\n * async () => {\n * try {\n * let result = await async.mapValues(withMissingFileMap, getFileSizeInBytes);\n * console.log(result);\n * }\n * catch (err) {\n * console.log(err);\n * // [ Error: ENOENT: no such file or directory ]\n * }\n * }\n *\n */\n function mapValues(obj, iteratee, callback) {\n return mapValuesLimit$1(obj, Infinity, iteratee, callback)\n }\n\n /**\n * The same as [`mapValues`]{@link module:Collections.mapValues} but runs only a single async operation at a time.\n *\n * @name mapValuesSeries\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.mapValues]{@link module:Collections.mapValues}\n * @category Collection\n * @param {Object} obj - A collection to iterate over.\n * @param {AsyncFunction} iteratee - A function to apply to each value and key\n * in `coll`.\n * The iteratee should complete with the transformed value as its result.\n * Invoked with (value, key, callback).\n * @param {Function} [callback] - A callback which is called when all `iteratee`\n * functions have finished, or an error occurs. `result` is a new object consisting\n * of each key from `obj`, with each transformed value on the right-hand side.\n * Invoked with (err, result).\n * @returns {Promise} a promise, if no callback is passed\n */\n function mapValuesSeries(obj, iteratee, callback) {\n return mapValuesLimit$1(obj, 1, iteratee, callback)\n }\n\n /**\n * Caches the results of an async function. When creating a hash to store\n * function results against, the callback is omitted from the hash and an\n * optional hash function can be used.\n *\n * **Note: if the async function errs, the result will not be cached and\n * subsequent calls will call the wrapped function.**\n *\n * If no hash function is specified, the first argument is used as a hash key,\n * which may work reasonably if it is a string or a data type that converts to a\n * distinct string. Note that objects and arrays will not behave reasonably.\n * Neither will cases where the other arguments are significant. In such cases,\n * specify your own hash function.\n *\n * The cache of results is exposed as the `memo` property of the function\n * returned by `memoize`.\n *\n * @name memoize\n * @static\n * @memberOf module:Utils\n * @method\n * @category Util\n * @param {AsyncFunction} fn - The async function to proxy and cache results from.\n * @param {Function} hasher - An optional function for generating a custom hash\n * for storing results. It has all the arguments applied to it apart from the\n * callback, and must be synchronous.\n * @returns {AsyncFunction} a memoized version of `fn`\n * @example\n *\n * var slow_fn = function(name, callback) {\n * // do something\n * callback(null, result);\n * };\n * var fn = async.memoize(slow_fn);\n *\n * // fn can now be used as if it were slow_fn\n * fn('some name', function() {\n * // callback\n * });\n */\n function memoize(fn, hasher = v => v) {\n var memo = Object.create(null);\n var queues = Object.create(null);\n var _fn = wrapAsync(fn);\n var memoized = initialParams((args, callback) => {\n var key = hasher(...args);\n if (key in memo) {\n setImmediate$1(() => callback(null, ...memo[key]));\n } else if (key in queues) {\n queues[key].push(callback);\n } else {\n queues[key] = [callback];\n _fn(...args, (err, ...resultArgs) => {\n // #1465 don't memoize if an error occurred\n if (!err) {\n memo[key] = resultArgs;\n }\n var q = queues[key];\n delete queues[key];\n for (var i = 0, l = q.length; i < l; i++) {\n q[i](err, ...resultArgs);\n }\n });\n }\n });\n memoized.memo = memo;\n memoized.unmemoized = fn;\n return memoized;\n }\n\n /* istanbul ignore file */\n\n /**\n * Calls `callback` on a later loop around the event loop. In Node.js this just\n * calls `process.nextTick`. In the browser it will use `setImmediate` if\n * available, otherwise `setTimeout(callback, 0)`, which means other higher\n * priority events may precede the execution of `callback`.\n *\n * This is used internally for browser-compatibility purposes.\n *\n * @name nextTick\n * @static\n * @memberOf module:Utils\n * @method\n * @see [async.setImmediate]{@link module:Utils.setImmediate}\n * @category Util\n * @param {Function} callback - The function to call on a later loop around\n * the event loop. Invoked with (args...).\n * @param {...*} args... - any number of additional arguments to pass to the\n * callback on the next tick.\n * @example\n *\n * var call_order = [];\n * async.nextTick(function() {\n * call_order.push('two');\n * // call_order now equals ['one','two']\n * });\n * call_order.push('one');\n *\n * async.setImmediate(function (a, b, c) {\n * // a, b, and c equal 1, 2, and 3\n * }, 1, 2, 3);\n */\n var _defer;\n\n if (hasNextTick) {\n _defer = process.nextTick;\n } else if (hasSetImmediate) {\n _defer = setImmediate;\n } else {\n _defer = fallback;\n }\n\n var nextTick = wrap(_defer);\n\n var _parallel = awaitify((eachfn, tasks, callback) => {\n var results = isArrayLike(tasks) ? [] : {};\n\n eachfn(tasks, (task, key, taskCb) => {\n wrapAsync(task)((err, ...result) => {\n if (result.length < 2) {\n [result] = result;\n }\n results[key] = result;\n taskCb(err);\n });\n }, err => callback(err, results));\n }, 3);\n\n /**\n * Run the `tasks` collection of functions in parallel, without waiting until\n * the previous function has completed. If any of the functions pass an error to\n * its callback, the main `callback` is immediately called with the value of the\n * error. Once the `tasks` have completed, the results are passed to the final\n * `callback` as an array.\n *\n * **Note:** `parallel` is about kicking-off I/O tasks in parallel, not about\n * parallel execution of code. If your tasks do not use any timers or perform\n * any I/O, they will actually be executed in series. Any synchronous setup\n * sections for each task will happen one after the other. JavaScript remains\n * single-threaded.\n *\n * **Hint:** Use [`reflect`]{@link module:Utils.reflect} to continue the\n * execution of other tasks when a task fails.\n *\n * It is also possible to use an object instead of an array. Each property will\n * be run as a function and the results will be passed to the final `callback`\n * as an object instead of an array. This can be a more readable way of handling\n * results from {@link async.parallel}.\n *\n * @name parallel\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @category Control Flow\n * @param {Array|Iterable|AsyncIterable|Object} tasks - A collection of\n * [async functions]{@link AsyncFunction} to run.\n * Each async function can complete with any number of optional `result` values.\n * @param {Function} [callback] - An optional callback to run once all the\n * functions have completed successfully. This function gets a results array\n * (or object) containing all the result arguments passed to the task callbacks.\n * Invoked with (err, results).\n * @returns {Promise} a promise, if a callback is not passed\n *\n * @example\n *\n * //Using Callbacks\n * async.parallel([\n * function(callback) {\n * setTimeout(function() {\n * callback(null, 'one');\n * }, 200);\n * },\n * function(callback) {\n * setTimeout(function() {\n * callback(null, 'two');\n * }, 100);\n * }\n * ], function(err, results) {\n * console.log(results);\n * // results is equal to ['one','two'] even though\n * // the second function had a shorter timeout.\n * });\n *\n * // an example using an object instead of an array\n * async.parallel({\n * one: function(callback) {\n * setTimeout(function() {\n * callback(null, 1);\n * }, 200);\n * },\n * two: function(callback) {\n * setTimeout(function() {\n * callback(null, 2);\n * }, 100);\n * }\n * }, function(err, results) {\n * console.log(results);\n * // results is equal to: { one: 1, two: 2 }\n * });\n *\n * //Using Promises\n * async.parallel([\n * function(callback) {\n * setTimeout(function() {\n * callback(null, 'one');\n * }, 200);\n * },\n * function(callback) {\n * setTimeout(function() {\n * callback(null, 'two');\n * }, 100);\n * }\n * ]).then(results => {\n * console.log(results);\n * // results is equal to ['one','two'] even though\n * // the second function had a shorter timeout.\n * }).catch(err => {\n * console.log(err);\n * });\n *\n * // an example using an object instead of an array\n * async.parallel({\n * one: function(callback) {\n * setTimeout(function() {\n * callback(null, 1);\n * }, 200);\n * },\n * two: function(callback) {\n * setTimeout(function() {\n * callback(null, 2);\n * }, 100);\n * }\n * }).then(results => {\n * console.log(results);\n * // results is equal to: { one: 1, two: 2 }\n * }).catch(err => {\n * console.log(err);\n * });\n *\n * //Using async/await\n * async () => {\n * try {\n * let results = await async.parallel([\n * function(callback) {\n * setTimeout(function() {\n * callback(null, 'one');\n * }, 200);\n * },\n * function(callback) {\n * setTimeout(function() {\n * callback(null, 'two');\n * }, 100);\n * }\n * ]);\n * console.log(results);\n * // results is equal to ['one','two'] even though\n * // the second function had a shorter timeout.\n * }\n * catch (err) {\n * console.log(err);\n * }\n * }\n *\n * // an example using an object instead of an array\n * async () => {\n * try {\n * let results = await async.parallel({\n * one: function(callback) {\n * setTimeout(function() {\n * callback(null, 1);\n * }, 200);\n * },\n * two: function(callback) {\n * setTimeout(function() {\n * callback(null, 2);\n * }, 100);\n * }\n * });\n * console.log(results);\n * // results is equal to: { one: 1, two: 2 }\n * }\n * catch (err) {\n * console.log(err);\n * }\n * }\n *\n */\n function parallel(tasks, callback) {\n return _parallel(eachOf$1, tasks, callback);\n }\n\n /**\n * The same as [`parallel`]{@link module:ControlFlow.parallel} but runs a maximum of `limit` async operations at a\n * time.\n *\n * @name parallelLimit\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @see [async.parallel]{@link module:ControlFlow.parallel}\n * @category Control Flow\n * @param {Array|Iterable|AsyncIterable|Object} tasks - A collection of\n * [async functions]{@link AsyncFunction} to run.\n * Each async function can complete with any number of optional `result` values.\n * @param {number} limit - The maximum number of async operations at a time.\n * @param {Function} [callback] - An optional callback to run once all the\n * functions have completed successfully. This function gets a results array\n * (or object) containing all the result arguments passed to the task callbacks.\n * Invoked with (err, results).\n * @returns {Promise} a promise, if a callback is not passed\n */\n function parallelLimit(tasks, limit, callback) {\n return _parallel(eachOfLimit$2(limit), tasks, callback);\n }\n\n /**\n * A queue of tasks for the worker function to complete.\n * @typedef {Iterable} QueueObject\n * @memberOf module:ControlFlow\n * @property {Function} length - a function returning the number of items\n * waiting to be processed. Invoke with `queue.length()`.\n * @property {boolean} started - a boolean indicating whether or not any\n * items have been pushed and processed by the queue.\n * @property {Function} running - a function returning the number of items\n * currently being processed. Invoke with `queue.running()`.\n * @property {Function} workersList - a function returning the array of items\n * currently being processed. Invoke with `queue.workersList()`.\n * @property {Function} idle - a function returning false if there are items\n * waiting or being processed, or true if not. Invoke with `queue.idle()`.\n * @property {number} concurrency - an integer for determining how many `worker`\n * functions should be run in parallel. This property can be changed after a\n * `queue` is created to alter the concurrency on-the-fly.\n * @property {number} payload - an integer that specifies how many items are\n * passed to the worker function at a time. only applies if this is a\n * [cargo]{@link module:ControlFlow.cargo} object\n * @property {AsyncFunction} push - add a new task to the `queue`. Calls `callback`\n * once the `worker` has finished processing the task. Instead of a single task,\n * a `tasks` array can be submitted. The respective callback is used for every\n * task in the list. Invoke with `queue.push(task, [callback])`,\n * @property {AsyncFunction} unshift - add a new task to the front of the `queue`.\n * Invoke with `queue.unshift(task, [callback])`.\n * @property {AsyncFunction} pushAsync - the same as `q.push`, except this returns\n * a promise that rejects if an error occurs.\n * @property {AsyncFunction} unshiftAsync - the same as `q.unshift`, except this returns\n * a promise that rejects if an error occurs.\n * @property {Function} remove - remove items from the queue that match a test\n * function. The test function will be passed an object with a `data` property,\n * and a `priority` property, if this is a\n * [priorityQueue]{@link module:ControlFlow.priorityQueue} object.\n * Invoked with `queue.remove(testFn)`, where `testFn` is of the form\n * `function ({data, priority}) {}` and returns a Boolean.\n * @property {Function} saturated - a function that sets a callback that is\n * called when the number of running workers hits the `concurrency` limit, and\n * further tasks will be queued. If the callback is omitted, `q.saturated()`\n * returns a promise for the next occurrence.\n * @property {Function} unsaturated - a function that sets a callback that is\n * called when the number of running workers is less than the `concurrency` &\n * `buffer` limits, and further tasks will not be queued. If the callback is\n * omitted, `q.unsaturated()` returns a promise for the next occurrence.\n * @property {number} buffer - A minimum threshold buffer in order to say that\n * the `queue` is `unsaturated`.\n * @property {Function} empty - a function that sets a callback that is called\n * when the last item from the `queue` is given to a `worker`. If the callback\n * is omitted, `q.empty()` returns a promise for the next occurrence.\n * @property {Function} drain - a function that sets a callback that is called\n * when the last item from the `queue` has returned from the `worker`. If the\n * callback is omitted, `q.drain()` returns a promise for the next occurrence.\n * @property {Function} error - a function that sets a callback that is called\n * when a task errors. Has the signature `function(error, task)`. If the\n * callback is omitted, `error()` returns a promise that rejects on the next\n * error.\n * @property {boolean} paused - a boolean for determining whether the queue is\n * in a paused state.\n * @property {Function} pause - a function that pauses the processing of tasks\n * until `resume()` is called. Invoke with `queue.pause()`.\n * @property {Function} resume - a function that resumes the processing of\n * queued tasks when the queue is paused. Invoke with `queue.resume()`.\n * @property {Function} kill - a function that removes the `drain` callback and\n * empties remaining tasks from the queue forcing it to go idle. No more tasks\n * should be pushed to the queue after calling this function. Invoke with `queue.kill()`.\n *\n * @example\n * const q = async.queue(worker, 2)\n * q.push(item1)\n * q.push(item2)\n * q.push(item3)\n * // queues are iterable, spread into an array to inspect\n * const items = [...q] // [item1, item2, item3]\n * // or use for of\n * for (let item of q) {\n * console.log(item)\n * }\n *\n * q.drain(() => {\n * console.log('all done')\n * })\n * // or\n * await q.drain()\n */\n\n /**\n * Creates a `queue` object with the specified `concurrency`. Tasks added to the\n * `queue` are processed in parallel (up to the `concurrency` limit). If all\n * `worker`s are in progress, the task is queued until one becomes available.\n * Once a `worker` completes a `task`, that `task`'s callback is called.\n *\n * @name queue\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @category Control Flow\n * @param {AsyncFunction} worker - An async function for processing a queued task.\n * If you want to handle errors from an individual task, pass a callback to\n * `q.push()`. Invoked with (task, callback).\n * @param {number} [concurrency=1] - An `integer` for determining how many\n * `worker` functions should be run in parallel. If omitted, the concurrency\n * defaults to `1`. If the concurrency is `0`, an error is thrown.\n * @returns {module:ControlFlow.QueueObject} A queue object to manage the tasks. Callbacks can be\n * attached as certain properties to listen for specific events during the\n * lifecycle of the queue.\n * @example\n *\n * // create a queue object with concurrency 2\n * var q = async.queue(function(task, callback) {\n * console.log('hello ' + task.name);\n * callback();\n * }, 2);\n *\n * // assign a callback\n * q.drain(function() {\n * console.log('all items have been processed');\n * });\n * // or await the end\n * await q.drain()\n *\n * // assign an error callback\n * q.error(function(err, task) {\n * console.error('task experienced an error');\n * });\n *\n * // add some items to the queue\n * q.push({name: 'foo'}, function(err) {\n * console.log('finished processing foo');\n * });\n * // callback is optional\n * q.push({name: 'bar'});\n *\n * // add some items to the queue (batch-wise)\n * q.push([{name: 'baz'},{name: 'bay'},{name: 'bax'}], function(err) {\n * console.log('finished processing item');\n * });\n *\n * // add some items to the front of the queue\n * q.unshift({name: 'bar'}, function (err) {\n * console.log('finished processing bar');\n * });\n */\n function queue (worker, concurrency) {\n var _worker = wrapAsync(worker);\n return queue$1((items, cb) => {\n _worker(items[0], cb);\n }, concurrency, 1);\n }\n\n // Binary min-heap implementation used for priority queue.\n // Implementation is stable, i.e. push time is considered for equal priorities\n class Heap {\n constructor() {\n this.heap = [];\n this.pushCount = Number.MIN_SAFE_INTEGER;\n }\n\n get length() {\n return this.heap.length;\n }\n\n empty () {\n this.heap = [];\n return this;\n }\n\n percUp(index) {\n let p;\n\n while (index > 0 && smaller(this.heap[index], this.heap[p=parent(index)])) {\n let t = this.heap[index];\n this.heap[index] = this.heap[p];\n this.heap[p] = t;\n\n index = p;\n }\n }\n\n percDown(index) {\n let l;\n\n while ((l=leftChi(index)) < this.heap.length) {\n if (l+1 < this.heap.length && smaller(this.heap[l+1], this.heap[l])) {\n l = l+1;\n }\n\n if (smaller(this.heap[index], this.heap[l])) {\n break;\n }\n\n let t = this.heap[index];\n this.heap[index] = this.heap[l];\n this.heap[l] = t;\n\n index = l;\n }\n }\n\n push(node) {\n node.pushCount = ++this.pushCount;\n this.heap.push(node);\n this.percUp(this.heap.length-1);\n }\n\n unshift(node) {\n return this.heap.push(node);\n }\n\n shift() {\n let [top] = this.heap;\n\n this.heap[0] = this.heap[this.heap.length-1];\n this.heap.pop();\n this.percDown(0);\n\n return top;\n }\n\n toArray() {\n return [...this];\n }\n\n *[Symbol.iterator] () {\n for (let i = 0; i < this.heap.length; i++) {\n yield this.heap[i].data;\n }\n }\n\n remove (testFn) {\n let j = 0;\n for (let i = 0; i < this.heap.length; i++) {\n if (!testFn(this.heap[i])) {\n this.heap[j] = this.heap[i];\n j++;\n }\n }\n\n this.heap.splice(j);\n\n for (let i = parent(this.heap.length-1); i >= 0; i--) {\n this.percDown(i);\n }\n\n return this;\n }\n }\n\n function leftChi(i) {\n return (i<<1)+1;\n }\n\n function parent(i) {\n return ((i+1)>>1)-1;\n }\n\n function smaller(x, y) {\n if (x.priority !== y.priority) {\n return x.priority < y.priority;\n }\n else {\n return x.pushCount < y.pushCount;\n }\n }\n\n /**\n * The same as [async.queue]{@link module:ControlFlow.queue} only tasks are assigned a priority and\n * completed in ascending priority order.\n *\n * @name priorityQueue\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @see [async.queue]{@link module:ControlFlow.queue}\n * @category Control Flow\n * @param {AsyncFunction} worker - An async function for processing a queued task.\n * If you want to handle errors from an individual task, pass a callback to\n * `q.push()`.\n * Invoked with (task, callback).\n * @param {number} concurrency - An `integer` for determining how many `worker`\n * functions should be run in parallel. If omitted, the concurrency defaults to\n * `1`. If the concurrency is `0`, an error is thrown.\n * @returns {module:ControlFlow.QueueObject} A priorityQueue object to manage the tasks. There are three\n * differences between `queue` and `priorityQueue` objects:\n * * `push(task, priority, [callback])` - `priority` should be a number. If an\n * array of `tasks` is given, all tasks will be assigned the same priority.\n * * `pushAsync(task, priority, [callback])` - the same as `priorityQueue.push`,\n * except this returns a promise that rejects if an error occurs.\n * * The `unshift` and `unshiftAsync` methods were removed.\n */\n function priorityQueue(worker, concurrency) {\n // Start with a normal queue\n var q = queue(worker, concurrency);\n\n var {\n push,\n pushAsync\n } = q;\n\n q._tasks = new Heap();\n q._createTaskItem = ({data, priority}, callback) => {\n return {\n data,\n priority,\n callback\n };\n };\n\n function createDataItems(tasks, priority) {\n if (!Array.isArray(tasks)) {\n return {data: tasks, priority};\n }\n return tasks.map(data => { return {data, priority}; });\n }\n\n // Override push to accept second parameter representing priority\n q.push = function(data, priority = 0, callback) {\n return push(createDataItems(data, priority), callback);\n };\n\n q.pushAsync = function(data, priority = 0, callback) {\n return pushAsync(createDataItems(data, priority), callback);\n };\n\n // Remove unshift functions\n delete q.unshift;\n delete q.unshiftAsync;\n\n return q;\n }\n\n /**\n * Runs the `tasks` array of functions in parallel, without waiting until the\n * previous function has completed. Once any of the `tasks` complete or pass an\n * error to its callback, the main `callback` is immediately called. It's\n * equivalent to `Promise.race()`.\n *\n * @name race\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @category Control Flow\n * @param {Array} tasks - An array containing [async functions]{@link AsyncFunction}\n * to run. Each function can complete with an optional `result` value.\n * @param {Function} callback - A callback to run once any of the functions have\n * completed. This function gets an error or result from the first function that\n * completed. Invoked with (err, result).\n * @returns {Promise} a promise, if a callback is omitted\n * @example\n *\n * async.race([\n * function(callback) {\n * setTimeout(function() {\n * callback(null, 'one');\n * }, 200);\n * },\n * function(callback) {\n * setTimeout(function() {\n * callback(null, 'two');\n * }, 100);\n * }\n * ],\n * // main callback\n * function(err, result) {\n * // the result will be equal to 'two' as it finishes earlier\n * });\n */\n function race(tasks, callback) {\n callback = once(callback);\n if (!Array.isArray(tasks)) return callback(new TypeError('First argument to race must be an array of functions'));\n if (!tasks.length) return callback();\n for (var i = 0, l = tasks.length; i < l; i++) {\n wrapAsync(tasks[i])(callback);\n }\n }\n\n var race$1 = awaitify(race, 2);\n\n /**\n * Same as [`reduce`]{@link module:Collections.reduce}, only operates on `array` in reverse order.\n *\n * @name reduceRight\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.reduce]{@link module:Collections.reduce}\n * @alias foldr\n * @category Collection\n * @param {Array} array - A collection to iterate over.\n * @param {*} memo - The initial state of the reduction.\n * @param {AsyncFunction} iteratee - A function applied to each item in the\n * array to produce the next step in the reduction.\n * The `iteratee` should complete with the next state of the reduction.\n * If the iteratee completes with an error, the reduction is stopped and the\n * main `callback` is immediately called with the error.\n * Invoked with (memo, item, callback).\n * @param {Function} [callback] - A callback which is called after all the\n * `iteratee` functions have finished. Result is the reduced value. Invoked with\n * (err, result).\n * @returns {Promise} a promise, if no callback is passed\n */\n function reduceRight (array, memo, iteratee, callback) {\n var reversed = [...array].reverse();\n return reduce$1(reversed, memo, iteratee, callback);\n }\n\n /**\n * Wraps the async function in another function that always completes with a\n * result object, even when it errors.\n *\n * The result object has either the property `error` or `value`.\n *\n * @name reflect\n * @static\n * @memberOf module:Utils\n * @method\n * @category Util\n * @param {AsyncFunction} fn - The async function you want to wrap\n * @returns {Function} - A function that always passes null to it's callback as\n * the error. The second argument to the callback will be an `object` with\n * either an `error` or a `value` property.\n * @example\n *\n * async.parallel([\n * async.reflect(function(callback) {\n * // do some stuff ...\n * callback(null, 'one');\n * }),\n * async.reflect(function(callback) {\n * // do some more stuff but error ...\n * callback('bad stuff happened');\n * }),\n * async.reflect(function(callback) {\n * // do some more stuff ...\n * callback(null, 'two');\n * })\n * ],\n * // optional callback\n * function(err, results) {\n * // values\n * // results[0].value = 'one'\n * // results[1].error = 'bad stuff happened'\n * // results[2].value = 'two'\n * });\n */\n function reflect(fn) {\n var _fn = wrapAsync(fn);\n return initialParams(function reflectOn(args, reflectCallback) {\n args.push((error, ...cbArgs) => {\n let retVal = {};\n if (error) {\n retVal.error = error;\n }\n if (cbArgs.length > 0){\n var value = cbArgs;\n if (cbArgs.length <= 1) {\n [value] = cbArgs;\n }\n retVal.value = value;\n }\n reflectCallback(null, retVal);\n });\n\n return _fn.apply(this, args);\n });\n }\n\n /**\n * A helper function that wraps an array or an object of functions with `reflect`.\n *\n * @name reflectAll\n * @static\n * @memberOf module:Utils\n * @method\n * @see [async.reflect]{@link module:Utils.reflect}\n * @category Util\n * @param {Array|Object|Iterable} tasks - The collection of\n * [async functions]{@link AsyncFunction} to wrap in `async.reflect`.\n * @returns {Array} Returns an array of async functions, each wrapped in\n * `async.reflect`\n * @example\n *\n * let tasks = [\n * function(callback) {\n * setTimeout(function() {\n * callback(null, 'one');\n * }, 200);\n * },\n * function(callback) {\n * // do some more stuff but error ...\n * callback(new Error('bad stuff happened'));\n * },\n * function(callback) {\n * setTimeout(function() {\n * callback(null, 'two');\n * }, 100);\n * }\n * ];\n *\n * async.parallel(async.reflectAll(tasks),\n * // optional callback\n * function(err, results) {\n * // values\n * // results[0].value = 'one'\n * // results[1].error = Error('bad stuff happened')\n * // results[2].value = 'two'\n * });\n *\n * // an example using an object instead of an array\n * let tasks = {\n * one: function(callback) {\n * setTimeout(function() {\n * callback(null, 'one');\n * }, 200);\n * },\n * two: function(callback) {\n * callback('two');\n * },\n * three: function(callback) {\n * setTimeout(function() {\n * callback(null, 'three');\n * }, 100);\n * }\n * };\n *\n * async.parallel(async.reflectAll(tasks),\n * // optional callback\n * function(err, results) {\n * // values\n * // results.one.value = 'one'\n * // results.two.error = 'two'\n * // results.three.value = 'three'\n * });\n */\n function reflectAll(tasks) {\n var results;\n if (Array.isArray(tasks)) {\n results = tasks.map(reflect);\n } else {\n results = {};\n Object.keys(tasks).forEach(key => {\n results[key] = reflect.call(this, tasks[key]);\n });\n }\n return results;\n }\n\n function reject$2(eachfn, arr, _iteratee, callback) {\n const iteratee = wrapAsync(_iteratee);\n return _filter(eachfn, arr, (value, cb) => {\n iteratee(value, (err, v) => {\n cb(err, !v);\n });\n }, callback);\n }\n\n /**\n * The opposite of [`filter`]{@link module:Collections.filter}. Removes values that pass an `async` truth test.\n *\n * @name reject\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.filter]{@link module:Collections.filter}\n * @category Collection\n * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n * @param {Function} iteratee - An async truth test to apply to each item in\n * `coll`.\n * The should complete with a boolean value as its `result`.\n * Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called after all the\n * `iteratee` functions have finished. Invoked with (err, results).\n * @returns {Promise} a promise, if no callback is passed\n * @example\n *\n * // dir1 is a directory that contains file1.txt, file2.txt\n * // dir2 is a directory that contains file3.txt, file4.txt\n * // dir3 is a directory that contains file5.txt\n *\n * const fileList = ['dir1/file1.txt','dir2/file3.txt','dir3/file6.txt'];\n *\n * // asynchronous function that checks if a file exists\n * function fileExists(file, callback) {\n * fs.access(file, fs.constants.F_OK, (err) => {\n * callback(null, !err);\n * });\n * }\n *\n * // Using callbacks\n * async.reject(fileList, fileExists, function(err, results) {\n * // [ 'dir3/file6.txt' ]\n * // results now equals an array of the non-existing files\n * });\n *\n * // Using Promises\n * async.reject(fileList, fileExists)\n * .then( results => {\n * console.log(results);\n * // [ 'dir3/file6.txt' ]\n * // results now equals an array of the non-existing files\n * }).catch( err => {\n * console.log(err);\n * });\n *\n * // Using async/await\n * async () => {\n * try {\n * let results = await async.reject(fileList, fileExists);\n * console.log(results);\n * // [ 'dir3/file6.txt' ]\n * // results now equals an array of the non-existing files\n * }\n * catch (err) {\n * console.log(err);\n * }\n * }\n *\n */\n function reject (coll, iteratee, callback) {\n return reject$2(eachOf$1, coll, iteratee, callback)\n }\n var reject$1 = awaitify(reject, 3);\n\n /**\n * The same as [`reject`]{@link module:Collections.reject} but runs a maximum of `limit` async operations at a\n * time.\n *\n * @name rejectLimit\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.reject]{@link module:Collections.reject}\n * @category Collection\n * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n * @param {number} limit - The maximum number of async operations at a time.\n * @param {Function} iteratee - An async truth test to apply to each item in\n * `coll`.\n * The should complete with a boolean value as its `result`.\n * Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called after all the\n * `iteratee` functions have finished. Invoked with (err, results).\n * @returns {Promise} a promise, if no callback is passed\n */\n function rejectLimit (coll, limit, iteratee, callback) {\n return reject$2(eachOfLimit$2(limit), coll, iteratee, callback)\n }\n var rejectLimit$1 = awaitify(rejectLimit, 4);\n\n /**\n * The same as [`reject`]{@link module:Collections.reject} but runs only a single async operation at a time.\n *\n * @name rejectSeries\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.reject]{@link module:Collections.reject}\n * @category Collection\n * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n * @param {Function} iteratee - An async truth test to apply to each item in\n * `coll`.\n * The should complete with a boolean value as its `result`.\n * Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called after all the\n * `iteratee` functions have finished. Invoked with (err, results).\n * @returns {Promise} a promise, if no callback is passed\n */\n function rejectSeries (coll, iteratee, callback) {\n return reject$2(eachOfSeries$1, coll, iteratee, callback)\n }\n var rejectSeries$1 = awaitify(rejectSeries, 3);\n\n function constant(value) {\n return function () {\n return value;\n }\n }\n\n /**\n * Attempts to get a successful response from `task` no more than `times` times\n * before returning an error. If the task is successful, the `callback` will be\n * passed the result of the successful task. If all attempts fail, the callback\n * will be passed the error and result (if any) of the final attempt.\n *\n * @name retry\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @category Control Flow\n * @see [async.retryable]{@link module:ControlFlow.retryable}\n * @param {Object|number} [opts = {times: 5, interval: 0}| 5] - Can be either an\n * object with `times` and `interval` or a number.\n * * `times` - The number of attempts to make before giving up. The default\n * is `5`.\n * * `interval` - The time to wait between retries, in milliseconds. The\n * default is `0`. The interval may also be specified as a function of the\n * retry count (see example).\n * * `errorFilter` - An optional synchronous function that is invoked on\n * erroneous result. If it returns `true` the retry attempts will continue;\n * if the function returns `false` the retry flow is aborted with the current\n * attempt's error and result being returned to the final callback.\n * Invoked with (err).\n * * If `opts` is a number, the number specifies the number of times to retry,\n * with the default interval of `0`.\n * @param {AsyncFunction} task - An async function to retry.\n * Invoked with (callback).\n * @param {Function} [callback] - An optional callback which is called when the\n * task has succeeded, or after the final failed attempt. It receives the `err`\n * and `result` arguments of the last attempt at completing the `task`. Invoked\n * with (err, results).\n * @returns {Promise} a promise if no callback provided\n *\n * @example\n *\n * // The `retry` function can be used as a stand-alone control flow by passing\n * // a callback, as shown below:\n *\n * // try calling apiMethod 3 times\n * async.retry(3, apiMethod, function(err, result) {\n * // do something with the result\n * });\n *\n * // try calling apiMethod 3 times, waiting 200 ms between each retry\n * async.retry({times: 3, interval: 200}, apiMethod, function(err, result) {\n * // do something with the result\n * });\n *\n * // try calling apiMethod 10 times with exponential backoff\n * // (i.e. intervals of 100, 200, 400, 800, 1600, ... milliseconds)\n * async.retry({\n * times: 10,\n * interval: function(retryCount) {\n * return 50 * Math.pow(2, retryCount);\n * }\n * }, apiMethod, function(err, result) {\n * // do something with the result\n * });\n *\n * // try calling apiMethod the default 5 times no delay between each retry\n * async.retry(apiMethod, function(err, result) {\n * // do something with the result\n * });\n *\n * // try calling apiMethod only when error condition satisfies, all other\n * // errors will abort the retry control flow and return to final callback\n * async.retry({\n * errorFilter: function(err) {\n * return err.message === 'Temporary error'; // only retry on a specific error\n * }\n * }, apiMethod, function(err, result) {\n * // do something with the result\n * });\n *\n * // to retry individual methods that are not as reliable within other\n * // control flow functions, use the `retryable` wrapper:\n * async.auto({\n * users: api.getUsers.bind(api),\n * payments: async.retryable(3, api.getPayments.bind(api))\n * }, function(err, results) {\n * // do something with the results\n * });\n *\n */\n const DEFAULT_TIMES = 5;\n const DEFAULT_INTERVAL = 0;\n\n function retry(opts, task, callback) {\n var options = {\n times: DEFAULT_TIMES,\n intervalFunc: constant(DEFAULT_INTERVAL)\n };\n\n if (arguments.length < 3 && typeof opts === 'function') {\n callback = task || promiseCallback();\n task = opts;\n } else {\n parseTimes(options, opts);\n callback = callback || promiseCallback();\n }\n\n if (typeof task !== 'function') {\n throw new Error(\"Invalid arguments for async.retry\");\n }\n\n var _task = wrapAsync(task);\n\n var attempt = 1;\n function retryAttempt() {\n _task((err, ...args) => {\n if (err === false) return\n if (err && attempt++ < options.times &&\n (typeof options.errorFilter != 'function' ||\n options.errorFilter(err))) {\n setTimeout(retryAttempt, options.intervalFunc(attempt - 1));\n } else {\n callback(err, ...args);\n }\n });\n }\n\n retryAttempt();\n return callback[PROMISE_SYMBOL]\n }\n\n function parseTimes(acc, t) {\n if (typeof t === 'object') {\n acc.times = +t.times || DEFAULT_TIMES;\n\n acc.intervalFunc = typeof t.interval === 'function' ?\n t.interval :\n constant(+t.interval || DEFAULT_INTERVAL);\n\n acc.errorFilter = t.errorFilter;\n } else if (typeof t === 'number' || typeof t === 'string') {\n acc.times = +t || DEFAULT_TIMES;\n } else {\n throw new Error(\"Invalid arguments for async.retry\");\n }\n }\n\n /**\n * A close relative of [`retry`]{@link module:ControlFlow.retry}. This method\n * wraps a task and makes it retryable, rather than immediately calling it\n * with retries.\n *\n * @name retryable\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @see [async.retry]{@link module:ControlFlow.retry}\n * @category Control Flow\n * @param {Object|number} [opts = {times: 5, interval: 0}| 5] - optional\n * options, exactly the same as from `retry`, except for a `opts.arity` that\n * is the arity of the `task` function, defaulting to `task.length`\n * @param {AsyncFunction} task - the asynchronous function to wrap.\n * This function will be passed any arguments passed to the returned wrapper.\n * Invoked with (...args, callback).\n * @returns {AsyncFunction} The wrapped function, which when invoked, will\n * retry on an error, based on the parameters specified in `opts`.\n * This function will accept the same parameters as `task`.\n * @example\n *\n * async.auto({\n * dep1: async.retryable(3, getFromFlakyService),\n * process: [\"dep1\", async.retryable(3, function (results, cb) {\n * maybeProcessData(results.dep1, cb);\n * })]\n * }, callback);\n */\n function retryable (opts, task) {\n if (!task) {\n task = opts;\n opts = null;\n }\n let arity = (opts && opts.arity) || task.length;\n if (isAsync(task)) {\n arity += 1;\n }\n var _task = wrapAsync(task);\n return initialParams((args, callback) => {\n if (args.length < arity - 1 || callback == null) {\n args.push(callback);\n callback = promiseCallback();\n }\n function taskFn(cb) {\n _task(...args, cb);\n }\n\n if (opts) retry(opts, taskFn, callback);\n else retry(taskFn, callback);\n\n return callback[PROMISE_SYMBOL]\n });\n }\n\n /**\n * Run the functions in the `tasks` collection in series, each one running once\n * the previous function has completed. If any functions in the series pass an\n * error to its callback, no more functions are run, and `callback` is\n * immediately called with the value of the error. Otherwise, `callback`\n * receives an array of results when `tasks` have completed.\n *\n * It is also possible to use an object instead of an array. Each property will\n * be run as a function, and the results will be passed to the final `callback`\n * as an object instead of an array. This can be a more readable way of handling\n * results from {@link async.series}.\n *\n * **Note** that while many implementations preserve the order of object\n * properties, the [ECMAScript Language Specification](http://www.ecma-international.org/ecma-262/5.1/#sec-8.6)\n * explicitly states that\n *\n * > The mechanics and order of enumerating the properties is not specified.\n *\n * So if you rely on the order in which your series of functions are executed,\n * and want this to work on all platforms, consider using an array.\n *\n * @name series\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @category Control Flow\n * @param {Array|Iterable|AsyncIterable|Object} tasks - A collection containing\n * [async functions]{@link AsyncFunction} to run in series.\n * Each function can complete with any number of optional `result` values.\n * @param {Function} [callback] - An optional callback to run once all the\n * functions have completed. This function gets a results array (or object)\n * containing all the result arguments passed to the `task` callbacks. Invoked\n * with (err, result).\n * @return {Promise} a promise, if no callback is passed\n * @example\n *\n * //Using Callbacks\n * async.series([\n * function(callback) {\n * setTimeout(function() {\n * // do some async task\n * callback(null, 'one');\n * }, 200);\n * },\n * function(callback) {\n * setTimeout(function() {\n * // then do another async task\n * callback(null, 'two');\n * }, 100);\n * }\n * ], function(err, results) {\n * console.log(results);\n * // results is equal to ['one','two']\n * });\n *\n * // an example using objects instead of arrays\n * async.series({\n * one: function(callback) {\n * setTimeout(function() {\n * // do some async task\n * callback(null, 1);\n * }, 200);\n * },\n * two: function(callback) {\n * setTimeout(function() {\n * // then do another async task\n * callback(null, 2);\n * }, 100);\n * }\n * }, function(err, results) {\n * console.log(results);\n * // results is equal to: { one: 1, two: 2 }\n * });\n *\n * //Using Promises\n * async.series([\n * function(callback) {\n * setTimeout(function() {\n * callback(null, 'one');\n * }, 200);\n * },\n * function(callback) {\n * setTimeout(function() {\n * callback(null, 'two');\n * }, 100);\n * }\n * ]).then(results => {\n * console.log(results);\n * // results is equal to ['one','two']\n * }).catch(err => {\n * console.log(err);\n * });\n *\n * // an example using an object instead of an array\n * async.series({\n * one: function(callback) {\n * setTimeout(function() {\n * // do some async task\n * callback(null, 1);\n * }, 200);\n * },\n * two: function(callback) {\n * setTimeout(function() {\n * // then do another async task\n * callback(null, 2);\n * }, 100);\n * }\n * }).then(results => {\n * console.log(results);\n * // results is equal to: { one: 1, two: 2 }\n * }).catch(err => {\n * console.log(err);\n * });\n *\n * //Using async/await\n * async () => {\n * try {\n * let results = await async.series([\n * function(callback) {\n * setTimeout(function() {\n * // do some async task\n * callback(null, 'one');\n * }, 200);\n * },\n * function(callback) {\n * setTimeout(function() {\n * // then do another async task\n * callback(null, 'two');\n * }, 100);\n * }\n * ]);\n * console.log(results);\n * // results is equal to ['one','two']\n * }\n * catch (err) {\n * console.log(err);\n * }\n * }\n *\n * // an example using an object instead of an array\n * async () => {\n * try {\n * let results = await async.parallel({\n * one: function(callback) {\n * setTimeout(function() {\n * // do some async task\n * callback(null, 1);\n * }, 200);\n * },\n * two: function(callback) {\n * setTimeout(function() {\n * // then do another async task\n * callback(null, 2);\n * }, 100);\n * }\n * });\n * console.log(results);\n * // results is equal to: { one: 1, two: 2 }\n * }\n * catch (err) {\n * console.log(err);\n * }\n * }\n *\n */\n function series(tasks, callback) {\n return _parallel(eachOfSeries$1, tasks, callback);\n }\n\n /**\n * Returns `true` if at least one element in the `coll` satisfies an async test.\n * If any iteratee call returns `true`, the main `callback` is immediately\n * called.\n *\n * @name some\n * @static\n * @memberOf module:Collections\n * @method\n * @alias any\n * @category Collection\n * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n * @param {AsyncFunction} iteratee - An async truth test to apply to each item\n * in the collections in parallel.\n * The iteratee should complete with a boolean `result` value.\n * Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called as soon as any\n * iteratee returns `true`, or after all the iteratee functions have finished.\n * Result will be either `true` or `false` depending on the values of the async\n * tests. Invoked with (err, result).\n * @returns {Promise} a promise, if no callback provided\n * @example\n *\n * // dir1 is a directory that contains file1.txt, file2.txt\n * // dir2 is a directory that contains file3.txt, file4.txt\n * // dir3 is a directory that contains file5.txt\n * // dir4 does not exist\n *\n * // asynchronous function that checks if a file exists\n * function fileExists(file, callback) {\n * fs.access(file, fs.constants.F_OK, (err) => {\n * callback(null, !err);\n * });\n * }\n *\n * // Using callbacks\n * async.some(['dir1/missing.txt','dir2/missing.txt','dir3/file5.txt'], fileExists,\n * function(err, result) {\n * console.log(result);\n * // true\n * // result is true since some file in the list exists\n * }\n *);\n *\n * async.some(['dir1/missing.txt','dir2/missing.txt','dir4/missing.txt'], fileExists,\n * function(err, result) {\n * console.log(result);\n * // false\n * // result is false since none of the files exists\n * }\n *);\n *\n * // Using Promises\n * async.some(['dir1/missing.txt','dir2/missing.txt','dir3/file5.txt'], fileExists)\n * .then( result => {\n * console.log(result);\n * // true\n * // result is true since some file in the list exists\n * }).catch( err => {\n * console.log(err);\n * });\n *\n * async.some(['dir1/missing.txt','dir2/missing.txt','dir4/missing.txt'], fileExists)\n * .then( result => {\n * console.log(result);\n * // false\n * // result is false since none of the files exists\n * }).catch( err => {\n * console.log(err);\n * });\n *\n * // Using async/await\n * async () => {\n * try {\n * let result = await async.some(['dir1/missing.txt','dir2/missing.txt','dir3/file5.txt'], fileExists);\n * console.log(result);\n * // true\n * // result is true since some file in the list exists\n * }\n * catch (err) {\n * console.log(err);\n * }\n * }\n *\n * async () => {\n * try {\n * let result = await async.some(['dir1/missing.txt','dir2/missing.txt','dir4/missing.txt'], fileExists);\n * console.log(result);\n * // false\n * // result is false since none of the files exists\n * }\n * catch (err) {\n * console.log(err);\n * }\n * }\n *\n */\n function some(coll, iteratee, callback) {\n return _createTester(Boolean, res => res)(eachOf$1, coll, iteratee, callback)\n }\n var some$1 = awaitify(some, 3);\n\n /**\n * The same as [`some`]{@link module:Collections.some} but runs a maximum of `limit` async operations at a time.\n *\n * @name someLimit\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.some]{@link module:Collections.some}\n * @alias anyLimit\n * @category Collection\n * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n * @param {number} limit - The maximum number of async operations at a time.\n * @param {AsyncFunction} iteratee - An async truth test to apply to each item\n * in the collections in parallel.\n * The iteratee should complete with a boolean `result` value.\n * Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called as soon as any\n * iteratee returns `true`, or after all the iteratee functions have finished.\n * Result will be either `true` or `false` depending on the values of the async\n * tests. Invoked with (err, result).\n * @returns {Promise} a promise, if no callback provided\n */\n function someLimit(coll, limit, iteratee, callback) {\n return _createTester(Boolean, res => res)(eachOfLimit$2(limit), coll, iteratee, callback)\n }\n var someLimit$1 = awaitify(someLimit, 4);\n\n /**\n * The same as [`some`]{@link module:Collections.some} but runs only a single async operation at a time.\n *\n * @name someSeries\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.some]{@link module:Collections.some}\n * @alias anySeries\n * @category Collection\n * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n * @param {AsyncFunction} iteratee - An async truth test to apply to each item\n * in the collections in series.\n * The iteratee should complete with a boolean `result` value.\n * Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called as soon as any\n * iteratee returns `true`, or after all the iteratee functions have finished.\n * Result will be either `true` or `false` depending on the values of the async\n * tests. Invoked with (err, result).\n * @returns {Promise} a promise, if no callback provided\n */\n function someSeries(coll, iteratee, callback) {\n return _createTester(Boolean, res => res)(eachOfSeries$1, coll, iteratee, callback)\n }\n var someSeries$1 = awaitify(someSeries, 3);\n\n /**\n * Sorts a list by the results of running each `coll` value through an async\n * `iteratee`.\n *\n * @name sortBy\n * @static\n * @memberOf module:Collections\n * @method\n * @category Collection\n * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n * @param {AsyncFunction} iteratee - An async function to apply to each item in\n * `coll`.\n * The iteratee should complete with a value to use as the sort criteria as\n * its `result`.\n * Invoked with (item, callback).\n * @param {Function} callback - A callback which is called after all the\n * `iteratee` functions have finished, or an error occurs. Results is the items\n * from the original `coll` sorted by the values returned by the `iteratee`\n * calls. Invoked with (err, results).\n * @returns {Promise} a promise, if no callback passed\n * @example\n *\n * // bigfile.txt is a file that is 251100 bytes in size\n * // mediumfile.txt is a file that is 11000 bytes in size\n * // smallfile.txt is a file that is 121 bytes in size\n *\n * // asynchronous function that returns the file size in bytes\n * function getFileSizeInBytes(file, callback) {\n * fs.stat(file, function(err, stat) {\n * if (err) {\n * return callback(err);\n * }\n * callback(null, stat.size);\n * });\n * }\n *\n * // Using callbacks\n * async.sortBy(['mediumfile.txt','smallfile.txt','bigfile.txt'], getFileSizeInBytes,\n * function(err, results) {\n * if (err) {\n * console.log(err);\n * } else {\n * console.log(results);\n * // results is now the original array of files sorted by\n * // file size (ascending by default), e.g.\n * // [ 'smallfile.txt', 'mediumfile.txt', 'bigfile.txt']\n * }\n * }\n * );\n *\n * // By modifying the callback parameter the\n * // sorting order can be influenced:\n *\n * // ascending order\n * async.sortBy(['mediumfile.txt','smallfile.txt','bigfile.txt'], function(file, callback) {\n * getFileSizeInBytes(file, function(getFileSizeErr, fileSize) {\n * if (getFileSizeErr) return callback(getFileSizeErr);\n * callback(null, fileSize);\n * });\n * }, function(err, results) {\n * if (err) {\n * console.log(err);\n * } else {\n * console.log(results);\n * // results is now the original array of files sorted by\n * // file size (ascending by default), e.g.\n * // [ 'smallfile.txt', 'mediumfile.txt', 'bigfile.txt']\n * }\n * }\n * );\n *\n * // descending order\n * async.sortBy(['bigfile.txt','mediumfile.txt','smallfile.txt'], function(file, callback) {\n * getFileSizeInBytes(file, function(getFileSizeErr, fileSize) {\n * if (getFileSizeErr) {\n * return callback(getFileSizeErr);\n * }\n * callback(null, fileSize * -1);\n * });\n * }, function(err, results) {\n * if (err) {\n * console.log(err);\n * } else {\n * console.log(results);\n * // results is now the original array of files sorted by\n * // file size (ascending by default), e.g.\n * // [ 'bigfile.txt', 'mediumfile.txt', 'smallfile.txt']\n * }\n * }\n * );\n *\n * // Error handling\n * async.sortBy(['mediumfile.txt','smallfile.txt','missingfile.txt'], getFileSizeInBytes,\n * function(err, results) {\n * if (err) {\n * console.log(err);\n * // [ Error: ENOENT: no such file or directory ]\n * } else {\n * console.log(results);\n * }\n * }\n * );\n *\n * // Using Promises\n * async.sortBy(['mediumfile.txt','smallfile.txt','bigfile.txt'], getFileSizeInBytes)\n * .then( results => {\n * console.log(results);\n * // results is now the original array of files sorted by\n * // file size (ascending by default), e.g.\n * // [ 'smallfile.txt', 'mediumfile.txt', 'bigfile.txt']\n * }).catch( err => {\n * console.log(err);\n * });\n *\n * // Error handling\n * async.sortBy(['mediumfile.txt','smallfile.txt','missingfile.txt'], getFileSizeInBytes)\n * .then( results => {\n * console.log(results);\n * }).catch( err => {\n * console.log(err);\n * // [ Error: ENOENT: no such file or directory ]\n * });\n *\n * // Using async/await\n * (async () => {\n * try {\n * let results = await async.sortBy(['bigfile.txt','mediumfile.txt','smallfile.txt'], getFileSizeInBytes);\n * console.log(results);\n * // results is now the original array of files sorted by\n * // file size (ascending by default), e.g.\n * // [ 'smallfile.txt', 'mediumfile.txt', 'bigfile.txt']\n * }\n * catch (err) {\n * console.log(err);\n * }\n * })();\n *\n * // Error handling\n * async () => {\n * try {\n * let results = await async.sortBy(['missingfile.txt','mediumfile.txt','smallfile.txt'], getFileSizeInBytes);\n * console.log(results);\n * }\n * catch (err) {\n * console.log(err);\n * // [ Error: ENOENT: no such file or directory ]\n * }\n * }\n *\n */\n function sortBy (coll, iteratee, callback) {\n var _iteratee = wrapAsync(iteratee);\n return map$1(coll, (x, iterCb) => {\n _iteratee(x, (err, criteria) => {\n if (err) return iterCb(err);\n iterCb(err, {value: x, criteria});\n });\n }, (err, results) => {\n if (err) return callback(err);\n callback(null, results.sort(comparator).map(v => v.value));\n });\n\n function comparator(left, right) {\n var a = left.criteria, b = right.criteria;\n return a < b ? -1 : a > b ? 1 : 0;\n }\n }\n var sortBy$1 = awaitify(sortBy, 3);\n\n /**\n * Sets a time limit on an asynchronous function. If the function does not call\n * its callback within the specified milliseconds, it will be called with a\n * timeout error. The code property for the error object will be `'ETIMEDOUT'`.\n *\n * @name timeout\n * @static\n * @memberOf module:Utils\n * @method\n * @category Util\n * @param {AsyncFunction} asyncFn - The async function to limit in time.\n * @param {number} milliseconds - The specified time limit.\n * @param {*} [info] - Any variable you want attached (`string`, `object`, etc)\n * to timeout Error for more information..\n * @returns {AsyncFunction} Returns a wrapped function that can be used with any\n * of the control flow functions.\n * Invoke this function with the same parameters as you would `asyncFunc`.\n * @example\n *\n * function myFunction(foo, callback) {\n * doAsyncTask(foo, function(err, data) {\n * // handle errors\n * if (err) return callback(err);\n *\n * // do some stuff ...\n *\n * // return processed data\n * return callback(null, data);\n * });\n * }\n *\n * var wrapped = async.timeout(myFunction, 1000);\n *\n * // call `wrapped` as you would `myFunction`\n * wrapped({ bar: 'bar' }, function(err, data) {\n * // if `myFunction` takes < 1000 ms to execute, `err`\n * // and `data` will have their expected values\n *\n * // else `err` will be an Error with the code 'ETIMEDOUT'\n * });\n */\n function timeout(asyncFn, milliseconds, info) {\n var fn = wrapAsync(asyncFn);\n\n return initialParams((args, callback) => {\n var timedOut = false;\n var timer;\n\n function timeoutCallback() {\n var name = asyncFn.name || 'anonymous';\n var error = new Error('Callback function \"' + name + '\" timed out.');\n error.code = 'ETIMEDOUT';\n if (info) {\n error.info = info;\n }\n timedOut = true;\n callback(error);\n }\n\n args.push((...cbArgs) => {\n if (!timedOut) {\n callback(...cbArgs);\n clearTimeout(timer);\n }\n });\n\n // setup timer and call original function\n timer = setTimeout(timeoutCallback, milliseconds);\n fn(...args);\n });\n }\n\n function range(size) {\n var result = Array(size);\n while (size--) {\n result[size] = size;\n }\n return result;\n }\n\n /**\n * The same as [times]{@link module:ControlFlow.times} but runs a maximum of `limit` async operations at a\n * time.\n *\n * @name timesLimit\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @see [async.times]{@link module:ControlFlow.times}\n * @category Control Flow\n * @param {number} count - The number of times to run the function.\n * @param {number} limit - The maximum number of async operations at a time.\n * @param {AsyncFunction} iteratee - The async function to call `n` times.\n * Invoked with the iteration index and a callback: (n, next).\n * @param {Function} callback - see [async.map]{@link module:Collections.map}.\n * @returns {Promise} a promise, if no callback is provided\n */\n function timesLimit(count, limit, iteratee, callback) {\n var _iteratee = wrapAsync(iteratee);\n return mapLimit$1(range(count), limit, _iteratee, callback);\n }\n\n /**\n * Calls the `iteratee` function `n` times, and accumulates results in the same\n * manner you would use with [map]{@link module:Collections.map}.\n *\n * @name times\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @see [async.map]{@link module:Collections.map}\n * @category Control Flow\n * @param {number} n - The number of times to run the function.\n * @param {AsyncFunction} iteratee - The async function to call `n` times.\n * Invoked with the iteration index and a callback: (n, next).\n * @param {Function} callback - see {@link module:Collections.map}.\n * @returns {Promise} a promise, if no callback is provided\n * @example\n *\n * // Pretend this is some complicated async factory\n * var createUser = function(id, callback) {\n * callback(null, {\n * id: 'user' + id\n * });\n * };\n *\n * // generate 5 users\n * async.times(5, function(n, next) {\n * createUser(n, function(err, user) {\n * next(err, user);\n * });\n * }, function(err, users) {\n * // we should now have 5 users\n * });\n */\n function times (n, iteratee, callback) {\n return timesLimit(n, Infinity, iteratee, callback)\n }\n\n /**\n * The same as [times]{@link module:ControlFlow.times} but runs only a single async operation at a time.\n *\n * @name timesSeries\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @see [async.times]{@link module:ControlFlow.times}\n * @category Control Flow\n * @param {number} n - The number of times to run the function.\n * @param {AsyncFunction} iteratee - The async function to call `n` times.\n * Invoked with the iteration index and a callback: (n, next).\n * @param {Function} callback - see {@link module:Collections.map}.\n * @returns {Promise} a promise, if no callback is provided\n */\n function timesSeries (n, iteratee, callback) {\n return timesLimit(n, 1, iteratee, callback)\n }\n\n /**\n * A relative of `reduce`. Takes an Object or Array, and iterates over each\n * element in parallel, each step potentially mutating an `accumulator` value.\n * The type of the accumulator defaults to the type of collection passed in.\n *\n * @name transform\n * @static\n * @memberOf module:Collections\n * @method\n * @category Collection\n * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n * @param {*} [accumulator] - The initial state of the transform. If omitted,\n * it will default to an empty Object or Array, depending on the type of `coll`\n * @param {AsyncFunction} iteratee - A function applied to each item in the\n * collection that potentially modifies the accumulator.\n * Invoked with (accumulator, item, key, callback).\n * @param {Function} [callback] - A callback which is called after all the\n * `iteratee` functions have finished. Result is the transformed accumulator.\n * Invoked with (err, result).\n * @returns {Promise} a promise, if no callback provided\n * @example\n *\n * // file1.txt is a file that is 1000 bytes in size\n * // file2.txt is a file that is 2000 bytes in size\n * // file3.txt is a file that is 3000 bytes in size\n *\n * // helper function that returns human-readable size format from bytes\n * function formatBytes(bytes, decimals = 2) {\n * // implementation not included for brevity\n * return humanReadbleFilesize;\n * }\n *\n * const fileList = ['file1.txt','file2.txt','file3.txt'];\n *\n * // asynchronous function that returns the file size, transformed to human-readable format\n * // e.g. 1024 bytes = 1KB, 1234 bytes = 1.21 KB, 1048576 bytes = 1MB, etc.\n * function transformFileSize(acc, value, key, callback) {\n * fs.stat(value, function(err, stat) {\n * if (err) {\n * return callback(err);\n * }\n * acc[key] = formatBytes(stat.size);\n * callback(null);\n * });\n * }\n *\n * // Using callbacks\n * async.transform(fileList, transformFileSize, function(err, result) {\n * if(err) {\n * console.log(err);\n * } else {\n * console.log(result);\n * // [ '1000 Bytes', '1.95 KB', '2.93 KB' ]\n * }\n * });\n *\n * // Using Promises\n * async.transform(fileList, transformFileSize)\n * .then(result => {\n * console.log(result);\n * // [ '1000 Bytes', '1.95 KB', '2.93 KB' ]\n * }).catch(err => {\n * console.log(err);\n * });\n *\n * // Using async/await\n * (async () => {\n * try {\n * let result = await async.transform(fileList, transformFileSize);\n * console.log(result);\n * // [ '1000 Bytes', '1.95 KB', '2.93 KB' ]\n * }\n * catch (err) {\n * console.log(err);\n * }\n * })();\n *\n * @example\n *\n * // file1.txt is a file that is 1000 bytes in size\n * // file2.txt is a file that is 2000 bytes in size\n * // file3.txt is a file that is 3000 bytes in size\n *\n * // helper function that returns human-readable size format from bytes\n * function formatBytes(bytes, decimals = 2) {\n * // implementation not included for brevity\n * return humanReadbleFilesize;\n * }\n *\n * const fileMap = { f1: 'file1.txt', f2: 'file2.txt', f3: 'file3.txt' };\n *\n * // asynchronous function that returns the file size, transformed to human-readable format\n * // e.g. 1024 bytes = 1KB, 1234 bytes = 1.21 KB, 1048576 bytes = 1MB, etc.\n * function transformFileSize(acc, value, key, callback) {\n * fs.stat(value, function(err, stat) {\n * if (err) {\n * return callback(err);\n * }\n * acc[key] = formatBytes(stat.size);\n * callback(null);\n * });\n * }\n *\n * // Using callbacks\n * async.transform(fileMap, transformFileSize, function(err, result) {\n * if(err) {\n * console.log(err);\n * } else {\n * console.log(result);\n * // { f1: '1000 Bytes', f2: '1.95 KB', f3: '2.93 KB' }\n * }\n * });\n *\n * // Using Promises\n * async.transform(fileMap, transformFileSize)\n * .then(result => {\n * console.log(result);\n * // { f1: '1000 Bytes', f2: '1.95 KB', f3: '2.93 KB' }\n * }).catch(err => {\n * console.log(err);\n * });\n *\n * // Using async/await\n * async () => {\n * try {\n * let result = await async.transform(fileMap, transformFileSize);\n * console.log(result);\n * // { f1: '1000 Bytes', f2: '1.95 KB', f3: '2.93 KB' }\n * }\n * catch (err) {\n * console.log(err);\n * }\n * }\n *\n */\n function transform (coll, accumulator, iteratee, callback) {\n if (arguments.length <= 3 && typeof accumulator === 'function') {\n callback = iteratee;\n iteratee = accumulator;\n accumulator = Array.isArray(coll) ? [] : {};\n }\n callback = once(callback || promiseCallback());\n var _iteratee = wrapAsync(iteratee);\n\n eachOf$1(coll, (v, k, cb) => {\n _iteratee(accumulator, v, k, cb);\n }, err => callback(err, accumulator));\n return callback[PROMISE_SYMBOL]\n }\n\n /**\n * It runs each task in series but stops whenever any of the functions were\n * successful. If one of the tasks were successful, the `callback` will be\n * passed the result of the successful task. If all tasks fail, the callback\n * will be passed the error and result (if any) of the final attempt.\n *\n * @name tryEach\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @category Control Flow\n * @param {Array|Iterable|AsyncIterable|Object} tasks - A collection containing functions to\n * run, each function is passed a `callback(err, result)` it must call on\n * completion with an error `err` (which can be `null`) and an optional `result`\n * value.\n * @param {Function} [callback] - An optional callback which is called when one\n * of the tasks has succeeded, or all have failed. It receives the `err` and\n * `result` arguments of the last attempt at completing the `task`. Invoked with\n * (err, results).\n * @returns {Promise} a promise, if no callback is passed\n * @example\n * async.tryEach([\n * function getDataFromFirstWebsite(callback) {\n * // Try getting the data from the first website\n * callback(err, data);\n * },\n * function getDataFromSecondWebsite(callback) {\n * // First website failed,\n * // Try getting the data from the backup website\n * callback(err, data);\n * }\n * ],\n * // optional callback\n * function(err, results) {\n * Now do something with the data.\n * });\n *\n */\n function tryEach(tasks, callback) {\n var error = null;\n var result;\n return eachSeries$1(tasks, (task, taskCb) => {\n wrapAsync(task)((err, ...args) => {\n if (err === false) return taskCb(err);\n\n if (args.length < 2) {\n [result] = args;\n } else {\n result = args;\n }\n error = err;\n taskCb(err ? null : {});\n });\n }, () => callback(error, result));\n }\n\n var tryEach$1 = awaitify(tryEach);\n\n /**\n * Undoes a [memoize]{@link module:Utils.memoize}d function, reverting it to the original,\n * unmemoized form. Handy for testing.\n *\n * @name unmemoize\n * @static\n * @memberOf module:Utils\n * @method\n * @see [async.memoize]{@link module:Utils.memoize}\n * @category Util\n * @param {AsyncFunction} fn - the memoized function\n * @returns {AsyncFunction} a function that calls the original unmemoized function\n */\n function unmemoize(fn) {\n return (...args) => {\n return (fn.unmemoized || fn)(...args);\n };\n }\n\n /**\n * Repeatedly call `iteratee`, while `test` returns `true`. Calls `callback` when\n * stopped, or an error occurs.\n *\n * @name whilst\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @category Control Flow\n * @param {AsyncFunction} test - asynchronous truth test to perform before each\n * execution of `iteratee`. Invoked with (callback).\n * @param {AsyncFunction} iteratee - An async function which is called each time\n * `test` passes. Invoked with (callback).\n * @param {Function} [callback] - A callback which is called after the test\n * function has failed and repeated execution of `iteratee` has stopped. `callback`\n * will be passed an error and any arguments passed to the final `iteratee`'s\n * callback. Invoked with (err, [results]);\n * @returns {Promise} a promise, if no callback is passed\n * @example\n *\n * var count = 0;\n * async.whilst(\n * function test(cb) { cb(null, count < 5); },\n * function iter(callback) {\n * count++;\n * setTimeout(function() {\n * callback(null, count);\n * }, 1000);\n * },\n * function (err, n) {\n * // 5 seconds have passed, n = 5\n * }\n * );\n */\n function whilst(test, iteratee, callback) {\n callback = onlyOnce(callback);\n var _fn = wrapAsync(iteratee);\n var _test = wrapAsync(test);\n var results = [];\n\n function next(err, ...rest) {\n if (err) return callback(err);\n results = rest;\n if (err === false) return;\n _test(check);\n }\n\n function check(err, truth) {\n if (err) return callback(err);\n if (err === false) return;\n if (!truth) return callback(null, ...results);\n _fn(next);\n }\n\n return _test(check);\n }\n var whilst$1 = awaitify(whilst, 3);\n\n /**\n * Repeatedly call `iteratee` until `test` returns `true`. Calls `callback` when\n * stopped, or an error occurs. `callback` will be passed an error and any\n * arguments passed to the final `iteratee`'s callback.\n *\n * The inverse of [whilst]{@link module:ControlFlow.whilst}.\n *\n * @name until\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @see [async.whilst]{@link module:ControlFlow.whilst}\n * @category Control Flow\n * @param {AsyncFunction} test - asynchronous truth test to perform before each\n * execution of `iteratee`. Invoked with (callback).\n * @param {AsyncFunction} iteratee - An async function which is called each time\n * `test` fails. Invoked with (callback).\n * @param {Function} [callback] - A callback which is called after the test\n * function has passed and repeated execution of `iteratee` has stopped. `callback`\n * will be passed an error and any arguments passed to the final `iteratee`'s\n * callback. Invoked with (err, [results]);\n * @returns {Promise} a promise, if a callback is not passed\n *\n * @example\n * const results = []\n * let finished = false\n * async.until(function test(cb) {\n * cb(null, finished)\n * }, function iter(next) {\n * fetchPage(url, (err, body) => {\n * if (err) return next(err)\n * results = results.concat(body.objects)\n * finished = !!body.next\n * next(err)\n * })\n * }, function done (err) {\n * // all pages have been fetched\n * })\n */\n function until(test, iteratee, callback) {\n const _test = wrapAsync(test);\n return whilst$1((cb) => _test((err, truth) => cb (err, !truth)), iteratee, callback);\n }\n\n /**\n * Runs the `tasks` array of functions in series, each passing their results to\n * the next in the array. However, if any of the `tasks` pass an error to their\n * own callback, the next function is not executed, and the main `callback` is\n * immediately called with the error.\n *\n * @name waterfall\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @category Control Flow\n * @param {Array} tasks - An array of [async functions]{@link AsyncFunction}\n * to run.\n * Each function should complete with any number of `result` values.\n * The `result` values will be passed as arguments, in order, to the next task.\n * @param {Function} [callback] - An optional callback to run once all the\n * functions have completed. This will be passed the results of the last task's\n * callback. Invoked with (err, [results]).\n * @returns {Promise} a promise, if a callback is omitted\n * @example\n *\n * async.waterfall([\n * function(callback) {\n * callback(null, 'one', 'two');\n * },\n * function(arg1, arg2, callback) {\n * // arg1 now equals 'one' and arg2 now equals 'two'\n * callback(null, 'three');\n * },\n * function(arg1, callback) {\n * // arg1 now equals 'three'\n * callback(null, 'done');\n * }\n * ], function (err, result) {\n * // result now equals 'done'\n * });\n *\n * // Or, with named functions:\n * async.waterfall([\n * myFirstFunction,\n * mySecondFunction,\n * myLastFunction,\n * ], function (err, result) {\n * // result now equals 'done'\n * });\n * function myFirstFunction(callback) {\n * callback(null, 'one', 'two');\n * }\n * function mySecondFunction(arg1, arg2, callback) {\n * // arg1 now equals 'one' and arg2 now equals 'two'\n * callback(null, 'three');\n * }\n * function myLastFunction(arg1, callback) {\n * // arg1 now equals 'three'\n * callback(null, 'done');\n * }\n */\n function waterfall (tasks, callback) {\n callback = once(callback);\n if (!Array.isArray(tasks)) return callback(new Error('First argument to waterfall must be an array of functions'));\n if (!tasks.length) return callback();\n var taskIndex = 0;\n\n function nextTask(args) {\n var task = wrapAsync(tasks[taskIndex++]);\n task(...args, onlyOnce(next));\n }\n\n function next(err, ...args) {\n if (err === false) return\n if (err || taskIndex === tasks.length) {\n return callback(err, ...args);\n }\n nextTask(args);\n }\n\n nextTask([]);\n }\n\n var waterfall$1 = awaitify(waterfall);\n\n /**\n * An \"async function\" in the context of Async is an asynchronous function with\n * a variable number of parameters, with the final parameter being a callback.\n * (`function (arg1, arg2, ..., callback) {}`)\n * The final callback is of the form `callback(err, results...)`, which must be\n * called once the function is completed. The callback should be called with a\n * Error as its first argument to signal that an error occurred.\n * Otherwise, if no error occurred, it should be called with `null` as the first\n * argument, and any additional `result` arguments that may apply, to signal\n * successful completion.\n * The callback must be called exactly once, ideally on a later tick of the\n * JavaScript event loop.\n *\n * This type of function is also referred to as a \"Node-style async function\",\n * or a \"continuation passing-style function\" (CPS). Most of the methods of this\n * library are themselves CPS/Node-style async functions, or functions that\n * return CPS/Node-style async functions.\n *\n * Wherever we accept a Node-style async function, we also directly accept an\n * [ES2017 `async` function]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function}.\n * In this case, the `async` function will not be passed a final callback\n * argument, and any thrown error will be used as the `err` argument of the\n * implicit callback, and the return value will be used as the `result` value.\n * (i.e. a `rejected` of the returned Promise becomes the `err` callback\n * argument, and a `resolved` value becomes the `result`.)\n *\n * Note, due to JavaScript limitations, we can only detect native `async`\n * functions and not transpilied implementations.\n * Your environment must have `async`/`await` support for this to work.\n * (e.g. Node > v7.6, or a recent version of a modern browser).\n * If you are using `async` functions through a transpiler (e.g. Babel), you\n * must still wrap the function with [asyncify]{@link module:Utils.asyncify},\n * because the `async function` will be compiled to an ordinary function that\n * returns a promise.\n *\n * @typedef {Function} AsyncFunction\n * @static\n */\n\n\n var index = {\n apply,\n applyEach,\n applyEachSeries,\n asyncify,\n auto,\n autoInject,\n cargo: cargo$1,\n cargoQueue: cargo,\n compose,\n concat: concat$1,\n concatLimit: concatLimit$1,\n concatSeries: concatSeries$1,\n constant: constant$1,\n detect: detect$1,\n detectLimit: detectLimit$1,\n detectSeries: detectSeries$1,\n dir,\n doUntil,\n doWhilst: doWhilst$1,\n each,\n eachLimit: eachLimit$1,\n eachOf: eachOf$1,\n eachOfLimit: eachOfLimit$1,\n eachOfSeries: eachOfSeries$1,\n eachSeries: eachSeries$1,\n ensureAsync,\n every: every$1,\n everyLimit: everyLimit$1,\n everySeries: everySeries$1,\n filter: filter$1,\n filterLimit: filterLimit$1,\n filterSeries: filterSeries$1,\n forever: forever$1,\n groupBy,\n groupByLimit: groupByLimit$1,\n groupBySeries,\n log,\n map: map$1,\n mapLimit: mapLimit$1,\n mapSeries: mapSeries$1,\n mapValues,\n mapValuesLimit: mapValuesLimit$1,\n mapValuesSeries,\n memoize,\n nextTick,\n parallel,\n parallelLimit,\n priorityQueue,\n queue,\n race: race$1,\n reduce: reduce$1,\n reduceRight,\n reflect,\n reflectAll,\n reject: reject$1,\n rejectLimit: rejectLimit$1,\n rejectSeries: rejectSeries$1,\n retry,\n retryable,\n seq,\n series,\n setImmediate: setImmediate$1,\n some: some$1,\n someLimit: someLimit$1,\n someSeries: someSeries$1,\n sortBy: sortBy$1,\n timeout,\n times,\n timesLimit,\n timesSeries,\n transform,\n tryEach: tryEach$1,\n unmemoize,\n until,\n waterfall: waterfall$1,\n whilst: whilst$1,\n\n // aliases\n all: every$1,\n allLimit: everyLimit$1,\n allSeries: everySeries$1,\n any: some$1,\n anyLimit: someLimit$1,\n anySeries: someSeries$1,\n find: detect$1,\n findLimit: detectLimit$1,\n findSeries: detectSeries$1,\n flatMap: concat$1,\n flatMapLimit: concatLimit$1,\n flatMapSeries: concatSeries$1,\n forEach: each,\n forEachSeries: eachSeries$1,\n forEachLimit: eachLimit$1,\n forEachOf: eachOf$1,\n forEachOfSeries: eachOfSeries$1,\n forEachOfLimit: eachOfLimit$1,\n inject: reduce$1,\n foldl: reduce$1,\n foldr: reduceRight,\n select: filter$1,\n selectLimit: filterLimit$1,\n selectSeries: filterSeries$1,\n wrapSync: asyncify,\n during: whilst$1,\n doDuring: doWhilst$1\n };\n\n exports.all = every$1;\n exports.allLimit = everyLimit$1;\n exports.allSeries = everySeries$1;\n exports.any = some$1;\n exports.anyLimit = someLimit$1;\n exports.anySeries = someSeries$1;\n exports.apply = apply;\n exports.applyEach = applyEach;\n exports.applyEachSeries = applyEachSeries;\n exports.asyncify = asyncify;\n exports.auto = auto;\n exports.autoInject = autoInject;\n exports.cargo = cargo$1;\n exports.cargoQueue = cargo;\n exports.compose = compose;\n exports.concat = concat$1;\n exports.concatLimit = concatLimit$1;\n exports.concatSeries = concatSeries$1;\n exports.constant = constant$1;\n exports.default = index;\n exports.detect = detect$1;\n exports.detectLimit = detectLimit$1;\n exports.detectSeries = detectSeries$1;\n exports.dir = dir;\n exports.doDuring = doWhilst$1;\n exports.doUntil = doUntil;\n exports.doWhilst = doWhilst$1;\n exports.during = whilst$1;\n exports.each = each;\n exports.eachLimit = eachLimit$1;\n exports.eachOf = eachOf$1;\n exports.eachOfLimit = eachOfLimit$1;\n exports.eachOfSeries = eachOfSeries$1;\n exports.eachSeries = eachSeries$1;\n exports.ensureAsync = ensureAsync;\n exports.every = every$1;\n exports.everyLimit = everyLimit$1;\n exports.everySeries = everySeries$1;\n exports.filter = filter$1;\n exports.filterLimit = filterLimit$1;\n exports.filterSeries = filterSeries$1;\n exports.find = detect$1;\n exports.findLimit = detectLimit$1;\n exports.findSeries = detectSeries$1;\n exports.flatMap = concat$1;\n exports.flatMapLimit = concatLimit$1;\n exports.flatMapSeries = concatSeries$1;\n exports.foldl = reduce$1;\n exports.foldr = reduceRight;\n exports.forEach = each;\n exports.forEachLimit = eachLimit$1;\n exports.forEachOf = eachOf$1;\n exports.forEachOfLimit = eachOfLimit$1;\n exports.forEachOfSeries = eachOfSeries$1;\n exports.forEachSeries = eachSeries$1;\n exports.forever = forever$1;\n exports.groupBy = groupBy;\n exports.groupByLimit = groupByLimit$1;\n exports.groupBySeries = groupBySeries;\n exports.inject = reduce$1;\n exports.log = log;\n exports.map = map$1;\n exports.mapLimit = mapLimit$1;\n exports.mapSeries = mapSeries$1;\n exports.mapValues = mapValues;\n exports.mapValuesLimit = mapValuesLimit$1;\n exports.mapValuesSeries = mapValuesSeries;\n exports.memoize = memoize;\n exports.nextTick = nextTick;\n exports.parallel = parallel;\n exports.parallelLimit = parallelLimit;\n exports.priorityQueue = priorityQueue;\n exports.queue = queue;\n exports.race = race$1;\n exports.reduce = reduce$1;\n exports.reduceRight = reduceRight;\n exports.reflect = reflect;\n exports.reflectAll = reflectAll;\n exports.reject = reject$1;\n exports.rejectLimit = rejectLimit$1;\n exports.rejectSeries = rejectSeries$1;\n exports.retry = retry;\n exports.retryable = retryable;\n exports.select = filter$1;\n exports.selectLimit = filterLimit$1;\n exports.selectSeries = filterSeries$1;\n exports.seq = seq;\n exports.series = series;\n exports.setImmediate = setImmediate$1;\n exports.some = some$1;\n exports.someLimit = someLimit$1;\n exports.someSeries = someSeries$1;\n exports.sortBy = sortBy$1;\n exports.timeout = timeout;\n exports.times = times;\n exports.timesLimit = timesLimit;\n exports.timesSeries = timesSeries;\n exports.transform = transform;\n exports.tryEach = tryEach$1;\n exports.unmemoize = unmemoize;\n exports.until = until;\n exports.waterfall = waterfall$1;\n exports.whilst = whilst$1;\n exports.wrapSync = asyncify;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n}));\n","var constants = require('constants')\n\nvar origCwd = process.cwd\nvar cwd = null\n\nvar platform = process.env.GRACEFUL_FS_PLATFORM || process.platform\n\nprocess.cwd = function() {\n if (!cwd)\n cwd = origCwd.call(process)\n return cwd\n}\ntry {\n process.cwd()\n} catch (er) {}\n\n// This check is needed until node.js 12 is required\nif (typeof process.chdir === 'function') {\n var chdir = process.chdir\n process.chdir = function (d) {\n cwd = null\n chdir.call(process, d)\n }\n if (Object.setPrototypeOf) Object.setPrototypeOf(process.chdir, chdir)\n}\n\nmodule.exports = patch\n\nfunction patch (fs) {\n // (re-)implement some things that are known busted or missing.\n\n // lchmod, broken prior to 0.6.2\n // back-port the fix here.\n if (constants.hasOwnProperty('O_SYMLINK') &&\n process.version.match(/^v0\\.6\\.[0-2]|^v0\\.5\\./)) {\n patchLchmod(fs)\n }\n\n // lutimes implementation, or no-op\n if (!fs.lutimes) {\n patchLutimes(fs)\n }\n\n // https://github.com/isaacs/node-graceful-fs/issues/4\n // Chown should not fail on einval or eperm if non-root.\n // It should not fail on enosys ever, as this just indicates\n // that a fs doesn't support the intended operation.\n\n fs.chown = chownFix(fs.chown)\n fs.fchown = chownFix(fs.fchown)\n fs.lchown = chownFix(fs.lchown)\n\n fs.chmod = chmodFix(fs.chmod)\n fs.fchmod = chmodFix(fs.fchmod)\n fs.lchmod = chmodFix(fs.lchmod)\n\n fs.chownSync = chownFixSync(fs.chownSync)\n fs.fchownSync = chownFixSync(fs.fchownSync)\n fs.lchownSync = chownFixSync(fs.lchownSync)\n\n fs.chmodSync = chmodFixSync(fs.chmodSync)\n fs.fchmodSync = chmodFixSync(fs.fchmodSync)\n fs.lchmodSync = chmodFixSync(fs.lchmodSync)\n\n fs.stat = statFix(fs.stat)\n fs.fstat = statFix(fs.fstat)\n fs.lstat = statFix(fs.lstat)\n\n fs.statSync = statFixSync(fs.statSync)\n fs.fstatSync = statFixSync(fs.fstatSync)\n fs.lstatSync = statFixSync(fs.lstatSync)\n\n // if lchmod/lchown do not exist, then make them no-ops\n if (fs.chmod && !fs.lchmod) {\n fs.lchmod = function (path, mode, cb) {\n if (cb) process.nextTick(cb)\n }\n fs.lchmodSync = function () {}\n }\n if (fs.chown && !fs.lchown) {\n fs.lchown = function (path, uid, gid, cb) {\n if (cb) process.nextTick(cb)\n }\n fs.lchownSync = function () {}\n }\n\n // on Windows, A/V software can lock the directory, causing this\n // to fail with an EACCES or EPERM if the directory contains newly\n // created files. Try again on failure, for up to 60 seconds.\n\n // Set the timeout this long because some Windows Anti-Virus, such as Parity\n // bit9, may lock files for up to a minute, causing npm package install\n // failures. Also, take care to yield the scheduler. Windows scheduling gives\n // CPU to a busy looping process, which can cause the program causing the lock\n // contention to be starved of CPU by node, so the contention doesn't resolve.\n if (platform === \"win32\") {\n fs.rename = typeof fs.rename !== 'function' ? fs.rename\n : (function (fs$rename) {\n function rename (from, to, cb) {\n var start = Date.now()\n var backoff = 0;\n fs$rename(from, to, function CB (er) {\n if (er\n && (er.code === \"EACCES\" || er.code === \"EPERM\" || er.code === \"EBUSY\")\n && Date.now() - start < 60000) {\n setTimeout(function() {\n fs.stat(to, function (stater, st) {\n if (stater && stater.code === \"ENOENT\")\n fs$rename(from, to, CB);\n else\n cb(er)\n })\n }, backoff)\n if (backoff < 100)\n backoff += 10;\n return;\n }\n if (cb) cb(er)\n })\n }\n if (Object.setPrototypeOf) Object.setPrototypeOf(rename, fs$rename)\n return rename\n })(fs.rename)\n }\n\n // if read() returns EAGAIN, then just try it again.\n fs.read = typeof fs.read !== 'function' ? fs.read\n : (function (fs$read) {\n function read (fd, buffer, offset, length, position, callback_) {\n var callback\n if (callback_ && typeof callback_ === 'function') {\n var eagCounter = 0\n callback = function (er, _, __) {\n if (er && er.code === 'EAGAIN' && eagCounter < 10) {\n eagCounter ++\n return fs$read.call(fs, fd, buffer, offset, length, position, callback)\n }\n callback_.apply(this, arguments)\n }\n }\n return fs$read.call(fs, fd, buffer, offset, length, position, callback)\n }\n\n // This ensures `util.promisify` works as it does for native `fs.read`.\n if (Object.setPrototypeOf) Object.setPrototypeOf(read, fs$read)\n return read\n })(fs.read)\n\n fs.readSync = typeof fs.readSync !== 'function' ? fs.readSync\n : (function (fs$readSync) { return function (fd, buffer, offset, length, position) {\n var eagCounter = 0\n while (true) {\n try {\n return fs$readSync.call(fs, fd, buffer, offset, length, position)\n } catch (er) {\n if (er.code === 'EAGAIN' && eagCounter < 10) {\n eagCounter ++\n continue\n }\n throw er\n }\n }\n }})(fs.readSync)\n\n function patchLchmod (fs) {\n fs.lchmod = function (path, mode, callback) {\n fs.open( path\n , constants.O_WRONLY | constants.O_SYMLINK\n , mode\n , function (err, fd) {\n if (err) {\n if (callback) callback(err)\n return\n }\n // prefer to return the chmod error, if one occurs,\n // but still try to close, and report closing errors if they occur.\n fs.fchmod(fd, mode, function (err) {\n fs.close(fd, function(err2) {\n if (callback) callback(err || err2)\n })\n })\n })\n }\n\n fs.lchmodSync = function (path, mode) {\n var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode)\n\n // prefer to return the chmod error, if one occurs,\n // but still try to close, and report closing errors if they occur.\n var threw = true\n var ret\n try {\n ret = fs.fchmodSync(fd, mode)\n threw = false\n } finally {\n if (threw) {\n try {\n fs.closeSync(fd)\n } catch (er) {}\n } else {\n fs.closeSync(fd)\n }\n }\n return ret\n }\n }\n\n function patchLutimes (fs) {\n if (constants.hasOwnProperty(\"O_SYMLINK\") && fs.futimes) {\n fs.lutimes = function (path, at, mt, cb) {\n fs.open(path, constants.O_SYMLINK, function (er, fd) {\n if (er) {\n if (cb) cb(er)\n return\n }\n fs.futimes(fd, at, mt, function (er) {\n fs.close(fd, function (er2) {\n if (cb) cb(er || er2)\n })\n })\n })\n }\n\n fs.lutimesSync = function (path, at, mt) {\n var fd = fs.openSync(path, constants.O_SYMLINK)\n var ret\n var threw = true\n try {\n ret = fs.futimesSync(fd, at, mt)\n threw = false\n } finally {\n if (threw) {\n try {\n fs.closeSync(fd)\n } catch (er) {}\n } else {\n fs.closeSync(fd)\n }\n }\n return ret\n }\n\n } else if (fs.futimes) {\n fs.lutimes = function (_a, _b, _c, cb) { if (cb) process.nextTick(cb) }\n fs.lutimesSync = function () {}\n }\n }\n\n function chmodFix (orig) {\n if (!orig) return orig\n return function (target, mode, cb) {\n return orig.call(fs, target, mode, function (er) {\n if (chownErOk(er)) er = null\n if (cb) cb.apply(this, arguments)\n })\n }\n }\n\n function chmodFixSync (orig) {\n if (!orig) return orig\n return function (target, mode) {\n try {\n return orig.call(fs, target, mode)\n } catch (er) {\n if (!chownErOk(er)) throw er\n }\n }\n }\n\n\n function chownFix (orig) {\n if (!orig) return orig\n return function (target, uid, gid, cb) {\n return orig.call(fs, target, uid, gid, function (er) {\n if (chownErOk(er)) er = null\n if (cb) cb.apply(this, arguments)\n })\n }\n }\n\n function chownFixSync (orig) {\n if (!orig) return orig\n return function (target, uid, gid) {\n try {\n return orig.call(fs, target, uid, gid)\n } catch (er) {\n if (!chownErOk(er)) throw er\n }\n }\n }\n\n function statFix (orig) {\n if (!orig) return orig\n // Older versions of Node erroneously returned signed integers for\n // uid + gid.\n return function (target, options, cb) {\n if (typeof options === 'function') {\n cb = options\n options = null\n }\n function callback (er, stats) {\n if (stats) {\n if (stats.uid < 0) stats.uid += 0x100000000\n if (stats.gid < 0) stats.gid += 0x100000000\n }\n if (cb) cb.apply(this, arguments)\n }\n return options ? orig.call(fs, target, options, callback)\n : orig.call(fs, target, callback)\n }\n }\n\n function statFixSync (orig) {\n if (!orig) return orig\n // Older versions of Node erroneously returned signed integers for\n // uid + gid.\n return function (target, options) {\n var stats = options ? orig.call(fs, target, options)\n : orig.call(fs, target)\n if (stats) {\n if (stats.uid < 0) stats.uid += 0x100000000\n if (stats.gid < 0) stats.gid += 0x100000000\n }\n return stats;\n }\n }\n\n // ENOSYS means that the fs doesn't support the op. Just ignore\n // that, because it doesn't matter.\n //\n // if there's no getuid, or if getuid() is something other\n // than 0, and the error is EINVAL or EPERM, then just ignore\n // it.\n //\n // This specific case is a silent failure in cp, install, tar,\n // and most other unix tools that manage permissions.\n //\n // When running as root, or if other types of errors are\n // encountered, then it's strict.\n function chownErOk (er) {\n if (!er)\n return true\n\n if (er.code === \"ENOSYS\")\n return true\n\n var nonroot = !process.getuid || process.getuid() !== 0\n if (nonroot) {\n if (er.code === \"EINVAL\" || er.code === \"EPERM\")\n return true\n }\n\n return false\n }\n}\n","var Stream = require('stream').Stream\n\nmodule.exports = legacy\n\nfunction legacy (fs) {\n return {\n ReadStream: ReadStream,\n WriteStream: WriteStream\n }\n\n function ReadStream (path, options) {\n if (!(this instanceof ReadStream)) return new ReadStream(path, options);\n\n Stream.call(this);\n\n var self = this;\n\n this.path = path;\n this.fd = null;\n this.readable = true;\n this.paused = false;\n\n this.flags = 'r';\n this.mode = 438; /*=0666*/\n this.bufferSize = 64 * 1024;\n\n options = options || {};\n\n // Mixin options into this\n var keys = Object.keys(options);\n for (var index = 0, length = keys.length; index < length; index++) {\n var key = keys[index];\n this[key] = options[key];\n }\n\n if (this.encoding) this.setEncoding(this.encoding);\n\n if (this.start !== undefined) {\n if ('number' !== typeof this.start) {\n throw TypeError('start must be a Number');\n }\n if (this.end === undefined) {\n this.end = Infinity;\n } else if ('number' !== typeof this.end) {\n throw TypeError('end must be a Number');\n }\n\n if (this.start > this.end) {\n throw new Error('start must be <= end');\n }\n\n this.pos = this.start;\n }\n\n if (this.fd !== null) {\n process.nextTick(function() {\n self._read();\n });\n return;\n }\n\n fs.open(this.path, this.flags, this.mode, function (err, fd) {\n if (err) {\n self.emit('error', err);\n self.readable = false;\n return;\n }\n\n self.fd = fd;\n self.emit('open', fd);\n self._read();\n })\n }\n\n function WriteStream (path, options) {\n if (!(this instanceof WriteStream)) return new WriteStream(path, options);\n\n Stream.call(this);\n\n this.path = path;\n this.fd = null;\n this.writable = true;\n\n this.flags = 'w';\n this.encoding = 'binary';\n this.mode = 438; /*=0666*/\n this.bytesWritten = 0;\n\n options = options || {};\n\n // Mixin options into this\n var keys = Object.keys(options);\n for (var index = 0, length = keys.length; index < length; index++) {\n var key = keys[index];\n this[key] = options[key];\n }\n\n if (this.start !== undefined) {\n if ('number' !== typeof this.start) {\n throw TypeError('start must be a Number');\n }\n if (this.start < 0) {\n throw new Error('start must be >= zero');\n }\n\n this.pos = this.start;\n }\n\n this.busy = false;\n this._queue = [];\n\n if (this.fd === null) {\n this._open = fs.open;\n this._queue.push([this._open, this.path, this.flags, this.mode, undefined]);\n this.flush();\n }\n }\n}\n","'use strict'\n\nmodule.exports = clone\n\nvar getPrototypeOf = Object.getPrototypeOf || function (obj) {\n return obj.__proto__\n}\n\nfunction clone (obj) {\n if (obj === null || typeof obj !== 'object')\n return obj\n\n if (obj instanceof Object)\n var copy = { __proto__: getPrototypeOf(obj) }\n else\n var copy = Object.create(null)\n\n Object.getOwnPropertyNames(obj).forEach(function (key) {\n Object.defineProperty(copy, key, Object.getOwnPropertyDescriptor(obj, key))\n })\n\n return copy\n}\n","var fs = require('fs')\nvar polyfills = require('./polyfills.js')\nvar legacy = require('./legacy-streams.js')\nvar clone = require('./clone.js')\n\nvar util = require('util')\n\n/* istanbul ignore next - node 0.x polyfill */\nvar gracefulQueue\nvar previousSymbol\n\n/* istanbul ignore else - node 0.x polyfill */\nif (typeof Symbol === 'function' && typeof Symbol.for === 'function') {\n gracefulQueue = Symbol.for('graceful-fs.queue')\n // This is used in testing by future versions\n previousSymbol = Symbol.for('graceful-fs.previous')\n} else {\n gracefulQueue = '___graceful-fs.queue'\n previousSymbol = '___graceful-fs.previous'\n}\n\nfunction noop () {}\n\nfunction publishQueue(context, queue) {\n Object.defineProperty(context, gracefulQueue, {\n get: function() {\n return queue\n }\n })\n}\n\nvar debug = noop\nif (util.debuglog)\n debug = util.debuglog('gfs4')\nelse if (/\\bgfs4\\b/i.test(process.env.NODE_DEBUG || ''))\n debug = function() {\n var m = util.format.apply(util, arguments)\n m = 'GFS4: ' + m.split(/\\n/).join('\\nGFS4: ')\n console.error(m)\n }\n\n// Once time initialization\nif (!fs[gracefulQueue]) {\n // This queue can be shared by multiple loaded instances\n var queue = global[gracefulQueue] || []\n publishQueue(fs, queue)\n\n // Patch fs.close/closeSync to shared queue version, because we need\n // to retry() whenever a close happens *anywhere* in the program.\n // This is essential when multiple graceful-fs instances are\n // in play at the same time.\n fs.close = (function (fs$close) {\n function close (fd, cb) {\n return fs$close.call(fs, fd, function (err) {\n // This function uses the graceful-fs shared queue\n if (!err) {\n resetQueue()\n }\n\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n })\n }\n\n Object.defineProperty(close, previousSymbol, {\n value: fs$close\n })\n return close\n })(fs.close)\n\n fs.closeSync = (function (fs$closeSync) {\n function closeSync (fd) {\n // This function uses the graceful-fs shared queue\n fs$closeSync.apply(fs, arguments)\n resetQueue()\n }\n\n Object.defineProperty(closeSync, previousSymbol, {\n value: fs$closeSync\n })\n return closeSync\n })(fs.closeSync)\n\n if (/\\bgfs4\\b/i.test(process.env.NODE_DEBUG || '')) {\n process.on('exit', function() {\n debug(fs[gracefulQueue])\n require('assert').equal(fs[gracefulQueue].length, 0)\n })\n }\n}\n\nif (!global[gracefulQueue]) {\n publishQueue(global, fs[gracefulQueue]);\n}\n\nmodule.exports = patch(clone(fs))\nif (process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH && !fs.__patched) {\n module.exports = patch(fs)\n fs.__patched = true;\n}\n\nfunction patch (fs) {\n // Everything that references the open() function needs to be in here\n polyfills(fs)\n fs.gracefulify = patch\n\n fs.createReadStream = createReadStream\n fs.createWriteStream = createWriteStream\n var fs$readFile = fs.readFile\n fs.readFile = readFile\n function readFile (path, options, cb) {\n if (typeof options === 'function')\n cb = options, options = null\n\n return go$readFile(path, options, cb)\n\n function go$readFile (path, options, cb, startTime) {\n return fs$readFile(path, options, function (err) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$readFile, [path, options, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n var fs$writeFile = fs.writeFile\n fs.writeFile = writeFile\n function writeFile (path, data, options, cb) {\n if (typeof options === 'function')\n cb = options, options = null\n\n return go$writeFile(path, data, options, cb)\n\n function go$writeFile (path, data, options, cb, startTime) {\n return fs$writeFile(path, data, options, function (err) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$writeFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n var fs$appendFile = fs.appendFile\n if (fs$appendFile)\n fs.appendFile = appendFile\n function appendFile (path, data, options, cb) {\n if (typeof options === 'function')\n cb = options, options = null\n\n return go$appendFile(path, data, options, cb)\n\n function go$appendFile (path, data, options, cb, startTime) {\n return fs$appendFile(path, data, options, function (err) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$appendFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n var fs$copyFile = fs.copyFile\n if (fs$copyFile)\n fs.copyFile = copyFile\n function copyFile (src, dest, flags, cb) {\n if (typeof flags === 'function') {\n cb = flags\n flags = 0\n }\n return go$copyFile(src, dest, flags, cb)\n\n function go$copyFile (src, dest, flags, cb, startTime) {\n return fs$copyFile(src, dest, flags, function (err) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$copyFile, [src, dest, flags, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n var fs$readdir = fs.readdir\n fs.readdir = readdir\n var noReaddirOptionVersions = /^v[0-5]\\./\n function readdir (path, options, cb) {\n if (typeof options === 'function')\n cb = options, options = null\n\n var go$readdir = noReaddirOptionVersions.test(process.version)\n ? function go$readdir (path, options, cb, startTime) {\n return fs$readdir(path, fs$readdirCallback(\n path, options, cb, startTime\n ))\n }\n : function go$readdir (path, options, cb, startTime) {\n return fs$readdir(path, options, fs$readdirCallback(\n path, options, cb, startTime\n ))\n }\n\n return go$readdir(path, options, cb)\n\n function fs$readdirCallback (path, options, cb, startTime) {\n return function (err, files) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([\n go$readdir,\n [path, options, cb],\n err,\n startTime || Date.now(),\n Date.now()\n ])\n else {\n if (files && files.sort)\n files.sort()\n\n if (typeof cb === 'function')\n cb.call(this, err, files)\n }\n }\n }\n }\n\n if (process.version.substr(0, 4) === 'v0.8') {\n var legStreams = legacy(fs)\n ReadStream = legStreams.ReadStream\n WriteStream = legStreams.WriteStream\n }\n\n var fs$ReadStream = fs.ReadStream\n if (fs$ReadStream) {\n ReadStream.prototype = Object.create(fs$ReadStream.prototype)\n ReadStream.prototype.open = ReadStream$open\n }\n\n var fs$WriteStream = fs.WriteStream\n if (fs$WriteStream) {\n WriteStream.prototype = Object.create(fs$WriteStream.prototype)\n WriteStream.prototype.open = WriteStream$open\n }\n\n Object.defineProperty(fs, 'ReadStream', {\n get: function () {\n return ReadStream\n },\n set: function (val) {\n ReadStream = val\n },\n enumerable: true,\n configurable: true\n })\n Object.defineProperty(fs, 'WriteStream', {\n get: function () {\n return WriteStream\n },\n set: function (val) {\n WriteStream = val\n },\n enumerable: true,\n configurable: true\n })\n\n // legacy names\n var FileReadStream = ReadStream\n Object.defineProperty(fs, 'FileReadStream', {\n get: function () {\n return FileReadStream\n },\n set: function (val) {\n FileReadStream = val\n },\n enumerable: true,\n configurable: true\n })\n var FileWriteStream = WriteStream\n Object.defineProperty(fs, 'FileWriteStream', {\n get: function () {\n return FileWriteStream\n },\n set: function (val) {\n FileWriteStream = val\n },\n enumerable: true,\n configurable: true\n })\n\n function ReadStream (path, options) {\n if (this instanceof ReadStream)\n return fs$ReadStream.apply(this, arguments), this\n else\n return ReadStream.apply(Object.create(ReadStream.prototype), arguments)\n }\n\n function ReadStream$open () {\n var that = this\n open(that.path, that.flags, that.mode, function (err, fd) {\n if (err) {\n if (that.autoClose)\n that.destroy()\n\n that.emit('error', err)\n } else {\n that.fd = fd\n that.emit('open', fd)\n that.read()\n }\n })\n }\n\n function WriteStream (path, options) {\n if (this instanceof WriteStream)\n return fs$WriteStream.apply(this, arguments), this\n else\n return WriteStream.apply(Object.create(WriteStream.prototype), arguments)\n }\n\n function WriteStream$open () {\n var that = this\n open(that.path, that.flags, that.mode, function (err, fd) {\n if (err) {\n that.destroy()\n that.emit('error', err)\n } else {\n that.fd = fd\n that.emit('open', fd)\n }\n })\n }\n\n function createReadStream (path, options) {\n return new fs.ReadStream(path, options)\n }\n\n function createWriteStream (path, options) {\n return new fs.WriteStream(path, options)\n }\n\n var fs$open = fs.open\n fs.open = open\n function open (path, flags, mode, cb) {\n if (typeof mode === 'function')\n cb = mode, mode = null\n\n return go$open(path, flags, mode, cb)\n\n function go$open (path, flags, mode, cb, startTime) {\n return fs$open(path, flags, mode, function (err, fd) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$open, [path, flags, mode, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n return fs\n}\n\nfunction enqueue (elem) {\n debug('ENQUEUE', elem[0].name, elem[1])\n fs[gracefulQueue].push(elem)\n retry()\n}\n\n// keep track of the timeout between retry() calls\nvar retryTimer\n\n// reset the startTime and lastTime to now\n// this resets the start of the 60 second overall timeout as well as the\n// delay between attempts so that we'll retry these jobs sooner\nfunction resetQueue () {\n var now = Date.now()\n for (var i = 0; i < fs[gracefulQueue].length; ++i) {\n // entries that are only a length of 2 are from an older version, don't\n // bother modifying those since they'll be retried anyway.\n if (fs[gracefulQueue][i].length > 2) {\n fs[gracefulQueue][i][3] = now // startTime\n fs[gracefulQueue][i][4] = now // lastTime\n }\n }\n // call retry to make sure we're actively processing the queue\n retry()\n}\n\nfunction retry () {\n // clear the timer and remove it to help prevent unintended concurrency\n clearTimeout(retryTimer)\n retryTimer = undefined\n\n if (fs[gracefulQueue].length === 0)\n return\n\n var elem = fs[gracefulQueue].shift()\n var fn = elem[0]\n var args = elem[1]\n // these items may be unset if they were added by an older graceful-fs\n var err = elem[2]\n var startTime = elem[3]\n var lastTime = elem[4]\n\n // if we don't have a startTime we have no way of knowing if we've waited\n // long enough, so go ahead and retry this item now\n if (startTime === undefined) {\n debug('RETRY', fn.name, args)\n fn.apply(null, args)\n } else if (Date.now() - startTime >= 60000) {\n // it's been more than 60 seconds total, bail now\n debug('TIMEOUT', fn.name, args)\n var cb = args.pop()\n if (typeof cb === 'function')\n cb.call(null, err)\n } else {\n // the amount of time between the last attempt and right now\n var sinceAttempt = Date.now() - lastTime\n // the amount of time between when we first tried, and when we last tried\n // rounded up to at least 1\n var sinceStart = Math.max(lastTime - startTime, 1)\n // backoff. wait longer than the total time we've been retrying, but only\n // up to a maximum of 100ms\n var desiredDelay = Math.min(sinceStart * 1.2, 100)\n // it's been long enough since the last retry, do it again\n if (sinceAttempt >= desiredDelay) {\n debug('RETRY', fn.name, args)\n fn.apply(null, args.concat([startTime]))\n } else {\n // if we can't do this job yet, push it to the end of the queue\n // and let the next iteration check again\n fs[gracefulQueue].push(elem)\n }\n }\n\n // schedule our next run if one isn't already scheduled\n if (retryTimer === undefined) {\n retryTimer = setTimeout(retry, 0)\n }\n}\n","'use strict';\n\nconst isStream = stream =>\n\tstream !== null &&\n\ttypeof stream === 'object' &&\n\ttypeof stream.pipe === 'function';\n\nisStream.writable = stream =>\n\tisStream(stream) &&\n\tstream.writable !== false &&\n\ttypeof stream._write === 'function' &&\n\ttypeof stream._writableState === 'object';\n\nisStream.readable = stream =>\n\tisStream(stream) &&\n\tstream.readable !== false &&\n\ttypeof stream._read === 'function' &&\n\ttypeof stream._readableState === 'object';\n\nisStream.duplex = stream =>\n\tisStream.writable(stream) &&\n\tisStream.readable(stream);\n\nisStream.transform = stream =>\n\tisStream.duplex(stream) &&\n\ttypeof stream._transform === 'function';\n\nmodule.exports = isStream;\n","'use strict';\n\nif (typeof process === 'undefined' ||\n !process.version ||\n process.version.indexOf('v0.') === 0 ||\n process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {\n module.exports = { nextTick: nextTick };\n} else {\n module.exports = process\n}\n\nfunction nextTick(fn, arg1, arg2, arg3) {\n if (typeof fn !== 'function') {\n throw new TypeError('\"callback\" argument must be a function');\n }\n var len = arguments.length;\n var args, i;\n switch (len) {\n case 0:\n case 1:\n return process.nextTick(fn);\n case 2:\n return process.nextTick(function afterTickOne() {\n fn.call(null, arg1);\n });\n case 3:\n return process.nextTick(function afterTickTwo() {\n fn.call(null, arg1, arg2);\n });\n case 4:\n return process.nextTick(function afterTickThree() {\n fn.call(null, arg1, arg2, arg3);\n });\n default:\n args = new Array(len - 1);\n i = 0;\n while (i < args.length) {\n args[i++] = arguments[i];\n }\n return process.nextTick(function afterTick() {\n fn.apply(null, args);\n });\n }\n}\n\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","module.exports = require('stream');\n","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\n\nfunction isArray(arg) {\n if (Array.isArray) {\n return Array.isArray(arg);\n }\n return objectToString(arg) === '[object Array]';\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('buffer').Buffer.isBuffer;\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","try {\n var util = require('util');\n /* istanbul ignore next */\n if (typeof util.inherits !== 'function') throw '';\n module.exports = util.inherits;\n} catch (e) {\n /* istanbul ignore next */\n module.exports = require('./inherits_browser.js');\n}\n","'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Buffer = require('safe-buffer').Buffer;\nvar util = require('util');\n\nfunction copyBuffer(src, target, offset) {\n src.copy(target, offset);\n}\n\nmodule.exports = function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n BufferList.prototype.push = function push(v) {\n var entry = { data: v, next: null };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n };\n\n BufferList.prototype.unshift = function unshift(v) {\n var entry = { data: v, next: this.head };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n };\n\n BufferList.prototype.shift = function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n };\n\n BufferList.prototype.clear = function clear() {\n this.head = this.tail = null;\n this.length = 0;\n };\n\n BufferList.prototype.join = function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) {\n ret += s + p.data;\n }return ret;\n };\n\n BufferList.prototype.concat = function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n };\n\n return BufferList;\n}();\n\nif (util && util.inspect && util.inspect.custom) {\n module.exports.prototype[util.inspect.custom] = function () {\n var obj = util.inspect({ length: this.length });\n return this.constructor.name + ' ' + obj;\n };\n}","'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n pna.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n pna.nextTick(emitErrorNT, this, err);\n }\n }\n\n return this;\n }\n\n // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n }\n\n // if this is a duplex stream mark the writable part as destroyed as well\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n pna.nextTick(emitErrorNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n pna.nextTick(emitErrorNT, _this, err);\n }\n } else if (cb) {\n cb(err);\n }\n });\n\n return this;\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy\n};","\n/**\n * For Node.js, simply re-export the core `util.deprecate` function.\n */\n\nmodule.exports = require('util').deprecate;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\nmodule.exports = Writable;\n\n/* <replacement> */\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* </replacement> */\n\n/*<replacement>*/\nvar asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;\n/*</replacement>*/\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nWritable.WritableState = WritableState;\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\n/*<replacement>*/\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/*</replacement>*/\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nutil.inherits(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n var hwm = options.highWaterMark;\n var writableHwm = options.writableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // if _final has been called\n this.finalCalled = false;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function () {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function (object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function (object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {\n return new Writable(options);\n }\n\n this._writableState = new WritableState(options, this);\n\n // legacy.\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n\n if (typeof options.writev === 'function') this._writev = options.writev;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n this.emit('error', new Error('Cannot pipe, not readable'));\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new Error('write after end');\n // TODO: defer error events consistently everywhere, not just the cb\n stream.emit('error', er);\n pna.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n var valid = true;\n var er = false;\n\n if (chunk === null) {\n er = new TypeError('May not write null values to stream');\n } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n if (er) {\n stream.emit('error', er);\n pna.nextTick(cb, er);\n valid = false;\n }\n return valid;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n\n if (typeof cb !== 'function') cb = nop;\n\n if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n\n return ret;\n};\n\nWritable.prototype.cork = function () {\n var state = this._writableState;\n\n state.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n var len = state.objectMode ? 1 : chunk.length;\n\n state.length += len;\n\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n pna.nextTick(cb, er);\n // this can emit finish, and it will always happen\n // after error\n pna.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n // this can emit finish, but finish must\n // always follow error\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n\n onwriteStateUpdate(state);\n\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state);\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n /*<replacement>*/\n asyncWrite(afterWrite, stream, state, finished, cb);\n /*</replacement>*/\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n\n var count = 0;\n var allBuffers = true;\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n buffer.allBuffers = allBuffers;\n\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new Error('_write() is not implemented'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending) endWritable(this, state, cb);\n};\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n if (err) {\n stream.emit('error', err);\n }\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function') {\n state.pendingcb++;\n state.finalCalled = true;\n pna.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n prefinish(stream, state);\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n }\n }\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) pna.nextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n\n // reuse the free corkReq.\n state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n get: function () {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._writableState.destroyed = value;\n }\n});\n\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n this.end();\n cb(err);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\n/*<replacement>*/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) {\n keys.push(key);\n }return keys;\n};\n/*</replacement>*/\n\nmodule.exports = Duplex;\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\n\nutil.inherits(Duplex, Readable);\n\n{\n // avoid scope creep, the keys array can then be collected\n var keys = objectKeys(Writable.prototype);\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n\n Readable.call(this, options);\n Writable.call(this, options);\n\n if (options && options.readable === false) this.readable = false;\n\n if (options && options.writable === false) this.writable = false;\n\n this.allowHalfOpen = true;\n if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;\n\n this.once('end', onend);\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n // if we allow half-open state, or if the writable side ended,\n // then we're ok.\n if (this.allowHalfOpen || this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n pna.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});\n\nDuplex.prototype._destroy = function (err, cb) {\n this.push(null);\n this.end();\n\n pna.nextTick(cb, err);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\n/*</replacement>*/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\nmodule.exports = Readable;\n\n/*<replacement>*/\nvar isArray = require('isarray');\n/*</replacement>*/\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nReadable.ReadableState = ReadableState;\n\n/*<replacement>*/\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function (emitter, type) {\n return emitter.listeners(type).length;\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/*</replacement>*/\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\n/*<replacement>*/\nvar debugUtil = require('util');\nvar debug = void 0;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function () {};\n}\n/*</replacement>*/\n\nvar BufferList = require('./internal/streams/BufferList');\nvar destroyImpl = require('./internal/streams/destroy');\nvar StringDecoder;\n\nutil.inherits(Readable, Stream);\n\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n var hwm = options.highWaterMark;\n var readableHwm = options.readableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n if (!(this instanceof Readable)) return new Readable(options);\n\n this._readableState = new ReadableState(options, this);\n\n // legacy\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n }\n});\n\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n this.push(null);\n cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n var state = stream._readableState;\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n if (er) {\n stream.emit('error', er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n stream.emit('error', new Error('stream.push() after EOF'));\n } else {\n state.reading = false;\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n }\n }\n\n return needMoreData(state);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n stream.emit('data', chunk);\n stream.read(0);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n\n if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n return er;\n}\n\n// if it's past the high water mark, we can push in some more.\n// Also, if we have no data yet, we can stand some\n// more bytes. This is to work around cases where hwm=0,\n// such as the repl. Also, if the push() triggered a\n// readable event, and the user called read(largeNumber) such that\n// needReadable was set, then we ought to push more, so that another\n// 'readable' event will be triggered.\nfunction needMoreData(state) {\n return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this._readableState.decoder = new StringDecoder(enc);\n this._readableState.encoding = enc;\n return this;\n};\n\n// Don't raise the hwm > 8MB\nvar MAX_HWM = 0x800000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = true;\n n = 0;\n } else {\n state.length -= n;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n\n // emit 'readable' now to make sure it gets picked up.\n emitReadable(stream);\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream);\n }\n}\n\nfunction emitReadable_(stream) {\n debug('emit readable');\n stream.emit('readable');\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n pna.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n var len = state.length;\n while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;else len = state.length;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n this.emit('error', new Error('_read() is not implemented'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn);\n\n dest.on('unpipe', onunpipe);\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n // If the user pushes more data while we're writing to dest then we'll end up\n // in ondata again. However, we only want to increase awaitDrain once because\n // dest will only emit one 'drain' event for the multiple writes.\n // => Introduce a guard on increasing awaitDrain.\n var increasedAwaitDrain = false;\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n increasedAwaitDrain = false;\n var ret = dest.write(chunk);\n if (false === ret && !increasedAwaitDrain) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n increasedAwaitDrain = true;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function () {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = { hasUnpiped: false };\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, { hasUnpiped: false });\n }return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n\n dest.emit('unpipe', this, unpipeInfo);\n\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n\n if (ev === 'data') {\n // Start flowing on next tick if stream isn't explicitly paused\n if (this._readableState.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n var state = this._readableState;\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.emittedReadable = false;\n if (!state.reading) {\n pna.nextTick(nReadingNextTick, this);\n } else if (state.length) {\n emitReadable(this);\n }\n }\n }\n\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n state.flowing = true;\n resume(this, state);\n }\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n pna.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n if (!state.reading) {\n debug('resume read 0');\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n state.awaitDrain = 0;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (false !== this._readableState.flowing) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null) {}\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function (method) {\n return function () {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n this._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._readableState.highWaterMark;\n }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = fromListPartial(n, state.buffer, state.decoder);\n }\n\n return ret;\n}\n\n// Extracts only enough buffered data to satisfy the amount requested.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromListPartial(n, list, hasStrings) {\n var ret;\n if (n < list.head.data.length) {\n // slice is the same for buffers and strings\n ret = list.head.data.slice(0, n);\n list.head.data = list.head.data.slice(n);\n } else if (n === list.head.data.length) {\n // first chunk is a perfect match\n ret = list.shift();\n } else {\n // result spans more than one buffer\n ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);\n }\n return ret;\n}\n\n// Copies a specified amount of characters from the list of buffered data\n// chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBufferString(n, list) {\n var p = list.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\n// Copies a specified amount of bytes from the list of buffered data chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBuffer(n, list) {\n var ret = Buffer.allocUnsafe(n);\n var p = list.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n\n // If we get here before consuming all the bytes, then that is a\n // bug in node. Should never happen.\n if (state.length > 0) throw new Error('\"endReadable()\" called on non-empty stream');\n\n if (!state.endEmitted) {\n state.ended = true;\n pna.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n }\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\n\nvar Duplex = require('./_stream_duplex');\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nutil.inherits(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n\n var cb = ts.writecb;\n\n if (!cb) {\n return this.emit('error', new Error('write callback called multiple times'));\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n\n cb(er);\n\n var rs = this._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n\n Duplex.call(this, options);\n\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n };\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n // When the writable side finishes, then flush out anything remaining.\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function') {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n throw new Error('_transform() is not implemented');\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n var _this2 = this;\n\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n _this2.emit('close');\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data);\n\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0');\n\n if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming');\n\n return stream.push(null);\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nutil.inherits(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","var Stream = require('stream');\nif (process.env.READABLE_STREAM === 'disable' && Stream) {\n module.exports = Stream;\n exports = module.exports = Stream.Readable;\n exports.Readable = Stream.Readable;\n exports.Writable = Stream.Writable;\n exports.Duplex = Stream.Duplex;\n exports.Transform = Stream.Transform;\n exports.PassThrough = Stream.PassThrough;\n exports.Stream = Stream;\n} else {\n exports = module.exports = require('./lib/_stream_readable.js');\n exports.Stream = Stream || exports;\n exports.Readable = exports;\n exports.Writable = require('./lib/_stream_writable.js');\n exports.Duplex = require('./lib/_stream_duplex.js');\n exports.Transform = require('./lib/_stream_transform.js');\n exports.PassThrough = require('./lib/_stream_passthrough.js');\n}\n","module.exports = require('./readable').PassThrough\n","var util = require('util');\nvar PassThrough = require('readable-stream/passthrough');\n\nmodule.exports = {\n Readable: Readable,\n Writable: Writable\n};\n\nutil.inherits(Readable, PassThrough);\nutil.inherits(Writable, PassThrough);\n\n// Patch the given method of instance so that the callback\n// is executed once, before the actual method is called the\n// first time.\nfunction beforeFirstCall(instance, method, callback) {\n instance[method] = function() {\n delete instance[method];\n callback.apply(this, arguments);\n return this[method].apply(this, arguments);\n };\n}\n\nfunction Readable(fn, options) {\n if (!(this instanceof Readable))\n return new Readable(fn, options);\n\n PassThrough.call(this, options);\n\n beforeFirstCall(this, '_read', function() {\n var source = fn.call(this, options);\n var emit = this.emit.bind(this, 'error');\n source.on('error', emit);\n source.pipe(this);\n });\n\n this.emit('readable');\n}\n\nfunction Writable(fn, options) {\n if (!(this instanceof Writable))\n return new Writable(fn, options);\n\n PassThrough.call(this, options);\n\n beforeFirstCall(this, '_write', function() {\n var destination = fn.call(this, options);\n var emit = this.emit.bind(this, 'error');\n destination.on('error', emit);\n this.pipe(destination);\n });\n\n this.emit('writable');\n}\n\n","/*!\n * normalize-path <https://github.com/jonschlinkert/normalize-path>\n *\n * Copyright (c) 2014-2018, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nmodule.exports = function(path, stripTrailing) {\n if (typeof path !== 'string') {\n throw new TypeError('expected path to be a string');\n }\n\n if (path === '\\\\' || path === '/') return '/';\n\n var len = path.length;\n if (len <= 1) return path;\n\n // ensure that win32 namespaces has two leading slashes, so that the path is\n // handled properly by the win32 version of path.parse() after being normalized\n // https://msdn.microsoft.com/library/windows/desktop/aa365247(v=vs.85).aspx#namespaces\n var prefix = '';\n if (len > 4 && path[3] === '\\\\') {\n var ch = path[2];\n if ((ch === '?' || ch === '.') && path.slice(0, 2) === '\\\\\\\\') {\n path = path.slice(2);\n prefix = '//';\n }\n }\n\n var segs = path.split(/[/\\\\]+/);\n if (stripTrailing !== false && segs[segs.length - 1] === '') {\n segs.pop();\n }\n return prefix + segs.join('/');\n};\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var constant = require('./constant'),\n defineProperty = require('./_defineProperty'),\n identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nmodule.exports = baseSetToString;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n","var baseSetToString = require('./_baseSetToString'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","var identity = require('./identity'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var eq = require('./eq'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = nativeKeysIn;\n","var isObject = require('./isObject'),\n isPrototype = require('./_isPrototype'),\n nativeKeysIn = require('./_nativeKeysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeysIn;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeysIn = require('./_baseKeysIn'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n","var baseRest = require('./_baseRest'),\n eq = require('./eq'),\n isIterateeCall = require('./_isIterateeCall'),\n keysIn = require('./keysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\nvar defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n});\n\nmodule.exports = defaults;\n","'use strict'\n\n/*\n This file is a reduced and adapted version of the main lib/internal/per_context/primordials.js file defined at\n\n https://github.com/nodejs/node/blob/main/lib/internal/per_context/primordials.js\n\n Don't try to replace with the original file and keep it up to date with the upstream file.\n*/\n\n// This is a simplified version of AggregateError\nclass AggregateError extends Error {\n constructor(errors) {\n if (!Array.isArray(errors)) {\n throw new TypeError(`Expected input to be an Array, got ${typeof errors}`)\n }\n let message = ''\n for (let i = 0; i < errors.length; i++) {\n message += ` ${errors[i].stack}\\n`\n }\n super(message)\n this.name = 'AggregateError'\n this.errors = errors\n }\n}\nmodule.exports = {\n AggregateError,\n ArrayIsArray(self) {\n return Array.isArray(self)\n },\n ArrayPrototypeIncludes(self, el) {\n return self.includes(el)\n },\n ArrayPrototypeIndexOf(self, el) {\n return self.indexOf(el)\n },\n ArrayPrototypeJoin(self, sep) {\n return self.join(sep)\n },\n ArrayPrototypeMap(self, fn) {\n return self.map(fn)\n },\n ArrayPrototypePop(self, el) {\n return self.pop(el)\n },\n ArrayPrototypePush(self, el) {\n return self.push(el)\n },\n ArrayPrototypeSlice(self, start, end) {\n return self.slice(start, end)\n },\n Error,\n FunctionPrototypeCall(fn, thisArgs, ...args) {\n return fn.call(thisArgs, ...args)\n },\n FunctionPrototypeSymbolHasInstance(self, instance) {\n return Function.prototype[Symbol.hasInstance].call(self, instance)\n },\n MathFloor: Math.floor,\n Number,\n NumberIsInteger: Number.isInteger,\n NumberIsNaN: Number.isNaN,\n NumberMAX_SAFE_INTEGER: Number.MAX_SAFE_INTEGER,\n NumberMIN_SAFE_INTEGER: Number.MIN_SAFE_INTEGER,\n NumberParseInt: Number.parseInt,\n ObjectDefineProperties(self, props) {\n return Object.defineProperties(self, props)\n },\n ObjectDefineProperty(self, name, prop) {\n return Object.defineProperty(self, name, prop)\n },\n ObjectGetOwnPropertyDescriptor(self, name) {\n return Object.getOwnPropertyDescriptor(self, name)\n },\n ObjectKeys(obj) {\n return Object.keys(obj)\n },\n ObjectSetPrototypeOf(target, proto) {\n return Object.setPrototypeOf(target, proto)\n },\n Promise,\n PromisePrototypeCatch(self, fn) {\n return self.catch(fn)\n },\n PromisePrototypeThen(self, thenFn, catchFn) {\n return self.then(thenFn, catchFn)\n },\n PromiseReject(err) {\n return Promise.reject(err)\n },\n PromiseResolve(val) {\n return Promise.resolve(val)\n },\n ReflectApply: Reflect.apply,\n RegExpPrototypeTest(self, value) {\n return self.test(value)\n },\n SafeSet: Set,\n String,\n StringPrototypeSlice(self, start, end) {\n return self.slice(start, end)\n },\n StringPrototypeToLowerCase(self) {\n return self.toLowerCase()\n },\n StringPrototypeToUpperCase(self) {\n return self.toUpperCase()\n },\n StringPrototypeTrim(self) {\n return self.trim()\n },\n Symbol,\n SymbolFor: Symbol.for,\n SymbolAsyncIterator: Symbol.asyncIterator,\n SymbolHasInstance: Symbol.hasInstance,\n SymbolIterator: Symbol.iterator,\n SymbolDispose: Symbol.dispose || Symbol('Symbol.dispose'),\n SymbolAsyncDispose: Symbol.asyncDispose || Symbol('Symbol.asyncDispose'),\n TypedArrayPrototypeSet(self, buf, len) {\n return self.set(buf, len)\n },\n Boolean,\n Uint8Array\n}\n","'use strict'\n\n/*\n This file is a reduced and adapted version of the main lib/internal/util/inspect.js file defined at\n\n https://github.com/nodejs/node/blob/main/lib/internal/util/inspect.js\n\n Don't try to replace with the original file and keep it up to date with the upstream file.\n*/\nmodule.exports = {\n format(format, ...args) {\n // Simplified version of https://nodejs.org/api/util.html#utilformatformat-args\n return format.replace(/%([sdifj])/g, function (...[_unused, type]) {\n const replacement = args.shift()\n if (type === 'f') {\n return replacement.toFixed(6)\n } else if (type === 'j') {\n return JSON.stringify(replacement)\n } else if (type === 's' && typeof replacement === 'object') {\n const ctor = replacement.constructor !== Object ? replacement.constructor.name : ''\n return `${ctor} {}`.trim()\n } else {\n return replacement.toString()\n }\n })\n },\n inspect(value) {\n // Vastly simplified version of https://nodejs.org/api/util.html#utilinspectobject-options\n switch (typeof value) {\n case 'string':\n if (value.includes(\"'\")) {\n if (!value.includes('\"')) {\n return `\"${value}\"`\n } else if (!value.includes('`') && !value.includes('${')) {\n return `\\`${value}\\``\n }\n }\n return `'${value}'`\n case 'number':\n if (isNaN(value)) {\n return 'NaN'\n } else if (Object.is(value, -0)) {\n return String(value)\n }\n return value\n case 'bigint':\n return `${String(value)}n`\n case 'boolean':\n case 'undefined':\n return String(value)\n case 'object':\n return '{}'\n }\n }\n}\n","'use strict'\n\nconst { format, inspect } = require('./util/inspect')\nconst { AggregateError: CustomAggregateError } = require('./primordials')\n\n/*\n This file is a reduced and adapted version of the main lib/internal/errors.js file defined at\n\n https://github.com/nodejs/node/blob/main/lib/internal/errors.js\n\n Don't try to replace with the original file and keep it up to date (starting from E(...) definitions)\n with the upstream file.\n*/\n\nconst AggregateError = globalThis.AggregateError || CustomAggregateError\nconst kIsNodeError = Symbol('kIsNodeError')\nconst kTypes = [\n 'string',\n 'function',\n 'number',\n 'object',\n // Accept 'Function' and 'Object' as alternative to the lower cased version.\n 'Function',\n 'Object',\n 'boolean',\n 'bigint',\n 'symbol'\n]\nconst classRegExp = /^([A-Z][a-z0-9]*)+$/\nconst nodeInternalPrefix = '__node_internal_'\nconst codes = {}\nfunction assert(value, message) {\n if (!value) {\n throw new codes.ERR_INTERNAL_ASSERTION(message)\n }\n}\n\n// Only use this for integers! Decimal numbers do not work with this function.\nfunction addNumericalSeparator(val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\nfunction getMessage(key, msg, args) {\n if (typeof msg === 'function') {\n assert(\n msg.length <= args.length,\n // Default options do not count.\n `Code: ${key}; The provided arguments length (${args.length}) does not match the required ones (${msg.length}).`\n )\n return msg(...args)\n }\n const expectedLength = (msg.match(/%[dfijoOs]/g) || []).length\n assert(\n expectedLength === args.length,\n `Code: ${key}; The provided arguments length (${args.length}) does not match the required ones (${expectedLength}).`\n )\n if (args.length === 0) {\n return msg\n }\n return format(msg, ...args)\n}\nfunction E(code, message, Base) {\n if (!Base) {\n Base = Error\n }\n class NodeError extends Base {\n constructor(...args) {\n super(getMessage(code, message, args))\n }\n toString() {\n return `${this.name} [${code}]: ${this.message}`\n }\n }\n Object.defineProperties(NodeError.prototype, {\n name: {\n value: Base.name,\n writable: true,\n enumerable: false,\n configurable: true\n },\n toString: {\n value() {\n return `${this.name} [${code}]: ${this.message}`\n },\n writable: true,\n enumerable: false,\n configurable: true\n }\n })\n NodeError.prototype.code = code\n NodeError.prototype[kIsNodeError] = true\n codes[code] = NodeError\n}\nfunction hideStackFrames(fn) {\n // We rename the functions that will be hidden to cut off the stacktrace\n // at the outermost one\n const hidden = nodeInternalPrefix + fn.name\n Object.defineProperty(fn, 'name', {\n value: hidden\n })\n return fn\n}\nfunction aggregateTwoErrors(innerError, outerError) {\n if (innerError && outerError && innerError !== outerError) {\n if (Array.isArray(outerError.errors)) {\n // If `outerError` is already an `AggregateError`.\n outerError.errors.push(innerError)\n return outerError\n }\n const err = new AggregateError([outerError, innerError], outerError.message)\n err.code = outerError.code\n return err\n }\n return innerError || outerError\n}\nclass AbortError extends Error {\n constructor(message = 'The operation was aborted', options = undefined) {\n if (options !== undefined && typeof options !== 'object') {\n throw new codes.ERR_INVALID_ARG_TYPE('options', 'Object', options)\n }\n super(message, options)\n this.code = 'ABORT_ERR'\n this.name = 'AbortError'\n }\n}\nE('ERR_ASSERTION', '%s', Error)\nE(\n 'ERR_INVALID_ARG_TYPE',\n (name, expected, actual) => {\n assert(typeof name === 'string', \"'name' must be a string\")\n if (!Array.isArray(expected)) {\n expected = [expected]\n }\n let msg = 'The '\n if (name.endsWith(' argument')) {\n // For cases like 'first argument'\n msg += `${name} `\n } else {\n msg += `\"${name}\" ${name.includes('.') ? 'property' : 'argument'} `\n }\n msg += 'must be '\n const types = []\n const instances = []\n const other = []\n for (const value of expected) {\n assert(typeof value === 'string', 'All expected entries have to be of type string')\n if (kTypes.includes(value)) {\n types.push(value.toLowerCase())\n } else if (classRegExp.test(value)) {\n instances.push(value)\n } else {\n assert(value !== 'object', 'The value \"object\" should be written as \"Object\"')\n other.push(value)\n }\n }\n\n // Special handle `object` in case other instances are allowed to outline\n // the differences between each other.\n if (instances.length > 0) {\n const pos = types.indexOf('object')\n if (pos !== -1) {\n types.splice(types, pos, 1)\n instances.push('Object')\n }\n }\n if (types.length > 0) {\n switch (types.length) {\n case 1:\n msg += `of type ${types[0]}`\n break\n case 2:\n msg += `one of type ${types[0]} or ${types[1]}`\n break\n default: {\n const last = types.pop()\n msg += `one of type ${types.join(', ')}, or ${last}`\n }\n }\n if (instances.length > 0 || other.length > 0) {\n msg += ' or '\n }\n }\n if (instances.length > 0) {\n switch (instances.length) {\n case 1:\n msg += `an instance of ${instances[0]}`\n break\n case 2:\n msg += `an instance of ${instances[0]} or ${instances[1]}`\n break\n default: {\n const last = instances.pop()\n msg += `an instance of ${instances.join(', ')}, or ${last}`\n }\n }\n if (other.length > 0) {\n msg += ' or '\n }\n }\n switch (other.length) {\n case 0:\n break\n case 1:\n if (other[0].toLowerCase() !== other[0]) {\n msg += 'an '\n }\n msg += `${other[0]}`\n break\n case 2:\n msg += `one of ${other[0]} or ${other[1]}`\n break\n default: {\n const last = other.pop()\n msg += `one of ${other.join(', ')}, or ${last}`\n }\n }\n if (actual == null) {\n msg += `. Received ${actual}`\n } else if (typeof actual === 'function' && actual.name) {\n msg += `. Received function ${actual.name}`\n } else if (typeof actual === 'object') {\n var _actual$constructor\n if (\n (_actual$constructor = actual.constructor) !== null &&\n _actual$constructor !== undefined &&\n _actual$constructor.name\n ) {\n msg += `. Received an instance of ${actual.constructor.name}`\n } else {\n const inspected = inspect(actual, {\n depth: -1\n })\n msg += `. Received ${inspected}`\n }\n } else {\n let inspected = inspect(actual, {\n colors: false\n })\n if (inspected.length > 25) {\n inspected = `${inspected.slice(0, 25)}...`\n }\n msg += `. Received type ${typeof actual} (${inspected})`\n }\n return msg\n },\n TypeError\n)\nE(\n 'ERR_INVALID_ARG_VALUE',\n (name, value, reason = 'is invalid') => {\n let inspected = inspect(value)\n if (inspected.length > 128) {\n inspected = inspected.slice(0, 128) + '...'\n }\n const type = name.includes('.') ? 'property' : 'argument'\n return `The ${type} '${name}' ${reason}. Received ${inspected}`\n },\n TypeError\n)\nE(\n 'ERR_INVALID_RETURN_VALUE',\n (input, name, value) => {\n var _value$constructor\n const type =\n value !== null &&\n value !== undefined &&\n (_value$constructor = value.constructor) !== null &&\n _value$constructor !== undefined &&\n _value$constructor.name\n ? `instance of ${value.constructor.name}`\n : `type ${typeof value}`\n return `Expected ${input} to be returned from the \"${name}\"` + ` function but got ${type}.`\n },\n TypeError\n)\nE(\n 'ERR_MISSING_ARGS',\n (...args) => {\n assert(args.length > 0, 'At least one arg needs to be specified')\n let msg\n const len = args.length\n args = (Array.isArray(args) ? args : [args]).map((a) => `\"${a}\"`).join(' or ')\n switch (len) {\n case 1:\n msg += `The ${args[0]} argument`\n break\n case 2:\n msg += `The ${args[0]} and ${args[1]} arguments`\n break\n default:\n {\n const last = args.pop()\n msg += `The ${args.join(', ')}, and ${last} arguments`\n }\n break\n }\n return `${msg} must be specified`\n },\n TypeError\n)\nE(\n 'ERR_OUT_OF_RANGE',\n (str, range, input) => {\n assert(range, 'Missing \"range\" argument')\n let received\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n const limit = BigInt(2) ** BigInt(32)\n if (input > limit || input < -limit) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n } else {\n received = inspect(input)\n }\n return `The value of \"${str}\" is out of range. It must be ${range}. Received ${received}`\n },\n RangeError\n)\nE('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times', Error)\nE('ERR_METHOD_NOT_IMPLEMENTED', 'The %s method is not implemented', Error)\nE('ERR_STREAM_ALREADY_FINISHED', 'Cannot call %s after a stream was finished', Error)\nE('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable', Error)\nE('ERR_STREAM_DESTROYED', 'Cannot call %s after a stream was destroyed', Error)\nE('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError)\nE('ERR_STREAM_PREMATURE_CLOSE', 'Premature close', Error)\nE('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF', Error)\nE('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event', Error)\nE('ERR_STREAM_WRITE_AFTER_END', 'write after end', Error)\nE('ERR_UNKNOWN_ENCODING', 'Unknown encoding: %s', TypeError)\nmodule.exports = {\n AbortError,\n aggregateTwoErrors: hideStackFrames(aggregateTwoErrors),\n hideStackFrames,\n codes\n}\n","/**\n * @author Toru Nagashima <https://github.com/mysticatea>\n * @copyright 2015 Toru Nagashima. All rights reserved.\n * See LICENSE file in root directory for full license.\n */\n'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n/**\n * @typedef {object} PrivateData\n * @property {EventTarget} eventTarget The event target.\n * @property {{type:string}} event The original event object.\n * @property {number} eventPhase The current event phase.\n * @property {EventTarget|null} currentTarget The current event target.\n * @property {boolean} canceled The flag to prevent default.\n * @property {boolean} stopped The flag to stop propagation.\n * @property {boolean} immediateStopped The flag to stop propagation immediately.\n * @property {Function|null} passiveListener The listener if the current listener is passive. Otherwise this is null.\n * @property {number} timeStamp The unix time.\n * @private\n */\n\n/**\n * Private data for event wrappers.\n * @type {WeakMap<Event, PrivateData>}\n * @private\n */\nconst privateData = new WeakMap();\n\n/**\n * Cache for wrapper classes.\n * @type {WeakMap<Object, Function>}\n * @private\n */\nconst wrappers = new WeakMap();\n\n/**\n * Get private data.\n * @param {Event} event The event object to get private data.\n * @returns {PrivateData} The private data of the event.\n * @private\n */\nfunction pd(event) {\n const retv = privateData.get(event);\n console.assert(\n retv != null,\n \"'this' is expected an Event object, but got\",\n event\n );\n return retv\n}\n\n/**\n * https://dom.spec.whatwg.org/#set-the-canceled-flag\n * @param data {PrivateData} private data.\n */\nfunction setCancelFlag(data) {\n if (data.passiveListener != null) {\n if (\n typeof console !== \"undefined\" &&\n typeof console.error === \"function\"\n ) {\n console.error(\n \"Unable to preventDefault inside passive event listener invocation.\",\n data.passiveListener\n );\n }\n return\n }\n if (!data.event.cancelable) {\n return\n }\n\n data.canceled = true;\n if (typeof data.event.preventDefault === \"function\") {\n data.event.preventDefault();\n }\n}\n\n/**\n * @see https://dom.spec.whatwg.org/#interface-event\n * @private\n */\n/**\n * The event wrapper.\n * @constructor\n * @param {EventTarget} eventTarget The event target of this dispatching.\n * @param {Event|{type:string}} event The original event to wrap.\n */\nfunction Event(eventTarget, event) {\n privateData.set(this, {\n eventTarget,\n event,\n eventPhase: 2,\n currentTarget: eventTarget,\n canceled: false,\n stopped: false,\n immediateStopped: false,\n passiveListener: null,\n timeStamp: event.timeStamp || Date.now(),\n });\n\n // https://heycam.github.io/webidl/#Unforgeable\n Object.defineProperty(this, \"isTrusted\", { value: false, enumerable: true });\n\n // Define accessors\n const keys = Object.keys(event);\n for (let i = 0; i < keys.length; ++i) {\n const key = keys[i];\n if (!(key in this)) {\n Object.defineProperty(this, key, defineRedirectDescriptor(key));\n }\n }\n}\n\n// Should be enumerable, but class methods are not enumerable.\nEvent.prototype = {\n /**\n * The type of this event.\n * @type {string}\n */\n get type() {\n return pd(this).event.type\n },\n\n /**\n * The target of this event.\n * @type {EventTarget}\n */\n get target() {\n return pd(this).eventTarget\n },\n\n /**\n * The target of this event.\n * @type {EventTarget}\n */\n get currentTarget() {\n return pd(this).currentTarget\n },\n\n /**\n * @returns {EventTarget[]} The composed path of this event.\n */\n composedPath() {\n const currentTarget = pd(this).currentTarget;\n if (currentTarget == null) {\n return []\n }\n return [currentTarget]\n },\n\n /**\n * Constant of NONE.\n * @type {number}\n */\n get NONE() {\n return 0\n },\n\n /**\n * Constant of CAPTURING_PHASE.\n * @type {number}\n */\n get CAPTURING_PHASE() {\n return 1\n },\n\n /**\n * Constant of AT_TARGET.\n * @type {number}\n */\n get AT_TARGET() {\n return 2\n },\n\n /**\n * Constant of BUBBLING_PHASE.\n * @type {number}\n */\n get BUBBLING_PHASE() {\n return 3\n },\n\n /**\n * The target of this event.\n * @type {number}\n */\n get eventPhase() {\n return pd(this).eventPhase\n },\n\n /**\n * Stop event bubbling.\n * @returns {void}\n */\n stopPropagation() {\n const data = pd(this);\n\n data.stopped = true;\n if (typeof data.event.stopPropagation === \"function\") {\n data.event.stopPropagation();\n }\n },\n\n /**\n * Stop event bubbling.\n * @returns {void}\n */\n stopImmediatePropagation() {\n const data = pd(this);\n\n data.stopped = true;\n data.immediateStopped = true;\n if (typeof data.event.stopImmediatePropagation === \"function\") {\n data.event.stopImmediatePropagation();\n }\n },\n\n /**\n * The flag to be bubbling.\n * @type {boolean}\n */\n get bubbles() {\n return Boolean(pd(this).event.bubbles)\n },\n\n /**\n * The flag to be cancelable.\n * @type {boolean}\n */\n get cancelable() {\n return Boolean(pd(this).event.cancelable)\n },\n\n /**\n * Cancel this event.\n * @returns {void}\n */\n preventDefault() {\n setCancelFlag(pd(this));\n },\n\n /**\n * The flag to indicate cancellation state.\n * @type {boolean}\n */\n get defaultPrevented() {\n return pd(this).canceled\n },\n\n /**\n * The flag to be composed.\n * @type {boolean}\n */\n get composed() {\n return Boolean(pd(this).event.composed)\n },\n\n /**\n * The unix time of this event.\n * @type {number}\n */\n get timeStamp() {\n return pd(this).timeStamp\n },\n\n /**\n * The target of this event.\n * @type {EventTarget}\n * @deprecated\n */\n get srcElement() {\n return pd(this).eventTarget\n },\n\n /**\n * The flag to stop event bubbling.\n * @type {boolean}\n * @deprecated\n */\n get cancelBubble() {\n return pd(this).stopped\n },\n set cancelBubble(value) {\n if (!value) {\n return\n }\n const data = pd(this);\n\n data.stopped = true;\n if (typeof data.event.cancelBubble === \"boolean\") {\n data.event.cancelBubble = true;\n }\n },\n\n /**\n * The flag to indicate cancellation state.\n * @type {boolean}\n * @deprecated\n */\n get returnValue() {\n return !pd(this).canceled\n },\n set returnValue(value) {\n if (!value) {\n setCancelFlag(pd(this));\n }\n },\n\n /**\n * Initialize this event object. But do nothing under event dispatching.\n * @param {string} type The event type.\n * @param {boolean} [bubbles=false] The flag to be possible to bubble up.\n * @param {boolean} [cancelable=false] The flag to be possible to cancel.\n * @deprecated\n */\n initEvent() {\n // Do nothing.\n },\n};\n\n// `constructor` is not enumerable.\nObject.defineProperty(Event.prototype, \"constructor\", {\n value: Event,\n configurable: true,\n writable: true,\n});\n\n// Ensure `event instanceof window.Event` is `true`.\nif (typeof window !== \"undefined\" && typeof window.Event !== \"undefined\") {\n Object.setPrototypeOf(Event.prototype, window.Event.prototype);\n\n // Make association for wrappers.\n wrappers.set(window.Event.prototype, Event);\n}\n\n/**\n * Get the property descriptor to redirect a given property.\n * @param {string} key Property name to define property descriptor.\n * @returns {PropertyDescriptor} The property descriptor to redirect the property.\n * @private\n */\nfunction defineRedirectDescriptor(key) {\n return {\n get() {\n return pd(this).event[key]\n },\n set(value) {\n pd(this).event[key] = value;\n },\n configurable: true,\n enumerable: true,\n }\n}\n\n/**\n * Get the property descriptor to call a given method property.\n * @param {string} key Property name to define property descriptor.\n * @returns {PropertyDescriptor} The property descriptor to call the method property.\n * @private\n */\nfunction defineCallDescriptor(key) {\n return {\n value() {\n const event = pd(this).event;\n return event[key].apply(event, arguments)\n },\n configurable: true,\n enumerable: true,\n }\n}\n\n/**\n * Define new wrapper class.\n * @param {Function} BaseEvent The base wrapper class.\n * @param {Object} proto The prototype of the original event.\n * @returns {Function} The defined wrapper class.\n * @private\n */\nfunction defineWrapper(BaseEvent, proto) {\n const keys = Object.keys(proto);\n if (keys.length === 0) {\n return BaseEvent\n }\n\n /** CustomEvent */\n function CustomEvent(eventTarget, event) {\n BaseEvent.call(this, eventTarget, event);\n }\n\n CustomEvent.prototype = Object.create(BaseEvent.prototype, {\n constructor: { value: CustomEvent, configurable: true, writable: true },\n });\n\n // Define accessors.\n for (let i = 0; i < keys.length; ++i) {\n const key = keys[i];\n if (!(key in BaseEvent.prototype)) {\n const descriptor = Object.getOwnPropertyDescriptor(proto, key);\n const isFunc = typeof descriptor.value === \"function\";\n Object.defineProperty(\n CustomEvent.prototype,\n key,\n isFunc\n ? defineCallDescriptor(key)\n : defineRedirectDescriptor(key)\n );\n }\n }\n\n return CustomEvent\n}\n\n/**\n * Get the wrapper class of a given prototype.\n * @param {Object} proto The prototype of the original event to get its wrapper.\n * @returns {Function} The wrapper class.\n * @private\n */\nfunction getWrapper(proto) {\n if (proto == null || proto === Object.prototype) {\n return Event\n }\n\n let wrapper = wrappers.get(proto);\n if (wrapper == null) {\n wrapper = defineWrapper(getWrapper(Object.getPrototypeOf(proto)), proto);\n wrappers.set(proto, wrapper);\n }\n return wrapper\n}\n\n/**\n * Wrap a given event to management a dispatching.\n * @param {EventTarget} eventTarget The event target of this dispatching.\n * @param {Object} event The event to wrap.\n * @returns {Event} The wrapper instance.\n * @private\n */\nfunction wrapEvent(eventTarget, event) {\n const Wrapper = getWrapper(Object.getPrototypeOf(event));\n return new Wrapper(eventTarget, event)\n}\n\n/**\n * Get the immediateStopped flag of a given event.\n * @param {Event} event The event to get.\n * @returns {boolean} The flag to stop propagation immediately.\n * @private\n */\nfunction isStopped(event) {\n return pd(event).immediateStopped\n}\n\n/**\n * Set the current event phase of a given event.\n * @param {Event} event The event to set current target.\n * @param {number} eventPhase New event phase.\n * @returns {void}\n * @private\n */\nfunction setEventPhase(event, eventPhase) {\n pd(event).eventPhase = eventPhase;\n}\n\n/**\n * Set the current target of a given event.\n * @param {Event} event The event to set current target.\n * @param {EventTarget|null} currentTarget New current target.\n * @returns {void}\n * @private\n */\nfunction setCurrentTarget(event, currentTarget) {\n pd(event).currentTarget = currentTarget;\n}\n\n/**\n * Set a passive listener of a given event.\n * @param {Event} event The event to set current target.\n * @param {Function|null} passiveListener New passive listener.\n * @returns {void}\n * @private\n */\nfunction setPassiveListener(event, passiveListener) {\n pd(event).passiveListener = passiveListener;\n}\n\n/**\n * @typedef {object} ListenerNode\n * @property {Function} listener\n * @property {1|2|3} listenerType\n * @property {boolean} passive\n * @property {boolean} once\n * @property {ListenerNode|null} next\n * @private\n */\n\n/**\n * @type {WeakMap<object, Map<string, ListenerNode>>}\n * @private\n */\nconst listenersMap = new WeakMap();\n\n// Listener types\nconst CAPTURE = 1;\nconst BUBBLE = 2;\nconst ATTRIBUTE = 3;\n\n/**\n * Check whether a given value is an object or not.\n * @param {any} x The value to check.\n * @returns {boolean} `true` if the value is an object.\n */\nfunction isObject(x) {\n return x !== null && typeof x === \"object\" //eslint-disable-line no-restricted-syntax\n}\n\n/**\n * Get listeners.\n * @param {EventTarget} eventTarget The event target to get.\n * @returns {Map<string, ListenerNode>} The listeners.\n * @private\n */\nfunction getListeners(eventTarget) {\n const listeners = listenersMap.get(eventTarget);\n if (listeners == null) {\n throw new TypeError(\n \"'this' is expected an EventTarget object, but got another value.\"\n )\n }\n return listeners\n}\n\n/**\n * Get the property descriptor for the event attribute of a given event.\n * @param {string} eventName The event name to get property descriptor.\n * @returns {PropertyDescriptor} The property descriptor.\n * @private\n */\nfunction defineEventAttributeDescriptor(eventName) {\n return {\n get() {\n const listeners = getListeners(this);\n let node = listeners.get(eventName);\n while (node != null) {\n if (node.listenerType === ATTRIBUTE) {\n return node.listener\n }\n node = node.next;\n }\n return null\n },\n\n set(listener) {\n if (typeof listener !== \"function\" && !isObject(listener)) {\n listener = null; // eslint-disable-line no-param-reassign\n }\n const listeners = getListeners(this);\n\n // Traverse to the tail while removing old value.\n let prev = null;\n let node = listeners.get(eventName);\n while (node != null) {\n if (node.listenerType === ATTRIBUTE) {\n // Remove old value.\n if (prev !== null) {\n prev.next = node.next;\n } else if (node.next !== null) {\n listeners.set(eventName, node.next);\n } else {\n listeners.delete(eventName);\n }\n } else {\n prev = node;\n }\n\n node = node.next;\n }\n\n // Add new value.\n if (listener !== null) {\n const newNode = {\n listener,\n listenerType: ATTRIBUTE,\n passive: false,\n once: false,\n next: null,\n };\n if (prev === null) {\n listeners.set(eventName, newNode);\n } else {\n prev.next = newNode;\n }\n }\n },\n configurable: true,\n enumerable: true,\n }\n}\n\n/**\n * Define an event attribute (e.g. `eventTarget.onclick`).\n * @param {Object} eventTargetPrototype The event target prototype to define an event attrbite.\n * @param {string} eventName The event name to define.\n * @returns {void}\n */\nfunction defineEventAttribute(eventTargetPrototype, eventName) {\n Object.defineProperty(\n eventTargetPrototype,\n `on${eventName}`,\n defineEventAttributeDescriptor(eventName)\n );\n}\n\n/**\n * Define a custom EventTarget with event attributes.\n * @param {string[]} eventNames Event names for event attributes.\n * @returns {EventTarget} The custom EventTarget.\n * @private\n */\nfunction defineCustomEventTarget(eventNames) {\n /** CustomEventTarget */\n function CustomEventTarget() {\n EventTarget.call(this);\n }\n\n CustomEventTarget.prototype = Object.create(EventTarget.prototype, {\n constructor: {\n value: CustomEventTarget,\n configurable: true,\n writable: true,\n },\n });\n\n for (let i = 0; i < eventNames.length; ++i) {\n defineEventAttribute(CustomEventTarget.prototype, eventNames[i]);\n }\n\n return CustomEventTarget\n}\n\n/**\n * EventTarget.\n *\n * - This is constructor if no arguments.\n * - This is a function which returns a CustomEventTarget constructor if there are arguments.\n *\n * For example:\n *\n * class A extends EventTarget {}\n * class B extends EventTarget(\"message\") {}\n * class C extends EventTarget(\"message\", \"error\") {}\n * class D extends EventTarget([\"message\", \"error\"]) {}\n */\nfunction EventTarget() {\n /*eslint-disable consistent-return */\n if (this instanceof EventTarget) {\n listenersMap.set(this, new Map());\n return\n }\n if (arguments.length === 1 && Array.isArray(arguments[0])) {\n return defineCustomEventTarget(arguments[0])\n }\n if (arguments.length > 0) {\n const types = new Array(arguments.length);\n for (let i = 0; i < arguments.length; ++i) {\n types[i] = arguments[i];\n }\n return defineCustomEventTarget(types)\n }\n throw new TypeError(\"Cannot call a class as a function\")\n /*eslint-enable consistent-return */\n}\n\n// Should be enumerable, but class methods are not enumerable.\nEventTarget.prototype = {\n /**\n * Add a given listener to this event target.\n * @param {string} eventName The event name to add.\n * @param {Function} listener The listener to add.\n * @param {boolean|{capture?:boolean,passive?:boolean,once?:boolean}} [options] The options for this listener.\n * @returns {void}\n */\n addEventListener(eventName, listener, options) {\n if (listener == null) {\n return\n }\n if (typeof listener !== \"function\" && !isObject(listener)) {\n throw new TypeError(\"'listener' should be a function or an object.\")\n }\n\n const listeners = getListeners(this);\n const optionsIsObj = isObject(options);\n const capture = optionsIsObj\n ? Boolean(options.capture)\n : Boolean(options);\n const listenerType = capture ? CAPTURE : BUBBLE;\n const newNode = {\n listener,\n listenerType,\n passive: optionsIsObj && Boolean(options.passive),\n once: optionsIsObj && Boolean(options.once),\n next: null,\n };\n\n // Set it as the first node if the first node is null.\n let node = listeners.get(eventName);\n if (node === undefined) {\n listeners.set(eventName, newNode);\n return\n }\n\n // Traverse to the tail while checking duplication..\n let prev = null;\n while (node != null) {\n if (\n node.listener === listener &&\n node.listenerType === listenerType\n ) {\n // Should ignore duplication.\n return\n }\n prev = node;\n node = node.next;\n }\n\n // Add it.\n prev.next = newNode;\n },\n\n /**\n * Remove a given listener from this event target.\n * @param {string} eventName The event name to remove.\n * @param {Function} listener The listener to remove.\n * @param {boolean|{capture?:boolean,passive?:boolean,once?:boolean}} [options] The options for this listener.\n * @returns {void}\n */\n removeEventListener(eventName, listener, options) {\n if (listener == null) {\n return\n }\n\n const listeners = getListeners(this);\n const capture = isObject(options)\n ? Boolean(options.capture)\n : Boolean(options);\n const listenerType = capture ? CAPTURE : BUBBLE;\n\n let prev = null;\n let node = listeners.get(eventName);\n while (node != null) {\n if (\n node.listener === listener &&\n node.listenerType === listenerType\n ) {\n if (prev !== null) {\n prev.next = node.next;\n } else if (node.next !== null) {\n listeners.set(eventName, node.next);\n } else {\n listeners.delete(eventName);\n }\n return\n }\n\n prev = node;\n node = node.next;\n }\n },\n\n /**\n * Dispatch a given event.\n * @param {Event|{type:string}} event The event to dispatch.\n * @returns {boolean} `false` if canceled.\n */\n dispatchEvent(event) {\n if (event == null || typeof event.type !== \"string\") {\n throw new TypeError('\"event.type\" should be a string.')\n }\n\n // If listeners aren't registered, terminate.\n const listeners = getListeners(this);\n const eventName = event.type;\n let node = listeners.get(eventName);\n if (node == null) {\n return true\n }\n\n // Since we cannot rewrite several properties, so wrap object.\n const wrappedEvent = wrapEvent(this, event);\n\n // This doesn't process capturing phase and bubbling phase.\n // This isn't participating in a tree.\n let prev = null;\n while (node != null) {\n // Remove this listener if it's once\n if (node.once) {\n if (prev !== null) {\n prev.next = node.next;\n } else if (node.next !== null) {\n listeners.set(eventName, node.next);\n } else {\n listeners.delete(eventName);\n }\n } else {\n prev = node;\n }\n\n // Call this listener\n setPassiveListener(\n wrappedEvent,\n node.passive ? node.listener : null\n );\n if (typeof node.listener === \"function\") {\n try {\n node.listener.call(this, wrappedEvent);\n } catch (err) {\n if (\n typeof console !== \"undefined\" &&\n typeof console.error === \"function\"\n ) {\n console.error(err);\n }\n }\n } else if (\n node.listenerType !== ATTRIBUTE &&\n typeof node.listener.handleEvent === \"function\"\n ) {\n node.listener.handleEvent(wrappedEvent);\n }\n\n // Break if `event.stopImmediatePropagation` was called.\n if (isStopped(wrappedEvent)) {\n break\n }\n\n node = node.next;\n }\n setPassiveListener(wrappedEvent, null);\n setEventPhase(wrappedEvent, 0);\n setCurrentTarget(wrappedEvent, null);\n\n return !wrappedEvent.defaultPrevented\n },\n};\n\n// `constructor` is not enumerable.\nObject.defineProperty(EventTarget.prototype, \"constructor\", {\n value: EventTarget,\n configurable: true,\n writable: true,\n});\n\n// Ensure `eventTarget instanceof window.EventTarget` is `true`.\nif (\n typeof window !== \"undefined\" &&\n typeof window.EventTarget !== \"undefined\"\n) {\n Object.setPrototypeOf(EventTarget.prototype, window.EventTarget.prototype);\n}\n\nexports.defineEventAttribute = defineEventAttribute;\nexports.EventTarget = EventTarget;\nexports.default = EventTarget;\n\nmodule.exports = EventTarget\nmodule.exports.EventTarget = module.exports[\"default\"] = EventTarget\nmodule.exports.defineEventAttribute = defineEventAttribute\n//# sourceMappingURL=event-target-shim.js.map\n","/**\n * @author Toru Nagashima <https://github.com/mysticatea>\n * See LICENSE file in root directory for full license.\n */\n'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar eventTargetShim = require('event-target-shim');\n\n/**\n * The signal class.\n * @see https://dom.spec.whatwg.org/#abortsignal\n */\nclass AbortSignal extends eventTargetShim.EventTarget {\n /**\n * AbortSignal cannot be constructed directly.\n */\n constructor() {\n super();\n throw new TypeError(\"AbortSignal cannot be constructed directly\");\n }\n /**\n * Returns `true` if this `AbortSignal`'s `AbortController` has signaled to abort, and `false` otherwise.\n */\n get aborted() {\n const aborted = abortedFlags.get(this);\n if (typeof aborted !== \"boolean\") {\n throw new TypeError(`Expected 'this' to be an 'AbortSignal' object, but got ${this === null ? \"null\" : typeof this}`);\n }\n return aborted;\n }\n}\neventTargetShim.defineEventAttribute(AbortSignal.prototype, \"abort\");\n/**\n * Create an AbortSignal object.\n */\nfunction createAbortSignal() {\n const signal = Object.create(AbortSignal.prototype);\n eventTargetShim.EventTarget.call(signal);\n abortedFlags.set(signal, false);\n return signal;\n}\n/**\n * Abort a given signal.\n */\nfunction abortSignal(signal) {\n if (abortedFlags.get(signal) !== false) {\n return;\n }\n abortedFlags.set(signal, true);\n signal.dispatchEvent({ type: \"abort\" });\n}\n/**\n * Aborted flag for each instances.\n */\nconst abortedFlags = new WeakMap();\n// Properties should be enumerable.\nObject.defineProperties(AbortSignal.prototype, {\n aborted: { enumerable: true },\n});\n// `toString()` should return `\"[object AbortSignal]\"`\nif (typeof Symbol === \"function\" && typeof Symbol.toStringTag === \"symbol\") {\n Object.defineProperty(AbortSignal.prototype, Symbol.toStringTag, {\n configurable: true,\n value: \"AbortSignal\",\n });\n}\n\n/**\n * The AbortController.\n * @see https://dom.spec.whatwg.org/#abortcontroller\n */\nclass AbortController {\n /**\n * Initialize this controller.\n */\n constructor() {\n signals.set(this, createAbortSignal());\n }\n /**\n * Returns the `AbortSignal` object associated with this object.\n */\n get signal() {\n return getSignal(this);\n }\n /**\n * Abort and signal to any observers that the associated activity is to be aborted.\n */\n abort() {\n abortSignal(getSignal(this));\n }\n}\n/**\n * Associated signals.\n */\nconst signals = new WeakMap();\n/**\n * Get the associated signal of a given controller.\n */\nfunction getSignal(controller) {\n const signal = signals.get(controller);\n if (signal == null) {\n throw new TypeError(`Expected 'this' to be an 'AbortController' object, but got ${controller === null ? \"null\" : typeof controller}`);\n }\n return signal;\n}\n// Properties should be enumerable.\nObject.defineProperties(AbortController.prototype, {\n signal: { enumerable: true },\n abort: { enumerable: true },\n});\nif (typeof Symbol === \"function\" && typeof Symbol.toStringTag === \"symbol\") {\n Object.defineProperty(AbortController.prototype, Symbol.toStringTag, {\n configurable: true,\n value: \"AbortController\",\n });\n}\n\nexports.AbortController = AbortController;\nexports.AbortSignal = AbortSignal;\nexports.default = AbortController;\n\nmodule.exports = AbortController\nmodule.exports.AbortController = module.exports[\"default\"] = AbortController\nmodule.exports.AbortSignal = AbortSignal\n//# sourceMappingURL=abort-controller.js.map\n","'use strict'\n\nconst bufferModule = require('buffer')\nconst { format, inspect } = require('./util/inspect')\nconst {\n codes: { ERR_INVALID_ARG_TYPE }\n} = require('./errors')\nconst { kResistStopPropagation, AggregateError, SymbolDispose } = require('./primordials')\nconst AbortSignal = globalThis.AbortSignal || require('abort-controller').AbortSignal\nconst AbortController = globalThis.AbortController || require('abort-controller').AbortController\nconst AsyncFunction = Object.getPrototypeOf(async function () {}).constructor\nconst Blob = globalThis.Blob || bufferModule.Blob\n/* eslint-disable indent */\nconst isBlob =\n typeof Blob !== 'undefined'\n ? function isBlob(b) {\n // eslint-disable-next-line indent\n return b instanceof Blob\n }\n : function isBlob(b) {\n return false\n }\n/* eslint-enable indent */\n\nconst validateAbortSignal = (signal, name) => {\n if (signal !== undefined && (signal === null || typeof signal !== 'object' || !('aborted' in signal))) {\n throw new ERR_INVALID_ARG_TYPE(name, 'AbortSignal', signal)\n }\n}\nconst validateFunction = (value, name) => {\n if (typeof value !== 'function') {\n throw new ERR_INVALID_ARG_TYPE(name, 'Function', value)\n }\n}\nmodule.exports = {\n AggregateError,\n kEmptyObject: Object.freeze({}),\n once(callback) {\n let called = false\n return function (...args) {\n if (called) {\n return\n }\n called = true\n callback.apply(this, args)\n }\n },\n createDeferredPromise: function () {\n let resolve\n let reject\n\n // eslint-disable-next-line promise/param-names\n const promise = new Promise((res, rej) => {\n resolve = res\n reject = rej\n })\n return {\n promise,\n resolve,\n reject\n }\n },\n promisify(fn) {\n return new Promise((resolve, reject) => {\n fn((err, ...args) => {\n if (err) {\n return reject(err)\n }\n return resolve(...args)\n })\n })\n },\n debuglog() {\n return function () {}\n },\n format,\n inspect,\n types: {\n isAsyncFunction(fn) {\n return fn instanceof AsyncFunction\n },\n isArrayBufferView(arr) {\n return ArrayBuffer.isView(arr)\n }\n },\n isBlob,\n deprecate(fn, message) {\n return fn\n },\n addAbortListener:\n require('events').addAbortListener ||\n function addAbortListener(signal, listener) {\n if (signal === undefined) {\n throw new ERR_INVALID_ARG_TYPE('signal', 'AbortSignal', signal)\n }\n validateAbortSignal(signal, 'signal')\n validateFunction(listener, 'listener')\n let removeEventListener\n if (signal.aborted) {\n queueMicrotask(() => listener())\n } else {\n signal.addEventListener('abort', listener, {\n __proto__: null,\n once: true,\n [kResistStopPropagation]: true\n })\n removeEventListener = () => {\n signal.removeEventListener('abort', listener)\n }\n }\n return {\n __proto__: null,\n [SymbolDispose]() {\n var _removeEventListener\n ;(_removeEventListener = removeEventListener) === null || _removeEventListener === undefined\n ? undefined\n : _removeEventListener()\n }\n }\n },\n AbortSignalAny:\n AbortSignal.any ||\n function AbortSignalAny(signals) {\n // Fast path if there is only one signal.\n if (signals.length === 1) {\n return signals[0]\n }\n const ac = new AbortController()\n const abort = () => ac.abort()\n signals.forEach((signal) => {\n validateAbortSignal(signal, 'signals')\n signal.addEventListener('abort', abort, {\n once: true\n })\n })\n ac.signal.addEventListener(\n 'abort',\n () => {\n signals.forEach((signal) => signal.removeEventListener('abort', abort))\n },\n {\n once: true\n }\n )\n return ac.signal\n }\n}\nmodule.exports.promisify.custom = Symbol.for('nodejs.util.promisify.custom')\n","/* eslint jsdoc/require-jsdoc: \"error\" */\n\n'use strict'\n\nconst {\n ArrayIsArray,\n ArrayPrototypeIncludes,\n ArrayPrototypeJoin,\n ArrayPrototypeMap,\n NumberIsInteger,\n NumberIsNaN,\n NumberMAX_SAFE_INTEGER,\n NumberMIN_SAFE_INTEGER,\n NumberParseInt,\n ObjectPrototypeHasOwnProperty,\n RegExpPrototypeExec,\n String,\n StringPrototypeToUpperCase,\n StringPrototypeTrim\n} = require('../ours/primordials')\nconst {\n hideStackFrames,\n codes: { ERR_SOCKET_BAD_PORT, ERR_INVALID_ARG_TYPE, ERR_INVALID_ARG_VALUE, ERR_OUT_OF_RANGE, ERR_UNKNOWN_SIGNAL }\n} = require('../ours/errors')\nconst { normalizeEncoding } = require('../ours/util')\nconst { isAsyncFunction, isArrayBufferView } = require('../ours/util').types\nconst signals = {}\n\n/**\n * @param {*} value\n * @returns {boolean}\n */\nfunction isInt32(value) {\n return value === (value | 0)\n}\n\n/**\n * @param {*} value\n * @returns {boolean}\n */\nfunction isUint32(value) {\n return value === value >>> 0\n}\nconst octalReg = /^[0-7]+$/\nconst modeDesc = 'must be a 32-bit unsigned integer or an octal string'\n\n/**\n * Parse and validate values that will be converted into mode_t (the S_*\n * constants). Only valid numbers and octal strings are allowed. They could be\n * converted to 32-bit unsigned integers or non-negative signed integers in the\n * C++ land, but any value higher than 0o777 will result in platform-specific\n * behaviors.\n * @param {*} value Values to be validated\n * @param {string} name Name of the argument\n * @param {number} [def] If specified, will be returned for invalid values\n * @returns {number}\n */\nfunction parseFileMode(value, name, def) {\n if (typeof value === 'undefined') {\n value = def\n }\n if (typeof value === 'string') {\n if (RegExpPrototypeExec(octalReg, value) === null) {\n throw new ERR_INVALID_ARG_VALUE(name, value, modeDesc)\n }\n value = NumberParseInt(value, 8)\n }\n validateUint32(value, name)\n return value\n}\n\n/**\n * @callback validateInteger\n * @param {*} value\n * @param {string} name\n * @param {number} [min]\n * @param {number} [max]\n * @returns {asserts value is number}\n */\n\n/** @type {validateInteger} */\nconst validateInteger = hideStackFrames((value, name, min = NumberMIN_SAFE_INTEGER, max = NumberMAX_SAFE_INTEGER) => {\n if (typeof value !== 'number') throw new ERR_INVALID_ARG_TYPE(name, 'number', value)\n if (!NumberIsInteger(value)) throw new ERR_OUT_OF_RANGE(name, 'an integer', value)\n if (value < min || value > max) throw new ERR_OUT_OF_RANGE(name, `>= ${min} && <= ${max}`, value)\n})\n\n/**\n * @callback validateInt32\n * @param {*} value\n * @param {string} name\n * @param {number} [min]\n * @param {number} [max]\n * @returns {asserts value is number}\n */\n\n/** @type {validateInt32} */\nconst validateInt32 = hideStackFrames((value, name, min = -2147483648, max = 2147483647) => {\n // The defaults for min and max correspond to the limits of 32-bit integers.\n if (typeof value !== 'number') {\n throw new ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n if (!NumberIsInteger(value)) {\n throw new ERR_OUT_OF_RANGE(name, 'an integer', value)\n }\n if (value < min || value > max) {\n throw new ERR_OUT_OF_RANGE(name, `>= ${min} && <= ${max}`, value)\n }\n})\n\n/**\n * @callback validateUint32\n * @param {*} value\n * @param {string} name\n * @param {number|boolean} [positive=false]\n * @returns {asserts value is number}\n */\n\n/** @type {validateUint32} */\nconst validateUint32 = hideStackFrames((value, name, positive = false) => {\n if (typeof value !== 'number') {\n throw new ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n if (!NumberIsInteger(value)) {\n throw new ERR_OUT_OF_RANGE(name, 'an integer', value)\n }\n const min = positive ? 1 : 0\n // 2 ** 32 === 4294967296\n const max = 4294967295\n if (value < min || value > max) {\n throw new ERR_OUT_OF_RANGE(name, `>= ${min} && <= ${max}`, value)\n }\n})\n\n/**\n * @callback validateString\n * @param {*} value\n * @param {string} name\n * @returns {asserts value is string}\n */\n\n/** @type {validateString} */\nfunction validateString(value, name) {\n if (typeof value !== 'string') throw new ERR_INVALID_ARG_TYPE(name, 'string', value)\n}\n\n/**\n * @callback validateNumber\n * @param {*} value\n * @param {string} name\n * @param {number} [min]\n * @param {number} [max]\n * @returns {asserts value is number}\n */\n\n/** @type {validateNumber} */\nfunction validateNumber(value, name, min = undefined, max) {\n if (typeof value !== 'number') throw new ERR_INVALID_ARG_TYPE(name, 'number', value)\n if (\n (min != null && value < min) ||\n (max != null && value > max) ||\n ((min != null || max != null) && NumberIsNaN(value))\n ) {\n throw new ERR_OUT_OF_RANGE(\n name,\n `${min != null ? `>= ${min}` : ''}${min != null && max != null ? ' && ' : ''}${max != null ? `<= ${max}` : ''}`,\n value\n )\n }\n}\n\n/**\n * @callback validateOneOf\n * @template T\n * @param {T} value\n * @param {string} name\n * @param {T[]} oneOf\n */\n\n/** @type {validateOneOf} */\nconst validateOneOf = hideStackFrames((value, name, oneOf) => {\n if (!ArrayPrototypeIncludes(oneOf, value)) {\n const allowed = ArrayPrototypeJoin(\n ArrayPrototypeMap(oneOf, (v) => (typeof v === 'string' ? `'${v}'` : String(v))),\n ', '\n )\n const reason = 'must be one of: ' + allowed\n throw new ERR_INVALID_ARG_VALUE(name, value, reason)\n }\n})\n\n/**\n * @callback validateBoolean\n * @param {*} value\n * @param {string} name\n * @returns {asserts value is boolean}\n */\n\n/** @type {validateBoolean} */\nfunction validateBoolean(value, name) {\n if (typeof value !== 'boolean') throw new ERR_INVALID_ARG_TYPE(name, 'boolean', value)\n}\n\n/**\n * @param {any} options\n * @param {string} key\n * @param {boolean} defaultValue\n * @returns {boolean}\n */\nfunction getOwnPropertyValueOrDefault(options, key, defaultValue) {\n return options == null || !ObjectPrototypeHasOwnProperty(options, key) ? defaultValue : options[key]\n}\n\n/**\n * @callback validateObject\n * @param {*} value\n * @param {string} name\n * @param {{\n * allowArray?: boolean,\n * allowFunction?: boolean,\n * nullable?: boolean\n * }} [options]\n */\n\n/** @type {validateObject} */\nconst validateObject = hideStackFrames((value, name, options = null) => {\n const allowArray = getOwnPropertyValueOrDefault(options, 'allowArray', false)\n const allowFunction = getOwnPropertyValueOrDefault(options, 'allowFunction', false)\n const nullable = getOwnPropertyValueOrDefault(options, 'nullable', false)\n if (\n (!nullable && value === null) ||\n (!allowArray && ArrayIsArray(value)) ||\n (typeof value !== 'object' && (!allowFunction || typeof value !== 'function'))\n ) {\n throw new ERR_INVALID_ARG_TYPE(name, 'Object', value)\n }\n})\n\n/**\n * @callback validateDictionary - We are using the Web IDL Standard definition\n * of \"dictionary\" here, which means any value\n * whose Type is either Undefined, Null, or\n * Object (which includes functions).\n * @param {*} value\n * @param {string} name\n * @see https://webidl.spec.whatwg.org/#es-dictionary\n * @see https://tc39.es/ecma262/#table-typeof-operator-results\n */\n\n/** @type {validateDictionary} */\nconst validateDictionary = hideStackFrames((value, name) => {\n if (value != null && typeof value !== 'object' && typeof value !== 'function') {\n throw new ERR_INVALID_ARG_TYPE(name, 'a dictionary', value)\n }\n})\n\n/**\n * @callback validateArray\n * @param {*} value\n * @param {string} name\n * @param {number} [minLength]\n * @returns {asserts value is any[]}\n */\n\n/** @type {validateArray} */\nconst validateArray = hideStackFrames((value, name, minLength = 0) => {\n if (!ArrayIsArray(value)) {\n throw new ERR_INVALID_ARG_TYPE(name, 'Array', value)\n }\n if (value.length < minLength) {\n const reason = `must be longer than ${minLength}`\n throw new ERR_INVALID_ARG_VALUE(name, value, reason)\n }\n})\n\n/**\n * @callback validateStringArray\n * @param {*} value\n * @param {string} name\n * @returns {asserts value is string[]}\n */\n\n/** @type {validateStringArray} */\nfunction validateStringArray(value, name) {\n validateArray(value, name)\n for (let i = 0; i < value.length; i++) {\n validateString(value[i], `${name}[${i}]`)\n }\n}\n\n/**\n * @callback validateBooleanArray\n * @param {*} value\n * @param {string} name\n * @returns {asserts value is boolean[]}\n */\n\n/** @type {validateBooleanArray} */\nfunction validateBooleanArray(value, name) {\n validateArray(value, name)\n for (let i = 0; i < value.length; i++) {\n validateBoolean(value[i], `${name}[${i}]`)\n }\n}\n\n/**\n * @callback validateAbortSignalArray\n * @param {*} value\n * @param {string} name\n * @returns {asserts value is AbortSignal[]}\n */\n\n/** @type {validateAbortSignalArray} */\nfunction validateAbortSignalArray(value, name) {\n validateArray(value, name)\n for (let i = 0; i < value.length; i++) {\n const signal = value[i]\n const indexedName = `${name}[${i}]`\n if (signal == null) {\n throw new ERR_INVALID_ARG_TYPE(indexedName, 'AbortSignal', signal)\n }\n validateAbortSignal(signal, indexedName)\n }\n}\n\n/**\n * @param {*} signal\n * @param {string} [name='signal']\n * @returns {asserts signal is keyof signals}\n */\nfunction validateSignalName(signal, name = 'signal') {\n validateString(signal, name)\n if (signals[signal] === undefined) {\n if (signals[StringPrototypeToUpperCase(signal)] !== undefined) {\n throw new ERR_UNKNOWN_SIGNAL(signal + ' (signals must use all capital letters)')\n }\n throw new ERR_UNKNOWN_SIGNAL(signal)\n }\n}\n\n/**\n * @callback validateBuffer\n * @param {*} buffer\n * @param {string} [name='buffer']\n * @returns {asserts buffer is ArrayBufferView}\n */\n\n/** @type {validateBuffer} */\nconst validateBuffer = hideStackFrames((buffer, name = 'buffer') => {\n if (!isArrayBufferView(buffer)) {\n throw new ERR_INVALID_ARG_TYPE(name, ['Buffer', 'TypedArray', 'DataView'], buffer)\n }\n})\n\n/**\n * @param {string} data\n * @param {string} encoding\n */\nfunction validateEncoding(data, encoding) {\n const normalizedEncoding = normalizeEncoding(encoding)\n const length = data.length\n if (normalizedEncoding === 'hex' && length % 2 !== 0) {\n throw new ERR_INVALID_ARG_VALUE('encoding', encoding, `is invalid for data of length ${length}`)\n }\n}\n\n/**\n * Check that the port number is not NaN when coerced to a number,\n * is an integer and that it falls within the legal range of port numbers.\n * @param {*} port\n * @param {string} [name='Port']\n * @param {boolean} [allowZero=true]\n * @returns {number}\n */\nfunction validatePort(port, name = 'Port', allowZero = true) {\n if (\n (typeof port !== 'number' && typeof port !== 'string') ||\n (typeof port === 'string' && StringPrototypeTrim(port).length === 0) ||\n +port !== +port >>> 0 ||\n port > 0xffff ||\n (port === 0 && !allowZero)\n ) {\n throw new ERR_SOCKET_BAD_PORT(name, port, allowZero)\n }\n return port | 0\n}\n\n/**\n * @callback validateAbortSignal\n * @param {*} signal\n * @param {string} name\n */\n\n/** @type {validateAbortSignal} */\nconst validateAbortSignal = hideStackFrames((signal, name) => {\n if (signal !== undefined && (signal === null || typeof signal !== 'object' || !('aborted' in signal))) {\n throw new ERR_INVALID_ARG_TYPE(name, 'AbortSignal', signal)\n }\n})\n\n/**\n * @callback validateFunction\n * @param {*} value\n * @param {string} name\n * @returns {asserts value is Function}\n */\n\n/** @type {validateFunction} */\nconst validateFunction = hideStackFrames((value, name) => {\n if (typeof value !== 'function') throw new ERR_INVALID_ARG_TYPE(name, 'Function', value)\n})\n\n/**\n * @callback validatePlainFunction\n * @param {*} value\n * @param {string} name\n * @returns {asserts value is Function}\n */\n\n/** @type {validatePlainFunction} */\nconst validatePlainFunction = hideStackFrames((value, name) => {\n if (typeof value !== 'function' || isAsyncFunction(value)) throw new ERR_INVALID_ARG_TYPE(name, 'Function', value)\n})\n\n/**\n * @callback validateUndefined\n * @param {*} value\n * @param {string} name\n * @returns {asserts value is undefined}\n */\n\n/** @type {validateUndefined} */\nconst validateUndefined = hideStackFrames((value, name) => {\n if (value !== undefined) throw new ERR_INVALID_ARG_TYPE(name, 'undefined', value)\n})\n\n/**\n * @template T\n * @param {T} value\n * @param {string} name\n * @param {T[]} union\n */\nfunction validateUnion(value, name, union) {\n if (!ArrayPrototypeIncludes(union, value)) {\n throw new ERR_INVALID_ARG_TYPE(name, `('${ArrayPrototypeJoin(union, '|')}')`, value)\n }\n}\n\n/*\n The rules for the Link header field are described here:\n https://www.rfc-editor.org/rfc/rfc8288.html#section-3\n\n This regex validates any string surrounded by angle brackets\n (not necessarily a valid URI reference) followed by zero or more\n link-params separated by semicolons.\n*/\nconst linkValueRegExp = /^(?:<[^>]*>)(?:\\s*;\\s*[^;\"\\s]+(?:=(\")?[^;\"\\s]*\\1)?)*$/\n\n/**\n * @param {any} value\n * @param {string} name\n */\nfunction validateLinkHeaderFormat(value, name) {\n if (typeof value === 'undefined' || !RegExpPrototypeExec(linkValueRegExp, value)) {\n throw new ERR_INVALID_ARG_VALUE(\n name,\n value,\n 'must be an array or string of format \"</styles.css>; rel=preload; as=style\"'\n )\n }\n}\n\n/**\n * @param {any} hints\n * @return {string}\n */\nfunction validateLinkHeaderValue(hints) {\n if (typeof hints === 'string') {\n validateLinkHeaderFormat(hints, 'hints')\n return hints\n } else if (ArrayIsArray(hints)) {\n const hintsLength = hints.length\n let result = ''\n if (hintsLength === 0) {\n return result\n }\n for (let i = 0; i < hintsLength; i++) {\n const link = hints[i]\n validateLinkHeaderFormat(link, 'hints')\n result += link\n if (i !== hintsLength - 1) {\n result += ', '\n }\n }\n return result\n }\n throw new ERR_INVALID_ARG_VALUE(\n 'hints',\n hints,\n 'must be an array or string of format \"</styles.css>; rel=preload; as=style\"'\n )\n}\nmodule.exports = {\n isInt32,\n isUint32,\n parseFileMode,\n validateArray,\n validateStringArray,\n validateBooleanArray,\n validateAbortSignalArray,\n validateBoolean,\n validateBuffer,\n validateDictionary,\n validateEncoding,\n validateFunction,\n validateInt32,\n validateInteger,\n validateNumber,\n validateObject,\n validateOneOf,\n validatePlainFunction,\n validatePort,\n validateSignalName,\n validateString,\n validateUint32,\n validateUndefined,\n validateUnion,\n validateAbortSignal,\n validateLinkHeaderValue\n}\n","// for now just expose the builtin process global from node.js\nmodule.exports = global.process;\n","'use strict'\n\nconst { SymbolAsyncIterator, SymbolIterator, SymbolFor } = require('../../ours/primordials')\n\n// We need to use SymbolFor to make these globally available\n// for interopt with readable-stream, i.e. readable-stream\n// and node core needs to be able to read/write private state\n// from each other for proper interoperability.\nconst kIsDestroyed = SymbolFor('nodejs.stream.destroyed')\nconst kIsErrored = SymbolFor('nodejs.stream.errored')\nconst kIsReadable = SymbolFor('nodejs.stream.readable')\nconst kIsWritable = SymbolFor('nodejs.stream.writable')\nconst kIsDisturbed = SymbolFor('nodejs.stream.disturbed')\nconst kIsClosedPromise = SymbolFor('nodejs.webstream.isClosedPromise')\nconst kControllerErrorFunction = SymbolFor('nodejs.webstream.controllerErrorFunction')\nfunction isReadableNodeStream(obj, strict = false) {\n var _obj$_readableState\n return !!(\n (\n obj &&\n typeof obj.pipe === 'function' &&\n typeof obj.on === 'function' &&\n (!strict || (typeof obj.pause === 'function' && typeof obj.resume === 'function')) &&\n (!obj._writableState ||\n ((_obj$_readableState = obj._readableState) === null || _obj$_readableState === undefined\n ? undefined\n : _obj$_readableState.readable) !== false) &&\n // Duplex\n (!obj._writableState || obj._readableState)\n ) // Writable has .pipe.\n )\n}\nfunction isWritableNodeStream(obj) {\n var _obj$_writableState\n return !!(\n (\n obj &&\n typeof obj.write === 'function' &&\n typeof obj.on === 'function' &&\n (!obj._readableState ||\n ((_obj$_writableState = obj._writableState) === null || _obj$_writableState === undefined\n ? undefined\n : _obj$_writableState.writable) !== false)\n ) // Duplex\n )\n}\nfunction isDuplexNodeStream(obj) {\n return !!(\n obj &&\n typeof obj.pipe === 'function' &&\n obj._readableState &&\n typeof obj.on === 'function' &&\n typeof obj.write === 'function'\n )\n}\nfunction isNodeStream(obj) {\n return (\n obj &&\n (obj._readableState ||\n obj._writableState ||\n (typeof obj.write === 'function' && typeof obj.on === 'function') ||\n (typeof obj.pipe === 'function' && typeof obj.on === 'function'))\n )\n}\nfunction isReadableStream(obj) {\n return !!(\n obj &&\n !isNodeStream(obj) &&\n typeof obj.pipeThrough === 'function' &&\n typeof obj.getReader === 'function' &&\n typeof obj.cancel === 'function'\n )\n}\nfunction isWritableStream(obj) {\n return !!(obj && !isNodeStream(obj) && typeof obj.getWriter === 'function' && typeof obj.abort === 'function')\n}\nfunction isTransformStream(obj) {\n return !!(obj && !isNodeStream(obj) && typeof obj.readable === 'object' && typeof obj.writable === 'object')\n}\nfunction isWebStream(obj) {\n return isReadableStream(obj) || isWritableStream(obj) || isTransformStream(obj)\n}\nfunction isIterable(obj, isAsync) {\n if (obj == null) return false\n if (isAsync === true) return typeof obj[SymbolAsyncIterator] === 'function'\n if (isAsync === false) return typeof obj[SymbolIterator] === 'function'\n return typeof obj[SymbolAsyncIterator] === 'function' || typeof obj[SymbolIterator] === 'function'\n}\nfunction isDestroyed(stream) {\n if (!isNodeStream(stream)) return null\n const wState = stream._writableState\n const rState = stream._readableState\n const state = wState || rState\n return !!(stream.destroyed || stream[kIsDestroyed] || (state !== null && state !== undefined && state.destroyed))\n}\n\n// Have been end():d.\nfunction isWritableEnded(stream) {\n if (!isWritableNodeStream(stream)) return null\n if (stream.writableEnded === true) return true\n const wState = stream._writableState\n if (wState !== null && wState !== undefined && wState.errored) return false\n if (typeof (wState === null || wState === undefined ? undefined : wState.ended) !== 'boolean') return null\n return wState.ended\n}\n\n// Have emitted 'finish'.\nfunction isWritableFinished(stream, strict) {\n if (!isWritableNodeStream(stream)) return null\n if (stream.writableFinished === true) return true\n const wState = stream._writableState\n if (wState !== null && wState !== undefined && wState.errored) return false\n if (typeof (wState === null || wState === undefined ? undefined : wState.finished) !== 'boolean') return null\n return !!(wState.finished || (strict === false && wState.ended === true && wState.length === 0))\n}\n\n// Have been push(null):d.\nfunction isReadableEnded(stream) {\n if (!isReadableNodeStream(stream)) return null\n if (stream.readableEnded === true) return true\n const rState = stream._readableState\n if (!rState || rState.errored) return false\n if (typeof (rState === null || rState === undefined ? undefined : rState.ended) !== 'boolean') return null\n return rState.ended\n}\n\n// Have emitted 'end'.\nfunction isReadableFinished(stream, strict) {\n if (!isReadableNodeStream(stream)) return null\n const rState = stream._readableState\n if (rState !== null && rState !== undefined && rState.errored) return false\n if (typeof (rState === null || rState === undefined ? undefined : rState.endEmitted) !== 'boolean') return null\n return !!(rState.endEmitted || (strict === false && rState.ended === true && rState.length === 0))\n}\nfunction isReadable(stream) {\n if (stream && stream[kIsReadable] != null) return stream[kIsReadable]\n if (typeof (stream === null || stream === undefined ? undefined : stream.readable) !== 'boolean') return null\n if (isDestroyed(stream)) return false\n return isReadableNodeStream(stream) && stream.readable && !isReadableFinished(stream)\n}\nfunction isWritable(stream) {\n if (stream && stream[kIsWritable] != null) return stream[kIsWritable]\n if (typeof (stream === null || stream === undefined ? undefined : stream.writable) !== 'boolean') return null\n if (isDestroyed(stream)) return false\n return isWritableNodeStream(stream) && stream.writable && !isWritableEnded(stream)\n}\nfunction isFinished(stream, opts) {\n if (!isNodeStream(stream)) {\n return null\n }\n if (isDestroyed(stream)) {\n return true\n }\n if ((opts === null || opts === undefined ? undefined : opts.readable) !== false && isReadable(stream)) {\n return false\n }\n if ((opts === null || opts === undefined ? undefined : opts.writable) !== false && isWritable(stream)) {\n return false\n }\n return true\n}\nfunction isWritableErrored(stream) {\n var _stream$_writableStat, _stream$_writableStat2\n if (!isNodeStream(stream)) {\n return null\n }\n if (stream.writableErrored) {\n return stream.writableErrored\n }\n return (_stream$_writableStat =\n (_stream$_writableStat2 = stream._writableState) === null || _stream$_writableStat2 === undefined\n ? undefined\n : _stream$_writableStat2.errored) !== null && _stream$_writableStat !== undefined\n ? _stream$_writableStat\n : null\n}\nfunction isReadableErrored(stream) {\n var _stream$_readableStat, _stream$_readableStat2\n if (!isNodeStream(stream)) {\n return null\n }\n if (stream.readableErrored) {\n return stream.readableErrored\n }\n return (_stream$_readableStat =\n (_stream$_readableStat2 = stream._readableState) === null || _stream$_readableStat2 === undefined\n ? undefined\n : _stream$_readableStat2.errored) !== null && _stream$_readableStat !== undefined\n ? _stream$_readableStat\n : null\n}\nfunction isClosed(stream) {\n if (!isNodeStream(stream)) {\n return null\n }\n if (typeof stream.closed === 'boolean') {\n return stream.closed\n }\n const wState = stream._writableState\n const rState = stream._readableState\n if (\n typeof (wState === null || wState === undefined ? undefined : wState.closed) === 'boolean' ||\n typeof (rState === null || rState === undefined ? undefined : rState.closed) === 'boolean'\n ) {\n return (\n (wState === null || wState === undefined ? undefined : wState.closed) ||\n (rState === null || rState === undefined ? undefined : rState.closed)\n )\n }\n if (typeof stream._closed === 'boolean' && isOutgoingMessage(stream)) {\n return stream._closed\n }\n return null\n}\nfunction isOutgoingMessage(stream) {\n return (\n typeof stream._closed === 'boolean' &&\n typeof stream._defaultKeepAlive === 'boolean' &&\n typeof stream._removedConnection === 'boolean' &&\n typeof stream._removedContLen === 'boolean'\n )\n}\nfunction isServerResponse(stream) {\n return typeof stream._sent100 === 'boolean' && isOutgoingMessage(stream)\n}\nfunction isServerRequest(stream) {\n var _stream$req\n return (\n typeof stream._consuming === 'boolean' &&\n typeof stream._dumped === 'boolean' &&\n ((_stream$req = stream.req) === null || _stream$req === undefined ? undefined : _stream$req.upgradeOrConnect) ===\n undefined\n )\n}\nfunction willEmitClose(stream) {\n if (!isNodeStream(stream)) return null\n const wState = stream._writableState\n const rState = stream._readableState\n const state = wState || rState\n return (\n (!state && isServerResponse(stream)) || !!(state && state.autoDestroy && state.emitClose && state.closed === false)\n )\n}\nfunction isDisturbed(stream) {\n var _stream$kIsDisturbed\n return !!(\n stream &&\n ((_stream$kIsDisturbed = stream[kIsDisturbed]) !== null && _stream$kIsDisturbed !== undefined\n ? _stream$kIsDisturbed\n : stream.readableDidRead || stream.readableAborted)\n )\n}\nfunction isErrored(stream) {\n var _ref,\n _ref2,\n _ref3,\n _ref4,\n _ref5,\n _stream$kIsErrored,\n _stream$_readableStat3,\n _stream$_writableStat3,\n _stream$_readableStat4,\n _stream$_writableStat4\n return !!(\n stream &&\n ((_ref =\n (_ref2 =\n (_ref3 =\n (_ref4 =\n (_ref5 =\n (_stream$kIsErrored = stream[kIsErrored]) !== null && _stream$kIsErrored !== undefined\n ? _stream$kIsErrored\n : stream.readableErrored) !== null && _ref5 !== undefined\n ? _ref5\n : stream.writableErrored) !== null && _ref4 !== undefined\n ? _ref4\n : (_stream$_readableStat3 = stream._readableState) === null || _stream$_readableStat3 === undefined\n ? undefined\n : _stream$_readableStat3.errorEmitted) !== null && _ref3 !== undefined\n ? _ref3\n : (_stream$_writableStat3 = stream._writableState) === null || _stream$_writableStat3 === undefined\n ? undefined\n : _stream$_writableStat3.errorEmitted) !== null && _ref2 !== undefined\n ? _ref2\n : (_stream$_readableStat4 = stream._readableState) === null || _stream$_readableStat4 === undefined\n ? undefined\n : _stream$_readableStat4.errored) !== null && _ref !== undefined\n ? _ref\n : (_stream$_writableStat4 = stream._writableState) === null || _stream$_writableStat4 === undefined\n ? undefined\n : _stream$_writableStat4.errored)\n )\n}\nmodule.exports = {\n isDestroyed,\n kIsDestroyed,\n isDisturbed,\n kIsDisturbed,\n isErrored,\n kIsErrored,\n isReadable,\n kIsReadable,\n kIsClosedPromise,\n kControllerErrorFunction,\n kIsWritable,\n isClosed,\n isDuplexNodeStream,\n isFinished,\n isIterable,\n isReadableNodeStream,\n isReadableStream,\n isReadableEnded,\n isReadableFinished,\n isReadableErrored,\n isNodeStream,\n isWebStream,\n isWritable,\n isWritableNodeStream,\n isWritableStream,\n isWritableEnded,\n isWritableFinished,\n isWritableErrored,\n isServerRequest,\n isServerResponse,\n willEmitClose,\n isTransformStream\n}\n","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict'\n\n/* replacement start */\n\nconst process = require('process/')\n\n/* replacement end */\n\nconst { AbortError, codes } = require('../../ours/errors')\nconst { ERR_INVALID_ARG_TYPE, ERR_STREAM_PREMATURE_CLOSE } = codes\nconst { kEmptyObject, once } = require('../../ours/util')\nconst { validateAbortSignal, validateFunction, validateObject, validateBoolean } = require('../validators')\nconst { Promise, PromisePrototypeThen, SymbolDispose } = require('../../ours/primordials')\nconst {\n isClosed,\n isReadable,\n isReadableNodeStream,\n isReadableStream,\n isReadableFinished,\n isReadableErrored,\n isWritable,\n isWritableNodeStream,\n isWritableStream,\n isWritableFinished,\n isWritableErrored,\n isNodeStream,\n willEmitClose: _willEmitClose,\n kIsClosedPromise\n} = require('./utils')\nlet addAbortListener\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function'\n}\nconst nop = () => {}\nfunction eos(stream, options, callback) {\n var _options$readable, _options$writable\n if (arguments.length === 2) {\n callback = options\n options = kEmptyObject\n } else if (options == null) {\n options = kEmptyObject\n } else {\n validateObject(options, 'options')\n }\n validateFunction(callback, 'callback')\n validateAbortSignal(options.signal, 'options.signal')\n callback = once(callback)\n if (isReadableStream(stream) || isWritableStream(stream)) {\n return eosWeb(stream, options, callback)\n }\n if (!isNodeStream(stream)) {\n throw new ERR_INVALID_ARG_TYPE('stream', ['ReadableStream', 'WritableStream', 'Stream'], stream)\n }\n const readable =\n (_options$readable = options.readable) !== null && _options$readable !== undefined\n ? _options$readable\n : isReadableNodeStream(stream)\n const writable =\n (_options$writable = options.writable) !== null && _options$writable !== undefined\n ? _options$writable\n : isWritableNodeStream(stream)\n const wState = stream._writableState\n const rState = stream._readableState\n const onlegacyfinish = () => {\n if (!stream.writable) {\n onfinish()\n }\n }\n\n // TODO (ronag): Improve soft detection to include core modules and\n // common ecosystem modules that do properly emit 'close' but fail\n // this generic check.\n let willEmitClose =\n _willEmitClose(stream) && isReadableNodeStream(stream) === readable && isWritableNodeStream(stream) === writable\n let writableFinished = isWritableFinished(stream, false)\n const onfinish = () => {\n writableFinished = true\n // Stream should not be destroyed here. If it is that\n // means that user space is doing something differently and\n // we cannot trust willEmitClose.\n if (stream.destroyed) {\n willEmitClose = false\n }\n if (willEmitClose && (!stream.readable || readable)) {\n return\n }\n if (!readable || readableFinished) {\n callback.call(stream)\n }\n }\n let readableFinished = isReadableFinished(stream, false)\n const onend = () => {\n readableFinished = true\n // Stream should not be destroyed here. If it is that\n // means that user space is doing something differently and\n // we cannot trust willEmitClose.\n if (stream.destroyed) {\n willEmitClose = false\n }\n if (willEmitClose && (!stream.writable || writable)) {\n return\n }\n if (!writable || writableFinished) {\n callback.call(stream)\n }\n }\n const onerror = (err) => {\n callback.call(stream, err)\n }\n let closed = isClosed(stream)\n const onclose = () => {\n closed = true\n const errored = isWritableErrored(stream) || isReadableErrored(stream)\n if (errored && typeof errored !== 'boolean') {\n return callback.call(stream, errored)\n }\n if (readable && !readableFinished && isReadableNodeStream(stream, true)) {\n if (!isReadableFinished(stream, false)) return callback.call(stream, new ERR_STREAM_PREMATURE_CLOSE())\n }\n if (writable && !writableFinished) {\n if (!isWritableFinished(stream, false)) return callback.call(stream, new ERR_STREAM_PREMATURE_CLOSE())\n }\n callback.call(stream)\n }\n const onclosed = () => {\n closed = true\n const errored = isWritableErrored(stream) || isReadableErrored(stream)\n if (errored && typeof errored !== 'boolean') {\n return callback.call(stream, errored)\n }\n callback.call(stream)\n }\n const onrequest = () => {\n stream.req.on('finish', onfinish)\n }\n if (isRequest(stream)) {\n stream.on('complete', onfinish)\n if (!willEmitClose) {\n stream.on('abort', onclose)\n }\n if (stream.req) {\n onrequest()\n } else {\n stream.on('request', onrequest)\n }\n } else if (writable && !wState) {\n // legacy streams\n stream.on('end', onlegacyfinish)\n stream.on('close', onlegacyfinish)\n }\n\n // Not all streams will emit 'close' after 'aborted'.\n if (!willEmitClose && typeof stream.aborted === 'boolean') {\n stream.on('aborted', onclose)\n }\n stream.on('end', onend)\n stream.on('finish', onfinish)\n if (options.error !== false) {\n stream.on('error', onerror)\n }\n stream.on('close', onclose)\n if (closed) {\n process.nextTick(onclose)\n } else if (\n (wState !== null && wState !== undefined && wState.errorEmitted) ||\n (rState !== null && rState !== undefined && rState.errorEmitted)\n ) {\n if (!willEmitClose) {\n process.nextTick(onclosed)\n }\n } else if (\n !readable &&\n (!willEmitClose || isReadable(stream)) &&\n (writableFinished || isWritable(stream) === false)\n ) {\n process.nextTick(onclosed)\n } else if (\n !writable &&\n (!willEmitClose || isWritable(stream)) &&\n (readableFinished || isReadable(stream) === false)\n ) {\n process.nextTick(onclosed)\n } else if (rState && stream.req && stream.aborted) {\n process.nextTick(onclosed)\n }\n const cleanup = () => {\n callback = nop\n stream.removeListener('aborted', onclose)\n stream.removeListener('complete', onfinish)\n stream.removeListener('abort', onclose)\n stream.removeListener('request', onrequest)\n if (stream.req) stream.req.removeListener('finish', onfinish)\n stream.removeListener('end', onlegacyfinish)\n stream.removeListener('close', onlegacyfinish)\n stream.removeListener('finish', onfinish)\n stream.removeListener('end', onend)\n stream.removeListener('error', onerror)\n stream.removeListener('close', onclose)\n }\n if (options.signal && !closed) {\n const abort = () => {\n // Keep it because cleanup removes it.\n const endCallback = callback\n cleanup()\n endCallback.call(\n stream,\n new AbortError(undefined, {\n cause: options.signal.reason\n })\n )\n }\n if (options.signal.aborted) {\n process.nextTick(abort)\n } else {\n addAbortListener = addAbortListener || require('../../ours/util').addAbortListener\n const disposable = addAbortListener(options.signal, abort)\n const originalCallback = callback\n callback = once((...args) => {\n disposable[SymbolDispose]()\n originalCallback.apply(stream, args)\n })\n }\n }\n return cleanup\n}\nfunction eosWeb(stream, options, callback) {\n let isAborted = false\n let abort = nop\n if (options.signal) {\n abort = () => {\n isAborted = true\n callback.call(\n stream,\n new AbortError(undefined, {\n cause: options.signal.reason\n })\n )\n }\n if (options.signal.aborted) {\n process.nextTick(abort)\n } else {\n addAbortListener = addAbortListener || require('../../ours/util').addAbortListener\n const disposable = addAbortListener(options.signal, abort)\n const originalCallback = callback\n callback = once((...args) => {\n disposable[SymbolDispose]()\n originalCallback.apply(stream, args)\n })\n }\n }\n const resolverFn = (...args) => {\n if (!isAborted) {\n process.nextTick(() => callback.apply(stream, args))\n }\n }\n PromisePrototypeThen(stream[kIsClosedPromise].promise, resolverFn, resolverFn)\n return nop\n}\nfunction finished(stream, opts) {\n var _opts\n let autoCleanup = false\n if (opts === null) {\n opts = kEmptyObject\n }\n if ((_opts = opts) !== null && _opts !== undefined && _opts.cleanup) {\n validateBoolean(opts.cleanup, 'cleanup')\n autoCleanup = opts.cleanup\n }\n return new Promise((resolve, reject) => {\n const cleanup = eos(stream, opts, (err) => {\n if (autoCleanup) {\n cleanup()\n }\n if (err) {\n reject(err)\n } else {\n resolve()\n }\n })\n })\n}\nmodule.exports = eos\nmodule.exports.finished = finished\n","'use strict'\n\n/* replacement start */\n\nconst process = require('process/')\n\n/* replacement end */\n\nconst {\n aggregateTwoErrors,\n codes: { ERR_MULTIPLE_CALLBACK },\n AbortError\n} = require('../../ours/errors')\nconst { Symbol } = require('../../ours/primordials')\nconst { kIsDestroyed, isDestroyed, isFinished, isServerRequest } = require('./utils')\nconst kDestroy = Symbol('kDestroy')\nconst kConstruct = Symbol('kConstruct')\nfunction checkError(err, w, r) {\n if (err) {\n // Avoid V8 leak, https://github.com/nodejs/node/pull/34103#issuecomment-652002364\n err.stack // eslint-disable-line no-unused-expressions\n\n if (w && !w.errored) {\n w.errored = err\n }\n if (r && !r.errored) {\n r.errored = err\n }\n }\n}\n\n// Backwards compat. cb() is undocumented and unused in core but\n// unfortunately might be used by modules.\nfunction destroy(err, cb) {\n const r = this._readableState\n const w = this._writableState\n // With duplex streams we use the writable side for state.\n const s = w || r\n if ((w !== null && w !== undefined && w.destroyed) || (r !== null && r !== undefined && r.destroyed)) {\n if (typeof cb === 'function') {\n cb()\n }\n return this\n }\n\n // We set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n checkError(err, w, r)\n if (w) {\n w.destroyed = true\n }\n if (r) {\n r.destroyed = true\n }\n\n // If still constructing then defer calling _destroy.\n if (!s.constructed) {\n this.once(kDestroy, function (er) {\n _destroy(this, aggregateTwoErrors(er, err), cb)\n })\n } else {\n _destroy(this, err, cb)\n }\n return this\n}\nfunction _destroy(self, err, cb) {\n let called = false\n function onDestroy(err) {\n if (called) {\n return\n }\n called = true\n const r = self._readableState\n const w = self._writableState\n checkError(err, w, r)\n if (w) {\n w.closed = true\n }\n if (r) {\n r.closed = true\n }\n if (typeof cb === 'function') {\n cb(err)\n }\n if (err) {\n process.nextTick(emitErrorCloseNT, self, err)\n } else {\n process.nextTick(emitCloseNT, self)\n }\n }\n try {\n self._destroy(err || null, onDestroy)\n } catch (err) {\n onDestroy(err)\n }\n}\nfunction emitErrorCloseNT(self, err) {\n emitErrorNT(self, err)\n emitCloseNT(self)\n}\nfunction emitCloseNT(self) {\n const r = self._readableState\n const w = self._writableState\n if (w) {\n w.closeEmitted = true\n }\n if (r) {\n r.closeEmitted = true\n }\n if ((w !== null && w !== undefined && w.emitClose) || (r !== null && r !== undefined && r.emitClose)) {\n self.emit('close')\n }\n}\nfunction emitErrorNT(self, err) {\n const r = self._readableState\n const w = self._writableState\n if ((w !== null && w !== undefined && w.errorEmitted) || (r !== null && r !== undefined && r.errorEmitted)) {\n return\n }\n if (w) {\n w.errorEmitted = true\n }\n if (r) {\n r.errorEmitted = true\n }\n self.emit('error', err)\n}\nfunction undestroy() {\n const r = this._readableState\n const w = this._writableState\n if (r) {\n r.constructed = true\n r.closed = false\n r.closeEmitted = false\n r.destroyed = false\n r.errored = null\n r.errorEmitted = false\n r.reading = false\n r.ended = r.readable === false\n r.endEmitted = r.readable === false\n }\n if (w) {\n w.constructed = true\n w.destroyed = false\n w.closed = false\n w.closeEmitted = false\n w.errored = null\n w.errorEmitted = false\n w.finalCalled = false\n w.prefinished = false\n w.ended = w.writable === false\n w.ending = w.writable === false\n w.finished = w.writable === false\n }\n}\nfunction errorOrDestroy(stream, err, sync) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n\n const r = stream._readableState\n const w = stream._writableState\n if ((w !== null && w !== undefined && w.destroyed) || (r !== null && r !== undefined && r.destroyed)) {\n return this\n }\n if ((r !== null && r !== undefined && r.autoDestroy) || (w !== null && w !== undefined && w.autoDestroy))\n stream.destroy(err)\n else if (err) {\n // Avoid V8 leak, https://github.com/nodejs/node/pull/34103#issuecomment-652002364\n err.stack // eslint-disable-line no-unused-expressions\n\n if (w && !w.errored) {\n w.errored = err\n }\n if (r && !r.errored) {\n r.errored = err\n }\n if (sync) {\n process.nextTick(emitErrorNT, stream, err)\n } else {\n emitErrorNT(stream, err)\n }\n }\n}\nfunction construct(stream, cb) {\n if (typeof stream._construct !== 'function') {\n return\n }\n const r = stream._readableState\n const w = stream._writableState\n if (r) {\n r.constructed = false\n }\n if (w) {\n w.constructed = false\n }\n stream.once(kConstruct, cb)\n if (stream.listenerCount(kConstruct) > 1) {\n // Duplex\n return\n }\n process.nextTick(constructNT, stream)\n}\nfunction constructNT(stream) {\n let called = false\n function onConstruct(err) {\n if (called) {\n errorOrDestroy(stream, err !== null && err !== undefined ? err : new ERR_MULTIPLE_CALLBACK())\n return\n }\n called = true\n const r = stream._readableState\n const w = stream._writableState\n const s = w || r\n if (r) {\n r.constructed = true\n }\n if (w) {\n w.constructed = true\n }\n if (s.destroyed) {\n stream.emit(kDestroy, err)\n } else if (err) {\n errorOrDestroy(stream, err, true)\n } else {\n process.nextTick(emitConstructNT, stream)\n }\n }\n try {\n stream._construct((err) => {\n process.nextTick(onConstruct, err)\n })\n } catch (err) {\n process.nextTick(onConstruct, err)\n }\n}\nfunction emitConstructNT(stream) {\n stream.emit(kConstruct)\n}\nfunction isRequest(stream) {\n return (stream === null || stream === undefined ? undefined : stream.setHeader) && typeof stream.abort === 'function'\n}\nfunction emitCloseLegacy(stream) {\n stream.emit('close')\n}\nfunction emitErrorCloseLegacy(stream, err) {\n stream.emit('error', err)\n process.nextTick(emitCloseLegacy, stream)\n}\n\n// Normalize destroy for legacy.\nfunction destroyer(stream, err) {\n if (!stream || isDestroyed(stream)) {\n return\n }\n if (!err && !isFinished(stream)) {\n err = new AbortError()\n }\n\n // TODO: Remove isRequest branches.\n if (isServerRequest(stream)) {\n stream.socket = null\n stream.destroy(err)\n } else if (isRequest(stream)) {\n stream.abort()\n } else if (isRequest(stream.req)) {\n stream.req.abort()\n } else if (typeof stream.destroy === 'function') {\n stream.destroy(err)\n } else if (typeof stream.close === 'function') {\n // TODO: Don't lose err?\n stream.close()\n } else if (err) {\n process.nextTick(emitErrorCloseLegacy, stream, err)\n } else {\n process.nextTick(emitCloseLegacy, stream)\n }\n if (!stream.destroyed) {\n stream[kIsDestroyed] = true\n }\n}\nmodule.exports = {\n construct,\n destroyer,\n destroy,\n undestroy,\n errorOrDestroy\n}\n","'use strict'\n\nconst { ArrayIsArray, ObjectSetPrototypeOf } = require('../../ours/primordials')\nconst { EventEmitter: EE } = require('events')\nfunction Stream(opts) {\n EE.call(this, opts)\n}\nObjectSetPrototypeOf(Stream.prototype, EE.prototype)\nObjectSetPrototypeOf(Stream, EE)\nStream.prototype.pipe = function (dest, options) {\n const source = this\n function ondata(chunk) {\n if (dest.writable && dest.write(chunk) === false && source.pause) {\n source.pause()\n }\n }\n source.on('data', ondata)\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume()\n }\n }\n dest.on('drain', ondrain)\n\n // If the 'end' option is not supplied, dest.end() will be called when\n // source gets the 'end' or 'close' events. Only dest.end() once.\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on('end', onend)\n source.on('close', onclose)\n }\n let didOnEnd = false\n function onend() {\n if (didOnEnd) return\n didOnEnd = true\n dest.end()\n }\n function onclose() {\n if (didOnEnd) return\n didOnEnd = true\n if (typeof dest.destroy === 'function') dest.destroy()\n }\n\n // Don't leave dangling pipes when there are errors.\n function onerror(er) {\n cleanup()\n if (EE.listenerCount(this, 'error') === 0) {\n this.emit('error', er)\n }\n }\n prependListener(source, 'error', onerror)\n prependListener(dest, 'error', onerror)\n\n // Remove all the event listeners that were added.\n function cleanup() {\n source.removeListener('data', ondata)\n dest.removeListener('drain', ondrain)\n source.removeListener('end', onend)\n source.removeListener('close', onclose)\n source.removeListener('error', onerror)\n dest.removeListener('error', onerror)\n source.removeListener('end', cleanup)\n source.removeListener('close', cleanup)\n dest.removeListener('close', cleanup)\n }\n source.on('end', cleanup)\n source.on('close', cleanup)\n dest.on('close', cleanup)\n dest.emit('pipe', source)\n\n // Allow for unix-like usage: A.pipe(B).pipe(C)\n return dest\n}\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn)\n\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn)\n else if (ArrayIsArray(emitter._events[event])) emitter._events[event].unshift(fn)\n else emitter._events[event] = [fn, emitter._events[event]]\n}\nmodule.exports = {\n Stream,\n prependListener\n}\n","'use strict'\n\nconst { SymbolDispose } = require('../../ours/primordials')\nconst { AbortError, codes } = require('../../ours/errors')\nconst { isNodeStream, isWebStream, kControllerErrorFunction } = require('./utils')\nconst eos = require('./end-of-stream')\nconst { ERR_INVALID_ARG_TYPE } = codes\nlet addAbortListener\n\n// This method is inlined here for readable-stream\n// It also does not allow for signal to not exist on the stream\n// https://github.com/nodejs/node/pull/36061#discussion_r533718029\nconst validateAbortSignal = (signal, name) => {\n if (typeof signal !== 'object' || !('aborted' in signal)) {\n throw new ERR_INVALID_ARG_TYPE(name, 'AbortSignal', signal)\n }\n}\nmodule.exports.addAbortSignal = function addAbortSignal(signal, stream) {\n validateAbortSignal(signal, 'signal')\n if (!isNodeStream(stream) && !isWebStream(stream)) {\n throw new ERR_INVALID_ARG_TYPE('stream', ['ReadableStream', 'WritableStream', 'Stream'], stream)\n }\n return module.exports.addAbortSignalNoValidate(signal, stream)\n}\nmodule.exports.addAbortSignalNoValidate = function (signal, stream) {\n if (typeof signal !== 'object' || !('aborted' in signal)) {\n return stream\n }\n const onAbort = isNodeStream(stream)\n ? () => {\n stream.destroy(\n new AbortError(undefined, {\n cause: signal.reason\n })\n )\n }\n : () => {\n stream[kControllerErrorFunction](\n new AbortError(undefined, {\n cause: signal.reason\n })\n )\n }\n if (signal.aborted) {\n onAbort()\n } else {\n addAbortListener = addAbortListener || require('../../ours/util').addAbortListener\n const disposable = addAbortListener(signal, onAbort)\n eos(stream, disposable[SymbolDispose])\n }\n return stream\n}\n","'use strict'\n\nconst { StringPrototypeSlice, SymbolIterator, TypedArrayPrototypeSet, Uint8Array } = require('../../ours/primordials')\nconst { Buffer } = require('buffer')\nconst { inspect } = require('../../ours/util')\nmodule.exports = class BufferList {\n constructor() {\n this.head = null\n this.tail = null\n this.length = 0\n }\n push(v) {\n const entry = {\n data: v,\n next: null\n }\n if (this.length > 0) this.tail.next = entry\n else this.head = entry\n this.tail = entry\n ++this.length\n }\n unshift(v) {\n const entry = {\n data: v,\n next: this.head\n }\n if (this.length === 0) this.tail = entry\n this.head = entry\n ++this.length\n }\n shift() {\n if (this.length === 0) return\n const ret = this.head.data\n if (this.length === 1) this.head = this.tail = null\n else this.head = this.head.next\n --this.length\n return ret\n }\n clear() {\n this.head = this.tail = null\n this.length = 0\n }\n join(s) {\n if (this.length === 0) return ''\n let p = this.head\n let ret = '' + p.data\n while ((p = p.next) !== null) ret += s + p.data\n return ret\n }\n concat(n) {\n if (this.length === 0) return Buffer.alloc(0)\n const ret = Buffer.allocUnsafe(n >>> 0)\n let p = this.head\n let i = 0\n while (p) {\n TypedArrayPrototypeSet(ret, p.data, i)\n i += p.data.length\n p = p.next\n }\n return ret\n }\n\n // Consumes a specified amount of bytes or characters from the buffered data.\n consume(n, hasStrings) {\n const data = this.head.data\n if (n < data.length) {\n // `slice` is the same for buffers and strings.\n const slice = data.slice(0, n)\n this.head.data = data.slice(n)\n return slice\n }\n if (n === data.length) {\n // First chunk is a perfect match.\n return this.shift()\n }\n // Result spans more than one buffer.\n return hasStrings ? this._getString(n) : this._getBuffer(n)\n }\n first() {\n return this.head.data\n }\n *[SymbolIterator]() {\n for (let p = this.head; p; p = p.next) {\n yield p.data\n }\n }\n\n // Consumes a specified amount of characters from the buffered data.\n _getString(n) {\n let ret = ''\n let p = this.head\n let c = 0\n do {\n const str = p.data\n if (n > str.length) {\n ret += str\n n -= str.length\n } else {\n if (n === str.length) {\n ret += str\n ++c\n if (p.next) this.head = p.next\n else this.head = this.tail = null\n } else {\n ret += StringPrototypeSlice(str, 0, n)\n this.head = p\n p.data = StringPrototypeSlice(str, n)\n }\n break\n }\n ++c\n } while ((p = p.next) !== null)\n this.length -= c\n return ret\n }\n\n // Consumes a specified amount of bytes from the buffered data.\n _getBuffer(n) {\n const ret = Buffer.allocUnsafe(n)\n const retLen = n\n let p = this.head\n let c = 0\n do {\n const buf = p.data\n if (n > buf.length) {\n TypedArrayPrototypeSet(ret, buf, retLen - n)\n n -= buf.length\n } else {\n if (n === buf.length) {\n TypedArrayPrototypeSet(ret, buf, retLen - n)\n ++c\n if (p.next) this.head = p.next\n else this.head = this.tail = null\n } else {\n TypedArrayPrototypeSet(ret, new Uint8Array(buf.buffer, buf.byteOffset, n), retLen - n)\n this.head = p\n p.data = buf.slice(n)\n }\n break\n }\n ++c\n } while ((p = p.next) !== null)\n this.length -= c\n return ret\n }\n\n // Make sure the linked list only shows the minimal necessary information.\n [Symbol.for('nodejs.util.inspect.custom')](_, options) {\n return inspect(this, {\n ...options,\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n })\n }\n}\n","'use strict'\n\nconst { MathFloor, NumberIsInteger } = require('../../ours/primordials')\nconst { validateInteger } = require('../validators')\nconst { ERR_INVALID_ARG_VALUE } = require('../../ours/errors').codes\nlet defaultHighWaterMarkBytes = 16 * 1024\nlet defaultHighWaterMarkObjectMode = 16\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null\n}\nfunction getDefaultHighWaterMark(objectMode) {\n return objectMode ? defaultHighWaterMarkObjectMode : defaultHighWaterMarkBytes\n}\nfunction setDefaultHighWaterMark(objectMode, value) {\n validateInteger(value, 'value', 0)\n if (objectMode) {\n defaultHighWaterMarkObjectMode = value\n } else {\n defaultHighWaterMarkBytes = value\n }\n}\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n const hwm = highWaterMarkFrom(options, isDuplex, duplexKey)\n if (hwm != null) {\n if (!NumberIsInteger(hwm) || hwm < 0) {\n const name = isDuplex ? `options.${duplexKey}` : 'options.highWaterMark'\n throw new ERR_INVALID_ARG_VALUE(name, hwm)\n }\n return MathFloor(hwm)\n }\n\n // Default value\n return getDefaultHighWaterMark(state.objectMode)\n}\nmodule.exports = {\n getHighWaterMark,\n getDefaultHighWaterMark,\n setDefaultHighWaterMark\n}\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\n/*</replacement>*/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","'use strict'\n\n/* replacement start */\n\nconst process = require('process/')\n\n/* replacement end */\n\nconst { PromisePrototypeThen, SymbolAsyncIterator, SymbolIterator } = require('../../ours/primordials')\nconst { Buffer } = require('buffer')\nconst { ERR_INVALID_ARG_TYPE, ERR_STREAM_NULL_VALUES } = require('../../ours/errors').codes\nfunction from(Readable, iterable, opts) {\n let iterator\n if (typeof iterable === 'string' || iterable instanceof Buffer) {\n return new Readable({\n objectMode: true,\n ...opts,\n read() {\n this.push(iterable)\n this.push(null)\n }\n })\n }\n let isAsync\n if (iterable && iterable[SymbolAsyncIterator]) {\n isAsync = true\n iterator = iterable[SymbolAsyncIterator]()\n } else if (iterable && iterable[SymbolIterator]) {\n isAsync = false\n iterator = iterable[SymbolIterator]()\n } else {\n throw new ERR_INVALID_ARG_TYPE('iterable', ['Iterable'], iterable)\n }\n const readable = new Readable({\n objectMode: true,\n highWaterMark: 1,\n // TODO(ronag): What options should be allowed?\n ...opts\n })\n\n // Flag to protect against _read\n // being called before last iteration completion.\n let reading = false\n readable._read = function () {\n if (!reading) {\n reading = true\n next()\n }\n }\n readable._destroy = function (error, cb) {\n PromisePrototypeThen(\n close(error),\n () => process.nextTick(cb, error),\n // nextTick is here in case cb throws\n (e) => process.nextTick(cb, e || error)\n )\n }\n async function close(error) {\n const hadError = error !== undefined && error !== null\n const hasThrow = typeof iterator.throw === 'function'\n if (hadError && hasThrow) {\n const { value, done } = await iterator.throw(error)\n await value\n if (done) {\n return\n }\n }\n if (typeof iterator.return === 'function') {\n const { value } = await iterator.return()\n await value\n }\n }\n async function next() {\n for (;;) {\n try {\n const { value, done } = isAsync ? await iterator.next() : iterator.next()\n if (done) {\n readable.push(null)\n } else {\n const res = value && typeof value.then === 'function' ? await value : value\n if (res === null) {\n reading = false\n throw new ERR_STREAM_NULL_VALUES()\n } else if (readable.push(res)) {\n continue\n } else {\n reading = false\n }\n }\n } catch (err) {\n readable.destroy(err)\n }\n break\n }\n }\n return readable\n}\nmodule.exports = from\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict'\n\n/* replacement start */\n\nconst process = require('process/')\n\n/* replacement end */\n\nconst {\n ArrayPrototypeIndexOf,\n NumberIsInteger,\n NumberIsNaN,\n NumberParseInt,\n ObjectDefineProperties,\n ObjectKeys,\n ObjectSetPrototypeOf,\n Promise,\n SafeSet,\n SymbolAsyncDispose,\n SymbolAsyncIterator,\n Symbol\n} = require('../../ours/primordials')\nmodule.exports = Readable\nReadable.ReadableState = ReadableState\nconst { EventEmitter: EE } = require('events')\nconst { Stream, prependListener } = require('./legacy')\nconst { Buffer } = require('buffer')\nconst { addAbortSignal } = require('./add-abort-signal')\nconst eos = require('./end-of-stream')\nlet debug = require('../../ours/util').debuglog('stream', (fn) => {\n debug = fn\n})\nconst BufferList = require('./buffer_list')\nconst destroyImpl = require('./destroy')\nconst { getHighWaterMark, getDefaultHighWaterMark } = require('./state')\nconst {\n aggregateTwoErrors,\n codes: {\n ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED,\n ERR_OUT_OF_RANGE,\n ERR_STREAM_PUSH_AFTER_EOF,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT\n },\n AbortError\n} = require('../../ours/errors')\nconst { validateObject } = require('../validators')\nconst kPaused = Symbol('kPaused')\nconst { StringDecoder } = require('string_decoder/')\nconst from = require('./from')\nObjectSetPrototypeOf(Readable.prototype, Stream.prototype)\nObjectSetPrototypeOf(Readable, Stream)\nconst nop = () => {}\nconst { errorOrDestroy } = destroyImpl\nconst kObjectMode = 1 << 0\nconst kEnded = 1 << 1\nconst kEndEmitted = 1 << 2\nconst kReading = 1 << 3\nconst kConstructed = 1 << 4\nconst kSync = 1 << 5\nconst kNeedReadable = 1 << 6\nconst kEmittedReadable = 1 << 7\nconst kReadableListening = 1 << 8\nconst kResumeScheduled = 1 << 9\nconst kErrorEmitted = 1 << 10\nconst kEmitClose = 1 << 11\nconst kAutoDestroy = 1 << 12\nconst kDestroyed = 1 << 13\nconst kClosed = 1 << 14\nconst kCloseEmitted = 1 << 15\nconst kMultiAwaitDrain = 1 << 16\nconst kReadingMore = 1 << 17\nconst kDataEmitted = 1 << 18\n\n// TODO(benjamingr) it is likely slower to do it this way than with free functions\nfunction makeBitMapDescriptor(bit) {\n return {\n enumerable: false,\n get() {\n return (this.state & bit) !== 0\n },\n set(value) {\n if (value) this.state |= bit\n else this.state &= ~bit\n }\n }\n}\nObjectDefineProperties(ReadableState.prototype, {\n objectMode: makeBitMapDescriptor(kObjectMode),\n ended: makeBitMapDescriptor(kEnded),\n endEmitted: makeBitMapDescriptor(kEndEmitted),\n reading: makeBitMapDescriptor(kReading),\n // Stream is still being constructed and cannot be\n // destroyed until construction finished or failed.\n // Async construction is opt in, therefore we start as\n // constructed.\n constructed: makeBitMapDescriptor(kConstructed),\n // A flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n sync: makeBitMapDescriptor(kSync),\n // Whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n needReadable: makeBitMapDescriptor(kNeedReadable),\n emittedReadable: makeBitMapDescriptor(kEmittedReadable),\n readableListening: makeBitMapDescriptor(kReadableListening),\n resumeScheduled: makeBitMapDescriptor(kResumeScheduled),\n // True if the error was already emitted and should not be thrown again.\n errorEmitted: makeBitMapDescriptor(kErrorEmitted),\n emitClose: makeBitMapDescriptor(kEmitClose),\n autoDestroy: makeBitMapDescriptor(kAutoDestroy),\n // Has it been destroyed.\n destroyed: makeBitMapDescriptor(kDestroyed),\n // Indicates whether the stream has finished destroying.\n closed: makeBitMapDescriptor(kClosed),\n // True if close has been emitted or would have been emitted\n // depending on emitClose.\n closeEmitted: makeBitMapDescriptor(kCloseEmitted),\n multiAwaitDrain: makeBitMapDescriptor(kMultiAwaitDrain),\n // If true, a maybeReadMore has been scheduled.\n readingMore: makeBitMapDescriptor(kReadingMore),\n dataEmitted: makeBitMapDescriptor(kDataEmitted)\n})\nfunction ReadableState(options, stream, isDuplex) {\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof require('./duplex')\n\n // Bit map field to store ReadableState more effciently with 1 bit per field\n // instead of a V8 slot per field.\n this.state = kEmitClose | kAutoDestroy | kConstructed | kSync\n // Object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away.\n if (options && options.objectMode) this.state |= kObjectMode\n if (isDuplex && options && options.readableObjectMode) this.state |= kObjectMode\n\n // The point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n this.highWaterMark = options\n ? getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex)\n : getDefaultHighWaterMark(false)\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift().\n this.buffer = new BufferList()\n this.length = 0\n this.pipes = []\n this.flowing = null\n this[kPaused] = null\n\n // Should close be emitted on destroy. Defaults to true.\n if (options && options.emitClose === false) this.state &= ~kEmitClose\n\n // Should .destroy() be called after 'end' (and potentially 'finish').\n if (options && options.autoDestroy === false) this.state &= ~kAutoDestroy\n\n // Indicates whether the stream has errored. When true no further\n // _read calls, 'data' or 'readable' events should occur. This is needed\n // since when autoDestroy is disabled we need a way to tell whether the\n // stream has failed.\n this.errored = null\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = (options && options.defaultEncoding) || 'utf8'\n\n // Ref the piped dest which we need a drain event on it\n // type: null | Writable | Set<Writable>.\n this.awaitDrainWriters = null\n this.decoder = null\n this.encoding = null\n if (options && options.encoding) {\n this.decoder = new StringDecoder(options.encoding)\n this.encoding = options.encoding\n }\n}\nfunction Readable(options) {\n if (!(this instanceof Readable)) return new Readable(options)\n\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5.\n const isDuplex = this instanceof require('./duplex')\n this._readableState = new ReadableState(options, this, isDuplex)\n if (options) {\n if (typeof options.read === 'function') this._read = options.read\n if (typeof options.destroy === 'function') this._destroy = options.destroy\n if (typeof options.construct === 'function') this._construct = options.construct\n if (options.signal && !isDuplex) addAbortSignal(options.signal, this)\n }\n Stream.call(this, options)\n destroyImpl.construct(this, () => {\n if (this._readableState.needReadable) {\n maybeReadMore(this, this._readableState)\n }\n })\n}\nReadable.prototype.destroy = destroyImpl.destroy\nReadable.prototype._undestroy = destroyImpl.undestroy\nReadable.prototype._destroy = function (err, cb) {\n cb(err)\n}\nReadable.prototype[EE.captureRejectionSymbol] = function (err) {\n this.destroy(err)\n}\nReadable.prototype[SymbolAsyncDispose] = function () {\n let error\n if (!this.destroyed) {\n error = this.readableEnded ? null : new AbortError()\n this.destroy(error)\n }\n return new Promise((resolve, reject) => eos(this, (err) => (err && err !== error ? reject(err) : resolve(null))))\n}\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n return readableAddChunk(this, chunk, encoding, false)\n}\n\n// Unshift should *always* be something directly out of read().\nReadable.prototype.unshift = function (chunk, encoding) {\n return readableAddChunk(this, chunk, encoding, true)\n}\nfunction readableAddChunk(stream, chunk, encoding, addToFront) {\n debug('readableAddChunk', chunk)\n const state = stream._readableState\n let err\n if ((state.state & kObjectMode) === 0) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding\n if (state.encoding !== encoding) {\n if (addToFront && state.encoding) {\n // When unshifting, if state.encoding is set, we have to save\n // the string in the BufferList with the state encoding.\n chunk = Buffer.from(chunk, encoding).toString(state.encoding)\n } else {\n chunk = Buffer.from(chunk, encoding)\n encoding = ''\n }\n }\n } else if (chunk instanceof Buffer) {\n encoding = ''\n } else if (Stream._isUint8Array(chunk)) {\n chunk = Stream._uint8ArrayToBuffer(chunk)\n encoding = ''\n } else if (chunk != null) {\n err = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk)\n }\n }\n if (err) {\n errorOrDestroy(stream, err)\n } else if (chunk === null) {\n state.state &= ~kReading\n onEofChunk(stream, state)\n } else if ((state.state & kObjectMode) !== 0 || (chunk && chunk.length > 0)) {\n if (addToFront) {\n if ((state.state & kEndEmitted) !== 0) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT())\n else if (state.destroyed || state.errored) return false\n else addChunk(stream, state, chunk, true)\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF())\n } else if (state.destroyed || state.errored) {\n return false\n } else {\n state.state &= ~kReading\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk)\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false)\n else maybeReadMore(stream, state)\n } else {\n addChunk(stream, state, chunk, false)\n }\n }\n } else if (!addToFront) {\n state.state &= ~kReading\n maybeReadMore(stream, state)\n }\n\n // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n return !state.ended && (state.length < state.highWaterMark || state.length === 0)\n}\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync && stream.listenerCount('data') > 0) {\n // Use the guard to avoid creating `Set()` repeatedly\n // when we have multiple pipes.\n if ((state.state & kMultiAwaitDrain) !== 0) {\n state.awaitDrainWriters.clear()\n } else {\n state.awaitDrainWriters = null\n }\n state.dataEmitted = true\n stream.emit('data', chunk)\n } else {\n // Update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length\n if (addToFront) state.buffer.unshift(chunk)\n else state.buffer.push(chunk)\n if ((state.state & kNeedReadable) !== 0) emitReadable(stream)\n }\n maybeReadMore(stream, state)\n}\nReadable.prototype.isPaused = function () {\n const state = this._readableState\n return state[kPaused] === true || state.flowing === false\n}\n\n// Backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n const decoder = new StringDecoder(enc)\n this._readableState.decoder = decoder\n // If setEncoding(null), decoder.encoding equals utf8.\n this._readableState.encoding = this._readableState.decoder.encoding\n const buffer = this._readableState.buffer\n // Iterate over current buffer to convert already stored Buffers:\n let content = ''\n for (const data of buffer) {\n content += decoder.write(data)\n }\n buffer.clear()\n if (content !== '') buffer.push(content)\n this._readableState.length = content.length\n return this\n}\n\n// Don't raise the hwm > 1GB.\nconst MAX_HWM = 0x40000000\nfunction computeNewHighWaterMark(n) {\n if (n > MAX_HWM) {\n throw new ERR_OUT_OF_RANGE('size', '<= 1GiB', n)\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts.\n n--\n n |= n >>> 1\n n |= n >>> 2\n n |= n >>> 4\n n |= n >>> 8\n n |= n >>> 16\n n++\n }\n return n\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || (state.length === 0 && state.ended)) return 0\n if ((state.state & kObjectMode) !== 0) return 1\n if (NumberIsNaN(n)) {\n // Only flow one buffer at a time.\n if (state.flowing && state.length) return state.buffer.first().length\n return state.length\n }\n if (n <= state.length) return n\n return state.ended ? state.length : 0\n}\n\n// You can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n)\n // Same as parseInt(undefined, 10), however V8 7.3 performance regressed\n // in this scenario, so we are doing it manually.\n if (n === undefined) {\n n = NaN\n } else if (!NumberIsInteger(n)) {\n n = NumberParseInt(n, 10)\n }\n const state = this._readableState\n const nOrig = n\n\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n)\n if (n !== 0) state.state &= ~kEmittedReadable\n\n // If we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (\n n === 0 &&\n state.needReadable &&\n ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)\n ) {\n debug('read: emitReadable', state.length, state.ended)\n if (state.length === 0 && state.ended) endReadable(this)\n else emitReadable(this)\n return null\n }\n n = howMuchToRead(n, state)\n\n // If we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this)\n return null\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n let doRead = (state.state & kNeedReadable) !== 0\n debug('need readable', doRead)\n\n // If we currently have less than the highWaterMark, then also read some.\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true\n debug('length less than watermark', doRead)\n }\n\n // However, if we've ended, then there's no point, if we're already\n // reading, then it's unnecessary, if we're constructing we have to wait,\n // and if we're destroyed or errored, then it's not allowed,\n if (state.ended || state.reading || state.destroyed || state.errored || !state.constructed) {\n doRead = false\n debug('reading, ended or constructing', doRead)\n } else if (doRead) {\n debug('do read')\n state.state |= kReading | kSync\n // If the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.state |= kNeedReadable\n\n // Call internal read method\n try {\n this._read(state.highWaterMark)\n } catch (err) {\n errorOrDestroy(this, err)\n }\n state.state &= ~kSync\n\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state)\n }\n let ret\n if (n > 0) ret = fromList(n, state)\n else ret = null\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark\n n = 0\n } else {\n state.length -= n\n if (state.multiAwaitDrain) {\n state.awaitDrainWriters.clear()\n } else {\n state.awaitDrainWriters = null\n }\n }\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this)\n }\n if (ret !== null && !state.errorEmitted && !state.closeEmitted) {\n state.dataEmitted = true\n this.emit('data', ret)\n }\n return ret\n}\nfunction onEofChunk(stream, state) {\n debug('onEofChunk')\n if (state.ended) return\n if (state.decoder) {\n const chunk = state.decoder.end()\n if (chunk && chunk.length) {\n state.buffer.push(chunk)\n state.length += state.objectMode ? 1 : chunk.length\n }\n }\n state.ended = true\n if (state.sync) {\n // If we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call.\n emitReadable(stream)\n } else {\n // Emit 'readable' now to make sure it gets picked up.\n state.needReadable = false\n state.emittedReadable = true\n // We have to emit readable now that we are EOF. Modules\n // in the ecosystem (e.g. dicer) rely on this event being sync.\n emitReadable_(stream)\n }\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n const state = stream._readableState\n debug('emitReadable', state.needReadable, state.emittedReadable)\n state.needReadable = false\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing)\n state.emittedReadable = true\n process.nextTick(emitReadable_, stream)\n }\n}\nfunction emitReadable_(stream) {\n const state = stream._readableState\n debug('emitReadable_', state.destroyed, state.length, state.ended)\n if (!state.destroyed && !state.errored && (state.length || state.ended)) {\n stream.emit('readable')\n state.emittedReadable = false\n }\n\n // The stream needs another readable event if:\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark\n flow(stream)\n}\n\n// At this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore && state.constructed) {\n state.readingMore = true\n process.nextTick(maybeReadMore_, stream, state)\n }\n}\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (\n !state.reading &&\n !state.ended &&\n (state.length < state.highWaterMark || (state.flowing && state.length === 0))\n ) {\n const len = state.length\n debug('maybeReadMore read 0')\n stream.read(0)\n if (len === state.length)\n // Didn't get any data, stop spinning.\n break\n }\n state.readingMore = false\n}\n\n// Abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n throw new ERR_METHOD_NOT_IMPLEMENTED('_read()')\n}\nReadable.prototype.pipe = function (dest, pipeOpts) {\n const src = this\n const state = this._readableState\n if (state.pipes.length === 1) {\n if (!state.multiAwaitDrain) {\n state.multiAwaitDrain = true\n state.awaitDrainWriters = new SafeSet(state.awaitDrainWriters ? [state.awaitDrainWriters] : [])\n }\n }\n state.pipes.push(dest)\n debug('pipe count=%d opts=%j', state.pipes.length, pipeOpts)\n const doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr\n const endFn = doEnd ? onend : unpipe\n if (state.endEmitted) process.nextTick(endFn)\n else src.once('end', endFn)\n dest.on('unpipe', onunpipe)\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe')\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true\n cleanup()\n }\n }\n }\n function onend() {\n debug('onend')\n dest.end()\n }\n let ondrain\n let cleanedUp = false\n function cleanup() {\n debug('cleanup')\n // Cleanup event handlers once the pipe is broken.\n dest.removeListener('close', onclose)\n dest.removeListener('finish', onfinish)\n if (ondrain) {\n dest.removeListener('drain', ondrain)\n }\n dest.removeListener('error', onerror)\n dest.removeListener('unpipe', onunpipe)\n src.removeListener('end', onend)\n src.removeListener('end', unpipe)\n src.removeListener('data', ondata)\n cleanedUp = true\n\n // If the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (ondrain && state.awaitDrainWriters && (!dest._writableState || dest._writableState.needDrain)) ondrain()\n }\n function pause() {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if (!cleanedUp) {\n if (state.pipes.length === 1 && state.pipes[0] === dest) {\n debug('false write response, pause', 0)\n state.awaitDrainWriters = dest\n state.multiAwaitDrain = false\n } else if (state.pipes.length > 1 && state.pipes.includes(dest)) {\n debug('false write response, pause', state.awaitDrainWriters.size)\n state.awaitDrainWriters.add(dest)\n }\n src.pause()\n }\n if (!ondrain) {\n // When the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n ondrain = pipeOnDrain(src, dest)\n dest.on('drain', ondrain)\n }\n }\n src.on('data', ondata)\n function ondata(chunk) {\n debug('ondata')\n const ret = dest.write(chunk)\n debug('dest.write', ret)\n if (ret === false) {\n pause()\n }\n }\n\n // If the dest has an error, then stop piping into it.\n // However, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er)\n unpipe()\n dest.removeListener('error', onerror)\n if (dest.listenerCount('error') === 0) {\n const s = dest._writableState || dest._readableState\n if (s && !s.errorEmitted) {\n // User incorrectly emitted 'error' directly on the stream.\n errorOrDestroy(dest, er)\n } else {\n dest.emit('error', er)\n }\n }\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror)\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish)\n unpipe()\n }\n dest.once('close', onclose)\n function onfinish() {\n debug('onfinish')\n dest.removeListener('close', onclose)\n unpipe()\n }\n dest.once('finish', onfinish)\n function unpipe() {\n debug('unpipe')\n src.unpipe(dest)\n }\n\n // Tell the dest that it's being piped to.\n dest.emit('pipe', src)\n\n // Start the flow if it hasn't been started already.\n\n if (dest.writableNeedDrain === true) {\n pause()\n } else if (!state.flowing) {\n debug('pipe resume')\n src.resume()\n }\n return dest\n}\nfunction pipeOnDrain(src, dest) {\n return function pipeOnDrainFunctionResult() {\n const state = src._readableState\n\n // `ondrain` will call directly,\n // `this` maybe not a reference to dest,\n // so we use the real dest here.\n if (state.awaitDrainWriters === dest) {\n debug('pipeOnDrain', 1)\n state.awaitDrainWriters = null\n } else if (state.multiAwaitDrain) {\n debug('pipeOnDrain', state.awaitDrainWriters.size)\n state.awaitDrainWriters.delete(dest)\n }\n if ((!state.awaitDrainWriters || state.awaitDrainWriters.size === 0) && src.listenerCount('data')) {\n src.resume()\n }\n }\n}\nReadable.prototype.unpipe = function (dest) {\n const state = this._readableState\n const unpipeInfo = {\n hasUnpiped: false\n }\n\n // If we're not piping anywhere, then do nothing.\n if (state.pipes.length === 0) return this\n if (!dest) {\n // remove all.\n const dests = state.pipes\n state.pipes = []\n this.pause()\n for (let i = 0; i < dests.length; i++)\n dests[i].emit('unpipe', this, {\n hasUnpiped: false\n })\n return this\n }\n\n // Try to find the right one.\n const index = ArrayPrototypeIndexOf(state.pipes, dest)\n if (index === -1) return this\n state.pipes.splice(index, 1)\n if (state.pipes.length === 0) this.pause()\n dest.emit('unpipe', this, unpipeInfo)\n return this\n}\n\n// Set up data events if they are asked for\n// Ensure readable listeners eventually get something.\nReadable.prototype.on = function (ev, fn) {\n const res = Stream.prototype.on.call(this, ev, fn)\n const state = this._readableState\n if (ev === 'data') {\n // Update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0\n\n // Try start flowing on next tick if stream isn't explicitly paused.\n if (state.flowing !== false) this.resume()\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true\n state.flowing = false\n state.emittedReadable = false\n debug('on readable', state.length, state.reading)\n if (state.length) {\n emitReadable(this)\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this)\n }\n }\n }\n return res\n}\nReadable.prototype.addListener = Readable.prototype.on\nReadable.prototype.removeListener = function (ev, fn) {\n const res = Stream.prototype.removeListener.call(this, ev, fn)\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this)\n }\n return res\n}\nReadable.prototype.off = Readable.prototype.removeListener\nReadable.prototype.removeAllListeners = function (ev) {\n const res = Stream.prototype.removeAllListeners.apply(this, arguments)\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this)\n }\n return res\n}\nfunction updateReadableListening(self) {\n const state = self._readableState\n state.readableListening = self.listenerCount('readable') > 0\n if (state.resumeScheduled && state[kPaused] === false) {\n // Flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true\n\n // Crude way to check if we should resume.\n } else if (self.listenerCount('data') > 0) {\n self.resume()\n } else if (!state.readableListening) {\n state.flowing = null\n }\n}\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0')\n self.read(0)\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n const state = this._readableState\n if (!state.flowing) {\n debug('resume')\n // We flow only if there is no one listening\n // for readable, but we still have to call\n // resume().\n state.flowing = !state.readableListening\n resume(this, state)\n }\n state[kPaused] = false\n return this\n}\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true\n process.nextTick(resume_, stream, state)\n }\n}\nfunction resume_(stream, state) {\n debug('resume', state.reading)\n if (!state.reading) {\n stream.read(0)\n }\n state.resumeScheduled = false\n stream.emit('resume')\n flow(stream)\n if (state.flowing && !state.reading) stream.read(0)\n}\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing)\n if (this._readableState.flowing !== false) {\n debug('pause')\n this._readableState.flowing = false\n this.emit('pause')\n }\n this._readableState[kPaused] = true\n return this\n}\nfunction flow(stream) {\n const state = stream._readableState\n debug('flow', state.flowing)\n while (state.flowing && stream.read() !== null);\n}\n\n// Wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n let paused = false\n\n // TODO (ronag): Should this.destroy(err) emit\n // 'error' on the wrapped stream? Would require\n // a static factory method, e.g. Readable.wrap(stream).\n\n stream.on('data', (chunk) => {\n if (!this.push(chunk) && stream.pause) {\n paused = true\n stream.pause()\n }\n })\n stream.on('end', () => {\n this.push(null)\n })\n stream.on('error', (err) => {\n errorOrDestroy(this, err)\n })\n stream.on('close', () => {\n this.destroy()\n })\n stream.on('destroy', () => {\n this.destroy()\n })\n this._read = () => {\n if (paused && stream.resume) {\n paused = false\n stream.resume()\n }\n }\n\n // Proxy all the other methods. Important when wrapping filters and duplexes.\n const streamKeys = ObjectKeys(stream)\n for (let j = 1; j < streamKeys.length; j++) {\n const i = streamKeys[j]\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = stream[i].bind(stream)\n }\n }\n return this\n}\nReadable.prototype[SymbolAsyncIterator] = function () {\n return streamToAsyncIterator(this)\n}\nReadable.prototype.iterator = function (options) {\n if (options !== undefined) {\n validateObject(options, 'options')\n }\n return streamToAsyncIterator(this, options)\n}\nfunction streamToAsyncIterator(stream, options) {\n if (typeof stream.read !== 'function') {\n stream = Readable.wrap(stream, {\n objectMode: true\n })\n }\n const iter = createAsyncIterator(stream, options)\n iter.stream = stream\n return iter\n}\nasync function* createAsyncIterator(stream, options) {\n let callback = nop\n function next(resolve) {\n if (this === stream) {\n callback()\n callback = nop\n } else {\n callback = resolve\n }\n }\n stream.on('readable', next)\n let error\n const cleanup = eos(\n stream,\n {\n writable: false\n },\n (err) => {\n error = err ? aggregateTwoErrors(error, err) : null\n callback()\n callback = nop\n }\n )\n try {\n while (true) {\n const chunk = stream.destroyed ? null : stream.read()\n if (chunk !== null) {\n yield chunk\n } else if (error) {\n throw error\n } else if (error === null) {\n return\n } else {\n await new Promise(next)\n }\n }\n } catch (err) {\n error = aggregateTwoErrors(error, err)\n throw error\n } finally {\n if (\n (error || (options === null || options === undefined ? undefined : options.destroyOnReturn) !== false) &&\n (error === undefined || stream._readableState.autoDestroy)\n ) {\n destroyImpl.destroyer(stream, null)\n } else {\n stream.off('readable', next)\n cleanup()\n }\n }\n}\n\n// Making it explicit these properties are not enumerable\n// because otherwise some prototype manipulation in\n// userland will fail.\nObjectDefineProperties(Readable.prototype, {\n readable: {\n __proto__: null,\n get() {\n const r = this._readableState\n // r.readable === false means that this is part of a Duplex stream\n // where the readable side was disabled upon construction.\n // Compat. The user might manually disable readable side through\n // deprecated setter.\n return !!r && r.readable !== false && !r.destroyed && !r.errorEmitted && !r.endEmitted\n },\n set(val) {\n // Backwards compat.\n if (this._readableState) {\n this._readableState.readable = !!val\n }\n }\n },\n readableDidRead: {\n __proto__: null,\n enumerable: false,\n get: function () {\n return this._readableState.dataEmitted\n }\n },\n readableAborted: {\n __proto__: null,\n enumerable: false,\n get: function () {\n return !!(\n this._readableState.readable !== false &&\n (this._readableState.destroyed || this._readableState.errored) &&\n !this._readableState.endEmitted\n )\n }\n },\n readableHighWaterMark: {\n __proto__: null,\n enumerable: false,\n get: function () {\n return this._readableState.highWaterMark\n }\n },\n readableBuffer: {\n __proto__: null,\n enumerable: false,\n get: function () {\n return this._readableState && this._readableState.buffer\n }\n },\n readableFlowing: {\n __proto__: null,\n enumerable: false,\n get: function () {\n return this._readableState.flowing\n },\n set: function (state) {\n if (this._readableState) {\n this._readableState.flowing = state\n }\n }\n },\n readableLength: {\n __proto__: null,\n enumerable: false,\n get() {\n return this._readableState.length\n }\n },\n readableObjectMode: {\n __proto__: null,\n enumerable: false,\n get() {\n return this._readableState ? this._readableState.objectMode : false\n }\n },\n readableEncoding: {\n __proto__: null,\n enumerable: false,\n get() {\n return this._readableState ? this._readableState.encoding : null\n }\n },\n errored: {\n __proto__: null,\n enumerable: false,\n get() {\n return this._readableState ? this._readableState.errored : null\n }\n },\n closed: {\n __proto__: null,\n get() {\n return this._readableState ? this._readableState.closed : false\n }\n },\n destroyed: {\n __proto__: null,\n enumerable: false,\n get() {\n return this._readableState ? this._readableState.destroyed : false\n },\n set(value) {\n // We ignore the value if the stream\n // has not been initialized yet.\n if (!this._readableState) {\n return\n }\n\n // Backward compatibility, the user is explicitly\n // managing destroyed.\n this._readableState.destroyed = value\n }\n },\n readableEnded: {\n __proto__: null,\n enumerable: false,\n get() {\n return this._readableState ? this._readableState.endEmitted : false\n }\n }\n})\nObjectDefineProperties(ReadableState.prototype, {\n // Legacy getter for `pipesCount`.\n pipesCount: {\n __proto__: null,\n get() {\n return this.pipes.length\n }\n },\n // Legacy property for `paused`.\n paused: {\n __proto__: null,\n get() {\n return this[kPaused] !== false\n },\n set(value) {\n this[kPaused] = !!value\n }\n }\n})\n\n// Exposed for testing purposes only.\nReadable._fromList = fromList\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered.\n if (state.length === 0) return null\n let ret\n if (state.objectMode) ret = state.buffer.shift()\n else if (!n || n >= state.length) {\n // Read it all, truncate the list.\n if (state.decoder) ret = state.buffer.join('')\n else if (state.buffer.length === 1) ret = state.buffer.first()\n else ret = state.buffer.concat(state.length)\n state.buffer.clear()\n } else {\n // read part of list.\n ret = state.buffer.consume(n, state.decoder)\n }\n return ret\n}\nfunction endReadable(stream) {\n const state = stream._readableState\n debug('endReadable', state.endEmitted)\n if (!state.endEmitted) {\n state.ended = true\n process.nextTick(endReadableNT, state, stream)\n }\n}\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length)\n\n // Check that we didn't get one last unshift.\n if (!state.errored && !state.closeEmitted && !state.endEmitted && state.length === 0) {\n state.endEmitted = true\n stream.emit('end')\n if (stream.writable && stream.allowHalfOpen === false) {\n process.nextTick(endWritableNT, stream)\n } else if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well.\n const wState = stream._writableState\n const autoDestroy =\n !wState ||\n (wState.autoDestroy &&\n // We don't expect the writable to ever 'finish'\n // if writable is explicitly set to false.\n (wState.finished || wState.writable === false))\n if (autoDestroy) {\n stream.destroy()\n }\n }\n }\n}\nfunction endWritableNT(stream) {\n const writable = stream.writable && !stream.writableEnded && !stream.destroyed\n if (writable) {\n stream.end()\n }\n}\nReadable.from = function (iterable, opts) {\n return from(Readable, iterable, opts)\n}\nlet webStreamsAdapters\n\n// Lazy to avoid circular references\nfunction lazyWebStreams() {\n if (webStreamsAdapters === undefined) webStreamsAdapters = {}\n return webStreamsAdapters\n}\nReadable.fromWeb = function (readableStream, options) {\n return lazyWebStreams().newStreamReadableFromReadableStream(readableStream, options)\n}\nReadable.toWeb = function (streamReadable, options) {\n return lazyWebStreams().newReadableStreamFromStreamReadable(streamReadable, options)\n}\nReadable.wrap = function (src, options) {\n var _ref, _src$readableObjectMo\n return new Readable({\n objectMode:\n (_ref =\n (_src$readableObjectMo = src.readableObjectMode) !== null && _src$readableObjectMo !== undefined\n ? _src$readableObjectMo\n : src.objectMode) !== null && _ref !== undefined\n ? _ref\n : true,\n ...options,\n destroy(err, callback) {\n destroyImpl.destroyer(src, err)\n callback(err)\n }\n }).wrap(src)\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict'\n\n/* replacement start */\n\nconst process = require('process/')\n\n/* replacement end */\n\nconst {\n ArrayPrototypeSlice,\n Error,\n FunctionPrototypeSymbolHasInstance,\n ObjectDefineProperty,\n ObjectDefineProperties,\n ObjectSetPrototypeOf,\n StringPrototypeToLowerCase,\n Symbol,\n SymbolHasInstance\n} = require('../../ours/primordials')\nmodule.exports = Writable\nWritable.WritableState = WritableState\nconst { EventEmitter: EE } = require('events')\nconst Stream = require('./legacy').Stream\nconst { Buffer } = require('buffer')\nconst destroyImpl = require('./destroy')\nconst { addAbortSignal } = require('./add-abort-signal')\nconst { getHighWaterMark, getDefaultHighWaterMark } = require('./state')\nconst {\n ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED,\n ERR_STREAM_ALREADY_FINISHED,\n ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING\n} = require('../../ours/errors').codes\nconst { errorOrDestroy } = destroyImpl\nObjectSetPrototypeOf(Writable.prototype, Stream.prototype)\nObjectSetPrototypeOf(Writable, Stream)\nfunction nop() {}\nconst kOnFinished = Symbol('kOnFinished')\nfunction WritableState(options, stream, isDuplex) {\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof require('./duplex')\n\n // Object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!(options && options.objectMode)\n if (isDuplex) this.objectMode = this.objectMode || !!(options && options.writableObjectMode)\n\n // The point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write().\n this.highWaterMark = options\n ? getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex)\n : getDefaultHighWaterMark(false)\n\n // if _final has been called.\n this.finalCalled = false\n\n // drain event flag.\n this.needDrain = false\n // At the start of calling end()\n this.ending = false\n // When end() has been called, and returned.\n this.ended = false\n // When 'finish' is emitted.\n this.finished = false\n\n // Has it been destroyed\n this.destroyed = false\n\n // Should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n const noDecode = !!(options && options.decodeStrings === false)\n this.decodeStrings = !noDecode\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = (options && options.defaultEncoding) || 'utf8'\n\n // Not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0\n\n // A flag to see when we're in the middle of a write.\n this.writing = false\n\n // When true all writes will be buffered until .uncork() call.\n this.corked = 0\n\n // A flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true\n\n // A flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false\n\n // The callback that's passed to _write(chunk, cb).\n this.onwrite = onwrite.bind(undefined, stream)\n\n // The callback that the user supplies to write(chunk, encoding, cb).\n this.writecb = null\n\n // The amount that is being written when _write is called.\n this.writelen = 0\n\n // Storage for data passed to the afterWrite() callback in case of\n // synchronous _write() completion.\n this.afterWriteTickInfo = null\n resetBuffer(this)\n\n // Number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted.\n this.pendingcb = 0\n\n // Stream is still being constructed and cannot be\n // destroyed until construction finished or failed.\n // Async construction is opt in, therefore we start as\n // constructed.\n this.constructed = true\n\n // Emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams.\n this.prefinished = false\n\n // True if the error was already emitted and should not be thrown again.\n this.errorEmitted = false\n\n // Should close be emitted on destroy. Defaults to true.\n this.emitClose = !options || options.emitClose !== false\n\n // Should .destroy() be called after 'finish' (and potentially 'end').\n this.autoDestroy = !options || options.autoDestroy !== false\n\n // Indicates whether the stream has errored. When true all write() calls\n // should return false. This is needed since when autoDestroy\n // is disabled we need a way to tell whether the stream has failed.\n this.errored = null\n\n // Indicates whether the stream has finished destroying.\n this.closed = false\n\n // True if close has been emitted or would have been emitted\n // depending on emitClose.\n this.closeEmitted = false\n this[kOnFinished] = []\n}\nfunction resetBuffer(state) {\n state.buffered = []\n state.bufferedIndex = 0\n state.allBuffers = true\n state.allNoop = true\n}\nWritableState.prototype.getBuffer = function getBuffer() {\n return ArrayPrototypeSlice(this.buffered, this.bufferedIndex)\n}\nObjectDefineProperty(WritableState.prototype, 'bufferedRequestCount', {\n __proto__: null,\n get() {\n return this.buffered.length - this.bufferedIndex\n }\n})\nfunction Writable(options) {\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5.\n const isDuplex = this instanceof require('./duplex')\n if (!isDuplex && !FunctionPrototypeSymbolHasInstance(Writable, this)) return new Writable(options)\n this._writableState = new WritableState(options, this, isDuplex)\n if (options) {\n if (typeof options.write === 'function') this._write = options.write\n if (typeof options.writev === 'function') this._writev = options.writev\n if (typeof options.destroy === 'function') this._destroy = options.destroy\n if (typeof options.final === 'function') this._final = options.final\n if (typeof options.construct === 'function') this._construct = options.construct\n if (options.signal) addAbortSignal(options.signal, this)\n }\n Stream.call(this, options)\n destroyImpl.construct(this, () => {\n const state = this._writableState\n if (!state.writing) {\n clearBuffer(this, state)\n }\n finishMaybe(this, state)\n })\n}\nObjectDefineProperty(Writable, SymbolHasInstance, {\n __proto__: null,\n value: function (object) {\n if (FunctionPrototypeSymbolHasInstance(this, object)) return true\n if (this !== Writable) return false\n return object && object._writableState instanceof WritableState\n }\n})\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE())\n}\nfunction _write(stream, chunk, encoding, cb) {\n const state = stream._writableState\n if (typeof encoding === 'function') {\n cb = encoding\n encoding = state.defaultEncoding\n } else {\n if (!encoding) encoding = state.defaultEncoding\n else if (encoding !== 'buffer' && !Buffer.isEncoding(encoding)) throw new ERR_UNKNOWN_ENCODING(encoding)\n if (typeof cb !== 'function') cb = nop\n }\n if (chunk === null) {\n throw new ERR_STREAM_NULL_VALUES()\n } else if (!state.objectMode) {\n if (typeof chunk === 'string') {\n if (state.decodeStrings !== false) {\n chunk = Buffer.from(chunk, encoding)\n encoding = 'buffer'\n }\n } else if (chunk instanceof Buffer) {\n encoding = 'buffer'\n } else if (Stream._isUint8Array(chunk)) {\n chunk = Stream._uint8ArrayToBuffer(chunk)\n encoding = 'buffer'\n } else {\n throw new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk)\n }\n }\n let err\n if (state.ending) {\n err = new ERR_STREAM_WRITE_AFTER_END()\n } else if (state.destroyed) {\n err = new ERR_STREAM_DESTROYED('write')\n }\n if (err) {\n process.nextTick(cb, err)\n errorOrDestroy(stream, err, true)\n return err\n }\n state.pendingcb++\n return writeOrBuffer(stream, state, chunk, encoding, cb)\n}\nWritable.prototype.write = function (chunk, encoding, cb) {\n return _write(this, chunk, encoding, cb) === true\n}\nWritable.prototype.cork = function () {\n this._writableState.corked++\n}\nWritable.prototype.uncork = function () {\n const state = this._writableState\n if (state.corked) {\n state.corked--\n if (!state.writing) clearBuffer(this, state)\n }\n}\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = StringPrototypeToLowerCase(encoding)\n if (!Buffer.isEncoding(encoding)) throw new ERR_UNKNOWN_ENCODING(encoding)\n this._writableState.defaultEncoding = encoding\n return this\n}\n\n// If we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, chunk, encoding, callback) {\n const len = state.objectMode ? 1 : chunk.length\n state.length += len\n\n // stream._write resets state.length\n const ret = state.length < state.highWaterMark\n // We must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true\n if (state.writing || state.corked || state.errored || !state.constructed) {\n state.buffered.push({\n chunk,\n encoding,\n callback\n })\n if (state.allBuffers && encoding !== 'buffer') {\n state.allBuffers = false\n }\n if (state.allNoop && callback !== nop) {\n state.allNoop = false\n }\n } else {\n state.writelen = len\n state.writecb = callback\n state.writing = true\n state.sync = true\n stream._write(chunk, encoding, state.onwrite)\n state.sync = false\n }\n\n // Return false if errored or destroyed in order to break\n // any synchronous while(stream.write(data)) loops.\n return ret && !state.errored && !state.destroyed\n}\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len\n state.writecb = cb\n state.writing = true\n state.sync = true\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'))\n else if (writev) stream._writev(chunk, state.onwrite)\n else stream._write(chunk, encoding, state.onwrite)\n state.sync = false\n}\nfunction onwriteError(stream, state, er, cb) {\n --state.pendingcb\n cb(er)\n // Ensure callbacks are invoked even when autoDestroy is\n // not enabled. Passing `er` here doesn't make sense since\n // it's related to one specific write, not to the buffered\n // writes.\n errorBuffer(state)\n // This can emit error, but error must always follow cb.\n errorOrDestroy(stream, er)\n}\nfunction onwrite(stream, er) {\n const state = stream._writableState\n const sync = state.sync\n const cb = state.writecb\n if (typeof cb !== 'function') {\n errorOrDestroy(stream, new ERR_MULTIPLE_CALLBACK())\n return\n }\n state.writing = false\n state.writecb = null\n state.length -= state.writelen\n state.writelen = 0\n if (er) {\n // Avoid V8 leak, https://github.com/nodejs/node/pull/34103#issuecomment-652002364\n er.stack // eslint-disable-line no-unused-expressions\n\n if (!state.errored) {\n state.errored = er\n }\n\n // In case of duplex streams we need to notify the readable side of the\n // error.\n if (stream._readableState && !stream._readableState.errored) {\n stream._readableState.errored = er\n }\n if (sync) {\n process.nextTick(onwriteError, stream, state, er, cb)\n } else {\n onwriteError(stream, state, er, cb)\n }\n } else {\n if (state.buffered.length > state.bufferedIndex) {\n clearBuffer(stream, state)\n }\n if (sync) {\n // It is a common case that the callback passed to .write() is always\n // the same. In that case, we do not schedule a new nextTick(), but\n // rather just increase a counter, to improve performance and avoid\n // memory allocations.\n if (state.afterWriteTickInfo !== null && state.afterWriteTickInfo.cb === cb) {\n state.afterWriteTickInfo.count++\n } else {\n state.afterWriteTickInfo = {\n count: 1,\n cb,\n stream,\n state\n }\n process.nextTick(afterWriteTick, state.afterWriteTickInfo)\n }\n } else {\n afterWrite(stream, state, 1, cb)\n }\n }\n}\nfunction afterWriteTick({ stream, state, count, cb }) {\n state.afterWriteTickInfo = null\n return afterWrite(stream, state, count, cb)\n}\nfunction afterWrite(stream, state, count, cb) {\n const needDrain = !state.ending && !stream.destroyed && state.length === 0 && state.needDrain\n if (needDrain) {\n state.needDrain = false\n stream.emit('drain')\n }\n while (count-- > 0) {\n state.pendingcb--\n cb()\n }\n if (state.destroyed) {\n errorBuffer(state)\n }\n finishMaybe(stream, state)\n}\n\n// If there's something in the buffer waiting, then invoke callbacks.\nfunction errorBuffer(state) {\n if (state.writing) {\n return\n }\n for (let n = state.bufferedIndex; n < state.buffered.length; ++n) {\n var _state$errored\n const { chunk, callback } = state.buffered[n]\n const len = state.objectMode ? 1 : chunk.length\n state.length -= len\n callback(\n (_state$errored = state.errored) !== null && _state$errored !== undefined\n ? _state$errored\n : new ERR_STREAM_DESTROYED('write')\n )\n }\n const onfinishCallbacks = state[kOnFinished].splice(0)\n for (let i = 0; i < onfinishCallbacks.length; i++) {\n var _state$errored2\n onfinishCallbacks[i](\n (_state$errored2 = state.errored) !== null && _state$errored2 !== undefined\n ? _state$errored2\n : new ERR_STREAM_DESTROYED('end')\n )\n }\n resetBuffer(state)\n}\n\n// If there's something in the buffer waiting, then process it.\nfunction clearBuffer(stream, state) {\n if (state.corked || state.bufferProcessing || state.destroyed || !state.constructed) {\n return\n }\n const { buffered, bufferedIndex, objectMode } = state\n const bufferedLength = buffered.length - bufferedIndex\n if (!bufferedLength) {\n return\n }\n let i = bufferedIndex\n state.bufferProcessing = true\n if (bufferedLength > 1 && stream._writev) {\n state.pendingcb -= bufferedLength - 1\n const callback = state.allNoop\n ? nop\n : (err) => {\n for (let n = i; n < buffered.length; ++n) {\n buffered[n].callback(err)\n }\n }\n // Make a copy of `buffered` if it's going to be used by `callback` above,\n // since `doWrite` will mutate the array.\n const chunks = state.allNoop && i === 0 ? buffered : ArrayPrototypeSlice(buffered, i)\n chunks.allBuffers = state.allBuffers\n doWrite(stream, state, true, state.length, chunks, '', callback)\n resetBuffer(state)\n } else {\n do {\n const { chunk, encoding, callback } = buffered[i]\n buffered[i++] = null\n const len = objectMode ? 1 : chunk.length\n doWrite(stream, state, false, len, chunk, encoding, callback)\n } while (i < buffered.length && !state.writing)\n if (i === buffered.length) {\n resetBuffer(state)\n } else if (i > 256) {\n buffered.splice(0, i)\n state.bufferedIndex = 0\n } else {\n state.bufferedIndex = i\n }\n }\n state.bufferProcessing = false\n}\nWritable.prototype._write = function (chunk, encoding, cb) {\n if (this._writev) {\n this._writev(\n [\n {\n chunk,\n encoding\n }\n ],\n cb\n )\n } else {\n throw new ERR_METHOD_NOT_IMPLEMENTED('_write()')\n }\n}\nWritable.prototype._writev = null\nWritable.prototype.end = function (chunk, encoding, cb) {\n const state = this._writableState\n if (typeof chunk === 'function') {\n cb = chunk\n chunk = null\n encoding = null\n } else if (typeof encoding === 'function') {\n cb = encoding\n encoding = null\n }\n let err\n if (chunk !== null && chunk !== undefined) {\n const ret = _write(this, chunk, encoding)\n if (ret instanceof Error) {\n err = ret\n }\n }\n\n // .end() fully uncorks.\n if (state.corked) {\n state.corked = 1\n this.uncork()\n }\n if (err) {\n // Do nothing...\n } else if (!state.errored && !state.ending) {\n // This is forgiving in terms of unnecessary calls to end() and can hide\n // logic errors. However, usually such errors are harmless and causing a\n // hard error can be disproportionately destructive. It is not always\n // trivial for the user to determine whether end() needs to be called\n // or not.\n\n state.ending = true\n finishMaybe(this, state, true)\n state.ended = true\n } else if (state.finished) {\n err = new ERR_STREAM_ALREADY_FINISHED('end')\n } else if (state.destroyed) {\n err = new ERR_STREAM_DESTROYED('end')\n }\n if (typeof cb === 'function') {\n if (err || state.finished) {\n process.nextTick(cb, err)\n } else {\n state[kOnFinished].push(cb)\n }\n }\n return this\n}\nfunction needFinish(state) {\n return (\n state.ending &&\n !state.destroyed &&\n state.constructed &&\n state.length === 0 &&\n !state.errored &&\n state.buffered.length === 0 &&\n !state.finished &&\n !state.writing &&\n !state.errorEmitted &&\n !state.closeEmitted\n )\n}\nfunction callFinal(stream, state) {\n let called = false\n function onFinish(err) {\n if (called) {\n errorOrDestroy(stream, err !== null && err !== undefined ? err : ERR_MULTIPLE_CALLBACK())\n return\n }\n called = true\n state.pendingcb--\n if (err) {\n const onfinishCallbacks = state[kOnFinished].splice(0)\n for (let i = 0; i < onfinishCallbacks.length; i++) {\n onfinishCallbacks[i](err)\n }\n errorOrDestroy(stream, err, state.sync)\n } else if (needFinish(state)) {\n state.prefinished = true\n stream.emit('prefinish')\n // Backwards compat. Don't check state.sync here.\n // Some streams assume 'finish' will be emitted\n // asynchronously relative to _final callback.\n state.pendingcb++\n process.nextTick(finish, stream, state)\n }\n }\n state.sync = true\n state.pendingcb++\n try {\n stream._final(onFinish)\n } catch (err) {\n onFinish(err)\n }\n state.sync = false\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.finalCalled = true\n callFinal(stream, state)\n } else {\n state.prefinished = true\n stream.emit('prefinish')\n }\n }\n}\nfunction finishMaybe(stream, state, sync) {\n if (needFinish(state)) {\n prefinish(stream, state)\n if (state.pendingcb === 0) {\n if (sync) {\n state.pendingcb++\n process.nextTick(\n (stream, state) => {\n if (needFinish(state)) {\n finish(stream, state)\n } else {\n state.pendingcb--\n }\n },\n stream,\n state\n )\n } else if (needFinish(state)) {\n state.pendingcb++\n finish(stream, state)\n }\n }\n }\n}\nfunction finish(stream, state) {\n state.pendingcb--\n state.finished = true\n const onfinishCallbacks = state[kOnFinished].splice(0)\n for (let i = 0; i < onfinishCallbacks.length; i++) {\n onfinishCallbacks[i]()\n }\n stream.emit('finish')\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well.\n const rState = stream._readableState\n const autoDestroy =\n !rState ||\n (rState.autoDestroy &&\n // We don't expect the readable to ever 'end'\n // if readable is explicitly set to false.\n (rState.endEmitted || rState.readable === false))\n if (autoDestroy) {\n stream.destroy()\n }\n }\n}\nObjectDefineProperties(Writable.prototype, {\n closed: {\n __proto__: null,\n get() {\n return this._writableState ? this._writableState.closed : false\n }\n },\n destroyed: {\n __proto__: null,\n get() {\n return this._writableState ? this._writableState.destroyed : false\n },\n set(value) {\n // Backward compatibility, the user is explicitly managing destroyed.\n if (this._writableState) {\n this._writableState.destroyed = value\n }\n }\n },\n writable: {\n __proto__: null,\n get() {\n const w = this._writableState\n // w.writable === false means that this is part of a Duplex stream\n // where the writable side was disabled upon construction.\n // Compat. The user might manually disable writable side through\n // deprecated setter.\n return !!w && w.writable !== false && !w.destroyed && !w.errored && !w.ending && !w.ended\n },\n set(val) {\n // Backwards compatible.\n if (this._writableState) {\n this._writableState.writable = !!val\n }\n }\n },\n writableFinished: {\n __proto__: null,\n get() {\n return this._writableState ? this._writableState.finished : false\n }\n },\n writableObjectMode: {\n __proto__: null,\n get() {\n return this._writableState ? this._writableState.objectMode : false\n }\n },\n writableBuffer: {\n __proto__: null,\n get() {\n return this._writableState && this._writableState.getBuffer()\n }\n },\n writableEnded: {\n __proto__: null,\n get() {\n return this._writableState ? this._writableState.ending : false\n }\n },\n writableNeedDrain: {\n __proto__: null,\n get() {\n const wState = this._writableState\n if (!wState) return false\n return !wState.destroyed && !wState.ending && wState.needDrain\n }\n },\n writableHighWaterMark: {\n __proto__: null,\n get() {\n return this._writableState && this._writableState.highWaterMark\n }\n },\n writableCorked: {\n __proto__: null,\n get() {\n return this._writableState ? this._writableState.corked : 0\n }\n },\n writableLength: {\n __proto__: null,\n get() {\n return this._writableState && this._writableState.length\n }\n },\n errored: {\n __proto__: null,\n enumerable: false,\n get() {\n return this._writableState ? this._writableState.errored : null\n }\n },\n writableAborted: {\n __proto__: null,\n enumerable: false,\n get: function () {\n return !!(\n this._writableState.writable !== false &&\n (this._writableState.destroyed || this._writableState.errored) &&\n !this._writableState.finished\n )\n }\n }\n})\nconst destroy = destroyImpl.destroy\nWritable.prototype.destroy = function (err, cb) {\n const state = this._writableState\n\n // Invoke pending callbacks.\n if (!state.destroyed && (state.bufferedIndex < state.buffered.length || state[kOnFinished].length)) {\n process.nextTick(errorBuffer, state)\n }\n destroy.call(this, err, cb)\n return this\n}\nWritable.prototype._undestroy = destroyImpl.undestroy\nWritable.prototype._destroy = function (err, cb) {\n cb(err)\n}\nWritable.prototype[EE.captureRejectionSymbol] = function (err) {\n this.destroy(err)\n}\nlet webStreamsAdapters\n\n// Lazy to avoid circular references\nfunction lazyWebStreams() {\n if (webStreamsAdapters === undefined) webStreamsAdapters = {}\n return webStreamsAdapters\n}\nWritable.fromWeb = function (writableStream, options) {\n return lazyWebStreams().newStreamWritableFromWritableStream(writableStream, options)\n}\nWritable.toWeb = function (streamWritable) {\n return lazyWebStreams().newWritableStreamFromStreamWritable(streamWritable)\n}\n","/* replacement start */\n\nconst process = require('process/')\n\n/* replacement end */\n\n;('use strict')\nconst bufferModule = require('buffer')\nconst {\n isReadable,\n isWritable,\n isIterable,\n isNodeStream,\n isReadableNodeStream,\n isWritableNodeStream,\n isDuplexNodeStream,\n isReadableStream,\n isWritableStream\n} = require('./utils')\nconst eos = require('./end-of-stream')\nconst {\n AbortError,\n codes: { ERR_INVALID_ARG_TYPE, ERR_INVALID_RETURN_VALUE }\n} = require('../../ours/errors')\nconst { destroyer } = require('./destroy')\nconst Duplex = require('./duplex')\nconst Readable = require('./readable')\nconst Writable = require('./writable')\nconst { createDeferredPromise } = require('../../ours/util')\nconst from = require('./from')\nconst Blob = globalThis.Blob || bufferModule.Blob\nconst isBlob =\n typeof Blob !== 'undefined'\n ? function isBlob(b) {\n return b instanceof Blob\n }\n : function isBlob(b) {\n return false\n }\nconst AbortController = globalThis.AbortController || require('abort-controller').AbortController\nconst { FunctionPrototypeCall } = require('../../ours/primordials')\n\n// This is needed for pre node 17.\nclass Duplexify extends Duplex {\n constructor(options) {\n super(options)\n\n // https://github.com/nodejs/node/pull/34385\n\n if ((options === null || options === undefined ? undefined : options.readable) === false) {\n this._readableState.readable = false\n this._readableState.ended = true\n this._readableState.endEmitted = true\n }\n if ((options === null || options === undefined ? undefined : options.writable) === false) {\n this._writableState.writable = false\n this._writableState.ending = true\n this._writableState.ended = true\n this._writableState.finished = true\n }\n }\n}\nmodule.exports = function duplexify(body, name) {\n if (isDuplexNodeStream(body)) {\n return body\n }\n if (isReadableNodeStream(body)) {\n return _duplexify({\n readable: body\n })\n }\n if (isWritableNodeStream(body)) {\n return _duplexify({\n writable: body\n })\n }\n if (isNodeStream(body)) {\n return _duplexify({\n writable: false,\n readable: false\n })\n }\n if (isReadableStream(body)) {\n return _duplexify({\n readable: Readable.fromWeb(body)\n })\n }\n if (isWritableStream(body)) {\n return _duplexify({\n writable: Writable.fromWeb(body)\n })\n }\n if (typeof body === 'function') {\n const { value, write, final, destroy } = fromAsyncGen(body)\n if (isIterable(value)) {\n return from(Duplexify, value, {\n // TODO (ronag): highWaterMark?\n objectMode: true,\n write,\n final,\n destroy\n })\n }\n const then = value === null || value === undefined ? undefined : value.then\n if (typeof then === 'function') {\n let d\n const promise = FunctionPrototypeCall(\n then,\n value,\n (val) => {\n if (val != null) {\n throw new ERR_INVALID_RETURN_VALUE('nully', 'body', val)\n }\n },\n (err) => {\n destroyer(d, err)\n }\n )\n return (d = new Duplexify({\n // TODO (ronag): highWaterMark?\n objectMode: true,\n readable: false,\n write,\n final(cb) {\n final(async () => {\n try {\n await promise\n process.nextTick(cb, null)\n } catch (err) {\n process.nextTick(cb, err)\n }\n })\n },\n destroy\n }))\n }\n throw new ERR_INVALID_RETURN_VALUE('Iterable, AsyncIterable or AsyncFunction', name, value)\n }\n if (isBlob(body)) {\n return duplexify(body.arrayBuffer())\n }\n if (isIterable(body)) {\n return from(Duplexify, body, {\n // TODO (ronag): highWaterMark?\n objectMode: true,\n writable: false\n })\n }\n if (\n isReadableStream(body === null || body === undefined ? undefined : body.readable) &&\n isWritableStream(body === null || body === undefined ? undefined : body.writable)\n ) {\n return Duplexify.fromWeb(body)\n }\n if (\n typeof (body === null || body === undefined ? undefined : body.writable) === 'object' ||\n typeof (body === null || body === undefined ? undefined : body.readable) === 'object'\n ) {\n const readable =\n body !== null && body !== undefined && body.readable\n ? isReadableNodeStream(body === null || body === undefined ? undefined : body.readable)\n ? body === null || body === undefined\n ? undefined\n : body.readable\n : duplexify(body.readable)\n : undefined\n const writable =\n body !== null && body !== undefined && body.writable\n ? isWritableNodeStream(body === null || body === undefined ? undefined : body.writable)\n ? body === null || body === undefined\n ? undefined\n : body.writable\n : duplexify(body.writable)\n : undefined\n return _duplexify({\n readable,\n writable\n })\n }\n const then = body === null || body === undefined ? undefined : body.then\n if (typeof then === 'function') {\n let d\n FunctionPrototypeCall(\n then,\n body,\n (val) => {\n if (val != null) {\n d.push(val)\n }\n d.push(null)\n },\n (err) => {\n destroyer(d, err)\n }\n )\n return (d = new Duplexify({\n objectMode: true,\n writable: false,\n read() {}\n }))\n }\n throw new ERR_INVALID_ARG_TYPE(\n name,\n [\n 'Blob',\n 'ReadableStream',\n 'WritableStream',\n 'Stream',\n 'Iterable',\n 'AsyncIterable',\n 'Function',\n '{ readable, writable } pair',\n 'Promise'\n ],\n body\n )\n}\nfunction fromAsyncGen(fn) {\n let { promise, resolve } = createDeferredPromise()\n const ac = new AbortController()\n const signal = ac.signal\n const value = fn(\n (async function* () {\n while (true) {\n const _promise = promise\n promise = null\n const { chunk, done, cb } = await _promise\n process.nextTick(cb)\n if (done) return\n if (signal.aborted)\n throw new AbortError(undefined, {\n cause: signal.reason\n })\n ;({ promise, resolve } = createDeferredPromise())\n yield chunk\n }\n })(),\n {\n signal\n }\n )\n return {\n value,\n write(chunk, encoding, cb) {\n const _resolve = resolve\n resolve = null\n _resolve({\n chunk,\n done: false,\n cb\n })\n },\n final(cb) {\n const _resolve = resolve\n resolve = null\n _resolve({\n done: true,\n cb\n })\n },\n destroy(err, cb) {\n ac.abort()\n cb(err)\n }\n }\n}\nfunction _duplexify(pair) {\n const r = pair.readable && typeof pair.readable.read !== 'function' ? Readable.wrap(pair.readable) : pair.readable\n const w = pair.writable\n let readable = !!isReadable(r)\n let writable = !!isWritable(w)\n let ondrain\n let onfinish\n let onreadable\n let onclose\n let d\n function onfinished(err) {\n const cb = onclose\n onclose = null\n if (cb) {\n cb(err)\n } else if (err) {\n d.destroy(err)\n }\n }\n\n // TODO(ronag): Avoid double buffering.\n // Implement Writable/Readable/Duplex traits.\n // See, https://github.com/nodejs/node/pull/33515.\n d = new Duplexify({\n // TODO (ronag): highWaterMark?\n readableObjectMode: !!(r !== null && r !== undefined && r.readableObjectMode),\n writableObjectMode: !!(w !== null && w !== undefined && w.writableObjectMode),\n readable,\n writable\n })\n if (writable) {\n eos(w, (err) => {\n writable = false\n if (err) {\n destroyer(r, err)\n }\n onfinished(err)\n })\n d._write = function (chunk, encoding, callback) {\n if (w.write(chunk, encoding)) {\n callback()\n } else {\n ondrain = callback\n }\n }\n d._final = function (callback) {\n w.end()\n onfinish = callback\n }\n w.on('drain', function () {\n if (ondrain) {\n const cb = ondrain\n ondrain = null\n cb()\n }\n })\n w.on('finish', function () {\n if (onfinish) {\n const cb = onfinish\n onfinish = null\n cb()\n }\n })\n }\n if (readable) {\n eos(r, (err) => {\n readable = false\n if (err) {\n destroyer(r, err)\n }\n onfinished(err)\n })\n r.on('readable', function () {\n if (onreadable) {\n const cb = onreadable\n onreadable = null\n cb()\n }\n })\n r.on('end', function () {\n d.push(null)\n })\n d._read = function () {\n while (true) {\n const buf = r.read()\n if (buf === null) {\n onreadable = d._read\n return\n }\n if (!d.push(buf)) {\n return\n }\n }\n }\n }\n d._destroy = function (err, callback) {\n if (!err && onclose !== null) {\n err = new AbortError()\n }\n onreadable = null\n ondrain = null\n onfinish = null\n if (onclose === null) {\n callback(err)\n } else {\n onclose = callback\n destroyer(w, err)\n destroyer(r, err)\n }\n }\n return d\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototype inheritance, this class\n// prototypically inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict'\n\nconst {\n ObjectDefineProperties,\n ObjectGetOwnPropertyDescriptor,\n ObjectKeys,\n ObjectSetPrototypeOf\n} = require('../../ours/primordials')\nmodule.exports = Duplex\nconst Readable = require('./readable')\nconst Writable = require('./writable')\nObjectSetPrototypeOf(Duplex.prototype, Readable.prototype)\nObjectSetPrototypeOf(Duplex, Readable)\n{\n const keys = ObjectKeys(Writable.prototype)\n // Allow the keys array to be GC'ed.\n for (let i = 0; i < keys.length; i++) {\n const method = keys[i]\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method]\n }\n}\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options)\n Readable.call(this, options)\n Writable.call(this, options)\n if (options) {\n this.allowHalfOpen = options.allowHalfOpen !== false\n if (options.readable === false) {\n this._readableState.readable = false\n this._readableState.ended = true\n this._readableState.endEmitted = true\n }\n if (options.writable === false) {\n this._writableState.writable = false\n this._writableState.ending = true\n this._writableState.ended = true\n this._writableState.finished = true\n }\n } else {\n this.allowHalfOpen = true\n }\n}\nObjectDefineProperties(Duplex.prototype, {\n writable: {\n __proto__: null,\n ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writable')\n },\n writableHighWaterMark: {\n __proto__: null,\n ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableHighWaterMark')\n },\n writableObjectMode: {\n __proto__: null,\n ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableObjectMode')\n },\n writableBuffer: {\n __proto__: null,\n ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableBuffer')\n },\n writableLength: {\n __proto__: null,\n ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableLength')\n },\n writableFinished: {\n __proto__: null,\n ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableFinished')\n },\n writableCorked: {\n __proto__: null,\n ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableCorked')\n },\n writableEnded: {\n __proto__: null,\n ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableEnded')\n },\n writableNeedDrain: {\n __proto__: null,\n ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableNeedDrain')\n },\n destroyed: {\n __proto__: null,\n get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false\n }\n return this._readableState.destroyed && this._writableState.destroyed\n },\n set(value) {\n // Backward compatibility, the user is explicitly\n // managing destroyed.\n if (this._readableState && this._writableState) {\n this._readableState.destroyed = value\n this._writableState.destroyed = value\n }\n }\n }\n})\nlet webStreamsAdapters\n\n// Lazy to avoid circular references\nfunction lazyWebStreams() {\n if (webStreamsAdapters === undefined) webStreamsAdapters = {}\n return webStreamsAdapters\n}\nDuplex.fromWeb = function (pair, options) {\n return lazyWebStreams().newStreamDuplexFromReadableWritablePair(pair, options)\n}\nDuplex.toWeb = function (duplex) {\n return lazyWebStreams().newReadableWritablePairFromDuplex(duplex)\n}\nlet duplexify\nDuplex.from = function (body) {\n if (!duplexify) {\n duplexify = require('./duplexify')\n }\n return duplexify(body, 'body')\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict'\n\nconst { ObjectSetPrototypeOf, Symbol } = require('../../ours/primordials')\nmodule.exports = Transform\nconst { ERR_METHOD_NOT_IMPLEMENTED } = require('../../ours/errors').codes\nconst Duplex = require('./duplex')\nconst { getHighWaterMark } = require('./state')\nObjectSetPrototypeOf(Transform.prototype, Duplex.prototype)\nObjectSetPrototypeOf(Transform, Duplex)\nconst kCallback = Symbol('kCallback')\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options)\n\n // TODO (ronag): This should preferably always be\n // applied but would be semver-major. Or even better;\n // make Transform a Readable with the Writable interface.\n const readableHighWaterMark = options ? getHighWaterMark(this, options, 'readableHighWaterMark', true) : null\n if (readableHighWaterMark === 0) {\n // A Duplex will buffer both on the writable and readable side while\n // a Transform just wants to buffer hwm number of elements. To avoid\n // buffering twice we disable buffering on the writable side.\n options = {\n ...options,\n highWaterMark: null,\n readableHighWaterMark,\n // TODO (ronag): 0 is not optimal since we have\n // a \"bug\" where we check needDrain before calling _write and not after.\n // Refs: https://github.com/nodejs/node/pull/32887\n // Refs: https://github.com/nodejs/node/pull/35941\n writableHighWaterMark: options.writableHighWaterMark || 0\n }\n }\n Duplex.call(this, options)\n\n // We have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false\n this[kCallback] = null\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform\n if (typeof options.flush === 'function') this._flush = options.flush\n }\n\n // When the writable side finishes, then flush out anything remaining.\n // Backwards compat. Some Transform streams incorrectly implement _final\n // instead of or in addition to _flush. By using 'prefinish' instead of\n // implementing _final we continue supporting this unfortunate use case.\n this.on('prefinish', prefinish)\n}\nfunction final(cb) {\n if (typeof this._flush === 'function' && !this.destroyed) {\n this._flush((er, data) => {\n if (er) {\n if (cb) {\n cb(er)\n } else {\n this.destroy(er)\n }\n return\n }\n if (data != null) {\n this.push(data)\n }\n this.push(null)\n if (cb) {\n cb()\n }\n })\n } else {\n this.push(null)\n if (cb) {\n cb()\n }\n }\n}\nfunction prefinish() {\n if (this._final !== final) {\n final.call(this)\n }\n}\nTransform.prototype._final = final\nTransform.prototype._transform = function (chunk, encoding, callback) {\n throw new ERR_METHOD_NOT_IMPLEMENTED('_transform()')\n}\nTransform.prototype._write = function (chunk, encoding, callback) {\n const rState = this._readableState\n const wState = this._writableState\n const length = rState.length\n this._transform(chunk, encoding, (err, val) => {\n if (err) {\n callback(err)\n return\n }\n if (val != null) {\n this.push(val)\n }\n if (\n wState.ended ||\n // Backwards compat.\n length === rState.length ||\n // Backwards compat.\n rState.length < rState.highWaterMark\n ) {\n callback()\n } else {\n this[kCallback] = callback\n }\n })\n}\nTransform.prototype._read = function () {\n if (this[kCallback]) {\n const callback = this[kCallback]\n this[kCallback] = null\n callback()\n }\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict'\n\nconst { ObjectSetPrototypeOf } = require('../../ours/primordials')\nmodule.exports = PassThrough\nconst Transform = require('./transform')\nObjectSetPrototypeOf(PassThrough.prototype, Transform.prototype)\nObjectSetPrototypeOf(PassThrough, Transform)\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options)\n Transform.call(this, options)\n}\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk)\n}\n","/* replacement start */\n\nconst process = require('process/')\n\n/* replacement end */\n// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n;('use strict')\nconst { ArrayIsArray, Promise, SymbolAsyncIterator, SymbolDispose } = require('../../ours/primordials')\nconst eos = require('./end-of-stream')\nconst { once } = require('../../ours/util')\nconst destroyImpl = require('./destroy')\nconst Duplex = require('./duplex')\nconst {\n aggregateTwoErrors,\n codes: {\n ERR_INVALID_ARG_TYPE,\n ERR_INVALID_RETURN_VALUE,\n ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED,\n ERR_STREAM_PREMATURE_CLOSE\n },\n AbortError\n} = require('../../ours/errors')\nconst { validateFunction, validateAbortSignal } = require('../validators')\nconst {\n isIterable,\n isReadable,\n isReadableNodeStream,\n isNodeStream,\n isTransformStream,\n isWebStream,\n isReadableStream,\n isReadableFinished\n} = require('./utils')\nconst AbortController = globalThis.AbortController || require('abort-controller').AbortController\nlet PassThrough\nlet Readable\nlet addAbortListener\nfunction destroyer(stream, reading, writing) {\n let finished = false\n stream.on('close', () => {\n finished = true\n })\n const cleanup = eos(\n stream,\n {\n readable: reading,\n writable: writing\n },\n (err) => {\n finished = !err\n }\n )\n return {\n destroy: (err) => {\n if (finished) return\n finished = true\n destroyImpl.destroyer(stream, err || new ERR_STREAM_DESTROYED('pipe'))\n },\n cleanup\n }\n}\nfunction popCallback(streams) {\n // Streams should never be an empty array. It should always contain at least\n // a single stream. Therefore optimize for the average case instead of\n // checking for length === 0 as well.\n validateFunction(streams[streams.length - 1], 'streams[stream.length - 1]')\n return streams.pop()\n}\nfunction makeAsyncIterable(val) {\n if (isIterable(val)) {\n return val\n } else if (isReadableNodeStream(val)) {\n // Legacy streams are not Iterable.\n return fromReadable(val)\n }\n throw new ERR_INVALID_ARG_TYPE('val', ['Readable', 'Iterable', 'AsyncIterable'], val)\n}\nasync function* fromReadable(val) {\n if (!Readable) {\n Readable = require('./readable')\n }\n yield* Readable.prototype[SymbolAsyncIterator].call(val)\n}\nasync function pumpToNode(iterable, writable, finish, { end }) {\n let error\n let onresolve = null\n const resume = (err) => {\n if (err) {\n error = err\n }\n if (onresolve) {\n const callback = onresolve\n onresolve = null\n callback()\n }\n }\n const wait = () =>\n new Promise((resolve, reject) => {\n if (error) {\n reject(error)\n } else {\n onresolve = () => {\n if (error) {\n reject(error)\n } else {\n resolve()\n }\n }\n }\n })\n writable.on('drain', resume)\n const cleanup = eos(\n writable,\n {\n readable: false\n },\n resume\n )\n try {\n if (writable.writableNeedDrain) {\n await wait()\n }\n for await (const chunk of iterable) {\n if (!writable.write(chunk)) {\n await wait()\n }\n }\n if (end) {\n writable.end()\n await wait()\n }\n finish()\n } catch (err) {\n finish(error !== err ? aggregateTwoErrors(error, err) : err)\n } finally {\n cleanup()\n writable.off('drain', resume)\n }\n}\nasync function pumpToWeb(readable, writable, finish, { end }) {\n if (isTransformStream(writable)) {\n writable = writable.writable\n }\n // https://streams.spec.whatwg.org/#example-manual-write-with-backpressure\n const writer = writable.getWriter()\n try {\n for await (const chunk of readable) {\n await writer.ready\n writer.write(chunk).catch(() => {})\n }\n await writer.ready\n if (end) {\n await writer.close()\n }\n finish()\n } catch (err) {\n try {\n await writer.abort(err)\n finish(err)\n } catch (err) {\n finish(err)\n }\n }\n}\nfunction pipeline(...streams) {\n return pipelineImpl(streams, once(popCallback(streams)))\n}\nfunction pipelineImpl(streams, callback, opts) {\n if (streams.length === 1 && ArrayIsArray(streams[0])) {\n streams = streams[0]\n }\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams')\n }\n const ac = new AbortController()\n const signal = ac.signal\n const outerSignal = opts === null || opts === undefined ? undefined : opts.signal\n\n // Need to cleanup event listeners if last stream is readable\n // https://github.com/nodejs/node/issues/35452\n const lastStreamCleanup = []\n validateAbortSignal(outerSignal, 'options.signal')\n function abort() {\n finishImpl(new AbortError())\n }\n addAbortListener = addAbortListener || require('../../ours/util').addAbortListener\n let disposable\n if (outerSignal) {\n disposable = addAbortListener(outerSignal, abort)\n }\n let error\n let value\n const destroys = []\n let finishCount = 0\n function finish(err) {\n finishImpl(err, --finishCount === 0)\n }\n function finishImpl(err, final) {\n var _disposable\n if (err && (!error || error.code === 'ERR_STREAM_PREMATURE_CLOSE')) {\n error = err\n }\n if (!error && !final) {\n return\n }\n while (destroys.length) {\n destroys.shift()(error)\n }\n ;(_disposable = disposable) === null || _disposable === undefined ? undefined : _disposable[SymbolDispose]()\n ac.abort()\n if (final) {\n if (!error) {\n lastStreamCleanup.forEach((fn) => fn())\n }\n process.nextTick(callback, error, value)\n }\n }\n let ret\n for (let i = 0; i < streams.length; i++) {\n const stream = streams[i]\n const reading = i < streams.length - 1\n const writing = i > 0\n const end = reading || (opts === null || opts === undefined ? undefined : opts.end) !== false\n const isLastStream = i === streams.length - 1\n if (isNodeStream(stream)) {\n if (end) {\n const { destroy, cleanup } = destroyer(stream, reading, writing)\n destroys.push(destroy)\n if (isReadable(stream) && isLastStream) {\n lastStreamCleanup.push(cleanup)\n }\n }\n\n // Catch stream errors that occur after pipe/pump has completed.\n function onError(err) {\n if (err && err.name !== 'AbortError' && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n finish(err)\n }\n }\n stream.on('error', onError)\n if (isReadable(stream) && isLastStream) {\n lastStreamCleanup.push(() => {\n stream.removeListener('error', onError)\n })\n }\n }\n if (i === 0) {\n if (typeof stream === 'function') {\n ret = stream({\n signal\n })\n if (!isIterable(ret)) {\n throw new ERR_INVALID_RETURN_VALUE('Iterable, AsyncIterable or Stream', 'source', ret)\n }\n } else if (isIterable(stream) || isReadableNodeStream(stream) || isTransformStream(stream)) {\n ret = stream\n } else {\n ret = Duplex.from(stream)\n }\n } else if (typeof stream === 'function') {\n if (isTransformStream(ret)) {\n var _ret\n ret = makeAsyncIterable((_ret = ret) === null || _ret === undefined ? undefined : _ret.readable)\n } else {\n ret = makeAsyncIterable(ret)\n }\n ret = stream(ret, {\n signal\n })\n if (reading) {\n if (!isIterable(ret, true)) {\n throw new ERR_INVALID_RETURN_VALUE('AsyncIterable', `transform[${i - 1}]`, ret)\n }\n } else {\n var _ret2\n if (!PassThrough) {\n PassThrough = require('./passthrough')\n }\n\n // If the last argument to pipeline is not a stream\n // we must create a proxy stream so that pipeline(...)\n // always returns a stream which can be further\n // composed through `.pipe(stream)`.\n\n const pt = new PassThrough({\n objectMode: true\n })\n\n // Handle Promises/A+ spec, `then` could be a getter that throws on\n // second use.\n const then = (_ret2 = ret) === null || _ret2 === undefined ? undefined : _ret2.then\n if (typeof then === 'function') {\n finishCount++\n then.call(\n ret,\n (val) => {\n value = val\n if (val != null) {\n pt.write(val)\n }\n if (end) {\n pt.end()\n }\n process.nextTick(finish)\n },\n (err) => {\n pt.destroy(err)\n process.nextTick(finish, err)\n }\n )\n } else if (isIterable(ret, true)) {\n finishCount++\n pumpToNode(ret, pt, finish, {\n end\n })\n } else if (isReadableStream(ret) || isTransformStream(ret)) {\n const toRead = ret.readable || ret\n finishCount++\n pumpToNode(toRead, pt, finish, {\n end\n })\n } else {\n throw new ERR_INVALID_RETURN_VALUE('AsyncIterable or Promise', 'destination', ret)\n }\n ret = pt\n const { destroy, cleanup } = destroyer(ret, false, true)\n destroys.push(destroy)\n if (isLastStream) {\n lastStreamCleanup.push(cleanup)\n }\n }\n } else if (isNodeStream(stream)) {\n if (isReadableNodeStream(ret)) {\n finishCount += 2\n const cleanup = pipe(ret, stream, finish, {\n end\n })\n if (isReadable(stream) && isLastStream) {\n lastStreamCleanup.push(cleanup)\n }\n } else if (isTransformStream(ret) || isReadableStream(ret)) {\n const toRead = ret.readable || ret\n finishCount++\n pumpToNode(toRead, stream, finish, {\n end\n })\n } else if (isIterable(ret)) {\n finishCount++\n pumpToNode(ret, stream, finish, {\n end\n })\n } else {\n throw new ERR_INVALID_ARG_TYPE(\n 'val',\n ['Readable', 'Iterable', 'AsyncIterable', 'ReadableStream', 'TransformStream'],\n ret\n )\n }\n ret = stream\n } else if (isWebStream(stream)) {\n if (isReadableNodeStream(ret)) {\n finishCount++\n pumpToWeb(makeAsyncIterable(ret), stream, finish, {\n end\n })\n } else if (isReadableStream(ret) || isIterable(ret)) {\n finishCount++\n pumpToWeb(ret, stream, finish, {\n end\n })\n } else if (isTransformStream(ret)) {\n finishCount++\n pumpToWeb(ret.readable, stream, finish, {\n end\n })\n } else {\n throw new ERR_INVALID_ARG_TYPE(\n 'val',\n ['Readable', 'Iterable', 'AsyncIterable', 'ReadableStream', 'TransformStream'],\n ret\n )\n }\n ret = stream\n } else {\n ret = Duplex.from(stream)\n }\n }\n if (\n (signal !== null && signal !== undefined && signal.aborted) ||\n (outerSignal !== null && outerSignal !== undefined && outerSignal.aborted)\n ) {\n process.nextTick(abort)\n }\n return ret\n}\nfunction pipe(src, dst, finish, { end }) {\n let ended = false\n dst.on('close', () => {\n if (!ended) {\n // Finish if the destination closes before the source has completed.\n finish(new ERR_STREAM_PREMATURE_CLOSE())\n }\n })\n src.pipe(dst, {\n end: false\n }) // If end is true we already will have a listener to end dst.\n\n if (end) {\n // Compat. Before node v10.12.0 stdio used to throw an error so\n // pipe() did/does not end() stdio destinations.\n // Now they allow it but \"secretly\" don't close the underlying fd.\n\n function endFn() {\n ended = true\n dst.end()\n }\n if (isReadableFinished(src)) {\n // End the destination if the source has already ended.\n process.nextTick(endFn)\n } else {\n src.once('end', endFn)\n }\n } else {\n finish()\n }\n eos(\n src,\n {\n readable: true,\n writable: false\n },\n (err) => {\n const rState = src._readableState\n if (\n err &&\n err.code === 'ERR_STREAM_PREMATURE_CLOSE' &&\n rState &&\n rState.ended &&\n !rState.errored &&\n !rState.errorEmitted\n ) {\n // Some readable streams will emit 'close' before 'end'. However, since\n // this is on the readable side 'end' should still be emitted if the\n // stream has been ended and no error emitted. This should be allowed in\n // favor of backwards compatibility. Since the stream is piped to a\n // destination this should not result in any observable difference.\n // We don't need to check if this is a writable premature close since\n // eos will only fail with premature close on the reading side for\n // duplex streams.\n src.once('end', finish).once('error', finish)\n } else {\n finish(err)\n }\n }\n )\n return eos(\n dst,\n {\n readable: false,\n writable: true\n },\n finish\n )\n}\nmodule.exports = {\n pipelineImpl,\n pipeline\n}\n","'use strict'\n\nconst { pipeline } = require('./pipeline')\nconst Duplex = require('./duplex')\nconst { destroyer } = require('./destroy')\nconst {\n isNodeStream,\n isReadable,\n isWritable,\n isWebStream,\n isTransformStream,\n isWritableStream,\n isReadableStream\n} = require('./utils')\nconst {\n AbortError,\n codes: { ERR_INVALID_ARG_VALUE, ERR_MISSING_ARGS }\n} = require('../../ours/errors')\nconst eos = require('./end-of-stream')\nmodule.exports = function compose(...streams) {\n if (streams.length === 0) {\n throw new ERR_MISSING_ARGS('streams')\n }\n if (streams.length === 1) {\n return Duplex.from(streams[0])\n }\n const orgStreams = [...streams]\n if (typeof streams[0] === 'function') {\n streams[0] = Duplex.from(streams[0])\n }\n if (typeof streams[streams.length - 1] === 'function') {\n const idx = streams.length - 1\n streams[idx] = Duplex.from(streams[idx])\n }\n for (let n = 0; n < streams.length; ++n) {\n if (!isNodeStream(streams[n]) && !isWebStream(streams[n])) {\n // TODO(ronag): Add checks for non streams.\n continue\n }\n if (\n n < streams.length - 1 &&\n !(isReadable(streams[n]) || isReadableStream(streams[n]) || isTransformStream(streams[n]))\n ) {\n throw new ERR_INVALID_ARG_VALUE(`streams[${n}]`, orgStreams[n], 'must be readable')\n }\n if (n > 0 && !(isWritable(streams[n]) || isWritableStream(streams[n]) || isTransformStream(streams[n]))) {\n throw new ERR_INVALID_ARG_VALUE(`streams[${n}]`, orgStreams[n], 'must be writable')\n }\n }\n let ondrain\n let onfinish\n let onreadable\n let onclose\n let d\n function onfinished(err) {\n const cb = onclose\n onclose = null\n if (cb) {\n cb(err)\n } else if (err) {\n d.destroy(err)\n } else if (!readable && !writable) {\n d.destroy()\n }\n }\n const head = streams[0]\n const tail = pipeline(streams, onfinished)\n const writable = !!(isWritable(head) || isWritableStream(head) || isTransformStream(head))\n const readable = !!(isReadable(tail) || isReadableStream(tail) || isTransformStream(tail))\n\n // TODO(ronag): Avoid double buffering.\n // Implement Writable/Readable/Duplex traits.\n // See, https://github.com/nodejs/node/pull/33515.\n d = new Duplex({\n // TODO (ronag): highWaterMark?\n writableObjectMode: !!(head !== null && head !== undefined && head.writableObjectMode),\n readableObjectMode: !!(tail !== null && tail !== undefined && tail.readableObjectMode),\n writable,\n readable\n })\n if (writable) {\n if (isNodeStream(head)) {\n d._write = function (chunk, encoding, callback) {\n if (head.write(chunk, encoding)) {\n callback()\n } else {\n ondrain = callback\n }\n }\n d._final = function (callback) {\n head.end()\n onfinish = callback\n }\n head.on('drain', function () {\n if (ondrain) {\n const cb = ondrain\n ondrain = null\n cb()\n }\n })\n } else if (isWebStream(head)) {\n const writable = isTransformStream(head) ? head.writable : head\n const writer = writable.getWriter()\n d._write = async function (chunk, encoding, callback) {\n try {\n await writer.ready\n writer.write(chunk).catch(() => {})\n callback()\n } catch (err) {\n callback(err)\n }\n }\n d._final = async function (callback) {\n try {\n await writer.ready\n writer.close().catch(() => {})\n onfinish = callback\n } catch (err) {\n callback(err)\n }\n }\n }\n const toRead = isTransformStream(tail) ? tail.readable : tail\n eos(toRead, () => {\n if (onfinish) {\n const cb = onfinish\n onfinish = null\n cb()\n }\n })\n }\n if (readable) {\n if (isNodeStream(tail)) {\n tail.on('readable', function () {\n if (onreadable) {\n const cb = onreadable\n onreadable = null\n cb()\n }\n })\n tail.on('end', function () {\n d.push(null)\n })\n d._read = function () {\n while (true) {\n const buf = tail.read()\n if (buf === null) {\n onreadable = d._read\n return\n }\n if (!d.push(buf)) {\n return\n }\n }\n }\n } else if (isWebStream(tail)) {\n const readable = isTransformStream(tail) ? tail.readable : tail\n const reader = readable.getReader()\n d._read = async function () {\n while (true) {\n try {\n const { value, done } = await reader.read()\n if (!d.push(value)) {\n return\n }\n if (done) {\n d.push(null)\n return\n }\n } catch {\n return\n }\n }\n }\n }\n }\n d._destroy = function (err, callback) {\n if (!err && onclose !== null) {\n err = new AbortError()\n }\n onreadable = null\n ondrain = null\n onfinish = null\n if (onclose === null) {\n callback(err)\n } else {\n onclose = callback\n if (isNodeStream(tail)) {\n destroyer(tail, err)\n }\n }\n }\n return d\n}\n","'use strict'\n\nconst AbortController = globalThis.AbortController || require('abort-controller').AbortController\nconst {\n codes: { ERR_INVALID_ARG_VALUE, ERR_INVALID_ARG_TYPE, ERR_MISSING_ARGS, ERR_OUT_OF_RANGE },\n AbortError\n} = require('../../ours/errors')\nconst { validateAbortSignal, validateInteger, validateObject } = require('../validators')\nconst kWeakHandler = require('../../ours/primordials').Symbol('kWeak')\nconst kResistStopPropagation = require('../../ours/primordials').Symbol('kResistStopPropagation')\nconst { finished } = require('./end-of-stream')\nconst staticCompose = require('./compose')\nconst { addAbortSignalNoValidate } = require('./add-abort-signal')\nconst { isWritable, isNodeStream } = require('./utils')\nconst { deprecate } = require('../../ours/util')\nconst {\n ArrayPrototypePush,\n Boolean,\n MathFloor,\n Number,\n NumberIsNaN,\n Promise,\n PromiseReject,\n PromiseResolve,\n PromisePrototypeThen,\n Symbol\n} = require('../../ours/primordials')\nconst kEmpty = Symbol('kEmpty')\nconst kEof = Symbol('kEof')\nfunction compose(stream, options) {\n if (options != null) {\n validateObject(options, 'options')\n }\n if ((options === null || options === undefined ? undefined : options.signal) != null) {\n validateAbortSignal(options.signal, 'options.signal')\n }\n if (isNodeStream(stream) && !isWritable(stream)) {\n throw new ERR_INVALID_ARG_VALUE('stream', stream, 'must be writable')\n }\n const composedStream = staticCompose(this, stream)\n if (options !== null && options !== undefined && options.signal) {\n // Not validating as we already validated before\n addAbortSignalNoValidate(options.signal, composedStream)\n }\n return composedStream\n}\nfunction map(fn, options) {\n if (typeof fn !== 'function') {\n throw new ERR_INVALID_ARG_TYPE('fn', ['Function', 'AsyncFunction'], fn)\n }\n if (options != null) {\n validateObject(options, 'options')\n }\n if ((options === null || options === undefined ? undefined : options.signal) != null) {\n validateAbortSignal(options.signal, 'options.signal')\n }\n let concurrency = 1\n if ((options === null || options === undefined ? undefined : options.concurrency) != null) {\n concurrency = MathFloor(options.concurrency)\n }\n let highWaterMark = concurrency - 1\n if ((options === null || options === undefined ? undefined : options.highWaterMark) != null) {\n highWaterMark = MathFloor(options.highWaterMark)\n }\n validateInteger(concurrency, 'options.concurrency', 1)\n validateInteger(highWaterMark, 'options.highWaterMark', 0)\n highWaterMark += concurrency\n return async function* map() {\n const signal = require('../../ours/util').AbortSignalAny(\n [options === null || options === undefined ? undefined : options.signal].filter(Boolean)\n )\n const stream = this\n const queue = []\n const signalOpt = {\n signal\n }\n let next\n let resume\n let done = false\n let cnt = 0\n function onCatch() {\n done = true\n afterItemProcessed()\n }\n function afterItemProcessed() {\n cnt -= 1\n maybeResume()\n }\n function maybeResume() {\n if (resume && !done && cnt < concurrency && queue.length < highWaterMark) {\n resume()\n resume = null\n }\n }\n async function pump() {\n try {\n for await (let val of stream) {\n if (done) {\n return\n }\n if (signal.aborted) {\n throw new AbortError()\n }\n try {\n val = fn(val, signalOpt)\n if (val === kEmpty) {\n continue\n }\n val = PromiseResolve(val)\n } catch (err) {\n val = PromiseReject(err)\n }\n cnt += 1\n PromisePrototypeThen(val, afterItemProcessed, onCatch)\n queue.push(val)\n if (next) {\n next()\n next = null\n }\n if (!done && (queue.length >= highWaterMark || cnt >= concurrency)) {\n await new Promise((resolve) => {\n resume = resolve\n })\n }\n }\n queue.push(kEof)\n } catch (err) {\n const val = PromiseReject(err)\n PromisePrototypeThen(val, afterItemProcessed, onCatch)\n queue.push(val)\n } finally {\n done = true\n if (next) {\n next()\n next = null\n }\n }\n }\n pump()\n try {\n while (true) {\n while (queue.length > 0) {\n const val = await queue[0]\n if (val === kEof) {\n return\n }\n if (signal.aborted) {\n throw new AbortError()\n }\n if (val !== kEmpty) {\n yield val\n }\n queue.shift()\n maybeResume()\n }\n await new Promise((resolve) => {\n next = resolve\n })\n }\n } finally {\n done = true\n if (resume) {\n resume()\n resume = null\n }\n }\n }.call(this)\n}\nfunction asIndexedPairs(options = undefined) {\n if (options != null) {\n validateObject(options, 'options')\n }\n if ((options === null || options === undefined ? undefined : options.signal) != null) {\n validateAbortSignal(options.signal, 'options.signal')\n }\n return async function* asIndexedPairs() {\n let index = 0\n for await (const val of this) {\n var _options$signal\n if (\n options !== null &&\n options !== undefined &&\n (_options$signal = options.signal) !== null &&\n _options$signal !== undefined &&\n _options$signal.aborted\n ) {\n throw new AbortError({\n cause: options.signal.reason\n })\n }\n yield [index++, val]\n }\n }.call(this)\n}\nasync function some(fn, options = undefined) {\n for await (const unused of filter.call(this, fn, options)) {\n return true\n }\n return false\n}\nasync function every(fn, options = undefined) {\n if (typeof fn !== 'function') {\n throw new ERR_INVALID_ARG_TYPE('fn', ['Function', 'AsyncFunction'], fn)\n }\n // https://en.wikipedia.org/wiki/De_Morgan%27s_laws\n return !(await some.call(\n this,\n async (...args) => {\n return !(await fn(...args))\n },\n options\n ))\n}\nasync function find(fn, options) {\n for await (const result of filter.call(this, fn, options)) {\n return result\n }\n return undefined\n}\nasync function forEach(fn, options) {\n if (typeof fn !== 'function') {\n throw new ERR_INVALID_ARG_TYPE('fn', ['Function', 'AsyncFunction'], fn)\n }\n async function forEachFn(value, options) {\n await fn(value, options)\n return kEmpty\n }\n // eslint-disable-next-line no-unused-vars\n for await (const unused of map.call(this, forEachFn, options));\n}\nfunction filter(fn, options) {\n if (typeof fn !== 'function') {\n throw new ERR_INVALID_ARG_TYPE('fn', ['Function', 'AsyncFunction'], fn)\n }\n async function filterFn(value, options) {\n if (await fn(value, options)) {\n return value\n }\n return kEmpty\n }\n return map.call(this, filterFn, options)\n}\n\n// Specific to provide better error to reduce since the argument is only\n// missing if the stream has no items in it - but the code is still appropriate\nclass ReduceAwareErrMissingArgs extends ERR_MISSING_ARGS {\n constructor() {\n super('reduce')\n this.message = 'Reduce of an empty stream requires an initial value'\n }\n}\nasync function reduce(reducer, initialValue, options) {\n var _options$signal2\n if (typeof reducer !== 'function') {\n throw new ERR_INVALID_ARG_TYPE('reducer', ['Function', 'AsyncFunction'], reducer)\n }\n if (options != null) {\n validateObject(options, 'options')\n }\n if ((options === null || options === undefined ? undefined : options.signal) != null) {\n validateAbortSignal(options.signal, 'options.signal')\n }\n let hasInitialValue = arguments.length > 1\n if (\n options !== null &&\n options !== undefined &&\n (_options$signal2 = options.signal) !== null &&\n _options$signal2 !== undefined &&\n _options$signal2.aborted\n ) {\n const err = new AbortError(undefined, {\n cause: options.signal.reason\n })\n this.once('error', () => {}) // The error is already propagated\n await finished(this.destroy(err))\n throw err\n }\n const ac = new AbortController()\n const signal = ac.signal\n if (options !== null && options !== undefined && options.signal) {\n const opts = {\n once: true,\n [kWeakHandler]: this,\n [kResistStopPropagation]: true\n }\n options.signal.addEventListener('abort', () => ac.abort(), opts)\n }\n let gotAnyItemFromStream = false\n try {\n for await (const value of this) {\n var _options$signal3\n gotAnyItemFromStream = true\n if (\n options !== null &&\n options !== undefined &&\n (_options$signal3 = options.signal) !== null &&\n _options$signal3 !== undefined &&\n _options$signal3.aborted\n ) {\n throw new AbortError()\n }\n if (!hasInitialValue) {\n initialValue = value\n hasInitialValue = true\n } else {\n initialValue = await reducer(initialValue, value, {\n signal\n })\n }\n }\n if (!gotAnyItemFromStream && !hasInitialValue) {\n throw new ReduceAwareErrMissingArgs()\n }\n } finally {\n ac.abort()\n }\n return initialValue\n}\nasync function toArray(options) {\n if (options != null) {\n validateObject(options, 'options')\n }\n if ((options === null || options === undefined ? undefined : options.signal) != null) {\n validateAbortSignal(options.signal, 'options.signal')\n }\n const result = []\n for await (const val of this) {\n var _options$signal4\n if (\n options !== null &&\n options !== undefined &&\n (_options$signal4 = options.signal) !== null &&\n _options$signal4 !== undefined &&\n _options$signal4.aborted\n ) {\n throw new AbortError(undefined, {\n cause: options.signal.reason\n })\n }\n ArrayPrototypePush(result, val)\n }\n return result\n}\nfunction flatMap(fn, options) {\n const values = map.call(this, fn, options)\n return async function* flatMap() {\n for await (const val of values) {\n yield* val\n }\n }.call(this)\n}\nfunction toIntegerOrInfinity(number) {\n // We coerce here to align with the spec\n // https://github.com/tc39/proposal-iterator-helpers/issues/169\n number = Number(number)\n if (NumberIsNaN(number)) {\n return 0\n }\n if (number < 0) {\n throw new ERR_OUT_OF_RANGE('number', '>= 0', number)\n }\n return number\n}\nfunction drop(number, options = undefined) {\n if (options != null) {\n validateObject(options, 'options')\n }\n if ((options === null || options === undefined ? undefined : options.signal) != null) {\n validateAbortSignal(options.signal, 'options.signal')\n }\n number = toIntegerOrInfinity(number)\n return async function* drop() {\n var _options$signal5\n if (\n options !== null &&\n options !== undefined &&\n (_options$signal5 = options.signal) !== null &&\n _options$signal5 !== undefined &&\n _options$signal5.aborted\n ) {\n throw new AbortError()\n }\n for await (const val of this) {\n var _options$signal6\n if (\n options !== null &&\n options !== undefined &&\n (_options$signal6 = options.signal) !== null &&\n _options$signal6 !== undefined &&\n _options$signal6.aborted\n ) {\n throw new AbortError()\n }\n if (number-- <= 0) {\n yield val\n }\n }\n }.call(this)\n}\nfunction take(number, options = undefined) {\n if (options != null) {\n validateObject(options, 'options')\n }\n if ((options === null || options === undefined ? undefined : options.signal) != null) {\n validateAbortSignal(options.signal, 'options.signal')\n }\n number = toIntegerOrInfinity(number)\n return async function* take() {\n var _options$signal7\n if (\n options !== null &&\n options !== undefined &&\n (_options$signal7 = options.signal) !== null &&\n _options$signal7 !== undefined &&\n _options$signal7.aborted\n ) {\n throw new AbortError()\n }\n for await (const val of this) {\n var _options$signal8\n if (\n options !== null &&\n options !== undefined &&\n (_options$signal8 = options.signal) !== null &&\n _options$signal8 !== undefined &&\n _options$signal8.aborted\n ) {\n throw new AbortError()\n }\n if (number-- > 0) {\n yield val\n }\n\n // Don't get another item from iterator in case we reached the end\n if (number <= 0) {\n return\n }\n }\n }.call(this)\n}\nmodule.exports.streamReturningOperators = {\n asIndexedPairs: deprecate(asIndexedPairs, 'readable.asIndexedPairs will be removed in a future version.'),\n drop,\n filter,\n flatMap,\n map,\n take,\n compose\n}\nmodule.exports.promiseReturningOperators = {\n every,\n forEach,\n reduce,\n toArray,\n some,\n find\n}\n","'use strict'\n\nconst { ArrayPrototypePop, Promise } = require('../ours/primordials')\nconst { isIterable, isNodeStream, isWebStream } = require('../internal/streams/utils')\nconst { pipelineImpl: pl } = require('../internal/streams/pipeline')\nconst { finished } = require('../internal/streams/end-of-stream')\nrequire('../../lib/stream.js')\nfunction pipeline(...streams) {\n return new Promise((resolve, reject) => {\n let signal\n let end\n const lastArg = streams[streams.length - 1]\n if (\n lastArg &&\n typeof lastArg === 'object' &&\n !isNodeStream(lastArg) &&\n !isIterable(lastArg) &&\n !isWebStream(lastArg)\n ) {\n const options = ArrayPrototypePop(streams)\n signal = options.signal\n end = options.end\n }\n pl(\n streams,\n (err, value) => {\n if (err) {\n reject(err)\n } else {\n resolve(value)\n }\n },\n {\n signal,\n end\n }\n )\n })\n}\nmodule.exports = {\n finished,\n pipeline\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict'\n\n/* replacement start */\n\nconst { Buffer } = require('buffer')\n\n/* replacement end */\n\nconst { ObjectDefineProperty, ObjectKeys, ReflectApply } = require('./ours/primordials')\nconst {\n promisify: { custom: customPromisify }\n} = require('./ours/util')\nconst { streamReturningOperators, promiseReturningOperators } = require('./internal/streams/operators')\nconst {\n codes: { ERR_ILLEGAL_CONSTRUCTOR }\n} = require('./ours/errors')\nconst compose = require('./internal/streams/compose')\nconst { setDefaultHighWaterMark, getDefaultHighWaterMark } = require('./internal/streams/state')\nconst { pipeline } = require('./internal/streams/pipeline')\nconst { destroyer } = require('./internal/streams/destroy')\nconst eos = require('./internal/streams/end-of-stream')\nconst internalBuffer = {}\nconst promises = require('./stream/promises')\nconst utils = require('./internal/streams/utils')\nconst Stream = (module.exports = require('./internal/streams/legacy').Stream)\nStream.isDestroyed = utils.isDestroyed\nStream.isDisturbed = utils.isDisturbed\nStream.isErrored = utils.isErrored\nStream.isReadable = utils.isReadable\nStream.isWritable = utils.isWritable\nStream.Readable = require('./internal/streams/readable')\nfor (const key of ObjectKeys(streamReturningOperators)) {\n const op = streamReturningOperators[key]\n function fn(...args) {\n if (new.target) {\n throw ERR_ILLEGAL_CONSTRUCTOR()\n }\n return Stream.Readable.from(ReflectApply(op, this, args))\n }\n ObjectDefineProperty(fn, 'name', {\n __proto__: null,\n value: op.name\n })\n ObjectDefineProperty(fn, 'length', {\n __proto__: null,\n value: op.length\n })\n ObjectDefineProperty(Stream.Readable.prototype, key, {\n __proto__: null,\n value: fn,\n enumerable: false,\n configurable: true,\n writable: true\n })\n}\nfor (const key of ObjectKeys(promiseReturningOperators)) {\n const op = promiseReturningOperators[key]\n function fn(...args) {\n if (new.target) {\n throw ERR_ILLEGAL_CONSTRUCTOR()\n }\n return ReflectApply(op, this, args)\n }\n ObjectDefineProperty(fn, 'name', {\n __proto__: null,\n value: op.name\n })\n ObjectDefineProperty(fn, 'length', {\n __proto__: null,\n value: op.length\n })\n ObjectDefineProperty(Stream.Readable.prototype, key, {\n __proto__: null,\n value: fn,\n enumerable: false,\n configurable: true,\n writable: true\n })\n}\nStream.Writable = require('./internal/streams/writable')\nStream.Duplex = require('./internal/streams/duplex')\nStream.Transform = require('./internal/streams/transform')\nStream.PassThrough = require('./internal/streams/passthrough')\nStream.pipeline = pipeline\nconst { addAbortSignal } = require('./internal/streams/add-abort-signal')\nStream.addAbortSignal = addAbortSignal\nStream.finished = eos\nStream.destroy = destroyer\nStream.compose = compose\nStream.setDefaultHighWaterMark = setDefaultHighWaterMark\nStream.getDefaultHighWaterMark = getDefaultHighWaterMark\nObjectDefineProperty(Stream, 'promises', {\n __proto__: null,\n configurable: true,\n enumerable: true,\n get() {\n return promises\n }\n})\nObjectDefineProperty(pipeline, customPromisify, {\n __proto__: null,\n enumerable: true,\n get() {\n return promises.pipeline\n }\n})\nObjectDefineProperty(eos, customPromisify, {\n __proto__: null,\n enumerable: true,\n get() {\n return promises.finished\n }\n})\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream\nStream._isUint8Array = function isUint8Array(value) {\n return value instanceof Uint8Array\n}\nStream._uint8ArrayToBuffer = function _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk.buffer, chunk.byteOffset, chunk.byteLength)\n}\n","'use strict'\n\nconst Stream = require('stream')\nif (Stream && process.env.READABLE_STREAM === 'disable') {\n const promises = Stream.promises\n\n // Explicit export naming is needed for ESM\n module.exports._uint8ArrayToBuffer = Stream._uint8ArrayToBuffer\n module.exports._isUint8Array = Stream._isUint8Array\n module.exports.isDisturbed = Stream.isDisturbed\n module.exports.isErrored = Stream.isErrored\n module.exports.isReadable = Stream.isReadable\n module.exports.Readable = Stream.Readable\n module.exports.Writable = Stream.Writable\n module.exports.Duplex = Stream.Duplex\n module.exports.Transform = Stream.Transform\n module.exports.PassThrough = Stream.PassThrough\n module.exports.addAbortSignal = Stream.addAbortSignal\n module.exports.finished = Stream.finished\n module.exports.destroy = Stream.destroy\n module.exports.pipeline = Stream.pipeline\n module.exports.compose = Stream.compose\n Object.defineProperty(Stream, 'promises', {\n configurable: true,\n enumerable: true,\n get() {\n return promises\n }\n })\n module.exports.Stream = Stream.Stream\n} else {\n const CustomStream = require('../stream')\n const promises = require('../stream/promises')\n const originalDestroy = CustomStream.Readable.destroy\n module.exports = CustomStream.Readable\n\n // Explicit export naming is needed for ESM\n module.exports._uint8ArrayToBuffer = CustomStream._uint8ArrayToBuffer\n module.exports._isUint8Array = CustomStream._isUint8Array\n module.exports.isDisturbed = CustomStream.isDisturbed\n module.exports.isErrored = CustomStream.isErrored\n module.exports.isReadable = CustomStream.isReadable\n module.exports.Readable = CustomStream.Readable\n module.exports.Writable = CustomStream.Writable\n module.exports.Duplex = CustomStream.Duplex\n module.exports.Transform = CustomStream.Transform\n module.exports.PassThrough = CustomStream.PassThrough\n module.exports.addAbortSignal = CustomStream.addAbortSignal\n module.exports.finished = CustomStream.finished\n module.exports.destroy = CustomStream.destroy\n module.exports.destroy = originalDestroy\n module.exports.pipeline = CustomStream.pipeline\n module.exports.compose = CustomStream.compose\n Object.defineProperty(CustomStream, 'promises', {\n configurable: true,\n enumerable: true,\n get() {\n return promises\n }\n })\n module.exports.Stream = CustomStream.Stream\n}\n\n// Allow default importing\nmodule.exports.default = module.exports\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","var Symbol = require('./_Symbol'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n","var arrayPush = require('./_arrayPush'),\n isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n","var baseFlatten = require('./_baseFlatten');\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n}\n\nmodule.exports = flatten;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n arrayMap = require('./_arrayMap'),\n baseUnary = require('./_baseUnary'),\n cacheHas = require('./_cacheHas');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\nfunction baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseDifference;\n","var isArrayLike = require('./isArrayLike'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;\n","var baseDifference = require('./_baseDifference'),\n baseFlatten = require('./_baseFlatten'),\n baseRest = require('./_baseRest'),\n isArrayLikeObject = require('./isArrayLikeObject');\n\n/**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\nvar difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n});\n\nmodule.exports = difference;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","var Set = require('./_Set'),\n noop = require('./noop'),\n setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nmodule.exports = createSet;\n","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n cacheHas = require('./_cacheHas'),\n createSet = require('./_createSet'),\n setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseUniq;\n","var baseFlatten = require('./_baseFlatten'),\n baseRest = require('./_baseRest'),\n baseUniq = require('./_baseUniq'),\n isArrayLikeObject = require('./isArrayLikeObject');\n\n/**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\nvar union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n});\n\nmodule.exports = union;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n","var baseGetTag = require('./_baseGetTag'),\n getPrototype = require('./_getPrototype'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.assertValidPattern = void 0;\nconst MAX_PATTERN_LENGTH = 1024 * 64;\nconst assertValidPattern = (pattern) => {\n if (typeof pattern !== 'string') {\n throw new TypeError('invalid pattern');\n }\n if (pattern.length > MAX_PATTERN_LENGTH) {\n throw new TypeError('pattern is too long');\n }\n};\nexports.assertValidPattern = assertValidPattern;\n//# sourceMappingURL=assert-valid-pattern.js.map","\"use strict\";\n// translate the various posix character classes into unicode properties\n// this works across all unicode locales\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parseClass = void 0;\n// { <posix class>: [<translation>, /u flag required, negated]\nconst posixClasses = {\n '[:alnum:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}', true],\n '[:alpha:]': ['\\\\p{L}\\\\p{Nl}', true],\n '[:ascii:]': ['\\\\x' + '00-\\\\x' + '7f', false],\n '[:blank:]': ['\\\\p{Zs}\\\\t', true],\n '[:cntrl:]': ['\\\\p{Cc}', true],\n '[:digit:]': ['\\\\p{Nd}', true],\n '[:graph:]': ['\\\\p{Z}\\\\p{C}', true, true],\n '[:lower:]': ['\\\\p{Ll}', true],\n '[:print:]': ['\\\\p{C}', true],\n '[:punct:]': ['\\\\p{P}', true],\n '[:space:]': ['\\\\p{Z}\\\\t\\\\r\\\\n\\\\v\\\\f', true],\n '[:upper:]': ['\\\\p{Lu}', true],\n '[:word:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}\\\\p{Pc}', true],\n '[:xdigit:]': ['A-Fa-f0-9', false],\n};\n// only need to escape a few things inside of brace expressions\n// escapes: [ \\ ] -\nconst braceEscape = (s) => s.replace(/[[\\]\\\\-]/g, '\\\\$&');\n// escape all regexp magic characters\nconst regexpEscape = (s) => s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n// everything has already been escaped, we just have to join\nconst rangesToString = (ranges) => ranges.join('');\n// takes a glob string at a posix brace expression, and returns\n// an equivalent regular expression source, and boolean indicating\n// whether the /u flag needs to be applied, and the number of chars\n// consumed to parse the character class.\n// This also removes out of order ranges, and returns ($.) if the\n// entire class just no good.\nconst parseClass = (glob, position) => {\n const pos = position;\n /* c8 ignore start */\n if (glob.charAt(pos) !== '[') {\n throw new Error('not in a brace expression');\n }\n /* c8 ignore stop */\n const ranges = [];\n const negs = [];\n let i = pos + 1;\n let sawStart = false;\n let uflag = false;\n let escaping = false;\n let negate = false;\n let endPos = pos;\n let rangeStart = '';\n WHILE: while (i < glob.length) {\n const c = glob.charAt(i);\n if ((c === '!' || c === '^') && i === pos + 1) {\n negate = true;\n i++;\n continue;\n }\n if (c === ']' && sawStart && !escaping) {\n endPos = i + 1;\n break;\n }\n sawStart = true;\n if (c === '\\\\') {\n if (!escaping) {\n escaping = true;\n i++;\n continue;\n }\n // escaped \\ char, fall through and treat like normal char\n }\n if (c === '[' && !escaping) {\n // either a posix class, a collation equivalent, or just a [\n for (const [cls, [unip, u, neg]] of Object.entries(posixClasses)) {\n if (glob.startsWith(cls, i)) {\n // invalid, [a-[] is fine, but not [a-[:alpha]]\n if (rangeStart) {\n return ['$.', false, glob.length - pos, true];\n }\n i += cls.length;\n if (neg)\n negs.push(unip);\n else\n ranges.push(unip);\n uflag = uflag || u;\n continue WHILE;\n }\n }\n }\n // now it's just a normal character, effectively\n escaping = false;\n if (rangeStart) {\n // throw this range away if it's not valid, but others\n // can still match.\n if (c > rangeStart) {\n ranges.push(braceEscape(rangeStart) + '-' + braceEscape(c));\n }\n else if (c === rangeStart) {\n ranges.push(braceEscape(c));\n }\n rangeStart = '';\n i++;\n continue;\n }\n // now might be the start of a range.\n // can be either c-d or c-] or c<more...>] or c] at this point\n if (glob.startsWith('-]', i + 1)) {\n ranges.push(braceEscape(c + '-'));\n i += 2;\n continue;\n }\n if (glob.startsWith('-', i + 1)) {\n rangeStart = c;\n i += 2;\n continue;\n }\n // not the start of a range, just a single character\n ranges.push(braceEscape(c));\n i++;\n }\n if (endPos < i) {\n // didn't see the end of the class, not a valid class,\n // but might still be valid as a literal match.\n return ['', false, 0, false];\n }\n // if we got no ranges and no negates, then we have a range that\n // cannot possibly match anything, and that poisons the whole glob\n if (!ranges.length && !negs.length) {\n return ['$.', false, glob.length - pos, true];\n }\n // if we got one positive range, and it's a single character, then that's\n // not actually a magic pattern, it's just that one literal character.\n // we should not treat that as \"magic\", we should just return the literal\n // character. [_] is a perfectly valid way to escape glob magic chars.\n if (negs.length === 0 &&\n ranges.length === 1 &&\n /^\\\\?.$/.test(ranges[0]) &&\n !negate) {\n const r = ranges[0].length === 2 ? ranges[0].slice(-1) : ranges[0];\n return [regexpEscape(r), false, endPos - pos, false];\n }\n const sranges = '[' + (negate ? '^' : '') + rangesToString(ranges) + ']';\n const snegs = '[' + (negate ? '' : '^') + rangesToString(negs) + ']';\n const comb = ranges.length && negs.length\n ? '(' + sranges + '|' + snegs + ')'\n : ranges.length\n ? sranges\n : snegs;\n return [comb, uflag, endPos - pos, true];\n};\nexports.parseClass = parseClass;\n//# sourceMappingURL=brace-expressions.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.unescape = void 0;\n/**\n * Un-escape a string that has been escaped with {@link escape}.\n *\n * If the {@link windowsPathsNoEscape} option is used, then square-brace\n * escapes are removed, but not backslash escapes. For example, it will turn\n * the string `'[*]'` into `*`, but it will not turn `'\\\\*'` into `'*'`,\n * becuase `\\` is a path separator in `windowsPathsNoEscape` mode.\n *\n * When `windowsPathsNoEscape` is not set, then both brace escapes and\n * backslash escapes are removed.\n *\n * Slashes (and backslashes in `windowsPathsNoEscape` mode) cannot be escaped\n * or unescaped.\n */\nconst unescape = (s, { windowsPathsNoEscape = false, } = {}) => {\n return windowsPathsNoEscape\n ? s.replace(/\\[([^\\/\\\\])\\]/g, '$1')\n : s.replace(/((?!\\\\).|^)\\[([^\\/\\\\])\\]/g, '$1$2').replace(/\\\\([^\\/])/g, '$1');\n};\nexports.unescape = unescape;\n//# sourceMappingURL=unescape.js.map","\"use strict\";\n// parse a single path portion\nvar _a;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AST = void 0;\nconst brace_expressions_js_1 = require(\"./brace-expressions.js\");\nconst unescape_js_1 = require(\"./unescape.js\");\nconst types = new Set(['!', '?', '+', '*', '@']);\nconst isExtglobType = (c) => types.has(c);\nconst isExtglobAST = (c) => isExtglobType(c.type);\nconst adoptionMap = new Map([\n ['!', ['@']],\n ['?', ['?', '@']],\n ['@', ['@']],\n ['*', ['*', '+', '?', '@']],\n ['+', ['+', '@']],\n]);\nconst adoptionWithSpaceMap = new Map([\n ['!', ['?']],\n ['@', ['?']],\n ['+', ['?', '*']],\n]);\nconst adoptionAnyMap = new Map([\n ['!', ['?', '@']],\n ['?', ['?', '@']],\n ['@', ['?', '@']],\n ['*', ['*', '+', '?', '@']],\n ['+', ['+', '@', '?', '*']],\n]);\nconst usurpMap = new Map([\n ['!', new Map([['!', '@']])],\n ['?', new Map([['*', '*'], ['+', '*']])],\n ['@', new Map([['!', '!'], ['?', '?'], ['@', '@'], ['*', '*'], ['+', '+']])],\n ['+', new Map([['?', '*'], ['*', '*']])],\n]);\n// Patterns that get prepended to bind to the start of either the\n// entire string, or just a single path portion, to prevent dots\n// and/or traversal patterns, when needed.\n// Exts don't need the ^ or / bit, because the root binds that already.\nconst startNoTraversal = '(?!(?:^|/)\\\\.\\\\.?(?:$|/))';\nconst startNoDot = '(?!\\\\.)';\n// characters that indicate a start of pattern needs the \"no dots\" bit,\n// because a dot *might* be matched. ( is not in the list, because in\n// the case of a child extglob, it will handle the prevention itself.\nconst addPatternStart = new Set(['[', '.']);\n// cases where traversal is A-OK, no dot prevention needed\nconst justDots = new Set(['..', '.']);\nconst reSpecials = new Set('().*{}+?[]^$\\\\!');\nconst regExpEscape = (s) => s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n// any single thing other than /\nconst qmark = '[^/]';\n// * => any number of characters\nconst star = qmark + '*?';\n// use + when we need to ensure that *something* matches, because the * is\n// the only thing in the path portion.\nconst starNoEmpty = qmark + '+?';\n// remove the \\ chars that we added if we end up doing a nonmagic compare\n// const deslash = (s: string) => s.replace(/\\\\(.)/g, '$1')\nclass AST {\n type;\n #root;\n #hasMagic;\n #uflag = false;\n #parts = [];\n #parent;\n #parentIndex;\n #negs;\n #filledNegs = false;\n #options;\n #toString;\n // set to true if it's an extglob with no children\n // (which really means one child of '')\n #emptyExt = false;\n constructor(type, parent, options = {}) {\n this.type = type;\n // extglobs are inherently magical\n if (type)\n this.#hasMagic = true;\n this.#parent = parent;\n this.#root = this.#parent ? this.#parent.#root : this;\n this.#options = this.#root === this ? options : this.#root.#options;\n this.#negs = this.#root === this ? [] : this.#root.#negs;\n if (type === '!' && !this.#root.#filledNegs)\n this.#negs.push(this);\n this.#parentIndex = this.#parent ? this.#parent.#parts.length : 0;\n }\n get hasMagic() {\n /* c8 ignore start */\n if (this.#hasMagic !== undefined)\n return this.#hasMagic;\n /* c8 ignore stop */\n for (const p of this.#parts) {\n if (typeof p === 'string')\n continue;\n if (p.type || p.hasMagic)\n return (this.#hasMagic = true);\n }\n // note: will be undefined until we generate the regexp src and find out\n return this.#hasMagic;\n }\n // reconstructs the pattern\n toString() {\n if (this.#toString !== undefined)\n return this.#toString;\n if (!this.type) {\n return (this.#toString = this.#parts.map(p => String(p)).join(''));\n }\n else {\n return (this.#toString =\n this.type + '(' + this.#parts.map(p => String(p)).join('|') + ')');\n }\n }\n #fillNegs() {\n /* c8 ignore start */\n if (this !== this.#root)\n throw new Error('should only call on root');\n if (this.#filledNegs)\n return this;\n /* c8 ignore stop */\n // call toString() once to fill this out\n this.toString();\n this.#filledNegs = true;\n let n;\n while ((n = this.#negs.pop())) {\n if (n.type !== '!')\n continue;\n // walk up the tree, appending everthing that comes AFTER parentIndex\n let p = n;\n let pp = p.#parent;\n while (pp) {\n for (let i = p.#parentIndex + 1; !pp.type && i < pp.#parts.length; i++) {\n for (const part of n.#parts) {\n /* c8 ignore start */\n if (typeof part === 'string') {\n throw new Error('string part in extglob AST??');\n }\n /* c8 ignore stop */\n part.copyIn(pp.#parts[i]);\n }\n }\n p = pp;\n pp = p.#parent;\n }\n }\n return this;\n }\n push(...parts) {\n for (const p of parts) {\n if (p === '')\n continue;\n /* c8 ignore start */\n if (typeof p !== 'string' && !(p instanceof _a && p.#parent === this)) {\n throw new Error('invalid part: ' + p);\n }\n /* c8 ignore stop */\n this.#parts.push(p);\n }\n }\n toJSON() {\n const ret = this.type === null\n ? this.#parts.slice().map(p => (typeof p === 'string' ? p : p.toJSON()))\n : [this.type, ...this.#parts.map(p => p.toJSON())];\n if (this.isStart() && !this.type)\n ret.unshift([]);\n if (this.isEnd() &&\n (this === this.#root ||\n (this.#root.#filledNegs && this.#parent?.type === '!'))) {\n ret.push({});\n }\n return ret;\n }\n isStart() {\n if (this.#root === this)\n return true;\n // if (this.type) return !!this.#parent?.isStart()\n if (!this.#parent?.isStart())\n return false;\n if (this.#parentIndex === 0)\n return true;\n // if everything AHEAD of this is a negation, then it's still the \"start\"\n const p = this.#parent;\n for (let i = 0; i < this.#parentIndex; i++) {\n const pp = p.#parts[i];\n if (!(pp instanceof _a && pp.type === '!')) {\n return false;\n }\n }\n return true;\n }\n isEnd() {\n if (this.#root === this)\n return true;\n if (this.#parent?.type === '!')\n return true;\n if (!this.#parent?.isEnd())\n return false;\n if (!this.type)\n return this.#parent?.isEnd();\n // if not root, it'll always have a parent\n /* c8 ignore start */\n const pl = this.#parent ? this.#parent.#parts.length : 0;\n /* c8 ignore stop */\n return this.#parentIndex === pl - 1;\n }\n copyIn(part) {\n if (typeof part === 'string')\n this.push(part);\n else\n this.push(part.clone(this));\n }\n clone(parent) {\n const c = new _a(this.type, parent);\n for (const p of this.#parts) {\n c.copyIn(p);\n }\n return c;\n }\n static #parseAST(str, ast, pos, opt, extDepth) {\n const maxDepth = opt.maxExtglobRecursion ?? 2;\n let escaping = false;\n let inBrace = false;\n let braceStart = -1;\n let braceNeg = false;\n if (ast.type === null) {\n // outside of a extglob, append until we find a start\n let i = pos;\n let acc = '';\n while (i < str.length) {\n const c = str.charAt(i++);\n // still accumulate escapes at this point, but we do ignore\n // starts that are escaped\n if (escaping || c === '\\\\') {\n escaping = !escaping;\n acc += c;\n continue;\n }\n if (inBrace) {\n if (i === braceStart + 1) {\n if (c === '^' || c === '!') {\n braceNeg = true;\n }\n }\n else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n inBrace = false;\n }\n acc += c;\n continue;\n }\n else if (c === '[') {\n inBrace = true;\n braceStart = i;\n braceNeg = false;\n acc += c;\n continue;\n }\n const doRecurse = !opt.noext &&\n isExtglobType(c) &&\n str.charAt(i) === '(' &&\n extDepth <= maxDepth;\n if (doRecurse) {\n ast.push(acc);\n acc = '';\n const ext = new _a(c, ast);\n i = _a.#parseAST(str, ext, i, opt, extDepth + 1);\n ast.push(ext);\n continue;\n }\n acc += c;\n }\n ast.push(acc);\n return i;\n }\n // some kind of extglob, pos is at the (\n // find the next | or )\n let i = pos + 1;\n let part = new _a(null, ast);\n const parts = [];\n let acc = '';\n while (i < str.length) {\n const c = str.charAt(i++);\n // still accumulate escapes at this point, but we do ignore\n // starts that are escaped\n if (escaping || c === '\\\\') {\n escaping = !escaping;\n acc += c;\n continue;\n }\n if (inBrace) {\n if (i === braceStart + 1) {\n if (c === '^' || c === '!') {\n braceNeg = true;\n }\n }\n else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n inBrace = false;\n }\n acc += c;\n continue;\n }\n else if (c === '[') {\n inBrace = true;\n braceStart = i;\n braceNeg = false;\n acc += c;\n continue;\n }\n const doRecurse = isExtglobType(c) &&\n str.charAt(i) === '(' &&\n /* c8 ignore start - the maxDepth is sufficient here */\n (extDepth <= maxDepth || (ast && ast.#canAdoptType(c)));\n /* c8 ignore stop */\n if (doRecurse) {\n const depthAdd = ast && ast.#canAdoptType(c) ? 0 : 1;\n part.push(acc);\n acc = '';\n const ext = new _a(c, part);\n part.push(ext);\n i = _a.#parseAST(str, ext, i, opt, extDepth + depthAdd);\n continue;\n }\n if (c === '|') {\n part.push(acc);\n acc = '';\n parts.push(part);\n part = new _a(null, ast);\n continue;\n }\n if (c === ')') {\n if (acc === '' && ast.#parts.length === 0) {\n ast.#emptyExt = true;\n }\n part.push(acc);\n acc = '';\n ast.push(...parts, part);\n return i;\n }\n acc += c;\n }\n // unfinished extglob\n // if we got here, it was a malformed extglob! not an extglob, but\n // maybe something else in there.\n ast.type = null;\n ast.#hasMagic = undefined;\n ast.#parts = [str.substring(pos - 1)];\n return i;\n }\n #canAdoptWithSpace(child) {\n return this.#canAdopt(child, adoptionWithSpaceMap);\n }\n #canAdopt(child, map = adoptionMap) {\n if (!child ||\n typeof child !== 'object' ||\n child.type !== null ||\n child.#parts.length !== 1 ||\n this.type === null) {\n return false;\n }\n const gc = child.#parts[0];\n if (!gc || typeof gc !== 'object' || gc.type === null) {\n return false;\n }\n return this.#canAdoptType(gc.type, map);\n }\n #canAdoptType(c, map = adoptionAnyMap) {\n return !!map.get(this.type)?.includes(c);\n }\n #adoptWithSpace(child, index) {\n const gc = child.#parts[0];\n const blank = new _a(null, gc, this.options);\n blank.#parts.push('');\n gc.push(blank);\n this.#adopt(child, index);\n }\n #adopt(child, index) {\n const gc = child.#parts[0];\n this.#parts.splice(index, 1, ...gc.#parts);\n for (const p of gc.#parts) {\n if (typeof p === 'object')\n p.#parent = this;\n }\n this.#toString = undefined;\n }\n #canUsurpType(c) {\n const m = usurpMap.get(this.type);\n return !!(m?.has(c));\n }\n #canUsurp(child) {\n if (!child ||\n typeof child !== 'object' ||\n child.type !== null ||\n child.#parts.length !== 1 ||\n this.type === null ||\n this.#parts.length !== 1) {\n return false;\n }\n const gc = child.#parts[0];\n if (!gc || typeof gc !== 'object' || gc.type === null) {\n return false;\n }\n return this.#canUsurpType(gc.type);\n }\n #usurp(child) {\n const m = usurpMap.get(this.type);\n const gc = child.#parts[0];\n const nt = m?.get(gc.type);\n /* c8 ignore start - impossible */\n if (!nt)\n return false;\n /* c8 ignore stop */\n this.#parts = gc.#parts;\n for (const p of this.#parts) {\n if (typeof p === 'object')\n p.#parent = this;\n }\n this.type = nt;\n this.#toString = undefined;\n this.#emptyExt = false;\n }\n #flatten() {\n if (!isExtglobAST(this)) {\n for (const p of this.#parts) {\n if (typeof p === 'object')\n p.#flatten();\n }\n }\n else {\n let iterations = 0;\n let done = false;\n do {\n done = true;\n for (let i = 0; i < this.#parts.length; i++) {\n const c = this.#parts[i];\n if (typeof c === 'object') {\n c.#flatten();\n if (this.#canAdopt(c)) {\n done = false;\n this.#adopt(c, i);\n }\n else if (this.#canAdoptWithSpace(c)) {\n done = false;\n this.#adoptWithSpace(c, i);\n }\n else if (this.#canUsurp(c)) {\n done = false;\n this.#usurp(c);\n }\n }\n }\n } while (!done && ++iterations < 10);\n }\n this.#toString = undefined;\n }\n static fromGlob(pattern, options = {}) {\n const ast = new _a(null, undefined, options);\n _a.#parseAST(pattern, ast, 0, options, 0);\n return ast;\n }\n // returns the regular expression if there's magic, or the unescaped\n // string if not.\n toMMPattern() {\n // should only be called on root\n /* c8 ignore start */\n if (this !== this.#root)\n return this.#root.toMMPattern();\n /* c8 ignore stop */\n const glob = this.toString();\n const [re, body, hasMagic, uflag] = this.toRegExpSource();\n // if we're in nocase mode, and not nocaseMagicOnly, then we do\n // still need a regular expression if we have to case-insensitively\n // match capital/lowercase characters.\n const anyMagic = hasMagic ||\n this.#hasMagic ||\n (this.#options.nocase &&\n !this.#options.nocaseMagicOnly &&\n glob.toUpperCase() !== glob.toLowerCase());\n if (!anyMagic) {\n return body;\n }\n const flags = (this.#options.nocase ? 'i' : '') + (uflag ? 'u' : '');\n return Object.assign(new RegExp(`^${re}$`, flags), {\n _src: re,\n _glob: glob,\n });\n }\n get options() {\n return this.#options;\n }\n // returns the string match, the regexp source, whether there's magic\n // in the regexp (so a regular expression is required) and whether or\n // not the uflag is needed for the regular expression (for posix classes)\n // TODO: instead of injecting the start/end at this point, just return\n // the BODY of the regexp, along with the start/end portions suitable\n // for binding the start/end in either a joined full-path makeRe context\n // (where we bind to (^|/), or a standalone matchPart context (where\n // we bind to ^, and not /). Otherwise slashes get duped!\n //\n // In part-matching mode, the start is:\n // - if not isStart: nothing\n // - if traversal possible, but not allowed: ^(?!\\.\\.?$)\n // - if dots allowed or not possible: ^\n // - if dots possible and not allowed: ^(?!\\.)\n // end is:\n // - if not isEnd(): nothing\n // - else: $\n //\n // In full-path matching mode, we put the slash at the START of the\n // pattern, so start is:\n // - if first pattern: same as part-matching mode\n // - if not isStart(): nothing\n // - if traversal possible, but not allowed: /(?!\\.\\.?(?:$|/))\n // - if dots allowed or not possible: /\n // - if dots possible and not allowed: /(?!\\.)\n // end is:\n // - if last pattern, same as part-matching mode\n // - else nothing\n //\n // Always put the (?:$|/) on negated tails, though, because that has to be\n // there to bind the end of the negated pattern portion, and it's easier to\n // just stick it in now rather than try to inject it later in the middle of\n // the pattern.\n //\n // We can just always return the same end, and leave it up to the caller\n // to know whether it's going to be used joined or in parts.\n // And, if the start is adjusted slightly, can do the same there:\n // - if not isStart: nothing\n // - if traversal possible, but not allowed: (?:/|^)(?!\\.\\.?$)\n // - if dots allowed or not possible: (?:/|^)\n // - if dots possible and not allowed: (?:/|^)(?!\\.)\n //\n // But it's better to have a simpler binding without a conditional, for\n // performance, so probably better to return both start options.\n //\n // Then the caller just ignores the end if it's not the first pattern,\n // and the start always gets applied.\n //\n // But that's always going to be $ if it's the ending pattern, or nothing,\n // so the caller can just attach $ at the end of the pattern when building.\n //\n // So the todo is:\n // - better detect what kind of start is needed\n // - return both flavors of starting pattern\n // - attach $ at the end of the pattern when creating the actual RegExp\n //\n // Ah, but wait, no, that all only applies to the root when the first pattern\n // is not an extglob. If the first pattern IS an extglob, then we need all\n // that dot prevention biz to live in the extglob portions, because eg\n // +(*|.x*) can match .xy but not .yx.\n //\n // So, return the two flavors if it's #root and the first child is not an\n // AST, otherwise leave it to the child AST to handle it, and there,\n // use the (?:^|/) style of start binding.\n //\n // Even simplified further:\n // - Since the start for a join is eg /(?!\\.) and the start for a part\n // is ^(?!\\.), we can just prepend (?!\\.) to the pattern (either root\n // or start or whatever) and prepend ^ or / at the Regexp construction.\n toRegExpSource(allowDot) {\n const dot = allowDot ?? !!this.#options.dot;\n if (this.#root === this) {\n this.#flatten();\n this.#fillNegs();\n }\n if (!isExtglobAST(this)) {\n const noEmpty = this.isStart() && this.isEnd();\n const src = this.#parts\n .map(p => {\n const [re, _, hasMagic, uflag] = typeof p === 'string'\n ? _a.#parseGlob(p, this.#hasMagic, noEmpty)\n : p.toRegExpSource(allowDot);\n this.#hasMagic = this.#hasMagic || hasMagic;\n this.#uflag = this.#uflag || uflag;\n return re;\n })\n .join('');\n let start = '';\n if (this.isStart()) {\n if (typeof this.#parts[0] === 'string') {\n // this is the string that will match the start of the pattern,\n // so we need to protect against dots and such.\n // '.' and '..' cannot match unless the pattern is that exactly,\n // even if it starts with . or dot:true is set.\n const dotTravAllowed = this.#parts.length === 1 && justDots.has(this.#parts[0]);\n if (!dotTravAllowed) {\n const aps = addPatternStart;\n // check if we have a possibility of matching . or ..,\n // and prevent that.\n const needNoTrav = \n // dots are allowed, and the pattern starts with [ or .\n (dot && aps.has(src.charAt(0))) ||\n // the pattern starts with \\., and then [ or .\n (src.startsWith('\\\\.') && aps.has(src.charAt(2))) ||\n // the pattern starts with \\.\\., and then [ or .\n (src.startsWith('\\\\.\\\\.') && aps.has(src.charAt(4)));\n // no need to prevent dots if it can't match a dot, or if a\n // sub-pattern will be preventing it anyway.\n const needNoDot = !dot && !allowDot && aps.has(src.charAt(0));\n start = needNoTrav ? startNoTraversal : needNoDot ? startNoDot : '';\n }\n }\n }\n // append the \"end of path portion\" pattern to negation tails\n let end = '';\n if (this.isEnd() &&\n this.#root.#filledNegs &&\n this.#parent?.type === '!') {\n end = '(?:$|\\\\/)';\n }\n const final = start + src + end;\n return [\n final,\n (0, unescape_js_1.unescape)(src),\n (this.#hasMagic = !!this.#hasMagic),\n this.#uflag,\n ];\n }\n // We need to calculate the body *twice* if it's a repeat pattern\n // at the start, once in nodot mode, then again in dot mode, so a\n // pattern like *(?) can match 'x.y'\n const repeated = this.type === '*' || this.type === '+';\n // some kind of extglob\n const start = this.type === '!' ? '(?:(?!(?:' : '(?:';\n let body = this.#partsToRegExp(dot);\n if (this.isStart() && this.isEnd() && !body && this.type !== '!') {\n // invalid extglob, has to at least be *something* present, if it's\n // the entire path portion.\n const s = this.toString();\n const me = this;\n me.#parts = [s];\n me.type = null;\n me.#hasMagic = undefined;\n return [s, (0, unescape_js_1.unescape)(this.toString()), false, false];\n }\n // XXX abstract out this map method\n let bodyDotAllowed = !repeated || allowDot || dot || !startNoDot\n ? ''\n : this.#partsToRegExp(true);\n if (bodyDotAllowed === body) {\n bodyDotAllowed = '';\n }\n if (bodyDotAllowed) {\n body = `(?:${body})(?:${bodyDotAllowed})*?`;\n }\n // an empty !() is exactly equivalent to a starNoEmpty\n let final = '';\n if (this.type === '!' && this.#emptyExt) {\n final = (this.isStart() && !dot ? startNoDot : '') + starNoEmpty;\n }\n else {\n const close = this.type === '!'\n ? // !() must match something,but !(x) can match ''\n '))' +\n (this.isStart() && !dot && !allowDot ? startNoDot : '') +\n star +\n ')'\n : this.type === '@'\n ? ')'\n : this.type === '?'\n ? ')?'\n : this.type === '+' && bodyDotAllowed\n ? ')'\n : this.type === '*' && bodyDotAllowed\n ? `)?`\n : `)${this.type}`;\n final = start + body + close;\n }\n return [\n final,\n (0, unescape_js_1.unescape)(body),\n (this.#hasMagic = !!this.#hasMagic),\n this.#uflag,\n ];\n }\n #partsToRegExp(dot) {\n return this.#parts\n .map(p => {\n // extglob ASTs should only contain parent ASTs\n /* c8 ignore start */\n if (typeof p === 'string') {\n throw new Error('string type in extglob ast??');\n }\n /* c8 ignore stop */\n // can ignore hasMagic, because extglobs are already always magic\n const [re, _, _hasMagic, uflag] = p.toRegExpSource(dot);\n this.#uflag = this.#uflag || uflag;\n return re;\n })\n .filter(p => !(this.isStart() && this.isEnd()) || !!p)\n .join('|');\n }\n static #parseGlob(glob, hasMagic, noEmpty = false) {\n let escaping = false;\n let re = '';\n let uflag = false;\n // multiple stars that aren't globstars coalesce into one *\n let inStar = false;\n for (let i = 0; i < glob.length; i++) {\n const c = glob.charAt(i);\n if (escaping) {\n escaping = false;\n re += (reSpecials.has(c) ? '\\\\' : '') + c;\n inStar = false;\n continue;\n }\n if (c === '\\\\') {\n if (i === glob.length - 1) {\n re += '\\\\\\\\';\n }\n else {\n escaping = true;\n }\n continue;\n }\n if (c === '[') {\n const [src, needUflag, consumed, magic] = (0, brace_expressions_js_1.parseClass)(glob, i);\n if (consumed) {\n re += src;\n uflag = uflag || needUflag;\n i += consumed - 1;\n hasMagic = hasMagic || magic;\n inStar = false;\n continue;\n }\n }\n if (c === '*') {\n if (inStar)\n continue;\n inStar = true;\n re += noEmpty && /^[*]+$/.test(glob) ? starNoEmpty : star;\n hasMagic = true;\n continue;\n }\n else {\n inStar = false;\n }\n if (c === '?') {\n re += qmark;\n hasMagic = true;\n continue;\n }\n re += regExpEscape(c);\n }\n return [re, (0, unescape_js_1.unescape)(glob), !!hasMagic, uflag];\n }\n}\nexports.AST = AST;\n_a = AST;\n//# sourceMappingURL=ast.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.escape = void 0;\n/**\n * Escape all magic characters in a glob pattern.\n *\n * If the {@link windowsPathsNoEscape | GlobOptions.windowsPathsNoEscape}\n * option is used, then characters are escaped by wrapping in `[]`, because\n * a magic character wrapped in a character class can only be satisfied by\n * that exact character. In this mode, `\\` is _not_ escaped, because it is\n * not interpreted as a magic character, but instead as a path separator.\n */\nconst escape = (s, { windowsPathsNoEscape = false, } = {}) => {\n // don't need to escape +@! because we escape the parens\n // that make those magic, and escaping ! as [!] isn't valid,\n // because [!]] is a valid glob class meaning not ']'.\n return windowsPathsNoEscape\n ? s.replace(/[?*()[\\]]/g, '[$&]')\n : s.replace(/[?*()[\\]\\\\]/g, '\\\\$&');\n};\nexports.escape = escape;\n//# sourceMappingURL=escape.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.unescape = exports.escape = exports.AST = exports.Minimatch = exports.match = exports.makeRe = exports.braceExpand = exports.defaults = exports.filter = exports.GLOBSTAR = exports.sep = exports.minimatch = void 0;\nconst brace_expansion_1 = __importDefault(require(\"brace-expansion\"));\nconst assert_valid_pattern_js_1 = require(\"./assert-valid-pattern.js\");\nconst ast_js_1 = require(\"./ast.js\");\nconst escape_js_1 = require(\"./escape.js\");\nconst unescape_js_1 = require(\"./unescape.js\");\nconst minimatch = (p, pattern, options = {}) => {\n (0, assert_valid_pattern_js_1.assertValidPattern)(pattern);\n // shortcut: comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n return false;\n }\n return new Minimatch(pattern, options).match(p);\n};\nexports.minimatch = minimatch;\n// Optimized checking for the most common glob patterns.\nconst starDotExtRE = /^\\*+([^+@!?\\*\\[\\(]*)$/;\nconst starDotExtTest = (ext) => (f) => !f.startsWith('.') && f.endsWith(ext);\nconst starDotExtTestDot = (ext) => (f) => f.endsWith(ext);\nconst starDotExtTestNocase = (ext) => {\n ext = ext.toLowerCase();\n return (f) => !f.startsWith('.') && f.toLowerCase().endsWith(ext);\n};\nconst starDotExtTestNocaseDot = (ext) => {\n ext = ext.toLowerCase();\n return (f) => f.toLowerCase().endsWith(ext);\n};\nconst starDotStarRE = /^\\*+\\.\\*+$/;\nconst starDotStarTest = (f) => !f.startsWith('.') && f.includes('.');\nconst starDotStarTestDot = (f) => f !== '.' && f !== '..' && f.includes('.');\nconst dotStarRE = /^\\.\\*+$/;\nconst dotStarTest = (f) => f !== '.' && f !== '..' && f.startsWith('.');\nconst starRE = /^\\*+$/;\nconst starTest = (f) => f.length !== 0 && !f.startsWith('.');\nconst starTestDot = (f) => f.length !== 0 && f !== '.' && f !== '..';\nconst qmarksRE = /^\\?+([^+@!?\\*\\[\\(]*)?$/;\nconst qmarksTestNocase = ([$0, ext = '']) => {\n const noext = qmarksTestNoExt([$0]);\n if (!ext)\n return noext;\n ext = ext.toLowerCase();\n return (f) => noext(f) && f.toLowerCase().endsWith(ext);\n};\nconst qmarksTestNocaseDot = ([$0, ext = '']) => {\n const noext = qmarksTestNoExtDot([$0]);\n if (!ext)\n return noext;\n ext = ext.toLowerCase();\n return (f) => noext(f) && f.toLowerCase().endsWith(ext);\n};\nconst qmarksTestDot = ([$0, ext = '']) => {\n const noext = qmarksTestNoExtDot([$0]);\n return !ext ? noext : (f) => noext(f) && f.endsWith(ext);\n};\nconst qmarksTest = ([$0, ext = '']) => {\n const noext = qmarksTestNoExt([$0]);\n return !ext ? noext : (f) => noext(f) && f.endsWith(ext);\n};\nconst qmarksTestNoExt = ([$0]) => {\n const len = $0.length;\n return (f) => f.length === len && !f.startsWith('.');\n};\nconst qmarksTestNoExtDot = ([$0]) => {\n const len = $0.length;\n return (f) => f.length === len && f !== '.' && f !== '..';\n};\n/* c8 ignore start */\nconst defaultPlatform = (typeof process === 'object' && process\n ? (typeof process.env === 'object' &&\n process.env &&\n process.env.__MINIMATCH_TESTING_PLATFORM__) ||\n process.platform\n : 'posix');\nconst path = {\n win32: { sep: '\\\\' },\n posix: { sep: '/' },\n};\n/* c8 ignore stop */\nexports.sep = defaultPlatform === 'win32' ? path.win32.sep : path.posix.sep;\nexports.minimatch.sep = exports.sep;\nexports.GLOBSTAR = Symbol('globstar **');\nexports.minimatch.GLOBSTAR = exports.GLOBSTAR;\n// any single thing other than /\n// don't need to escape / when using new RegExp()\nconst qmark = '[^/]';\n// * => any number of characters\nconst star = qmark + '*?';\n// ** when dots are allowed. Anything goes, except .. and .\n// not (^ or / followed by one or two dots followed by $ or /),\n// followed by anything, any number of times.\nconst twoStarDot = '(?:(?!(?:\\\\/|^)(?:\\\\.{1,2})($|\\\\/)).)*?';\n// not a ^ or / followed by a dot,\n// followed by anything, any number of times.\nconst twoStarNoDot = '(?:(?!(?:\\\\/|^)\\\\.).)*?';\nconst filter = (pattern, options = {}) => (p) => (0, exports.minimatch)(p, pattern, options);\nexports.filter = filter;\nexports.minimatch.filter = exports.filter;\nconst ext = (a, b = {}) => Object.assign({}, a, b);\nconst defaults = (def) => {\n if (!def || typeof def !== 'object' || !Object.keys(def).length) {\n return exports.minimatch;\n }\n const orig = exports.minimatch;\n const m = (p, pattern, options = {}) => orig(p, pattern, ext(def, options));\n return Object.assign(m, {\n Minimatch: class Minimatch extends orig.Minimatch {\n constructor(pattern, options = {}) {\n super(pattern, ext(def, options));\n }\n static defaults(options) {\n return orig.defaults(ext(def, options)).Minimatch;\n }\n },\n AST: class AST extends orig.AST {\n /* c8 ignore start */\n constructor(type, parent, options = {}) {\n super(type, parent, ext(def, options));\n }\n /* c8 ignore stop */\n static fromGlob(pattern, options = {}) {\n return orig.AST.fromGlob(pattern, ext(def, options));\n }\n },\n unescape: (s, options = {}) => orig.unescape(s, ext(def, options)),\n escape: (s, options = {}) => orig.escape(s, ext(def, options)),\n filter: (pattern, options = {}) => orig.filter(pattern, ext(def, options)),\n defaults: (options) => orig.defaults(ext(def, options)),\n makeRe: (pattern, options = {}) => orig.makeRe(pattern, ext(def, options)),\n braceExpand: (pattern, options = {}) => orig.braceExpand(pattern, ext(def, options)),\n match: (list, pattern, options = {}) => orig.match(list, pattern, ext(def, options)),\n sep: orig.sep,\n GLOBSTAR: exports.GLOBSTAR,\n });\n};\nexports.defaults = defaults;\nexports.minimatch.defaults = exports.defaults;\n// Brace expansion:\n// a{b,c}d -> abd acd\n// a{b,}c -> abc ac\n// a{0..3}d -> a0d a1d a2d a3d\n// a{b,c{d,e}f}g -> abg acdfg acefg\n// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg\n//\n// Invalid sets are not expanded.\n// a{2..}b -> a{2..}b\n// a{b}c -> a{b}c\nconst braceExpand = (pattern, options = {}) => {\n (0, assert_valid_pattern_js_1.assertValidPattern)(pattern);\n // Thanks to Yeting Li <https://github.com/yetingli> for\n // improving this regexp to avoid a ReDOS vulnerability.\n if (options.nobrace || !/\\{(?:(?!\\{).)*\\}/.test(pattern)) {\n // shortcut. no need to expand.\n return [pattern];\n }\n return (0, brace_expansion_1.default)(pattern);\n};\nexports.braceExpand = braceExpand;\nexports.minimatch.braceExpand = exports.braceExpand;\n// parse a component of the expanded set.\n// At this point, no pattern may contain \"/\" in it\n// so we're going to return a 2d array, where each entry is the full\n// pattern, split on '/', and then turned into a regular expression.\n// A regexp is made at the end which joins each array with an\n// escaped /, and another full one which joins each regexp with |.\n//\n// Following the lead of Bash 4.1, note that \"**\" only has special meaning\n// when it is the *only* thing in a path portion. Otherwise, any series\n// of * is equivalent to a single *. Globstar behavior is enabled by\n// default, and can be disabled by setting options.noglobstar.\nconst makeRe = (pattern, options = {}) => new Minimatch(pattern, options).makeRe();\nexports.makeRe = makeRe;\nexports.minimatch.makeRe = exports.makeRe;\nconst match = (list, pattern, options = {}) => {\n const mm = new Minimatch(pattern, options);\n list = list.filter(f => mm.match(f));\n if (mm.options.nonull && !list.length) {\n list.push(pattern);\n }\n return list;\n};\nexports.match = match;\nexports.minimatch.match = exports.match;\n// replace stuff like \\* with *\nconst globMagic = /[?*]|[+@!]\\(.*?\\)|\\[|\\]/;\nconst regExpEscape = (s) => s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\nclass Minimatch {\n options;\n set;\n pattern;\n windowsPathsNoEscape;\n nonegate;\n negate;\n comment;\n empty;\n preserveMultipleSlashes;\n partial;\n globSet;\n globParts;\n nocase;\n isWindows;\n platform;\n windowsNoMagicRoot;\n maxGlobstarRecursion;\n regexp;\n constructor(pattern, options = {}) {\n (0, assert_valid_pattern_js_1.assertValidPattern)(pattern);\n options = options || {};\n this.options = options;\n this.maxGlobstarRecursion = options.maxGlobstarRecursion ?? 200;\n this.pattern = pattern;\n this.platform = options.platform || defaultPlatform;\n this.isWindows = this.platform === 'win32';\n this.windowsPathsNoEscape =\n !!options.windowsPathsNoEscape || options.allowWindowsEscape === false;\n if (this.windowsPathsNoEscape) {\n this.pattern = this.pattern.replace(/\\\\/g, '/');\n }\n this.preserveMultipleSlashes = !!options.preserveMultipleSlashes;\n this.regexp = null;\n this.negate = false;\n this.nonegate = !!options.nonegate;\n this.comment = false;\n this.empty = false;\n this.partial = !!options.partial;\n this.nocase = !!this.options.nocase;\n this.windowsNoMagicRoot =\n options.windowsNoMagicRoot !== undefined\n ? options.windowsNoMagicRoot\n : !!(this.isWindows && this.nocase);\n this.globSet = [];\n this.globParts = [];\n this.set = [];\n // make the set of regexps etc.\n this.make();\n }\n hasMagic() {\n if (this.options.magicalBraces && this.set.length > 1) {\n return true;\n }\n for (const pattern of this.set) {\n for (const part of pattern) {\n if (typeof part !== 'string')\n return true;\n }\n }\n return false;\n }\n debug(..._) { }\n make() {\n const pattern = this.pattern;\n const options = this.options;\n // empty patterns and comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n this.comment = true;\n return;\n }\n if (!pattern) {\n this.empty = true;\n return;\n }\n // step 1: figure out negation, etc.\n this.parseNegate();\n // step 2: expand braces\n this.globSet = [...new Set(this.braceExpand())];\n if (options.debug) {\n this.debug = (...args) => console.error(...args);\n }\n this.debug(this.pattern, this.globSet);\n // step 3: now we have a set, so turn each one into a series of\n // path-portion matching patterns.\n // These will be regexps, except in the case of \"**\", which is\n // set to the GLOBSTAR object for globstar behavior,\n // and will not contain any / characters\n //\n // First, we preprocess to make the glob pattern sets a bit simpler\n // and deduped. There are some perf-killing patterns that can cause\n // problems with a glob walk, but we can simplify them down a bit.\n const rawGlobParts = this.globSet.map(s => this.slashSplit(s));\n this.globParts = this.preprocess(rawGlobParts);\n this.debug(this.pattern, this.globParts);\n // glob --> regexps\n let set = this.globParts.map((s, _, __) => {\n if (this.isWindows && this.windowsNoMagicRoot) {\n // check if it's a drive or unc path.\n const isUNC = s[0] === '' &&\n s[1] === '' &&\n (s[2] === '?' || !globMagic.test(s[2])) &&\n !globMagic.test(s[3]);\n const isDrive = /^[a-z]:/i.test(s[0]);\n if (isUNC) {\n return [...s.slice(0, 4), ...s.slice(4).map(ss => this.parse(ss))];\n }\n else if (isDrive) {\n return [s[0], ...s.slice(1).map(ss => this.parse(ss))];\n }\n }\n return s.map(ss => this.parse(ss));\n });\n this.debug(this.pattern, set);\n // filter out everything that didn't compile properly.\n this.set = set.filter(s => s.indexOf(false) === -1);\n // do not treat the ? in UNC paths as magic\n if (this.isWindows) {\n for (let i = 0; i < this.set.length; i++) {\n const p = this.set[i];\n if (p[0] === '' &&\n p[1] === '' &&\n this.globParts[i][2] === '?' &&\n typeof p[3] === 'string' &&\n /^[a-z]:$/i.test(p[3])) {\n p[2] = '?';\n }\n }\n }\n this.debug(this.pattern, this.set);\n }\n // various transforms to equivalent pattern sets that are\n // faster to process in a filesystem walk. The goal is to\n // eliminate what we can, and push all ** patterns as far\n // to the right as possible, even if it increases the number\n // of patterns that we have to process.\n preprocess(globParts) {\n // if we're not in globstar mode, then turn all ** into *\n if (this.options.noglobstar) {\n for (let i = 0; i < globParts.length; i++) {\n for (let j = 0; j < globParts[i].length; j++) {\n if (globParts[i][j] === '**') {\n globParts[i][j] = '*';\n }\n }\n }\n }\n const { optimizationLevel = 1 } = this.options;\n if (optimizationLevel >= 2) {\n // aggressive optimization for the purpose of fs walking\n globParts = this.firstPhasePreProcess(globParts);\n globParts = this.secondPhasePreProcess(globParts);\n }\n else if (optimizationLevel >= 1) {\n // just basic optimizations to remove some .. parts\n globParts = this.levelOneOptimize(globParts);\n }\n else {\n // just collapse multiple ** portions into one\n globParts = this.adjascentGlobstarOptimize(globParts);\n }\n return globParts;\n }\n // just get rid of adjascent ** portions\n adjascentGlobstarOptimize(globParts) {\n return globParts.map(parts => {\n let gs = -1;\n while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n let i = gs;\n while (parts[i + 1] === '**') {\n i++;\n }\n if (i !== gs) {\n parts.splice(gs, i - gs);\n }\n }\n return parts;\n });\n }\n // get rid of adjascent ** and resolve .. portions\n levelOneOptimize(globParts) {\n return globParts.map(parts => {\n parts = parts.reduce((set, part) => {\n const prev = set[set.length - 1];\n if (part === '**' && prev === '**') {\n return set;\n }\n if (part === '..') {\n if (prev && prev !== '..' && prev !== '.' && prev !== '**') {\n set.pop();\n return set;\n }\n }\n set.push(part);\n return set;\n }, []);\n return parts.length === 0 ? [''] : parts;\n });\n }\n levelTwoFileOptimize(parts) {\n if (!Array.isArray(parts)) {\n parts = this.slashSplit(parts);\n }\n let didSomething = false;\n do {\n didSomething = false;\n // <pre>/<e>/<rest> -> <pre>/<rest>\n if (!this.preserveMultipleSlashes) {\n for (let i = 1; i < parts.length - 1; i++) {\n const p = parts[i];\n // don't squeeze out UNC patterns\n if (i === 1 && p === '' && parts[0] === '')\n continue;\n if (p === '.' || p === '') {\n didSomething = true;\n parts.splice(i, 1);\n i--;\n }\n }\n if (parts[0] === '.' &&\n parts.length === 2 &&\n (parts[1] === '.' || parts[1] === '')) {\n didSomething = true;\n parts.pop();\n }\n }\n // <pre>/<p>/../<rest> -> <pre>/<rest>\n let dd = 0;\n while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n const p = parts[dd - 1];\n if (p && p !== '.' && p !== '..' && p !== '**') {\n didSomething = true;\n parts.splice(dd - 1, 2);\n dd -= 2;\n }\n }\n } while (didSomething);\n return parts.length === 0 ? [''] : parts;\n }\n // First phase: single-pattern processing\n // <pre> is 1 or more portions\n // <rest> is 1 or more portions\n // <p> is any portion other than ., .., '', or **\n // <e> is . or ''\n //\n // **/.. is *brutal* for filesystem walking performance, because\n // it effectively resets the recursive walk each time it occurs,\n // and ** cannot be reduced out by a .. pattern part like a regexp\n // or most strings (other than .., ., and '') can be.\n //\n // <pre>/**/../<p>/<p>/<rest> -> {<pre>/../<p>/<p>/<rest>,<pre>/**/<p>/<p>/<rest>}\n // <pre>/<e>/<rest> -> <pre>/<rest>\n // <pre>/<p>/../<rest> -> <pre>/<rest>\n // **/**/<rest> -> **/<rest>\n //\n // **/*/<rest> -> */**/<rest> <== not valid because ** doesn't follow\n // this WOULD be allowed if ** did follow symlinks, or * didn't\n firstPhasePreProcess(globParts) {\n let didSomething = false;\n do {\n didSomething = false;\n // <pre>/**/../<p>/<p>/<rest> -> {<pre>/../<p>/<p>/<rest>,<pre>/**/<p>/<p>/<rest>}\n for (let parts of globParts) {\n let gs = -1;\n while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n let gss = gs;\n while (parts[gss + 1] === '**') {\n // <pre>/**/**/<rest> -> <pre>/**/<rest>\n gss++;\n }\n // eg, if gs is 2 and gss is 4, that means we have 3 **\n // parts, and can remove 2 of them.\n if (gss > gs) {\n parts.splice(gs + 1, gss - gs);\n }\n let next = parts[gs + 1];\n const p = parts[gs + 2];\n const p2 = parts[gs + 3];\n if (next !== '..')\n continue;\n if (!p ||\n p === '.' ||\n p === '..' ||\n !p2 ||\n p2 === '.' ||\n p2 === '..') {\n continue;\n }\n didSomething = true;\n // edit parts in place, and push the new one\n parts.splice(gs, 1);\n const other = parts.slice(0);\n other[gs] = '**';\n globParts.push(other);\n gs--;\n }\n // <pre>/<e>/<rest> -> <pre>/<rest>\n if (!this.preserveMultipleSlashes) {\n for (let i = 1; i < parts.length - 1; i++) {\n const p = parts[i];\n // don't squeeze out UNC patterns\n if (i === 1 && p === '' && parts[0] === '')\n continue;\n if (p === '.' || p === '') {\n didSomething = true;\n parts.splice(i, 1);\n i--;\n }\n }\n if (parts[0] === '.' &&\n parts.length === 2 &&\n (parts[1] === '.' || parts[1] === '')) {\n didSomething = true;\n parts.pop();\n }\n }\n // <pre>/<p>/../<rest> -> <pre>/<rest>\n let dd = 0;\n while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n const p = parts[dd - 1];\n if (p && p !== '.' && p !== '..' && p !== '**') {\n didSomething = true;\n const needDot = dd === 1 && parts[dd + 1] === '**';\n const splin = needDot ? ['.'] : [];\n parts.splice(dd - 1, 2, ...splin);\n if (parts.length === 0)\n parts.push('');\n dd -= 2;\n }\n }\n }\n } while (didSomething);\n return globParts;\n }\n // second phase: multi-pattern dedupes\n // {<pre>/*/<rest>,<pre>/<p>/<rest>} -> <pre>/*/<rest>\n // {<pre>/<rest>,<pre>/<rest>} -> <pre>/<rest>\n // {<pre>/**/<rest>,<pre>/<rest>} -> <pre>/**/<rest>\n //\n // {<pre>/**/<rest>,<pre>/**/<p>/<rest>} -> <pre>/**/<rest>\n // ^-- not valid because ** doens't follow symlinks\n secondPhasePreProcess(globParts) {\n for (let i = 0; i < globParts.length - 1; i++) {\n for (let j = i + 1; j < globParts.length; j++) {\n const matched = this.partsMatch(globParts[i], globParts[j], !this.preserveMultipleSlashes);\n if (matched) {\n globParts[i] = [];\n globParts[j] = matched;\n break;\n }\n }\n }\n return globParts.filter(gs => gs.length);\n }\n partsMatch(a, b, emptyGSMatch = false) {\n let ai = 0;\n let bi = 0;\n let result = [];\n let which = '';\n while (ai < a.length && bi < b.length) {\n if (a[ai] === b[bi]) {\n result.push(which === 'b' ? b[bi] : a[ai]);\n ai++;\n bi++;\n }\n else if (emptyGSMatch && a[ai] === '**' && b[bi] === a[ai + 1]) {\n result.push(a[ai]);\n ai++;\n }\n else if (emptyGSMatch && b[bi] === '**' && a[ai] === b[bi + 1]) {\n result.push(b[bi]);\n bi++;\n }\n else if (a[ai] === '*' &&\n b[bi] &&\n (this.options.dot || !b[bi].startsWith('.')) &&\n b[bi] !== '**') {\n if (which === 'b')\n return false;\n which = 'a';\n result.push(a[ai]);\n ai++;\n bi++;\n }\n else if (b[bi] === '*' &&\n a[ai] &&\n (this.options.dot || !a[ai].startsWith('.')) &&\n a[ai] !== '**') {\n if (which === 'a')\n return false;\n which = 'b';\n result.push(b[bi]);\n ai++;\n bi++;\n }\n else {\n return false;\n }\n }\n // if we fall out of the loop, it means they two are identical\n // as long as their lengths match\n return a.length === b.length && result;\n }\n parseNegate() {\n if (this.nonegate)\n return;\n const pattern = this.pattern;\n let negate = false;\n let negateOffset = 0;\n for (let i = 0; i < pattern.length && pattern.charAt(i) === '!'; i++) {\n negate = !negate;\n negateOffset++;\n }\n if (negateOffset)\n this.pattern = pattern.slice(negateOffset);\n this.negate = negate;\n }\n // set partial to true to test if, for example,\n // \"/a/b\" matches the start of \"/*/b/*/d\"\n // Partial means, if you run out of file before you run\n // out of pattern, then that's fine, as long as all\n // the parts match.\n matchOne(file, pattern, partial = false) {\n let fileStartIndex = 0;\n let patternStartIndex = 0;\n // UNC paths like //?/X:/... can match X:/... and vice versa\n // Drive letters in absolute drive or unc paths are always compared\n // case-insensitively.\n if (this.isWindows) {\n const fileDrive = typeof file[0] === 'string' && /^[a-z]:$/i.test(file[0]);\n const fileUNC = !fileDrive &&\n file[0] === '' &&\n file[1] === '' &&\n file[2] === '?' &&\n /^[a-z]:$/i.test(file[3]);\n const patternDrive = typeof pattern[0] === 'string' && /^[a-z]:$/i.test(pattern[0]);\n const patternUNC = !patternDrive &&\n pattern[0] === '' &&\n pattern[1] === '' &&\n pattern[2] === '?' &&\n typeof pattern[3] === 'string' &&\n /^[a-z]:$/i.test(pattern[3]);\n const fdi = fileUNC ? 3 : fileDrive ? 0 : undefined;\n const pdi = patternUNC ? 3 : patternDrive ? 0 : undefined;\n if (typeof fdi === 'number' && typeof pdi === 'number') {\n const [fd, pd] = [\n file[fdi],\n pattern[pdi],\n ];\n if (fd.toLowerCase() === pd.toLowerCase()) {\n pattern[pdi] = fd;\n patternStartIndex = pdi;\n fileStartIndex = fdi;\n }\n }\n }\n // resolve and reduce . and .. portions in the file as well.\n // dont' need to do the second phase, because it's only one string[]\n const { optimizationLevel = 1 } = this.options;\n if (optimizationLevel >= 2) {\n file = this.levelTwoFileOptimize(file);\n }\n if (pattern.includes(exports.GLOBSTAR)) {\n return this.#matchGlobstar(file, pattern, partial, fileStartIndex, patternStartIndex);\n }\n return this.#matchOne(file, pattern, partial, fileStartIndex, patternStartIndex);\n }\n #matchGlobstar(file, pattern, partial, fileIndex, patternIndex) {\n const firstgs = pattern.indexOf(exports.GLOBSTAR, patternIndex);\n const lastgs = pattern.lastIndexOf(exports.GLOBSTAR);\n const [head, body, tail] = partial ? [\n pattern.slice(patternIndex, firstgs),\n pattern.slice(firstgs + 1),\n [],\n ] : [\n pattern.slice(patternIndex, firstgs),\n pattern.slice(firstgs + 1, lastgs),\n pattern.slice(lastgs + 1),\n ];\n if (head.length) {\n const fileHead = file.slice(fileIndex, fileIndex + head.length);\n if (!this.#matchOne(fileHead, head, partial, 0, 0))\n return false;\n fileIndex += head.length;\n }\n let fileTailMatch = 0;\n if (tail.length) {\n if (tail.length + fileIndex > file.length)\n return false;\n let tailStart = file.length - tail.length;\n if (this.#matchOne(file, tail, partial, tailStart, 0)) {\n fileTailMatch = tail.length;\n }\n else {\n if (file[file.length - 1] !== '' ||\n fileIndex + tail.length === file.length) {\n return false;\n }\n tailStart--;\n if (!this.#matchOne(file, tail, partial, tailStart, 0))\n return false;\n fileTailMatch = tail.length + 1;\n }\n }\n if (!body.length) {\n let sawSome = !!fileTailMatch;\n for (let i = fileIndex; i < file.length - fileTailMatch; i++) {\n const f = String(file[i]);\n sawSome = true;\n if (f === '.' || f === '..' ||\n (!this.options.dot && f.startsWith('.'))) {\n return false;\n }\n }\n return partial || sawSome;\n }\n const bodySegments = [[[], 0]];\n let currentBody = bodySegments[0];\n let nonGsParts = 0;\n const nonGsPartsSums = [0];\n for (const b of body) {\n if (b === exports.GLOBSTAR) {\n nonGsPartsSums.push(nonGsParts);\n currentBody = [[], 0];\n bodySegments.push(currentBody);\n }\n else {\n currentBody[0].push(b);\n nonGsParts++;\n }\n }\n let i = bodySegments.length - 1;\n const fileLength = file.length - fileTailMatch;\n for (const b of bodySegments) {\n b[1] = fileLength - (nonGsPartsSums[i--] + b[0].length);\n }\n return !!this.#matchGlobStarBodySections(file, bodySegments, fileIndex, 0, partial, 0, !!fileTailMatch);\n }\n #matchGlobStarBodySections(file, bodySegments, fileIndex, bodyIndex, partial, globStarDepth, sawTail) {\n const bs = bodySegments[bodyIndex];\n if (!bs) {\n for (let i = fileIndex; i < file.length; i++) {\n sawTail = true;\n const f = file[i];\n if (f === '.' || f === '..' ||\n (!this.options.dot && f.startsWith('.'))) {\n return false;\n }\n }\n return sawTail;\n }\n const [body, after] = bs;\n while (fileIndex <= after) {\n const m = this.#matchOne(file.slice(0, fileIndex + body.length), body, partial, fileIndex, 0);\n if (m && globStarDepth < this.maxGlobstarRecursion) {\n const sub = this.#matchGlobStarBodySections(file, bodySegments, fileIndex + body.length, bodyIndex + 1, partial, globStarDepth + 1, sawTail);\n if (sub !== false)\n return sub;\n }\n const f = file[fileIndex];\n if (f === '.' || f === '..' ||\n (!this.options.dot && f.startsWith('.'))) {\n return false;\n }\n fileIndex++;\n }\n return partial || null;\n }\n #matchOne(file, pattern, partial, fileIndex, patternIndex) {\n let fi;\n let pi;\n let pl;\n let fl;\n for (fi = fileIndex, pi = patternIndex,\n fl = file.length, pl = pattern.length; fi < fl && pi < pl; fi++, pi++) {\n this.debug('matchOne loop');\n let p = pattern[pi];\n let f = file[fi];\n this.debug(pattern, p, f);\n /* c8 ignore start */\n if (p === false || p === exports.GLOBSTAR)\n return false;\n /* c8 ignore stop */\n let hit;\n if (typeof p === 'string') {\n hit = f === p;\n this.debug('string match', p, f, hit);\n }\n else {\n hit = p.test(f);\n this.debug('pattern match', p, f, hit);\n }\n if (!hit)\n return false;\n }\n if (fi === fl && pi === pl) {\n return true;\n }\n else if (fi === fl) {\n return partial;\n }\n else if (pi === pl) {\n return fi === fl - 1 && file[fi] === '';\n /* c8 ignore start */\n }\n else {\n throw new Error('wtf?');\n }\n /* c8 ignore stop */\n }\n braceExpand() {\n return (0, exports.braceExpand)(this.pattern, this.options);\n }\n parse(pattern) {\n (0, assert_valid_pattern_js_1.assertValidPattern)(pattern);\n const options = this.options;\n // shortcuts\n if (pattern === '**')\n return exports.GLOBSTAR;\n if (pattern === '')\n return '';\n // far and away, the most common glob pattern parts are\n // *, *.*, and *.<ext> Add a fast check method for those.\n let m;\n let fastTest = null;\n if ((m = pattern.match(starRE))) {\n fastTest = options.dot ? starTestDot : starTest;\n }\n else if ((m = pattern.match(starDotExtRE))) {\n fastTest = (options.nocase\n ? options.dot\n ? starDotExtTestNocaseDot\n : starDotExtTestNocase\n : options.dot\n ? starDotExtTestDot\n : starDotExtTest)(m[1]);\n }\n else if ((m = pattern.match(qmarksRE))) {\n fastTest = (options.nocase\n ? options.dot\n ? qmarksTestNocaseDot\n : qmarksTestNocase\n : options.dot\n ? qmarksTestDot\n : qmarksTest)(m);\n }\n else if ((m = pattern.match(starDotStarRE))) {\n fastTest = options.dot ? starDotStarTestDot : starDotStarTest;\n }\n else if ((m = pattern.match(dotStarRE))) {\n fastTest = dotStarTest;\n }\n const re = ast_js_1.AST.fromGlob(pattern, this.options).toMMPattern();\n if (fastTest && typeof re === 'object') {\n // Avoids overriding in frozen environments\n Reflect.defineProperty(re, 'test', { value: fastTest });\n }\n return re;\n }\n makeRe() {\n if (this.regexp || this.regexp === false)\n return this.regexp;\n // at this point, this.set is a 2d array of partial\n // pattern strings, or \"**\".\n //\n // It's better to use .match(). This function shouldn't\n // be used, really, but it's pretty convenient sometimes,\n // when you just want to work with a regex.\n const set = this.set;\n if (!set.length) {\n this.regexp = false;\n return this.regexp;\n }\n const options = this.options;\n const twoStar = options.noglobstar\n ? star\n : options.dot\n ? twoStarDot\n : twoStarNoDot;\n const flags = new Set(options.nocase ? ['i'] : []);\n // regexpify non-globstar patterns\n // if ** is only item, then we just do one twoStar\n // if ** is first, and there are more, prepend (\\/|twoStar\\/)? to next\n // if ** is last, append (\\/twoStar|) to previous\n // if ** is in the middle, append (\\/|\\/twoStar\\/) to previous\n // then filter out GLOBSTAR symbols\n let re = set\n .map(pattern => {\n const pp = pattern.map(p => {\n if (p instanceof RegExp) {\n for (const f of p.flags.split(''))\n flags.add(f);\n }\n return typeof p === 'string'\n ? regExpEscape(p)\n : p === exports.GLOBSTAR\n ? exports.GLOBSTAR\n : p._src;\n });\n pp.forEach((p, i) => {\n const next = pp[i + 1];\n const prev = pp[i - 1];\n if (p !== exports.GLOBSTAR || prev === exports.GLOBSTAR) {\n return;\n }\n if (prev === undefined) {\n if (next !== undefined && next !== exports.GLOBSTAR) {\n pp[i + 1] = '(?:\\\\/|' + twoStar + '\\\\/)?' + next;\n }\n else {\n pp[i] = twoStar;\n }\n }\n else if (next === undefined) {\n pp[i - 1] = prev + '(?:\\\\/|' + twoStar + ')?';\n }\n else if (next !== exports.GLOBSTAR) {\n pp[i - 1] = prev + '(?:\\\\/|\\\\/' + twoStar + '\\\\/)' + next;\n pp[i + 1] = exports.GLOBSTAR;\n }\n });\n return pp.filter(p => p !== exports.GLOBSTAR).join('/');\n })\n .join('|');\n // need to wrap in parens if we had more than one thing with |,\n // otherwise only the first will be anchored to ^ and the last to $\n const [open, close] = set.length > 1 ? ['(?:', ')'] : ['', ''];\n // must match entire pattern\n // ending in a * or ** will make it less strict.\n re = '^' + open + re + close + '$';\n // can match anything, as long as it's not this.\n if (this.negate)\n re = '^(?!' + re + ').+$';\n try {\n this.regexp = new RegExp(re, [...flags].join(''));\n /* c8 ignore start */\n }\n catch (ex) {\n // should be impossible\n this.regexp = false;\n }\n /* c8 ignore stop */\n return this.regexp;\n }\n slashSplit(p) {\n // if p starts with // on windows, we preserve that\n // so that UNC paths aren't broken. Otherwise, any number of\n // / characters are coalesced into one, unless\n // preserveMultipleSlashes is set to true.\n if (this.preserveMultipleSlashes) {\n return p.split('/');\n }\n else if (this.isWindows && /^\\/\\/[^\\/]+/.test(p)) {\n // add an extra '' for the one we lose\n return ['', ...p.split(/\\/+/)];\n }\n else {\n return p.split(/\\/+/);\n }\n }\n match(f, partial = this.partial) {\n this.debug('match', f, this.pattern);\n // short-circuit in the case of busted things.\n // comments, etc.\n if (this.comment) {\n return false;\n }\n if (this.empty) {\n return f === '';\n }\n if (f === '/' && partial) {\n return true;\n }\n const options = this.options;\n // windows: need to use /, not \\\n if (this.isWindows) {\n f = f.split('\\\\').join('/');\n }\n // treat the test path as a set of pathparts.\n const ff = this.slashSplit(f);\n this.debug(this.pattern, 'split', ff);\n // just ONE of the pattern sets in this.set needs to match\n // in order for it to be valid. If negating, then just one\n // match means that we have failed.\n // Either way, return on the first hit.\n const set = this.set;\n this.debug(this.pattern, 'set', set);\n // Find the basename of the path by looking for the last non-empty segment\n let filename = ff[ff.length - 1];\n if (!filename) {\n for (let i = ff.length - 2; !filename && i >= 0; i--) {\n filename = ff[i];\n }\n }\n for (let i = 0; i < set.length; i++) {\n const pattern = set[i];\n let file = ff;\n if (options.matchBase && pattern.length === 1) {\n file = [filename];\n }\n const hit = this.matchOne(file, pattern, partial);\n if (hit) {\n if (options.flipNegate) {\n return true;\n }\n return !this.negate;\n }\n }\n // didn't get any hits. this is success if it's a negative\n // pattern, failure otherwise.\n if (options.flipNegate) {\n return false;\n }\n return this.negate;\n }\n static defaults(def) {\n return exports.minimatch.defaults(def).Minimatch;\n }\n}\nexports.Minimatch = Minimatch;\n/* c8 ignore start */\nvar ast_js_2 = require(\"./ast.js\");\nObject.defineProperty(exports, \"AST\", { enumerable: true, get: function () { return ast_js_2.AST; } });\nvar escape_js_2 = require(\"./escape.js\");\nObject.defineProperty(exports, \"escape\", { enumerable: true, get: function () { return escape_js_2.escape; } });\nvar unescape_js_2 = require(\"./unescape.js\");\nObject.defineProperty(exports, \"unescape\", { enumerable: true, get: function () { return unescape_js_2.unescape; } });\n/* c8 ignore stop */\nexports.minimatch.AST = ast_js_1.AST;\nexports.minimatch.Minimatch = Minimatch;\nexports.minimatch.escape = escape_js_1.escape;\nexports.minimatch.unescape = unescape_js_1.unescape;\n//# sourceMappingURL=index.js.map","\"use strict\";\n/**\n * @module LRUCache\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LRUCache = void 0;\nconst perf = typeof performance === 'object' &&\n performance &&\n typeof performance.now === 'function'\n ? performance\n : Date;\nconst warned = new Set();\n/* c8 ignore start */\nconst PROCESS = (typeof process === 'object' && !!process ? process : {});\n/* c8 ignore start */\nconst emitWarning = (msg, type, code, fn) => {\n typeof PROCESS.emitWarning === 'function'\n ? PROCESS.emitWarning(msg, type, code, fn)\n : console.error(`[${code}] ${type}: ${msg}`);\n};\nlet AC = globalThis.AbortController;\nlet AS = globalThis.AbortSignal;\n/* c8 ignore start */\nif (typeof AC === 'undefined') {\n //@ts-ignore\n AS = class AbortSignal {\n onabort;\n _onabort = [];\n reason;\n aborted = false;\n addEventListener(_, fn) {\n this._onabort.push(fn);\n }\n };\n //@ts-ignore\n AC = class AbortController {\n constructor() {\n warnACPolyfill();\n }\n signal = new AS();\n abort(reason) {\n if (this.signal.aborted)\n return;\n //@ts-ignore\n this.signal.reason = reason;\n //@ts-ignore\n this.signal.aborted = true;\n //@ts-ignore\n for (const fn of this.signal._onabort) {\n fn(reason);\n }\n this.signal.onabort?.(reason);\n }\n };\n let printACPolyfillWarning = PROCESS.env?.LRU_CACHE_IGNORE_AC_WARNING !== '1';\n const warnACPolyfill = () => {\n if (!printACPolyfillWarning)\n return;\n printACPolyfillWarning = false;\n emitWarning('AbortController is not defined. If using lru-cache in ' +\n 'node 14, load an AbortController polyfill from the ' +\n '`node-abort-controller` package. A minimal polyfill is ' +\n 'provided for use by LRUCache.fetch(), but it should not be ' +\n 'relied upon in other contexts (eg, passing it to other APIs that ' +\n 'use AbortController/AbortSignal might have undesirable effects). ' +\n 'You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.', 'NO_ABORT_CONTROLLER', 'ENOTSUP', warnACPolyfill);\n };\n}\n/* c8 ignore stop */\nconst shouldWarn = (code) => !warned.has(code);\nconst TYPE = Symbol('type');\nconst isPosInt = (n) => n && n === Math.floor(n) && n > 0 && isFinite(n);\n/* c8 ignore start */\n// This is a little bit ridiculous, tbh.\n// The maximum array length is 2^32-1 or thereabouts on most JS impls.\n// And well before that point, you're caching the entire world, I mean,\n// that's ~32GB of just integers for the next/prev links, plus whatever\n// else to hold that many keys and values. Just filling the memory with\n// zeroes at init time is brutal when you get that big.\n// But why not be complete?\n// Maybe in the future, these limits will have expanded.\nconst getUintArray = (max) => !isPosInt(max)\n ? null\n : max <= Math.pow(2, 8)\n ? Uint8Array\n : max <= Math.pow(2, 16)\n ? Uint16Array\n : max <= Math.pow(2, 32)\n ? Uint32Array\n : max <= Number.MAX_SAFE_INTEGER\n ? ZeroArray\n : null;\n/* c8 ignore stop */\nclass ZeroArray extends Array {\n constructor(size) {\n super(size);\n this.fill(0);\n }\n}\nclass Stack {\n heap;\n length;\n // private constructor\n static #constructing = false;\n static create(max) {\n const HeapCls = getUintArray(max);\n if (!HeapCls)\n return [];\n Stack.#constructing = true;\n const s = new Stack(max, HeapCls);\n Stack.#constructing = false;\n return s;\n }\n constructor(max, HeapCls) {\n /* c8 ignore start */\n if (!Stack.#constructing) {\n throw new TypeError('instantiate Stack using Stack.create(n)');\n }\n /* c8 ignore stop */\n this.heap = new HeapCls(max);\n this.length = 0;\n }\n push(n) {\n this.heap[this.length++] = n;\n }\n pop() {\n return this.heap[--this.length];\n }\n}\n/**\n * Default export, the thing you're using this module to get.\n *\n * The `K` and `V` types define the key and value types, respectively. The\n * optional `FC` type defines the type of the `context` object passed to\n * `cache.fetch()` and `cache.memo()`.\n *\n * Keys and values **must not** be `null` or `undefined`.\n *\n * All properties from the options object (with the exception of `max`,\n * `maxSize`, `fetchMethod`, `memoMethod`, `dispose` and `disposeAfter`) are\n * added as normal public members. (The listed options are read-only getters.)\n *\n * Changing any of these will alter the defaults for subsequent method calls.\n */\nclass LRUCache {\n // options that cannot be changed without disaster\n #max;\n #maxSize;\n #dispose;\n #disposeAfter;\n #fetchMethod;\n #memoMethod;\n /**\n * {@link LRUCache.OptionsBase.ttl}\n */\n ttl;\n /**\n * {@link LRUCache.OptionsBase.ttlResolution}\n */\n ttlResolution;\n /**\n * {@link LRUCache.OptionsBase.ttlAutopurge}\n */\n ttlAutopurge;\n /**\n * {@link LRUCache.OptionsBase.updateAgeOnGet}\n */\n updateAgeOnGet;\n /**\n * {@link LRUCache.OptionsBase.updateAgeOnHas}\n */\n updateAgeOnHas;\n /**\n * {@link LRUCache.OptionsBase.allowStale}\n */\n allowStale;\n /**\n * {@link LRUCache.OptionsBase.noDisposeOnSet}\n */\n noDisposeOnSet;\n /**\n * {@link LRUCache.OptionsBase.noUpdateTTL}\n */\n noUpdateTTL;\n /**\n * {@link LRUCache.OptionsBase.maxEntrySize}\n */\n maxEntrySize;\n /**\n * {@link LRUCache.OptionsBase.sizeCalculation}\n */\n sizeCalculation;\n /**\n * {@link LRUCache.OptionsBase.noDeleteOnFetchRejection}\n */\n noDeleteOnFetchRejection;\n /**\n * {@link LRUCache.OptionsBase.noDeleteOnStaleGet}\n */\n noDeleteOnStaleGet;\n /**\n * {@link LRUCache.OptionsBase.allowStaleOnFetchAbort}\n */\n allowStaleOnFetchAbort;\n /**\n * {@link LRUCache.OptionsBase.allowStaleOnFetchRejection}\n */\n allowStaleOnFetchRejection;\n /**\n * {@link LRUCache.OptionsBase.ignoreFetchAbort}\n */\n ignoreFetchAbort;\n // computed properties\n #size;\n #calculatedSize;\n #keyMap;\n #keyList;\n #valList;\n #next;\n #prev;\n #head;\n #tail;\n #free;\n #disposed;\n #sizes;\n #starts;\n #ttls;\n #hasDispose;\n #hasFetchMethod;\n #hasDisposeAfter;\n /**\n * Do not call this method unless you need to inspect the\n * inner workings of the cache. If anything returned by this\n * object is modified in any way, strange breakage may occur.\n *\n * These fields are private for a reason!\n *\n * @internal\n */\n static unsafeExposeInternals(c) {\n return {\n // properties\n starts: c.#starts,\n ttls: c.#ttls,\n sizes: c.#sizes,\n keyMap: c.#keyMap,\n keyList: c.#keyList,\n valList: c.#valList,\n next: c.#next,\n prev: c.#prev,\n get head() {\n return c.#head;\n },\n get tail() {\n return c.#tail;\n },\n free: c.#free,\n // methods\n isBackgroundFetch: (p) => c.#isBackgroundFetch(p),\n backgroundFetch: (k, index, options, context) => c.#backgroundFetch(k, index, options, context),\n moveToTail: (index) => c.#moveToTail(index),\n indexes: (options) => c.#indexes(options),\n rindexes: (options) => c.#rindexes(options),\n isStale: (index) => c.#isStale(index),\n };\n }\n // Protected read-only members\n /**\n * {@link LRUCache.OptionsBase.max} (read-only)\n */\n get max() {\n return this.#max;\n }\n /**\n * {@link LRUCache.OptionsBase.maxSize} (read-only)\n */\n get maxSize() {\n return this.#maxSize;\n }\n /**\n * The total computed size of items in the cache (read-only)\n */\n get calculatedSize() {\n return this.#calculatedSize;\n }\n /**\n * The number of items stored in the cache (read-only)\n */\n get size() {\n return this.#size;\n }\n /**\n * {@link LRUCache.OptionsBase.fetchMethod} (read-only)\n */\n get fetchMethod() {\n return this.#fetchMethod;\n }\n get memoMethod() {\n return this.#memoMethod;\n }\n /**\n * {@link LRUCache.OptionsBase.dispose} (read-only)\n */\n get dispose() {\n return this.#dispose;\n }\n /**\n * {@link LRUCache.OptionsBase.disposeAfter} (read-only)\n */\n get disposeAfter() {\n return this.#disposeAfter;\n }\n constructor(options) {\n const { max = 0, ttl, ttlResolution = 1, ttlAutopurge, updateAgeOnGet, updateAgeOnHas, allowStale, dispose, disposeAfter, noDisposeOnSet, noUpdateTTL, maxSize = 0, maxEntrySize = 0, sizeCalculation, fetchMethod, memoMethod, noDeleteOnFetchRejection, noDeleteOnStaleGet, allowStaleOnFetchRejection, allowStaleOnFetchAbort, ignoreFetchAbort, } = options;\n if (max !== 0 && !isPosInt(max)) {\n throw new TypeError('max option must be a nonnegative integer');\n }\n const UintArray = max ? getUintArray(max) : Array;\n if (!UintArray) {\n throw new Error('invalid max value: ' + max);\n }\n this.#max = max;\n this.#maxSize = maxSize;\n this.maxEntrySize = maxEntrySize || this.#maxSize;\n this.sizeCalculation = sizeCalculation;\n if (this.sizeCalculation) {\n if (!this.#maxSize && !this.maxEntrySize) {\n throw new TypeError('cannot set sizeCalculation without setting maxSize or maxEntrySize');\n }\n if (typeof this.sizeCalculation !== 'function') {\n throw new TypeError('sizeCalculation set to non-function');\n }\n }\n if (memoMethod !== undefined &&\n typeof memoMethod !== 'function') {\n throw new TypeError('memoMethod must be a function if defined');\n }\n this.#memoMethod = memoMethod;\n if (fetchMethod !== undefined &&\n typeof fetchMethod !== 'function') {\n throw new TypeError('fetchMethod must be a function if specified');\n }\n this.#fetchMethod = fetchMethod;\n this.#hasFetchMethod = !!fetchMethod;\n this.#keyMap = new Map();\n this.#keyList = new Array(max).fill(undefined);\n this.#valList = new Array(max).fill(undefined);\n this.#next = new UintArray(max);\n this.#prev = new UintArray(max);\n this.#head = 0;\n this.#tail = 0;\n this.#free = Stack.create(max);\n this.#size = 0;\n this.#calculatedSize = 0;\n if (typeof dispose === 'function') {\n this.#dispose = dispose;\n }\n if (typeof disposeAfter === 'function') {\n this.#disposeAfter = disposeAfter;\n this.#disposed = [];\n }\n else {\n this.#disposeAfter = undefined;\n this.#disposed = undefined;\n }\n this.#hasDispose = !!this.#dispose;\n this.#hasDisposeAfter = !!this.#disposeAfter;\n this.noDisposeOnSet = !!noDisposeOnSet;\n this.noUpdateTTL = !!noUpdateTTL;\n this.noDeleteOnFetchRejection = !!noDeleteOnFetchRejection;\n this.allowStaleOnFetchRejection = !!allowStaleOnFetchRejection;\n this.allowStaleOnFetchAbort = !!allowStaleOnFetchAbort;\n this.ignoreFetchAbort = !!ignoreFetchAbort;\n // NB: maxEntrySize is set to maxSize if it's set\n if (this.maxEntrySize !== 0) {\n if (this.#maxSize !== 0) {\n if (!isPosInt(this.#maxSize)) {\n throw new TypeError('maxSize must be a positive integer if specified');\n }\n }\n if (!isPosInt(this.maxEntrySize)) {\n throw new TypeError('maxEntrySize must be a positive integer if specified');\n }\n this.#initializeSizeTracking();\n }\n this.allowStale = !!allowStale;\n this.noDeleteOnStaleGet = !!noDeleteOnStaleGet;\n this.updateAgeOnGet = !!updateAgeOnGet;\n this.updateAgeOnHas = !!updateAgeOnHas;\n this.ttlResolution =\n isPosInt(ttlResolution) || ttlResolution === 0\n ? ttlResolution\n : 1;\n this.ttlAutopurge = !!ttlAutopurge;\n this.ttl = ttl || 0;\n if (this.ttl) {\n if (!isPosInt(this.ttl)) {\n throw new TypeError('ttl must be a positive integer if specified');\n }\n this.#initializeTTLTracking();\n }\n // do not allow completely unbounded caches\n if (this.#max === 0 && this.ttl === 0 && this.#maxSize === 0) {\n throw new TypeError('At least one of max, maxSize, or ttl is required');\n }\n if (!this.ttlAutopurge && !this.#max && !this.#maxSize) {\n const code = 'LRU_CACHE_UNBOUNDED';\n if (shouldWarn(code)) {\n warned.add(code);\n const msg = 'TTL caching without ttlAutopurge, max, or maxSize can ' +\n 'result in unbounded memory consumption.';\n emitWarning(msg, 'UnboundedCacheWarning', code, LRUCache);\n }\n }\n }\n /**\n * Return the number of ms left in the item's TTL. If item is not in cache,\n * returns `0`. Returns `Infinity` if item is in cache without a defined TTL.\n */\n getRemainingTTL(key) {\n return this.#keyMap.has(key) ? Infinity : 0;\n }\n #initializeTTLTracking() {\n const ttls = new ZeroArray(this.#max);\n const starts = new ZeroArray(this.#max);\n this.#ttls = ttls;\n this.#starts = starts;\n this.#setItemTTL = (index, ttl, start = perf.now()) => {\n starts[index] = ttl !== 0 ? start : 0;\n ttls[index] = ttl;\n if (ttl !== 0 && this.ttlAutopurge) {\n const t = setTimeout(() => {\n if (this.#isStale(index)) {\n this.#delete(this.#keyList[index], 'expire');\n }\n }, ttl + 1);\n // unref() not supported on all platforms\n /* c8 ignore start */\n if (t.unref) {\n t.unref();\n }\n /* c8 ignore stop */\n }\n };\n this.#updateItemAge = index => {\n starts[index] = ttls[index] !== 0 ? perf.now() : 0;\n };\n this.#statusTTL = (status, index) => {\n if (ttls[index]) {\n const ttl = ttls[index];\n const start = starts[index];\n /* c8 ignore next */\n if (!ttl || !start)\n return;\n status.ttl = ttl;\n status.start = start;\n status.now = cachedNow || getNow();\n const age = status.now - start;\n status.remainingTTL = ttl - age;\n }\n };\n // debounce calls to perf.now() to 1s so we're not hitting\n // that costly call repeatedly.\n let cachedNow = 0;\n const getNow = () => {\n const n = perf.now();\n if (this.ttlResolution > 0) {\n cachedNow = n;\n const t = setTimeout(() => (cachedNow = 0), this.ttlResolution);\n // not available on all platforms\n /* c8 ignore start */\n if (t.unref) {\n t.unref();\n }\n /* c8 ignore stop */\n }\n return n;\n };\n this.getRemainingTTL = key => {\n const index = this.#keyMap.get(key);\n if (index === undefined) {\n return 0;\n }\n const ttl = ttls[index];\n const start = starts[index];\n if (!ttl || !start) {\n return Infinity;\n }\n const age = (cachedNow || getNow()) - start;\n return ttl - age;\n };\n this.#isStale = index => {\n const s = starts[index];\n const t = ttls[index];\n return !!t && !!s && (cachedNow || getNow()) - s > t;\n };\n }\n // conditionally set private methods related to TTL\n #updateItemAge = () => { };\n #statusTTL = () => { };\n #setItemTTL = () => { };\n /* c8 ignore stop */\n #isStale = () => false;\n #initializeSizeTracking() {\n const sizes = new ZeroArray(this.#max);\n this.#calculatedSize = 0;\n this.#sizes = sizes;\n this.#removeItemSize = index => {\n this.#calculatedSize -= sizes[index];\n sizes[index] = 0;\n };\n this.#requireSize = (k, v, size, sizeCalculation) => {\n // provisionally accept background fetches.\n // actual value size will be checked when they return.\n if (this.#isBackgroundFetch(v)) {\n return 0;\n }\n if (!isPosInt(size)) {\n if (sizeCalculation) {\n if (typeof sizeCalculation !== 'function') {\n throw new TypeError('sizeCalculation must be a function');\n }\n size = sizeCalculation(v, k);\n if (!isPosInt(size)) {\n throw new TypeError('sizeCalculation return invalid (expect positive integer)');\n }\n }\n else {\n throw new TypeError('invalid size value (must be positive integer). ' +\n 'When maxSize or maxEntrySize is used, sizeCalculation ' +\n 'or size must be set.');\n }\n }\n return size;\n };\n this.#addItemSize = (index, size, status) => {\n sizes[index] = size;\n if (this.#maxSize) {\n const maxSize = this.#maxSize - sizes[index];\n while (this.#calculatedSize > maxSize) {\n this.#evict(true);\n }\n }\n this.#calculatedSize += sizes[index];\n if (status) {\n status.entrySize = size;\n status.totalCalculatedSize = this.#calculatedSize;\n }\n };\n }\n #removeItemSize = _i => { };\n #addItemSize = (_i, _s, _st) => { };\n #requireSize = (_k, _v, size, sizeCalculation) => {\n if (size || sizeCalculation) {\n throw new TypeError('cannot set size without setting maxSize or maxEntrySize on cache');\n }\n return 0;\n };\n *#indexes({ allowStale = this.allowStale } = {}) {\n if (this.#size) {\n for (let i = this.#tail; true;) {\n if (!this.#isValidIndex(i)) {\n break;\n }\n if (allowStale || !this.#isStale(i)) {\n yield i;\n }\n if (i === this.#head) {\n break;\n }\n else {\n i = this.#prev[i];\n }\n }\n }\n }\n *#rindexes({ allowStale = this.allowStale } = {}) {\n if (this.#size) {\n for (let i = this.#head; true;) {\n if (!this.#isValidIndex(i)) {\n break;\n }\n if (allowStale || !this.#isStale(i)) {\n yield i;\n }\n if (i === this.#tail) {\n break;\n }\n else {\n i = this.#next[i];\n }\n }\n }\n }\n #isValidIndex(index) {\n return (index !== undefined &&\n this.#keyMap.get(this.#keyList[index]) === index);\n }\n /**\n * Return a generator yielding `[key, value]` pairs,\n * in order from most recently used to least recently used.\n */\n *entries() {\n for (const i of this.#indexes()) {\n if (this.#valList[i] !== undefined &&\n this.#keyList[i] !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])) {\n yield [this.#keyList[i], this.#valList[i]];\n }\n }\n }\n /**\n * Inverse order version of {@link LRUCache.entries}\n *\n * Return a generator yielding `[key, value]` pairs,\n * in order from least recently used to most recently used.\n */\n *rentries() {\n for (const i of this.#rindexes()) {\n if (this.#valList[i] !== undefined &&\n this.#keyList[i] !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])) {\n yield [this.#keyList[i], this.#valList[i]];\n }\n }\n }\n /**\n * Return a generator yielding the keys in the cache,\n * in order from most recently used to least recently used.\n */\n *keys() {\n for (const i of this.#indexes()) {\n const k = this.#keyList[i];\n if (k !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])) {\n yield k;\n }\n }\n }\n /**\n * Inverse order version of {@link LRUCache.keys}\n *\n * Return a generator yielding the keys in the cache,\n * in order from least recently used to most recently used.\n */\n *rkeys() {\n for (const i of this.#rindexes()) {\n const k = this.#keyList[i];\n if (k !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])) {\n yield k;\n }\n }\n }\n /**\n * Return a generator yielding the values in the cache,\n * in order from most recently used to least recently used.\n */\n *values() {\n for (const i of this.#indexes()) {\n const v = this.#valList[i];\n if (v !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])) {\n yield this.#valList[i];\n }\n }\n }\n /**\n * Inverse order version of {@link LRUCache.values}\n *\n * Return a generator yielding the values in the cache,\n * in order from least recently used to most recently used.\n */\n *rvalues() {\n for (const i of this.#rindexes()) {\n const v = this.#valList[i];\n if (v !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])) {\n yield this.#valList[i];\n }\n }\n }\n /**\n * Iterating over the cache itself yields the same results as\n * {@link LRUCache.entries}\n */\n [Symbol.iterator]() {\n return this.entries();\n }\n /**\n * A String value that is used in the creation of the default string\n * description of an object. Called by the built-in method\n * `Object.prototype.toString`.\n */\n [Symbol.toStringTag] = 'LRUCache';\n /**\n * Find a value for which the supplied fn method returns a truthy value,\n * similar to `Array.find()`. fn is called as `fn(value, key, cache)`.\n */\n find(fn, getOptions = {}) {\n for (const i of this.#indexes()) {\n const v = this.#valList[i];\n const value = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v;\n if (value === undefined)\n continue;\n if (fn(value, this.#keyList[i], this)) {\n return this.get(this.#keyList[i], getOptions);\n }\n }\n }\n /**\n * Call the supplied function on each item in the cache, in order from most\n * recently used to least recently used.\n *\n * `fn` is called as `fn(value, key, cache)`.\n *\n * If `thisp` is provided, function will be called in the `this`-context of\n * the provided object, or the cache if no `thisp` object is provided.\n *\n * Does not update age or recenty of use, or iterate over stale values.\n */\n forEach(fn, thisp = this) {\n for (const i of this.#indexes()) {\n const v = this.#valList[i];\n const value = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v;\n if (value === undefined)\n continue;\n fn.call(thisp, value, this.#keyList[i], this);\n }\n }\n /**\n * The same as {@link LRUCache.forEach} but items are iterated over in\n * reverse order. (ie, less recently used items are iterated over first.)\n */\n rforEach(fn, thisp = this) {\n for (const i of this.#rindexes()) {\n const v = this.#valList[i];\n const value = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v;\n if (value === undefined)\n continue;\n fn.call(thisp, value, this.#keyList[i], this);\n }\n }\n /**\n * Delete any stale entries. Returns true if anything was removed,\n * false otherwise.\n */\n purgeStale() {\n let deleted = false;\n for (const i of this.#rindexes({ allowStale: true })) {\n if (this.#isStale(i)) {\n this.#delete(this.#keyList[i], 'expire');\n deleted = true;\n }\n }\n return deleted;\n }\n /**\n * Get the extended info about a given entry, to get its value, size, and\n * TTL info simultaneously. Returns `undefined` if the key is not present.\n *\n * Unlike {@link LRUCache#dump}, which is designed to be portable and survive\n * serialization, the `start` value is always the current timestamp, and the\n * `ttl` is a calculated remaining time to live (negative if expired).\n *\n * Always returns stale values, if their info is found in the cache, so be\n * sure to check for expirations (ie, a negative {@link LRUCache.Entry#ttl})\n * if relevant.\n */\n info(key) {\n const i = this.#keyMap.get(key);\n if (i === undefined)\n return undefined;\n const v = this.#valList[i];\n const value = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v;\n if (value === undefined)\n return undefined;\n const entry = { value };\n if (this.#ttls && this.#starts) {\n const ttl = this.#ttls[i];\n const start = this.#starts[i];\n if (ttl && start) {\n const remain = ttl - (perf.now() - start);\n entry.ttl = remain;\n entry.start = Date.now();\n }\n }\n if (this.#sizes) {\n entry.size = this.#sizes[i];\n }\n return entry;\n }\n /**\n * Return an array of [key, {@link LRUCache.Entry}] tuples which can be\n * passed to {@link LRLUCache#load}.\n *\n * The `start` fields are calculated relative to a portable `Date.now()`\n * timestamp, even if `performance.now()` is available.\n *\n * Stale entries are always included in the `dump`, even if\n * {@link LRUCache.OptionsBase.allowStale} is false.\n *\n * Note: this returns an actual array, not a generator, so it can be more\n * easily passed around.\n */\n dump() {\n const arr = [];\n for (const i of this.#indexes({ allowStale: true })) {\n const key = this.#keyList[i];\n const v = this.#valList[i];\n const value = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v;\n if (value === undefined || key === undefined)\n continue;\n const entry = { value };\n if (this.#ttls && this.#starts) {\n entry.ttl = this.#ttls[i];\n // always dump the start relative to a portable timestamp\n // it's ok for this to be a bit slow, it's a rare operation.\n const age = perf.now() - this.#starts[i];\n entry.start = Math.floor(Date.now() - age);\n }\n if (this.#sizes) {\n entry.size = this.#sizes[i];\n }\n arr.unshift([key, entry]);\n }\n return arr;\n }\n /**\n * Reset the cache and load in the items in entries in the order listed.\n *\n * The shape of the resulting cache may be different if the same options are\n * not used in both caches.\n *\n * The `start` fields are assumed to be calculated relative to a portable\n * `Date.now()` timestamp, even if `performance.now()` is available.\n */\n load(arr) {\n this.clear();\n for (const [key, entry] of arr) {\n if (entry.start) {\n // entry.start is a portable timestamp, but we may be using\n // node's performance.now(), so calculate the offset, so that\n // we get the intended remaining TTL, no matter how long it's\n // been on ice.\n //\n // it's ok for this to be a bit slow, it's a rare operation.\n const age = Date.now() - entry.start;\n entry.start = perf.now() - age;\n }\n this.set(key, entry.value, entry);\n }\n }\n /**\n * Add a value to the cache.\n *\n * Note: if `undefined` is specified as a value, this is an alias for\n * {@link LRUCache#delete}\n *\n * Fields on the {@link LRUCache.SetOptions} options param will override\n * their corresponding values in the constructor options for the scope\n * of this single `set()` operation.\n *\n * If `start` is provided, then that will set the effective start\n * time for the TTL calculation. Note that this must be a previous\n * value of `performance.now()` if supported, or a previous value of\n * `Date.now()` if not.\n *\n * Options object may also include `size`, which will prevent\n * calling the `sizeCalculation` function and just use the specified\n * number if it is a positive integer, and `noDisposeOnSet` which\n * will prevent calling a `dispose` function in the case of\n * overwrites.\n *\n * If the `size` (or return value of `sizeCalculation`) for a given\n * entry is greater than `maxEntrySize`, then the item will not be\n * added to the cache.\n *\n * Will update the recency of the entry.\n *\n * If the value is `undefined`, then this is an alias for\n * `cache.delete(key)`. `undefined` is never stored in the cache.\n */\n set(k, v, setOptions = {}) {\n if (v === undefined) {\n this.delete(k);\n return this;\n }\n const { ttl = this.ttl, start, noDisposeOnSet = this.noDisposeOnSet, sizeCalculation = this.sizeCalculation, status, } = setOptions;\n let { noUpdateTTL = this.noUpdateTTL } = setOptions;\n const size = this.#requireSize(k, v, setOptions.size || 0, sizeCalculation);\n // if the item doesn't fit, don't do anything\n // NB: maxEntrySize set to maxSize by default\n if (this.maxEntrySize && size > this.maxEntrySize) {\n if (status) {\n status.set = 'miss';\n status.maxEntrySizeExceeded = true;\n }\n // have to delete, in case something is there already.\n this.#delete(k, 'set');\n return this;\n }\n let index = this.#size === 0 ? undefined : this.#keyMap.get(k);\n if (index === undefined) {\n // addition\n index = (this.#size === 0\n ? this.#tail\n : this.#free.length !== 0\n ? this.#free.pop()\n : this.#size === this.#max\n ? this.#evict(false)\n : this.#size);\n this.#keyList[index] = k;\n this.#valList[index] = v;\n this.#keyMap.set(k, index);\n this.#next[this.#tail] = index;\n this.#prev[index] = this.#tail;\n this.#tail = index;\n this.#size++;\n this.#addItemSize(index, size, status);\n if (status)\n status.set = 'add';\n noUpdateTTL = false;\n }\n else {\n // update\n this.#moveToTail(index);\n const oldVal = this.#valList[index];\n if (v !== oldVal) {\n if (this.#hasFetchMethod && this.#isBackgroundFetch(oldVal)) {\n oldVal.__abortController.abort(new Error('replaced'));\n const { __staleWhileFetching: s } = oldVal;\n if (s !== undefined && !noDisposeOnSet) {\n if (this.#hasDispose) {\n this.#dispose?.(s, k, 'set');\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([s, k, 'set']);\n }\n }\n }\n else if (!noDisposeOnSet) {\n if (this.#hasDispose) {\n this.#dispose?.(oldVal, k, 'set');\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([oldVal, k, 'set']);\n }\n }\n this.#removeItemSize(index);\n this.#addItemSize(index, size, status);\n this.#valList[index] = v;\n if (status) {\n status.set = 'replace';\n const oldValue = oldVal && this.#isBackgroundFetch(oldVal)\n ? oldVal.__staleWhileFetching\n : oldVal;\n if (oldValue !== undefined)\n status.oldValue = oldValue;\n }\n }\n else if (status) {\n status.set = 'update';\n }\n }\n if (ttl !== 0 && !this.#ttls) {\n this.#initializeTTLTracking();\n }\n if (this.#ttls) {\n if (!noUpdateTTL) {\n this.#setItemTTL(index, ttl, start);\n }\n if (status)\n this.#statusTTL(status, index);\n }\n if (!noDisposeOnSet && this.#hasDisposeAfter && this.#disposed) {\n const dt = this.#disposed;\n let task;\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task);\n }\n }\n return this;\n }\n /**\n * Evict the least recently used item, returning its value or\n * `undefined` if cache is empty.\n */\n pop() {\n try {\n while (this.#size) {\n const val = this.#valList[this.#head];\n this.#evict(true);\n if (this.#isBackgroundFetch(val)) {\n if (val.__staleWhileFetching) {\n return val.__staleWhileFetching;\n }\n }\n else if (val !== undefined) {\n return val;\n }\n }\n }\n finally {\n if (this.#hasDisposeAfter && this.#disposed) {\n const dt = this.#disposed;\n let task;\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task);\n }\n }\n }\n }\n #evict(free) {\n const head = this.#head;\n const k = this.#keyList[head];\n const v = this.#valList[head];\n if (this.#hasFetchMethod && this.#isBackgroundFetch(v)) {\n v.__abortController.abort(new Error('evicted'));\n }\n else if (this.#hasDispose || this.#hasDisposeAfter) {\n if (this.#hasDispose) {\n this.#dispose?.(v, k, 'evict');\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([v, k, 'evict']);\n }\n }\n this.#removeItemSize(head);\n // if we aren't about to use the index, then null these out\n if (free) {\n this.#keyList[head] = undefined;\n this.#valList[head] = undefined;\n this.#free.push(head);\n }\n if (this.#size === 1) {\n this.#head = this.#tail = 0;\n this.#free.length = 0;\n }\n else {\n this.#head = this.#next[head];\n }\n this.#keyMap.delete(k);\n this.#size--;\n return head;\n }\n /**\n * Check if a key is in the cache, without updating the recency of use.\n * Will return false if the item is stale, even though it is technically\n * in the cache.\n *\n * Check if a key is in the cache, without updating the recency of\n * use. Age is updated if {@link LRUCache.OptionsBase.updateAgeOnHas} is set\n * to `true` in either the options or the constructor.\n *\n * Will return `false` if the item is stale, even though it is technically in\n * the cache. The difference can be determined (if it matters) by using a\n * `status` argument, and inspecting the `has` field.\n *\n * Will not update item age unless\n * {@link LRUCache.OptionsBase.updateAgeOnHas} is set.\n */\n has(k, hasOptions = {}) {\n const { updateAgeOnHas = this.updateAgeOnHas, status } = hasOptions;\n const index = this.#keyMap.get(k);\n if (index !== undefined) {\n const v = this.#valList[index];\n if (this.#isBackgroundFetch(v) &&\n v.__staleWhileFetching === undefined) {\n return false;\n }\n if (!this.#isStale(index)) {\n if (updateAgeOnHas) {\n this.#updateItemAge(index);\n }\n if (status) {\n status.has = 'hit';\n this.#statusTTL(status, index);\n }\n return true;\n }\n else if (status) {\n status.has = 'stale';\n this.#statusTTL(status, index);\n }\n }\n else if (status) {\n status.has = 'miss';\n }\n return false;\n }\n /**\n * Like {@link LRUCache#get} but doesn't update recency or delete stale\n * items.\n *\n * Returns `undefined` if the item is stale, unless\n * {@link LRUCache.OptionsBase.allowStale} is set.\n */\n peek(k, peekOptions = {}) {\n const { allowStale = this.allowStale } = peekOptions;\n const index = this.#keyMap.get(k);\n if (index === undefined ||\n (!allowStale && this.#isStale(index))) {\n return;\n }\n const v = this.#valList[index];\n // either stale and allowed, or forcing a refresh of non-stale value\n return this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v;\n }\n #backgroundFetch(k, index, options, context) {\n const v = index === undefined ? undefined : this.#valList[index];\n if (this.#isBackgroundFetch(v)) {\n return v;\n }\n const ac = new AC();\n const { signal } = options;\n // when/if our AC signals, then stop listening to theirs.\n signal?.addEventListener('abort', () => ac.abort(signal.reason), {\n signal: ac.signal,\n });\n const fetchOpts = {\n signal: ac.signal,\n options,\n context,\n };\n const cb = (v, updateCache = false) => {\n const { aborted } = ac.signal;\n const ignoreAbort = options.ignoreFetchAbort && v !== undefined;\n if (options.status) {\n if (aborted && !updateCache) {\n options.status.fetchAborted = true;\n options.status.fetchError = ac.signal.reason;\n if (ignoreAbort)\n options.status.fetchAbortIgnored = true;\n }\n else {\n options.status.fetchResolved = true;\n }\n }\n if (aborted && !ignoreAbort && !updateCache) {\n return fetchFail(ac.signal.reason);\n }\n // either we didn't abort, and are still here, or we did, and ignored\n const bf = p;\n if (this.#valList[index] === p) {\n if (v === undefined) {\n if (bf.__staleWhileFetching) {\n this.#valList[index] = bf.__staleWhileFetching;\n }\n else {\n this.#delete(k, 'fetch');\n }\n }\n else {\n if (options.status)\n options.status.fetchUpdated = true;\n this.set(k, v, fetchOpts.options);\n }\n }\n return v;\n };\n const eb = (er) => {\n if (options.status) {\n options.status.fetchRejected = true;\n options.status.fetchError = er;\n }\n return fetchFail(er);\n };\n const fetchFail = (er) => {\n const { aborted } = ac.signal;\n const allowStaleAborted = aborted && options.allowStaleOnFetchAbort;\n const allowStale = allowStaleAborted || options.allowStaleOnFetchRejection;\n const noDelete = allowStale || options.noDeleteOnFetchRejection;\n const bf = p;\n if (this.#valList[index] === p) {\n // if we allow stale on fetch rejections, then we need to ensure that\n // the stale value is not removed from the cache when the fetch fails.\n const del = !noDelete || bf.__staleWhileFetching === undefined;\n if (del) {\n this.#delete(k, 'fetch');\n }\n else if (!allowStaleAborted) {\n // still replace the *promise* with the stale value,\n // since we are done with the promise at this point.\n // leave it untouched if we're still waiting for an\n // aborted background fetch that hasn't yet returned.\n this.#valList[index] = bf.__staleWhileFetching;\n }\n }\n if (allowStale) {\n if (options.status && bf.__staleWhileFetching !== undefined) {\n options.status.returnedStale = true;\n }\n return bf.__staleWhileFetching;\n }\n else if (bf.__returned === bf) {\n throw er;\n }\n };\n const pcall = (res, rej) => {\n const fmp = this.#fetchMethod?.(k, v, fetchOpts);\n if (fmp && fmp instanceof Promise) {\n fmp.then(v => res(v === undefined ? undefined : v), rej);\n }\n // ignored, we go until we finish, regardless.\n // defer check until we are actually aborting,\n // so fetchMethod can override.\n ac.signal.addEventListener('abort', () => {\n if (!options.ignoreFetchAbort ||\n options.allowStaleOnFetchAbort) {\n res(undefined);\n // when it eventually resolves, update the cache.\n if (options.allowStaleOnFetchAbort) {\n res = v => cb(v, true);\n }\n }\n });\n };\n if (options.status)\n options.status.fetchDispatched = true;\n const p = new Promise(pcall).then(cb, eb);\n const bf = Object.assign(p, {\n __abortController: ac,\n __staleWhileFetching: v,\n __returned: undefined,\n });\n if (index === undefined) {\n // internal, don't expose status.\n this.set(k, bf, { ...fetchOpts.options, status: undefined });\n index = this.#keyMap.get(k);\n }\n else {\n this.#valList[index] = bf;\n }\n return bf;\n }\n #isBackgroundFetch(p) {\n if (!this.#hasFetchMethod)\n return false;\n const b = p;\n return (!!b &&\n b instanceof Promise &&\n b.hasOwnProperty('__staleWhileFetching') &&\n b.__abortController instanceof AC);\n }\n async fetch(k, fetchOptions = {}) {\n const { \n // get options\n allowStale = this.allowStale, updateAgeOnGet = this.updateAgeOnGet, noDeleteOnStaleGet = this.noDeleteOnStaleGet, \n // set options\n ttl = this.ttl, noDisposeOnSet = this.noDisposeOnSet, size = 0, sizeCalculation = this.sizeCalculation, noUpdateTTL = this.noUpdateTTL, \n // fetch exclusive options\n noDeleteOnFetchRejection = this.noDeleteOnFetchRejection, allowStaleOnFetchRejection = this.allowStaleOnFetchRejection, ignoreFetchAbort = this.ignoreFetchAbort, allowStaleOnFetchAbort = this.allowStaleOnFetchAbort, context, forceRefresh = false, status, signal, } = fetchOptions;\n if (!this.#hasFetchMethod) {\n if (status)\n status.fetch = 'get';\n return this.get(k, {\n allowStale,\n updateAgeOnGet,\n noDeleteOnStaleGet,\n status,\n });\n }\n const options = {\n allowStale,\n updateAgeOnGet,\n noDeleteOnStaleGet,\n ttl,\n noDisposeOnSet,\n size,\n sizeCalculation,\n noUpdateTTL,\n noDeleteOnFetchRejection,\n allowStaleOnFetchRejection,\n allowStaleOnFetchAbort,\n ignoreFetchAbort,\n status,\n signal,\n };\n let index = this.#keyMap.get(k);\n if (index === undefined) {\n if (status)\n status.fetch = 'miss';\n const p = this.#backgroundFetch(k, index, options, context);\n return (p.__returned = p);\n }\n else {\n // in cache, maybe already fetching\n const v = this.#valList[index];\n if (this.#isBackgroundFetch(v)) {\n const stale = allowStale && v.__staleWhileFetching !== undefined;\n if (status) {\n status.fetch = 'inflight';\n if (stale)\n status.returnedStale = true;\n }\n return stale ? v.__staleWhileFetching : (v.__returned = v);\n }\n // if we force a refresh, that means do NOT serve the cached value,\n // unless we are already in the process of refreshing the cache.\n const isStale = this.#isStale(index);\n if (!forceRefresh && !isStale) {\n if (status)\n status.fetch = 'hit';\n this.#moveToTail(index);\n if (updateAgeOnGet) {\n this.#updateItemAge(index);\n }\n if (status)\n this.#statusTTL(status, index);\n return v;\n }\n // ok, it is stale or a forced refresh, and not already fetching.\n // refresh the cache.\n const p = this.#backgroundFetch(k, index, options, context);\n const hasStale = p.__staleWhileFetching !== undefined;\n const staleVal = hasStale && allowStale;\n if (status) {\n status.fetch = isStale ? 'stale' : 'refresh';\n if (staleVal && isStale)\n status.returnedStale = true;\n }\n return staleVal ? p.__staleWhileFetching : (p.__returned = p);\n }\n }\n async forceFetch(k, fetchOptions = {}) {\n const v = await this.fetch(k, fetchOptions);\n if (v === undefined)\n throw new Error('fetch() returned undefined');\n return v;\n }\n memo(k, memoOptions = {}) {\n const memoMethod = this.#memoMethod;\n if (!memoMethod) {\n throw new Error('no memoMethod provided to constructor');\n }\n const { context, forceRefresh, ...options } = memoOptions;\n const v = this.get(k, options);\n if (!forceRefresh && v !== undefined)\n return v;\n const vv = memoMethod(k, v, {\n options,\n context,\n });\n this.set(k, vv, options);\n return vv;\n }\n /**\n * Return a value from the cache. Will update the recency of the cache\n * entry found.\n *\n * If the key is not found, get() will return `undefined`.\n */\n get(k, getOptions = {}) {\n const { allowStale = this.allowStale, updateAgeOnGet = this.updateAgeOnGet, noDeleteOnStaleGet = this.noDeleteOnStaleGet, status, } = getOptions;\n const index = this.#keyMap.get(k);\n if (index !== undefined) {\n const value = this.#valList[index];\n const fetching = this.#isBackgroundFetch(value);\n if (status)\n this.#statusTTL(status, index);\n if (this.#isStale(index)) {\n if (status)\n status.get = 'stale';\n // delete only if not an in-flight background fetch\n if (!fetching) {\n if (!noDeleteOnStaleGet) {\n this.#delete(k, 'expire');\n }\n if (status && allowStale)\n status.returnedStale = true;\n return allowStale ? value : undefined;\n }\n else {\n if (status &&\n allowStale &&\n value.__staleWhileFetching !== undefined) {\n status.returnedStale = true;\n }\n return allowStale ? value.__staleWhileFetching : undefined;\n }\n }\n else {\n if (status)\n status.get = 'hit';\n // if we're currently fetching it, we don't actually have it yet\n // it's not stale, which means this isn't a staleWhileRefetching.\n // If it's not stale, and fetching, AND has a __staleWhileFetching\n // value, then that means the user fetched with {forceRefresh:true},\n // so it's safe to return that value.\n if (fetching) {\n return value.__staleWhileFetching;\n }\n this.#moveToTail(index);\n if (updateAgeOnGet) {\n this.#updateItemAge(index);\n }\n return value;\n }\n }\n else if (status) {\n status.get = 'miss';\n }\n }\n #connect(p, n) {\n this.#prev[n] = p;\n this.#next[p] = n;\n }\n #moveToTail(index) {\n // if tail already, nothing to do\n // if head, move head to next[index]\n // else\n // move next[prev[index]] to next[index] (head has no prev)\n // move prev[next[index]] to prev[index]\n // prev[index] = tail\n // next[tail] = index\n // tail = index\n if (index !== this.#tail) {\n if (index === this.#head) {\n this.#head = this.#next[index];\n }\n else {\n this.#connect(this.#prev[index], this.#next[index]);\n }\n this.#connect(this.#tail, index);\n this.#tail = index;\n }\n }\n /**\n * Deletes a key out of the cache.\n *\n * Returns true if the key was deleted, false otherwise.\n */\n delete(k) {\n return this.#delete(k, 'delete');\n }\n #delete(k, reason) {\n let deleted = false;\n if (this.#size !== 0) {\n const index = this.#keyMap.get(k);\n if (index !== undefined) {\n deleted = true;\n if (this.#size === 1) {\n this.#clear(reason);\n }\n else {\n this.#removeItemSize(index);\n const v = this.#valList[index];\n if (this.#isBackgroundFetch(v)) {\n v.__abortController.abort(new Error('deleted'));\n }\n else if (this.#hasDispose || this.#hasDisposeAfter) {\n if (this.#hasDispose) {\n this.#dispose?.(v, k, reason);\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([v, k, reason]);\n }\n }\n this.#keyMap.delete(k);\n this.#keyList[index] = undefined;\n this.#valList[index] = undefined;\n if (index === this.#tail) {\n this.#tail = this.#prev[index];\n }\n else if (index === this.#head) {\n this.#head = this.#next[index];\n }\n else {\n const pi = this.#prev[index];\n this.#next[pi] = this.#next[index];\n const ni = this.#next[index];\n this.#prev[ni] = this.#prev[index];\n }\n this.#size--;\n this.#free.push(index);\n }\n }\n }\n if (this.#hasDisposeAfter && this.#disposed?.length) {\n const dt = this.#disposed;\n let task;\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task);\n }\n }\n return deleted;\n }\n /**\n * Clear the cache entirely, throwing away all values.\n */\n clear() {\n return this.#clear('delete');\n }\n #clear(reason) {\n for (const index of this.#rindexes({ allowStale: true })) {\n const v = this.#valList[index];\n if (this.#isBackgroundFetch(v)) {\n v.__abortController.abort(new Error('deleted'));\n }\n else {\n const k = this.#keyList[index];\n if (this.#hasDispose) {\n this.#dispose?.(v, k, reason);\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([v, k, reason]);\n }\n }\n }\n this.#keyMap.clear();\n this.#valList.fill(undefined);\n this.#keyList.fill(undefined);\n if (this.#ttls && this.#starts) {\n this.#ttls.fill(0);\n this.#starts.fill(0);\n }\n if (this.#sizes) {\n this.#sizes.fill(0);\n }\n this.#head = 0;\n this.#tail = 0;\n this.#free.length = 0;\n this.#calculatedSize = 0;\n this.#size = 0;\n if (this.#hasDisposeAfter && this.#disposed) {\n const dt = this.#disposed;\n let task;\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task);\n }\n }\n }\n}\nexports.LRUCache = LRUCache;\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Minipass = exports.isWritable = exports.isReadable = exports.isStream = void 0;\nconst proc = typeof process === 'object' && process\n ? process\n : {\n stdout: null,\n stderr: null,\n };\nconst node_events_1 = require(\"node:events\");\nconst node_stream_1 = __importDefault(require(\"node:stream\"));\nconst node_string_decoder_1 = require(\"node:string_decoder\");\n/**\n * Return true if the argument is a Minipass stream, Node stream, or something\n * else that Minipass can interact with.\n */\nconst isStream = (s) => !!s &&\n typeof s === 'object' &&\n (s instanceof Minipass ||\n s instanceof node_stream_1.default ||\n (0, exports.isReadable)(s) ||\n (0, exports.isWritable)(s))\n/**\n * Return true if the argument is a valid {@link Minipass.Readable}\n */\n;\nexports.isStream = isStream;\n/**\n * Return true if the argument is a valid {@link Minipass.Readable}\n */\nconst isReadable = (s) => !!s &&\n typeof s === 'object' &&\n s instanceof node_events_1.EventEmitter &&\n typeof s.pipe === 'function' &&\n // node core Writable streams have a pipe() method, but it throws\n s.pipe !== node_stream_1.default.Writable.prototype.pipe\n/**\n * Return true if the argument is a valid {@link Minipass.Writable}\n */\n;\nexports.isReadable = isReadable;\n/**\n * Return true if the argument is a valid {@link Minipass.Writable}\n */\nconst isWritable = (s) => !!s &&\n typeof s === 'object' &&\n s instanceof node_events_1.EventEmitter &&\n typeof s.write === 'function' &&\n typeof s.end === 'function';\nexports.isWritable = isWritable;\nconst EOF = Symbol('EOF');\nconst MAYBE_EMIT_END = Symbol('maybeEmitEnd');\nconst EMITTED_END = Symbol('emittedEnd');\nconst EMITTING_END = Symbol('emittingEnd');\nconst EMITTED_ERROR = Symbol('emittedError');\nconst CLOSED = Symbol('closed');\nconst READ = Symbol('read');\nconst FLUSH = Symbol('flush');\nconst FLUSHCHUNK = Symbol('flushChunk');\nconst ENCODING = Symbol('encoding');\nconst DECODER = Symbol('decoder');\nconst FLOWING = Symbol('flowing');\nconst PAUSED = Symbol('paused');\nconst RESUME = Symbol('resume');\nconst BUFFER = Symbol('buffer');\nconst PIPES = Symbol('pipes');\nconst BUFFERLENGTH = Symbol('bufferLength');\nconst BUFFERPUSH = Symbol('bufferPush');\nconst BUFFERSHIFT = Symbol('bufferShift');\nconst OBJECTMODE = Symbol('objectMode');\n// internal event when stream is destroyed\nconst DESTROYED = Symbol('destroyed');\n// internal event when stream has an error\nconst ERROR = Symbol('error');\nconst EMITDATA = Symbol('emitData');\nconst EMITEND = Symbol('emitEnd');\nconst EMITEND2 = Symbol('emitEnd2');\nconst ASYNC = Symbol('async');\nconst ABORT = Symbol('abort');\nconst ABORTED = Symbol('aborted');\nconst SIGNAL = Symbol('signal');\nconst DATALISTENERS = Symbol('dataListeners');\nconst DISCARDED = Symbol('discarded');\nconst defer = (fn) => Promise.resolve().then(fn);\nconst nodefer = (fn) => fn();\nconst isEndish = (ev) => ev === 'end' || ev === 'finish' || ev === 'prefinish';\nconst isArrayBufferLike = (b) => b instanceof ArrayBuffer ||\n (!!b &&\n typeof b === 'object' &&\n b.constructor &&\n b.constructor.name === 'ArrayBuffer' &&\n b.byteLength >= 0);\nconst isArrayBufferView = (b) => !Buffer.isBuffer(b) && ArrayBuffer.isView(b);\n/**\n * Internal class representing a pipe to a destination stream.\n *\n * @internal\n */\nclass Pipe {\n src;\n dest;\n opts;\n ondrain;\n constructor(src, dest, opts) {\n this.src = src;\n this.dest = dest;\n this.opts = opts;\n this.ondrain = () => src[RESUME]();\n this.dest.on('drain', this.ondrain);\n }\n unpipe() {\n this.dest.removeListener('drain', this.ondrain);\n }\n // only here for the prototype\n /* c8 ignore start */\n proxyErrors(_er) { }\n /* c8 ignore stop */\n end() {\n this.unpipe();\n if (this.opts.end)\n this.dest.end();\n }\n}\n/**\n * Internal class representing a pipe to a destination stream where\n * errors are proxied.\n *\n * @internal\n */\nclass PipeProxyErrors extends Pipe {\n unpipe() {\n this.src.removeListener('error', this.proxyErrors);\n super.unpipe();\n }\n constructor(src, dest, opts) {\n super(src, dest, opts);\n this.proxyErrors = (er) => this.dest.emit('error', er);\n src.on('error', this.proxyErrors);\n }\n}\nconst isObjectModeOptions = (o) => !!o.objectMode;\nconst isEncodingOptions = (o) => !o.objectMode && !!o.encoding && o.encoding !== 'buffer';\n/**\n * Main export, the Minipass class\n *\n * `RType` is the type of data emitted, defaults to Buffer\n *\n * `WType` is the type of data to be written, if RType is buffer or string,\n * then any {@link Minipass.ContiguousData} is allowed.\n *\n * `Events` is the set of event handler signatures that this object\n * will emit, see {@link Minipass.Events}\n */\nclass Minipass extends node_events_1.EventEmitter {\n [FLOWING] = false;\n [PAUSED] = false;\n [PIPES] = [];\n [BUFFER] = [];\n [OBJECTMODE];\n [ENCODING];\n [ASYNC];\n [DECODER];\n [EOF] = false;\n [EMITTED_END] = false;\n [EMITTING_END] = false;\n [CLOSED] = false;\n [EMITTED_ERROR] = null;\n [BUFFERLENGTH] = 0;\n [DESTROYED] = false;\n [SIGNAL];\n [ABORTED] = false;\n [DATALISTENERS] = 0;\n [DISCARDED] = false;\n /**\n * true if the stream can be written\n */\n writable = true;\n /**\n * true if the stream can be read\n */\n readable = true;\n /**\n * If `RType` is Buffer, then options do not need to be provided.\n * Otherwise, an options object must be provided to specify either\n * {@link Minipass.SharedOptions.objectMode} or\n * {@link Minipass.SharedOptions.encoding}, as appropriate.\n */\n constructor(...args) {\n const options = (args[0] ||\n {});\n super();\n if (options.objectMode && typeof options.encoding === 'string') {\n throw new TypeError('Encoding and objectMode may not be used together');\n }\n if (isObjectModeOptions(options)) {\n this[OBJECTMODE] = true;\n this[ENCODING] = null;\n }\n else if (isEncodingOptions(options)) {\n this[ENCODING] = options.encoding;\n this[OBJECTMODE] = false;\n }\n else {\n this[OBJECTMODE] = false;\n this[ENCODING] = null;\n }\n this[ASYNC] = !!options.async;\n this[DECODER] = this[ENCODING]\n ? new node_string_decoder_1.StringDecoder(this[ENCODING])\n : null;\n //@ts-ignore - private option for debugging and testing\n if (options && options.debugExposeBuffer === true) {\n Object.defineProperty(this, 'buffer', { get: () => this[BUFFER] });\n }\n //@ts-ignore - private option for debugging and testing\n if (options && options.debugExposePipes === true) {\n Object.defineProperty(this, 'pipes', { get: () => this[PIPES] });\n }\n const { signal } = options;\n if (signal) {\n this[SIGNAL] = signal;\n if (signal.aborted) {\n this[ABORT]();\n }\n else {\n signal.addEventListener('abort', () => this[ABORT]());\n }\n }\n }\n /**\n * The amount of data stored in the buffer waiting to be read.\n *\n * For Buffer strings, this will be the total byte length.\n * For string encoding streams, this will be the string character length,\n * according to JavaScript's `string.length` logic.\n * For objectMode streams, this is a count of the items waiting to be\n * emitted.\n */\n get bufferLength() {\n return this[BUFFERLENGTH];\n }\n /**\n * The `BufferEncoding` currently in use, or `null`\n */\n get encoding() {\n return this[ENCODING];\n }\n /**\n * @deprecated - This is a read only property\n */\n set encoding(_enc) {\n throw new Error('Encoding must be set at instantiation time');\n }\n /**\n * @deprecated - Encoding may only be set at instantiation time\n */\n setEncoding(_enc) {\n throw new Error('Encoding must be set at instantiation time');\n }\n /**\n * True if this is an objectMode stream\n */\n get objectMode() {\n return this[OBJECTMODE];\n }\n /**\n * @deprecated - This is a read-only property\n */\n set objectMode(_om) {\n throw new Error('objectMode must be set at instantiation time');\n }\n /**\n * true if this is an async stream\n */\n get ['async']() {\n return this[ASYNC];\n }\n /**\n * Set to true to make this stream async.\n *\n * Once set, it cannot be unset, as this would potentially cause incorrect\n * behavior. Ie, a sync stream can be made async, but an async stream\n * cannot be safely made sync.\n */\n set ['async'](a) {\n this[ASYNC] = this[ASYNC] || !!a;\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 * True if the stream has been aborted.\n */\n get aborted() {\n return this[ABORTED];\n }\n /**\n * No-op setter. Stream aborted status is set via the AbortSignal provided\n * in the constructor options.\n */\n set aborted(_) { }\n write(chunk, encoding, cb) {\n if (this[ABORTED])\n return false;\n if (this[EOF])\n throw new Error('write after end');\n if (this[DESTROYED]) {\n this.emit('error', Object.assign(new Error('Cannot call write after a stream was destroyed'), { code: 'ERR_STREAM_DESTROYED' }));\n return true;\n }\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = 'utf8';\n }\n if (!encoding)\n encoding = 'utf8';\n const fn = this[ASYNC] ? defer : nodefer;\n // convert array buffers and typed array views into buffers\n // at some point in the future, we may want to do the opposite!\n // leave strings and buffers as-is\n // anything is only allowed if in object mode, so throw\n if (!this[OBJECTMODE] && !Buffer.isBuffer(chunk)) {\n if (isArrayBufferView(chunk)) {\n //@ts-ignore - sinful unsafe type changing\n chunk = Buffer.from(chunk.buffer, chunk.byteOffset, chunk.byteLength);\n }\n else if (isArrayBufferLike(chunk)) {\n //@ts-ignore - sinful unsafe type changing\n chunk = Buffer.from(chunk);\n }\n else if (typeof chunk !== 'string') {\n throw new Error('Non-contiguous data written to non-objectMode stream');\n }\n }\n // handle object mode up front, since it's simpler\n // this yields better performance, fewer checks later.\n if (this[OBJECTMODE]) {\n // maybe impossible?\n /* c8 ignore start */\n if (this[FLOWING] && this[BUFFERLENGTH] !== 0)\n this[FLUSH](true);\n /* c8 ignore stop */\n if (this[FLOWING])\n this.emit('data', chunk);\n else\n this[BUFFERPUSH](chunk);\n if (this[BUFFERLENGTH] !== 0)\n this.emit('readable');\n if (cb)\n fn(cb);\n return this[FLOWING];\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 // 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 //@ts-ignore - sinful unsafe type change\n chunk = Buffer.from(chunk, encoding);\n }\n if (Buffer.isBuffer(chunk) && this[ENCODING]) {\n //@ts-ignore - sinful unsafe type change\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 if (this[FLOWING])\n this.emit('data', chunk);\n else\n this[BUFFERPUSH](chunk);\n if (this[BUFFERLENGTH] !== 0)\n this.emit('readable');\n if (cb)\n fn(cb);\n return this[FLOWING];\n }\n /**\n * Low-level explicit read method.\n *\n * In objectMode, the argument is ignored, and one item is returned if\n * available.\n *\n * `n` is the number of bytes (or in the case of encoding streams,\n * characters) to consume. If `n` is not provided, then the entire buffer\n * is returned, or `null` is returned if no data is available.\n *\n * If `n` is greater that the amount of data in the internal buffer,\n * then `null` is returned.\n */\n read(n) {\n if (this[DESTROYED])\n return null;\n this[DISCARDED] = false;\n if (this[BUFFERLENGTH] === 0 ||\n n === 0 ||\n (n && n > this[BUFFERLENGTH])) {\n this[MAYBE_EMIT_END]();\n return null;\n }\n if (this[OBJECTMODE])\n n = null;\n if (this[BUFFER].length > 1 && !this[OBJECTMODE]) {\n // not object mode, so if we have an encoding, then RType is string\n // otherwise, must be Buffer\n this[BUFFER] = [\n (this[ENCODING]\n ? this[BUFFER].join('')\n : Buffer.concat(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 [READ](n, chunk) {\n if (this[OBJECTMODE])\n this[BUFFERSHIFT]();\n else {\n const c = chunk;\n if (n === c.length || n === null)\n this[BUFFERSHIFT]();\n else if (typeof c === 'string') {\n this[BUFFER][0] = c.slice(n);\n chunk = c.slice(0, n);\n this[BUFFERLENGTH] -= n;\n }\n else {\n this[BUFFER][0] = c.subarray(n);\n chunk = c.subarray(0, n);\n this[BUFFERLENGTH] -= n;\n }\n }\n this.emit('data', chunk);\n if (!this[BUFFER].length && !this[EOF])\n this.emit('drain');\n return chunk;\n }\n end(chunk, encoding, cb) {\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = undefined;\n }\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = 'utf8';\n }\n if (chunk !== undefined)\n this.write(chunk, encoding);\n if (cb)\n this.once('end', cb);\n this[EOF] = true;\n this.writable = false;\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 // don't let the internal resume be overwritten\n [RESUME]() {\n if (this[DESTROYED])\n return;\n if (!this[DATALISTENERS] && !this[PIPES].length) {\n this[DISCARDED] = true;\n }\n this[PAUSED] = false;\n this[FLOWING] = true;\n this.emit('resume');\n if (this[BUFFER].length)\n this[FLUSH]();\n else if (this[EOF])\n this[MAYBE_EMIT_END]();\n else\n this.emit('drain');\n }\n /**\n * Resume the stream if it is currently in a paused state\n *\n * If called when there are no pipe destinations or `data` event listeners,\n * this will place the stream in a \"discarded\" state, where all data will\n * be thrown away. The discarded state is removed if a pipe destination or\n * data handler is added, if pause() is called, or if any synchronous or\n * asynchronous iteration is started.\n */\n resume() {\n return this[RESUME]();\n }\n /**\n * Pause the stream\n */\n pause() {\n this[FLOWING] = false;\n this[PAUSED] = true;\n this[DISCARDED] = false;\n }\n /**\n * true if the stream has been forcibly destroyed\n */\n get destroyed() {\n return this[DESTROYED];\n }\n /**\n * true if the stream is currently in a flowing state, meaning that\n * any writes will be immediately emitted.\n */\n get flowing() {\n return this[FLOWING];\n }\n /**\n * true if the stream is currently in a paused state\n */\n get paused() {\n return this[PAUSED];\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 [BUFFERSHIFT]() {\n if (this[OBJECTMODE])\n this[BUFFERLENGTH] -= 1;\n else\n this[BUFFERLENGTH] -= this[BUFFER][0].length;\n return this[BUFFER].shift();\n }\n [FLUSH](noDrain = false) {\n do { } while (this[FLUSHCHUNK](this[BUFFERSHIFT]()) &&\n this[BUFFER].length);\n if (!noDrain && !this[BUFFER].length && !this[EOF])\n this.emit('drain');\n }\n [FLUSHCHUNK](chunk) {\n this.emit('data', chunk);\n return this[FLOWING];\n }\n /**\n * Pipe all data emitted by this stream into the destination provided.\n *\n * Triggers the flow of data.\n */\n pipe(dest, opts) {\n if (this[DESTROYED])\n return dest;\n this[DISCARDED] = false;\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 // piping an ended stream ends immediately\n if (ended) {\n if (opts.end)\n dest.end();\n }\n else {\n // \"as\" here just ignores the WType, which pipes don't care about,\n // since they're only consuming from us, and writing to the dest\n this[PIPES].push(!opts.proxyErrors\n ? 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 return dest;\n }\n /**\n * Fully unhook a piped destination stream.\n *\n * If the destination stream was the only consumer of this stream (ie,\n * there are no other piped destinations or `'data'` event listeners)\n * then the flow of data will stop until there is another consumer or\n * {@link Minipass#resume} is explicitly called.\n */\n unpipe(dest) {\n const p = this[PIPES].find(p => p.dest === dest);\n if (p) {\n if (this[PIPES].length === 1) {\n if (this[FLOWING] && this[DATALISTENERS] === 0) {\n this[FLOWING] = false;\n }\n this[PIPES] = [];\n }\n else\n this[PIPES].splice(this[PIPES].indexOf(p), 1);\n p.unpipe();\n }\n }\n /**\n * Alias for {@link Minipass#on}\n */\n addListener(ev, handler) {\n return this.on(ev, handler);\n }\n /**\n * Mostly identical to `EventEmitter.on`, with the following\n * behavior differences to prevent data loss and unnecessary hangs:\n *\n * - Adding a 'data' event handler will trigger the flow of data\n *\n * - Adding a 'readable' event handler when there is data waiting to be read\n * will cause 'readable' to be emitted immediately.\n *\n * - Adding an 'endish' event handler ('end', 'finish', etc.) which has\n * already passed will cause the event to be emitted immediately and all\n * handlers removed.\n *\n * - Adding an 'error' event handler after an error has been emitted will\n * cause the event to be re-emitted immediately with the error previously\n * raised.\n */\n on(ev, handler) {\n const ret = super.on(ev, handler);\n if (ev === 'data') {\n this[DISCARDED] = false;\n this[DATALISTENERS]++;\n if (!this[PIPES].length && !this[FLOWING]) {\n this[RESUME]();\n }\n }\n else if (ev === 'readable' && this[BUFFERLENGTH] !== 0) {\n super.emit('readable');\n }\n else if (isEndish(ev) && this[EMITTED_END]) {\n super.emit(ev);\n this.removeAllListeners(ev);\n }\n else if (ev === 'error' && this[EMITTED_ERROR]) {\n const h = handler;\n if (this[ASYNC])\n defer(() => h.call(this, this[EMITTED_ERROR]));\n else\n h.call(this, this[EMITTED_ERROR]);\n }\n return ret;\n }\n /**\n * Alias for {@link Minipass#off}\n */\n removeListener(ev, handler) {\n return this.off(ev, handler);\n }\n /**\n * Mostly identical to `EventEmitter.off`\n *\n * If a 'data' event handler is removed, and it was the last consumer\n * (ie, there are no pipe destinations or other 'data' event listeners),\n * then the flow of data will stop until there is another consumer or\n * {@link Minipass#resume} is explicitly called.\n */\n off(ev, handler) {\n const ret = super.off(ev, handler);\n // if we previously had listeners, and now we don't, and we don't\n // have any pipes, then stop the flow, unless it's been explicitly\n // put in a discarded flowing state via stream.resume().\n if (ev === 'data') {\n this[DATALISTENERS] = this.listeners('data').length;\n if (this[DATALISTENERS] === 0 &&\n !this[DISCARDED] &&\n !this[PIPES].length) {\n this[FLOWING] = false;\n }\n }\n return ret;\n }\n /**\n * Mostly identical to `EventEmitter.removeAllListeners`\n *\n * If all 'data' event handlers are removed, and they were the last consumer\n * (ie, there are no pipe destinations), then the flow of data will stop\n * until there is another consumer or {@link Minipass#resume} is explicitly\n * called.\n */\n removeAllListeners(ev) {\n const ret = super.removeAllListeners(ev);\n if (ev === 'data' || ev === undefined) {\n this[DATALISTENERS] = 0;\n if (!this[DISCARDED] && !this[PIPES].length) {\n this[FLOWING] = false;\n }\n }\n return ret;\n }\n /**\n * true if the 'end' event has been emitted\n */\n get emittedEnd() {\n return this[EMITTED_END];\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 * Mostly identical to `EventEmitter.emit`, with the following\n * behavior differences to prevent data loss and unnecessary hangs:\n *\n * If the stream has been destroyed, and the event is something other\n * than 'close' or 'error', then `false` is returned and no handlers\n * are called.\n *\n * If the event is 'end', and has already been emitted, then the event\n * is ignored. If the stream is in a paused or non-flowing state, then\n * the event will be deferred until data flow resumes. If the stream is\n * async, then handlers will be called on the next tick rather than\n * immediately.\n *\n * If the event is 'close', and 'end' has not yet been emitted, then\n * the event will be deferred until after 'end' is emitted.\n *\n * If the event is 'error', and an AbortSignal was provided for the stream,\n * and there are no listeners, then the event is ignored, matching the\n * behavior of node core streams in the presense of an AbortSignal.\n *\n * If the event is 'finish' or 'prefinish', then all listeners will be\n * removed after emitting the event, to prevent double-firing.\n */\n emit(ev, ...args) {\n const data = args[0];\n // error and close are only events allowed after calling destroy()\n if (ev !== 'error' &&\n ev !== 'close' &&\n ev !== DESTROYED &&\n this[DESTROYED]) {\n return false;\n }\n else if (ev === 'data') {\n return !this[OBJECTMODE] && !data\n ? false\n : this[ASYNC]\n ? (defer(() => this[EMITDATA](data)), true)\n : this[EMITDATA](data);\n }\n else if (ev === 'end') {\n return this[EMITEND]();\n }\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 false;\n const ret = super.emit('close');\n this.removeAllListeners('close');\n return ret;\n }\n else if (ev === 'error') {\n this[EMITTED_ERROR] = data;\n super.emit(ERROR, data);\n const ret = !this[SIGNAL] || this.listeners('error').length\n ? super.emit('error', data)\n : false;\n this[MAYBE_EMIT_END]();\n return ret;\n }\n else if (ev === 'resume') {\n const ret = super.emit('resume');\n this[MAYBE_EMIT_END]();\n return ret;\n }\n else if (ev === 'finish' || ev === 'prefinish') {\n const ret = super.emit(ev);\n this.removeAllListeners(ev);\n return ret;\n }\n // Some other unknown event\n const ret = super.emit(ev, ...args);\n this[MAYBE_EMIT_END]();\n return ret;\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 = this[DISCARDED] ? false : super.emit('data', data);\n this[MAYBE_EMIT_END]();\n return ret;\n }\n [EMITEND]() {\n if (this[EMITTED_END])\n return false;\n this[EMITTED_END] = true;\n this.readable = false;\n return this[ASYNC]\n ? (defer(() => this[EMITEND2]()), true)\n : this[EMITEND2]();\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 if (!this[DISCARDED])\n super.emit('data', data);\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 * Return a Promise that resolves to an array of all emitted data once\n * the stream ends.\n */\n async collect() {\n const buf = Object.assign([], {\n dataLength: 0,\n });\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 await p;\n return buf;\n }\n /**\n * Return a Promise that resolves to the concatenation of all emitted data\n * once the stream ends.\n *\n * Not allowed on objectMode streams.\n */\n async concat() {\n if (this[OBJECTMODE]) {\n throw new Error('cannot concat in objectMode');\n }\n const buf = await this.collect();\n return (this[ENCODING]\n ? buf.join('')\n : Buffer.concat(buf, buf.dataLength));\n }\n /**\n * Return a void Promise that resolves once the stream ends.\n */\n async 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 * Asynchronous `for await of` iteration.\n *\n * This will continue emitting all chunks until the stream terminates.\n */\n [Symbol.asyncIterator]() {\n // set this up front, in case the consumer doesn't call next()\n // right away.\n this[DISCARDED] = false;\n let stopped = false;\n const stop = async () => {\n this.pause();\n stopped = true;\n return { value: undefined, done: true };\n };\n const next = () => {\n if (stopped)\n return stop();\n const res = this.read();\n if (res !== null)\n return Promise.resolve({ done: false, value: res });\n if (this[EOF])\n return stop();\n let resolve;\n let reject;\n const onerr = (er) => {\n this.off('data', ondata);\n this.off('end', onend);\n this.off(DESTROYED, ondestroy);\n stop();\n reject(er);\n };\n const ondata = (value) => {\n this.off('error', onerr);\n this.off('end', onend);\n this.off(DESTROYED, ondestroy);\n this.pause();\n resolve({ value, done: !!this[EOF] });\n };\n const onend = () => {\n this.off('error', onerr);\n this.off('data', ondata);\n this.off(DESTROYED, ondestroy);\n stop();\n resolve({ done: true, value: undefined });\n };\n const ondestroy = () => onerr(new Error('stream destroyed'));\n return new Promise((res, rej) => {\n reject = rej;\n resolve = res;\n this.once(DESTROYED, ondestroy);\n this.once('error', onerr);\n this.once('end', onend);\n this.once('data', ondata);\n });\n };\n return {\n next,\n throw: stop,\n return: stop,\n [Symbol.asyncIterator]() {\n return this;\n },\n [Symbol.asyncDispose]: async () => { },\n };\n }\n /**\n * Synchronous `for of` iteration.\n *\n * The iteration will terminate when the internal buffer runs out, even\n * if the stream has not yet terminated.\n */\n [Symbol.iterator]() {\n // set this up front, in case the consumer doesn't call next()\n // right away.\n this[DISCARDED] = false;\n let stopped = false;\n const stop = () => {\n this.pause();\n this.off(ERROR, stop);\n this.off(DESTROYED, stop);\n this.off('end', stop);\n stopped = true;\n return { done: true, value: undefined };\n };\n const next = () => {\n if (stopped)\n return stop();\n const value = this.read();\n return value === null ? stop() : { done: false, value };\n };\n this.once('end', stop);\n this.once(ERROR, stop);\n this.once(DESTROYED, stop);\n return {\n next,\n throw: stop,\n return: stop,\n [Symbol.iterator]() {\n return this;\n },\n [Symbol.dispose]: () => { },\n };\n }\n /**\n * Destroy a stream, preventing it from being used for any further purpose.\n *\n * If the stream has a `close()` method, then it will be called on\n * destruction.\n *\n * After destruction, any attempt to write data, read data, or emit most\n * events will be ignored.\n *\n * If an error argument is provided, then it will be emitted in an\n * 'error' event.\n */\n destroy(er) {\n if (this[DESTROYED]) {\n if (er)\n this.emit('error', er);\n else\n this.emit(DESTROYED);\n return this;\n }\n this[DESTROYED] = true;\n this[DISCARDED] = true;\n // throw away all buffered data, it's never coming out\n this[BUFFER].length = 0;\n this[BUFFERLENGTH] = 0;\n const wc = this;\n if (typeof wc.close === 'function' && !this[CLOSED])\n wc.close();\n if (er)\n this.emit('error', er);\n // if no error to emit, still reject pending promises\n else\n this.emit(DESTROYED);\n return this;\n }\n /**\n * Alias for {@link isStream}\n *\n * Former export location, maintained for backwards compatibility.\n *\n * @deprecated\n */\n static get isStream() {\n return exports.isStream;\n }\n}\nexports.Minipass = Minipass;\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PathScurry = exports.Path = exports.PathScurryDarwin = exports.PathScurryPosix = exports.PathScurryWin32 = exports.PathScurryBase = exports.PathPosix = exports.PathWin32 = exports.PathBase = exports.ChildrenCache = exports.ResolveCache = void 0;\nconst lru_cache_1 = require(\"lru-cache\");\nconst node_path_1 = require(\"node:path\");\nconst node_url_1 = require(\"node:url\");\nconst fs_1 = require(\"fs\");\nconst actualFS = __importStar(require(\"node:fs\"));\nconst realpathSync = fs_1.realpathSync.native;\n// TODO: test perf of fs/promises realpath vs realpathCB,\n// since the promises one uses realpath.native\nconst promises_1 = require(\"node:fs/promises\");\nconst minipass_1 = require(\"minipass\");\nconst defaultFS = {\n lstatSync: fs_1.lstatSync,\n readdir: fs_1.readdir,\n readdirSync: fs_1.readdirSync,\n readlinkSync: fs_1.readlinkSync,\n realpathSync,\n promises: {\n lstat: promises_1.lstat,\n readdir: promises_1.readdir,\n readlink: promises_1.readlink,\n realpath: promises_1.realpath,\n },\n};\n// if they just gave us require('fs') then use our default\nconst fsFromOption = (fsOption) => !fsOption || fsOption === defaultFS || fsOption === actualFS ?\n defaultFS\n : {\n ...defaultFS,\n ...fsOption,\n promises: {\n ...defaultFS.promises,\n ...(fsOption.promises || {}),\n },\n };\n// turn something like //?/c:/ into c:\\\nconst uncDriveRegexp = /^\\\\\\\\\\?\\\\([a-z]:)\\\\?$/i;\nconst uncToDrive = (rootPath) => rootPath.replace(/\\//g, '\\\\').replace(uncDriveRegexp, '$1\\\\');\n// windows paths are separated by either / or \\\nconst eitherSep = /[\\\\\\/]/;\nconst UNKNOWN = 0; // may not even exist, for all we know\nconst IFIFO = 0b0001;\nconst IFCHR = 0b0010;\nconst IFDIR = 0b0100;\nconst IFBLK = 0b0110;\nconst IFREG = 0b1000;\nconst IFLNK = 0b1010;\nconst IFSOCK = 0b1100;\nconst IFMT = 0b1111;\n// mask to unset low 4 bits\nconst IFMT_UNKNOWN = ~IFMT;\n// set after successfully calling readdir() and getting entries.\nconst READDIR_CALLED = 0b0000_0001_0000;\n// set after a successful lstat()\nconst LSTAT_CALLED = 0b0000_0010_0000;\n// set if an entry (or one of its parents) is definitely not a dir\nconst ENOTDIR = 0b0000_0100_0000;\n// set if an entry (or one of its parents) does not exist\n// (can also be set on lstat errors like EACCES or ENAMETOOLONG)\nconst ENOENT = 0b0000_1000_0000;\n// cannot have child entries -- also verify &IFMT is either IFDIR or IFLNK\n// set if we fail to readlink\nconst ENOREADLINK = 0b0001_0000_0000;\n// set if we know realpath() will fail\nconst ENOREALPATH = 0b0010_0000_0000;\nconst ENOCHILD = ENOTDIR | ENOENT | ENOREALPATH;\nconst TYPEMASK = 0b0011_1111_1111;\nconst entToType = (s) => s.isFile() ? IFREG\n : s.isDirectory() ? IFDIR\n : s.isSymbolicLink() ? IFLNK\n : s.isCharacterDevice() ? IFCHR\n : s.isBlockDevice() ? IFBLK\n : s.isSocket() ? IFSOCK\n : s.isFIFO() ? IFIFO\n : UNKNOWN;\n// normalize unicode path names\nconst normalizeCache = new Map();\nconst normalize = (s) => {\n const c = normalizeCache.get(s);\n if (c)\n return c;\n const n = s.normalize('NFKD');\n normalizeCache.set(s, n);\n return n;\n};\nconst normalizeNocaseCache = new Map();\nconst normalizeNocase = (s) => {\n const c = normalizeNocaseCache.get(s);\n if (c)\n return c;\n const n = normalize(s.toLowerCase());\n normalizeNocaseCache.set(s, n);\n return n;\n};\n/**\n * An LRUCache for storing resolved path strings or Path objects.\n * @internal\n */\nclass ResolveCache extends lru_cache_1.LRUCache {\n constructor() {\n super({ max: 256 });\n }\n}\nexports.ResolveCache = ResolveCache;\n// In order to prevent blowing out the js heap by allocating hundreds of\n// thousands of Path entries when walking extremely large trees, the \"children\"\n// in this tree are represented by storing an array of Path entries in an\n// LRUCache, indexed by the parent. At any time, Path.children() may return an\n// empty array, indicating that it doesn't know about any of its children, and\n// thus has to rebuild that cache. This is fine, it just means that we don't\n// benefit as much from having the cached entries, but huge directory walks\n// don't blow out the stack, and smaller ones are still as fast as possible.\n//\n//It does impose some complexity when building up the readdir data, because we\n//need to pass a reference to the children array that we started with.\n/**\n * an LRUCache for storing child entries.\n * @internal\n */\nclass ChildrenCache extends lru_cache_1.LRUCache {\n constructor(maxSize = 16 * 1024) {\n super({\n maxSize,\n // parent + children\n sizeCalculation: a => a.length + 1,\n });\n }\n}\nexports.ChildrenCache = ChildrenCache;\nconst setAsCwd = Symbol('PathScurry setAsCwd');\n/**\n * Path objects are sort of like a super-powered\n * {@link https://nodejs.org/docs/latest/api/fs.html#class-fsdirent fs.Dirent}\n *\n * Each one represents a single filesystem entry on disk, which may or may not\n * exist. It includes methods for reading various types of information via\n * lstat, readlink, and readdir, and caches all information to the greatest\n * degree possible.\n *\n * Note that fs operations that would normally throw will instead return an\n * \"empty\" value. This is in order to prevent excessive overhead from error\n * stack traces.\n */\nclass PathBase {\n /**\n * the basename of this path\n *\n * **Important**: *always* test the path name against any test string\n * usingthe {@link isNamed} method, and not by directly comparing this\n * string. Otherwise, unicode path strings that the system sees as identical\n * will not be properly treated as the same path, leading to incorrect\n * behavior and possible security issues.\n */\n name;\n /**\n * the Path entry corresponding to the path root.\n *\n * @internal\n */\n root;\n /**\n * All roots found within the current PathScurry family\n *\n * @internal\n */\n roots;\n /**\n * a reference to the parent path, or undefined in the case of root entries\n *\n * @internal\n */\n parent;\n /**\n * boolean indicating whether paths are compared case-insensitively\n * @internal\n */\n nocase;\n /**\n * boolean indicating that this path is the current working directory\n * of the PathScurry collection that contains it.\n */\n isCWD = false;\n // potential default fs override\n #fs;\n // Stats fields\n #dev;\n get dev() {\n return this.#dev;\n }\n #mode;\n get mode() {\n return this.#mode;\n }\n #nlink;\n get nlink() {\n return this.#nlink;\n }\n #uid;\n get uid() {\n return this.#uid;\n }\n #gid;\n get gid() {\n return this.#gid;\n }\n #rdev;\n get rdev() {\n return this.#rdev;\n }\n #blksize;\n get blksize() {\n return this.#blksize;\n }\n #ino;\n get ino() {\n return this.#ino;\n }\n #size;\n get size() {\n return this.#size;\n }\n #blocks;\n get blocks() {\n return this.#blocks;\n }\n #atimeMs;\n get atimeMs() {\n return this.#atimeMs;\n }\n #mtimeMs;\n get mtimeMs() {\n return this.#mtimeMs;\n }\n #ctimeMs;\n get ctimeMs() {\n return this.#ctimeMs;\n }\n #birthtimeMs;\n get birthtimeMs() {\n return this.#birthtimeMs;\n }\n #atime;\n get atime() {\n return this.#atime;\n }\n #mtime;\n get mtime() {\n return this.#mtime;\n }\n #ctime;\n get ctime() {\n return this.#ctime;\n }\n #birthtime;\n get birthtime() {\n return this.#birthtime;\n }\n #matchName;\n #depth;\n #fullpath;\n #fullpathPosix;\n #relative;\n #relativePosix;\n #type;\n #children;\n #linkTarget;\n #realpath;\n /**\n * This property is for compatibility with the Dirent class as of\n * Node v20, where Dirent['parentPath'] refers to the path of the\n * directory that was passed to readdir. For root entries, it's the path\n * to the entry itself.\n */\n get parentPath() {\n return (this.parent || this).fullpath();\n }\n /**\n * Deprecated alias for Dirent['parentPath'] Somewhat counterintuitively,\n * this property refers to the *parent* path, not the path object itself.\n */\n get path() {\n return this.parentPath;\n }\n /**\n * Do not create new Path objects directly. They should always be accessed\n * via the PathScurry class or other methods on the Path class.\n *\n * @internal\n */\n constructor(name, type = UNKNOWN, root, roots, nocase, children, opts) {\n this.name = name;\n this.#matchName = nocase ? normalizeNocase(name) : normalize(name);\n this.#type = type & TYPEMASK;\n this.nocase = nocase;\n this.roots = roots;\n this.root = root || this;\n this.#children = children;\n this.#fullpath = opts.fullpath;\n this.#relative = opts.relative;\n this.#relativePosix = opts.relativePosix;\n this.parent = opts.parent;\n if (this.parent) {\n this.#fs = this.parent.#fs;\n }\n else {\n this.#fs = fsFromOption(opts.fs);\n }\n }\n /**\n * Returns the depth of the Path object from its root.\n *\n * For example, a path at `/foo/bar` would have a depth of 2.\n */\n depth() {\n if (this.#depth !== undefined)\n return this.#depth;\n if (!this.parent)\n return (this.#depth = 0);\n return (this.#depth = this.parent.depth() + 1);\n }\n /**\n * @internal\n */\n childrenCache() {\n return this.#children;\n }\n /**\n * Get the Path object referenced by the string path, resolved from this Path\n */\n resolve(path) {\n if (!path) {\n return this;\n }\n const rootPath = this.getRootString(path);\n const dir = path.substring(rootPath.length);\n const dirParts = dir.split(this.splitSep);\n const result = rootPath ?\n this.getRoot(rootPath).#resolveParts(dirParts)\n : this.#resolveParts(dirParts);\n return result;\n }\n #resolveParts(dirParts) {\n let p = this;\n for (const part of dirParts) {\n p = p.child(part);\n }\n return p;\n }\n /**\n * Returns the cached children Path objects, if still available. If they\n * have fallen out of the cache, then returns an empty array, and resets the\n * READDIR_CALLED bit, so that future calls to readdir() will require an fs\n * lookup.\n *\n * @internal\n */\n children() {\n const cached = this.#children.get(this);\n if (cached) {\n return cached;\n }\n const children = Object.assign([], { provisional: 0 });\n this.#children.set(this, children);\n this.#type &= ~READDIR_CALLED;\n return children;\n }\n /**\n * Resolves a path portion and returns or creates the child Path.\n *\n * Returns `this` if pathPart is `''` or `'.'`, or `parent` if pathPart is\n * `'..'`.\n *\n * This should not be called directly. If `pathPart` contains any path\n * separators, it will lead to unsafe undefined behavior.\n *\n * Use `Path.resolve()` instead.\n *\n * @internal\n */\n child(pathPart, opts) {\n if (pathPart === '' || pathPart === '.') {\n return this;\n }\n if (pathPart === '..') {\n return this.parent || this;\n }\n // find the child\n const children = this.children();\n const name = this.nocase ? normalizeNocase(pathPart) : normalize(pathPart);\n for (const p of children) {\n if (p.#matchName === name) {\n return p;\n }\n }\n // didn't find it, create provisional child, since it might not\n // actually exist. If we know the parent isn't a dir, then\n // in fact it CAN'T exist.\n const s = this.parent ? this.sep : '';\n const fullpath = this.#fullpath ? this.#fullpath + s + pathPart : undefined;\n const pchild = this.newChild(pathPart, UNKNOWN, {\n ...opts,\n parent: this,\n fullpath,\n });\n if (!this.canReaddir()) {\n pchild.#type |= ENOENT;\n }\n // don't have to update provisional, because if we have real children,\n // then provisional is set to children.length, otherwise a lower number\n children.push(pchild);\n return pchild;\n }\n /**\n * The relative path from the cwd. If it does not share an ancestor with\n * the cwd, then this ends up being equivalent to the fullpath()\n */\n relative() {\n if (this.isCWD)\n return '';\n if (this.#relative !== undefined) {\n return this.#relative;\n }\n const name = this.name;\n const p = this.parent;\n if (!p) {\n return (this.#relative = this.name);\n }\n const pv = p.relative();\n return pv + (!pv || !p.parent ? '' : this.sep) + name;\n }\n /**\n * The relative path from the cwd, using / as the path separator.\n * If it does not share an ancestor with\n * the cwd, then this ends up being equivalent to the fullpathPosix()\n * On posix systems, this is identical to relative().\n */\n relativePosix() {\n if (this.sep === '/')\n return this.relative();\n if (this.isCWD)\n return '';\n if (this.#relativePosix !== undefined)\n return this.#relativePosix;\n const name = this.name;\n const p = this.parent;\n if (!p) {\n return (this.#relativePosix = this.fullpathPosix());\n }\n const pv = p.relativePosix();\n return pv + (!pv || !p.parent ? '' : '/') + name;\n }\n /**\n * The fully resolved path string for this Path entry\n */\n fullpath() {\n if (this.#fullpath !== undefined) {\n return this.#fullpath;\n }\n const name = this.name;\n const p = this.parent;\n if (!p) {\n return (this.#fullpath = this.name);\n }\n const pv = p.fullpath();\n const fp = pv + (!p.parent ? '' : this.sep) + name;\n return (this.#fullpath = fp);\n }\n /**\n * On platforms other than windows, this is identical to fullpath.\n *\n * On windows, this is overridden to return the forward-slash form of the\n * full UNC path.\n */\n fullpathPosix() {\n if (this.#fullpathPosix !== undefined)\n return this.#fullpathPosix;\n if (this.sep === '/')\n return (this.#fullpathPosix = this.fullpath());\n if (!this.parent) {\n const p = this.fullpath().replace(/\\\\/g, '/');\n if (/^[a-z]:\\//i.test(p)) {\n return (this.#fullpathPosix = `//?/${p}`);\n }\n else {\n return (this.#fullpathPosix = p);\n }\n }\n const p = this.parent;\n const pfpp = p.fullpathPosix();\n const fpp = pfpp + (!pfpp || !p.parent ? '' : '/') + this.name;\n return (this.#fullpathPosix = fpp);\n }\n /**\n * Is the Path of an unknown type?\n *\n * Note that we might know *something* about it if there has been a previous\n * filesystem operation, for example that it does not exist, or is not a\n * link, or whether it has child entries.\n */\n isUnknown() {\n return (this.#type & IFMT) === UNKNOWN;\n }\n isType(type) {\n return this[`is${type}`]();\n }\n getType() {\n return (this.isUnknown() ? 'Unknown'\n : this.isDirectory() ? 'Directory'\n : this.isFile() ? 'File'\n : this.isSymbolicLink() ? 'SymbolicLink'\n : this.isFIFO() ? 'FIFO'\n : this.isCharacterDevice() ? 'CharacterDevice'\n : this.isBlockDevice() ? 'BlockDevice'\n : /* c8 ignore start */ this.isSocket() ? 'Socket'\n : 'Unknown');\n /* c8 ignore stop */\n }\n /**\n * Is the Path a regular file?\n */\n isFile() {\n return (this.#type & IFMT) === IFREG;\n }\n /**\n * Is the Path a directory?\n */\n isDirectory() {\n return (this.#type & IFMT) === IFDIR;\n }\n /**\n * Is the path a character device?\n */\n isCharacterDevice() {\n return (this.#type & IFMT) === IFCHR;\n }\n /**\n * Is the path a block device?\n */\n isBlockDevice() {\n return (this.#type & IFMT) === IFBLK;\n }\n /**\n * Is the path a FIFO pipe?\n */\n isFIFO() {\n return (this.#type & IFMT) === IFIFO;\n }\n /**\n * Is the path a socket?\n */\n isSocket() {\n return (this.#type & IFMT) === IFSOCK;\n }\n /**\n * Is the path a symbolic link?\n */\n isSymbolicLink() {\n return (this.#type & IFLNK) === IFLNK;\n }\n /**\n * Return the entry if it has been subject of a successful lstat, or\n * undefined otherwise.\n *\n * Does not read the filesystem, so an undefined result *could* simply\n * mean that we haven't called lstat on it.\n */\n lstatCached() {\n return this.#type & LSTAT_CALLED ? this : undefined;\n }\n /**\n * Return the cached link target if the entry has been the subject of a\n * successful readlink, or undefined otherwise.\n *\n * Does not read the filesystem, so an undefined result *could* just mean we\n * don't have any cached data. Only use it if you are very sure that a\n * readlink() has been called at some point.\n */\n readlinkCached() {\n return this.#linkTarget;\n }\n /**\n * Returns the cached realpath target if the entry has been the subject\n * of a successful realpath, or undefined otherwise.\n *\n * Does not read the filesystem, so an undefined result *could* just mean we\n * don't have any cached data. Only use it if you are very sure that a\n * realpath() has been called at some point.\n */\n realpathCached() {\n return this.#realpath;\n }\n /**\n * Returns the cached child Path entries array if the entry has been the\n * subject of a successful readdir(), or [] otherwise.\n *\n * Does not read the filesystem, so an empty array *could* just mean we\n * don't have any cached data. Only use it if you are very sure that a\n * readdir() has been called recently enough to still be valid.\n */\n readdirCached() {\n const children = this.children();\n return children.slice(0, children.provisional);\n }\n /**\n * Return true if it's worth trying to readlink. Ie, we don't (yet) have\n * any indication that readlink will definitely fail.\n *\n * Returns false if the path is known to not be a symlink, if a previous\n * readlink failed, or if the entry does not exist.\n */\n canReadlink() {\n if (this.#linkTarget)\n return true;\n if (!this.parent)\n return false;\n // cases where it cannot possibly succeed\n const ifmt = this.#type & IFMT;\n return !((ifmt !== UNKNOWN && ifmt !== IFLNK) ||\n this.#type & ENOREADLINK ||\n this.#type & ENOENT);\n }\n /**\n * Return true if readdir has previously been successfully called on this\n * path, indicating that cachedReaddir() is likely valid.\n */\n calledReaddir() {\n return !!(this.#type & READDIR_CALLED);\n }\n /**\n * Returns true if the path is known to not exist. That is, a previous lstat\n * or readdir failed to verify its existence when that would have been\n * expected, or a parent entry was marked either enoent or enotdir.\n */\n isENOENT() {\n return !!(this.#type & ENOENT);\n }\n /**\n * Return true if the path is a match for the given path name. This handles\n * case sensitivity and unicode normalization.\n *\n * Note: even on case-sensitive systems, it is **not** safe to test the\n * equality of the `.name` property to determine whether a given pathname\n * matches, due to unicode normalization mismatches.\n *\n * Always use this method instead of testing the `path.name` property\n * directly.\n */\n isNamed(n) {\n return !this.nocase ?\n this.#matchName === normalize(n)\n : this.#matchName === normalizeNocase(n);\n }\n /**\n * Return the Path object corresponding to the target of a symbolic link.\n *\n * If the Path is not a symbolic link, or if the readlink call fails for any\n * reason, `undefined` is returned.\n *\n * Result is cached, and thus may be outdated if the filesystem is mutated.\n */\n async readlink() {\n const target = this.#linkTarget;\n if (target) {\n return target;\n }\n if (!this.canReadlink()) {\n return undefined;\n }\n /* c8 ignore start */\n // already covered by the canReadlink test, here for ts grumples\n if (!this.parent) {\n return undefined;\n }\n /* c8 ignore stop */\n try {\n const read = await this.#fs.promises.readlink(this.fullpath());\n const linkTarget = (await this.parent.realpath())?.resolve(read);\n if (linkTarget) {\n return (this.#linkTarget = linkTarget);\n }\n }\n catch (er) {\n this.#readlinkFail(er.code);\n return undefined;\n }\n }\n /**\n * Synchronous {@link PathBase.readlink}\n */\n readlinkSync() {\n const target = this.#linkTarget;\n if (target) {\n return target;\n }\n if (!this.canReadlink()) {\n return undefined;\n }\n /* c8 ignore start */\n // already covered by the canReadlink test, here for ts grumples\n if (!this.parent) {\n return undefined;\n }\n /* c8 ignore stop */\n try {\n const read = this.#fs.readlinkSync(this.fullpath());\n const linkTarget = this.parent.realpathSync()?.resolve(read);\n if (linkTarget) {\n return (this.#linkTarget = linkTarget);\n }\n }\n catch (er) {\n this.#readlinkFail(er.code);\n return undefined;\n }\n }\n #readdirSuccess(children) {\n // succeeded, mark readdir called bit\n this.#type |= READDIR_CALLED;\n // mark all remaining provisional children as ENOENT\n for (let p = children.provisional; p < children.length; p++) {\n const c = children[p];\n if (c)\n c.#markENOENT();\n }\n }\n #markENOENT() {\n // mark as UNKNOWN and ENOENT\n if (this.#type & ENOENT)\n return;\n this.#type = (this.#type | ENOENT) & IFMT_UNKNOWN;\n this.#markChildrenENOENT();\n }\n #markChildrenENOENT() {\n // all children are provisional and do not exist\n const children = this.children();\n children.provisional = 0;\n for (const p of children) {\n p.#markENOENT();\n }\n }\n #markENOREALPATH() {\n this.#type |= ENOREALPATH;\n this.#markENOTDIR();\n }\n // save the information when we know the entry is not a dir\n #markENOTDIR() {\n // entry is not a directory, so any children can't exist.\n // this *should* be impossible, since any children created\n // after it's been marked ENOTDIR should be marked ENOENT,\n // so it won't even get to this point.\n /* c8 ignore start */\n if (this.#type & ENOTDIR)\n return;\n /* c8 ignore stop */\n let t = this.#type;\n // this could happen if we stat a dir, then delete it,\n // then try to read it or one of its children.\n if ((t & IFMT) === IFDIR)\n t &= IFMT_UNKNOWN;\n this.#type = t | ENOTDIR;\n this.#markChildrenENOENT();\n }\n #readdirFail(code = '') {\n // markENOTDIR and markENOENT also set provisional=0\n if (code === 'ENOTDIR' || code === 'EPERM') {\n this.#markENOTDIR();\n }\n else if (code === 'ENOENT') {\n this.#markENOENT();\n }\n else {\n this.children().provisional = 0;\n }\n }\n #lstatFail(code = '') {\n // Windows just raises ENOENT in this case, disable for win CI\n /* c8 ignore start */\n if (code === 'ENOTDIR') {\n // already know it has a parent by this point\n const p = this.parent;\n p.#markENOTDIR();\n }\n else if (code === 'ENOENT') {\n /* c8 ignore stop */\n this.#markENOENT();\n }\n }\n #readlinkFail(code = '') {\n let ter = this.#type;\n ter |= ENOREADLINK;\n if (code === 'ENOENT')\n ter |= ENOENT;\n // windows gets a weird error when you try to readlink a file\n if (code === 'EINVAL' || code === 'UNKNOWN') {\n // exists, but not a symlink, we don't know WHAT it is, so remove\n // all IFMT bits.\n ter &= IFMT_UNKNOWN;\n }\n this.#type = ter;\n // windows just gets ENOENT in this case. We do cover the case,\n // just disabled because it's impossible on Windows CI\n /* c8 ignore start */\n if (code === 'ENOTDIR' && this.parent) {\n this.parent.#markENOTDIR();\n }\n /* c8 ignore stop */\n }\n #readdirAddChild(e, c) {\n return (this.#readdirMaybePromoteChild(e, c) ||\n this.#readdirAddNewChild(e, c));\n }\n #readdirAddNewChild(e, c) {\n // alloc new entry at head, so it's never provisional\n const type = entToType(e);\n const child = this.newChild(e.name, type, { parent: this });\n const ifmt = child.#type & IFMT;\n if (ifmt !== IFDIR && ifmt !== IFLNK && ifmt !== UNKNOWN) {\n child.#type |= ENOTDIR;\n }\n c.unshift(child);\n c.provisional++;\n return child;\n }\n #readdirMaybePromoteChild(e, c) {\n for (let p = c.provisional; p < c.length; p++) {\n const pchild = c[p];\n const name = this.nocase ? normalizeNocase(e.name) : normalize(e.name);\n if (name !== pchild.#matchName) {\n continue;\n }\n return this.#readdirPromoteChild(e, pchild, p, c);\n }\n }\n #readdirPromoteChild(e, p, index, c) {\n const v = p.name;\n // retain any other flags, but set ifmt from dirent\n p.#type = (p.#type & IFMT_UNKNOWN) | entToType(e);\n // case sensitivity fixing when we learn the true name.\n if (v !== e.name)\n p.name = e.name;\n // just advance provisional index (potentially off the list),\n // otherwise we have to splice/pop it out and re-insert at head\n if (index !== c.provisional) {\n if (index === c.length - 1)\n c.pop();\n else\n c.splice(index, 1);\n c.unshift(p);\n }\n c.provisional++;\n return p;\n }\n /**\n * Call lstat() on this Path, and update all known information that can be\n * determined.\n *\n * Note that unlike `fs.lstat()`, the returned value does not contain some\n * information, such as `mode`, `dev`, `nlink`, and `ino`. If that\n * information is required, you will need to call `fs.lstat` yourself.\n *\n * If the Path refers to a nonexistent file, or if the lstat call fails for\n * any reason, `undefined` is returned. Otherwise the updated Path object is\n * returned.\n *\n * Results are cached, and thus may be out of date if the filesystem is\n * mutated.\n */\n async lstat() {\n if ((this.#type & ENOENT) === 0) {\n try {\n this.#applyStat(await this.#fs.promises.lstat(this.fullpath()));\n return this;\n }\n catch (er) {\n this.#lstatFail(er.code);\n }\n }\n }\n /**\n * synchronous {@link PathBase.lstat}\n */\n lstatSync() {\n if ((this.#type & ENOENT) === 0) {\n try {\n this.#applyStat(this.#fs.lstatSync(this.fullpath()));\n return this;\n }\n catch (er) {\n this.#lstatFail(er.code);\n }\n }\n }\n #applyStat(st) {\n const { atime, atimeMs, birthtime, birthtimeMs, blksize, blocks, ctime, ctimeMs, dev, gid, ino, mode, mtime, mtimeMs, nlink, rdev, size, uid, } = st;\n this.#atime = atime;\n this.#atimeMs = atimeMs;\n this.#birthtime = birthtime;\n this.#birthtimeMs = birthtimeMs;\n this.#blksize = blksize;\n this.#blocks = blocks;\n this.#ctime = ctime;\n this.#ctimeMs = ctimeMs;\n this.#dev = dev;\n this.#gid = gid;\n this.#ino = ino;\n this.#mode = mode;\n this.#mtime = mtime;\n this.#mtimeMs = mtimeMs;\n this.#nlink = nlink;\n this.#rdev = rdev;\n this.#size = size;\n this.#uid = uid;\n const ifmt = entToType(st);\n // retain any other flags, but set the ifmt\n this.#type = (this.#type & IFMT_UNKNOWN) | ifmt | LSTAT_CALLED;\n if (ifmt !== UNKNOWN && ifmt !== IFDIR && ifmt !== IFLNK) {\n this.#type |= ENOTDIR;\n }\n }\n #onReaddirCB = [];\n #readdirCBInFlight = false;\n #callOnReaddirCB(children) {\n this.#readdirCBInFlight = false;\n const cbs = this.#onReaddirCB.slice();\n this.#onReaddirCB.length = 0;\n cbs.forEach(cb => cb(null, children));\n }\n /**\n * Standard node-style callback interface to get list of directory entries.\n *\n * If the Path cannot or does not contain any children, then an empty array\n * is returned.\n *\n * Results are cached, and thus may be out of date if the filesystem is\n * mutated.\n *\n * @param cb The callback called with (er, entries). Note that the `er`\n * param is somewhat extraneous, as all readdir() errors are handled and\n * simply result in an empty set of entries being returned.\n * @param allowZalgo Boolean indicating that immediately known results should\n * *not* be deferred with `queueMicrotask`. Defaults to `false`. Release\n * zalgo at your peril, the dark pony lord is devious and unforgiving.\n */\n readdirCB(cb, allowZalgo = false) {\n if (!this.canReaddir()) {\n if (allowZalgo)\n cb(null, []);\n else\n queueMicrotask(() => cb(null, []));\n return;\n }\n const children = this.children();\n if (this.calledReaddir()) {\n const c = children.slice(0, children.provisional);\n if (allowZalgo)\n cb(null, c);\n else\n queueMicrotask(() => cb(null, c));\n return;\n }\n // don't have to worry about zalgo at this point.\n this.#onReaddirCB.push(cb);\n if (this.#readdirCBInFlight) {\n return;\n }\n this.#readdirCBInFlight = true;\n // else read the directory, fill up children\n // de-provisionalize any provisional children.\n const fullpath = this.fullpath();\n this.#fs.readdir(fullpath, { withFileTypes: true }, (er, entries) => {\n if (er) {\n this.#readdirFail(er.code);\n children.provisional = 0;\n }\n else {\n // if we didn't get an error, we always get entries.\n //@ts-ignore\n for (const e of entries) {\n this.#readdirAddChild(e, children);\n }\n this.#readdirSuccess(children);\n }\n this.#callOnReaddirCB(children.slice(0, children.provisional));\n return;\n });\n }\n #asyncReaddirInFlight;\n /**\n * Return an array of known child entries.\n *\n * If the Path cannot or does not contain any children, then an empty array\n * is returned.\n *\n * Results are cached, and thus may be out of date if the filesystem is\n * mutated.\n */\n async readdir() {\n if (!this.canReaddir()) {\n return [];\n }\n const children = this.children();\n if (this.calledReaddir()) {\n return children.slice(0, children.provisional);\n }\n // else read the directory, fill up children\n // de-provisionalize any provisional children.\n const fullpath = this.fullpath();\n if (this.#asyncReaddirInFlight) {\n await this.#asyncReaddirInFlight;\n }\n else {\n /* c8 ignore start */\n let resolve = () => { };\n /* c8 ignore stop */\n this.#asyncReaddirInFlight = new Promise(res => (resolve = res));\n try {\n for (const e of await this.#fs.promises.readdir(fullpath, {\n withFileTypes: true,\n })) {\n this.#readdirAddChild(e, children);\n }\n this.#readdirSuccess(children);\n }\n catch (er) {\n this.#readdirFail(er.code);\n children.provisional = 0;\n }\n this.#asyncReaddirInFlight = undefined;\n resolve();\n }\n return children.slice(0, children.provisional);\n }\n /**\n * synchronous {@link PathBase.readdir}\n */\n readdirSync() {\n if (!this.canReaddir()) {\n return [];\n }\n const children = this.children();\n if (this.calledReaddir()) {\n return children.slice(0, children.provisional);\n }\n // else read the directory, fill up children\n // de-provisionalize any provisional children.\n const fullpath = this.fullpath();\n try {\n for (const e of this.#fs.readdirSync(fullpath, {\n withFileTypes: true,\n })) {\n this.#readdirAddChild(e, children);\n }\n this.#readdirSuccess(children);\n }\n catch (er) {\n this.#readdirFail(er.code);\n children.provisional = 0;\n }\n return children.slice(0, children.provisional);\n }\n canReaddir() {\n if (this.#type & ENOCHILD)\n return false;\n const ifmt = IFMT & this.#type;\n // we always set ENOTDIR when setting IFMT, so should be impossible\n /* c8 ignore start */\n if (!(ifmt === UNKNOWN || ifmt === IFDIR || ifmt === IFLNK)) {\n return false;\n }\n /* c8 ignore stop */\n return true;\n }\n shouldWalk(dirs, walkFilter) {\n return ((this.#type & IFDIR) === IFDIR &&\n !(this.#type & ENOCHILD) &&\n !dirs.has(this) &&\n (!walkFilter || walkFilter(this)));\n }\n /**\n * Return the Path object corresponding to path as resolved\n * by realpath(3).\n *\n * If the realpath call fails for any reason, `undefined` is returned.\n *\n * Result is cached, and thus may be outdated if the filesystem is mutated.\n * On success, returns a Path object.\n */\n async realpath() {\n if (this.#realpath)\n return this.#realpath;\n if ((ENOREALPATH | ENOREADLINK | ENOENT) & this.#type)\n return undefined;\n try {\n const rp = await this.#fs.promises.realpath(this.fullpath());\n return (this.#realpath = this.resolve(rp));\n }\n catch (_) {\n this.#markENOREALPATH();\n }\n }\n /**\n * Synchronous {@link realpath}\n */\n realpathSync() {\n if (this.#realpath)\n return this.#realpath;\n if ((ENOREALPATH | ENOREADLINK | ENOENT) & this.#type)\n return undefined;\n try {\n const rp = this.#fs.realpathSync(this.fullpath());\n return (this.#realpath = this.resolve(rp));\n }\n catch (_) {\n this.#markENOREALPATH();\n }\n }\n /**\n * Internal method to mark this Path object as the scurry cwd,\n * called by {@link PathScurry#chdir}\n *\n * @internal\n */\n [setAsCwd](oldCwd) {\n if (oldCwd === this)\n return;\n oldCwd.isCWD = false;\n this.isCWD = true;\n const changed = new Set([]);\n let rp = [];\n let p = this;\n while (p && p.parent) {\n changed.add(p);\n p.#relative = rp.join(this.sep);\n p.#relativePosix = rp.join('/');\n p = p.parent;\n rp.push('..');\n }\n // now un-memoize parents of old cwd\n p = oldCwd;\n while (p && p.parent && !changed.has(p)) {\n p.#relative = undefined;\n p.#relativePosix = undefined;\n p = p.parent;\n }\n }\n}\nexports.PathBase = PathBase;\n/**\n * Path class used on win32 systems\n *\n * Uses `'\\\\'` as the path separator for returned paths, either `'\\\\'` or `'/'`\n * as the path separator for parsing paths.\n */\nclass PathWin32 extends PathBase {\n /**\n * Separator for generating path strings.\n */\n sep = '\\\\';\n /**\n * Separator for parsing path strings.\n */\n splitSep = eitherSep;\n /**\n * Do not create new Path objects directly. They should always be accessed\n * via the PathScurry class or other methods on the Path class.\n *\n * @internal\n */\n constructor(name, type = UNKNOWN, root, roots, nocase, children, opts) {\n super(name, type, root, roots, nocase, children, opts);\n }\n /**\n * @internal\n */\n newChild(name, type = UNKNOWN, opts = {}) {\n return new PathWin32(name, type, this.root, this.roots, this.nocase, this.childrenCache(), opts);\n }\n /**\n * @internal\n */\n getRootString(path) {\n return node_path_1.win32.parse(path).root;\n }\n /**\n * @internal\n */\n getRoot(rootPath) {\n rootPath = uncToDrive(rootPath.toUpperCase());\n if (rootPath === this.root.name) {\n return this.root;\n }\n // ok, not that one, check if it matches another we know about\n for (const [compare, root] of Object.entries(this.roots)) {\n if (this.sameRoot(rootPath, compare)) {\n return (this.roots[rootPath] = root);\n }\n }\n // otherwise, have to create a new one.\n return (this.roots[rootPath] = new PathScurryWin32(rootPath, this).root);\n }\n /**\n * @internal\n */\n sameRoot(rootPath, compare = this.root.name) {\n // windows can (rarely) have case-sensitive filesystem, but\n // UNC and drive letters are always case-insensitive, and canonically\n // represented uppercase.\n rootPath = rootPath\n .toUpperCase()\n .replace(/\\//g, '\\\\')\n .replace(uncDriveRegexp, '$1\\\\');\n return rootPath === compare;\n }\n}\nexports.PathWin32 = PathWin32;\n/**\n * Path class used on all posix systems.\n *\n * Uses `'/'` as the path separator.\n */\nclass PathPosix extends PathBase {\n /**\n * separator for parsing path strings\n */\n splitSep = '/';\n /**\n * separator for generating path strings\n */\n sep = '/';\n /**\n * Do not create new Path objects directly. They should always be accessed\n * via the PathScurry class or other methods on the Path class.\n *\n * @internal\n */\n constructor(name, type = UNKNOWN, root, roots, nocase, children, opts) {\n super(name, type, root, roots, nocase, children, opts);\n }\n /**\n * @internal\n */\n getRootString(path) {\n return path.startsWith('/') ? '/' : '';\n }\n /**\n * @internal\n */\n getRoot(_rootPath) {\n return this.root;\n }\n /**\n * @internal\n */\n newChild(name, type = UNKNOWN, opts = {}) {\n return new PathPosix(name, type, this.root, this.roots, this.nocase, this.childrenCache(), opts);\n }\n}\nexports.PathPosix = PathPosix;\n/**\n * The base class for all PathScurry classes, providing the interface for path\n * resolution and filesystem operations.\n *\n * Typically, you should *not* instantiate this class directly, but rather one\n * of the platform-specific classes, or the exported {@link PathScurry} which\n * defaults to the current platform.\n */\nclass PathScurryBase {\n /**\n * The root Path entry for the current working directory of this Scurry\n */\n root;\n /**\n * The string path for the root of this Scurry's current working directory\n */\n rootPath;\n /**\n * A collection of all roots encountered, referenced by rootPath\n */\n roots;\n /**\n * The Path entry corresponding to this PathScurry's current working directory.\n */\n cwd;\n #resolveCache;\n #resolvePosixCache;\n #children;\n /**\n * Perform path comparisons case-insensitively.\n *\n * Defaults true on Darwin and Windows systems, false elsewhere.\n */\n nocase;\n #fs;\n /**\n * This class should not be instantiated directly.\n *\n * Use PathScurryWin32, PathScurryDarwin, PathScurryPosix, or PathScurry\n *\n * @internal\n */\n constructor(cwd = process.cwd(), pathImpl, sep, { nocase, childrenCacheSize = 16 * 1024, fs = defaultFS, } = {}) {\n this.#fs = fsFromOption(fs);\n if (cwd instanceof URL || cwd.startsWith('file://')) {\n cwd = (0, node_url_1.fileURLToPath)(cwd);\n }\n // resolve and split root, and then add to the store.\n // this is the only time we call path.resolve()\n const cwdPath = pathImpl.resolve(cwd);\n this.roots = Object.create(null);\n this.rootPath = this.parseRootPath(cwdPath);\n this.#resolveCache = new ResolveCache();\n this.#resolvePosixCache = new ResolveCache();\n this.#children = new ChildrenCache(childrenCacheSize);\n const split = cwdPath.substring(this.rootPath.length).split(sep);\n // resolve('/') leaves '', splits to [''], we don't want that.\n if (split.length === 1 && !split[0]) {\n split.pop();\n }\n /* c8 ignore start */\n if (nocase === undefined) {\n throw new TypeError('must provide nocase setting to PathScurryBase ctor');\n }\n /* c8 ignore stop */\n this.nocase = nocase;\n this.root = this.newRoot(this.#fs);\n this.roots[this.rootPath] = this.root;\n let prev = this.root;\n let len = split.length - 1;\n const joinSep = pathImpl.sep;\n let abs = this.rootPath;\n let sawFirst = false;\n for (const part of split) {\n const l = len--;\n prev = prev.child(part, {\n relative: new Array(l).fill('..').join(joinSep),\n relativePosix: new Array(l).fill('..').join('/'),\n fullpath: (abs += (sawFirst ? '' : joinSep) + part),\n });\n sawFirst = true;\n }\n this.cwd = prev;\n }\n /**\n * Get the depth of a provided path, string, or the cwd\n */\n depth(path = this.cwd) {\n if (typeof path === 'string') {\n path = this.cwd.resolve(path);\n }\n return path.depth();\n }\n /**\n * Return the cache of child entries. Exposed so subclasses can create\n * child Path objects in a platform-specific way.\n *\n * @internal\n */\n childrenCache() {\n return this.#children;\n }\n /**\n * Resolve one or more path strings to a resolved string\n *\n * Same interface as require('path').resolve.\n *\n * Much faster than path.resolve() when called multiple times for the same\n * path, because the resolved Path objects are cached. Much slower\n * otherwise.\n */\n resolve(...paths) {\n // first figure out the minimum number of paths we have to test\n // we always start at cwd, but any absolutes will bump the start\n let r = '';\n for (let i = paths.length - 1; i >= 0; i--) {\n const p = paths[i];\n if (!p || p === '.')\n continue;\n r = r ? `${p}/${r}` : p;\n if (this.isAbsolute(p)) {\n break;\n }\n }\n const cached = this.#resolveCache.get(r);\n if (cached !== undefined) {\n return cached;\n }\n const result = this.cwd.resolve(r).fullpath();\n this.#resolveCache.set(r, result);\n return result;\n }\n /**\n * Resolve one or more path strings to a resolved string, returning\n * the posix path. Identical to .resolve() on posix systems, but on\n * windows will return a forward-slash separated UNC path.\n *\n * Same interface as require('path').resolve.\n *\n * Much faster than path.resolve() when called multiple times for the same\n * path, because the resolved Path objects are cached. Much slower\n * otherwise.\n */\n resolvePosix(...paths) {\n // first figure out the minimum number of paths we have to test\n // we always start at cwd, but any absolutes will bump the start\n let r = '';\n for (let i = paths.length - 1; i >= 0; i--) {\n const p = paths[i];\n if (!p || p === '.')\n continue;\n r = r ? `${p}/${r}` : p;\n if (this.isAbsolute(p)) {\n break;\n }\n }\n const cached = this.#resolvePosixCache.get(r);\n if (cached !== undefined) {\n return cached;\n }\n const result = this.cwd.resolve(r).fullpathPosix();\n this.#resolvePosixCache.set(r, result);\n return result;\n }\n /**\n * find the relative path from the cwd to the supplied path string or entry\n */\n relative(entry = this.cwd) {\n if (typeof entry === 'string') {\n entry = this.cwd.resolve(entry);\n }\n return entry.relative();\n }\n /**\n * find the relative path from the cwd to the supplied path string or\n * entry, using / as the path delimiter, even on Windows.\n */\n relativePosix(entry = this.cwd) {\n if (typeof entry === 'string') {\n entry = this.cwd.resolve(entry);\n }\n return entry.relativePosix();\n }\n /**\n * Return the basename for the provided string or Path object\n */\n basename(entry = this.cwd) {\n if (typeof entry === 'string') {\n entry = this.cwd.resolve(entry);\n }\n return entry.name;\n }\n /**\n * Return the dirname for the provided string or Path object\n */\n dirname(entry = this.cwd) {\n if (typeof entry === 'string') {\n entry = this.cwd.resolve(entry);\n }\n return (entry.parent || entry).fullpath();\n }\n async readdir(entry = this.cwd, opts = {\n withFileTypes: true,\n }) {\n if (typeof entry === 'string') {\n entry = this.cwd.resolve(entry);\n }\n else if (!(entry instanceof PathBase)) {\n opts = entry;\n entry = this.cwd;\n }\n const { withFileTypes } = opts;\n if (!entry.canReaddir()) {\n return [];\n }\n else {\n const p = await entry.readdir();\n return withFileTypes ? p : p.map(e => e.name);\n }\n }\n readdirSync(entry = this.cwd, opts = {\n withFileTypes: true,\n }) {\n if (typeof entry === 'string') {\n entry = this.cwd.resolve(entry);\n }\n else if (!(entry instanceof PathBase)) {\n opts = entry;\n entry = this.cwd;\n }\n const { withFileTypes = true } = opts;\n if (!entry.canReaddir()) {\n return [];\n }\n else if (withFileTypes) {\n return entry.readdirSync();\n }\n else {\n return entry.readdirSync().map(e => e.name);\n }\n }\n /**\n * Call lstat() on the string or Path object, and update all known\n * information that can be determined.\n *\n * Note that unlike `fs.lstat()`, the returned value does not contain some\n * information, such as `mode`, `dev`, `nlink`, and `ino`. If that\n * information is required, you will need to call `fs.lstat` yourself.\n *\n * If the Path refers to a nonexistent file, or if the lstat call fails for\n * any reason, `undefined` is returned. Otherwise the updated Path object is\n * returned.\n *\n * Results are cached, and thus may be out of date if the filesystem is\n * mutated.\n */\n async lstat(entry = this.cwd) {\n if (typeof entry === 'string') {\n entry = this.cwd.resolve(entry);\n }\n return entry.lstat();\n }\n /**\n * synchronous {@link PathScurryBase.lstat}\n */\n lstatSync(entry = this.cwd) {\n if (typeof entry === 'string') {\n entry = this.cwd.resolve(entry);\n }\n return entry.lstatSync();\n }\n async readlink(entry = this.cwd, { withFileTypes } = {\n withFileTypes: false,\n }) {\n if (typeof entry === 'string') {\n entry = this.cwd.resolve(entry);\n }\n else if (!(entry instanceof PathBase)) {\n withFileTypes = entry.withFileTypes;\n entry = this.cwd;\n }\n const e = await entry.readlink();\n return withFileTypes ? e : e?.fullpath();\n }\n readlinkSync(entry = this.cwd, { withFileTypes } = {\n withFileTypes: false,\n }) {\n if (typeof entry === 'string') {\n entry = this.cwd.resolve(entry);\n }\n else if (!(entry instanceof PathBase)) {\n withFileTypes = entry.withFileTypes;\n entry = this.cwd;\n }\n const e = entry.readlinkSync();\n return withFileTypes ? e : e?.fullpath();\n }\n async realpath(entry = this.cwd, { withFileTypes } = {\n withFileTypes: false,\n }) {\n if (typeof entry === 'string') {\n entry = this.cwd.resolve(entry);\n }\n else if (!(entry instanceof PathBase)) {\n withFileTypes = entry.withFileTypes;\n entry = this.cwd;\n }\n const e = await entry.realpath();\n return withFileTypes ? e : e?.fullpath();\n }\n realpathSync(entry = this.cwd, { withFileTypes } = {\n withFileTypes: false,\n }) {\n if (typeof entry === 'string') {\n entry = this.cwd.resolve(entry);\n }\n else if (!(entry instanceof PathBase)) {\n withFileTypes = entry.withFileTypes;\n entry = this.cwd;\n }\n const e = entry.realpathSync();\n return withFileTypes ? e : e?.fullpath();\n }\n async walk(entry = this.cwd, opts = {}) {\n if (typeof entry === 'string') {\n entry = this.cwd.resolve(entry);\n }\n else if (!(entry instanceof PathBase)) {\n opts = entry;\n entry = this.cwd;\n }\n const { withFileTypes = true, follow = false, filter, walkFilter, } = opts;\n const results = [];\n if (!filter || filter(entry)) {\n results.push(withFileTypes ? entry : entry.fullpath());\n }\n const dirs = new Set();\n const walk = (dir, cb) => {\n dirs.add(dir);\n dir.readdirCB((er, entries) => {\n /* c8 ignore start */\n if (er) {\n return cb(er);\n }\n /* c8 ignore stop */\n let len = entries.length;\n if (!len)\n return cb();\n const next = () => {\n if (--len === 0) {\n cb();\n }\n };\n for (const e of entries) {\n if (!filter || filter(e)) {\n results.push(withFileTypes ? e : e.fullpath());\n }\n if (follow && e.isSymbolicLink()) {\n e.realpath()\n .then(r => (r?.isUnknown() ? r.lstat() : r))\n .then(r => r?.shouldWalk(dirs, walkFilter) ? walk(r, next) : next());\n }\n else {\n if (e.shouldWalk(dirs, walkFilter)) {\n walk(e, next);\n }\n else {\n next();\n }\n }\n }\n }, true); // zalgooooooo\n };\n const start = entry;\n return new Promise((res, rej) => {\n walk(start, er => {\n /* c8 ignore start */\n if (er)\n return rej(er);\n /* c8 ignore stop */\n res(results);\n });\n });\n }\n walkSync(entry = this.cwd, opts = {}) {\n if (typeof entry === 'string') {\n entry = this.cwd.resolve(entry);\n }\n else if (!(entry instanceof PathBase)) {\n opts = entry;\n entry = this.cwd;\n }\n const { withFileTypes = true, follow = false, filter, walkFilter, } = opts;\n const results = [];\n if (!filter || filter(entry)) {\n results.push(withFileTypes ? entry : entry.fullpath());\n }\n const dirs = new Set([entry]);\n for (const dir of dirs) {\n const entries = dir.readdirSync();\n for (const e of entries) {\n if (!filter || filter(e)) {\n results.push(withFileTypes ? e : e.fullpath());\n }\n let r = e;\n if (e.isSymbolicLink()) {\n if (!(follow && (r = e.realpathSync())))\n continue;\n if (r.isUnknown())\n r.lstatSync();\n }\n if (r.shouldWalk(dirs, walkFilter)) {\n dirs.add(r);\n }\n }\n }\n return results;\n }\n /**\n * Support for `for await`\n *\n * Alias for {@link PathScurryBase.iterate}\n *\n * Note: As of Node 19, this is very slow, compared to other methods of\n * walking. Consider using {@link PathScurryBase.stream} if memory overhead\n * and backpressure are concerns, or {@link PathScurryBase.walk} if not.\n */\n [Symbol.asyncIterator]() {\n return this.iterate();\n }\n iterate(entry = this.cwd, options = {}) {\n // iterating async over the stream is significantly more performant,\n // especially in the warm-cache scenario, because it buffers up directory\n // entries in the background instead of waiting for a yield for each one.\n if (typeof entry === 'string') {\n entry = this.cwd.resolve(entry);\n }\n else if (!(entry instanceof PathBase)) {\n options = entry;\n entry = this.cwd;\n }\n return this.stream(entry, options)[Symbol.asyncIterator]();\n }\n /**\n * Iterating over a PathScurry performs a synchronous walk.\n *\n * Alias for {@link PathScurryBase.iterateSync}\n */\n [Symbol.iterator]() {\n return this.iterateSync();\n }\n *iterateSync(entry = this.cwd, opts = {}) {\n if (typeof entry === 'string') {\n entry = this.cwd.resolve(entry);\n }\n else if (!(entry instanceof PathBase)) {\n opts = entry;\n entry = this.cwd;\n }\n const { withFileTypes = true, follow = false, filter, walkFilter, } = opts;\n if (!filter || filter(entry)) {\n yield withFileTypes ? entry : entry.fullpath();\n }\n const dirs = new Set([entry]);\n for (const dir of dirs) {\n const entries = dir.readdirSync();\n for (const e of entries) {\n if (!filter || filter(e)) {\n yield withFileTypes ? e : e.fullpath();\n }\n let r = e;\n if (e.isSymbolicLink()) {\n if (!(follow && (r = e.realpathSync())))\n continue;\n if (r.isUnknown())\n r.lstatSync();\n }\n if (r.shouldWalk(dirs, walkFilter)) {\n dirs.add(r);\n }\n }\n }\n }\n stream(entry = this.cwd, opts = {}) {\n if (typeof entry === 'string') {\n entry = this.cwd.resolve(entry);\n }\n else if (!(entry instanceof PathBase)) {\n opts = entry;\n entry = this.cwd;\n }\n const { withFileTypes = true, follow = false, filter, walkFilter, } = opts;\n const results = new minipass_1.Minipass({ objectMode: true });\n if (!filter || filter(entry)) {\n results.write(withFileTypes ? entry : entry.fullpath());\n }\n const dirs = new Set();\n const queue = [entry];\n let processing = 0;\n const process = () => {\n let paused = false;\n while (!paused) {\n const dir = queue.shift();\n if (!dir) {\n if (processing === 0)\n results.end();\n return;\n }\n processing++;\n dirs.add(dir);\n const onReaddir = (er, entries, didRealpaths = false) => {\n /* c8 ignore start */\n if (er)\n return results.emit('error', er);\n /* c8 ignore stop */\n if (follow && !didRealpaths) {\n const promises = [];\n for (const e of entries) {\n if (e.isSymbolicLink()) {\n promises.push(e\n .realpath()\n .then((r) => r?.isUnknown() ? r.lstat() : r));\n }\n }\n if (promises.length) {\n Promise.all(promises).then(() => onReaddir(null, entries, true));\n return;\n }\n }\n for (const e of entries) {\n if (e && (!filter || filter(e))) {\n if (!results.write(withFileTypes ? e : e.fullpath())) {\n paused = true;\n }\n }\n }\n processing--;\n for (const e of entries) {\n const r = e.realpathCached() || e;\n if (r.shouldWalk(dirs, walkFilter)) {\n queue.push(r);\n }\n }\n if (paused && !results.flowing) {\n results.once('drain', process);\n }\n else if (!sync) {\n process();\n }\n };\n // zalgo containment\n let sync = true;\n dir.readdirCB(onReaddir, true);\n sync = false;\n }\n };\n process();\n return results;\n }\n streamSync(entry = this.cwd, opts = {}) {\n if (typeof entry === 'string') {\n entry = this.cwd.resolve(entry);\n }\n else if (!(entry instanceof PathBase)) {\n opts = entry;\n entry = this.cwd;\n }\n const { withFileTypes = true, follow = false, filter, walkFilter, } = opts;\n const results = new minipass_1.Minipass({ objectMode: true });\n const dirs = new Set();\n if (!filter || filter(entry)) {\n results.write(withFileTypes ? entry : entry.fullpath());\n }\n const queue = [entry];\n let processing = 0;\n const process = () => {\n let paused = false;\n while (!paused) {\n const dir = queue.shift();\n if (!dir) {\n if (processing === 0)\n results.end();\n return;\n }\n processing++;\n dirs.add(dir);\n const entries = dir.readdirSync();\n for (const e of entries) {\n if (!filter || filter(e)) {\n if (!results.write(withFileTypes ? e : e.fullpath())) {\n paused = true;\n }\n }\n }\n processing--;\n for (const e of entries) {\n let r = e;\n if (e.isSymbolicLink()) {\n if (!(follow && (r = e.realpathSync())))\n continue;\n if (r.isUnknown())\n r.lstatSync();\n }\n if (r.shouldWalk(dirs, walkFilter)) {\n queue.push(r);\n }\n }\n }\n if (paused && !results.flowing)\n results.once('drain', process);\n };\n process();\n return results;\n }\n chdir(path = this.cwd) {\n const oldCwd = this.cwd;\n this.cwd = typeof path === 'string' ? this.cwd.resolve(path) : path;\n this.cwd[setAsCwd](oldCwd);\n }\n}\nexports.PathScurryBase = PathScurryBase;\n/**\n * Windows implementation of {@link PathScurryBase}\n *\n * Defaults to case insensitve, uses `'\\\\'` to generate path strings. Uses\n * {@link PathWin32} for Path objects.\n */\nclass PathScurryWin32 extends PathScurryBase {\n /**\n * separator for generating path strings\n */\n sep = '\\\\';\n constructor(cwd = process.cwd(), opts = {}) {\n const { nocase = true } = opts;\n super(cwd, node_path_1.win32, '\\\\', { ...opts, nocase });\n this.nocase = nocase;\n for (let p = this.cwd; p; p = p.parent) {\n p.nocase = this.nocase;\n }\n }\n /**\n * @internal\n */\n parseRootPath(dir) {\n // if the path starts with a single separator, it's not a UNC, and we'll\n // just get separator as the root, and driveFromUNC will return \\\n // In that case, mount \\ on the root from the cwd.\n return node_path_1.win32.parse(dir).root.toUpperCase();\n }\n /**\n * @internal\n */\n newRoot(fs) {\n return new PathWin32(this.rootPath, IFDIR, undefined, this.roots, this.nocase, this.childrenCache(), { fs });\n }\n /**\n * Return true if the provided path string is an absolute path\n */\n isAbsolute(p) {\n return (p.startsWith('/') || p.startsWith('\\\\') || /^[a-z]:(\\/|\\\\)/i.test(p));\n }\n}\nexports.PathScurryWin32 = PathScurryWin32;\n/**\n * {@link PathScurryBase} implementation for all posix systems other than Darwin.\n *\n * Defaults to case-sensitive matching, uses `'/'` to generate path strings.\n *\n * Uses {@link PathPosix} for Path objects.\n */\nclass PathScurryPosix extends PathScurryBase {\n /**\n * separator for generating path strings\n */\n sep = '/';\n constructor(cwd = process.cwd(), opts = {}) {\n const { nocase = false } = opts;\n super(cwd, node_path_1.posix, '/', { ...opts, nocase });\n this.nocase = nocase;\n }\n /**\n * @internal\n */\n parseRootPath(_dir) {\n return '/';\n }\n /**\n * @internal\n */\n newRoot(fs) {\n return new PathPosix(this.rootPath, IFDIR, undefined, this.roots, this.nocase, this.childrenCache(), { fs });\n }\n /**\n * Return true if the provided path string is an absolute path\n */\n isAbsolute(p) {\n return p.startsWith('/');\n }\n}\nexports.PathScurryPosix = PathScurryPosix;\n/**\n * {@link PathScurryBase} implementation for Darwin (macOS) systems.\n *\n * Defaults to case-insensitive matching, uses `'/'` for generating path\n * strings.\n *\n * Uses {@link PathPosix} for Path objects.\n */\nclass PathScurryDarwin extends PathScurryPosix {\n constructor(cwd = process.cwd(), opts = {}) {\n const { nocase = true } = opts;\n super(cwd, { ...opts, nocase });\n }\n}\nexports.PathScurryDarwin = PathScurryDarwin;\n/**\n * Default {@link PathBase} implementation for the current platform.\n *\n * {@link PathWin32} on Windows systems, {@link PathPosix} on all others.\n */\nexports.Path = process.platform === 'win32' ? PathWin32 : PathPosix;\n/**\n * Default {@link PathScurryBase} implementation for the current platform.\n *\n * {@link PathScurryWin32} on Windows systems, {@link PathScurryDarwin} on\n * Darwin (macOS) systems, {@link PathScurryPosix} on all others.\n */\nexports.PathScurry = process.platform === 'win32' ? PathScurryWin32\n : process.platform === 'darwin' ? PathScurryDarwin\n : PathScurryPosix;\n//# sourceMappingURL=index.js.map","\"use strict\";\n// this is just a very light wrapper around 2 arrays with an offset index\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Pattern = void 0;\nconst minimatch_1 = require(\"minimatch\");\nconst isPatternList = (pl) => pl.length >= 1;\nconst isGlobList = (gl) => gl.length >= 1;\n/**\n * An immutable-ish view on an array of glob parts and their parsed\n * results\n */\nclass Pattern {\n #patternList;\n #globList;\n #index;\n length;\n #platform;\n #rest;\n #globString;\n #isDrive;\n #isUNC;\n #isAbsolute;\n #followGlobstar = true;\n constructor(patternList, globList, index, platform) {\n if (!isPatternList(patternList)) {\n throw new TypeError('empty pattern list');\n }\n if (!isGlobList(globList)) {\n throw new TypeError('empty glob list');\n }\n if (globList.length !== patternList.length) {\n throw new TypeError('mismatched pattern list and glob list lengths');\n }\n this.length = patternList.length;\n if (index < 0 || index >= this.length) {\n throw new TypeError('index out of range');\n }\n this.#patternList = patternList;\n this.#globList = globList;\n this.#index = index;\n this.#platform = platform;\n // normalize root entries of absolute patterns on initial creation.\n if (this.#index === 0) {\n // c: => ['c:/']\n // C:/ => ['C:/']\n // C:/x => ['C:/', 'x']\n // //host/share => ['//host/share/']\n // //host/share/ => ['//host/share/']\n // //host/share/x => ['//host/share/', 'x']\n // /etc => ['/', 'etc']\n // / => ['/']\n if (this.isUNC()) {\n // '' / '' / 'host' / 'share'\n const [p0, p1, p2, p3, ...prest] = this.#patternList;\n const [g0, g1, g2, g3, ...grest] = this.#globList;\n if (prest[0] === '') {\n // ends in /\n prest.shift();\n grest.shift();\n }\n const p = [p0, p1, p2, p3, ''].join('/');\n const g = [g0, g1, g2, g3, ''].join('/');\n this.#patternList = [p, ...prest];\n this.#globList = [g, ...grest];\n this.length = this.#patternList.length;\n }\n else if (this.isDrive() || this.isAbsolute()) {\n const [p1, ...prest] = this.#patternList;\n const [g1, ...grest] = this.#globList;\n if (prest[0] === '') {\n // ends in /\n prest.shift();\n grest.shift();\n }\n const p = p1 + '/';\n const g = g1 + '/';\n this.#patternList = [p, ...prest];\n this.#globList = [g, ...grest];\n this.length = this.#patternList.length;\n }\n }\n }\n /**\n * The first entry in the parsed list of patterns\n */\n pattern() {\n return this.#patternList[this.#index];\n }\n /**\n * true of if pattern() returns a string\n */\n isString() {\n return typeof this.#patternList[this.#index] === 'string';\n }\n /**\n * true of if pattern() returns GLOBSTAR\n */\n isGlobstar() {\n return this.#patternList[this.#index] === minimatch_1.GLOBSTAR;\n }\n /**\n * true if pattern() returns a regexp\n */\n isRegExp() {\n return this.#patternList[this.#index] instanceof RegExp;\n }\n /**\n * The /-joined set of glob parts that make up this pattern\n */\n globString() {\n return (this.#globString =\n this.#globString ||\n (this.#index === 0 ?\n this.isAbsolute() ?\n this.#globList[0] + this.#globList.slice(1).join('/')\n : this.#globList.join('/')\n : this.#globList.slice(this.#index).join('/')));\n }\n /**\n * true if there are more pattern parts after this one\n */\n hasMore() {\n return this.length > this.#index + 1;\n }\n /**\n * The rest of the pattern after this part, or null if this is the end\n */\n rest() {\n if (this.#rest !== undefined)\n return this.#rest;\n if (!this.hasMore())\n return (this.#rest = null);\n this.#rest = new Pattern(this.#patternList, this.#globList, this.#index + 1, this.#platform);\n this.#rest.#isAbsolute = this.#isAbsolute;\n this.#rest.#isUNC = this.#isUNC;\n this.#rest.#isDrive = this.#isDrive;\n return this.#rest;\n }\n /**\n * true if the pattern represents a //unc/path/ on windows\n */\n isUNC() {\n const pl = this.#patternList;\n return this.#isUNC !== undefined ?\n this.#isUNC\n : (this.#isUNC =\n this.#platform === 'win32' &&\n this.#index === 0 &&\n pl[0] === '' &&\n pl[1] === '' &&\n typeof pl[2] === 'string' &&\n !!pl[2] &&\n typeof pl[3] === 'string' &&\n !!pl[3]);\n }\n // pattern like C:/...\n // split = ['C:', ...]\n // XXX: would be nice to handle patterns like `c:*` to test the cwd\n // in c: for *, but I don't know of a way to even figure out what that\n // cwd is without actually chdir'ing into it?\n /**\n * True if the pattern starts with a drive letter on Windows\n */\n isDrive() {\n const pl = this.#patternList;\n return this.#isDrive !== undefined ?\n this.#isDrive\n : (this.#isDrive =\n this.#platform === 'win32' &&\n this.#index === 0 &&\n this.length > 1 &&\n typeof pl[0] === 'string' &&\n /^[a-z]:$/i.test(pl[0]));\n }\n // pattern = '/' or '/...' or '/x/...'\n // split = ['', ''] or ['', ...] or ['', 'x', ...]\n // Drive and UNC both considered absolute on windows\n /**\n * True if the pattern is rooted on an absolute path\n */\n isAbsolute() {\n const pl = this.#patternList;\n return this.#isAbsolute !== undefined ?\n this.#isAbsolute\n : (this.#isAbsolute =\n (pl[0] === '' && pl.length > 1) ||\n this.isDrive() ||\n this.isUNC());\n }\n /**\n * consume the root of the pattern, and return it\n */\n root() {\n const p = this.#patternList[0];\n return (typeof p === 'string' && this.isAbsolute() && this.#index === 0) ?\n p\n : '';\n }\n /**\n * Check to see if the current globstar pattern is allowed to follow\n * a symbolic link.\n */\n checkFollowGlobstar() {\n return !(this.#index === 0 ||\n !this.isGlobstar() ||\n !this.#followGlobstar);\n }\n /**\n * Mark that the current globstar pattern is following a symbolic link\n */\n markFollowGlobstar() {\n if (this.#index === 0 || !this.isGlobstar() || !this.#followGlobstar)\n return false;\n this.#followGlobstar = false;\n return true;\n }\n}\nexports.Pattern = Pattern;\n//# sourceMappingURL=pattern.js.map","\"use strict\";\n// give it a pattern, and it'll be able to tell you if\n// a given path should be ignored.\n// Ignoring a path ignores its children if the pattern ends in /**\n// Ignores are always parsed in dot:true mode\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Ignore = void 0;\nconst minimatch_1 = require(\"minimatch\");\nconst pattern_js_1 = require(\"./pattern.js\");\nconst defaultPlatform = (typeof process === 'object' &&\n process &&\n typeof process.platform === 'string') ?\n process.platform\n : 'linux';\n/**\n * Class used to process ignored patterns\n */\nclass Ignore {\n relative;\n relativeChildren;\n absolute;\n absoluteChildren;\n platform;\n mmopts;\n constructor(ignored, { nobrace, nocase, noext, noglobstar, platform = defaultPlatform, }) {\n this.relative = [];\n this.absolute = [];\n this.relativeChildren = [];\n this.absoluteChildren = [];\n this.platform = platform;\n this.mmopts = {\n dot: true,\n nobrace,\n nocase,\n noext,\n noglobstar,\n optimizationLevel: 2,\n platform,\n nocomment: true,\n nonegate: true,\n };\n for (const ign of ignored)\n this.add(ign);\n }\n add(ign) {\n // this is a little weird, but it gives us a clean set of optimized\n // minimatch matchers, without getting tripped up if one of them\n // ends in /** inside a brace section, and it's only inefficient at\n // the start of the walk, not along it.\n // It'd be nice if the Pattern class just had a .test() method, but\n // handling globstars is a bit of a pita, and that code already lives\n // in minimatch anyway.\n // Another way would be if maybe Minimatch could take its set/globParts\n // as an option, and then we could at least just use Pattern to test\n // for absolute-ness.\n // Yet another way, Minimatch could take an array of glob strings, and\n // a cwd option, and do the right thing.\n const mm = new minimatch_1.Minimatch(ign, this.mmopts);\n for (let i = 0; i < mm.set.length; i++) {\n const parsed = mm.set[i];\n const globParts = mm.globParts[i];\n /* c8 ignore start */\n if (!parsed || !globParts) {\n throw new Error('invalid pattern object');\n }\n // strip off leading ./ portions\n // https://github.com/isaacs/node-glob/issues/570\n while (parsed[0] === '.' && globParts[0] === '.') {\n parsed.shift();\n globParts.shift();\n }\n /* c8 ignore stop */\n const p = new pattern_js_1.Pattern(parsed, globParts, 0, this.platform);\n const m = new minimatch_1.Minimatch(p.globString(), this.mmopts);\n const children = globParts[globParts.length - 1] === '**';\n const absolute = p.isAbsolute();\n if (absolute)\n this.absolute.push(m);\n else\n this.relative.push(m);\n if (children) {\n if (absolute)\n this.absoluteChildren.push(m);\n else\n this.relativeChildren.push(m);\n }\n }\n }\n ignored(p) {\n const fullpath = p.fullpath();\n const fullpaths = `${fullpath}/`;\n const relative = p.relative() || '.';\n const relatives = `${relative}/`;\n for (const m of this.relative) {\n if (m.match(relative) || m.match(relatives))\n return true;\n }\n for (const m of this.absolute) {\n if (m.match(fullpath) || m.match(fullpaths))\n return true;\n }\n return false;\n }\n childrenIgnored(p) {\n const fullpath = p.fullpath() + '/';\n const relative = (p.relative() || '.') + '/';\n for (const m of this.relativeChildren) {\n if (m.match(relative))\n return true;\n }\n for (const m of this.absoluteChildren) {\n if (m.match(fullpath))\n return true;\n }\n return false;\n }\n}\nexports.Ignore = Ignore;\n//# sourceMappingURL=ignore.js.map","\"use strict\";\n// synchronous utility for filtering entries and calculating subwalks\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Processor = exports.SubWalks = exports.MatchRecord = exports.HasWalkedCache = void 0;\nconst minimatch_1 = require(\"minimatch\");\n/**\n * A cache of which patterns have been processed for a given Path\n */\nclass HasWalkedCache {\n store;\n constructor(store = new Map()) {\n this.store = store;\n }\n copy() {\n return new HasWalkedCache(new Map(this.store));\n }\n hasWalked(target, pattern) {\n return this.store.get(target.fullpath())?.has(pattern.globString());\n }\n storeWalked(target, pattern) {\n const fullpath = target.fullpath();\n const cached = this.store.get(fullpath);\n if (cached)\n cached.add(pattern.globString());\n else\n this.store.set(fullpath, new Set([pattern.globString()]));\n }\n}\nexports.HasWalkedCache = HasWalkedCache;\n/**\n * A record of which paths have been matched in a given walk step,\n * and whether they only are considered a match if they are a directory,\n * and whether their absolute or relative path should be returned.\n */\nclass MatchRecord {\n store = new Map();\n add(target, absolute, ifDir) {\n const n = (absolute ? 2 : 0) | (ifDir ? 1 : 0);\n const current = this.store.get(target);\n this.store.set(target, current === undefined ? n : n & current);\n }\n // match, absolute, ifdir\n entries() {\n return [...this.store.entries()].map(([path, n]) => [\n path,\n !!(n & 2),\n !!(n & 1),\n ]);\n }\n}\nexports.MatchRecord = MatchRecord;\n/**\n * A collection of patterns that must be processed in a subsequent step\n * for a given path.\n */\nclass SubWalks {\n store = new Map();\n add(target, pattern) {\n if (!target.canReaddir()) {\n return;\n }\n const subs = this.store.get(target);\n if (subs) {\n if (!subs.find(p => p.globString() === pattern.globString())) {\n subs.push(pattern);\n }\n }\n else\n this.store.set(target, [pattern]);\n }\n get(target) {\n const subs = this.store.get(target);\n /* c8 ignore start */\n if (!subs) {\n throw new Error('attempting to walk unknown path');\n }\n /* c8 ignore stop */\n return subs;\n }\n entries() {\n return this.keys().map(k => [k, this.store.get(k)]);\n }\n keys() {\n return [...this.store.keys()].filter(t => t.canReaddir());\n }\n}\nexports.SubWalks = SubWalks;\n/**\n * The class that processes patterns for a given path.\n *\n * Handles child entry filtering, and determining whether a path's\n * directory contents must be read.\n */\nclass Processor {\n hasWalkedCache;\n matches = new MatchRecord();\n subwalks = new SubWalks();\n patterns;\n follow;\n dot;\n opts;\n constructor(opts, hasWalkedCache) {\n this.opts = opts;\n this.follow = !!opts.follow;\n this.dot = !!opts.dot;\n this.hasWalkedCache =\n hasWalkedCache ? hasWalkedCache.copy() : new HasWalkedCache();\n }\n processPatterns(target, patterns) {\n this.patterns = patterns;\n const processingSet = patterns.map(p => [target, p]);\n // map of paths to the magic-starting subwalks they need to walk\n // first item in patterns is the filter\n for (let [t, pattern] of processingSet) {\n this.hasWalkedCache.storeWalked(t, pattern);\n const root = pattern.root();\n const absolute = pattern.isAbsolute() && this.opts.absolute !== false;\n // start absolute patterns at root\n if (root) {\n t = t.resolve(root === '/' && this.opts.root !== undefined ?\n this.opts.root\n : root);\n const rest = pattern.rest();\n if (!rest) {\n this.matches.add(t, true, false);\n continue;\n }\n else {\n pattern = rest;\n }\n }\n if (t.isENOENT())\n continue;\n let p;\n let rest;\n let changed = false;\n while (typeof (p = pattern.pattern()) === 'string' &&\n (rest = pattern.rest())) {\n const c = t.resolve(p);\n t = c;\n pattern = rest;\n changed = true;\n }\n p = pattern.pattern();\n rest = pattern.rest();\n if (changed) {\n if (this.hasWalkedCache.hasWalked(t, pattern))\n continue;\n this.hasWalkedCache.storeWalked(t, pattern);\n }\n // now we have either a final string for a known entry,\n // more strings for an unknown entry,\n // or a pattern starting with magic, mounted on t.\n if (typeof p === 'string') {\n // must not be final entry, otherwise we would have\n // concatenated it earlier.\n const ifDir = p === '..' || p === '' || p === '.';\n this.matches.add(t.resolve(p), absolute, ifDir);\n continue;\n }\n else if (p === minimatch_1.GLOBSTAR) {\n // if no rest, match and subwalk pattern\n // if rest, process rest and subwalk pattern\n // if it's a symlink, but we didn't get here by way of a\n // globstar match (meaning it's the first time THIS globstar\n // has traversed a symlink), then we follow it. Otherwise, stop.\n if (!t.isSymbolicLink() ||\n this.follow ||\n pattern.checkFollowGlobstar()) {\n this.subwalks.add(t, pattern);\n }\n const rp = rest?.pattern();\n const rrest = rest?.rest();\n if (!rest || ((rp === '' || rp === '.') && !rrest)) {\n // only HAS to be a dir if it ends in **/ or **/.\n // but ending in ** will match files as well.\n this.matches.add(t, absolute, rp === '' || rp === '.');\n }\n else {\n if (rp === '..') {\n // this would mean you're matching **/.. at the fs root,\n // and no thanks, I'm not gonna test that specific case.\n /* c8 ignore start */\n const tp = t.parent || t;\n /* c8 ignore stop */\n if (!rrest)\n this.matches.add(tp, absolute, true);\n else if (!this.hasWalkedCache.hasWalked(tp, rrest)) {\n this.subwalks.add(tp, rrest);\n }\n }\n }\n }\n else if (p instanceof RegExp) {\n this.subwalks.add(t, pattern);\n }\n }\n return this;\n }\n subwalkTargets() {\n return this.subwalks.keys();\n }\n child() {\n return new Processor(this.opts, this.hasWalkedCache);\n }\n // return a new Processor containing the subwalks for each\n // child entry, and a set of matches, and\n // a hasWalkedCache that's a copy of this one\n // then we're going to call\n filterEntries(parent, entries) {\n const patterns = this.subwalks.get(parent);\n // put matches and entry walks into the results processor\n const results = this.child();\n for (const e of entries) {\n for (const pattern of patterns) {\n const absolute = pattern.isAbsolute();\n const p = pattern.pattern();\n const rest = pattern.rest();\n if (p === minimatch_1.GLOBSTAR) {\n results.testGlobstar(e, pattern, rest, absolute);\n }\n else if (p instanceof RegExp) {\n results.testRegExp(e, p, rest, absolute);\n }\n else {\n results.testString(e, p, rest, absolute);\n }\n }\n }\n return results;\n }\n testGlobstar(e, pattern, rest, absolute) {\n if (this.dot || !e.name.startsWith('.')) {\n if (!pattern.hasMore()) {\n this.matches.add(e, absolute, false);\n }\n if (e.canReaddir()) {\n // if we're in follow mode or it's not a symlink, just keep\n // testing the same pattern. If there's more after the globstar,\n // then this symlink consumes the globstar. If not, then we can\n // follow at most ONE symlink along the way, so we mark it, which\n // also checks to ensure that it wasn't already marked.\n if (this.follow || !e.isSymbolicLink()) {\n this.subwalks.add(e, pattern);\n }\n else if (e.isSymbolicLink()) {\n if (rest && pattern.checkFollowGlobstar()) {\n this.subwalks.add(e, rest);\n }\n else if (pattern.markFollowGlobstar()) {\n this.subwalks.add(e, pattern);\n }\n }\n }\n }\n // if the NEXT thing matches this entry, then also add\n // the rest.\n if (rest) {\n const rp = rest.pattern();\n if (typeof rp === 'string' &&\n // dots and empty were handled already\n rp !== '..' &&\n rp !== '' &&\n rp !== '.') {\n this.testString(e, rp, rest.rest(), absolute);\n }\n else if (rp === '..') {\n /* c8 ignore start */\n const ep = e.parent || e;\n /* c8 ignore stop */\n this.subwalks.add(ep, rest);\n }\n else if (rp instanceof RegExp) {\n this.testRegExp(e, rp, rest.rest(), absolute);\n }\n }\n }\n testRegExp(e, p, rest, absolute) {\n if (!p.test(e.name))\n return;\n if (!rest) {\n this.matches.add(e, absolute, false);\n }\n else {\n this.subwalks.add(e, rest);\n }\n }\n testString(e, p, rest, absolute) {\n // should never happen?\n if (!e.isNamed(p))\n return;\n if (!rest) {\n this.matches.add(e, absolute, false);\n }\n else {\n this.subwalks.add(e, rest);\n }\n }\n}\nexports.Processor = Processor;\n//# sourceMappingURL=processor.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.GlobStream = exports.GlobWalker = exports.GlobUtil = void 0;\n/**\n * Single-use utility classes to provide functionality to the {@link Glob}\n * methods.\n *\n * @module\n */\nconst minipass_1 = require(\"minipass\");\nconst ignore_js_1 = require(\"./ignore.js\");\nconst processor_js_1 = require(\"./processor.js\");\nconst makeIgnore = (ignore, opts) => typeof ignore === 'string' ? new ignore_js_1.Ignore([ignore], opts)\n : Array.isArray(ignore) ? new ignore_js_1.Ignore(ignore, opts)\n : ignore;\n/**\n * basic walking utilities that all the glob walker types use\n */\nclass GlobUtil {\n path;\n patterns;\n opts;\n seen = new Set();\n paused = false;\n aborted = false;\n #onResume = [];\n #ignore;\n #sep;\n signal;\n maxDepth;\n includeChildMatches;\n constructor(patterns, path, opts) {\n this.patterns = patterns;\n this.path = path;\n this.opts = opts;\n this.#sep = !opts.posix && opts.platform === 'win32' ? '\\\\' : '/';\n this.includeChildMatches = opts.includeChildMatches !== false;\n if (opts.ignore || !this.includeChildMatches) {\n this.#ignore = makeIgnore(opts.ignore ?? [], opts);\n if (!this.includeChildMatches &&\n typeof this.#ignore.add !== 'function') {\n const m = 'cannot ignore child matches, ignore lacks add() method.';\n throw new Error(m);\n }\n }\n // ignore, always set with maxDepth, but it's optional on the\n // GlobOptions type\n /* c8 ignore start */\n this.maxDepth = opts.maxDepth || Infinity;\n /* c8 ignore stop */\n if (opts.signal) {\n this.signal = opts.signal;\n this.signal.addEventListener('abort', () => {\n this.#onResume.length = 0;\n });\n }\n }\n #ignored(path) {\n return this.seen.has(path) || !!this.#ignore?.ignored?.(path);\n }\n #childrenIgnored(path) {\n return !!this.#ignore?.childrenIgnored?.(path);\n }\n // backpressure mechanism\n pause() {\n this.paused = true;\n }\n resume() {\n /* c8 ignore start */\n if (this.signal?.aborted)\n return;\n /* c8 ignore stop */\n this.paused = false;\n let fn = undefined;\n while (!this.paused && (fn = this.#onResume.shift())) {\n fn();\n }\n }\n onResume(fn) {\n if (this.signal?.aborted)\n return;\n /* c8 ignore start */\n if (!this.paused) {\n fn();\n }\n else {\n /* c8 ignore stop */\n this.#onResume.push(fn);\n }\n }\n // do the requisite realpath/stat checking, and return the path\n // to add or undefined to filter it out.\n async matchCheck(e, ifDir) {\n if (ifDir && this.opts.nodir)\n return undefined;\n let rpc;\n if (this.opts.realpath) {\n rpc = e.realpathCached() || (await e.realpath());\n if (!rpc)\n return undefined;\n e = rpc;\n }\n const needStat = e.isUnknown() || this.opts.stat;\n const s = needStat ? await e.lstat() : e;\n if (this.opts.follow && this.opts.nodir && s?.isSymbolicLink()) {\n const target = await s.realpath();\n /* c8 ignore start */\n if (target && (target.isUnknown() || this.opts.stat)) {\n await target.lstat();\n }\n /* c8 ignore stop */\n }\n return this.matchCheckTest(s, ifDir);\n }\n matchCheckTest(e, ifDir) {\n return (e &&\n (this.maxDepth === Infinity || e.depth() <= this.maxDepth) &&\n (!ifDir || e.canReaddir()) &&\n (!this.opts.nodir || !e.isDirectory()) &&\n (!this.opts.nodir ||\n !this.opts.follow ||\n !e.isSymbolicLink() ||\n !e.realpathCached()?.isDirectory()) &&\n !this.#ignored(e)) ?\n e\n : undefined;\n }\n matchCheckSync(e, ifDir) {\n if (ifDir && this.opts.nodir)\n return undefined;\n let rpc;\n if (this.opts.realpath) {\n rpc = e.realpathCached() || e.realpathSync();\n if (!rpc)\n return undefined;\n e = rpc;\n }\n const needStat = e.isUnknown() || this.opts.stat;\n const s = needStat ? e.lstatSync() : e;\n if (this.opts.follow && this.opts.nodir && s?.isSymbolicLink()) {\n const target = s.realpathSync();\n if (target && (target?.isUnknown() || this.opts.stat)) {\n target.lstatSync();\n }\n }\n return this.matchCheckTest(s, ifDir);\n }\n matchFinish(e, absolute) {\n if (this.#ignored(e))\n return;\n // we know we have an ignore if this is false, but TS doesn't\n if (!this.includeChildMatches && this.#ignore?.add) {\n const ign = `${e.relativePosix()}/**`;\n this.#ignore.add(ign);\n }\n const abs = this.opts.absolute === undefined ? absolute : this.opts.absolute;\n this.seen.add(e);\n const mark = this.opts.mark && e.isDirectory() ? this.#sep : '';\n // ok, we have what we need!\n if (this.opts.withFileTypes) {\n this.matchEmit(e);\n }\n else if (abs) {\n const abs = this.opts.posix ? e.fullpathPosix() : e.fullpath();\n this.matchEmit(abs + mark);\n }\n else {\n const rel = this.opts.posix ? e.relativePosix() : e.relative();\n const pre = this.opts.dotRelative && !rel.startsWith('..' + this.#sep) ?\n '.' + this.#sep\n : '';\n this.matchEmit(!rel ? '.' + mark : pre + rel + mark);\n }\n }\n async match(e, absolute, ifDir) {\n const p = await this.matchCheck(e, ifDir);\n if (p)\n this.matchFinish(p, absolute);\n }\n matchSync(e, absolute, ifDir) {\n const p = this.matchCheckSync(e, ifDir);\n if (p)\n this.matchFinish(p, absolute);\n }\n walkCB(target, patterns, cb) {\n /* c8 ignore start */\n if (this.signal?.aborted)\n cb();\n /* c8 ignore stop */\n this.walkCB2(target, patterns, new processor_js_1.Processor(this.opts), cb);\n }\n walkCB2(target, patterns, processor, cb) {\n if (this.#childrenIgnored(target))\n return cb();\n if (this.signal?.aborted)\n cb();\n if (this.paused) {\n this.onResume(() => this.walkCB2(target, patterns, processor, cb));\n return;\n }\n processor.processPatterns(target, patterns);\n // done processing. all of the above is sync, can be abstracted out.\n // subwalks is a map of paths to the entry filters they need\n // matches is a map of paths to [absolute, ifDir] tuples.\n let tasks = 1;\n const next = () => {\n if (--tasks === 0)\n cb();\n };\n for (const [m, absolute, ifDir] of processor.matches.entries()) {\n if (this.#ignored(m))\n continue;\n tasks++;\n this.match(m, absolute, ifDir).then(() => next());\n }\n for (const t of processor.subwalkTargets()) {\n if (this.maxDepth !== Infinity && t.depth() >= this.maxDepth) {\n continue;\n }\n tasks++;\n const childrenCached = t.readdirCached();\n if (t.calledReaddir())\n this.walkCB3(t, childrenCached, processor, next);\n else {\n t.readdirCB((_, entries) => this.walkCB3(t, entries, processor, next), true);\n }\n }\n next();\n }\n walkCB3(target, entries, processor, cb) {\n processor = processor.filterEntries(target, entries);\n let tasks = 1;\n const next = () => {\n if (--tasks === 0)\n cb();\n };\n for (const [m, absolute, ifDir] of processor.matches.entries()) {\n if (this.#ignored(m))\n continue;\n tasks++;\n this.match(m, absolute, ifDir).then(() => next());\n }\n for (const [target, patterns] of processor.subwalks.entries()) {\n tasks++;\n this.walkCB2(target, patterns, processor.child(), next);\n }\n next();\n }\n walkCBSync(target, patterns, cb) {\n /* c8 ignore start */\n if (this.signal?.aborted)\n cb();\n /* c8 ignore stop */\n this.walkCB2Sync(target, patterns, new processor_js_1.Processor(this.opts), cb);\n }\n walkCB2Sync(target, patterns, processor, cb) {\n if (this.#childrenIgnored(target))\n return cb();\n if (this.signal?.aborted)\n cb();\n if (this.paused) {\n this.onResume(() => this.walkCB2Sync(target, patterns, processor, cb));\n return;\n }\n processor.processPatterns(target, patterns);\n // done processing. all of the above is sync, can be abstracted out.\n // subwalks is a map of paths to the entry filters they need\n // matches is a map of paths to [absolute, ifDir] tuples.\n let tasks = 1;\n const next = () => {\n if (--tasks === 0)\n cb();\n };\n for (const [m, absolute, ifDir] of processor.matches.entries()) {\n if (this.#ignored(m))\n continue;\n this.matchSync(m, absolute, ifDir);\n }\n for (const t of processor.subwalkTargets()) {\n if (this.maxDepth !== Infinity && t.depth() >= this.maxDepth) {\n continue;\n }\n tasks++;\n const children = t.readdirSync();\n this.walkCB3Sync(t, children, processor, next);\n }\n next();\n }\n walkCB3Sync(target, entries, processor, cb) {\n processor = processor.filterEntries(target, entries);\n let tasks = 1;\n const next = () => {\n if (--tasks === 0)\n cb();\n };\n for (const [m, absolute, ifDir] of processor.matches.entries()) {\n if (this.#ignored(m))\n continue;\n this.matchSync(m, absolute, ifDir);\n }\n for (const [target, patterns] of processor.subwalks.entries()) {\n tasks++;\n this.walkCB2Sync(target, patterns, processor.child(), next);\n }\n next();\n }\n}\nexports.GlobUtil = GlobUtil;\nclass GlobWalker extends GlobUtil {\n matches = new Set();\n constructor(patterns, path, opts) {\n super(patterns, path, opts);\n }\n matchEmit(e) {\n this.matches.add(e);\n }\n async walk() {\n if (this.signal?.aborted)\n throw this.signal.reason;\n if (this.path.isUnknown()) {\n await this.path.lstat();\n }\n await new Promise((res, rej) => {\n this.walkCB(this.path, this.patterns, () => {\n if (this.signal?.aborted) {\n rej(this.signal.reason);\n }\n else {\n res(this.matches);\n }\n });\n });\n return this.matches;\n }\n walkSync() {\n if (this.signal?.aborted)\n throw this.signal.reason;\n if (this.path.isUnknown()) {\n this.path.lstatSync();\n }\n // nothing for the callback to do, because this never pauses\n this.walkCBSync(this.path, this.patterns, () => {\n if (this.signal?.aborted)\n throw this.signal.reason;\n });\n return this.matches;\n }\n}\nexports.GlobWalker = GlobWalker;\nclass GlobStream extends GlobUtil {\n results;\n constructor(patterns, path, opts) {\n super(patterns, path, opts);\n this.results = new minipass_1.Minipass({\n signal: this.signal,\n objectMode: true,\n });\n this.results.on('drain', () => this.resume());\n this.results.on('resume', () => this.resume());\n }\n matchEmit(e) {\n this.results.write(e);\n if (!this.results.flowing)\n this.pause();\n }\n stream() {\n const target = this.path;\n if (target.isUnknown()) {\n target.lstat().then(() => {\n this.walkCB(target, this.patterns, () => this.results.end());\n });\n }\n else {\n this.walkCB(target, this.patterns, () => this.results.end());\n }\n return this.results;\n }\n streamSync() {\n if (this.path.isUnknown()) {\n this.path.lstatSync();\n }\n this.walkCBSync(this.path, this.patterns, () => this.results.end());\n return this.results;\n }\n}\nexports.GlobStream = GlobStream;\n//# sourceMappingURL=walker.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Glob = void 0;\nconst minimatch_1 = require(\"minimatch\");\nconst node_url_1 = require(\"node:url\");\nconst path_scurry_1 = require(\"path-scurry\");\nconst pattern_js_1 = require(\"./pattern.js\");\nconst walker_js_1 = require(\"./walker.js\");\n// if no process global, just call it linux.\n// so we default to case-sensitive, / separators\nconst defaultPlatform = (typeof process === 'object' &&\n process &&\n typeof process.platform === 'string') ?\n process.platform\n : 'linux';\n/**\n * An object that can perform glob pattern traversals.\n */\nclass Glob {\n absolute;\n cwd;\n root;\n dot;\n dotRelative;\n follow;\n ignore;\n magicalBraces;\n mark;\n matchBase;\n maxDepth;\n nobrace;\n nocase;\n nodir;\n noext;\n noglobstar;\n pattern;\n platform;\n realpath;\n scurry;\n stat;\n signal;\n windowsPathsNoEscape;\n withFileTypes;\n includeChildMatches;\n /**\n * The options provided to the constructor.\n */\n opts;\n /**\n * An array of parsed immutable {@link Pattern} objects.\n */\n patterns;\n /**\n * All options are stored as properties on the `Glob` object.\n *\n * See {@link GlobOptions} for full options descriptions.\n *\n * Note that a previous `Glob` object can be passed as the\n * `GlobOptions` to another `Glob` instantiation to re-use settings\n * and caches with a new pattern.\n *\n * Traversal functions can be called multiple times to run the walk\n * again.\n */\n constructor(pattern, opts) {\n /* c8 ignore start */\n if (!opts)\n throw new TypeError('glob options required');\n /* c8 ignore stop */\n this.withFileTypes = !!opts.withFileTypes;\n this.signal = opts.signal;\n this.follow = !!opts.follow;\n this.dot = !!opts.dot;\n this.dotRelative = !!opts.dotRelative;\n this.nodir = !!opts.nodir;\n this.mark = !!opts.mark;\n if (!opts.cwd) {\n this.cwd = '';\n }\n else if (opts.cwd instanceof URL || opts.cwd.startsWith('file://')) {\n opts.cwd = (0, node_url_1.fileURLToPath)(opts.cwd);\n }\n this.cwd = opts.cwd || '';\n this.root = opts.root;\n this.magicalBraces = !!opts.magicalBraces;\n this.nobrace = !!opts.nobrace;\n this.noext = !!opts.noext;\n this.realpath = !!opts.realpath;\n this.absolute = opts.absolute;\n this.includeChildMatches = opts.includeChildMatches !== false;\n this.noglobstar = !!opts.noglobstar;\n this.matchBase = !!opts.matchBase;\n this.maxDepth =\n typeof opts.maxDepth === 'number' ? opts.maxDepth : Infinity;\n this.stat = !!opts.stat;\n this.ignore = opts.ignore;\n if (this.withFileTypes && this.absolute !== undefined) {\n throw new Error('cannot set absolute and withFileTypes:true');\n }\n if (typeof pattern === 'string') {\n pattern = [pattern];\n }\n this.windowsPathsNoEscape =\n !!opts.windowsPathsNoEscape ||\n opts.allowWindowsEscape ===\n false;\n if (this.windowsPathsNoEscape) {\n pattern = pattern.map(p => p.replace(/\\\\/g, '/'));\n }\n if (this.matchBase) {\n if (opts.noglobstar) {\n throw new TypeError('base matching requires globstar');\n }\n pattern = pattern.map(p => (p.includes('/') ? p : `./**/${p}`));\n }\n this.pattern = pattern;\n this.platform = opts.platform || defaultPlatform;\n this.opts = { ...opts, platform: this.platform };\n if (opts.scurry) {\n this.scurry = opts.scurry;\n if (opts.nocase !== undefined &&\n opts.nocase !== opts.scurry.nocase) {\n throw new Error('nocase option contradicts provided scurry option');\n }\n }\n else {\n const Scurry = opts.platform === 'win32' ? path_scurry_1.PathScurryWin32\n : opts.platform === 'darwin' ? path_scurry_1.PathScurryDarwin\n : opts.platform ? path_scurry_1.PathScurryPosix\n : path_scurry_1.PathScurry;\n this.scurry = new Scurry(this.cwd, {\n nocase: opts.nocase,\n fs: opts.fs,\n });\n }\n this.nocase = this.scurry.nocase;\n // If you do nocase:true on a case-sensitive file system, then\n // we need to use regexps instead of strings for non-magic\n // path portions, because statting `aBc` won't return results\n // for the file `AbC` for example.\n const nocaseMagicOnly = this.platform === 'darwin' || this.platform === 'win32';\n const mmo = {\n // default nocase based on platform\n ...opts,\n dot: this.dot,\n matchBase: this.matchBase,\n nobrace: this.nobrace,\n nocase: this.nocase,\n nocaseMagicOnly,\n nocomment: true,\n noext: this.noext,\n nonegate: true,\n optimizationLevel: 2,\n platform: this.platform,\n windowsPathsNoEscape: this.windowsPathsNoEscape,\n debug: !!this.opts.debug,\n };\n const mms = this.pattern.map(p => new minimatch_1.Minimatch(p, mmo));\n const [matchSet, globParts] = mms.reduce((set, m) => {\n set[0].push(...m.set);\n set[1].push(...m.globParts);\n return set;\n }, [[], []]);\n this.patterns = matchSet.map((set, i) => {\n const g = globParts[i];\n /* c8 ignore start */\n if (!g)\n throw new Error('invalid pattern object');\n /* c8 ignore stop */\n return new pattern_js_1.Pattern(set, g, 0, this.platform);\n });\n }\n async walk() {\n // Walkers always return array of Path objects, so we just have to\n // coerce them into the right shape. It will have already called\n // realpath() if the option was set to do so, so we know that's cached.\n // start out knowing the cwd, at least\n return [\n ...(await new walker_js_1.GlobWalker(this.patterns, this.scurry.cwd, {\n ...this.opts,\n maxDepth: this.maxDepth !== Infinity ?\n this.maxDepth + this.scurry.cwd.depth()\n : Infinity,\n platform: this.platform,\n nocase: this.nocase,\n includeChildMatches: this.includeChildMatches,\n }).walk()),\n ];\n }\n walkSync() {\n return [\n ...new walker_js_1.GlobWalker(this.patterns, this.scurry.cwd, {\n ...this.opts,\n maxDepth: this.maxDepth !== Infinity ?\n this.maxDepth + this.scurry.cwd.depth()\n : Infinity,\n platform: this.platform,\n nocase: this.nocase,\n includeChildMatches: this.includeChildMatches,\n }).walkSync(),\n ];\n }\n stream() {\n return new walker_js_1.GlobStream(this.patterns, this.scurry.cwd, {\n ...this.opts,\n maxDepth: this.maxDepth !== Infinity ?\n this.maxDepth + this.scurry.cwd.depth()\n : Infinity,\n platform: this.platform,\n nocase: this.nocase,\n includeChildMatches: this.includeChildMatches,\n }).stream();\n }\n streamSync() {\n return new walker_js_1.GlobStream(this.patterns, this.scurry.cwd, {\n ...this.opts,\n maxDepth: this.maxDepth !== Infinity ?\n this.maxDepth + this.scurry.cwd.depth()\n : Infinity,\n platform: this.platform,\n nocase: this.nocase,\n includeChildMatches: this.includeChildMatches,\n }).streamSync();\n }\n /**\n * Default sync iteration function. Returns a Generator that\n * iterates over the results.\n */\n iterateSync() {\n return this.streamSync()[Symbol.iterator]();\n }\n [Symbol.iterator]() {\n return this.iterateSync();\n }\n /**\n * Default async iteration function. Returns an AsyncGenerator that\n * iterates over the results.\n */\n iterate() {\n return this.stream()[Symbol.asyncIterator]();\n }\n [Symbol.asyncIterator]() {\n return this.iterate();\n }\n}\nexports.Glob = Glob;\n//# sourceMappingURL=glob.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.hasMagic = void 0;\nconst minimatch_1 = require(\"minimatch\");\n/**\n * Return true if the patterns provided contain any magic glob characters,\n * given the options provided.\n *\n * Brace expansion is not considered \"magic\" unless the `magicalBraces` option\n * is set, as brace expansion just turns one string into an array of strings.\n * So a pattern like `'x{a,b}y'` would return `false`, because `'xay'` and\n * `'xby'` both do not contain any magic glob characters, and it's treated the\n * same as if you had called it on `['xay', 'xby']`. When `magicalBraces:true`\n * is in the options, brace expansion _is_ treated as a pattern having magic.\n */\nconst hasMagic = (pattern, options = {}) => {\n if (!Array.isArray(pattern)) {\n pattern = [pattern];\n }\n for (const p of pattern) {\n if (new minimatch_1.Minimatch(p, options).hasMagic())\n return true;\n }\n return false;\n};\nexports.hasMagic = hasMagic;\n//# sourceMappingURL=has-magic.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.glob = exports.sync = exports.iterate = exports.iterateSync = exports.stream = exports.streamSync = exports.Ignore = exports.hasMagic = exports.Glob = exports.unescape = exports.escape = void 0;\nexports.globStreamSync = globStreamSync;\nexports.globStream = globStream;\nexports.globSync = globSync;\nexports.globIterateSync = globIterateSync;\nexports.globIterate = globIterate;\nconst minimatch_1 = require(\"minimatch\");\nconst glob_js_1 = require(\"./glob.js\");\nconst has_magic_js_1 = require(\"./has-magic.js\");\nvar minimatch_2 = require(\"minimatch\");\nObject.defineProperty(exports, \"escape\", { enumerable: true, get: function () { return minimatch_2.escape; } });\nObject.defineProperty(exports, \"unescape\", { enumerable: true, get: function () { return minimatch_2.unescape; } });\nvar glob_js_2 = require(\"./glob.js\");\nObject.defineProperty(exports, \"Glob\", { enumerable: true, get: function () { return glob_js_2.Glob; } });\nvar has_magic_js_2 = require(\"./has-magic.js\");\nObject.defineProperty(exports, \"hasMagic\", { enumerable: true, get: function () { return has_magic_js_2.hasMagic; } });\nvar ignore_js_1 = require(\"./ignore.js\");\nObject.defineProperty(exports, \"Ignore\", { enumerable: true, get: function () { return ignore_js_1.Ignore; } });\nfunction globStreamSync(pattern, options = {}) {\n return new glob_js_1.Glob(pattern, options).streamSync();\n}\nfunction globStream(pattern, options = {}) {\n return new glob_js_1.Glob(pattern, options).stream();\n}\nfunction globSync(pattern, options = {}) {\n return new glob_js_1.Glob(pattern, options).walkSync();\n}\nasync function glob_(pattern, options = {}) {\n return new glob_js_1.Glob(pattern, options).walk();\n}\nfunction globIterateSync(pattern, options = {}) {\n return new glob_js_1.Glob(pattern, options).iterateSync();\n}\nfunction globIterate(pattern, options = {}) {\n return new glob_js_1.Glob(pattern, options).iterate();\n}\n// aliases: glob.sync.stream() glob.stream.sync() glob.sync() etc\nexports.streamSync = globStreamSync;\nexports.stream = Object.assign(globStream, { sync: globStreamSync });\nexports.iterateSync = globIterateSync;\nexports.iterate = Object.assign(globIterate, {\n sync: globIterateSync,\n});\nexports.sync = Object.assign(globSync, {\n stream: globStreamSync,\n iterate: globIterateSync,\n});\nexports.glob = Object.assign(glob_, {\n glob: glob_,\n globSync,\n sync: exports.sync,\n globStream,\n stream: exports.stream,\n globStreamSync,\n streamSync: exports.streamSync,\n globIterate,\n iterate: exports.iterate,\n globIterateSync,\n iterateSync: exports.iterateSync,\n Glob: glob_js_1.Glob,\n hasMagic: has_magic_js_1.hasMagic,\n escape: minimatch_1.escape,\n unescape: minimatch_1.unescape,\n});\nexports.glob.glob = exports.glob;\n//# sourceMappingURL=index.js.map","/**\n * archiver-utils\n *\n * Copyright (c) 2012-2014 Chris Talkington, contributors.\n * Licensed under the MIT license.\n * https://github.com/archiverjs/node-archiver/blob/master/LICENSE-MIT\n */\nvar fs = require('graceful-fs');\nvar path = require('path');\n\nvar flatten = require('lodash/flatten');\nvar difference = require('lodash/difference');\nvar union = require('lodash/union');\nvar isPlainObject = require('lodash/isPlainObject');\n\nvar glob = require('glob');\n\nvar file = module.exports = {};\n\nvar pathSeparatorRe = /[\\/\\\\]/g;\n\n// Process specified wildcard glob patterns or filenames against a\n// callback, excluding and uniquing files in the result set.\nvar processPatterns = function(patterns, fn) {\n // Filepaths to return.\n var result = [];\n // Iterate over flattened patterns array.\n flatten(patterns).forEach(function(pattern) {\n // If the first character is ! it should be omitted\n var exclusion = pattern.indexOf('!') === 0;\n // If the pattern is an exclusion, remove the !\n if (exclusion) { pattern = pattern.slice(1); }\n // Find all matching files for this pattern.\n var matches = fn(pattern);\n if (exclusion) {\n // If an exclusion, remove matching files.\n result = difference(result, matches);\n } else {\n // Otherwise add matching files.\n result = union(result, matches);\n }\n });\n return result;\n};\n\n// True if the file path exists.\nfile.exists = function() {\n var filepath = path.join.apply(path, arguments);\n return fs.existsSync(filepath);\n};\n\n// Return an array of all file paths that match the given wildcard patterns.\nfile.expand = function(...args) {\n // If the first argument is an options object, save those options to pass\n // into the File.prototype.glob.sync method.\n var options = isPlainObject(args[0]) ? args.shift() : {};\n // Use the first argument if it's an Array, otherwise convert the arguments\n // object to an array and use that.\n var patterns = Array.isArray(args[0]) ? args[0] : args;\n // Return empty set if there are no patterns or filepaths.\n if (patterns.length === 0) { return []; }\n // Return all matching filepaths.\n var matches = processPatterns(patterns, function(pattern) {\n // Find all matching files for this pattern.\n return glob.sync(pattern, options);\n });\n // Filter result set?\n if (options.filter) {\n matches = matches.filter(function(filepath) {\n filepath = path.join(options.cwd || '', filepath);\n try {\n if (typeof options.filter === 'function') {\n return options.filter(filepath);\n } else {\n // If the file is of the right type and exists, this should work.\n return fs.statSync(filepath)[options.filter]();\n }\n } catch(e) {\n // Otherwise, it's probably not the right type.\n return false;\n }\n });\n }\n return matches;\n};\n\n// Build a multi task \"files\" object dynamically.\nfile.expandMapping = function(patterns, destBase, options) {\n options = Object.assign({\n rename: function(destBase, destPath) {\n return path.join(destBase || '', destPath);\n }\n }, options);\n var files = [];\n var fileByDest = {};\n // Find all files matching pattern, using passed-in options.\n file.expand(options, patterns).forEach(function(src) {\n var destPath = src;\n // Flatten?\n if (options.flatten) {\n destPath = path.basename(destPath);\n }\n // Change the extension?\n if (options.ext) {\n destPath = destPath.replace(/(\\.[^\\/]*)?$/, options.ext);\n }\n // Generate destination filename.\n var dest = options.rename(destBase, destPath, options);\n // Prepend cwd to src path if necessary.\n if (options.cwd) { src = path.join(options.cwd, src); }\n // Normalize filepaths to be unix-style.\n dest = dest.replace(pathSeparatorRe, '/');\n src = src.replace(pathSeparatorRe, '/');\n // Map correct src path to dest path.\n if (fileByDest[dest]) {\n // If dest already exists, push this src onto that dest's src array.\n fileByDest[dest].src.push(src);\n } else {\n // Otherwise create a new src-dest file mapping object.\n files.push({\n src: [src],\n dest: dest,\n });\n // And store a reference for later use.\n fileByDest[dest] = files[files.length - 1];\n }\n });\n return files;\n};\n\n// reusing bits of grunt's multi-task source normalization\nfile.normalizeFilesArray = function(data) {\n var files = [];\n\n data.forEach(function(obj) {\n var prop;\n if ('src' in obj || 'dest' in obj) {\n files.push(obj);\n }\n });\n\n if (files.length === 0) {\n return [];\n }\n\n files = _(files).chain().forEach(function(obj) {\n if (!('src' in obj) || !obj.src) { return; }\n // Normalize .src properties to flattened array.\n if (Array.isArray(obj.src)) {\n obj.src = flatten(obj.src);\n } else {\n obj.src = [obj.src];\n }\n }).map(function(obj) {\n // Build options object, removing unwanted properties.\n var expandOptions = Object.assign({}, obj);\n delete expandOptions.src;\n delete expandOptions.dest;\n\n // Expand file mappings.\n if (obj.expand) {\n return file.expandMapping(obj.src, obj.dest, expandOptions).map(function(mapObj) {\n // Copy obj properties to result.\n var result = Object.assign({}, obj);\n // Make a clone of the orig obj available.\n result.orig = Object.assign({}, obj);\n // Set .src and .dest, processing both as templates.\n result.src = mapObj.src;\n result.dest = mapObj.dest;\n // Remove unwanted properties.\n ['expand', 'cwd', 'flatten', 'rename', 'ext'].forEach(function(prop) {\n delete result[prop];\n });\n return result;\n });\n }\n\n // Copy obj properties to result, adding an .orig property.\n var result = Object.assign({}, obj);\n // Make a clone of the orig obj available.\n result.orig = Object.assign({}, obj);\n\n if ('src' in result) {\n // Expose an expand-on-demand getter method as .src.\n Object.defineProperty(result, 'src', {\n enumerable: true,\n get: function fn() {\n var src;\n if (!('result' in fn)) {\n src = obj.src;\n // If src is an array, flatten it. Otherwise, make it into an array.\n src = Array.isArray(src) ? flatten(src) : [src];\n // Expand src files, memoizing result.\n fn.result = file.expand(expandOptions, src);\n }\n return fn.result;\n }\n });\n }\n\n if ('dest' in result) {\n result.dest = obj.dest;\n }\n\n return result;\n }).flatten().value();\n\n return files;\n};\n","/**\n * archiver-utils\n *\n * Copyright (c) 2015 Chris Talkington.\n * Licensed under the MIT license.\n * https://github.com/archiverjs/archiver-utils/blob/master/LICENSE\n */\nvar fs = require('graceful-fs');\nvar path = require('path');\nvar isStream = require('is-stream');\nvar lazystream = require('lazystream');\nvar normalizePath = require('normalize-path');\nvar defaults = require('lodash/defaults');\n\nvar Stream = require('stream').Stream;\nvar PassThrough = require('readable-stream').PassThrough;\n\nvar utils = module.exports = {};\nutils.file = require('./file.js');\n\nutils.collectStream = function(source, callback) {\n var collection = [];\n var size = 0;\n\n source.on('error', callback);\n\n source.on('data', function(chunk) {\n collection.push(chunk);\n size += chunk.length;\n });\n\n source.on('end', function() {\n var buf = Buffer.alloc(size);\n var offset = 0;\n\n collection.forEach(function(data) {\n data.copy(buf, offset);\n offset += data.length;\n });\n\n callback(null, buf);\n });\n};\n\nutils.dateify = function(dateish) {\n dateish = dateish || new Date();\n\n if (dateish instanceof Date) {\n dateish = dateish;\n } else if (typeof dateish === 'string') {\n dateish = new Date(dateish);\n } else {\n dateish = new Date();\n }\n\n return dateish;\n};\n\n// this is slightly different from lodash version\nutils.defaults = function(object, source, guard) {\n var args = arguments;\n args[0] = args[0] || {};\n\n return defaults(...args);\n};\n\nutils.isStream = function(source) {\n return isStream(source);\n};\n\nutils.lazyReadStream = function(filepath) {\n return new lazystream.Readable(function() {\n return fs.createReadStream(filepath);\n });\n};\n\nutils.normalizeInputSource = function(source) {\n if (source === null) {\n return Buffer.alloc(0);\n } else if (typeof source === 'string') {\n return Buffer.from(source);\n } else if (utils.isStream(source)) {\n // Always pipe through a PassThrough stream to guarantee pausing the stream if it's already flowing,\n // since it will only be processed in a (distant) future iteration of the event loop, and will lose\n // data if already flowing now.\n return source.pipe(new PassThrough());\n }\n\n return source;\n};\n\nutils.sanitizePath = function(filepath) {\n return normalizePath(filepath, false).replace(/^\\w+:/, '').replace(/^(\\.\\.\\/|\\/)+/, '');\n};\n\nutils.trailingSlashIt = function(str) {\n return str.slice(-1) !== '/' ? str + '/' : str;\n};\n\nutils.unixifyPath = function(filepath) {\n return normalizePath(filepath, false).replace(/^\\w+:/, '');\n};\n\nutils.walkdir = function(dirpath, base, callback) {\n var results = [];\n\n if (typeof base === 'function') {\n callback = base;\n base = dirpath;\n }\n\n fs.readdir(dirpath, function(err, list) {\n var i = 0;\n var file;\n var filepath;\n\n if (err) {\n return callback(err);\n }\n\n (function next() {\n file = list[i++];\n\n if (!file) {\n return callback(null, results);\n }\n\n filepath = path.join(dirpath, file);\n\n fs.stat(filepath, function(err, stats) {\n results.push({\n path: filepath,\n relative: path.relative(base, filepath).replace(/\\\\/g, '/'),\n stats: stats\n });\n\n if (stats && stats.isDirectory()) {\n utils.walkdir(filepath, base, function(err, res) {\n\t if(err){\n\t return callback(err);\n\t }\n\n res.forEach(function(dirEntry) {\n results.push(dirEntry);\n });\n\t\t \n next(); \n });\n } else {\n next();\n }\n });\n })();\n });\n};\n","/**\n * Archiver Core\n *\n * @ignore\n * @license [MIT]{@link https://github.com/archiverjs/node-archiver/blob/master/LICENSE}\n * @copyright (c) 2012-2014 Chris Talkington, contributors.\n */\n\nvar util = require('util');\n\nconst ERROR_CODES = {\n 'ABORTED': 'archive was aborted',\n 'DIRECTORYDIRPATHREQUIRED': 'diretory dirpath argument must be a non-empty string value',\n 'DIRECTORYFUNCTIONINVALIDDATA': 'invalid data returned by directory custom data function',\n 'ENTRYNAMEREQUIRED': 'entry name must be a non-empty string value',\n 'FILEFILEPATHREQUIRED': 'file filepath argument must be a non-empty string value',\n 'FINALIZING': 'archive already finalizing',\n 'QUEUECLOSED': 'queue closed',\n 'NOENDMETHOD': 'no suitable finalize/end method defined by module',\n 'DIRECTORYNOTSUPPORTED': 'support for directory entries not defined by module',\n 'FORMATSET': 'archive format already set',\n 'INPUTSTEAMBUFFERREQUIRED': 'input source must be valid Stream or Buffer instance',\n 'MODULESET': 'module already set',\n 'SYMLINKNOTSUPPORTED': 'support for symlink entries not defined by module',\n 'SYMLINKFILEPATHREQUIRED': 'symlink filepath argument must be a non-empty string value',\n 'SYMLINKTARGETREQUIRED': 'symlink target argument must be a non-empty string value',\n 'ENTRYNOTSUPPORTED': 'entry not supported'\n};\n\nfunction ArchiverError(code, data) {\n Error.captureStackTrace(this, this.constructor);\n //this.name = this.constructor.name;\n this.message = ERROR_CODES[code] || code;\n this.code = code;\n this.data = data;\n}\n\nutil.inherits(ArchiverError, Error);\n\nexports = module.exports = ArchiverError;","/**\n * Archiver Core\n *\n * @ignore\n * @license [MIT]{@link https://github.com/archiverjs/node-archiver/blob/master/LICENSE}\n * @copyright (c) 2012-2014 Chris Talkington, contributors.\n */\nvar fs = require('fs');\nvar glob = require('readdir-glob');\nvar async = require('async');\nvar path = require('path');\nvar util = require('archiver-utils');\n\nvar inherits = require('util').inherits;\nvar ArchiverError = require('./error');\nvar Transform = require('readable-stream').Transform;\n\nvar win32 = process.platform === 'win32';\n\n/**\n * @constructor\n * @param {String} format The archive format to use.\n * @param {(CoreOptions|TransformOptions)} options See also {@link ZipOptions} and {@link TarOptions}.\n */\nvar Archiver = function(format, options) {\n if (!(this instanceof Archiver)) {\n return new Archiver(format, options);\n }\n\n if (typeof format !== 'string') {\n options = format;\n format = 'zip';\n }\n\n options = this.options = util.defaults(options, {\n highWaterMark: 1024 * 1024,\n statConcurrency: 4\n });\n\n Transform.call(this, options);\n\n this._format = false;\n this._module = false;\n this._pending = 0;\n this._pointer = 0;\n\n this._entriesCount = 0;\n this._entriesProcessedCount = 0;\n this._fsEntriesTotalBytes = 0;\n this._fsEntriesProcessedBytes = 0;\n\n this._queue = async.queue(this._onQueueTask.bind(this), 1);\n this._queue.drain(this._onQueueDrain.bind(this));\n\n this._statQueue = async.queue(this._onStatQueueTask.bind(this), options.statConcurrency);\n this._statQueue.drain(this._onQueueDrain.bind(this));\n\n this._state = {\n aborted: false,\n finalize: false,\n finalizing: false,\n finalized: false,\n modulePiped: false\n };\n\n this._streams = [];\n};\n\ninherits(Archiver, Transform);\n\n/**\n * Internal logic for `abort`.\n *\n * @private\n * @return void\n */\nArchiver.prototype._abort = function() {\n this._state.aborted = true;\n this._queue.kill();\n this._statQueue.kill();\n\n if (this._queue.idle()) {\n this._shutdown();\n }\n};\n\n/**\n * Internal helper for appending files.\n *\n * @private\n * @param {String} filepath The source filepath.\n * @param {EntryData} data The entry data.\n * @return void\n */\nArchiver.prototype._append = function(filepath, data) {\n data = data || {};\n\n var task = {\n source: null,\n filepath: filepath\n };\n\n if (!data.name) {\n data.name = filepath;\n }\n\n data.sourcePath = filepath;\n task.data = data;\n this._entriesCount++;\n\n if (data.stats && data.stats instanceof fs.Stats) {\n task = this._updateQueueTaskWithStats(task, data.stats);\n if (task) {\n if (data.stats.size) {\n this._fsEntriesTotalBytes += data.stats.size;\n }\n\n this._queue.push(task);\n }\n } else {\n this._statQueue.push(task);\n }\n};\n\n/**\n * Internal logic for `finalize`.\n *\n * @private\n * @return void\n */\nArchiver.prototype._finalize = function() {\n if (this._state.finalizing || this._state.finalized || this._state.aborted) {\n return;\n }\n\n this._state.finalizing = true;\n\n this._moduleFinalize();\n\n this._state.finalizing = false;\n this._state.finalized = true;\n};\n\n/**\n * Checks the various state variables to determine if we can `finalize`.\n *\n * @private\n * @return {Boolean}\n */\nArchiver.prototype._maybeFinalize = function() {\n if (this._state.finalizing || this._state.finalized || this._state.aborted) {\n return false;\n }\n\n if (this._state.finalize && this._pending === 0 && this._queue.idle() && this._statQueue.idle()) {\n this._finalize();\n return true;\n }\n\n return false;\n};\n\n/**\n * Appends an entry to the module.\n *\n * @private\n * @fires Archiver#entry\n * @param {(Buffer|Stream)} source\n * @param {EntryData} data\n * @param {Function} callback\n * @return void\n */\nArchiver.prototype._moduleAppend = function(source, data, callback) {\n if (this._state.aborted) {\n callback();\n return;\n }\n\n this._module.append(source, data, function(err) {\n this._task = null;\n\n if (this._state.aborted) {\n this._shutdown();\n return;\n }\n\n if (err) {\n this.emit('error', err);\n setImmediate(callback);\n return;\n }\n\n /**\n * Fires when the entry's input has been processed and appended to the archive.\n *\n * @event Archiver#entry\n * @type {EntryData}\n */\n this.emit('entry', data);\n this._entriesProcessedCount++;\n\n if (data.stats && data.stats.size) {\n this._fsEntriesProcessedBytes += data.stats.size;\n }\n\n /**\n * @event Archiver#progress\n * @type {ProgressData}\n */\n this.emit('progress', {\n entries: {\n total: this._entriesCount,\n processed: this._entriesProcessedCount\n },\n fs: {\n totalBytes: this._fsEntriesTotalBytes,\n processedBytes: this._fsEntriesProcessedBytes\n }\n });\n\n setImmediate(callback);\n }.bind(this));\n};\n\n/**\n * Finalizes the module.\n *\n * @private\n * @return void\n */\nArchiver.prototype._moduleFinalize = function() {\n if (typeof this._module.finalize === 'function') {\n this._module.finalize();\n } else if (typeof this._module.end === 'function') {\n this._module.end();\n } else {\n this.emit('error', new ArchiverError('NOENDMETHOD'));\n }\n};\n\n/**\n * Pipes the module to our internal stream with error bubbling.\n *\n * @private\n * @return void\n */\nArchiver.prototype._modulePipe = function() {\n this._module.on('error', this._onModuleError.bind(this));\n this._module.pipe(this);\n this._state.modulePiped = true;\n};\n\n/**\n * Determines if the current module supports a defined feature.\n *\n * @private\n * @param {String} key\n * @return {Boolean}\n */\nArchiver.prototype._moduleSupports = function(key) {\n if (!this._module.supports || !this._module.supports[key]) {\n return false;\n }\n\n return this._module.supports[key];\n};\n\n/**\n * Unpipes the module from our internal stream.\n *\n * @private\n * @return void\n */\nArchiver.prototype._moduleUnpipe = function() {\n this._module.unpipe(this);\n this._state.modulePiped = false;\n};\n\n/**\n * Normalizes entry data with fallbacks for key properties.\n *\n * @private\n * @param {Object} data\n * @param {fs.Stats} stats\n * @return {Object}\n */\nArchiver.prototype._normalizeEntryData = function(data, stats) {\n data = util.defaults(data, {\n type: 'file',\n name: null,\n date: null,\n mode: null,\n prefix: null,\n sourcePath: null,\n stats: false\n });\n\n if (stats && data.stats === false) {\n data.stats = stats;\n }\n\n var isDir = data.type === 'directory';\n\n if (data.name) {\n if (typeof data.prefix === 'string' && '' !== data.prefix) {\n data.name = data.prefix + '/' + data.name;\n data.prefix = null;\n }\n\n data.name = util.sanitizePath(data.name);\n\n if (data.type !== 'symlink' && data.name.slice(-1) === '/') {\n isDir = true;\n data.type = 'directory';\n } else if (isDir) {\n data.name += '/';\n }\n }\n\n // 511 === 0777; 493 === 0755; 438 === 0666; 420 === 0644\n if (typeof data.mode === 'number') {\n if (win32) {\n data.mode &= 511;\n } else {\n data.mode &= 4095\n }\n } else if (data.stats && data.mode === null) {\n if (win32) {\n data.mode = data.stats.mode & 511;\n } else {\n data.mode = data.stats.mode & 4095;\n }\n\n // stat isn't reliable on windows; force 0755 for dir\n if (win32 && isDir) {\n data.mode = 493;\n }\n } else if (data.mode === null) {\n data.mode = isDir ? 493 : 420;\n }\n\n if (data.stats && data.date === null) {\n data.date = data.stats.mtime;\n } else {\n data.date = util.dateify(data.date);\n }\n\n return data;\n};\n\n/**\n * Error listener that re-emits error on to our internal stream.\n *\n * @private\n * @param {Error} err\n * @return void\n */\nArchiver.prototype._onModuleError = function(err) {\n /**\n * @event Archiver#error\n * @type {ErrorData}\n */\n this.emit('error', err);\n};\n\n/**\n * Checks the various state variables after queue has drained to determine if\n * we need to `finalize`.\n *\n * @private\n * @return void\n */\nArchiver.prototype._onQueueDrain = function() {\n if (this._state.finalizing || this._state.finalized || this._state.aborted) {\n return;\n }\n\n if (this._state.finalize && this._pending === 0 && this._queue.idle() && this._statQueue.idle()) {\n this._finalize();\n }\n};\n\n/**\n * Appends each queue task to the module.\n *\n * @private\n * @param {Object} task\n * @param {Function} callback\n * @return void\n */\nArchiver.prototype._onQueueTask = function(task, callback) {\n var fullCallback = () => {\n if(task.data.callback) {\n task.data.callback();\n }\n callback();\n }\n\n if (this._state.finalizing || this._state.finalized || this._state.aborted) {\n fullCallback();\n return;\n }\n\n this._task = task;\n this._moduleAppend(task.source, task.data, fullCallback);\n};\n\n/**\n * Performs a file stat and reinjects the task back into the queue.\n *\n * @private\n * @param {Object} task\n * @param {Function} callback\n * @return void\n */\nArchiver.prototype._onStatQueueTask = function(task, callback) {\n if (this._state.finalizing || this._state.finalized || this._state.aborted) {\n callback();\n return;\n }\n\n fs.lstat(task.filepath, function(err, stats) {\n if (this._state.aborted) {\n setImmediate(callback);\n return;\n }\n\n if (err) {\n this._entriesCount--;\n\n /**\n * @event Archiver#warning\n * @type {ErrorData}\n */\n this.emit('warning', err);\n setImmediate(callback);\n return;\n }\n\n task = this._updateQueueTaskWithStats(task, stats);\n\n if (task) {\n if (stats.size) {\n this._fsEntriesTotalBytes += stats.size;\n }\n\n this._queue.push(task);\n }\n\n setImmediate(callback);\n }.bind(this));\n};\n\n/**\n * Unpipes the module and ends our internal stream.\n *\n * @private\n * @return void\n */\nArchiver.prototype._shutdown = function() {\n this._moduleUnpipe();\n this.end();\n};\n\n/**\n * Tracks the bytes emitted by our internal stream.\n *\n * @private\n * @param {Buffer} chunk\n * @param {String} encoding\n * @param {Function} callback\n * @return void\n */\nArchiver.prototype._transform = function(chunk, encoding, callback) {\n if (chunk) {\n this._pointer += chunk.length;\n }\n\n callback(null, chunk);\n};\n\n/**\n * Updates and normalizes a queue task using stats data.\n *\n * @private\n * @param {Object} task\n * @param {fs.Stats} stats\n * @return {Object}\n */\nArchiver.prototype._updateQueueTaskWithStats = function(task, stats) {\n if (stats.isFile()) {\n task.data.type = 'file';\n task.data.sourceType = 'stream';\n task.source = util.lazyReadStream(task.filepath);\n } else if (stats.isDirectory() && this._moduleSupports('directory')) {\n task.data.name = util.trailingSlashIt(task.data.name);\n task.data.type = 'directory';\n task.data.sourcePath = util.trailingSlashIt(task.filepath);\n task.data.sourceType = 'buffer';\n task.source = Buffer.concat([]);\n } else if (stats.isSymbolicLink() && this._moduleSupports('symlink')) {\n var linkPath = fs.readlinkSync(task.filepath);\n var dirName = path.dirname(task.filepath);\n task.data.type = 'symlink';\n task.data.linkname = path.relative(dirName, path.resolve(dirName, linkPath));\n task.data.sourceType = 'buffer';\n task.source = Buffer.concat([]);\n } else {\n if (stats.isDirectory()) {\n this.emit('warning', new ArchiverError('DIRECTORYNOTSUPPORTED', task.data));\n } else if (stats.isSymbolicLink()) {\n this.emit('warning', new ArchiverError('SYMLINKNOTSUPPORTED', task.data));\n } else {\n this.emit('warning', new ArchiverError('ENTRYNOTSUPPORTED', task.data));\n }\n\n return null;\n }\n\n task.data = this._normalizeEntryData(task.data, stats);\n\n return task;\n};\n\n/**\n * Aborts the archiving process, taking a best-effort approach, by:\n *\n * - removing any pending queue tasks\n * - allowing any active queue workers to finish\n * - detaching internal module pipes\n * - ending both sides of the Transform stream\n *\n * It will NOT drain any remaining sources.\n *\n * @return {this}\n */\nArchiver.prototype.abort = function() {\n if (this._state.aborted || this._state.finalized) {\n return this;\n }\n\n this._abort();\n\n return this;\n};\n\n/**\n * Appends an input source (text string, buffer, or stream) to the instance.\n *\n * When the instance has received, processed, and emitted the input, the `entry`\n * event is fired.\n *\n * @fires Archiver#entry\n * @param {(Buffer|Stream|String)} source The input source.\n * @param {EntryData} data See also {@link ZipEntryData} and {@link TarEntryData}.\n * @return {this}\n */\nArchiver.prototype.append = function(source, data) {\n if (this._state.finalize || this._state.aborted) {\n this.emit('error', new ArchiverError('QUEUECLOSED'));\n return this;\n }\n\n data = this._normalizeEntryData(data);\n\n if (typeof data.name !== 'string' || data.name.length === 0) {\n this.emit('error', new ArchiverError('ENTRYNAMEREQUIRED'));\n return this;\n }\n\n if (data.type === 'directory' && !this._moduleSupports('directory')) {\n this.emit('error', new ArchiverError('DIRECTORYNOTSUPPORTED', { name: data.name }));\n return this;\n }\n\n source = util.normalizeInputSource(source);\n\n if (Buffer.isBuffer(source)) {\n data.sourceType = 'buffer';\n } else if (util.isStream(source)) {\n data.sourceType = 'stream';\n } else {\n this.emit('error', new ArchiverError('INPUTSTEAMBUFFERREQUIRED', { name: data.name }));\n return this;\n }\n\n this._entriesCount++;\n this._queue.push({\n data: data,\n source: source\n });\n\n return this;\n};\n\n/**\n * Appends a directory and its files, recursively, given its dirpath.\n *\n * @param {String} dirpath The source directory path.\n * @param {String} destpath The destination path within the archive.\n * @param {(EntryData|Function)} data See also [ZipEntryData]{@link ZipEntryData} and\n * [TarEntryData]{@link TarEntryData}.\n * @return {this}\n */\nArchiver.prototype.directory = function(dirpath, destpath, data) {\n if (this._state.finalize || this._state.aborted) {\n this.emit('error', new ArchiverError('QUEUECLOSED'));\n return this;\n }\n\n if (typeof dirpath !== 'string' || dirpath.length === 0) {\n this.emit('error', new ArchiverError('DIRECTORYDIRPATHREQUIRED'));\n return this;\n }\n\n this._pending++;\n\n if (destpath === false) {\n destpath = '';\n } else if (typeof destpath !== 'string'){\n destpath = dirpath;\n }\n\n var dataFunction = false;\n if (typeof data === 'function') {\n dataFunction = data;\n data = {};\n } else if (typeof data !== 'object') {\n data = {};\n }\n\n var globOptions = {\n stat: true,\n dot: true\n };\n\n function onGlobEnd() {\n this._pending--;\n this._maybeFinalize();\n }\n\n function onGlobError(err) {\n this.emit('error', err);\n }\n\n function onGlobMatch(match){\n globber.pause();\n\n var ignoreMatch = false;\n var entryData = Object.assign({}, data);\n entryData.name = match.relative;\n entryData.prefix = destpath;\n entryData.stats = match.stat;\n entryData.callback = globber.resume.bind(globber);\n\n try {\n if (dataFunction) {\n entryData = dataFunction(entryData);\n\n if (entryData === false) {\n ignoreMatch = true;\n } else if (typeof entryData !== 'object') {\n throw new ArchiverError('DIRECTORYFUNCTIONINVALIDDATA', { dirpath: dirpath });\n }\n }\n } catch(e) {\n this.emit('error', e);\n return;\n }\n\n if (ignoreMatch) {\n globber.resume();\n return;\n }\n\n this._append(match.absolute, entryData);\n }\n\n var globber = glob(dirpath, globOptions);\n globber.on('error', onGlobError.bind(this));\n globber.on('match', onGlobMatch.bind(this));\n globber.on('end', onGlobEnd.bind(this));\n\n return this;\n};\n\n/**\n * Appends a file given its filepath using a\n * [lazystream]{@link https://github.com/jpommerening/node-lazystream} wrapper to\n * prevent issues with open file limits.\n *\n * When the instance has received, processed, and emitted the file, the `entry`\n * event is fired.\n *\n * @param {String} filepath The source filepath.\n * @param {EntryData} data See also [ZipEntryData]{@link ZipEntryData} and\n * [TarEntryData]{@link TarEntryData}.\n * @return {this}\n */\nArchiver.prototype.file = function(filepath, data) {\n if (this._state.finalize || this._state.aborted) {\n this.emit('error', new ArchiverError('QUEUECLOSED'));\n return this;\n }\n\n if (typeof filepath !== 'string' || filepath.length === 0) {\n this.emit('error', new ArchiverError('FILEFILEPATHREQUIRED'));\n return this;\n }\n\n this._append(filepath, data);\n\n return this;\n};\n\n/**\n * Appends multiple files that match a glob pattern.\n *\n * @param {String} pattern The [glob pattern]{@link https://github.com/isaacs/minimatch} to match.\n * @param {Object} options See [node-readdir-glob]{@link https://github.com/yqnn/node-readdir-glob#options}.\n * @param {EntryData} data See also [ZipEntryData]{@link ZipEntryData} and\n * [TarEntryData]{@link TarEntryData}.\n * @return {this}\n */\nArchiver.prototype.glob = function(pattern, options, data) {\n this._pending++;\n\n options = util.defaults(options, {\n stat: true,\n pattern: pattern\n });\n\n function onGlobEnd() {\n this._pending--;\n this._maybeFinalize();\n }\n\n function onGlobError(err) {\n this.emit('error', err);\n }\n\n function onGlobMatch(match){\n globber.pause();\n var entryData = Object.assign({}, data);\n entryData.callback = globber.resume.bind(globber);\n entryData.stats = match.stat;\n entryData.name = match.relative;\n\n this._append(match.absolute, entryData);\n }\n\n var globber = glob(options.cwd || '.', options);\n globber.on('error', onGlobError.bind(this));\n globber.on('match', onGlobMatch.bind(this));\n globber.on('end', onGlobEnd.bind(this));\n\n return this;\n};\n\n/**\n * Finalizes the instance and prevents further appending to the archive\n * structure (queue will continue til drained).\n *\n * The `end`, `close` or `finish` events on the destination stream may fire\n * right after calling this method so you should set listeners beforehand to\n * properly detect stream completion.\n *\n * @return {Promise}\n */\nArchiver.prototype.finalize = function() {\n if (this._state.aborted) {\n var abortedError = new ArchiverError('ABORTED');\n this.emit('error', abortedError);\n return Promise.reject(abortedError);\n }\n\n if (this._state.finalize) {\n var finalizingError = new ArchiverError('FINALIZING');\n this.emit('error', finalizingError);\n return Promise.reject(finalizingError);\n }\n\n this._state.finalize = true;\n\n if (this._pending === 0 && this._queue.idle() && this._statQueue.idle()) {\n this._finalize();\n }\n\n var self = this;\n\n return new Promise(function(resolve, reject) {\n var errored;\n\n self._module.on('end', function() {\n if (!errored) {\n resolve();\n }\n })\n\n self._module.on('error', function(err) {\n errored = true;\n reject(err);\n })\n })\n};\n\n/**\n * Sets the module format name used for archiving.\n *\n * @param {String} format The name of the format.\n * @return {this}\n */\nArchiver.prototype.setFormat = function(format) {\n if (this._format) {\n this.emit('error', new ArchiverError('FORMATSET'));\n return this;\n }\n\n this._format = format;\n\n return this;\n};\n\n/**\n * Sets the module used for archiving.\n *\n * @param {Function} module The function for archiver to interact with.\n * @return {this}\n */\nArchiver.prototype.setModule = function(module) {\n if (this._state.aborted) {\n this.emit('error', new ArchiverError('ABORTED'));\n return this;\n }\n\n if (this._state.module) {\n this.emit('error', new ArchiverError('MODULESET'));\n return this;\n }\n\n this._module = module;\n this._modulePipe();\n\n return this;\n};\n\n/**\n * Appends a symlink to the instance.\n *\n * This does NOT interact with filesystem and is used for programmatically creating symlinks.\n *\n * @param {String} filepath The symlink path (within archive).\n * @param {String} target The target path (within archive).\n * @param {Number} mode Sets the entry permissions.\n * @return {this}\n */\nArchiver.prototype.symlink = function(filepath, target, mode) {\n if (this._state.finalize || this._state.aborted) {\n this.emit('error', new ArchiverError('QUEUECLOSED'));\n return this;\n }\n\n if (typeof filepath !== 'string' || filepath.length === 0) {\n this.emit('error', new ArchiverError('SYMLINKFILEPATHREQUIRED'));\n return this;\n }\n\n if (typeof target !== 'string' || target.length === 0) {\n this.emit('error', new ArchiverError('SYMLINKTARGETREQUIRED', { filepath: filepath }));\n return this;\n }\n\n if (!this._moduleSupports('symlink')) {\n this.emit('error', new ArchiverError('SYMLINKNOTSUPPORTED', { filepath: filepath }));\n return this;\n }\n\n var data = {};\n data.type = 'symlink';\n data.name = filepath.replace(/\\\\/g, '/');\n data.linkname = target.replace(/\\\\/g, '/');\n data.sourceType = 'buffer';\n\n if (typeof mode === \"number\") {\n data.mode = mode;\n }\n\n this._entriesCount++;\n this._queue.push({\n data: data,\n source: Buffer.concat([])\n });\n\n return this;\n};\n\n/**\n * Returns the current length (in bytes) that has been emitted.\n *\n * @return {Number}\n */\nArchiver.prototype.pointer = function() {\n return this._pointer;\n};\n\n/**\n * Middleware-like helper that has yet to be fully implemented.\n *\n * @private\n * @param {Function} plugin\n * @return {this}\n */\nArchiver.prototype.use = function(plugin) {\n this._streams.push(plugin);\n return this;\n};\n\nmodule.exports = Archiver;\n\n/**\n * @typedef {Object} CoreOptions\n * @global\n * @property {Number} [statConcurrency=4] Sets the number of workers used to\n * process the internal fs stat queue.\n */\n\n/**\n * @typedef {Object} TransformOptions\n * @property {Boolean} [allowHalfOpen=true] If set to false, then the stream\n * will automatically end the readable side when the writable side ends and vice\n * versa.\n * @property {Boolean} [readableObjectMode=false] Sets objectMode for readable\n * side of the stream. Has no effect if objectMode is true.\n * @property {Boolean} [writableObjectMode=false] Sets objectMode for writable\n * side of the stream. Has no effect if objectMode is true.\n * @property {Boolean} [decodeStrings=true] Whether or not to decode strings\n * into Buffers before passing them to _write(). `Writable`\n * @property {String} [encoding=NULL] If specified, then buffers will be decoded\n * to strings using the specified encoding. `Readable`\n * @property {Number} [highWaterMark=16kb] The maximum number of bytes to store\n * in the internal buffer before ceasing to read from the underlying resource.\n * `Readable` `Writable`\n * @property {Boolean} [objectMode=false] Whether this stream should behave as a\n * stream of objects. Meaning that stream.read(n) returns a single value instead\n * of a Buffer of size n. `Readable` `Writable`\n */\n\n/**\n * @typedef {Object} EntryData\n * @property {String} name Sets the entry name including internal path.\n * @property {(String|Date)} [date=NOW()] Sets the entry date.\n * @property {Number} [mode=D:0755/F:0644] Sets the entry permissions.\n * @property {String} [prefix] Sets a path prefix for the entry name. Useful\n * when working with methods like `directory` or `glob`.\n * @property {fs.Stats} [stats] Sets the fs stat data for this entry allowing\n * for reduction of fs stat calls when stat data is already known.\n */\n\n/**\n * @typedef {Object} ErrorData\n * @property {String} message The message of the error.\n * @property {String} code The error code assigned to this error.\n * @property {String} data Additional data provided for reporting or debugging (where available).\n */\n\n/**\n * @typedef {Object} ProgressData\n * @property {Object} entries\n * @property {Number} entries.total Number of entries that have been appended.\n * @property {Number} entries.processed Number of entries that have been processed.\n * @property {Object} fs\n * @property {Number} fs.totalBytes Number of bytes that have been appended. Calculated asynchronously and might not be accurate: it growth while entries are added. (based on fs.Stats)\n * @property {Number} fs.processedBytes Number of bytes that have been processed. (based on fs.Stats)\n */\n","/**\n * node-compress-commons\n *\n * Copyright (c) 2014 Chris Talkington, contributors.\n * Licensed under the MIT license.\n * https://github.com/archiverjs/node-compress-commons/blob/master/LICENSE-MIT\n */\nvar ArchiveEntry = module.exports = function() {};\n\nArchiveEntry.prototype.getName = function() {};\n\nArchiveEntry.prototype.getSize = function() {};\n\nArchiveEntry.prototype.getLastModifiedDate = function() {};\n\nArchiveEntry.prototype.isDirectory = function() {};","/**\n * node-compress-commons\n *\n * Copyright (c) 2014 Chris Talkington, contributors.\n * Licensed under the MIT license.\n * https://github.com/archiverjs/node-compress-commons/blob/master/LICENSE-MIT\n */\nvar util = module.exports = {};\n\nutil.dateToDos = function(d, forceLocalTime) {\n forceLocalTime = forceLocalTime || false;\n\n var year = forceLocalTime ? d.getFullYear() : d.getUTCFullYear();\n\n if (year < 1980) {\n return 2162688; // 1980-1-1 00:00:00\n } else if (year >= 2044) {\n return 2141175677; // 2043-12-31 23:59:58\n }\n\n var val = {\n year: year,\n month: forceLocalTime ? d.getMonth() : d.getUTCMonth(),\n date: forceLocalTime ? d.getDate() : d.getUTCDate(),\n hours: forceLocalTime ? d.getHours() : d.getUTCHours(),\n minutes: forceLocalTime ? d.getMinutes() : d.getUTCMinutes(),\n seconds: forceLocalTime ? d.getSeconds() : d.getUTCSeconds()\n };\n\n return ((val.year - 1980) << 25) | ((val.month + 1) << 21) | (val.date << 16) |\n (val.hours << 11) | (val.minutes << 5) | (val.seconds / 2);\n};\n\nutil.dosToDate = function(dos) {\n return new Date(((dos >> 25) & 0x7f) + 1980, ((dos >> 21) & 0x0f) - 1, (dos >> 16) & 0x1f, (dos >> 11) & 0x1f, (dos >> 5) & 0x3f, (dos & 0x1f) << 1);\n};\n\nutil.fromDosTime = function(buf) {\n return util.dosToDate(buf.readUInt32LE(0));\n};\n\nutil.getEightBytes = function(v) {\n var buf = Buffer.alloc(8);\n buf.writeUInt32LE(v % 0x0100000000, 0);\n buf.writeUInt32LE((v / 0x0100000000) | 0, 4);\n\n return buf;\n};\n\nutil.getShortBytes = function(v) {\n var buf = Buffer.alloc(2);\n buf.writeUInt16LE((v & 0xFFFF) >>> 0, 0);\n\n return buf;\n};\n\nutil.getShortBytesValue = function(buf, offset) {\n return buf.readUInt16LE(offset);\n};\n\nutil.getLongBytes = function(v) {\n var buf = Buffer.alloc(4);\n buf.writeUInt32LE((v & 0xFFFFFFFF) >>> 0, 0);\n\n return buf;\n};\n\nutil.getLongBytesValue = function(buf, offset) {\n return buf.readUInt32LE(offset);\n};\n\nutil.toDosTime = function(d) {\n return util.getLongBytes(util.dateToDos(d));\n};","/**\n * node-compress-commons\n *\n * Copyright (c) 2014 Chris Talkington, contributors.\n * Licensed under the MIT license.\n * https://github.com/archiverjs/node-compress-commons/blob/master/LICENSE-MIT\n */\nvar zipUtil = require('./util');\n\nvar DATA_DESCRIPTOR_FLAG = 1 << 3;\nvar ENCRYPTION_FLAG = 1 << 0;\nvar NUMBER_OF_SHANNON_FANO_TREES_FLAG = 1 << 2;\nvar SLIDING_DICTIONARY_SIZE_FLAG = 1 << 1;\nvar STRONG_ENCRYPTION_FLAG = 1 << 6;\nvar UFT8_NAMES_FLAG = 1 << 11;\n\nvar GeneralPurposeBit = module.exports = function() {\n if (!(this instanceof GeneralPurposeBit)) {\n return new GeneralPurposeBit();\n }\n\n this.descriptor = false;\n this.encryption = false;\n this.utf8 = false;\n this.numberOfShannonFanoTrees = 0;\n this.strongEncryption = false;\n this.slidingDictionarySize = 0;\n\n return this;\n};\n\nGeneralPurposeBit.prototype.encode = function() {\n return zipUtil.getShortBytes(\n (this.descriptor ? DATA_DESCRIPTOR_FLAG : 0) |\n (this.utf8 ? UFT8_NAMES_FLAG : 0) |\n (this.encryption ? ENCRYPTION_FLAG : 0) |\n (this.strongEncryption ? STRONG_ENCRYPTION_FLAG : 0)\n );\n};\n\nGeneralPurposeBit.prototype.parse = function(buf, offset) {\n var flag = zipUtil.getShortBytesValue(buf, offset);\n var gbp = new GeneralPurposeBit();\n\n gbp.useDataDescriptor((flag & DATA_DESCRIPTOR_FLAG) !== 0);\n gbp.useUTF8ForNames((flag & UFT8_NAMES_FLAG) !== 0);\n gbp.useStrongEncryption((flag & STRONG_ENCRYPTION_FLAG) !== 0);\n gbp.useEncryption((flag & ENCRYPTION_FLAG) !== 0);\n gbp.setSlidingDictionarySize((flag & SLIDING_DICTIONARY_SIZE_FLAG) !== 0 ? 8192 : 4096);\n gbp.setNumberOfShannonFanoTrees((flag & NUMBER_OF_SHANNON_FANO_TREES_FLAG) !== 0 ? 3 : 2);\n\n return gbp;\n};\n\nGeneralPurposeBit.prototype.setNumberOfShannonFanoTrees = function(n) {\n this.numberOfShannonFanoTrees = n;\n};\n\nGeneralPurposeBit.prototype.getNumberOfShannonFanoTrees = function() {\n return this.numberOfShannonFanoTrees;\n};\n\nGeneralPurposeBit.prototype.setSlidingDictionarySize = function(n) {\n this.slidingDictionarySize = n;\n};\n\nGeneralPurposeBit.prototype.getSlidingDictionarySize = function() {\n return this.slidingDictionarySize;\n};\n\nGeneralPurposeBit.prototype.useDataDescriptor = function(b) {\n this.descriptor = b;\n};\n\nGeneralPurposeBit.prototype.usesDataDescriptor = function() {\n return this.descriptor;\n};\n\nGeneralPurposeBit.prototype.useEncryption = function(b) {\n this.encryption = b;\n};\n\nGeneralPurposeBit.prototype.usesEncryption = function() {\n return this.encryption;\n};\n\nGeneralPurposeBit.prototype.useStrongEncryption = function(b) {\n this.strongEncryption = b;\n};\n\nGeneralPurposeBit.prototype.usesStrongEncryption = function() {\n return this.strongEncryption;\n};\n\nGeneralPurposeBit.prototype.useUTF8ForNames = function(b) {\n this.utf8 = b;\n};\n\nGeneralPurposeBit.prototype.usesUTF8ForNames = function() {\n return this.utf8;\n};","/**\n * node-compress-commons\n *\n * Copyright (c) 2014 Chris Talkington, contributors.\n * Licensed under the MIT license.\n * https://github.com/archiverjs/node-compress-commons/blob/master/LICENSE-MIT\n */\nmodule.exports = {\n /**\n * Bits used for permissions (and sticky bit)\n */\n PERM_MASK: 4095, // 07777\n\n /**\n * Bits used to indicate the filesystem object type.\n */\n FILE_TYPE_FLAG: 61440, // 0170000\n\n /**\n * Indicates symbolic links.\n */\n LINK_FLAG: 40960, // 0120000\n\n /**\n * Indicates plain files.\n */\n FILE_FLAG: 32768, // 0100000\n\n /**\n * Indicates directories.\n */\n DIR_FLAG: 16384, // 040000\n\n // ----------------------------------------------------------\n // somewhat arbitrary choices that are quite common for shared\n // installations\n // -----------------------------------------------------------\n\n /**\n * Default permissions for symbolic links.\n */\n DEFAULT_LINK_PERM: 511, // 0777\n\n /**\n * Default permissions for directories.\n */\n DEFAULT_DIR_PERM: 493, // 0755\n\n /**\n * Default permissions for plain files.\n */\n DEFAULT_FILE_PERM: 420 // 0644\n};","/**\n * node-compress-commons\n *\n * Copyright (c) 2014 Chris Talkington, contributors.\n * Licensed under the MIT license.\n * https://github.com/archiverjs/node-compress-commons/blob/master/LICENSE-MIT\n */\nmodule.exports = {\n WORD: 4,\n DWORD: 8,\n EMPTY: Buffer.alloc(0),\n\n SHORT: 2,\n SHORT_MASK: 0xffff,\n SHORT_SHIFT: 16,\n SHORT_ZERO: Buffer.from(Array(2)),\n LONG: 4,\n LONG_ZERO: Buffer.from(Array(4)),\n\n MIN_VERSION_INITIAL: 10,\n MIN_VERSION_DATA_DESCRIPTOR: 20,\n MIN_VERSION_ZIP64: 45,\n VERSION_MADEBY: 45,\n\n METHOD_STORED: 0,\n METHOD_DEFLATED: 8,\n\n PLATFORM_UNIX: 3,\n PLATFORM_FAT: 0,\n\n SIG_LFH: 0x04034b50,\n SIG_DD: 0x08074b50,\n SIG_CFH: 0x02014b50,\n SIG_EOCD: 0x06054b50,\n SIG_ZIP64_EOCD: 0x06064B50,\n SIG_ZIP64_EOCD_LOC: 0x07064B50,\n\n ZIP64_MAGIC_SHORT: 0xffff,\n ZIP64_MAGIC: 0xffffffff,\n ZIP64_EXTRA_ID: 0x0001,\n\n ZLIB_NO_COMPRESSION: 0,\n ZLIB_BEST_SPEED: 1,\n ZLIB_BEST_COMPRESSION: 9,\n ZLIB_DEFAULT_COMPRESSION: -1,\n\n MODE_MASK: 0xFFF,\n DEFAULT_FILE_MODE: 33188, // 010644 = -rw-r--r-- = S_IFREG | S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH\n DEFAULT_DIR_MODE: 16877, // 040755 = drwxr-xr-x = S_IFDIR | S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH\n\n EXT_FILE_ATTR_DIR: 1106051088, // 010173200020 = drwxr-xr-x = (((S_IFDIR | 0755) << 16) | S_DOS_D)\n EXT_FILE_ATTR_FILE: 2175008800, // 020151000040 = -rw-r--r-- = (((S_IFREG | 0644) << 16) | S_DOS_A) >>> 0\n\n // Unix file types\n S_IFMT: 61440, // 0170000 type of file mask\n S_IFIFO: 4096, // 010000 named pipe (fifo)\n S_IFCHR: 8192, // 020000 character special\n S_IFDIR: 16384, // 040000 directory\n S_IFBLK: 24576, // 060000 block special\n S_IFREG: 32768, // 0100000 regular\n S_IFLNK: 40960, // 0120000 symbolic link\n S_IFSOCK: 49152, // 0140000 socket\n\n // DOS file type flags\n S_DOS_A: 32, // 040 Archive\n S_DOS_D: 16, // 020 Directory\n S_DOS_V: 8, // 010 Volume\n S_DOS_S: 4, // 04 System\n S_DOS_H: 2, // 02 Hidden\n S_DOS_R: 1 // 01 Read Only\n};\n","/**\n * node-compress-commons\n *\n * Copyright (c) 2014 Chris Talkington, contributors.\n * Licensed under the MIT license.\n * https://github.com/archiverjs/node-compress-commons/blob/master/LICENSE-MIT\n */\nvar inherits = require('util').inherits;\nvar normalizePath = require('normalize-path');\n\nvar ArchiveEntry = require('../archive-entry');\nvar GeneralPurposeBit = require('./general-purpose-bit');\nvar UnixStat = require('./unix-stat');\n\nvar constants = require('./constants');\nvar zipUtil = require('./util');\n\nvar ZipArchiveEntry = module.exports = function(name) {\n if (!(this instanceof ZipArchiveEntry)) {\n return new ZipArchiveEntry(name);\n }\n\n ArchiveEntry.call(this);\n\n this.platform = constants.PLATFORM_FAT;\n this.method = -1;\n\n this.name = null;\n this.size = 0;\n this.csize = 0;\n this.gpb = new GeneralPurposeBit();\n this.crc = 0;\n this.time = -1;\n\n this.minver = constants.MIN_VERSION_INITIAL;\n this.mode = -1;\n this.extra = null;\n this.exattr = 0;\n this.inattr = 0;\n this.comment = null;\n\n if (name) {\n this.setName(name);\n }\n};\n\ninherits(ZipArchiveEntry, ArchiveEntry);\n\n/**\n * Returns the extra fields related to the entry.\n *\n * @returns {Buffer}\n */\nZipArchiveEntry.prototype.getCentralDirectoryExtra = function() {\n return this.getExtra();\n};\n\n/**\n * Returns the comment set for the entry.\n *\n * @returns {string}\n */\nZipArchiveEntry.prototype.getComment = function() {\n return this.comment !== null ? this.comment : '';\n};\n\n/**\n * Returns the compressed size of the entry.\n *\n * @returns {number}\n */\nZipArchiveEntry.prototype.getCompressedSize = function() {\n return this.csize;\n};\n\n/**\n * Returns the CRC32 digest for the entry.\n *\n * @returns {number}\n */\nZipArchiveEntry.prototype.getCrc = function() {\n return this.crc;\n};\n\n/**\n * Returns the external file attributes for the entry.\n *\n * @returns {number}\n */\nZipArchiveEntry.prototype.getExternalAttributes = function() {\n return this.exattr;\n};\n\n/**\n * Returns the extra fields related to the entry.\n *\n * @returns {Buffer}\n */\nZipArchiveEntry.prototype.getExtra = function() {\n return this.extra !== null ? this.extra : constants.EMPTY;\n};\n\n/**\n * Returns the general purpose bits related to the entry.\n *\n * @returns {GeneralPurposeBit}\n */\nZipArchiveEntry.prototype.getGeneralPurposeBit = function() {\n return this.gpb;\n};\n\n/**\n * Returns the internal file attributes for the entry.\n *\n * @returns {number}\n */\nZipArchiveEntry.prototype.getInternalAttributes = function() {\n return this.inattr;\n};\n\n/**\n * Returns the last modified date of the entry.\n *\n * @returns {number}\n */\nZipArchiveEntry.prototype.getLastModifiedDate = function() {\n return this.getTime();\n};\n\n/**\n * Returns the extra fields related to the entry.\n *\n * @returns {Buffer}\n */\nZipArchiveEntry.prototype.getLocalFileDataExtra = function() {\n return this.getExtra();\n};\n\n/**\n * Returns the compression method used on the entry.\n *\n * @returns {number}\n */\nZipArchiveEntry.prototype.getMethod = function() {\n return this.method;\n};\n\n/**\n * Returns the filename of the entry.\n *\n * @returns {string}\n */\nZipArchiveEntry.prototype.getName = function() {\n return this.name;\n};\n\n/**\n * Returns the platform on which the entry was made.\n *\n * @returns {number}\n */\nZipArchiveEntry.prototype.getPlatform = function() {\n return this.platform;\n};\n\n/**\n * Returns the size of the entry.\n *\n * @returns {number}\n */\nZipArchiveEntry.prototype.getSize = function() {\n return this.size;\n};\n\n/**\n * Returns a date object representing the last modified date of the entry.\n *\n * @returns {number|Date}\n */\nZipArchiveEntry.prototype.getTime = function() {\n return this.time !== -1 ? zipUtil.dosToDate(this.time) : -1;\n};\n\n/**\n * Returns the DOS timestamp for the entry.\n *\n * @returns {number}\n */\nZipArchiveEntry.prototype.getTimeDos = function() {\n return this.time !== -1 ? this.time : 0;\n};\n\n/**\n * Returns the UNIX file permissions for the entry.\n *\n * @returns {number}\n */\nZipArchiveEntry.prototype.getUnixMode = function() {\n return this.platform !== constants.PLATFORM_UNIX ? 0 : ((this.getExternalAttributes() >> constants.SHORT_SHIFT) & constants.SHORT_MASK);\n};\n\n/**\n * Returns the version of ZIP needed to extract the entry.\n *\n * @returns {number}\n */\nZipArchiveEntry.prototype.getVersionNeededToExtract = function() {\n return this.minver;\n};\n\n/**\n * Sets the comment of the entry.\n *\n * @param comment\n */\nZipArchiveEntry.prototype.setComment = function(comment) {\n if (Buffer.byteLength(comment) !== comment.length) {\n this.getGeneralPurposeBit().useUTF8ForNames(true);\n }\n\n this.comment = comment;\n};\n\n/**\n * Sets the compressed size of the entry.\n *\n * @param size\n */\nZipArchiveEntry.prototype.setCompressedSize = function(size) {\n if (size < 0) {\n throw new Error('invalid entry compressed size');\n }\n\n this.csize = size;\n};\n\n/**\n * Sets the checksum of the entry.\n *\n * @param crc\n */\nZipArchiveEntry.prototype.setCrc = function(crc) {\n if (crc < 0) {\n throw new Error('invalid entry crc32');\n }\n\n this.crc = crc;\n};\n\n/**\n * Sets the external file attributes of the entry.\n *\n * @param attr\n */\nZipArchiveEntry.prototype.setExternalAttributes = function(attr) {\n this.exattr = attr >>> 0;\n};\n\n/**\n * Sets the extra fields related to the entry.\n *\n * @param extra\n */\nZipArchiveEntry.prototype.setExtra = function(extra) {\n this.extra = extra;\n};\n\n/**\n * Sets the general purpose bits related to the entry.\n *\n * @param gpb\n */\nZipArchiveEntry.prototype.setGeneralPurposeBit = function(gpb) {\n if (!(gpb instanceof GeneralPurposeBit)) {\n throw new Error('invalid entry GeneralPurposeBit');\n }\n\n this.gpb = gpb;\n};\n\n/**\n * Sets the internal file attributes of the entry.\n *\n * @param attr\n */\nZipArchiveEntry.prototype.setInternalAttributes = function(attr) {\n this.inattr = attr;\n};\n\n/**\n * Sets the compression method of the entry.\n *\n * @param method\n */\nZipArchiveEntry.prototype.setMethod = function(method) {\n if (method < 0) {\n throw new Error('invalid entry compression method');\n }\n\n this.method = method;\n};\n\n/**\n * Sets the name of the entry.\n *\n * @param name\n * @param prependSlash\n */\nZipArchiveEntry.prototype.setName = function(name, prependSlash = false) {\n name = normalizePath(name, false)\n .replace(/^\\w+:/, '')\n .replace(/^(\\.\\.\\/|\\/)+/, '');\n\n if (prependSlash) {\n name = `/${name}`;\n }\n\n if (Buffer.byteLength(name) !== name.length) {\n this.getGeneralPurposeBit().useUTF8ForNames(true);\n }\n\n this.name = name;\n};\n\n/**\n * Sets the platform on which the entry was made.\n *\n * @param platform\n */\nZipArchiveEntry.prototype.setPlatform = function(platform) {\n this.platform = platform;\n};\n\n/**\n * Sets the size of the entry.\n *\n * @param size\n */\nZipArchiveEntry.prototype.setSize = function(size) {\n if (size < 0) {\n throw new Error('invalid entry size');\n }\n\n this.size = size;\n};\n\n/**\n * Sets the time of the entry.\n *\n * @param time\n * @param forceLocalTime\n */\nZipArchiveEntry.prototype.setTime = function(time, forceLocalTime) {\n if (!(time instanceof Date)) {\n throw new Error('invalid entry time');\n }\n\n this.time = zipUtil.dateToDos(time, forceLocalTime);\n};\n\n/**\n * Sets the UNIX file permissions for the entry.\n *\n * @param mode\n */\nZipArchiveEntry.prototype.setUnixMode = function(mode) {\n mode |= this.isDirectory() ? constants.S_IFDIR : constants.S_IFREG;\n\n var extattr = 0;\n extattr |= (mode << constants.SHORT_SHIFT) | (this.isDirectory() ? constants.S_DOS_D : constants.S_DOS_A);\n\n this.setExternalAttributes(extattr);\n this.mode = mode & constants.MODE_MASK;\n this.platform = constants.PLATFORM_UNIX;\n};\n\n/**\n * Sets the version of ZIP needed to extract this entry.\n *\n * @param minver\n */\nZipArchiveEntry.prototype.setVersionNeededToExtract = function(minver) {\n this.minver = minver;\n};\n\n/**\n * Returns true if this entry represents a directory.\n *\n * @returns {boolean}\n */\nZipArchiveEntry.prototype.isDirectory = function() {\n return this.getName().slice(-1) === '/';\n};\n\n/**\n * Returns true if this entry represents a unix symlink,\n * in which case the entry's content contains the target path\n * for the symlink.\n *\n * @returns {boolean}\n */\nZipArchiveEntry.prototype.isUnixSymlink = function() {\n return (this.getUnixMode() & UnixStat.FILE_TYPE_FLAG) === UnixStat.LINK_FLAG;\n};\n\n/**\n * Returns true if this entry is using the ZIP64 extension of ZIP.\n *\n * @returns {boolean}\n */\nZipArchiveEntry.prototype.isZip64 = function() {\n return this.csize > constants.ZIP64_MAGIC || this.size > constants.ZIP64_MAGIC;\n};\n","'use strict';\n\nconst isStream = stream =>\n\tstream !== null &&\n\ttypeof stream === 'object' &&\n\ttypeof stream.pipe === 'function';\n\nisStream.writable = stream =>\n\tisStream(stream) &&\n\tstream.writable !== false &&\n\ttypeof stream._write === 'function' &&\n\ttypeof stream._writableState === 'object';\n\nisStream.readable = stream =>\n\tisStream(stream) &&\n\tstream.readable !== false &&\n\ttypeof stream._read === 'function' &&\n\ttypeof stream._readableState === 'object';\n\nisStream.duplex = stream =>\n\tisStream.writable(stream) &&\n\tisStream.readable(stream);\n\nisStream.transform = stream =>\n\tisStream.duplex(stream) &&\n\ttypeof stream._transform === 'function';\n\nmodule.exports = isStream;\n","/**\n * node-compress-commons\n *\n * Copyright (c) 2014 Chris Talkington, contributors.\n * Licensed under the MIT license.\n * https://github.com/archiverjs/node-compress-commons/blob/master/LICENSE-MIT\n */\nvar Stream = require('stream').Stream;\nvar PassThrough = require('readable-stream').PassThrough;\nvar isStream = require('is-stream');\n\nvar util = module.exports = {};\n\nutil.normalizeInputSource = function(source) {\n if (source === null) {\n return Buffer.alloc(0);\n } else if (typeof source === 'string') {\n return Buffer.from(source);\n } else if (isStream(source) && !source._readableState) {\n var normalized = new PassThrough();\n source.pipe(normalized);\n\n return normalized;\n }\n\n return source;\n};","/**\n * node-compress-commons\n *\n * Copyright (c) 2014 Chris Talkington, contributors.\n * Licensed under the MIT license.\n * https://github.com/archiverjs/node-compress-commons/blob/master/LICENSE-MIT\n */\nvar inherits = require('util').inherits;\nvar isStream = require('is-stream');\nvar Transform = require('readable-stream').Transform;\n\nvar ArchiveEntry = require('./archive-entry');\nvar util = require('../util');\n\nvar ArchiveOutputStream = module.exports = function(options) {\n if (!(this instanceof ArchiveOutputStream)) {\n return new ArchiveOutputStream(options);\n }\n\n Transform.call(this, options);\n\n this.offset = 0;\n this._archive = {\n finish: false,\n finished: false,\n processing: false\n };\n};\n\ninherits(ArchiveOutputStream, Transform);\n\nArchiveOutputStream.prototype._appendBuffer = function(zae, source, callback) {\n // scaffold only\n};\n\nArchiveOutputStream.prototype._appendStream = function(zae, source, callback) {\n // scaffold only\n};\n\nArchiveOutputStream.prototype._emitErrorCallback = function(err) {\n if (err) {\n this.emit('error', err);\n }\n};\n\nArchiveOutputStream.prototype._finish = function(ae) {\n // scaffold only\n};\n\nArchiveOutputStream.prototype._normalizeEntry = function(ae) {\n // scaffold only\n};\n\nArchiveOutputStream.prototype._transform = function(chunk, encoding, callback) {\n callback(null, chunk);\n};\n\nArchiveOutputStream.prototype.entry = function(ae, source, callback) {\n source = source || null;\n\n if (typeof callback !== 'function') {\n callback = this._emitErrorCallback.bind(this);\n }\n\n if (!(ae instanceof ArchiveEntry)) {\n callback(new Error('not a valid instance of ArchiveEntry'));\n return;\n }\n\n if (this._archive.finish || this._archive.finished) {\n callback(new Error('unacceptable entry after finish'));\n return;\n }\n\n if (this._archive.processing) {\n callback(new Error('already processing an entry'));\n return;\n }\n\n this._archive.processing = true;\n this._normalizeEntry(ae);\n this._entry = ae;\n\n source = util.normalizeInputSource(source);\n\n if (Buffer.isBuffer(source)) {\n this._appendBuffer(ae, source, callback);\n } else if (isStream(source)) {\n this._appendStream(ae, source, callback);\n } else {\n this._archive.processing = false;\n callback(new Error('input source must be valid Stream or Buffer instance'));\n return;\n }\n\n return this;\n};\n\nArchiveOutputStream.prototype.finish = function() {\n if (this._archive.processing) {\n this._archive.finish = true;\n return;\n }\n\n this._finish();\n};\n\nArchiveOutputStream.prototype.getBytesWritten = function() {\n return this.offset;\n};\n\nArchiveOutputStream.prototype.write = function(chunk, cb) {\n if (chunk) {\n this.offset += chunk.length;\n }\n\n return Transform.prototype.write.call(this, chunk, cb);\n};","/*! crc32.js (C) 2014-present SheetJS -- http://sheetjs.com */\n/* vim: set ts=2: */\n/*exported CRC32 */\nvar CRC32;\n(function (factory) {\n\t/*jshint ignore:start */\n\t/*eslint-disable */\n\tif(typeof DO_NOT_EXPORT_CRC === 'undefined') {\n\t\tif('object' === typeof exports) {\n\t\t\tfactory(exports);\n\t\t} else if ('function' === typeof define && define.amd) {\n\t\t\tdefine(function () {\n\t\t\t\tvar module = {};\n\t\t\t\tfactory(module);\n\t\t\t\treturn module;\n\t\t\t});\n\t\t} else {\n\t\t\tfactory(CRC32 = {});\n\t\t}\n\t} else {\n\t\tfactory(CRC32 = {});\n\t}\n\t/*eslint-enable */\n\t/*jshint ignore:end */\n}(function(CRC32) {\nCRC32.version = '1.2.2';\n/*global Int32Array */\nfunction signed_crc_table() {\n\tvar c = 0, table = new Array(256);\n\n\tfor(var n =0; n != 256; ++n){\n\t\tc = n;\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\ttable[n] = c;\n\t}\n\n\treturn typeof Int32Array !== 'undefined' ? new Int32Array(table) : table;\n}\n\nvar T0 = signed_crc_table();\nfunction slice_by_16_tables(T) {\n\tvar c = 0, v = 0, n = 0, table = typeof Int32Array !== 'undefined' ? new Int32Array(4096) : new Array(4096) ;\n\n\tfor(n = 0; n != 256; ++n) table[n] = T[n];\n\tfor(n = 0; n != 256; ++n) {\n\t\tv = T[n];\n\t\tfor(c = 256 + n; c < 4096; c += 256) v = table[c] = (v >>> 8) ^ T[v & 0xFF];\n\t}\n\tvar out = [];\n\tfor(n = 1; n != 16; ++n) out[n - 1] = typeof Int32Array !== 'undefined' ? table.subarray(n * 256, n * 256 + 256) : table.slice(n * 256, n * 256 + 256);\n\treturn out;\n}\nvar TT = slice_by_16_tables(T0);\nvar T1 = TT[0], T2 = TT[1], T3 = TT[2], T4 = TT[3], T5 = TT[4];\nvar T6 = TT[5], T7 = TT[6], T8 = TT[7], T9 = TT[8], Ta = TT[9];\nvar Tb = TT[10], Tc = TT[11], Td = TT[12], Te = TT[13], Tf = TT[14];\nfunction crc32_bstr(bstr, seed) {\n\tvar C = seed ^ -1;\n\tfor(var i = 0, L = bstr.length; i < L;) C = (C>>>8) ^ T0[(C^bstr.charCodeAt(i++))&0xFF];\n\treturn ~C;\n}\n\nfunction crc32_buf(B, seed) {\n\tvar C = seed ^ -1, L = B.length - 15, i = 0;\n\tfor(; i < L;) C =\n\t\tTf[B[i++] ^ (C & 255)] ^\n\t\tTe[B[i++] ^ ((C >> 8) & 255)] ^\n\t\tTd[B[i++] ^ ((C >> 16) & 255)] ^\n\t\tTc[B[i++] ^ (C >>> 24)] ^\n\t\tTb[B[i++]] ^ Ta[B[i++]] ^ T9[B[i++]] ^ T8[B[i++]] ^\n\t\tT7[B[i++]] ^ T6[B[i++]] ^ T5[B[i++]] ^ T4[B[i++]] ^\n\t\tT3[B[i++]] ^ T2[B[i++]] ^ T1[B[i++]] ^ T0[B[i++]];\n\tL += 15;\n\twhile(i < L) C = (C>>>8) ^ T0[(C^B[i++])&0xFF];\n\treturn ~C;\n}\n\nfunction crc32_str(str, seed) {\n\tvar C = seed ^ -1;\n\tfor(var i = 0, L = str.length, c = 0, d = 0; i < L;) {\n\t\tc = str.charCodeAt(i++);\n\t\tif(c < 0x80) {\n\t\t\tC = (C>>>8) ^ T0[(C^c)&0xFF];\n\t\t} else if(c < 0x800) {\n\t\t\tC = (C>>>8) ^ T0[(C ^ (192|((c>>6)&31)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF];\n\t\t} else if(c >= 0xD800 && c < 0xE000) {\n\t\t\tc = (c&1023)+64; d = str.charCodeAt(i++)&1023;\n\t\t\tC = (C>>>8) ^ T0[(C ^ (240|((c>>8)&7)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|((c>>2)&63)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|((d>>6)&15)|((c&3)<<4)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|(d&63)))&0xFF];\n\t\t} else {\n\t\t\tC = (C>>>8) ^ T0[(C ^ (224|((c>>12)&15)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|((c>>6)&63)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF];\n\t\t}\n\t}\n\treturn ~C;\n}\nCRC32.table = T0;\n// $FlowIgnore\nCRC32.bstr = crc32_bstr;\n// $FlowIgnore\nCRC32.buf = crc32_buf;\n// $FlowIgnore\nCRC32.str = crc32_str;\n}));\n","/**\n * node-crc32-stream\n *\n * Copyright (c) 2014 Chris Talkington, contributors.\n * Licensed under the MIT license.\n * https://github.com/archiverjs/node-crc32-stream/blob/master/LICENSE-MIT\n */\n\n 'use strict';\n\nconst {Transform} = require('readable-stream');\n\nconst crc32 = require('crc-32');\n\nclass CRC32Stream extends Transform {\n constructor(options) {\n super(options);\n this.checksum = Buffer.allocUnsafe(4);\n this.checksum.writeInt32BE(0, 0);\n\n this.rawSize = 0;\n }\n\n _transform(chunk, encoding, callback) {\n if (chunk) {\n this.checksum = crc32.buf(chunk, this.checksum) >>> 0;\n this.rawSize += chunk.length;\n }\n\n callback(null, chunk);\n }\n\n digest(encoding) {\n const checksum = Buffer.allocUnsafe(4);\n checksum.writeUInt32BE(this.checksum >>> 0, 0);\n return encoding ? checksum.toString(encoding) : checksum;\n }\n\n hex() {\n return this.digest('hex').toUpperCase();\n }\n\n size() {\n return this.rawSize;\n }\n}\n\nmodule.exports = CRC32Stream;\n","/**\n * node-crc32-stream\n *\n * Copyright (c) 2014 Chris Talkington, contributors.\n * Licensed under the MIT license.\n * https://github.com/archiverjs/node-crc32-stream/blob/master/LICENSE-MIT\n */\n\n'use strict';\n\nconst {DeflateRaw} = require('zlib');\n\nconst crc32 = require('crc-32');\n\nclass DeflateCRC32Stream extends DeflateRaw {\n constructor(options) {\n super(options);\n\n this.checksum = Buffer.allocUnsafe(4);\n this.checksum.writeInt32BE(0, 0);\n\n this.rawSize = 0;\n this.compressedSize = 0;\n }\n\n push(chunk, encoding) {\n if (chunk) {\n this.compressedSize += chunk.length;\n }\n\n return super.push(chunk, encoding);\n }\n\n _transform(chunk, encoding, callback) {\n if (chunk) {\n this.checksum = crc32.buf(chunk, this.checksum) >>> 0;\n this.rawSize += chunk.length;\n }\n\n super._transform(chunk, encoding, callback)\n }\n\n digest(encoding) {\n const checksum = Buffer.allocUnsafe(4);\n checksum.writeUInt32BE(this.checksum >>> 0, 0);\n return encoding ? checksum.toString(encoding) : checksum;\n }\n\n hex() {\n return this.digest('hex').toUpperCase();\n }\n\n size(compressed = false) {\n if (compressed) {\n return this.compressedSize;\n } else {\n return this.rawSize;\n }\n }\n}\n\nmodule.exports = DeflateCRC32Stream;\n","/**\n * node-crc32-stream\n *\n * Copyright (c) 2014 Chris Talkington, contributors.\n * Licensed under the MIT license.\n * https://github.com/archiverjs/node-crc32-stream/blob/master/LICENSE-MIT\n */\n\n'use strict';\n\nmodule.exports = {\n CRC32Stream: require('./crc32-stream'),\n DeflateCRC32Stream: require('./deflate-crc32-stream')\n}\n","/**\n * node-compress-commons\n *\n * Copyright (c) 2014 Chris Talkington, contributors.\n * Licensed under the MIT license.\n * https://github.com/archiverjs/node-compress-commons/blob/master/LICENSE-MIT\n */\nvar inherits = require('util').inherits;\nvar crc32 = require('crc-32');\nvar {CRC32Stream} = require('crc32-stream');\nvar {DeflateCRC32Stream} = require('crc32-stream');\n\nvar ArchiveOutputStream = require('../archive-output-stream');\nvar ZipArchiveEntry = require('./zip-archive-entry');\nvar GeneralPurposeBit = require('./general-purpose-bit');\n\nvar constants = require('./constants');\nvar util = require('../../util');\nvar zipUtil = require('./util');\n\nvar ZipArchiveOutputStream = module.exports = function(options) {\n if (!(this instanceof ZipArchiveOutputStream)) {\n return new ZipArchiveOutputStream(options);\n }\n\n options = this.options = this._defaults(options);\n\n ArchiveOutputStream.call(this, options);\n\n this._entry = null;\n this._entries = [];\n this._archive = {\n centralLength: 0,\n centralOffset: 0,\n comment: '',\n finish: false,\n finished: false,\n processing: false,\n forceZip64: options.forceZip64,\n forceLocalTime: options.forceLocalTime\n };\n};\n\ninherits(ZipArchiveOutputStream, ArchiveOutputStream);\n\nZipArchiveOutputStream.prototype._afterAppend = function(ae) {\n this._entries.push(ae);\n\n if (ae.getGeneralPurposeBit().usesDataDescriptor()) {\n this._writeDataDescriptor(ae);\n }\n\n this._archive.processing = false;\n this._entry = null;\n\n if (this._archive.finish && !this._archive.finished) {\n this._finish();\n }\n};\n\nZipArchiveOutputStream.prototype._appendBuffer = function(ae, source, callback) {\n if (source.length === 0) {\n ae.setMethod(constants.METHOD_STORED);\n }\n\n var method = ae.getMethod();\n\n if (method === constants.METHOD_STORED) {\n ae.setSize(source.length);\n ae.setCompressedSize(source.length);\n ae.setCrc(crc32.buf(source) >>> 0);\n }\n\n this._writeLocalFileHeader(ae);\n\n if (method === constants.METHOD_STORED) {\n this.write(source);\n this._afterAppend(ae);\n callback(null, ae);\n return;\n } else if (method === constants.METHOD_DEFLATED) {\n this._smartStream(ae, callback).end(source);\n return;\n } else {\n callback(new Error('compression method ' + method + ' not implemented'));\n return;\n }\n};\n\nZipArchiveOutputStream.prototype._appendStream = function(ae, source, callback) {\n ae.getGeneralPurposeBit().useDataDescriptor(true);\n ae.setVersionNeededToExtract(constants.MIN_VERSION_DATA_DESCRIPTOR);\n\n this._writeLocalFileHeader(ae);\n\n var smart = this._smartStream(ae, callback);\n source.once('error', function(err) {\n smart.emit('error', err);\n smart.end();\n })\n source.pipe(smart);\n};\n\nZipArchiveOutputStream.prototype._defaults = function(o) {\n if (typeof o !== 'object') {\n o = {};\n }\n\n if (typeof o.zlib !== 'object') {\n o.zlib = {};\n }\n\n if (typeof o.zlib.level !== 'number') {\n o.zlib.level = constants.ZLIB_BEST_SPEED;\n }\n\n o.forceZip64 = !!o.forceZip64;\n o.forceLocalTime = !!o.forceLocalTime;\n\n return o;\n};\n\nZipArchiveOutputStream.prototype._finish = function() {\n this._archive.centralOffset = this.offset;\n\n this._entries.forEach(function(ae) {\n this._writeCentralFileHeader(ae);\n }.bind(this));\n\n this._archive.centralLength = this.offset - this._archive.centralOffset;\n\n if (this.isZip64()) {\n this._writeCentralDirectoryZip64();\n }\n\n this._writeCentralDirectoryEnd();\n\n this._archive.processing = false;\n this._archive.finish = true;\n this._archive.finished = true;\n this.end();\n};\n\nZipArchiveOutputStream.prototype._normalizeEntry = function(ae) {\n if (ae.getMethod() === -1) {\n ae.setMethod(constants.METHOD_DEFLATED);\n }\n\n if (ae.getMethod() === constants.METHOD_DEFLATED) {\n ae.getGeneralPurposeBit().useDataDescriptor(true);\n ae.setVersionNeededToExtract(constants.MIN_VERSION_DATA_DESCRIPTOR);\n }\n\n if (ae.getTime() === -1) {\n ae.setTime(new Date(), this._archive.forceLocalTime);\n }\n\n ae._offsets = {\n file: 0,\n data: 0,\n contents: 0,\n };\n};\n\nZipArchiveOutputStream.prototype._smartStream = function(ae, callback) {\n var deflate = ae.getMethod() === constants.METHOD_DEFLATED;\n var process = deflate ? new DeflateCRC32Stream(this.options.zlib) : new CRC32Stream();\n var error = null;\n\n function handleStuff() {\n var digest = process.digest().readUInt32BE(0);\n ae.setCrc(digest);\n ae.setSize(process.size());\n ae.setCompressedSize(process.size(true));\n this._afterAppend(ae);\n callback(error, ae);\n }\n\n process.once('end', handleStuff.bind(this));\n process.once('error', function(err) {\n error = err;\n });\n\n process.pipe(this, { end: false });\n\n return process;\n};\n\nZipArchiveOutputStream.prototype._writeCentralDirectoryEnd = function() {\n var records = this._entries.length;\n var size = this._archive.centralLength;\n var offset = this._archive.centralOffset;\n\n if (this.isZip64()) {\n records = constants.ZIP64_MAGIC_SHORT;\n size = constants.ZIP64_MAGIC;\n offset = constants.ZIP64_MAGIC;\n }\n\n // signature\n this.write(zipUtil.getLongBytes(constants.SIG_EOCD));\n\n // disk numbers\n this.write(constants.SHORT_ZERO);\n this.write(constants.SHORT_ZERO);\n\n // number of entries\n this.write(zipUtil.getShortBytes(records));\n this.write(zipUtil.getShortBytes(records));\n\n // length and location of CD\n this.write(zipUtil.getLongBytes(size));\n this.write(zipUtil.getLongBytes(offset));\n\n // archive comment\n var comment = this.getComment();\n var commentLength = Buffer.byteLength(comment);\n this.write(zipUtil.getShortBytes(commentLength));\n this.write(comment);\n};\n\nZipArchiveOutputStream.prototype._writeCentralDirectoryZip64 = function() {\n // signature\n this.write(zipUtil.getLongBytes(constants.SIG_ZIP64_EOCD));\n\n // size of the ZIP64 EOCD record\n this.write(zipUtil.getEightBytes(44));\n\n // version made by\n this.write(zipUtil.getShortBytes(constants.MIN_VERSION_ZIP64));\n\n // version to extract\n this.write(zipUtil.getShortBytes(constants.MIN_VERSION_ZIP64));\n\n // disk numbers\n this.write(constants.LONG_ZERO);\n this.write(constants.LONG_ZERO);\n\n // number of entries\n this.write(zipUtil.getEightBytes(this._entries.length));\n this.write(zipUtil.getEightBytes(this._entries.length));\n\n // length and location of CD\n this.write(zipUtil.getEightBytes(this._archive.centralLength));\n this.write(zipUtil.getEightBytes(this._archive.centralOffset));\n\n // extensible data sector\n // not implemented at this time\n\n // end of central directory locator\n this.write(zipUtil.getLongBytes(constants.SIG_ZIP64_EOCD_LOC));\n\n // disk number holding the ZIP64 EOCD record\n this.write(constants.LONG_ZERO);\n\n // relative offset of the ZIP64 EOCD record\n this.write(zipUtil.getEightBytes(this._archive.centralOffset + this._archive.centralLength));\n\n // total number of disks\n this.write(zipUtil.getLongBytes(1));\n};\n\nZipArchiveOutputStream.prototype._writeCentralFileHeader = function(ae) {\n var gpb = ae.getGeneralPurposeBit();\n var method = ae.getMethod();\n var fileOffset = ae._offsets.file;\n\n var size = ae.getSize();\n var compressedSize = ae.getCompressedSize();\n\n if (ae.isZip64() || fileOffset > constants.ZIP64_MAGIC) {\n size = constants.ZIP64_MAGIC;\n compressedSize = constants.ZIP64_MAGIC;\n fileOffset = constants.ZIP64_MAGIC;\n\n ae.setVersionNeededToExtract(constants.MIN_VERSION_ZIP64);\n\n var extraBuf = Buffer.concat([\n zipUtil.getShortBytes(constants.ZIP64_EXTRA_ID),\n zipUtil.getShortBytes(24),\n zipUtil.getEightBytes(ae.getSize()),\n zipUtil.getEightBytes(ae.getCompressedSize()),\n zipUtil.getEightBytes(ae._offsets.file)\n ], 28);\n\n ae.setExtra(extraBuf);\n }\n\n // signature\n this.write(zipUtil.getLongBytes(constants.SIG_CFH));\n\n // version made by\n this.write(zipUtil.getShortBytes((ae.getPlatform() << 8) | constants.VERSION_MADEBY));\n\n // version to extract and general bit flag\n this.write(zipUtil.getShortBytes(ae.getVersionNeededToExtract()));\n this.write(gpb.encode());\n\n // compression method\n this.write(zipUtil.getShortBytes(method));\n\n // datetime\n this.write(zipUtil.getLongBytes(ae.getTimeDos()));\n\n // crc32 checksum\n this.write(zipUtil.getLongBytes(ae.getCrc()));\n\n // sizes\n this.write(zipUtil.getLongBytes(compressedSize));\n this.write(zipUtil.getLongBytes(size));\n\n var name = ae.getName();\n var comment = ae.getComment();\n var extra = ae.getCentralDirectoryExtra();\n\n if (gpb.usesUTF8ForNames()) {\n name = Buffer.from(name);\n comment = Buffer.from(comment);\n }\n\n // name length\n this.write(zipUtil.getShortBytes(name.length));\n\n // extra length\n this.write(zipUtil.getShortBytes(extra.length));\n\n // comments length\n this.write(zipUtil.getShortBytes(comment.length));\n\n // disk number start\n this.write(constants.SHORT_ZERO);\n\n // internal attributes\n this.write(zipUtil.getShortBytes(ae.getInternalAttributes()));\n\n // external attributes\n this.write(zipUtil.getLongBytes(ae.getExternalAttributes()));\n\n // relative offset of LFH\n this.write(zipUtil.getLongBytes(fileOffset));\n\n // name\n this.write(name);\n\n // extra\n this.write(extra);\n\n // comment\n this.write(comment);\n};\n\nZipArchiveOutputStream.prototype._writeDataDescriptor = function(ae) {\n // signature\n this.write(zipUtil.getLongBytes(constants.SIG_DD));\n\n // crc32 checksum\n this.write(zipUtil.getLongBytes(ae.getCrc()));\n\n // sizes\n if (ae.isZip64()) {\n this.write(zipUtil.getEightBytes(ae.getCompressedSize()));\n this.write(zipUtil.getEightBytes(ae.getSize()));\n } else {\n this.write(zipUtil.getLongBytes(ae.getCompressedSize()));\n this.write(zipUtil.getLongBytes(ae.getSize()));\n }\n};\n\nZipArchiveOutputStream.prototype._writeLocalFileHeader = function(ae) {\n var gpb = ae.getGeneralPurposeBit();\n var method = ae.getMethod();\n var name = ae.getName();\n var extra = ae.getLocalFileDataExtra();\n\n if (ae.isZip64()) {\n gpb.useDataDescriptor(true);\n ae.setVersionNeededToExtract(constants.MIN_VERSION_ZIP64);\n }\n\n if (gpb.usesUTF8ForNames()) {\n name = Buffer.from(name);\n }\n\n ae._offsets.file = this.offset;\n\n // signature\n this.write(zipUtil.getLongBytes(constants.SIG_LFH));\n\n // version to extract and general bit flag\n this.write(zipUtil.getShortBytes(ae.getVersionNeededToExtract()));\n this.write(gpb.encode());\n\n // compression method\n this.write(zipUtil.getShortBytes(method));\n\n // datetime\n this.write(zipUtil.getLongBytes(ae.getTimeDos()));\n\n ae._offsets.data = this.offset;\n\n // crc32 checksum and sizes\n if (gpb.usesDataDescriptor()) {\n this.write(constants.LONG_ZERO);\n this.write(constants.LONG_ZERO);\n this.write(constants.LONG_ZERO);\n } else {\n this.write(zipUtil.getLongBytes(ae.getCrc()));\n this.write(zipUtil.getLongBytes(ae.getCompressedSize()));\n this.write(zipUtil.getLongBytes(ae.getSize()));\n }\n\n // name length\n this.write(zipUtil.getShortBytes(name.length));\n\n // extra length\n this.write(zipUtil.getShortBytes(extra.length));\n\n // name\n this.write(name);\n\n // extra\n this.write(extra);\n\n ae._offsets.contents = this.offset;\n};\n\nZipArchiveOutputStream.prototype.getComment = function(comment) {\n return this._archive.comment !== null ? this._archive.comment : '';\n};\n\nZipArchiveOutputStream.prototype.isZip64 = function() {\n return this._archive.forceZip64 || this._entries.length > constants.ZIP64_MAGIC_SHORT || this._archive.centralLength > constants.ZIP64_MAGIC || this._archive.centralOffset > constants.ZIP64_MAGIC;\n};\n\nZipArchiveOutputStream.prototype.setComment = function(comment) {\n this._archive.comment = comment;\n};\n","/**\n * node-compress-commons\n *\n * Copyright (c) 2014 Chris Talkington, contributors.\n * Licensed under the MIT license.\n * https://github.com/archiverjs/node-compress-commons/blob/master/LICENSE-MIT\n */\nmodule.exports = {\n ArchiveEntry: require('./archivers/archive-entry'),\n ZipArchiveEntry: require('./archivers/zip/zip-archive-entry'),\n ArchiveOutputStream: require('./archivers/archive-output-stream'),\n ZipArchiveOutputStream: require('./archivers/zip/zip-archive-output-stream')\n};","/**\n * ZipStream\n *\n * @ignore\n * @license [MIT]{@link https://github.com/archiverjs/node-zip-stream/blob/master/LICENSE}\n * @copyright (c) 2014 Chris Talkington, contributors.\n */\nvar inherits = require('util').inherits;\n\nvar ZipArchiveOutputStream = require('compress-commons').ZipArchiveOutputStream;\nvar ZipArchiveEntry = require('compress-commons').ZipArchiveEntry;\n\nvar util = require('archiver-utils');\n\n/**\n * @constructor\n * @extends external:ZipArchiveOutputStream\n * @param {Object} [options]\n * @param {String} [options.comment] Sets the zip archive comment.\n * @param {Boolean} [options.forceLocalTime=false] Forces the archive to contain local file times instead of UTC.\n * @param {Boolean} [options.forceZip64=false] Forces the archive to contain ZIP64 headers.\n * @param {Boolean} [options.store=false] Sets the compression method to STORE.\n * @param {Object} [options.zlib] Passed to [zlib]{@link https://nodejs.org/api/zlib.html#zlib_class_options}\n * to control compression.\n */\nvar ZipStream = module.exports = function(options) {\n if (!(this instanceof ZipStream)) {\n return new ZipStream(options);\n }\n\n options = this.options = options || {};\n options.zlib = options.zlib || {};\n\n ZipArchiveOutputStream.call(this, options);\n\n if (typeof options.level === 'number' && options.level >= 0) {\n options.zlib.level = options.level;\n delete options.level;\n }\n\n if (!options.forceZip64 && typeof options.zlib.level === 'number' && options.zlib.level === 0) {\n options.store = true;\n }\n\n options.namePrependSlash = options.namePrependSlash || false;\n\n if (options.comment && options.comment.length > 0) {\n this.setComment(options.comment);\n }\n};\n\ninherits(ZipStream, ZipArchiveOutputStream);\n\n/**\n * Normalizes entry data with fallbacks for key properties.\n *\n * @private\n * @param {Object} data\n * @return {Object}\n */\nZipStream.prototype._normalizeFileData = function(data) {\n data = util.defaults(data, {\n type: 'file',\n name: null,\n namePrependSlash: this.options.namePrependSlash,\n linkname: null,\n date: null,\n mode: null,\n store: this.options.store,\n comment: ''\n });\n\n var isDir = data.type === 'directory';\n var isSymlink = data.type === 'symlink';\n\n if (data.name) {\n data.name = util.sanitizePath(data.name);\n\n if (!isSymlink && data.name.slice(-1) === '/') {\n isDir = true;\n data.type = 'directory';\n } else if (isDir) {\n data.name += '/';\n }\n }\n\n if (isDir || isSymlink) {\n data.store = true;\n }\n\n data.date = util.dateify(data.date);\n\n return data;\n};\n\n/**\n * Appends an entry given an input source (text string, buffer, or stream).\n *\n * @param {(Buffer|Stream|String)} source The input source.\n * @param {Object} data\n * @param {String} data.name Sets the entry name including internal path.\n * @param {String} [data.comment] Sets the entry comment.\n * @param {(String|Date)} [data.date=NOW()] Sets the entry date.\n * @param {Number} [data.mode=D:0755/F:0644] Sets the entry permissions.\n * @param {Boolean} [data.store=options.store] Sets the compression method to STORE.\n * @param {String} [data.type=file] Sets the entry type. Defaults to `directory`\n * if name ends with trailing slash.\n * @param {Function} callback\n * @return this\n */\nZipStream.prototype.entry = function(source, data, callback) {\n if (typeof callback !== 'function') {\n callback = this._emitErrorCallback.bind(this);\n }\n\n data = this._normalizeFileData(data);\n\n if (data.type !== 'file' && data.type !== 'directory' && data.type !== 'symlink') {\n callback(new Error(data.type + ' entries not currently supported'));\n return;\n }\n\n if (typeof data.name !== 'string' || data.name.length === 0) {\n callback(new Error('entry name must be a non-empty string value'));\n return;\n }\n\n if (data.type === 'symlink' && typeof data.linkname !== 'string') {\n callback(new Error('entry linkname must be a non-empty string value when type equals symlink'));\n return;\n }\n\n var entry = new ZipArchiveEntry(data.name);\n entry.setTime(data.date, this.options.forceLocalTime);\n\n if (data.namePrependSlash) {\n entry.setName(data.name, true);\n }\n\n if (data.store) {\n entry.setMethod(0);\n }\n\n if (data.comment.length > 0) {\n entry.setComment(data.comment);\n }\n\n if (data.type === 'symlink' && typeof data.mode !== 'number') {\n data.mode = 40960; // 0120000\n }\n\n if (typeof data.mode === 'number') {\n if (data.type === 'symlink') {\n data.mode |= 40960;\n }\n\n entry.setUnixMode(data.mode);\n }\n\n if (data.type === 'symlink' && typeof data.linkname === 'string') {\n source = Buffer.from(data.linkname);\n }\n\n return ZipArchiveOutputStream.prototype.entry.call(this, entry, source, callback);\n};\n\n/**\n * Finalizes the instance and prevents further appending to the archive\n * structure (queue will continue til drained).\n *\n * @return void\n */\nZipStream.prototype.finalize = function() {\n this.finish();\n};\n\n/**\n * Returns the current number of bytes written to this stream.\n * @function ZipStream#getBytesWritten\n * @returns {Number}\n */\n\n/**\n * Compress Commons ZipArchiveOutputStream\n * @external ZipArchiveOutputStream\n * @see {@link https://github.com/archiverjs/node-compress-commons}\n */\n","/**\n * ZIP Format Plugin\n *\n * @module plugins/zip\n * @license [MIT]{@link https://github.com/archiverjs/node-archiver/blob/master/LICENSE}\n * @copyright (c) 2012-2014 Chris Talkington, contributors.\n */\nvar engine = require('zip-stream');\nvar util = require('archiver-utils');\n\n/**\n * @constructor\n * @param {ZipOptions} [options]\n * @param {String} [options.comment] Sets the zip archive comment.\n * @param {Boolean} [options.forceLocalTime=false] Forces the archive to contain local file times instead of UTC.\n * @param {Boolean} [options.forceZip64=false] Forces the archive to contain ZIP64 headers.\n * @param {Boolean} [options.namePrependSlash=false] Prepends a forward slash to archive file paths.\n * @param {Boolean} [options.store=false] Sets the compression method to STORE.\n * @param {Object} [options.zlib] Passed to [zlib]{@link https://nodejs.org/api/zlib.html#zlib_class_options}\n */\nvar Zip = function(options) {\n if (!(this instanceof Zip)) {\n return new Zip(options);\n }\n\n options = this.options = util.defaults(options, {\n comment: '',\n forceUTC: false,\n namePrependSlash: false,\n store: false\n });\n\n this.supports = {\n directory: true,\n symlink: true\n };\n\n this.engine = new engine(options);\n};\n\n/**\n * @param {(Buffer|Stream)} source\n * @param {ZipEntryData} data\n * @param {String} data.name Sets the entry name including internal path.\n * @param {(String|Date)} [data.date=NOW()] Sets the entry date.\n * @param {Number} [data.mode=D:0755/F:0644] Sets the entry permissions.\n * @param {String} [data.prefix] Sets a path prefix for the entry name. Useful\n * when working with methods like `directory` or `glob`.\n * @param {fs.Stats} [data.stats] Sets the fs stat data for this entry allowing\n * for reduction of fs stat calls when stat data is already known.\n * @param {Boolean} [data.store=ZipOptions.store] Sets the compression method to STORE.\n * @param {Function} callback\n * @return void\n */\nZip.prototype.append = function(source, data, callback) {\n this.engine.entry(source, data, callback);\n};\n\n/**\n * @return void\n */\nZip.prototype.finalize = function() {\n this.engine.finalize();\n};\n\n/**\n * @return this.engine\n */\nZip.prototype.on = function() {\n return this.engine.on.apply(this.engine, arguments);\n};\n\n/**\n * @return this.engine\n */\nZip.prototype.pipe = function() {\n return this.engine.pipe.apply(this.engine, arguments);\n};\n\n/**\n * @return this.engine\n */\nZip.prototype.unpipe = function() {\n return this.engine.unpipe.apply(this.engine, arguments);\n};\n\nmodule.exports = Zip;\n\n/**\n * @typedef {Object} ZipOptions\n * @global\n * @property {String} [comment] Sets the zip archive comment.\n * @property {Boolean} [forceLocalTime=false] Forces the archive to contain local file times instead of UTC.\n * @property {Boolean} [forceZip64=false] Forces the archive to contain ZIP64 headers.\n * @prpperty {Boolean} [namePrependSlash=false] Prepends a forward slash to archive file paths.\n * @property {Boolean} [store=false] Sets the compression method to STORE.\n * @property {Object} [zlib] Passed to [zlib]{@link https://nodejs.org/api/zlib.html#zlib_class_options}\n * to control compression.\n * @property {*} [*] See [zip-stream]{@link https://archiverjs.com/zip-stream/ZipStream.html} documentation for current list of properties.\n */\n\n/**\n * @typedef {Object} ZipEntryData\n * @global\n * @property {String} name Sets the entry name including internal path.\n * @property {(String|Date)} [date=NOW()] Sets the entry date.\n * @property {Number} [mode=D:0755/F:0644] Sets the entry permissions.\n * @property {Boolean} [namePrependSlash=ZipOptions.namePrependSlash] Prepends a forward slash to archive file paths.\n * @property {String} [prefix] Sets a path prefix for the entry name. Useful\n * when working with methods like `directory` or `glob`.\n * @property {fs.Stats} [stats] Sets the fs stat data for this entry allowing\n * for reduction of fs stat calls when stat data is already known.\n * @property {Boolean} [store=ZipOptions.store] Sets the compression method to STORE.\n */\n\n/**\n * ZipStream Module\n * @external ZipStream\n * @see {@link https://www.archiverjs.com/zip-stream/ZipStream.html}\n */\n","module.exports = require('events')\n","module.exports = class FixedFIFO {\n constructor (hwm) {\n if (!(hwm > 0) || ((hwm - 1) & hwm) !== 0) throw new Error('Max size for a FixedFIFO should be a power of two')\n this.buffer = new Array(hwm)\n this.mask = hwm - 1\n this.top = 0\n this.btm = 0\n this.next = null\n }\n\n clear () {\n this.top = this.btm = 0\n this.next = null\n this.buffer.fill(undefined)\n }\n\n push (data) {\n if (this.buffer[this.top] !== undefined) return false\n this.buffer[this.top] = data\n this.top = (this.top + 1) & this.mask\n return true\n }\n\n shift () {\n const last = this.buffer[this.btm]\n if (last === undefined) return undefined\n this.buffer[this.btm] = undefined\n this.btm = (this.btm + 1) & this.mask\n return last\n }\n\n peek () {\n return this.buffer[this.btm]\n }\n\n isEmpty () {\n return this.buffer[this.btm] === undefined\n }\n}\n","const FixedFIFO = require('./fixed-size')\n\nmodule.exports = class FastFIFO {\n constructor (hwm) {\n this.hwm = hwm || 16\n this.head = new FixedFIFO(this.hwm)\n this.tail = this.head\n this.length = 0\n }\n\n clear () {\n this.head = this.tail\n this.head.clear()\n this.length = 0\n }\n\n push (val) {\n this.length++\n if (!this.head.push(val)) {\n const prev = this.head\n this.head = prev.next = new FixedFIFO(2 * this.head.buffer.length)\n this.head.push(val)\n }\n }\n\n shift () {\n if (this.length !== 0) this.length--\n const val = this.tail.shift()\n if (val === undefined && this.tail.next) {\n const next = this.tail.next\n this.tail.next = null\n this.tail = next\n return this.tail.shift()\n }\n\n return val\n }\n\n peek () {\n const val = this.tail.peek()\n if (val === undefined && this.tail.next) return this.tail.next.peek()\n return val\n }\n\n isEmpty () {\n return this.length === 0\n }\n}\n","function isBuffer(value) {\n return Buffer.isBuffer(value) || value instanceof Uint8Array\n}\n\nfunction isEncoding(encoding) {\n return Buffer.isEncoding(encoding)\n}\n\nfunction alloc(size, fill, encoding) {\n return Buffer.alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe(size) {\n return Buffer.allocUnsafe(size)\n}\n\nfunction allocUnsafeSlow(size) {\n return Buffer.allocUnsafeSlow(size)\n}\n\nfunction byteLength(string, encoding) {\n return Buffer.byteLength(string, encoding)\n}\n\nfunction compare(a, b) {\n return Buffer.compare(a, b)\n}\n\nfunction concat(buffers, totalLength) {\n return Buffer.concat(buffers, totalLength)\n}\n\nfunction copy(source, target, targetStart, start, end) {\n return toBuffer(source).copy(target, targetStart, start, end)\n}\n\nfunction equals(a, b) {\n return toBuffer(a).equals(b)\n}\n\nfunction fill(buffer, value, offset, end, encoding) {\n return toBuffer(buffer).fill(value, offset, end, encoding)\n}\n\nfunction from(value, encodingOrOffset, length) {\n return Buffer.from(value, encodingOrOffset, length)\n}\n\nfunction includes(buffer, value, byteOffset, encoding) {\n return toBuffer(buffer).includes(value, byteOffset, encoding)\n}\n\nfunction indexOf(buffer, value, byfeOffset, encoding) {\n return toBuffer(buffer).indexOf(value, byfeOffset, encoding)\n}\n\nfunction lastIndexOf(buffer, value, byteOffset, encoding) {\n return toBuffer(buffer).lastIndexOf(value, byteOffset, encoding)\n}\n\nfunction swap16(buffer) {\n return toBuffer(buffer).swap16()\n}\n\nfunction swap32(buffer) {\n return toBuffer(buffer).swap32()\n}\n\nfunction swap64(buffer) {\n return toBuffer(buffer).swap64()\n}\n\nfunction toBuffer(buffer) {\n if (Buffer.isBuffer(buffer)) return buffer\n return Buffer.from(buffer.buffer, buffer.byteOffset, buffer.byteLength)\n}\n\nfunction toString(buffer, encoding, start, end) {\n return toBuffer(buffer).toString(encoding, start, end)\n}\n\nfunction write(buffer, string, offset, length, encoding) {\n return toBuffer(buffer).write(string, offset, length, encoding)\n}\n\nfunction readDoubleBE(buffer, offset) {\n return toBuffer(buffer).readDoubleBE(offset)\n}\n\nfunction readDoubleLE(buffer, offset) {\n return toBuffer(buffer).readDoubleLE(offset)\n}\n\nfunction readFloatBE(buffer, offset) {\n return toBuffer(buffer).readFloatBE(offset)\n}\n\nfunction readFloatLE(buffer, offset) {\n return toBuffer(buffer).readFloatLE(offset)\n}\n\nfunction readInt32BE(buffer, offset) {\n return toBuffer(buffer).readInt32BE(offset)\n}\n\nfunction readInt32LE(buffer, offset) {\n return toBuffer(buffer).readInt32LE(offset)\n}\n\nfunction readUInt32BE(buffer, offset) {\n return toBuffer(buffer).readUInt32BE(offset)\n}\n\nfunction readUInt32LE(buffer, offset) {\n return toBuffer(buffer).readUInt32LE(offset)\n}\n\nfunction writeDoubleBE(buffer, value, offset) {\n return toBuffer(buffer).writeDoubleBE(value, offset)\n}\n\nfunction writeDoubleLE(buffer, value, offset) {\n return toBuffer(buffer).writeDoubleLE(value, offset)\n}\n\nfunction writeFloatBE(buffer, value, offset) {\n return toBuffer(buffer).writeFloatBE(value, offset)\n}\n\nfunction writeFloatLE(buffer, value, offset) {\n return toBuffer(buffer).writeFloatLE(value, offset)\n}\n\nfunction writeInt32BE(buffer, value, offset) {\n return toBuffer(buffer).writeInt32BE(value, offset)\n}\n\nfunction writeInt32LE(buffer, value, offset) {\n return toBuffer(buffer).writeInt32LE(value, offset)\n}\n\nfunction writeUInt32BE(buffer, value, offset) {\n return toBuffer(buffer).writeUInt32BE(value, offset)\n}\n\nfunction writeUInt32LE(buffer, value, offset) {\n return toBuffer(buffer).writeUInt32LE(value, offset)\n}\n\nmodule.exports = {\n isBuffer,\n isEncoding,\n alloc,\n allocUnsafe,\n allocUnsafeSlow,\n byteLength,\n compare,\n concat,\n copy,\n equals,\n fill,\n from,\n includes,\n indexOf,\n lastIndexOf,\n swap16,\n swap32,\n swap64,\n toBuffer,\n toString,\n write,\n readDoubleBE,\n readDoubleLE,\n readFloatBE,\n readFloatLE,\n readInt32BE,\n readInt32LE,\n readUInt32BE,\n readUInt32LE,\n writeDoubleBE,\n writeDoubleLE,\n writeFloatBE,\n writeFloatLE,\n writeInt32BE,\n writeInt32LE,\n writeUInt32BE,\n writeUInt32LE\n}\n","const b4a = require('b4a')\n\nmodule.exports = class PassThroughDecoder {\n constructor(encoding) {\n this.encoding = encoding\n }\n\n get remaining() {\n return 0\n }\n\n decode(data) {\n return b4a.toString(data, this.encoding)\n }\n\n flush() {\n return ''\n }\n}\n","const b4a = require('b4a')\n\n/**\n * https://encoding.spec.whatwg.org/#utf-8-decoder\n */\nmodule.exports = class UTF8Decoder {\n constructor() {\n this._reset()\n }\n\n get remaining() {\n return this.bytesSeen\n }\n\n decode(data) {\n if (data.byteLength === 0) return ''\n\n if (this.bytesNeeded === 0 && trailingIncomplete(data, 0) === 0) {\n this.bytesSeen = trailingBytesSeen(data)\n return b4a.toString(data, 'utf8')\n }\n\n let result = ''\n let start = 0\n\n if (this.bytesNeeded > 0) {\n while (start < data.byteLength) {\n const byte = data[start]\n\n if (byte < this.lowerBoundary || byte > this.upperBoundary) {\n result += '\\ufffd'\n this._reset()\n break\n }\n\n this.lowerBoundary = 0x80\n this.upperBoundary = 0xbf\n this.codePoint = (this.codePoint << 6) | (byte & 0x3f)\n this.bytesSeen++\n start++\n\n if (this.bytesSeen === this.bytesNeeded) {\n result += String.fromCodePoint(this.codePoint)\n this._reset()\n break\n }\n }\n\n if (this.bytesNeeded > 0) return result\n }\n\n const trailing = trailingIncomplete(data, start)\n const end = data.byteLength - trailing\n\n if (end > start) result += b4a.toString(data, 'utf8', start, end)\n\n for (let i = end; i < data.byteLength; i++) {\n const byte = data[i]\n\n if (this.bytesNeeded === 0) {\n if (byte <= 0x7f) {\n this.bytesSeen = 0\n result += String.fromCharCode(byte)\n } else if (byte >= 0xc2 && byte <= 0xdf) {\n this.bytesNeeded = 2\n this.bytesSeen = 1\n this.codePoint = byte & 0x1f\n } else if (byte >= 0xe0 && byte <= 0xef) {\n if (byte === 0xe0) this.lowerBoundary = 0xa0\n else if (byte === 0xed) this.upperBoundary = 0x9f\n this.bytesNeeded = 3\n this.bytesSeen = 1\n this.codePoint = byte & 0xf\n } else if (byte >= 0xf0 && byte <= 0xf4) {\n if (byte === 0xf0) this.lowerBoundary = 0x90\n else if (byte === 0xf4) this.upperBoundary = 0x8f\n this.bytesNeeded = 4\n this.bytesSeen = 1\n this.codePoint = byte & 0x7\n } else {\n this.bytesSeen = 1\n result += '\\ufffd'\n }\n\n continue\n }\n\n if (byte < this.lowerBoundary || byte > this.upperBoundary) {\n result += '\\ufffd'\n i--\n this._reset()\n\n continue\n }\n\n this.lowerBoundary = 0x80\n this.upperBoundary = 0xbf\n\n this.codePoint = (this.codePoint << 6) | (byte & 0x3f)\n this.bytesSeen++\n\n if (this.bytesSeen === this.bytesNeeded) {\n result += String.fromCodePoint(this.codePoint)\n this._reset()\n }\n }\n\n return result\n }\n\n flush() {\n const result = this.bytesNeeded > 0 ? '\\ufffd' : ''\n this._reset()\n return result\n }\n\n _reset() {\n this.codePoint = 0\n this.bytesNeeded = 0\n this.bytesSeen = 0\n this.lowerBoundary = 0x80\n this.upperBoundary = 0xbf\n }\n}\n\nfunction trailingIncomplete(data, start) {\n const len = data.byteLength\n if (len <= start) return 0\n\n const limit = Math.max(start, len - 4)\n\n let i = len - 1\n while (i > limit && (data[i] & 0xc0) === 0x80) i--\n\n if (i < start) return 0\n\n const byte = data[i]\n\n let needed\n if (byte <= 0x7f) return 0\n if (byte >= 0xc2 && byte <= 0xdf) needed = 2\n else if (byte >= 0xe0 && byte <= 0xef) needed = 3\n else if (byte >= 0xf0 && byte <= 0xf4) needed = 4\n else return 0\n\n const available = len - i\n return available < needed ? available : 0\n}\n\nfunction trailingBytesSeen(data) {\n const len = data.byteLength\n if (len === 0) return 0\n\n const last = data[len - 1]\n\n if (last <= 0x7f) return 0\n if ((last & 0xc0) !== 0x80) return 1\n\n const limit = Math.max(0, len - 4)\n\n let i = len - 2\n while (i >= limit && (data[i] & 0xc0) === 0x80) i--\n\n if (i < 0) return 1\n\n const first = data[i]\n\n let needed\n if (first >= 0xc2 && first <= 0xdf) needed = 2\n else if (first >= 0xe0 && first <= 0xef) needed = 3\n else if (first >= 0xf0 && first <= 0xf4) needed = 4\n else return 1\n\n if (len - i !== needed) return 1\n\n if (needed >= 3) {\n const second = data[i + 1]\n if (first === 0xe0 && second < 0xa0) return 1\n if (first === 0xed && second > 0x9f) return 1\n if (first === 0xf0 && second < 0x90) return 1\n if (first === 0xf4 && second > 0x8f) return 1\n }\n\n return 0\n}\n","const PassThroughDecoder = require('./lib/pass-through-decoder')\nconst UTF8Decoder = require('./lib/utf8-decoder')\n\nmodule.exports = class TextDecoder {\n constructor(encoding = 'utf8') {\n this.encoding = normalizeEncoding(encoding)\n\n switch (this.encoding) {\n case 'utf8':\n this.decoder = new UTF8Decoder()\n break\n case 'utf16le':\n case 'base64':\n throw new Error('Unsupported encoding: ' + this.encoding)\n default:\n this.decoder = new PassThroughDecoder(this.encoding)\n }\n }\n\n get remaining() {\n return this.decoder.remaining\n }\n\n push(data) {\n if (typeof data === 'string') return data\n return this.decoder.decode(data)\n }\n\n // For Node.js compatibility\n write(data) {\n return this.push(data)\n }\n\n end(data) {\n let result = ''\n if (data) result = this.push(data)\n result += this.decoder.flush()\n return result\n }\n}\n\nfunction normalizeEncoding(encoding) {\n encoding = encoding.toLowerCase()\n\n switch (encoding) {\n case 'utf8':\n case 'utf-8':\n return 'utf8'\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le'\n case 'latin1':\n case 'binary':\n return 'latin1'\n case 'base64':\n case 'ascii':\n case 'hex':\n return encoding\n default:\n throw new Error('Unknown encoding: ' + encoding)\n }\n}\n","const { EventEmitter } = require('events-universal')\nconst STREAM_DESTROYED = new Error('Stream was destroyed')\nconst PREMATURE_CLOSE = new Error('Premature close')\n\nconst FIFO = require('fast-fifo')\nconst TextDecoder = require('text-decoder')\n\n// if we do a future major, expect queue microtask to be there always, for now a bit defensive\nconst qmt =\n typeof queueMicrotask === 'undefined' ? (fn) => global.process.nextTick(fn) : queueMicrotask\n\n// 29 bits used total (4 from shared, 14 from read, and 11 from write)\nconst MAX = (1 << 29) - 1\n\n// Shared state\nconst OPENING = 0b0001\nconst PREDESTROYING = 0b0010\nconst DESTROYING = 0b0100\nconst DESTROYED = 0b1000\n\nconst NOT_OPENING = MAX ^ OPENING\nconst NOT_PREDESTROYING = MAX ^ PREDESTROYING\n\n// Read state (4 bit offset from shared state)\nconst READ_ACTIVE = 0b00000000000001 << 4\nconst READ_UPDATING = 0b00000000000010 << 4\nconst READ_PRIMARY = 0b00000000000100 << 4\nconst READ_QUEUED = 0b00000000001000 << 4\nconst READ_RESUMED = 0b00000000010000 << 4\nconst READ_PIPE_DRAINED = 0b00000000100000 << 4\nconst READ_ENDING = 0b00000001000000 << 4\nconst READ_EMIT_DATA = 0b00000010000000 << 4\nconst READ_EMIT_READABLE = 0b00000100000000 << 4\nconst READ_EMITTED_READABLE = 0b00001000000000 << 4\nconst READ_DONE = 0b00010000000000 << 4\nconst READ_NEXT_TICK = 0b00100000000000 << 4\nconst READ_NEEDS_PUSH = 0b01000000000000 << 4\nconst READ_READ_AHEAD = 0b10000000000000 << 4\n\n// Combined read state\nconst READ_FLOWING = READ_RESUMED | READ_PIPE_DRAINED\nconst READ_ACTIVE_AND_NEEDS_PUSH = READ_ACTIVE | READ_NEEDS_PUSH\nconst READ_PRIMARY_AND_ACTIVE = READ_PRIMARY | READ_ACTIVE\nconst READ_EMIT_READABLE_AND_QUEUED = READ_EMIT_READABLE | READ_QUEUED\nconst READ_RESUMED_READ_AHEAD = READ_RESUMED | READ_READ_AHEAD\n\nconst READ_NOT_ACTIVE = MAX ^ READ_ACTIVE\nconst READ_NON_PRIMARY = MAX ^ READ_PRIMARY\nconst READ_NON_PRIMARY_AND_PUSHED = MAX ^ (READ_PRIMARY | READ_NEEDS_PUSH)\nconst READ_PUSHED = MAX ^ READ_NEEDS_PUSH\nconst READ_PAUSED = MAX ^ READ_RESUMED\nconst READ_NOT_QUEUED = MAX ^ (READ_QUEUED | READ_EMITTED_READABLE)\nconst READ_NOT_ENDING = MAX ^ READ_ENDING\nconst READ_PIPE_NOT_DRAINED = MAX ^ READ_FLOWING\nconst READ_NOT_NEXT_TICK = MAX ^ READ_NEXT_TICK\nconst READ_NOT_UPDATING = MAX ^ READ_UPDATING\nconst READ_NO_READ_AHEAD = MAX ^ READ_READ_AHEAD\nconst READ_PAUSED_NO_READ_AHEAD = MAX ^ READ_RESUMED_READ_AHEAD\n\n// Write state (18 bit offset, 4 bit offset from shared state and 14 from read state)\nconst WRITE_ACTIVE = 0b00000000001 << 18\nconst WRITE_UPDATING = 0b00000000010 << 18\nconst WRITE_PRIMARY = 0b00000000100 << 18\nconst WRITE_QUEUED = 0b00000001000 << 18\nconst WRITE_UNDRAINED = 0b00000010000 << 18\nconst WRITE_DONE = 0b00000100000 << 18\nconst WRITE_EMIT_DRAIN = 0b00001000000 << 18\nconst WRITE_NEXT_TICK = 0b00010000000 << 18\nconst WRITE_WRITING = 0b00100000000 << 18\nconst WRITE_FINISHING = 0b01000000000 << 18\nconst WRITE_CORKED = 0b10000000000 << 18\n\nconst WRITE_NOT_ACTIVE = MAX ^ (WRITE_ACTIVE | WRITE_WRITING)\nconst WRITE_NON_PRIMARY = MAX ^ WRITE_PRIMARY\nconst WRITE_NOT_FINISHING = MAX ^ (WRITE_ACTIVE | WRITE_FINISHING)\nconst WRITE_DRAINED = MAX ^ WRITE_UNDRAINED\nconst WRITE_NOT_QUEUED = MAX ^ WRITE_QUEUED\nconst WRITE_NOT_NEXT_TICK = MAX ^ WRITE_NEXT_TICK\nconst WRITE_NOT_UPDATING = MAX ^ WRITE_UPDATING\nconst WRITE_NOT_CORKED = MAX ^ WRITE_CORKED\n\n// Combined shared state\nconst ACTIVE = READ_ACTIVE | WRITE_ACTIVE\nconst NOT_ACTIVE = MAX ^ ACTIVE\nconst DONE = READ_DONE | WRITE_DONE\nconst DESTROY_STATUS = DESTROYING | DESTROYED | PREDESTROYING\nconst OPEN_STATUS = DESTROY_STATUS | OPENING\nconst AUTO_DESTROY = DESTROY_STATUS | DONE\nconst NON_PRIMARY = WRITE_NON_PRIMARY & READ_NON_PRIMARY\nconst ACTIVE_OR_TICKING = WRITE_NEXT_TICK | READ_NEXT_TICK\nconst TICKING = ACTIVE_OR_TICKING & NOT_ACTIVE\nconst IS_OPENING = OPEN_STATUS | TICKING\n\n// Combined shared state and read state\nconst READ_PRIMARY_STATUS = OPEN_STATUS | READ_ENDING | READ_DONE\nconst READ_STATUS = OPEN_STATUS | READ_DONE | READ_QUEUED\nconst READ_ENDING_STATUS = OPEN_STATUS | READ_ENDING | READ_QUEUED\nconst READ_READABLE_STATUS = OPEN_STATUS | READ_EMIT_READABLE | READ_QUEUED | READ_EMITTED_READABLE\nconst SHOULD_NOT_READ =\n OPEN_STATUS | READ_ACTIVE | READ_ENDING | READ_DONE | READ_NEEDS_PUSH | READ_READ_AHEAD\nconst READ_BACKPRESSURE_STATUS = DESTROY_STATUS | READ_ENDING | READ_DONE\nconst READ_UPDATE_SYNC_STATUS = READ_UPDATING | OPEN_STATUS | READ_NEXT_TICK | READ_PRIMARY\nconst READ_NEXT_TICK_OR_OPENING = READ_NEXT_TICK | OPENING\n\n// Combined write state\nconst WRITE_PRIMARY_STATUS = OPEN_STATUS | WRITE_FINISHING | WRITE_DONE\nconst WRITE_QUEUED_AND_UNDRAINED = WRITE_QUEUED | WRITE_UNDRAINED\nconst WRITE_QUEUED_AND_ACTIVE = WRITE_QUEUED | WRITE_ACTIVE\nconst WRITE_DRAIN_STATUS = WRITE_QUEUED | WRITE_UNDRAINED | OPEN_STATUS | WRITE_ACTIVE\nconst WRITE_STATUS = OPEN_STATUS | WRITE_ACTIVE | WRITE_QUEUED | WRITE_CORKED\nconst WRITE_PRIMARY_AND_ACTIVE = WRITE_PRIMARY | WRITE_ACTIVE\nconst WRITE_ACTIVE_AND_WRITING = WRITE_ACTIVE | WRITE_WRITING\nconst WRITE_FINISHING_STATUS = OPEN_STATUS | WRITE_FINISHING | WRITE_QUEUED_AND_ACTIVE | WRITE_DONE\nconst WRITE_BACKPRESSURE_STATUS = WRITE_UNDRAINED | DESTROY_STATUS | WRITE_FINISHING | WRITE_DONE\nconst WRITE_UPDATE_SYNC_STATUS = WRITE_UPDATING | OPEN_STATUS | WRITE_NEXT_TICK | WRITE_PRIMARY\nconst WRITE_DROP_DATA = WRITE_FINISHING | WRITE_DONE | DESTROY_STATUS\n\nconst asyncIterator = Symbol.asyncIterator || Symbol('asyncIterator')\n\nclass WritableState {\n constructor(\n stream,\n { highWaterMark = 16384, map = null, mapWritable, byteLength, byteLengthWritable } = {}\n ) {\n this.stream = stream\n this.queue = new FIFO()\n this.highWaterMark = highWaterMark\n this.buffered = 0\n this.error = null\n this.pipeline = null\n this.drains = null // if we add more seldomly used helpers we might them into a subobject so its a single ptr\n this.byteLength = byteLengthWritable || byteLength || defaultByteLength\n this.map = mapWritable || map\n this.afterWrite = afterWrite.bind(this)\n this.afterUpdateNextTick = updateWriteNT.bind(this)\n }\n\n get ending() {\n return (this.stream._duplexState & WRITE_FINISHING) !== 0\n }\n\n get ended() {\n return (this.stream._duplexState & WRITE_DONE) !== 0\n }\n\n push(data) {\n if ((this.stream._duplexState & WRITE_DROP_DATA) !== 0) return false\n if (this.map !== null) data = this.map(data)\n\n this.buffered += this.byteLength(data)\n this.queue.push(data)\n\n if (this.buffered < this.highWaterMark) {\n this.stream._duplexState |= WRITE_QUEUED\n return true\n }\n\n this.stream._duplexState |= WRITE_QUEUED_AND_UNDRAINED\n return false\n }\n\n shift() {\n const data = this.queue.shift()\n\n this.buffered -= this.byteLength(data)\n if (this.buffered === 0) this.stream._duplexState &= WRITE_NOT_QUEUED\n\n return data\n }\n\n end(data) {\n if (typeof data === 'function') this.stream.once('finish', data)\n else if (data !== undefined && data !== null) this.push(data)\n this.stream._duplexState = (this.stream._duplexState | WRITE_FINISHING) & WRITE_NON_PRIMARY\n }\n\n autoBatch(data, cb) {\n const buffer = []\n const stream = this.stream\n\n buffer.push(data)\n while ((stream._duplexState & WRITE_STATUS) === WRITE_QUEUED_AND_ACTIVE) {\n buffer.push(stream._writableState.shift())\n }\n\n if ((stream._duplexState & OPEN_STATUS) !== 0) return cb(null)\n stream._writev(buffer, cb)\n }\n\n update() {\n const stream = this.stream\n\n stream._duplexState |= WRITE_UPDATING\n\n do {\n while ((stream._duplexState & WRITE_STATUS) === WRITE_QUEUED) {\n const data = this.shift()\n stream._duplexState |= WRITE_ACTIVE_AND_WRITING\n stream._write(data, this.afterWrite)\n }\n\n if ((stream._duplexState & WRITE_PRIMARY_AND_ACTIVE) === 0) this.updateNonPrimary()\n } while (this.continueUpdate() === true)\n\n stream._duplexState &= WRITE_NOT_UPDATING\n }\n\n updateNonPrimary() {\n const stream = this.stream\n\n if ((stream._duplexState & WRITE_FINISHING_STATUS) === WRITE_FINISHING) {\n stream._duplexState = stream._duplexState | WRITE_ACTIVE\n stream._final(afterFinal.bind(this))\n return\n }\n\n if ((stream._duplexState & DESTROY_STATUS) === DESTROYING) {\n if ((stream._duplexState & ACTIVE_OR_TICKING) === 0) {\n stream._duplexState |= ACTIVE\n stream._destroy(afterDestroy.bind(this))\n }\n return\n }\n\n if ((stream._duplexState & IS_OPENING) === OPENING) {\n stream._duplexState = (stream._duplexState | ACTIVE) & NOT_OPENING\n stream._open(afterOpen.bind(this))\n }\n }\n\n continueUpdate() {\n if ((this.stream._duplexState & WRITE_NEXT_TICK) === 0) return false\n this.stream._duplexState &= WRITE_NOT_NEXT_TICK\n return true\n }\n\n updateCallback() {\n if ((this.stream._duplexState & WRITE_UPDATE_SYNC_STATUS) === WRITE_PRIMARY) this.update()\n else this.updateNextTick()\n }\n\n updateNextTick() {\n if ((this.stream._duplexState & WRITE_NEXT_TICK) !== 0) return\n this.stream._duplexState |= WRITE_NEXT_TICK\n if ((this.stream._duplexState & WRITE_UPDATING) === 0) qmt(this.afterUpdateNextTick)\n }\n}\n\nclass ReadableState {\n constructor(\n stream,\n { highWaterMark = 16384, map = null, mapReadable, byteLength, byteLengthReadable } = {}\n ) {\n this.stream = stream\n this.queue = new FIFO()\n this.highWaterMark = highWaterMark === 0 ? 1 : highWaterMark\n this.buffered = 0\n this.readAhead = highWaterMark > 0\n this.error = null\n this.pipeline = null\n this.byteLength = byteLengthReadable || byteLength || defaultByteLength\n this.map = mapReadable || map\n this.pipeTo = null\n this.afterRead = afterRead.bind(this)\n this.afterUpdateNextTick = updateReadNT.bind(this)\n }\n\n get ending() {\n return (this.stream._duplexState & READ_ENDING) !== 0\n }\n\n get ended() {\n return (this.stream._duplexState & READ_DONE) !== 0\n }\n\n pipe(pipeTo, cb) {\n if (this.pipeTo !== null) throw new Error('Can only pipe to one destination')\n if (typeof cb !== 'function') cb = null\n\n this.stream._duplexState |= READ_PIPE_DRAINED\n this.pipeTo = pipeTo\n this.pipeline = new Pipeline(this.stream, pipeTo, cb)\n\n if (cb) this.stream.on('error', noop) // We already error handle this so supress crashes\n\n if (isStreamx(pipeTo)) {\n pipeTo._writableState.pipeline = this.pipeline\n if (cb) pipeTo.on('error', noop) // We already error handle this so supress crashes\n pipeTo.on('finish', this.pipeline.finished.bind(this.pipeline)) // TODO: just call finished from pipeTo itself\n } else {\n const onerror = this.pipeline.done.bind(this.pipeline, pipeTo)\n const onclose = this.pipeline.done.bind(this.pipeline, pipeTo, null) // onclose has a weird bool arg\n pipeTo.on('error', onerror)\n pipeTo.on('close', onclose)\n pipeTo.on('finish', this.pipeline.finished.bind(this.pipeline))\n }\n\n pipeTo.on('drain', afterDrain.bind(this))\n this.stream.emit('piping', pipeTo)\n pipeTo.emit('pipe', this.stream)\n }\n\n push(data) {\n const stream = this.stream\n\n if (data === null) {\n this.highWaterMark = 0\n stream._duplexState = (stream._duplexState | READ_ENDING) & READ_NON_PRIMARY_AND_PUSHED\n return false\n }\n\n if (this.map !== null) {\n data = this.map(data)\n if (data === null) {\n stream._duplexState &= READ_PUSHED\n return this.buffered < this.highWaterMark\n }\n }\n\n this.buffered += this.byteLength(data)\n this.queue.push(data)\n\n stream._duplexState = (stream._duplexState | READ_QUEUED) & READ_PUSHED\n\n return this.buffered < this.highWaterMark\n }\n\n shift() {\n const data = this.queue.shift()\n\n this.buffered -= this.byteLength(data)\n if (this.buffered === 0) this.stream._duplexState &= READ_NOT_QUEUED\n return data\n }\n\n unshift(data) {\n const pending = [this.map !== null ? this.map(data) : data]\n while (this.buffered > 0) pending.push(this.shift())\n\n for (let i = 0; i < pending.length - 1; i++) {\n const data = pending[i]\n this.buffered += this.byteLength(data)\n this.queue.push(data)\n }\n\n this.push(pending[pending.length - 1])\n }\n\n read() {\n const stream = this.stream\n\n if ((stream._duplexState & READ_STATUS) === READ_QUEUED) {\n const data = this.shift()\n if (this.pipeTo !== null && this.pipeTo.write(data) === false)\n stream._duplexState &= READ_PIPE_NOT_DRAINED\n if ((stream._duplexState & READ_EMIT_DATA) !== 0) stream.emit('data', data)\n return data\n }\n\n if (this.readAhead === false) {\n stream._duplexState |= READ_READ_AHEAD\n this.updateNextTick()\n }\n\n return null\n }\n\n drain() {\n const stream = this.stream\n\n while (\n (stream._duplexState & READ_STATUS) === READ_QUEUED &&\n (stream._duplexState & READ_FLOWING) !== 0\n ) {\n const data = this.shift()\n if (this.pipeTo !== null && this.pipeTo.write(data) === false)\n stream._duplexState &= READ_PIPE_NOT_DRAINED\n if ((stream._duplexState & READ_EMIT_DATA) !== 0) stream.emit('data', data)\n }\n }\n\n update() {\n const stream = this.stream\n\n stream._duplexState |= READ_UPDATING\n\n do {\n this.drain()\n\n while (\n this.buffered < this.highWaterMark &&\n (stream._duplexState & SHOULD_NOT_READ) === READ_READ_AHEAD\n ) {\n stream._duplexState |= READ_ACTIVE_AND_NEEDS_PUSH\n stream._read(this.afterRead)\n this.drain()\n }\n\n if ((stream._duplexState & READ_READABLE_STATUS) === READ_EMIT_READABLE_AND_QUEUED) {\n stream._duplexState |= READ_EMITTED_READABLE\n stream.emit('readable')\n }\n\n if ((stream._duplexState & READ_PRIMARY_AND_ACTIVE) === 0) this.updateNonPrimary()\n } while (this.continueUpdate() === true)\n\n stream._duplexState &= READ_NOT_UPDATING\n }\n\n updateNonPrimary() {\n const stream = this.stream\n\n if ((stream._duplexState & READ_ENDING_STATUS) === READ_ENDING) {\n stream._duplexState = (stream._duplexState | READ_DONE) & READ_NOT_ENDING\n stream.emit('end')\n if ((stream._duplexState & AUTO_DESTROY) === DONE) stream._duplexState |= DESTROYING\n if (this.pipeTo !== null) this.pipeTo.end()\n }\n\n if ((stream._duplexState & DESTROY_STATUS) === DESTROYING) {\n if ((stream._duplexState & ACTIVE_OR_TICKING) === 0) {\n stream._duplexState |= ACTIVE\n stream._destroy(afterDestroy.bind(this))\n }\n return\n }\n\n if ((stream._duplexState & IS_OPENING) === OPENING) {\n stream._duplexState = (stream._duplexState | ACTIVE) & NOT_OPENING\n stream._open(afterOpen.bind(this))\n }\n }\n\n continueUpdate() {\n if ((this.stream._duplexState & READ_NEXT_TICK) === 0) return false\n this.stream._duplexState &= READ_NOT_NEXT_TICK\n return true\n }\n\n updateCallback() {\n if ((this.stream._duplexState & READ_UPDATE_SYNC_STATUS) === READ_PRIMARY) this.update()\n else this.updateNextTick()\n }\n\n updateNextTickIfOpen() {\n if ((this.stream._duplexState & READ_NEXT_TICK_OR_OPENING) !== 0) return\n this.stream._duplexState |= READ_NEXT_TICK\n if ((this.stream._duplexState & READ_UPDATING) === 0) qmt(this.afterUpdateNextTick)\n }\n\n updateNextTick() {\n if ((this.stream._duplexState & READ_NEXT_TICK) !== 0) return\n this.stream._duplexState |= READ_NEXT_TICK\n if ((this.stream._duplexState & READ_UPDATING) === 0) qmt(this.afterUpdateNextTick)\n }\n}\n\nclass TransformState {\n constructor(stream) {\n this.data = null\n this.afterTransform = afterTransform.bind(stream)\n this.afterFinal = null\n }\n}\n\nclass Pipeline {\n constructor(src, dst, cb) {\n this.from = src\n this.to = dst\n this.afterPipe = cb\n this.error = null\n this.pipeToFinished = false\n }\n\n finished() {\n this.pipeToFinished = true\n }\n\n done(stream, err) {\n if (err) this.error = err\n\n if (stream === this.to) {\n this.to = null\n\n if (this.from !== null) {\n if ((this.from._duplexState & READ_DONE) === 0 || !this.pipeToFinished) {\n this.from.destroy(this.error || new Error('Writable stream closed prematurely'))\n }\n return\n }\n }\n\n if (stream === this.from) {\n this.from = null\n\n if (this.to !== null) {\n if ((stream._duplexState & READ_DONE) === 0) {\n this.to.destroy(this.error || new Error('Readable stream closed before ending'))\n }\n return\n }\n }\n\n if (this.afterPipe !== null) this.afterPipe(this.error)\n this.to = this.from = this.afterPipe = null\n }\n}\n\nfunction afterDrain() {\n this.stream._duplexState |= READ_PIPE_DRAINED\n this.updateCallback()\n}\n\nfunction afterFinal(err) {\n const stream = this.stream\n if (err) stream.destroy(err)\n if ((stream._duplexState & DESTROY_STATUS) === 0) {\n stream._duplexState |= WRITE_DONE\n stream.emit('finish')\n }\n if ((stream._duplexState & AUTO_DESTROY) === DONE) {\n stream._duplexState |= DESTROYING\n }\n\n stream._duplexState &= WRITE_NOT_FINISHING\n\n // no need to wait the extra tick here, so we short circuit that\n if ((stream._duplexState & WRITE_UPDATING) === 0) this.update()\n else this.updateNextTick()\n}\n\nfunction afterDestroy(err) {\n const stream = this.stream\n\n if (!err && this.error !== STREAM_DESTROYED) err = this.error\n if (err) stream.emit('error', err)\n stream._duplexState |= DESTROYED\n stream.emit('close')\n\n const rs = stream._readableState\n const ws = stream._writableState\n\n if (rs !== null && rs.pipeline !== null) rs.pipeline.done(stream, err)\n\n if (ws !== null) {\n while (ws.drains !== null && ws.drains.length > 0) ws.drains.shift().resolve(false)\n if (ws.pipeline !== null) ws.pipeline.done(stream, err)\n }\n}\n\nfunction afterWrite(err) {\n const stream = this.stream\n\n if (err) stream.destroy(err)\n stream._duplexState &= WRITE_NOT_ACTIVE\n\n if (this.drains !== null) tickDrains(this.drains)\n\n if ((stream._duplexState & WRITE_DRAIN_STATUS) === WRITE_UNDRAINED) {\n stream._duplexState &= WRITE_DRAINED\n if ((stream._duplexState & WRITE_EMIT_DRAIN) === WRITE_EMIT_DRAIN) {\n stream.emit('drain')\n }\n }\n\n this.updateCallback()\n}\n\nfunction afterRead(err) {\n if (err) this.stream.destroy(err)\n this.stream._duplexState &= READ_NOT_ACTIVE\n if (this.readAhead === false && (this.stream._duplexState & READ_RESUMED) === 0)\n this.stream._duplexState &= READ_NO_READ_AHEAD\n this.updateCallback()\n}\n\nfunction updateReadNT() {\n if ((this.stream._duplexState & READ_UPDATING) === 0) {\n this.stream._duplexState &= READ_NOT_NEXT_TICK\n this.update()\n }\n}\n\nfunction updateWriteNT() {\n if ((this.stream._duplexState & WRITE_UPDATING) === 0) {\n this.stream._duplexState &= WRITE_NOT_NEXT_TICK\n this.update()\n }\n}\n\nfunction tickDrains(drains) {\n for (let i = 0; i < drains.length; i++) {\n // drains.writes are monotonic, so if one is 0 its always the first one\n if (--drains[i].writes === 0) {\n drains.shift().resolve(true)\n i--\n }\n }\n}\n\nfunction afterOpen(err) {\n const stream = this.stream\n\n if (err) stream.destroy(err)\n\n if ((stream._duplexState & DESTROYING) === 0) {\n if ((stream._duplexState & READ_PRIMARY_STATUS) === 0) stream._duplexState |= READ_PRIMARY\n if ((stream._duplexState & WRITE_PRIMARY_STATUS) === 0) stream._duplexState |= WRITE_PRIMARY\n stream.emit('open')\n }\n\n stream._duplexState &= NOT_ACTIVE\n\n if (stream._writableState !== null) {\n stream._writableState.updateCallback()\n }\n\n if (stream._readableState !== null) {\n stream._readableState.updateCallback()\n }\n}\n\nfunction afterTransform(err, data) {\n if (data !== undefined && data !== null) this.push(data)\n this._writableState.afterWrite(err)\n}\n\nfunction newListener(name) {\n if (this._readableState !== null) {\n if (name === 'data') {\n this._duplexState |= READ_EMIT_DATA | READ_RESUMED_READ_AHEAD\n this._readableState.updateNextTick()\n }\n if (name === 'readable') {\n this._duplexState |= READ_EMIT_READABLE\n this._readableState.updateNextTick()\n }\n }\n\n if (this._writableState !== null) {\n if (name === 'drain') {\n this._duplexState |= WRITE_EMIT_DRAIN\n this._writableState.updateNextTick()\n }\n }\n}\n\nclass Stream extends EventEmitter {\n constructor(opts) {\n super()\n\n this._duplexState = 0\n this._readableState = null\n this._writableState = null\n\n if (opts) {\n if (opts.open) this._open = opts.open\n if (opts.destroy) this._destroy = opts.destroy\n if (opts.predestroy) this._predestroy = opts.predestroy\n if (opts.signal) {\n opts.signal.addEventListener('abort', abort.bind(this))\n }\n }\n\n this.on('newListener', newListener)\n }\n\n _open(cb) {\n cb(null)\n }\n\n _destroy(cb) {\n cb(null)\n }\n\n _predestroy() {\n // does nothing\n }\n\n get readable() {\n return this._readableState !== null ? true : undefined\n }\n\n get writable() {\n return this._writableState !== null ? true : undefined\n }\n\n get destroyed() {\n return (this._duplexState & DESTROYED) !== 0\n }\n\n get destroying() {\n return (this._duplexState & DESTROY_STATUS) !== 0\n }\n\n destroy(err) {\n if ((this._duplexState & DESTROY_STATUS) === 0) {\n if (!err) err = STREAM_DESTROYED\n this._duplexState = (this._duplexState | DESTROYING) & NON_PRIMARY\n\n if (this._readableState !== null) {\n this._readableState.highWaterMark = 0\n this._readableState.error = err\n }\n if (this._writableState !== null) {\n this._writableState.highWaterMark = 0\n this._writableState.error = err\n }\n\n this._duplexState |= PREDESTROYING\n this._predestroy()\n this._duplexState &= NOT_PREDESTROYING\n\n if (this._readableState !== null) this._readableState.updateNextTick()\n if (this._writableState !== null) this._writableState.updateNextTick()\n }\n }\n}\n\nclass Readable extends Stream {\n constructor(opts) {\n super(opts)\n\n this._duplexState |= OPENING | WRITE_DONE | READ_READ_AHEAD\n this._readableState = new ReadableState(this, opts)\n\n if (opts) {\n if (this._readableState.readAhead === false) this._duplexState &= READ_NO_READ_AHEAD\n if (opts.read) this._read = opts.read\n if (opts.eagerOpen) this._readableState.updateNextTick()\n if (opts.encoding) this.setEncoding(opts.encoding)\n }\n }\n\n setEncoding(encoding) {\n const dec = new TextDecoder(encoding)\n const map = this._readableState.map || echo\n this._readableState.map = mapOrSkip\n return this\n\n function mapOrSkip(data) {\n const next = dec.push(data)\n return next === '' && (data.byteLength !== 0 || dec.remaining > 0) ? null : map(next)\n }\n }\n\n _read(cb) {\n cb(null)\n }\n\n pipe(dest, cb) {\n this._readableState.updateNextTick()\n this._readableState.pipe(dest, cb)\n return dest\n }\n\n read() {\n this._readableState.updateNextTick()\n return this._readableState.read()\n }\n\n push(data) {\n this._readableState.updateNextTickIfOpen()\n return this._readableState.push(data)\n }\n\n unshift(data) {\n this._readableState.updateNextTickIfOpen()\n return this._readableState.unshift(data)\n }\n\n resume() {\n this._duplexState |= READ_RESUMED_READ_AHEAD\n this._readableState.updateNextTick()\n return this\n }\n\n pause() {\n this._duplexState &=\n this._readableState.readAhead === false ? READ_PAUSED_NO_READ_AHEAD : READ_PAUSED\n return this\n }\n\n static _fromAsyncIterator(ite, opts) {\n let destroy\n\n const rs = new Readable({\n ...opts,\n read(cb) {\n ite.next().then(push).then(cb.bind(null, null)).catch(cb)\n },\n predestroy() {\n destroy = ite.return()\n },\n destroy(cb) {\n if (!destroy) return cb(null)\n destroy.then(cb.bind(null, null)).catch(cb)\n }\n })\n\n return rs\n\n function push(data) {\n if (data.done) rs.push(null)\n else rs.push(data.value)\n }\n }\n\n static from(data, opts) {\n if (isReadStreamx(data)) return data\n if (data[asyncIterator]) return this._fromAsyncIterator(data[asyncIterator](), opts)\n if (!Array.isArray(data)) data = data === undefined ? [] : [data]\n\n let i = 0\n return new Readable({\n ...opts,\n read(cb) {\n this.push(i === data.length ? null : data[i++])\n cb(null)\n }\n })\n }\n\n static isBackpressured(rs) {\n return (\n (rs._duplexState & READ_BACKPRESSURE_STATUS) !== 0 ||\n rs._readableState.buffered >= rs._readableState.highWaterMark\n )\n }\n\n static isPaused(rs) {\n return (rs._duplexState & READ_RESUMED) === 0\n }\n\n [asyncIterator]() {\n const stream = this\n\n let error = null\n let promiseResolve = null\n let promiseReject = null\n\n this.on('error', (err) => {\n error = err\n })\n this.on('readable', onreadable)\n this.on('close', onclose)\n\n return {\n [asyncIterator]() {\n return this\n },\n next() {\n return new Promise(function (resolve, reject) {\n promiseResolve = resolve\n promiseReject = reject\n const data = stream.read()\n if (data !== null) ondata(data)\n else if ((stream._duplexState & DESTROYED) !== 0) ondata(null)\n })\n },\n return() {\n return destroy(null)\n },\n throw(err) {\n return destroy(err)\n }\n }\n\n function onreadable() {\n if (promiseResolve !== null) ondata(stream.read())\n }\n\n function onclose() {\n if (promiseResolve !== null) ondata(null)\n }\n\n function ondata(data) {\n if (promiseReject === null) return\n if (error) promiseReject(error)\n else if (data === null && (stream._duplexState & READ_DONE) === 0)\n promiseReject(STREAM_DESTROYED)\n else promiseResolve({ value: data, done: data === null })\n promiseReject = promiseResolve = null\n }\n\n function destroy(err) {\n stream.destroy(err)\n return new Promise((resolve, reject) => {\n if (stream._duplexState & DESTROYED) return resolve({ value: undefined, done: true })\n stream.once('close', function () {\n if (err) reject(err)\n else resolve({ value: undefined, done: true })\n })\n })\n }\n }\n}\n\nclass Writable extends Stream {\n constructor(opts) {\n super(opts)\n\n this._duplexState |= OPENING | READ_DONE\n this._writableState = new WritableState(this, opts)\n\n if (opts) {\n if (opts.writev) this._writev = opts.writev\n if (opts.write) this._write = opts.write\n if (opts.final) this._final = opts.final\n if (opts.eagerOpen) this._writableState.updateNextTick()\n }\n }\n\n cork() {\n this._duplexState |= WRITE_CORKED\n }\n\n uncork() {\n this._duplexState &= WRITE_NOT_CORKED\n this._writableState.updateNextTick()\n }\n\n _writev(batch, cb) {\n cb(null)\n }\n\n _write(data, cb) {\n this._writableState.autoBatch(data, cb)\n }\n\n _final(cb) {\n cb(null)\n }\n\n static isBackpressured(ws) {\n return (ws._duplexState & WRITE_BACKPRESSURE_STATUS) !== 0\n }\n\n static drained(ws) {\n if (ws.destroyed) return Promise.resolve(false)\n const state = ws._writableState\n const pending = isWritev(ws) ? Math.min(1, state.queue.length) : state.queue.length\n const writes = pending + (ws._duplexState & WRITE_WRITING ? 1 : 0)\n if (writes === 0) return Promise.resolve(true)\n if (state.drains === null) state.drains = []\n return new Promise((resolve) => {\n state.drains.push({ writes, resolve })\n })\n }\n\n write(data) {\n this._writableState.updateNextTick()\n return this._writableState.push(data)\n }\n\n end(data) {\n this._writableState.updateNextTick()\n this._writableState.end(data)\n return this\n }\n}\n\nclass Duplex extends Readable {\n // and Writable\n constructor(opts) {\n super(opts)\n\n this._duplexState = OPENING | (this._duplexState & READ_READ_AHEAD)\n this._writableState = new WritableState(this, opts)\n\n if (opts) {\n if (opts.writev) this._writev = opts.writev\n if (opts.write) this._write = opts.write\n if (opts.final) this._final = opts.final\n }\n }\n\n cork() {\n this._duplexState |= WRITE_CORKED\n }\n\n uncork() {\n this._duplexState &= WRITE_NOT_CORKED\n this._writableState.updateNextTick()\n }\n\n _writev(batch, cb) {\n cb(null)\n }\n\n _write(data, cb) {\n this._writableState.autoBatch(data, cb)\n }\n\n _final(cb) {\n cb(null)\n }\n\n write(data) {\n this._writableState.updateNextTick()\n return this._writableState.push(data)\n }\n\n end(data) {\n this._writableState.updateNextTick()\n this._writableState.end(data)\n return this\n }\n}\n\nclass Transform extends Duplex {\n constructor(opts) {\n super(opts)\n this._transformState = new TransformState(this)\n\n if (opts) {\n if (opts.transform) this._transform = opts.transform\n if (opts.flush) this._flush = opts.flush\n }\n }\n\n _write(data, cb) {\n if (this._readableState.buffered >= this._readableState.highWaterMark) {\n this._transformState.data = data\n } else {\n this._transform(data, this._transformState.afterTransform)\n }\n }\n\n _read(cb) {\n if (this._transformState.data !== null) {\n const data = this._transformState.data\n this._transformState.data = null\n cb(null)\n this._transform(data, this._transformState.afterTransform)\n } else {\n cb(null)\n }\n }\n\n destroy(err) {\n super.destroy(err)\n if (this._transformState.data !== null) {\n this._transformState.data = null\n this._transformState.afterTransform()\n }\n }\n\n _transform(data, cb) {\n cb(null, data)\n }\n\n _flush(cb) {\n cb(null)\n }\n\n _final(cb) {\n this._transformState.afterFinal = cb\n this._flush(transformAfterFlush.bind(this))\n }\n}\n\nclass PassThrough extends Transform {}\n\nfunction transformAfterFlush(err, data) {\n const cb = this._transformState.afterFinal\n if (err) return cb(err)\n if (data !== null && data !== undefined) this.push(data)\n this.push(null)\n cb(null)\n}\n\nfunction pipelinePromise(...streams) {\n return new Promise((resolve, reject) => {\n return pipeline(...streams, (err) => {\n if (err) return reject(err)\n resolve()\n })\n })\n}\n\nfunction pipeline(stream, ...streams) {\n const all = Array.isArray(stream) ? [...stream, ...streams] : [stream, ...streams]\n const done = all.length && typeof all[all.length - 1] === 'function' ? all.pop() : null\n\n if (all.length < 2) throw new Error('Pipeline requires at least 2 streams')\n\n let src = all[0]\n let dest = null\n let error = null\n\n for (let i = 1; i < all.length; i++) {\n dest = all[i]\n\n if (isStreamx(src)) {\n src.pipe(dest, onerror)\n } else {\n errorHandle(src, true, i > 1, onerror)\n src.pipe(dest)\n }\n\n src = dest\n }\n\n if (done) {\n let fin = false\n\n const autoDestroy =\n isStreamx(dest) || !!(dest._writableState && dest._writableState.autoDestroy)\n\n dest.on('error', (err) => {\n if (error === null) error = err\n })\n\n dest.on('finish', () => {\n fin = true\n if (!autoDestroy) done(error)\n })\n\n if (autoDestroy) {\n dest.on('close', () => done(error || (fin ? null : PREMATURE_CLOSE)))\n }\n }\n\n return dest\n\n function errorHandle(s, rd, wr, onerror) {\n s.on('error', onerror)\n s.on('close', onclose)\n\n function onclose() {\n if (rd && s._readableState && !s._readableState.ended) return onerror(PREMATURE_CLOSE)\n if (wr && s._writableState && !s._writableState.ended) return onerror(PREMATURE_CLOSE)\n }\n }\n\n function onerror(err) {\n if (!err || error) return\n error = err\n\n for (const s of all) {\n s.destroy(err)\n }\n }\n}\n\nfunction echo(s) {\n return s\n}\n\nfunction isStream(stream) {\n return !!stream._readableState || !!stream._writableState\n}\n\nfunction isStreamx(stream) {\n return typeof stream._duplexState === 'number' && isStream(stream)\n}\n\nfunction isEnding(stream) {\n return !!stream._readableState && stream._readableState.ending\n}\n\nfunction isEnded(stream) {\n return !!stream._readableState && stream._readableState.ended\n}\n\nfunction isFinishing(stream) {\n return !!stream._writableState && stream._writableState.ending\n}\n\nfunction isFinished(stream) {\n return !!stream._writableState && stream._writableState.ended\n}\n\nfunction getStreamError(stream, opts = {}) {\n const err =\n (stream._readableState && stream._readableState.error) ||\n (stream._writableState && stream._writableState.error)\n\n // avoid implicit errors by default\n return !opts.all && err === STREAM_DESTROYED ? null : err\n}\n\nfunction isReadStreamx(stream) {\n return isStreamx(stream) && stream.readable\n}\n\nfunction isDisturbed(stream) {\n return (\n (stream._duplexState & OPENING) !== OPENING ||\n (stream._duplexState & DESTROYING) === DESTROYING ||\n (stream._duplexState & ACTIVE_OR_TICKING) !== 0\n )\n}\n\nfunction isTypedArray(data) {\n return typeof data === 'object' && data !== null && typeof data.byteLength === 'number'\n}\n\nfunction defaultByteLength(data) {\n return isTypedArray(data) ? data.byteLength : 1024\n}\n\nfunction noop() {}\n\nfunction abort() {\n this.destroy(new Error('Stream aborted.'))\n}\n\nfunction isWritev(s) {\n return s._writev !== Writable.prototype._writev && s._writev !== Duplex.prototype._writev\n}\n\nmodule.exports = {\n pipeline,\n pipelinePromise,\n isStream,\n isStreamx,\n isEnding,\n isEnded,\n isFinishing,\n isFinished,\n isDisturbed,\n getStreamError,\n Stream,\n Writable,\n Readable,\n Duplex,\n Transform,\n // Export PassThrough for compatibility with Node.js core's stream module\n PassThrough\n}\n","const b4a = require('b4a')\n\nconst ZEROS = '0000000000000000000'\nconst SEVENS = '7777777777777777777'\nconst ZERO_OFFSET = '0'.charCodeAt(0)\nconst USTAR_MAGIC = b4a.from([0x75, 0x73, 0x74, 0x61, 0x72, 0x00]) // ustar\\x00\nconst USTAR_VER = b4a.from([ZERO_OFFSET, ZERO_OFFSET])\nconst GNU_MAGIC = b4a.from([0x75, 0x73, 0x74, 0x61, 0x72, 0x20]) // ustar\\x20\nconst GNU_VER = b4a.from([0x20, 0x00])\nconst MASK = 0o7777\nconst MAGIC_OFFSET = 257\nconst VERSION_OFFSET = 263\n\nexports.decodeLongPath = function decodeLongPath (buf, encoding) {\n return decodeStr(buf, 0, buf.length, encoding)\n}\n\nexports.encodePax = function encodePax (opts) { // TODO: encode more stuff in pax\n let result = ''\n if (opts.name) result += addLength(' path=' + opts.name + '\\n')\n if (opts.linkname) result += addLength(' linkpath=' + opts.linkname + '\\n')\n const pax = opts.pax\n if (pax) {\n for (const key in pax) {\n result += addLength(' ' + key + '=' + pax[key] + '\\n')\n }\n }\n return b4a.from(result)\n}\n\nexports.decodePax = function decodePax (buf) {\n const result = {}\n\n while (buf.length) {\n let i = 0\n while (i < buf.length && buf[i] !== 32) i++\n const len = parseInt(b4a.toString(buf.subarray(0, i)), 10)\n if (!len) return result\n\n const b = b4a.toString(buf.subarray(i + 1, len - 1))\n const keyIndex = b.indexOf('=')\n if (keyIndex === -1) return result\n result[b.slice(0, keyIndex)] = b.slice(keyIndex + 1)\n\n buf = buf.subarray(len)\n }\n\n return result\n}\n\nexports.encode = function encode (opts) {\n const buf = b4a.alloc(512)\n let name = opts.name\n let prefix = ''\n\n if (opts.typeflag === 5 && name[name.length - 1] !== '/') name += '/'\n if (b4a.byteLength(name) !== name.length) return null // utf-8\n\n while (b4a.byteLength(name) > 100) {\n const i = name.indexOf('/')\n if (i === -1) return null\n prefix += prefix ? '/' + name.slice(0, i) : name.slice(0, i)\n name = name.slice(i + 1)\n }\n\n if (b4a.byteLength(name) > 100 || b4a.byteLength(prefix) > 155) return null\n if (opts.linkname && b4a.byteLength(opts.linkname) > 100) return null\n\n b4a.write(buf, name)\n b4a.write(buf, encodeOct(opts.mode & MASK, 6), 100)\n b4a.write(buf, encodeOct(opts.uid, 6), 108)\n b4a.write(buf, encodeOct(opts.gid, 6), 116)\n encodeSize(opts.size, buf, 124)\n b4a.write(buf, encodeOct((opts.mtime.getTime() / 1000) | 0, 11), 136)\n\n buf[156] = ZERO_OFFSET + toTypeflag(opts.type)\n\n if (opts.linkname) b4a.write(buf, opts.linkname, 157)\n\n b4a.copy(USTAR_MAGIC, buf, MAGIC_OFFSET)\n b4a.copy(USTAR_VER, buf, VERSION_OFFSET)\n if (opts.uname) b4a.write(buf, opts.uname, 265)\n if (opts.gname) b4a.write(buf, opts.gname, 297)\n b4a.write(buf, encodeOct(opts.devmajor || 0, 6), 329)\n b4a.write(buf, encodeOct(opts.devminor || 0, 6), 337)\n\n if (prefix) b4a.write(buf, prefix, 345)\n\n b4a.write(buf, encodeOct(cksum(buf), 6), 148)\n\n return buf\n}\n\nexports.decode = function decode (buf, filenameEncoding, allowUnknownFormat) {\n let typeflag = buf[156] === 0 ? 0 : buf[156] - ZERO_OFFSET\n\n let name = decodeStr(buf, 0, 100, filenameEncoding)\n const mode = decodeOct(buf, 100, 8)\n const uid = decodeOct(buf, 108, 8)\n const gid = decodeOct(buf, 116, 8)\n const size = decodeOct(buf, 124, 12)\n const mtime = decodeOct(buf, 136, 12)\n const type = toType(typeflag)\n const linkname = buf[157] === 0 ? null : decodeStr(buf, 157, 100, filenameEncoding)\n const uname = decodeStr(buf, 265, 32)\n const gname = decodeStr(buf, 297, 32)\n const devmajor = decodeOct(buf, 329, 8)\n const devminor = decodeOct(buf, 337, 8)\n\n const c = cksum(buf)\n\n // checksum is still initial value if header was null.\n if (c === 8 * 32) return null\n\n // valid checksum\n if (c !== decodeOct(buf, 148, 8)) throw new Error('Invalid tar header. Maybe the tar is corrupted or it needs to be gunzipped?')\n\n if (isUSTAR(buf)) {\n // ustar (posix) format.\n // prepend prefix, if present.\n if (buf[345]) name = decodeStr(buf, 345, 155, filenameEncoding) + '/' + name\n } else if (isGNU(buf)) {\n // 'gnu'/'oldgnu' format. Similar to ustar, but has support for incremental and\n // multi-volume tarballs.\n } else {\n if (!allowUnknownFormat) {\n throw new Error('Invalid tar header: unknown format.')\n }\n }\n\n // to support old tar versions that use trailing / to indicate dirs\n if (typeflag === 0 && name && name[name.length - 1] === '/') typeflag = 5\n\n return {\n name,\n mode,\n uid,\n gid,\n size,\n mtime: new Date(1000 * mtime),\n type,\n linkname,\n uname,\n gname,\n devmajor,\n devminor,\n pax: null\n }\n}\n\nfunction isUSTAR (buf) {\n return b4a.equals(USTAR_MAGIC, buf.subarray(MAGIC_OFFSET, MAGIC_OFFSET + 6))\n}\n\nfunction isGNU (buf) {\n return b4a.equals(GNU_MAGIC, buf.subarray(MAGIC_OFFSET, MAGIC_OFFSET + 6)) &&\n b4a.equals(GNU_VER, buf.subarray(VERSION_OFFSET, VERSION_OFFSET + 2))\n}\n\nfunction clamp (index, len, defaultValue) {\n if (typeof index !== 'number') return defaultValue\n index = ~~index // Coerce to integer.\n if (index >= len) return len\n if (index >= 0) return index\n index += len\n if (index >= 0) return index\n return 0\n}\n\nfunction toType (flag) {\n switch (flag) {\n case 0:\n return 'file'\n case 1:\n return 'link'\n case 2:\n return 'symlink'\n case 3:\n return 'character-device'\n case 4:\n return 'block-device'\n case 5:\n return 'directory'\n case 6:\n return 'fifo'\n case 7:\n return 'contiguous-file'\n case 72:\n return 'pax-header'\n case 55:\n return 'pax-global-header'\n case 27:\n return 'gnu-long-link-path'\n case 28:\n case 30:\n return 'gnu-long-path'\n }\n\n return null\n}\n\nfunction toTypeflag (flag) {\n switch (flag) {\n case 'file':\n return 0\n case 'link':\n return 1\n case 'symlink':\n return 2\n case 'character-device':\n return 3\n case 'block-device':\n return 4\n case 'directory':\n return 5\n case 'fifo':\n return 6\n case 'contiguous-file':\n return 7\n case 'pax-header':\n return 72\n }\n\n return 0\n}\n\nfunction indexOf (block, num, offset, end) {\n for (; offset < end; offset++) {\n if (block[offset] === num) return offset\n }\n return end\n}\n\nfunction cksum (block) {\n let sum = 8 * 32\n for (let i = 0; i < 148; i++) sum += block[i]\n for (let j = 156; j < 512; j++) sum += block[j]\n return sum\n}\n\nfunction encodeOct (val, n) {\n val = val.toString(8)\n if (val.length > n) return SEVENS.slice(0, n) + ' '\n return ZEROS.slice(0, n - val.length) + val + ' '\n}\n\nfunction encodeSizeBin (num, buf, off) {\n buf[off] = 0x80\n for (let i = 11; i > 0; i--) {\n buf[off + i] = num & 0xff\n num = Math.floor(num / 0x100)\n }\n}\n\nfunction encodeSize (num, buf, off) {\n if (num.toString(8).length > 11) {\n encodeSizeBin(num, buf, off)\n } else {\n b4a.write(buf, encodeOct(num, 11), off)\n }\n}\n\n/* Copied from the node-tar repo and modified to meet\n * tar-stream coding standard.\n *\n * Source: https://github.com/npm/node-tar/blob/51b6627a1f357d2eb433e7378e5f05e83b7aa6cd/lib/header.js#L349\n */\nfunction parse256 (buf) {\n // first byte MUST be either 80 or FF\n // 80 for positive, FF for 2's comp\n let positive\n if (buf[0] === 0x80) positive = true\n else if (buf[0] === 0xFF) positive = false\n else return null\n\n // build up a base-256 tuple from the least sig to the highest\n const tuple = []\n let i\n for (i = buf.length - 1; i > 0; i--) {\n const byte = buf[i]\n if (positive) tuple.push(byte)\n else tuple.push(0xFF - byte)\n }\n\n let sum = 0\n const l = tuple.length\n for (i = 0; i < l; i++) {\n sum += tuple[i] * Math.pow(256, i)\n }\n\n return positive ? sum : -1 * sum\n}\n\nfunction decodeOct (val, offset, length) {\n val = val.subarray(offset, offset + length)\n offset = 0\n\n // If prefixed with 0x80 then parse as a base-256 integer\n if (val[offset] & 0x80) {\n return parse256(val)\n } else {\n // Older versions of tar can prefix with spaces\n while (offset < val.length && val[offset] === 32) offset++\n const end = clamp(indexOf(val, 32, offset, val.length), val.length, val.length)\n while (offset < end && val[offset] === 0) offset++\n if (end === offset) return 0\n return parseInt(b4a.toString(val.subarray(offset, end)), 8)\n }\n}\n\nfunction decodeStr (val, offset, length, encoding) {\n return b4a.toString(val.subarray(offset, indexOf(val, 0, offset, offset + length)), encoding)\n}\n\nfunction addLength (str) {\n const len = b4a.byteLength(str)\n let digits = Math.floor(Math.log(len) / Math.log(10)) + 1\n if (len + digits >= Math.pow(10, digits)) digits++\n\n return (len + digits) + str\n}\n","const { Writable, Readable, getStreamError } = require('streamx')\nconst FIFO = require('fast-fifo')\nconst b4a = require('b4a')\nconst headers = require('./headers')\n\nconst EMPTY = b4a.alloc(0)\n\nclass BufferList {\n constructor () {\n this.buffered = 0\n this.shifted = 0\n this.queue = new FIFO()\n\n this._offset = 0\n }\n\n push (buffer) {\n this.buffered += buffer.byteLength\n this.queue.push(buffer)\n }\n\n shiftFirst (size) {\n return this._buffered === 0 ? null : this._next(size)\n }\n\n shift (size) {\n if (size > this.buffered) return null\n if (size === 0) return EMPTY\n\n let chunk = this._next(size)\n\n if (size === chunk.byteLength) return chunk // likely case\n\n const chunks = [chunk]\n\n while ((size -= chunk.byteLength) > 0) {\n chunk = this._next(size)\n chunks.push(chunk)\n }\n\n return b4a.concat(chunks)\n }\n\n _next (size) {\n const buf = this.queue.peek()\n const rem = buf.byteLength - this._offset\n\n if (size >= rem) {\n const sub = this._offset ? buf.subarray(this._offset, buf.byteLength) : buf\n this.queue.shift()\n this._offset = 0\n this.buffered -= rem\n this.shifted += rem\n return sub\n }\n\n this.buffered -= size\n this.shifted += size\n\n return buf.subarray(this._offset, (this._offset += size))\n }\n}\n\nclass Source extends Readable {\n constructor (self, header, offset) {\n super()\n\n this.header = header\n this.offset = offset\n\n this._parent = self\n }\n\n _read (cb) {\n if (this.header.size === 0) {\n this.push(null)\n }\n if (this._parent._stream === this) {\n this._parent._update()\n }\n cb(null)\n }\n\n _predestroy () {\n this._parent.destroy(getStreamError(this))\n }\n\n _detach () {\n if (this._parent._stream === this) {\n this._parent._stream = null\n this._parent._missing = overflow(this.header.size)\n this._parent._update()\n }\n }\n\n _destroy (cb) {\n this._detach()\n cb(null)\n }\n}\n\nclass Extract extends Writable {\n constructor (opts) {\n super(opts)\n\n if (!opts) opts = {}\n\n this._buffer = new BufferList()\n this._offset = 0\n this._header = null\n this._stream = null\n this._missing = 0\n this._longHeader = false\n this._callback = noop\n this._locked = false\n this._finished = false\n this._pax = null\n this._paxGlobal = null\n this._gnuLongPath = null\n this._gnuLongLinkPath = null\n this._filenameEncoding = opts.filenameEncoding || 'utf-8'\n this._allowUnknownFormat = !!opts.allowUnknownFormat\n this._unlockBound = this._unlock.bind(this)\n }\n\n _unlock (err) {\n this._locked = false\n\n if (err) {\n this.destroy(err)\n this._continueWrite(err)\n return\n }\n\n this._update()\n }\n\n _consumeHeader () {\n if (this._locked) return false\n\n this._offset = this._buffer.shifted\n\n try {\n this._header = headers.decode(this._buffer.shift(512), this._filenameEncoding, this._allowUnknownFormat)\n } catch (err) {\n this._continueWrite(err)\n return false\n }\n\n if (!this._header) return true\n\n switch (this._header.type) {\n case 'gnu-long-path':\n case 'gnu-long-link-path':\n case 'pax-global-header':\n case 'pax-header':\n this._longHeader = true\n this._missing = this._header.size\n return true\n }\n\n this._locked = true\n this._applyLongHeaders()\n\n if (this._header.size === 0 || this._header.type === 'directory') {\n this.emit('entry', this._header, this._createStream(), this._unlockBound)\n return true\n }\n\n this._stream = this._createStream()\n this._missing = this._header.size\n\n this.emit('entry', this._header, this._stream, this._unlockBound)\n return true\n }\n\n _applyLongHeaders () {\n if (this._gnuLongPath) {\n this._header.name = this._gnuLongPath\n this._gnuLongPath = null\n }\n\n if (this._gnuLongLinkPath) {\n this._header.linkname = this._gnuLongLinkPath\n this._gnuLongLinkPath = null\n }\n\n if (this._pax) {\n if (this._pax.path) this._header.name = this._pax.path\n if (this._pax.linkpath) this._header.linkname = this._pax.linkpath\n if (this._pax.size) this._header.size = parseInt(this._pax.size, 10)\n this._header.pax = this._pax\n this._pax = null\n }\n }\n\n _decodeLongHeader (buf) {\n switch (this._header.type) {\n case 'gnu-long-path':\n this._gnuLongPath = headers.decodeLongPath(buf, this._filenameEncoding)\n break\n case 'gnu-long-link-path':\n this._gnuLongLinkPath = headers.decodeLongPath(buf, this._filenameEncoding)\n break\n case 'pax-global-header':\n this._paxGlobal = headers.decodePax(buf)\n break\n case 'pax-header':\n this._pax = this._paxGlobal === null\n ? headers.decodePax(buf)\n : Object.assign({}, this._paxGlobal, headers.decodePax(buf))\n break\n }\n }\n\n _consumeLongHeader () {\n this._longHeader = false\n this._missing = overflow(this._header.size)\n\n const buf = this._buffer.shift(this._header.size)\n\n try {\n this._decodeLongHeader(buf)\n } catch (err) {\n this._continueWrite(err)\n return false\n }\n\n return true\n }\n\n _consumeStream () {\n const buf = this._buffer.shiftFirst(this._missing)\n if (buf === null) return false\n\n this._missing -= buf.byteLength\n const drained = this._stream.push(buf)\n\n if (this._missing === 0) {\n this._stream.push(null)\n if (drained) this._stream._detach()\n return drained && this._locked === false\n }\n\n return drained\n }\n\n _createStream () {\n return new Source(this, this._header, this._offset)\n }\n\n _update () {\n while (this._buffer.buffered > 0 && !this.destroying) {\n if (this._missing > 0) {\n if (this._stream !== null) {\n if (this._consumeStream() === false) return\n continue\n }\n\n if (this._longHeader === true) {\n if (this._missing > this._buffer.buffered) break\n if (this._consumeLongHeader() === false) return false\n continue\n }\n\n const ignore = this._buffer.shiftFirst(this._missing)\n if (ignore !== null) this._missing -= ignore.byteLength\n continue\n }\n\n if (this._buffer.buffered < 512) break\n if (this._stream !== null || this._consumeHeader() === false) return\n }\n\n this._continueWrite(null)\n }\n\n _continueWrite (err) {\n const cb = this._callback\n this._callback = noop\n cb(err)\n }\n\n _write (data, cb) {\n this._callback = cb\n this._buffer.push(data)\n this._update()\n }\n\n _final (cb) {\n this._finished = this._missing === 0 && this._buffer.buffered === 0\n cb(this._finished ? null : new Error('Unexpected end of data'))\n }\n\n _predestroy () {\n this._continueWrite(null)\n }\n\n _destroy (cb) {\n if (this._stream) this._stream.destroy(getStreamError(this))\n cb(null)\n }\n\n [Symbol.asyncIterator] () {\n let error = null\n\n let promiseResolve = null\n let promiseReject = null\n\n let entryStream = null\n let entryCallback = null\n\n const extract = this\n\n this.on('entry', onentry)\n this.on('error', (err) => { error = err })\n this.on('close', onclose)\n\n return {\n [Symbol.asyncIterator] () {\n return this\n },\n next () {\n return new Promise(onnext)\n },\n return () {\n return destroy(null)\n },\n throw (err) {\n return destroy(err)\n }\n }\n\n function consumeCallback (err) {\n if (!entryCallback) return\n const cb = entryCallback\n entryCallback = null\n cb(err)\n }\n\n function onnext (resolve, reject) {\n if (error) {\n return reject(error)\n }\n\n if (entryStream) {\n resolve({ value: entryStream, done: false })\n entryStream = null\n return\n }\n\n promiseResolve = resolve\n promiseReject = reject\n\n consumeCallback(null)\n\n if (extract._finished && promiseResolve) {\n promiseResolve({ value: undefined, done: true })\n promiseResolve = promiseReject = null\n }\n }\n\n function onentry (header, stream, callback) {\n entryCallback = callback\n stream.on('error', noop) // no way around this due to tick sillyness\n\n if (promiseResolve) {\n promiseResolve({ value: stream, done: false })\n promiseResolve = promiseReject = null\n } else {\n entryStream = stream\n }\n }\n\n function onclose () {\n consumeCallback(error)\n if (!promiseResolve) return\n if (error) promiseReject(error)\n else promiseResolve({ value: undefined, done: true })\n promiseResolve = promiseReject = null\n }\n\n function destroy (err) {\n extract.destroy(err)\n consumeCallback(err)\n return new Promise((resolve, reject) => {\n if (extract.destroyed) return resolve({ value: undefined, done: true })\n extract.once('close', function () {\n if (err) reject(err)\n else resolve({ value: undefined, done: true })\n })\n })\n }\n }\n}\n\nmodule.exports = function extract (opts) {\n return new Extract(opts)\n}\n\nfunction noop () {}\n\nfunction overflow (size) {\n size &= 511\n return size && 512 - size\n}\n","const constants = { // just for envs without fs\n S_IFMT: 61440,\n S_IFDIR: 16384,\n S_IFCHR: 8192,\n S_IFBLK: 24576,\n S_IFIFO: 4096,\n S_IFLNK: 40960\n}\n\ntry {\n module.exports = require('fs').constants || constants\n} catch {\n module.exports = constants\n}\n","const { Readable, Writable, getStreamError } = require('streamx')\nconst b4a = require('b4a')\n\nconst constants = require('./constants')\nconst headers = require('./headers')\n\nconst DMODE = 0o755\nconst FMODE = 0o644\n\nconst END_OF_TAR = b4a.alloc(1024)\n\nclass Sink extends Writable {\n constructor (pack, header, callback) {\n super({ mapWritable, eagerOpen: true })\n\n this.written = 0\n this.header = header\n\n this._callback = callback\n this._linkname = null\n this._isLinkname = header.type === 'symlink' && !header.linkname\n this._isVoid = header.type !== 'file' && header.type !== 'contiguous-file'\n this._finished = false\n this._pack = pack\n this._openCallback = null\n\n if (this._pack._stream === null) this._pack._stream = this\n else this._pack._pending.push(this)\n }\n\n _open (cb) {\n this._openCallback = cb\n if (this._pack._stream === this) this._continueOpen()\n }\n\n _continuePack (err) {\n if (this._callback === null) return\n\n const callback = this._callback\n this._callback = null\n\n callback(err)\n }\n\n _continueOpen () {\n if (this._pack._stream === null) this._pack._stream = this\n\n const cb = this._openCallback\n this._openCallback = null\n if (cb === null) return\n\n if (this._pack.destroying) return cb(new Error('pack stream destroyed'))\n if (this._pack._finalized) return cb(new Error('pack stream is already finalized'))\n\n this._pack._stream = this\n\n if (!this._isLinkname) {\n this._pack._encode(this.header)\n }\n\n if (this._isVoid) {\n this._finish()\n this._continuePack(null)\n }\n\n cb(null)\n }\n\n _write (data, cb) {\n if (this._isLinkname) {\n this._linkname = this._linkname ? b4a.concat([this._linkname, data]) : data\n return cb(null)\n }\n\n if (this._isVoid) {\n if (data.byteLength > 0) {\n return cb(new Error('No body allowed for this entry'))\n }\n return cb()\n }\n\n this.written += data.byteLength\n if (this._pack.push(data)) return cb()\n this._pack._drain = cb\n }\n\n _finish () {\n if (this._finished) return\n this._finished = true\n\n if (this._isLinkname) {\n this.header.linkname = this._linkname ? b4a.toString(this._linkname, 'utf-8') : ''\n this._pack._encode(this.header)\n }\n\n overflow(this._pack, this.header.size)\n\n this._pack._done(this)\n }\n\n _final (cb) {\n if (this.written !== this.header.size) { // corrupting tar\n return cb(new Error('Size mismatch'))\n }\n\n this._finish()\n cb(null)\n }\n\n _getError () {\n return getStreamError(this) || new Error('tar entry destroyed')\n }\n\n _predestroy () {\n this._pack.destroy(this._getError())\n }\n\n _destroy (cb) {\n this._pack._done(this)\n\n this._continuePack(this._finished ? null : this._getError())\n\n cb()\n }\n}\n\nclass Pack extends Readable {\n constructor (opts) {\n super(opts)\n this._drain = noop\n this._finalized = false\n this._finalizing = false\n this._pending = []\n this._stream = null\n }\n\n entry (header, buffer, callback) {\n if (this._finalized || this.destroying) throw new Error('already finalized or destroyed')\n\n if (typeof buffer === 'function') {\n callback = buffer\n buffer = null\n }\n\n if (!callback) callback = noop\n\n if (!header.size || header.type === 'symlink') header.size = 0\n if (!header.type) header.type = modeToType(header.mode)\n if (!header.mode) header.mode = header.type === 'directory' ? DMODE : FMODE\n if (!header.uid) header.uid = 0\n if (!header.gid) header.gid = 0\n if (!header.mtime) header.mtime = new Date()\n\n if (typeof buffer === 'string') buffer = b4a.from(buffer)\n\n const sink = new Sink(this, header, callback)\n\n if (b4a.isBuffer(buffer)) {\n header.size = buffer.byteLength\n sink.write(buffer)\n sink.end()\n return sink\n }\n\n if (sink._isVoid) {\n return sink\n }\n\n return sink\n }\n\n finalize () {\n if (this._stream || this._pending.length > 0) {\n this._finalizing = true\n return\n }\n\n if (this._finalized) return\n this._finalized = true\n\n this.push(END_OF_TAR)\n this.push(null)\n }\n\n _done (stream) {\n if (stream !== this._stream) return\n\n this._stream = null\n\n if (this._finalizing) this.finalize()\n if (this._pending.length) this._pending.shift()._continueOpen()\n }\n\n _encode (header) {\n if (!header.pax) {\n const buf = headers.encode(header)\n if (buf) {\n this.push(buf)\n return\n }\n }\n this._encodePax(header)\n }\n\n _encodePax (header) {\n const paxHeader = headers.encodePax({\n name: header.name,\n linkname: header.linkname,\n pax: header.pax\n })\n\n const newHeader = {\n name: 'PaxHeader',\n mode: header.mode,\n uid: header.uid,\n gid: header.gid,\n size: paxHeader.byteLength,\n mtime: header.mtime,\n type: 'pax-header',\n linkname: header.linkname && 'PaxHeader',\n uname: header.uname,\n gname: header.gname,\n devmajor: header.devmajor,\n devminor: header.devminor\n }\n\n this.push(headers.encode(newHeader))\n this.push(paxHeader)\n overflow(this, paxHeader.byteLength)\n\n newHeader.size = header.size\n newHeader.type = header.type\n this.push(headers.encode(newHeader))\n }\n\n _doDrain () {\n const drain = this._drain\n this._drain = noop\n drain()\n }\n\n _predestroy () {\n const err = getStreamError(this)\n\n if (this._stream) this._stream.destroy(err)\n\n while (this._pending.length) {\n const stream = this._pending.shift()\n stream.destroy(err)\n stream._continueOpen()\n }\n\n this._doDrain()\n }\n\n _read (cb) {\n this._doDrain()\n cb()\n }\n}\n\nmodule.exports = function pack (opts) {\n return new Pack(opts)\n}\n\nfunction modeToType (mode) {\n switch (mode & constants.S_IFMT) {\n case constants.S_IFBLK: return 'block-device'\n case constants.S_IFCHR: return 'character-device'\n case constants.S_IFDIR: return 'directory'\n case constants.S_IFIFO: return 'fifo'\n case constants.S_IFLNK: return 'symlink'\n }\n\n return 'file'\n}\n\nfunction noop () {}\n\nfunction overflow (self, size) {\n size &= 511\n if (size) self.push(END_OF_TAR.subarray(0, 512 - size))\n}\n\nfunction mapWritable (buf) {\n return b4a.isBuffer(buf) ? buf : b4a.from(buf)\n}\n","exports.extract = require('./extract')\nexports.pack = require('./pack')\n","/**\n * TAR Format Plugin\n *\n * @module plugins/tar\n * @license [MIT]{@link https://github.com/archiverjs/node-archiver/blob/master/LICENSE}\n * @copyright (c) 2012-2014 Chris Talkington, contributors.\n */\nvar zlib = require('zlib');\n\nvar engine = require('tar-stream');\nvar util = require('archiver-utils');\n\n/**\n * @constructor\n * @param {TarOptions} options\n */\nvar Tar = function(options) {\n if (!(this instanceof Tar)) {\n return new Tar(options);\n }\n\n options = this.options = util.defaults(options, {\n gzip: false\n });\n\n if (typeof options.gzipOptions !== 'object') {\n options.gzipOptions = {};\n }\n\n this.supports = {\n directory: true,\n symlink: true\n };\n\n this.engine = engine.pack(options);\n this.compressor = false;\n\n if (options.gzip) {\n this.compressor = zlib.createGzip(options.gzipOptions);\n this.compressor.on('error', this._onCompressorError.bind(this));\n }\n};\n\n/**\n * [_onCompressorError description]\n *\n * @private\n * @param {Error} err\n * @return void\n */\nTar.prototype._onCompressorError = function(err) {\n this.engine.emit('error', err);\n};\n\n/**\n * [append description]\n *\n * @param {(Buffer|Stream)} source\n * @param {TarEntryData} data\n * @param {Function} callback\n * @return void\n */\nTar.prototype.append = function(source, data, callback) {\n var self = this;\n\n data.mtime = data.date;\n\n function append(err, sourceBuffer) {\n if (err) {\n callback(err);\n return;\n }\n\n self.engine.entry(data, sourceBuffer, function(err) {\n callback(err, data);\n });\n }\n\n if (data.sourceType === 'buffer') {\n append(null, source);\n } else if (data.sourceType === 'stream' && data.stats) {\n data.size = data.stats.size;\n\n var entry = self.engine.entry(data, function(err) {\n callback(err, data);\n });\n\n source.pipe(entry);\n } else if (data.sourceType === 'stream') {\n util.collectStream(source, append);\n }\n};\n\n/**\n * [finalize description]\n *\n * @return void\n */\nTar.prototype.finalize = function() {\n this.engine.finalize();\n};\n\n/**\n * [on description]\n *\n * @return this.engine\n */\nTar.prototype.on = function() {\n return this.engine.on.apply(this.engine, arguments);\n};\n\n/**\n * [pipe description]\n *\n * @param {String} destination\n * @param {Object} options\n * @return this.engine\n */\nTar.prototype.pipe = function(destination, options) {\n if (this.compressor) {\n return this.engine.pipe.apply(this.engine, [this.compressor]).pipe(destination, options);\n } else {\n return this.engine.pipe.apply(this.engine, arguments);\n }\n};\n\n/**\n * [unpipe description]\n *\n * @return this.engine\n */\nTar.prototype.unpipe = function() {\n if (this.compressor) {\n return this.compressor.unpipe.apply(this.compressor, arguments);\n } else {\n return this.engine.unpipe.apply(this.engine, arguments);\n }\n};\n\nmodule.exports = Tar;\n\n/**\n * @typedef {Object} TarOptions\n * @global\n * @property {Boolean} [gzip=false] Compress the tar archive using gzip.\n * @property {Object} [gzipOptions] Passed to [zlib]{@link https://nodejs.org/api/zlib.html#zlib_class_options}\n * to control compression.\n * @property {*} [*] See [tar-stream]{@link https://github.com/mafintosh/tar-stream} documentation for additional properties.\n */\n\n/**\n * @typedef {Object} TarEntryData\n * @global\n * @property {String} name Sets the entry name including internal path.\n * @property {(String|Date)} [date=NOW()] Sets the entry date.\n * @property {Number} [mode=D:0755/F:0644] Sets the entry permissions.\n * @property {String} [prefix] Sets a path prefix for the entry name. Useful\n * when working with methods like `directory` or `glob`.\n * @property {fs.Stats} [stats] Sets the fs stat data for this entry allowing\n * for reduction of fs stat calls when stat data is already known.\n */\n\n/**\n * TarStream Module\n * @external TarStream\n * @see {@link https://github.com/mafintosh/tar-stream}\n */\n","'use strict';\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nconst CRC_TABLE = new Int32Array([\n 0,\n 1996959894,\n 3993919788,\n 2567524794,\n 124634137,\n 1886057615,\n 3915621685,\n 2657392035,\n 249268274,\n 2044508324,\n 3772115230,\n 2547177864,\n 162941995,\n 2125561021,\n 3887607047,\n 2428444049,\n 498536548,\n 1789927666,\n 4089016648,\n 2227061214,\n 450548861,\n 1843258603,\n 4107580753,\n 2211677639,\n 325883990,\n 1684777152,\n 4251122042,\n 2321926636,\n 335633487,\n 1661365465,\n 4195302755,\n 2366115317,\n 997073096,\n 1281953886,\n 3579855332,\n 2724688242,\n 1006888145,\n 1258607687,\n 3524101629,\n 2768942443,\n 901097722,\n 1119000684,\n 3686517206,\n 2898065728,\n 853044451,\n 1172266101,\n 3705015759,\n 2882616665,\n 651767980,\n 1373503546,\n 3369554304,\n 3218104598,\n 565507253,\n 1454621731,\n 3485111705,\n 3099436303,\n 671266974,\n 1594198024,\n 3322730930,\n 2970347812,\n 795835527,\n 1483230225,\n 3244367275,\n 3060149565,\n 1994146192,\n 31158534,\n 2563907772,\n 4023717930,\n 1907459465,\n 112637215,\n 2680153253,\n 3904427059,\n 2013776290,\n 251722036,\n 2517215374,\n 3775830040,\n 2137656763,\n 141376813,\n 2439277719,\n 3865271297,\n 1802195444,\n 476864866,\n 2238001368,\n 4066508878,\n 1812370925,\n 453092731,\n 2181625025,\n 4111451223,\n 1706088902,\n 314042704,\n 2344532202,\n 4240017532,\n 1658658271,\n 366619977,\n 2362670323,\n 4224994405,\n 1303535960,\n 984961486,\n 2747007092,\n 3569037538,\n 1256170817,\n 1037604311,\n 2765210733,\n 3554079995,\n 1131014506,\n 879679996,\n 2909243462,\n 3663771856,\n 1141124467,\n 855842277,\n 2852801631,\n 3708648649,\n 1342533948,\n 654459306,\n 3188396048,\n 3373015174,\n 1466479909,\n 544179635,\n 3110523913,\n 3462522015,\n 1591671054,\n 702138776,\n 2966460450,\n 3352799412,\n 1504918807,\n 783551873,\n 3082640443,\n 3233442989,\n 3988292384,\n 2596254646,\n 62317068,\n 1957810842,\n 3939845945,\n 2647816111,\n 81470997,\n 1943803523,\n 3814918930,\n 2489596804,\n 225274430,\n 2053790376,\n 3826175755,\n 2466906013,\n 167816743,\n 2097651377,\n 4027552580,\n 2265490386,\n 503444072,\n 1762050814,\n 4150417245,\n 2154129355,\n 426522225,\n 1852507879,\n 4275313526,\n 2312317920,\n 282753626,\n 1742555852,\n 4189708143,\n 2394877945,\n 397917763,\n 1622183637,\n 3604390888,\n 2714866558,\n 953729732,\n 1340076626,\n 3518719985,\n 2797360999,\n 1068828381,\n 1219638859,\n 3624741850,\n 2936675148,\n 906185462,\n 1090812512,\n 3747672003,\n 2825379669,\n 829329135,\n 1181335161,\n 3412177804,\n 3160834842,\n 628085408,\n 1382605366,\n 3423369109,\n 3138078467,\n 570562233,\n 1426400815,\n 3317316542,\n 2998733608,\n 733239954,\n 1555261956,\n 3268935591,\n 3050360625,\n 752459403,\n 1541320221,\n 2607071920,\n 3965973030,\n 1969922972,\n 40735498,\n 2617837225,\n 3943577151,\n 1913087877,\n 83908371,\n 2512341634,\n 3803740692,\n 2075208622,\n 213261112,\n 2463272603,\n 3855990285,\n 2094854071,\n 198958881,\n 2262029012,\n 4057260610,\n 1759359992,\n 534414190,\n 2176718541,\n 4139329115,\n 1873836001,\n 414664567,\n 2282248934,\n 4279200368,\n 1711684554,\n 285281116,\n 2405801727,\n 4167216745,\n 1634467795,\n 376229701,\n 2685067896,\n 3608007406,\n 1308918612,\n 956543938,\n 2808555105,\n 3495958263,\n 1231636301,\n 1047427035,\n 2932959818,\n 3654703836,\n 1088359270,\n 936918e3,\n 2847714899,\n 3736837829,\n 1202900863,\n 817233897,\n 3183342108,\n 3401237130,\n 1404277552,\n 615818150,\n 3134207493,\n 3453421203,\n 1423857449,\n 601450431,\n 3009837614,\n 3294710456,\n 1567103746,\n 711928724,\n 3020668471,\n 3272380065,\n 1510334235,\n 755167117\n]);\nfunction ensureBuffer(input) {\n if (Buffer.isBuffer(input)) {\n return input;\n }\n if (typeof input === \"number\") {\n return Buffer.alloc(input);\n } else if (typeof input === \"string\") {\n return Buffer.from(input);\n } else {\n throw new Error(\"input must be buffer, number, or string, received \" + typeof input);\n }\n}\nfunction bufferizeInt(num) {\n const tmp = ensureBuffer(4);\n tmp.writeInt32BE(num, 0);\n return tmp;\n}\nfunction _crc32(buf, previous) {\n buf = ensureBuffer(buf);\n if (Buffer.isBuffer(previous)) {\n previous = previous.readUInt32BE(0);\n }\n let crc = ~~previous ^ -1;\n for (var n = 0; n < buf.length; n++) {\n crc = CRC_TABLE[(crc ^ buf[n]) & 255] ^ crc >>> 8;\n }\n return crc ^ -1;\n}\nfunction crc32() {\n return bufferizeInt(_crc32.apply(null, arguments));\n}\ncrc32.signed = function() {\n return _crc32.apply(null, arguments);\n};\ncrc32.unsigned = function() {\n return _crc32.apply(null, arguments) >>> 0;\n};\nvar bufferCrc32 = crc32;\n\nconst index = /*@__PURE__*/getDefaultExportFromCjs(bufferCrc32);\n\nmodule.exports = index;\n","/**\n * JSON Format Plugin\n *\n * @module plugins/json\n * @license [MIT]{@link https://github.com/archiverjs/node-archiver/blob/master/LICENSE}\n * @copyright (c) 2012-2014 Chris Talkington, contributors.\n */\nvar inherits = require('util').inherits;\nvar Transform = require('readable-stream').Transform;\n\nvar crc32 = require('buffer-crc32');\nvar util = require('archiver-utils');\n\n/**\n * @constructor\n * @param {(JsonOptions|TransformOptions)} options\n */\nvar Json = function(options) {\n if (!(this instanceof Json)) {\n return new Json(options);\n }\n\n options = this.options = util.defaults(options, {});\n\n Transform.call(this, options);\n\n this.supports = {\n directory: true,\n symlink: true\n };\n\n this.files = [];\n};\n\ninherits(Json, Transform);\n\n/**\n * [_transform description]\n *\n * @private\n * @param {Buffer} chunk\n * @param {String} encoding\n * @param {Function} callback\n * @return void\n */\nJson.prototype._transform = function(chunk, encoding, callback) {\n callback(null, chunk);\n};\n\n/**\n * [_writeStringified description]\n *\n * @private\n * @return void\n */\nJson.prototype._writeStringified = function() {\n var fileString = JSON.stringify(this.files);\n this.write(fileString);\n};\n\n/**\n * [append description]\n *\n * @param {(Buffer|Stream)} source\n * @param {EntryData} data\n * @param {Function} callback\n * @return void\n */\nJson.prototype.append = function(source, data, callback) {\n var self = this;\n\n data.crc32 = 0;\n\n function onend(err, sourceBuffer) {\n if (err) {\n callback(err);\n return;\n }\n\n data.size = sourceBuffer.length || 0;\n data.crc32 = crc32.unsigned(sourceBuffer);\n\n self.files.push(data);\n\n callback(null, data);\n }\n\n if (data.sourceType === 'buffer') {\n onend(null, source);\n } else if (data.sourceType === 'stream') {\n util.collectStream(source, onend);\n }\n};\n\n/**\n * [finalize description]\n *\n * @return void\n */\nJson.prototype.finalize = function() {\n this._writeStringified();\n this.end();\n};\n\nmodule.exports = Json;\n\n/**\n * @typedef {Object} JsonOptions\n * @global\n */\n","/**\n * Archiver Vending\n *\n * @ignore\n * @license [MIT]{@link https://github.com/archiverjs/node-archiver/blob/master/LICENSE}\n * @copyright (c) 2012-2014 Chris Talkington, contributors.\n */\nvar Archiver = require('./lib/core');\n\nvar formats = {};\n\n/**\n * Dispenses a new Archiver instance.\n *\n * @constructor\n * @param {String} format The archive format to use.\n * @param {Object} options See [Archiver]{@link Archiver}\n * @return {Archiver}\n */\nvar vending = function(format, options) {\n return vending.create(format, options);\n};\n\n/**\n * Creates a new Archiver instance.\n *\n * @param {String} format The archive format to use.\n * @param {Object} options See [Archiver]{@link Archiver}\n * @return {Archiver}\n */\nvending.create = function(format, options) {\n if (formats[format]) {\n var instance = new Archiver(format, options);\n instance.setFormat(format);\n instance.setModule(new formats[format](options));\n\n return instance;\n } else {\n throw new Error('create(' + format + '): format not registered');\n }\n};\n\n/**\n * Registers a format for use with archiver.\n *\n * @param {String} format The name of the format.\n * @param {Function} module The function for archiver to interact with.\n * @return void\n */\nvending.registerFormat = function(format, module) {\n if (formats[format]) {\n throw new Error('register(' + format + '): format already registered');\n }\n\n if (typeof module !== 'function') {\n throw new Error('register(' + format + '): format module invalid');\n }\n\n if (typeof module.prototype.append !== 'function' || typeof module.prototype.finalize !== 'function') {\n throw new Error('register(' + format + '): format module missing methods');\n }\n\n formats[format] = module;\n};\n\n/**\n * Check if the format is already registered.\n * \n * @param {String} format the name of the format.\n * @return boolean\n */\nvending.isRegisteredFormat = function (format) {\n if (formats[format]) {\n return true;\n }\n \n return false;\n};\n\nvending.registerFormat('zip', require('./lib/plugins/zip'));\nvending.registerFormat('tar', require('./lib/plugins/tar'));\nvending.registerFormat('json', require('./lib/plugins/json'));\n\nmodule.exports = vending;","import { createWriteStream } from \"node:fs\";\nimport archiver from \"archiver\";\nimport { createAction, createActionRunner, createPathParam } from \"@pipelab/plugin-core\";\n\nexport const ID = \"zip-node\";\n\nexport type MaybeArray<T> = T | T[];\n\nexport const getValue = <T>(array: MaybeArray<T>): T => {\n if (Array.isArray(array)) {\n return array[0];\n } else {\n return array;\n }\n};\n\nexport const zip = createAction({\n id: ID,\n name: \"Zip\",\n updateAvailable: true,\n displayString:\n '`Zip ${fmt.param(params.folder, \"primary\", \"No folder specified\")} to ${fmt.param(params.output, \"secondary\", \"No output specified\")}`',\n params: {\n folder: createPathParam(\"\", {\n required: true,\n control: {\n type: \"path\",\n options: {\n properties: [\"openDirectory\"],\n },\n },\n label: \"Folder\",\n }),\n output: createPathParam(\"\", {\n required: true,\n control: {\n type: \"path\",\n options: {\n properties: [\"openFile\", \"promptToCreate\"],\n // must be zip file\n filters: [\n {\n extensions: [\"zip\"],\n name: \"Zip file\",\n },\n ],\n },\n },\n label: \"Folder\",\n }),\n },\n\n outputs: {\n path: {\n value: \"\",\n label: \"Path\",\n },\n },\n description: \"Zip a folder into a .zip file\",\n icon: \"\",\n meta: {},\n});\n\nexport const zipRunner = createActionRunner<typeof zip>(\n async ({ log, inputs, setOutput, abortSignal }) => {\n abortSignal.addEventListener(\"abort\", () => {\n throw new Error(\"Aborted\");\n });\n\n const output = createWriteStream(inputs.output);\n\n const archive = archiver(\"zip\", {\n zlib: { level: 9 }, // Sets the compression level.\n });\n\n return new Promise((resolve, reject) => {\n output.on(\"close\", function () {\n console.log(archive.pointer() + \" total bytes\");\n console.log(\"archiver has been finalized and the output file descriptor has closed.\");\n\n setOutput(\"path\", inputs.output);\n resolve();\n });\n\n output.on(\"end\", function () {\n console.log(\"Data has been drained\");\n });\n\n archive.on(\"warning\", function (err) {\n if (err.code === \"ENOENT\") {\n console.log(\"Archiver warning: ENOENT\");\n } else {\n reject(err);\n }\n });\n\n archive.on(\"error\", function (err) {\n reject(err);\n });\n\n // archive.on('data', function (data) {\n // log('data', data)\n // })\n // archive.on('progress', function (data) {\n // /* {\n // entries:\n // {\n // total: 5012,\n // processed: 5012\n // },\n // fs:\n // {\n // totalBytes: 318794388,\n // processedBytes: 318794388\n // }\n // } */\n // // log('progress', data.entries.processed + '/' + data.entries.total)\n // })\n archive.on(\"entry\", function (data) {\n log(\"Adding\", data.name);\n });\n archive.on(\"finish\", function () {\n log(\"finish\");\n });\n\n archive.pipe(output);\n\n archive.directory(inputs.folder, false);\n\n archive.finalize();\n });\n },\n);\n","import { createWriteStream } from \"node:fs\";\nimport { join } from \"node:path\";\nimport archiver from \"archiver\";\nimport { createAction, createActionRunner, createPathParam } from \"@pipelab/plugin-core\";\n\nexport const ID = \"zip-v2-node\";\n\nexport type MaybeArray<T> = T | T[];\n\nexport const getValue = <T>(array: MaybeArray<T>): T => {\n if (Array.isArray(array)) {\n return array[0];\n } else {\n return array;\n }\n};\n\nexport const zipV2 = createAction({\n id: ID,\n name: \"Zip\",\n displayString: '`Zip ${fmt.param(params.folder, \"primary\", \"No folder specified\")}`',\n params: {\n folder: createPathParam(\"\", {\n required: true,\n control: {\n type: \"path\",\n options: {\n properties: [\"openDirectory\"],\n },\n },\n label: \"Folder\",\n }),\n },\n\n outputs: {\n path: {\n value: \"\",\n label: \"Path\",\n },\n },\n description: \"Zip a folder into a .zip file\",\n icon: \"\",\n meta: {},\n});\n\nexport const zipV2Runner = createActionRunner<typeof zipV2>(\n async ({ log, inputs, setOutput, abortSignal, paths }) => {\n abortSignal.addEventListener(\"abort\", () => {\n throw new Error(\"Aborted\");\n });\n\n const outputDir = paths.cache;\n const outputFile = join(outputDir, \"output.zip\");\n\n console.log(\"outputFile\", outputFile);\n\n const output = createWriteStream(outputFile);\n\n const archive = archiver(\"zip\", {\n zlib: { level: 9 }, // Sets the compression level.\n });\n\n return new Promise((resolve, reject) => {\n output.on(\"close\", function () {\n console.log(archive.pointer() + \" total bytes\");\n console.log(\"archiver has been finalized and the output file descriptor has closed.\");\n\n setOutput(\"path\", outputFile);\n resolve();\n });\n\n output.on(\"end\", function () {\n console.log(\"Data has been drained\");\n });\n\n archive.on(\"warning\", function (err) {\n if (err.code === \"ENOENT\") {\n console.log(\"Archiver warning: ENOENT\");\n } else {\n reject(err);\n }\n });\n\n archive.on(\"error\", function (err) {\n reject(err);\n });\n\n // archive.on('data', function (data) {\n // log('data', data)\n // })\n // archive.on('progress', function (data) {\n // /* {\n // entries:\n // {\n // total: 5012,\n // processed: 5012\n // },\n // fs:\n // {\n // totalBytes: 318794388,\n // processedBytes: 318794388\n // }\n // } */\n // // log('progress', data.entries.processed + '/' + data.entries.total)\n // })\n archive.on(\"entry\", function (data) {\n log(\"Adding\", data.name);\n });\n archive.on(\"finish\", function () {\n log(\"finish\");\n });\n\n archive.pipe(output);\n\n archive.directory(inputs.folder, false);\n\n archive.finalize();\n });\n },\n);\n","import StreamZip from \"node-stream-zip\";\nimport { join } from \"node:path\";\nimport { createAction, createActionRunner, createPathParam } from \"@pipelab/plugin-core\";\n\nexport const ID = \"unzip-file-node\";\n\nexport const unzip = createAction({\n id: ID,\n name: \"Unzip file\",\n displayString: '`Unzip ${fmt.param(params.file, \"primary\", \"No file specified\")}`',\n params: {\n file: createPathParam(\"\", {\n required: true,\n control: {\n type: \"path\",\n options: {\n properties: [\"openFile\"],\n },\n },\n label: \"File\",\n }),\n },\n\n outputs: {\n output: {\n value: \"\",\n label: \"Output\",\n },\n },\n description: \"Unzip a file to a specified folder\",\n icon: \"\",\n meta: {},\n});\n\nexport const unzipRunner = createActionRunner<typeof unzip>(\n async ({ log, inputs, setOutput, cwd }) => {\n console.log(\"inputs\", inputs);\n\n console.log(\"inputs.file\", inputs.file);\n const file = inputs.file;\n console.log(\"file\", file);\n const output = join(cwd);\n\n console.log(\"file\", file);\n console.log(\"output\", output);\n\n log(\"Unzip file\", inputs.file, \"to\", output);\n\n const zip = new StreamZip.async({ file });\n\n const bytes = await zip.extract(null, output);\n await zip.close();\n\n console.log(\"bytes\", bytes);\n\n setOutput(\"output\", output);\n },\n);\n","import { cp, mkdir, rm, stat } from \"node:fs/promises\";\nimport { basename, join, dirname } from \"node:path\";\nimport { createAction, createActionRunner, createPathParam } from \"@pipelab/plugin-core\";\n\nexport const ID = \"fs:copy\";\n\nexport const copy = createAction({\n id: ID,\n name: \"Copy file/folder\",\n displayString:\n '`Copy ${fmt.param(params.from, \"primary\", \"Source\")} to ${fmt.param(params.to, \"primary\", \"Destination\")}`',\n params: {\n from: createPathParam(\"\", {\n label: \"From\",\n required: true,\n control: {\n type: \"path\",\n options: {\n properties: [\"openFile\", \"openDirectory\"],\n },\n },\n }),\n to: createPathParam(\"\", {\n label: \"To\",\n required: true,\n control: {\n type: \"path\",\n options: {\n properties: [\"openFile\", \"openDirectory\", \"createDirectory\", \"promptToCreate\"],\n },\n },\n }),\n recursive: {\n label: \"Recursive\",\n required: true,\n value: true,\n control: {\n type: \"boolean\",\n },\n },\n overwrite: {\n label: \"Overwrite\",\n required: true,\n value: true,\n control: {\n type: \"boolean\",\n },\n },\n cleanup: {\n label: \"Cleanup\",\n required: true,\n description: \"Whether to delete the original file/folder\",\n value: true,\n control: {\n type: \"boolean\",\n },\n },\n },\n\n outputs: {\n output: {\n label: \"Output\",\n value: \"\",\n description: \"The copied file/folder\",\n },\n input: {\n label: \"Input\",\n value: \"\",\n description: \"The original file/folder\",\n },\n parentDirectory: {\n label: \"Parent directory\",\n value: \"\",\n description: \"The parent directory of the copied file/folder\",\n },\n },\n description: \"Copy a file or a folder from one location to another\",\n icon: \"\",\n meta: {},\n});\n\nexport const copyRunner = createActionRunner<typeof copy>(async ({ log, inputs, setOutput }) => {\n log(\"\");\n\n const from = inputs.from;\n let to = inputs.to;\n\n let fromIsAFile = false;\n try {\n const stats = await stat(from);\n if (stats.isFile()) {\n fromIsAFile = true;\n }\n } catch (e) {\n log(\"Error getting file stats\", e);\n throw e;\n }\n const fromFileName = fromIsAFile ? basename(from) : \"\";\n\n if (!from) {\n log(\"From\", from);\n throw new Error(\"Missing source\");\n }\n\n if (!to) {\n log(\"To\", to);\n throw new Error(\"Missing destination\");\n }\n\n // if from is a file, we only add the file name to the destination if 'to' is an existing directory\n if (fromIsAFile) {\n try {\n const toStats = await stat(to);\n if (toStats.isDirectory()) {\n to = join(to, fromFileName);\n }\n } catch (e) {\n // If 'to' doesn't exist, we assume the user provided the full destination path (including filename)\n }\n }\n\n log(\"Copying\", from, \"to\", to, \"recursive\", inputs.recursive, \"overwrite\", inputs.overwrite);\n\n if (inputs.cleanup) {\n try {\n log(\"Cleaning up\", to);\n process.noAsar = true;\n await rm(to, { recursive: true, force: true, maxRetries: 3 });\n if (!fromIsAFile) {\n await mkdir(to, { recursive: true });\n }\n process.noAsar = false;\n } catch (e) {\n log(\"Error cleaning up file\", e);\n throw e;\n }\n }\n\n try {\n process.noAsar = true;\n await cp(from, to, {\n recursive: inputs.recursive && !fromIsAFile,\n force: inputs.overwrite,\n });\n process.noAsar = false;\n setOutput(\"output\", to);\n setOutput(\"input\", from);\n setOutput(\"parentDirectory\", dirname(to));\n log(\"Copied\", from, \"to\", to);\n } catch (e) {\n log(\"Error copying file\", e);\n throw e;\n }\n});\n","import { rm } from \"node:fs/promises\";\nimport { createAction, createActionRunner, createPathParam } from \"@pipelab/plugin-core\";\n\nexport const ID = \"fs:remove\";\n\nexport const remove = createAction({\n id: ID,\n name: \"Remove file/folder\",\n displayString: '`Remove ${fmt.param(params.from, \"primary\")}`',\n params: {\n from: createPathParam(\"\", {\n label: \"Path\",\n required: true,\n control: {\n type: \"path\",\n options: {\n properties: [\"openFile\"],\n },\n },\n }),\n recursive: {\n label: \"Recursive\",\n required: true,\n value: true,\n control: {\n type: \"boolean\",\n },\n },\n },\n\n outputs: {},\n description: \"Remove a file or a folder\",\n icon: \"\",\n meta: {},\n});\n\nexport const removeRunner = createActionRunner<typeof remove>(async ({ log, inputs }) => {\n log(\"\");\n\n const from = inputs.from;\n\n log(\"Removing\", from, inputs.recursive);\n\n if (!from) {\n log(\"From\", from);\n throw new Error(\"Missing source\");\n }\n\n try {\n process.noAsar = true;\n await rm(from, { recursive: true, force: true, maxRetries: 3 });\n process.noAsar = false;\n log(\"Removed\", from);\n } catch (e) {\n log(\"Error removeing file\", e);\n throw e;\n }\n});\n","import {\n createAction,\n createActionRunner,\n createPathParam,\n createStringParam,\n runWithLiveLogs,\n} from \"@pipelab/plugin-core\";\n\nexport const ID = \"fs:run\";\n\nexport const run = createAction({\n id: ID,\n name: \"Invoke file\",\n displayString:\n \"`Invoke ${fmt.param(params.command, 'primary')} ${(params.parameters ?? []).map(x => fmt.param(x)).join(' ')}`\",\n // displayString: displayString,\n params: {\n command: createStringParam(\"\", {\n required: true,\n description: \"The command to run\",\n label: \"Command\",\n }),\n parameters: {\n required: true,\n description: \"The command's parameters\",\n label: \"Arguments\",\n value: [],\n control: {\n type: \"array\",\n options: {\n kind: \"text\",\n },\n },\n },\n workingDirectory: createPathParam(\"\", {\n required: false,\n description: \"The directory to run the command in. Default to current task directory\",\n label: \"Working directory\",\n control: {\n type: \"path\",\n options: {\n properties: [\"createDirectory\", \"openDirectory\"],\n },\n },\n }),\n stopOnError: {\n required: false,\n description: \"Stop the task if the command fails\",\n label: \"Stop on error\",\n value: false,\n control: {\n type: \"boolean\",\n },\n },\n },\n\n outputs: {\n stdout: {\n label: \"Standard output\",\n description: \"Standard output of the command\",\n value: \"\",\n },\n stderr: {\n label: \"Error output\",\n value: \"\",\n },\n exitCode: {\n label: \"Exit code\",\n value: 0,\n },\n duration: {\n label: \"Duration\",\n value: 0,\n },\n },\n description: \"Invoke an arbitrary executable\",\n icon: \"\",\n meta: {},\n});\n\nexport const runRunner = createActionRunner<typeof run>(\n async ({ log, inputs, setOutput, abortSignal }) => {\n const str = `${inputs.command} ${inputs.parameters.join(\" \")}`;\n\n log(`Running ${str}`);\n\n let stdout: string = \"\";\n let stderr: string = \"\";\n let exitCode: number = 0;\n const durationMs: number = 0;\n\n const wd = inputs.workingDirectory ?? process.cwd();\n log(`Working directory: ${wd}`);\n\n try {\n await runWithLiveLogs(\n inputs.command,\n inputs.parameters,\n {\n cwd: wd,\n cancelSignal: abortSignal,\n },\n log,\n {\n onStdout: (data) => {\n stdout += data.toString();\n log(data.toString());\n },\n onStderr: (data) => {\n stderr += data.toString();\n log(data.toString());\n },\n onExit(code) {\n exitCode = code;\n },\n },\n );\n\n setOutput(\"exitCode\", exitCode === undefined ? -1 : exitCode);\n setOutput(\"stdout\", stdout);\n setOutput(\"stderr\", stderr);\n setOutput(\"duration\", durationMs);\n if ((exitCode > 0 || exitCode === undefined) && inputs.stopOnError === true) {\n throw new Error(`Command failed with exit code ${exitCode}`);\n }\n } catch (error) {\n console.log(\"error\", error);\n if (inputs.stopOnError === true) {\n throw error;\n } else if (error /* instanceof ExecaError */) {\n setOutput(\"exitCode\", error.exitCode === undefined ? -1 : error.exitCode);\n setOutput(\"stdout\", error.stdout ?? \"\");\n setOutput(\"stderr\", error.stderr ?? \"\");\n setOutput(\"duration\", error.durationMs ?? 0);\n }\n }\n },\n);\n","import { exec } from \"node:child_process\";\nimport { platform } from \"node:os\";\nimport { createRequire } from \"node:module\";\nimport { createAction, createActionRunner, createPathParam } from \"@pipelab/plugin-core\";\n\nconst require = createRequire(import.meta.url);\n// import displayString from './displayStringRun.lua?raw'\n\nexport const ID = \"fs:open-in-explorer\";\n\nexport const openInExplorer = createAction({\n id: ID,\n name: \"Open path in explorer\",\n displayString: \"`Open ${fmt.param(params.path, 'primary', 'No path set')} in explorer`\",\n params: {\n path: createPathParam(\"\", {\n required: true,\n label: \"Path\",\n control: {\n type: \"path\",\n options: {\n properties: [\"openDirectory\", \"openFile\"],\n },\n },\n }),\n },\n\n outputs: {\n message: {\n label: \"Message\",\n value: \"\",\n },\n },\n description: \"Open a file or folder in your explorer\",\n icon: \"\",\n meta: {},\n});\n\nexport const openInExplorerRunner = createActionRunner<typeof openInExplorer>(\n async ({ log, inputs, setOutput }) => {\n log(`Opening ${inputs.path}`);\n\n return new Promise((resolve, reject) => {\n let command = \"\";\n const p = platform();\n\n if (p === \"win32\") {\n command = `start \"\" \"${inputs.path}\"`;\n } else if (p === \"darwin\") {\n command = `open \"${inputs.path}\"`;\n } else {\n command = `xdg-open \"${inputs.path}\"`;\n }\n\n exec(command, (error) => {\n if (error) {\n log(`Error opening path: ${error.message}`);\n setOutput(\"message\", error.message);\n resolve();\n } else {\n setOutput(\"message\", \"success\");\n resolve();\n }\n });\n });\n },\n);\n","import { createNodeDefinition } from \"@pipelab/plugin-core\";\nimport { ListFilesAction, ListFilesActionRun } from \"./list-files\";\nimport { isFileCondition, isFileRunner } from \"./is-file\";\nimport { zipRunner, zip } from \"./zip\";\nimport { zipV2Runner, zipV2 } from \"./zip-v2\";\nimport { unzipRunner, unzip } from \"./unzip\";\nimport { copy, copyRunner } from \"./copy\";\nimport { remove, removeRunner } from \"./remove\";\nimport { run, runRunner } from \"./run\";\nimport { openInExplorer, openInExplorerRunner } from \"./open\";\n\nexport default createNodeDefinition({\n description: \"Filesystem\",\n id: \"filesystem\",\n name: \"Filesystem\",\n icon: {\n type: \"icon\",\n icon: \"mdi-folder-zip-outline\",\n },\n nodes: [\n // {\n // node: ListFilesAction,\n // runner: ListFilesActionRun\n // },\n // {\n // node: isFileCondition,\n // runner: isFileRunner\n // },\n {\n node: zip,\n runner: zipRunner,\n },\n {\n node: zipV2,\n runner: zipV2Runner,\n },\n {\n node: unzip,\n runner: unzipRunner,\n },\n {\n node: copy,\n runner: copyRunner,\n },\n {\n node: remove,\n runner: removeRunner,\n },\n {\n node: run,\n runner: runRunner,\n },\n {\n node: openInExplorer,\n runner: openInExplorerRunner,\n },\n ],\n});\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209],"mappings":"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CA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;CACF,SAAS,aAAa,OAAO;AAC3B,MAAI,OAAO,SAAS,MAAM,CACxB,QAAO;AAET,MAAI,OAAO,UAAU,SACnB,QAAO,OAAO,MAAM,MAAM;WACjB,OAAO,UAAU,SAC1B,QAAO,OAAO,KAAK,MAAM;MAEzB,OAAM,IAAI,MAAM,uDAAuD,OAAO,MAAM;;CAGxF,SAAS,aAAa,KAAK;EACzB,MAAM,MAAM,aAAa,EAAE;AAC3B,MAAI,aAAa,KAAK,EAAE;AACxB,SAAO;;CAET,SAA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"}
|