@kubb/core 0.37.11 → 0.37.12

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../node_modules/.pnpm/path-browserify@1.0.1/node_modules/path-browserify/index.js","../../../node_modules/.pnpm/memfs@3.4.13/node_modules/memfs/lib/constants.js","../../../node_modules/.pnpm/memfs@3.4.13/node_modules/memfs/lib/getBigInt.js","../../../node_modules/.pnpm/memfs@3.4.13/node_modules/memfs/lib/Stats.js","../../../node_modules/.pnpm/memfs@3.4.13/node_modules/memfs/lib/internal/buffer.js","../../../node_modules/.pnpm/memfs@3.4.13/node_modules/memfs/lib/internal/errors.js","../../../node_modules/.pnpm/memfs@3.4.13/node_modules/memfs/lib/encoding.js","../../../node_modules/.pnpm/memfs@3.4.13/node_modules/memfs/lib/Dirent.js","../../../node_modules/.pnpm/memfs@3.4.13/node_modules/memfs/lib/setImmediate.js","../../../node_modules/.pnpm/memfs@3.4.13/node_modules/memfs/lib/process.js","../../../node_modules/.pnpm/eventemitter3@5.0.0/node_modules/eventemitter3/index.js","../../../node_modules/.pnpm/memfs@3.4.13/node_modules/memfs/lib/node.js","../../../node_modules/.pnpm/memfs@3.4.13/node_modules/memfs/lib/setTimeoutUnref.js","../../../node_modules/.pnpm/memfs@3.4.13/node_modules/memfs/lib/promises.js","../../../node_modules/.pnpm/fs-monkey@1.0.3/node_modules/fs-monkey/lib/correctPath.js","../../../node_modules/.pnpm/memfs@3.4.13/node_modules/memfs/lib/volume.js","../../../node_modules/.pnpm/fs-monkey@1.0.3/node_modules/fs-monkey/lib/util/lists.js","../../../node_modules/.pnpm/memfs@3.4.13/node_modules/memfs/lib/index.js","../../../node_modules/.pnpm/fs.realpath@1.0.0/node_modules/fs.realpath/old.js","../../../node_modules/.pnpm/fs.realpath@1.0.0/node_modules/fs.realpath/index.js","../../../node_modules/.pnpm/concat-map@0.0.1/node_modules/concat-map/index.js","../../../node_modules/.pnpm/balanced-match@1.0.2/node_modules/balanced-match/index.js","../../../node_modules/.pnpm/brace-expansion@1.1.11/node_modules/brace-expansion/index.js","../../../node_modules/.pnpm/minimatch@3.1.2/node_modules/minimatch/minimatch.js","../../../node_modules/.pnpm/inherits@2.0.4/node_modules/inherits/inherits_browser.js","../../../node_modules/.pnpm/inherits@2.0.4/node_modules/inherits/inherits.js","../../../node_modules/.pnpm/path-is-absolute@1.0.1/node_modules/path-is-absolute/index.js","../../../node_modules/.pnpm/glob@7.2.3/node_modules/glob/common.js","../../../node_modules/.pnpm/glob@7.2.3/node_modules/glob/sync.js","../../../node_modules/.pnpm/wrappy@1.0.2/node_modules/wrappy/wrappy.js","../../../node_modules/.pnpm/once@1.4.0/node_modules/once/once.js","../../../node_modules/.pnpm/inflight@1.0.6/node_modules/inflight/inflight.js","../../../node_modules/.pnpm/glob@7.2.3/node_modules/glob/glob.js","../../../node_modules/.pnpm/rimraf@3.0.2/node_modules/rimraf/rimraf.js","../../../node_modules/.pnpm/uuid@9.0.0/node_modules/uuid/dist/rng.js","../../../node_modules/.pnpm/uuid@9.0.0/node_modules/uuid/dist/regex.js","../../../node_modules/.pnpm/uuid@9.0.0/node_modules/uuid/dist/validate.js","../../../node_modules/.pnpm/uuid@9.0.0/node_modules/uuid/dist/stringify.js","../../../node_modules/.pnpm/uuid@9.0.0/node_modules/uuid/dist/v1.js","../../../node_modules/.pnpm/uuid@9.0.0/node_modules/uuid/dist/parse.js","../../../node_modules/.pnpm/uuid@9.0.0/node_modules/uuid/dist/v35.js","../../../node_modules/.pnpm/uuid@9.0.0/node_modules/uuid/dist/md5.js","../../../node_modules/.pnpm/uuid@9.0.0/node_modules/uuid/dist/v3.js","../../../node_modules/.pnpm/uuid@9.0.0/node_modules/uuid/dist/native.js","../../../node_modules/.pnpm/uuid@9.0.0/node_modules/uuid/dist/v4.js","../../../node_modules/.pnpm/uuid@9.0.0/node_modules/uuid/dist/sha1.js","../../../node_modules/.pnpm/uuid@9.0.0/node_modules/uuid/dist/v5.js","../../../node_modules/.pnpm/uuid@9.0.0/node_modules/uuid/dist/nil.js","../../../node_modules/.pnpm/uuid@9.0.0/node_modules/uuid/dist/version.js","../../../node_modules/.pnpm/uuid@9.0.0/node_modules/uuid/dist/index.js","../../../node_modules/.pnpm/directory-tree@3.5.1/node_modules/directory-tree/lib/directory-tree.js","../src/plugin.ts","../src/utils/isPromise.ts","../src/utils/write.ts","../src/utils/cache.ts","../src/utils/read.ts","../../../node_modules/.pnpm/eventemitter3@5.0.0/node_modules/eventemitter3/index.mjs","../../../node_modules/.pnpm/uuid@9.0.0/node_modules/uuid/wrapper.mjs","../src/managers/fileManager/events.ts","../src/managers/fileManager/FileManager.ts","../src/managers/fileManager/TreeNode.ts","../src/managers/pluginManager/PluginManager.ts","../src/managers/pluginManager/validate.ts","../src/build.ts","../src/config.ts","../src/generators/Generator.ts","../src/generators/SchemaGenerator.ts","../src/index.ts"],"names":["parse","Stats","d","b","AssertionError","name","Dirent","EventEmitter","Node","Link","File","FileHandle","FLAGS","Volume","StatWatcher","FSWatcher","_a","fs","err","base","version","minimatch","Minimatch","filter","makeRe","braceExpand","set","m","path","read","cb","keys","er","stat","rimraf","p","validate","uuid","stringify","v1","v3","v4","v5","import_path","pathParser","import_fs","options","file","dirTree","argument0"],"mappings":"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","sourcesContent":["// 'path' module extracted from Node.js v8.11.1 (only the posix part)\n// transplited with Babel\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\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError('Path must be a string. Received ' + JSON.stringify(path));\n }\n}\n\n// Resolves . and .. elements in a path with directory names\nfunction normalizeStringPosix(path, allowAboveRoot) {\n var res = '';\n var lastSegmentLength = 0;\n var lastSlash = -1;\n var dots = 0;\n var code;\n for (var i = 0; i <= path.length; ++i) {\n if (i < path.length)\n code = path.charCodeAt(i);\n else if (code === 47 /*/*/)\n break;\n else\n code = 47 /*/*/;\n if (code === 47 /*/*/) {\n if (lastSlash === i - 1 || dots === 1) {\n // NOOP\n } else if (lastSlash !== i - 1 && dots === 2) {\n if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== 46 /*.*/ || res.charCodeAt(res.length - 2) !== 46 /*.*/) {\n if (res.length > 2) {\n var lastSlashIndex = res.lastIndexOf('/');\n if (lastSlashIndex !== res.length - 1) {\n if (lastSlashIndex === -1) {\n res = '';\n lastSegmentLength = 0;\n } else {\n res = res.slice(0, lastSlashIndex);\n lastSegmentLength = res.length - 1 - res.lastIndexOf('/');\n }\n lastSlash = i;\n dots = 0;\n continue;\n }\n } else if (res.length === 2 || res.length === 1) {\n res = '';\n lastSegmentLength = 0;\n lastSlash = i;\n dots = 0;\n continue;\n }\n }\n if (allowAboveRoot) {\n if (res.length > 0)\n res += '/..';\n else\n res = '..';\n lastSegmentLength = 2;\n }\n } else {\n if (res.length > 0)\n res += '/' + path.slice(lastSlash + 1, i);\n else\n res = path.slice(lastSlash + 1, i);\n lastSegmentLength = i - lastSlash - 1;\n }\n lastSlash = i;\n dots = 0;\n } else if (code === 46 /*.*/ && dots !== -1) {\n ++dots;\n } else {\n dots = -1;\n }\n }\n return res;\n}\n\nfunction _format(sep, pathObject) {\n var dir = pathObject.dir || pathObject.root;\n var base = pathObject.base || (pathObject.name || '') + (pathObject.ext || '');\n if (!dir) {\n return base;\n }\n if (dir === pathObject.root) {\n return dir + base;\n }\n return dir + sep + base;\n}\n\nvar posix = {\n // path.resolve([from ...], to)\n resolve: function resolve() {\n var resolvedPath = '';\n var resolvedAbsolute = false;\n var cwd;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path;\n if (i >= 0)\n path = arguments[i];\n else {\n if (cwd === undefined)\n cwd = process.cwd();\n path = cwd;\n }\n\n assertPath(path);\n\n // Skip empty entries\n if (path.length === 0) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charCodeAt(0) === 47 /*/*/;\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeStringPosix(resolvedPath, !resolvedAbsolute);\n\n if (resolvedAbsolute) {\n if (resolvedPath.length > 0)\n return '/' + resolvedPath;\n else\n return '/';\n } else if (resolvedPath.length > 0) {\n return resolvedPath;\n } else {\n return '.';\n }\n },\n\n normalize: function normalize(path) {\n assertPath(path);\n\n if (path.length === 0) return '.';\n\n var isAbsolute = path.charCodeAt(0) === 47 /*/*/;\n var trailingSeparator = path.charCodeAt(path.length - 1) === 47 /*/*/;\n\n // Normalize the path\n path = normalizeStringPosix(path, !isAbsolute);\n\n if (path.length === 0 && !isAbsolute) path = '.';\n if (path.length > 0 && trailingSeparator) path += '/';\n\n if (isAbsolute) return '/' + path;\n return path;\n },\n\n isAbsolute: function isAbsolute(path) {\n assertPath(path);\n return path.length > 0 && path.charCodeAt(0) === 47 /*/*/;\n },\n\n join: function join() {\n if (arguments.length === 0)\n return '.';\n var joined;\n for (var i = 0; i < arguments.length; ++i) {\n var arg = arguments[i];\n assertPath(arg);\n if (arg.length > 0) {\n if (joined === undefined)\n joined = arg;\n else\n joined += '/' + arg;\n }\n }\n if (joined === undefined)\n return '.';\n return posix.normalize(joined);\n },\n\n relative: function relative(from, to) {\n assertPath(from);\n assertPath(to);\n\n if (from === to) return '';\n\n from = posix.resolve(from);\n to = posix.resolve(to);\n\n if (from === to) return '';\n\n // Trim any leading backslashes\n var fromStart = 1;\n for (; fromStart < from.length; ++fromStart) {\n if (from.charCodeAt(fromStart) !== 47 /*/*/)\n break;\n }\n var fromEnd = from.length;\n var fromLen = fromEnd - fromStart;\n\n // Trim any leading backslashes\n var toStart = 1;\n for (; toStart < to.length; ++toStart) {\n if (to.charCodeAt(toStart) !== 47 /*/*/)\n break;\n }\n var toEnd = to.length;\n var toLen = toEnd - toStart;\n\n // Compare paths to find the longest common path from root\n var length = fromLen < toLen ? fromLen : toLen;\n var lastCommonSep = -1;\n var i = 0;\n for (; i <= length; ++i) {\n if (i === length) {\n if (toLen > length) {\n if (to.charCodeAt(toStart + i) === 47 /*/*/) {\n // We get here if `from` is the exact base path for `to`.\n // For example: from='/foo/bar'; to='/foo/bar/baz'\n return to.slice(toStart + i + 1);\n } else if (i === 0) {\n // We get here if `from` is the root\n // For example: from='/'; to='/foo'\n return to.slice(toStart + i);\n }\n } else if (fromLen > length) {\n if (from.charCodeAt(fromStart + i) === 47 /*/*/) {\n // We get here if `to` is the exact base path for `from`.\n // For example: from='/foo/bar/baz'; to='/foo/bar'\n lastCommonSep = i;\n } else if (i === 0) {\n // We get here if `to` is the root.\n // For example: from='/foo'; to='/'\n lastCommonSep = 0;\n }\n }\n break;\n }\n var fromCode = from.charCodeAt(fromStart + i);\n var toCode = to.charCodeAt(toStart + i);\n if (fromCode !== toCode)\n break;\n else if (fromCode === 47 /*/*/)\n lastCommonSep = i;\n }\n\n var out = '';\n // Generate the relative path based on the path difference between `to`\n // and `from`\n for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {\n if (i === fromEnd || from.charCodeAt(i) === 47 /*/*/) {\n if (out.length === 0)\n out += '..';\n else\n out += '/..';\n }\n }\n\n // Lastly, append the rest of the destination (`to`) path that comes after\n // the common path parts\n if (out.length > 0)\n return out + to.slice(toStart + lastCommonSep);\n else {\n toStart += lastCommonSep;\n if (to.charCodeAt(toStart) === 47 /*/*/)\n ++toStart;\n return to.slice(toStart);\n }\n },\n\n _makeLong: function _makeLong(path) {\n return path;\n },\n\n dirname: function dirname(path) {\n assertPath(path);\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) return '//';\n return path.slice(0, end);\n },\n\n basename: function basename(path, ext) {\n if (ext !== undefined && typeof ext !== 'string') throw new TypeError('\"ext\" argument must be a string');\n assertPath(path);\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n if (ext !== undefined && ext.length > 0 && ext.length <= path.length) {\n if (ext.length === path.length && ext === path) return '';\n var extIdx = ext.length - 1;\n var firstNonSlashEnd = -1;\n for (i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else {\n if (firstNonSlashEnd === -1) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching\n matchedSlash = false;\n firstNonSlashEnd = i + 1;\n }\n if (extIdx >= 0) {\n // Try to match the explicit extension\n if (code === ext.charCodeAt(extIdx)) {\n if (--extIdx === -1) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = i;\n }\n } else {\n // Extension does not match, so our result is the entire path\n // component\n extIdx = -1;\n end = firstNonSlashEnd;\n }\n }\n }\n }\n\n if (start === end) end = firstNonSlashEnd;else if (end === -1) end = path.length;\n return path.slice(start, end);\n } else {\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n }\n },\n\n extname: function extname(path) {\n assertPath(path);\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n },\n\n format: function format(pathObject) {\n if (pathObject === null || typeof pathObject !== 'object') {\n throw new TypeError('The \"pathObject\" argument must be of type Object. Received type ' + typeof pathObject);\n }\n return _format('/', pathObject);\n },\n\n parse: function parse(path) {\n assertPath(path);\n\n var ret = { root: '', dir: '', base: '', ext: '', name: '' };\n if (path.length === 0) return ret;\n var code = path.charCodeAt(0);\n var isAbsolute = code === 47 /*/*/;\n var start;\n if (isAbsolute) {\n ret.root = '/';\n start = 1;\n } else {\n start = 0;\n }\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n var i = path.length - 1;\n\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n\n // Get non-dir info\n for (; i >= start; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1) startDot = i;else if (preDotState !== 1) preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n if (end !== -1) {\n if (startPart === 0 && isAbsolute) ret.base = ret.name = path.slice(1, end);else ret.base = ret.name = path.slice(startPart, end);\n }\n } else {\n if (startPart === 0 && isAbsolute) {\n ret.name = path.slice(1, startDot);\n ret.base = path.slice(1, end);\n } else {\n ret.name = path.slice(startPart, startDot);\n ret.base = path.slice(startPart, end);\n }\n ret.ext = path.slice(startDot, end);\n }\n\n if (startPart > 0) ret.dir = path.slice(0, startPart - 1);else if (isAbsolute) ret.dir = '/';\n\n return ret;\n },\n\n sep: '/',\n delimiter: ':',\n win32: null,\n posix: null\n};\n\nposix.posix = posix;\n\nmodule.exports = posix;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.constants = void 0;\nexports.constants = {\n O_RDONLY: 0,\n O_WRONLY: 1,\n O_RDWR: 2,\n S_IFMT: 61440,\n S_IFREG: 32768,\n S_IFDIR: 16384,\n S_IFCHR: 8192,\n S_IFBLK: 24576,\n S_IFIFO: 4096,\n S_IFLNK: 40960,\n S_IFSOCK: 49152,\n O_CREAT: 64,\n O_EXCL: 128,\n O_NOCTTY: 256,\n O_TRUNC: 512,\n O_APPEND: 1024,\n O_DIRECTORY: 65536,\n O_NOATIME: 262144,\n O_NOFOLLOW: 131072,\n O_SYNC: 1052672,\n O_DIRECT: 16384,\n O_NONBLOCK: 2048,\n S_IRWXU: 448,\n S_IRUSR: 256,\n S_IWUSR: 128,\n S_IXUSR: 64,\n S_IRWXG: 56,\n S_IRGRP: 32,\n S_IWGRP: 16,\n S_IXGRP: 8,\n S_IRWXO: 7,\n S_IROTH: 4,\n S_IWOTH: 2,\n S_IXOTH: 1,\n F_OK: 0,\n R_OK: 4,\n W_OK: 2,\n X_OK: 1,\n UV_FS_SYMLINK_DIR: 1,\n UV_FS_SYMLINK_JUNCTION: 2,\n UV_FS_COPYFILE_EXCL: 1,\n UV_FS_COPYFILE_FICLONE: 2,\n UV_FS_COPYFILE_FICLONE_FORCE: 4,\n COPYFILE_EXCL: 1,\n COPYFILE_FICLONE: 2,\n COPYFILE_FICLONE_FORCE: 4,\n};\n","if (typeof BigInt === 'function') exports.default = BigInt;\nelse\n exports.default = function BigIntNotSupported() {\n throw new Error('BigInt is not supported in this environment.');\n };\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Stats = void 0;\nvar constants_1 = require(\"./constants\");\nvar getBigInt_1 = require(\"./getBigInt\");\nvar S_IFMT = constants_1.constants.S_IFMT, S_IFDIR = constants_1.constants.S_IFDIR, S_IFREG = constants_1.constants.S_IFREG, S_IFBLK = constants_1.constants.S_IFBLK, S_IFCHR = constants_1.constants.S_IFCHR, S_IFLNK = constants_1.constants.S_IFLNK, S_IFIFO = constants_1.constants.S_IFIFO, S_IFSOCK = constants_1.constants.S_IFSOCK;\n/**\n * Statistics about a file/directory, like `fs.Stats`.\n */\nvar Stats = /** @class */ (function () {\n function Stats() {\n }\n Stats.build = function (node, bigint) {\n if (bigint === void 0) { bigint = false; }\n var stats = new Stats();\n var uid = node.uid, gid = node.gid, atime = node.atime, mtime = node.mtime, ctime = node.ctime;\n var getStatNumber = !bigint ? function (number) { return number; } : getBigInt_1.default;\n // Copy all values on Stats from Node, so that if Node values\n // change, values on Stats would still be the old ones,\n // just like in Node fs.\n stats.uid = getStatNumber(uid);\n stats.gid = getStatNumber(gid);\n stats.rdev = getStatNumber(0);\n stats.blksize = getStatNumber(4096);\n stats.ino = getStatNumber(node.ino);\n stats.size = getStatNumber(node.getSize());\n stats.blocks = getStatNumber(1);\n stats.atime = atime;\n stats.mtime = mtime;\n stats.ctime = ctime;\n stats.birthtime = ctime;\n stats.atimeMs = getStatNumber(atime.getTime());\n stats.mtimeMs = getStatNumber(mtime.getTime());\n var ctimeMs = getStatNumber(ctime.getTime());\n stats.ctimeMs = ctimeMs;\n stats.birthtimeMs = ctimeMs;\n stats.dev = getStatNumber(0);\n stats.mode = getStatNumber(node.mode);\n stats.nlink = getStatNumber(node.nlink);\n return stats;\n };\n Stats.prototype._checkModeProperty = function (property) {\n return (Number(this.mode) & S_IFMT) === property;\n };\n Stats.prototype.isDirectory = function () {\n return this._checkModeProperty(S_IFDIR);\n };\n Stats.prototype.isFile = function () {\n return this._checkModeProperty(S_IFREG);\n };\n Stats.prototype.isBlockDevice = function () {\n return this._checkModeProperty(S_IFBLK);\n };\n Stats.prototype.isCharacterDevice = function () {\n return this._checkModeProperty(S_IFCHR);\n };\n Stats.prototype.isSymbolicLink = function () {\n return this._checkModeProperty(S_IFLNK);\n };\n Stats.prototype.isFIFO = function () {\n return this._checkModeProperty(S_IFIFO);\n };\n Stats.prototype.isSocket = function () {\n return this._checkModeProperty(S_IFSOCK);\n };\n return Stats;\n}());\nexports.Stats = Stats;\nexports.default = Stats;\n","\"use strict\";\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.bufferFrom = exports.bufferAllocUnsafe = exports.Buffer = void 0;\nvar buffer_1 = require(\"buffer\");\nObject.defineProperty(exports, \"Buffer\", { enumerable: true, get: function () { return buffer_1.Buffer; } });\nfunction bufferV0P12Ponyfill(arg0) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n return new (buffer_1.Buffer.bind.apply(buffer_1.Buffer, __spreadArray([void 0, arg0], args, false)))();\n}\nvar bufferAllocUnsafe = buffer_1.Buffer.allocUnsafe || bufferV0P12Ponyfill;\nexports.bufferAllocUnsafe = bufferAllocUnsafe;\nvar bufferFrom = buffer_1.Buffer.from || bufferV0P12Ponyfill;\nexports.bufferFrom = bufferFrom;\n","\"use strict\";\n// The whole point behind this internal module is to allow Node.js to no\n// longer be forced to treat every error message change as a semver-major\n// change. The NodeError classes here all expose a `code` property whose\n// value statically and permanently identifies the error. While the error\n// message may change, the code should not.\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.E = exports.AssertionError = exports.message = exports.RangeError = exports.TypeError = exports.Error = void 0;\nvar assert = require(\"assert\");\nvar util = require(\"util\");\nvar kCode = typeof Symbol === 'undefined' ? '_kCode' : Symbol('code');\nvar messages = {}; // new Map();\nfunction makeNodeError(Base) {\n return /** @class */ (function (_super) {\n __extends(NodeError, _super);\n function NodeError(key) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n var _this = _super.call(this, message(key, args)) || this;\n _this.code = key;\n _this[kCode] = key;\n _this.name = \"\".concat(_super.prototype.name, \" [\").concat(_this[kCode], \"]\");\n return _this;\n }\n return NodeError;\n }(Base));\n}\nvar g = typeof globalThis !== 'undefined' ? globalThis : global;\nvar AssertionError = /** @class */ (function (_super) {\n __extends(AssertionError, _super);\n function AssertionError(options) {\n var _this = this;\n if (typeof options !== 'object' || options === null) {\n throw new exports.TypeError('ERR_INVALID_ARG_TYPE', 'options', 'object');\n }\n if (options.message) {\n _this = _super.call(this, options.message) || this;\n }\n else {\n _this = _super.call(this, \"\".concat(util.inspect(options.actual).slice(0, 128), \" \") +\n \"\".concat(options.operator, \" \").concat(util.inspect(options.expected).slice(0, 128))) || this;\n }\n _this.generatedMessage = !options.message;\n _this.name = 'AssertionError [ERR_ASSERTION]';\n _this.code = 'ERR_ASSERTION';\n _this.actual = options.actual;\n _this.expected = options.expected;\n _this.operator = options.operator;\n exports.Error.captureStackTrace(_this, options.stackStartFunction);\n return _this;\n }\n return AssertionError;\n}(g.Error));\nexports.AssertionError = AssertionError;\nfunction message(key, args) {\n assert.strictEqual(typeof key, 'string');\n // const msg = messages.get(key);\n var msg = messages[key];\n assert(msg, \"An invalid error message key was used: \".concat(key, \".\"));\n var fmt;\n if (typeof msg === 'function') {\n fmt = msg;\n }\n else {\n fmt = util.format;\n if (args === undefined || args.length === 0)\n return msg;\n args.unshift(msg);\n }\n return String(fmt.apply(null, args));\n}\nexports.message = message;\n// Utility function for registering the error codes. Only used here. Exported\n// *only* to allow for testing.\nfunction E(sym, val) {\n messages[sym] = typeof val === 'function' ? val : String(val);\n}\nexports.E = E;\nexports.Error = makeNodeError(g.Error);\nexports.TypeError = makeNodeError(g.TypeError);\nexports.RangeError = makeNodeError(g.RangeError);\n// To declare an error message, use the E(sym, val) function above. The sym\n// must be an upper case string. The val can be either a function or a string.\n// The return value of the function must be a string.\n// Examples:\n// E('EXAMPLE_KEY1', 'This is the error value');\n// E('EXAMPLE_KEY2', (a, b) => return `${a} ${b}`);\n//\n// Once an error code has been assigned, the code itself MUST NOT change and\n// any given error code must never be reused to identify a different error.\n//\n// Any error code added here should also be added to the documentation\n//\n// Note: Please try to keep these in alphabetical order\nE('ERR_ARG_NOT_ITERABLE', '%s must be iterable');\nE('ERR_ASSERTION', '%s');\nE('ERR_BUFFER_OUT_OF_BOUNDS', bufferOutOfBounds);\nE('ERR_CHILD_CLOSED_BEFORE_REPLY', 'Child closed before reply received');\nE('ERR_CONSOLE_WRITABLE_STREAM', 'Console expects a writable stream instance for %s');\nE('ERR_CPU_USAGE', 'Unable to obtain cpu usage %s');\nE('ERR_DNS_SET_SERVERS_FAILED', function (err, servers) { return \"c-ares failed to set servers: \\\"\".concat(err, \"\\\" [\").concat(servers, \"]\"); });\nE('ERR_FALSY_VALUE_REJECTION', 'Promise was rejected with falsy value');\nE('ERR_ENCODING_NOT_SUPPORTED', function (enc) { return \"The \\\"\".concat(enc, \"\\\" encoding is not supported\"); });\nE('ERR_ENCODING_INVALID_ENCODED_DATA', function (enc) { return \"The encoded data was not valid for encoding \".concat(enc); });\nE('ERR_HTTP_HEADERS_SENT', 'Cannot render headers after they are sent to the client');\nE('ERR_HTTP_INVALID_STATUS_CODE', 'Invalid status code: %s');\nE('ERR_HTTP_TRAILER_INVALID', 'Trailers are invalid with this transfer encoding');\nE('ERR_INDEX_OUT_OF_RANGE', 'Index out of range');\nE('ERR_INVALID_ARG_TYPE', invalidArgType);\nE('ERR_INVALID_ARRAY_LENGTH', function (name, len, actual) {\n assert.strictEqual(typeof actual, 'number');\n return \"The array \\\"\".concat(name, \"\\\" (length \").concat(actual, \") must be of length \").concat(len, \".\");\n});\nE('ERR_INVALID_BUFFER_SIZE', 'Buffer size must be a multiple of %s');\nE('ERR_INVALID_CALLBACK', 'Callback must be a function');\nE('ERR_INVALID_CHAR', 'Invalid character in %s');\nE('ERR_INVALID_CURSOR_POS', 'Cannot set cursor row without setting its column');\nE('ERR_INVALID_FD', '\"fd\" must be a positive integer: %s');\nE('ERR_INVALID_FILE_URL_HOST', 'File URL host must be \"localhost\" or empty on %s');\nE('ERR_INVALID_FILE_URL_PATH', 'File URL path %s');\nE('ERR_INVALID_HANDLE_TYPE', 'This handle type cannot be sent');\nE('ERR_INVALID_IP_ADDRESS', 'Invalid IP address: %s');\nE('ERR_INVALID_OPT_VALUE', function (name, value) {\n return \"The value \\\"\".concat(String(value), \"\\\" is invalid for option \\\"\").concat(name, \"\\\"\");\n});\nE('ERR_INVALID_OPT_VALUE_ENCODING', function (value) { return \"The value \\\"\".concat(String(value), \"\\\" is invalid for option \\\"encoding\\\"\"); });\nE('ERR_INVALID_REPL_EVAL_CONFIG', 'Cannot specify both \"breakEvalOnSigint\" and \"eval\" for REPL');\nE('ERR_INVALID_SYNC_FORK_INPUT', 'Asynchronous forks do not support Buffer, Uint8Array or string input: %s');\nE('ERR_INVALID_THIS', 'Value of \"this\" must be of type %s');\nE('ERR_INVALID_TUPLE', '%s must be an iterable %s tuple');\nE('ERR_INVALID_URL', 'Invalid URL: %s');\nE('ERR_INVALID_URL_SCHEME', function (expected) { return \"The URL must be \".concat(oneOf(expected, 'scheme')); });\nE('ERR_IPC_CHANNEL_CLOSED', 'Channel closed');\nE('ERR_IPC_DISCONNECTED', 'IPC channel is already disconnected');\nE('ERR_IPC_ONE_PIPE', 'Child process can have only one IPC pipe');\nE('ERR_IPC_SYNC_FORK', 'IPC cannot be used with synchronous forks');\nE('ERR_MISSING_ARGS', missingArgs);\nE('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\nE('ERR_NAPI_CONS_FUNCTION', 'Constructor must be a function');\nE('ERR_NAPI_CONS_PROTOTYPE_OBJECT', 'Constructor.prototype must be an object');\nE('ERR_NO_CRYPTO', 'Node.js is not compiled with OpenSSL crypto support');\nE('ERR_NO_LONGER_SUPPORTED', '%s is no longer supported');\nE('ERR_PARSE_HISTORY_DATA', 'Could not parse history data in %s');\nE('ERR_SOCKET_ALREADY_BOUND', 'Socket is already bound');\nE('ERR_SOCKET_BAD_PORT', 'Port should be > 0 and < 65536');\nE('ERR_SOCKET_BAD_TYPE', 'Bad socket type specified. Valid types are: udp4, udp6');\nE('ERR_SOCKET_CANNOT_SEND', 'Unable to send data');\nE('ERR_SOCKET_CLOSED', 'Socket is closed');\nE('ERR_SOCKET_DGRAM_NOT_RUNNING', 'Not running');\nE('ERR_STDERR_CLOSE', 'process.stderr cannot be closed');\nE('ERR_STDOUT_CLOSE', 'process.stdout cannot be closed');\nE('ERR_STREAM_WRAP', 'Stream has StringDecoder set or is in objectMode');\nE('ERR_TLS_CERT_ALTNAME_INVALID', \"Hostname/IP does not match certificate's altnames: %s\");\nE('ERR_TLS_DH_PARAM_SIZE', function (size) { return \"DH parameter size \".concat(size, \" is less than 2048\"); });\nE('ERR_TLS_HANDSHAKE_TIMEOUT', 'TLS handshake timeout');\nE('ERR_TLS_RENEGOTIATION_FAILED', 'Failed to renegotiate');\nE('ERR_TLS_REQUIRED_SERVER_NAME', '\"servername\" is required parameter for Server.addContext');\nE('ERR_TLS_SESSION_ATTACK', 'TSL session renegotiation attack detected');\nE('ERR_TRANSFORM_ALREADY_TRANSFORMING', 'Calling transform done when still transforming');\nE('ERR_TRANSFORM_WITH_LENGTH_0', 'Calling transform done when writableState.length != 0');\nE('ERR_UNKNOWN_ENCODING', 'Unknown encoding: %s');\nE('ERR_UNKNOWN_SIGNAL', 'Unknown signal: %s');\nE('ERR_UNKNOWN_STDIN_TYPE', 'Unknown stdin file type');\nE('ERR_UNKNOWN_STREAM_TYPE', 'Unknown stream file type');\nE('ERR_V8BREAKITERATOR', 'Full ICU data not installed. ' + 'See https://github.com/nodejs/node/wiki/Intl');\nfunction invalidArgType(name, expected, actual) {\n assert(name, 'name is required');\n // determiner: 'must be' or 'must not be'\n var determiner;\n if (expected.includes('not ')) {\n determiner = 'must not be';\n expected = expected.split('not ')[1];\n }\n else {\n determiner = 'must be';\n }\n var msg;\n if (Array.isArray(name)) {\n var names = name.map(function (val) { return \"\\\"\".concat(val, \"\\\"\"); }).join(', ');\n msg = \"The \".concat(names, \" arguments \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n else if (name.includes(' argument')) {\n // for the case like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n else {\n var type = name.includes('.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n // if actual value received, output it\n if (arguments.length >= 3) {\n msg += \". Received type \".concat(actual !== null ? typeof actual : 'null');\n }\n return msg;\n}\nfunction missingArgs() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n assert(args.length > 0, 'At least one arg needs to be specified');\n var msg = 'The ';\n var len = args.length;\n args = args.map(function (a) { return \"\\\"\".concat(a, \"\\\"\"); });\n switch (len) {\n case 1:\n msg += \"\".concat(args[0], \" argument\");\n break;\n case 2:\n msg += \"\".concat(args[0], \" and \").concat(args[1], \" arguments\");\n break;\n default:\n msg += args.slice(0, len - 1).join(', ');\n msg += \", and \".concat(args[len - 1], \" arguments\");\n break;\n }\n return \"\".concat(msg, \" must be specified\");\n}\nfunction oneOf(expected, thing) {\n assert(expected, 'expected is required');\n assert(typeof thing === 'string', 'thing is required');\n if (Array.isArray(expected)) {\n var len = expected.length;\n assert(len > 0, 'At least one expected value needs to be specified');\n // tslint:disable-next-line\n expected = expected.map(function (i) { return String(i); });\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n }\n else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n }\n else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n }\n else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n}\nfunction bufferOutOfBounds(name, isWriting) {\n if (isWriting) {\n return 'Attempt to write outside buffer bounds';\n }\n else {\n return \"\\\"\".concat(name, \"\\\" is outside of buffer bounds\");\n }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.strToEncoding = exports.assertEncoding = exports.ENCODING_UTF8 = void 0;\nvar buffer_1 = require(\"./internal/buffer\");\nvar errors = require(\"./internal/errors\");\nexports.ENCODING_UTF8 = 'utf8';\nfunction assertEncoding(encoding) {\n if (encoding && !buffer_1.Buffer.isEncoding(encoding))\n throw new errors.TypeError('ERR_INVALID_OPT_VALUE_ENCODING', encoding);\n}\nexports.assertEncoding = assertEncoding;\nfunction strToEncoding(str, encoding) {\n if (!encoding || encoding === exports.ENCODING_UTF8)\n return str; // UTF-8\n if (encoding === 'buffer')\n return new buffer_1.Buffer(str); // `buffer` encoding\n return new buffer_1.Buffer(str).toString(encoding); // Custom encoding\n}\nexports.strToEncoding = strToEncoding;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Dirent = void 0;\nvar constants_1 = require(\"./constants\");\nvar encoding_1 = require(\"./encoding\");\nvar S_IFMT = constants_1.constants.S_IFMT, S_IFDIR = constants_1.constants.S_IFDIR, S_IFREG = constants_1.constants.S_IFREG, S_IFBLK = constants_1.constants.S_IFBLK, S_IFCHR = constants_1.constants.S_IFCHR, S_IFLNK = constants_1.constants.S_IFLNK, S_IFIFO = constants_1.constants.S_IFIFO, S_IFSOCK = constants_1.constants.S_IFSOCK;\n/**\n * A directory entry, like `fs.Dirent`.\n */\nvar Dirent = /** @class */ (function () {\n function Dirent() {\n this.name = '';\n this.mode = 0;\n }\n Dirent.build = function (link, encoding) {\n var dirent = new Dirent();\n var mode = link.getNode().mode;\n dirent.name = (0, encoding_1.strToEncoding)(link.getName(), encoding);\n dirent.mode = mode;\n return dirent;\n };\n Dirent.prototype._checkModeProperty = function (property) {\n return (this.mode & S_IFMT) === property;\n };\n Dirent.prototype.isDirectory = function () {\n return this._checkModeProperty(S_IFDIR);\n };\n Dirent.prototype.isFile = function () {\n return this._checkModeProperty(S_IFREG);\n };\n Dirent.prototype.isBlockDevice = function () {\n return this._checkModeProperty(S_IFBLK);\n };\n Dirent.prototype.isCharacterDevice = function () {\n return this._checkModeProperty(S_IFCHR);\n };\n Dirent.prototype.isSymbolicLink = function () {\n return this._checkModeProperty(S_IFLNK);\n };\n Dirent.prototype.isFIFO = function () {\n return this._checkModeProperty(S_IFIFO);\n };\n Dirent.prototype.isSocket = function () {\n return this._checkModeProperty(S_IFSOCK);\n };\n return Dirent;\n}());\nexports.Dirent = Dirent;\nexports.default = Dirent;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar _setImmediate;\nif (typeof setImmediate === 'function')\n _setImmediate = setImmediate.bind(typeof globalThis !== 'undefined' ? globalThis : global);\nelse\n _setImmediate = setTimeout.bind(typeof globalThis !== 'undefined' ? globalThis : global);\nexports.default = _setImmediate;\n","\"use strict\";\n// Here we mock the global `process` variable in case we are not in Node's environment.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createProcess = void 0;\n/**\n * Looks to return a `process` object, if one is available.\n *\n * The global `process` is returned if defined;\n * otherwise `require('process')` is attempted.\n *\n * If that fails, `undefined` is returned.\n *\n * @return {IProcess | undefined}\n */\nvar maybeReturnProcess = function () {\n if (typeof process !== 'undefined') {\n return process;\n }\n try {\n return require('process');\n }\n catch (_a) {\n return undefined;\n }\n};\nfunction createProcess() {\n var p = maybeReturnProcess() || {};\n if (!p.cwd)\n p.cwd = function () { return '/'; };\n if (!p.nextTick)\n p.nextTick = require('./setImmediate').default;\n if (!p.emitWarning)\n p.emitWarning = function (message, type) {\n // tslint:disable-next-line:no-console\n console.warn(\"\".concat(type).concat(type ? ': ' : '').concat(message));\n };\n if (!p.env)\n p.env = {};\n return p;\n}\nexports.createProcess = createProcess;\nexports.default = createProcess();\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.File = exports.Link = exports.Node = exports.SEP = void 0;\nvar process_1 = require(\"./process\");\nvar buffer_1 = require(\"./internal/buffer\");\nvar constants_1 = require(\"./constants\");\nvar events_1 = require(\"events\");\nvar Stats_1 = require(\"./Stats\");\nvar S_IFMT = constants_1.constants.S_IFMT, S_IFDIR = constants_1.constants.S_IFDIR, S_IFREG = constants_1.constants.S_IFREG, S_IFLNK = constants_1.constants.S_IFLNK, O_APPEND = constants_1.constants.O_APPEND;\nvar getuid = function () { var _a, _b; return (_b = (_a = process_1.default.getuid) === null || _a === void 0 ? void 0 : _a.call(process_1.default)) !== null && _b !== void 0 ? _b : 0; };\nvar getgid = function () { var _a, _b; return (_b = (_a = process_1.default.getgid) === null || _a === void 0 ? void 0 : _a.call(process_1.default)) !== null && _b !== void 0 ? _b : 0; };\nexports.SEP = '/';\n/**\n * Node in a file system (like i-node, v-node).\n */\nvar Node = /** @class */ (function (_super) {\n __extends(Node, _super);\n function Node(ino, perm) {\n if (perm === void 0) { perm = 438; }\n var _this = _super.call(this) || this;\n // User ID and group ID.\n _this.uid = getuid();\n _this.gid = getgid();\n _this.atime = new Date();\n _this.mtime = new Date();\n _this.ctime = new Date();\n _this.perm = 438; // Permissions `chmod`, `fchmod`\n _this.mode = S_IFREG; // S_IFDIR, S_IFREG, etc.. (file by default?)\n // Number of hard links pointing at this Node.\n _this.nlink = 1;\n _this.perm = perm;\n _this.mode |= perm;\n _this.ino = ino;\n return _this;\n }\n Node.prototype.getString = function (encoding) {\n if (encoding === void 0) { encoding = 'utf8'; }\n return this.getBuffer().toString(encoding);\n };\n Node.prototype.setString = function (str) {\n // this.setBuffer(bufferFrom(str, 'utf8'));\n this.buf = (0, buffer_1.bufferFrom)(str, 'utf8');\n this.touch();\n };\n Node.prototype.getBuffer = function () {\n if (!this.buf)\n this.setBuffer((0, buffer_1.bufferAllocUnsafe)(0));\n return (0, buffer_1.bufferFrom)(this.buf); // Return a copy.\n };\n Node.prototype.setBuffer = function (buf) {\n this.buf = (0, buffer_1.bufferFrom)(buf); // Creates a copy of data.\n this.touch();\n };\n Node.prototype.getSize = function () {\n return this.buf ? this.buf.length : 0;\n };\n Node.prototype.setModeProperty = function (property) {\n this.mode = (this.mode & ~S_IFMT) | property;\n };\n Node.prototype.setIsFile = function () {\n this.setModeProperty(S_IFREG);\n };\n Node.prototype.setIsDirectory = function () {\n this.setModeProperty(S_IFDIR);\n };\n Node.prototype.setIsSymlink = function () {\n this.setModeProperty(S_IFLNK);\n };\n Node.prototype.isFile = function () {\n return (this.mode & S_IFMT) === S_IFREG;\n };\n Node.prototype.isDirectory = function () {\n return (this.mode & S_IFMT) === S_IFDIR;\n };\n Node.prototype.isSymlink = function () {\n // return !!this.symlink;\n return (this.mode & S_IFMT) === S_IFLNK;\n };\n Node.prototype.makeSymlink = function (steps) {\n this.symlink = steps;\n this.setIsSymlink();\n };\n Node.prototype.write = function (buf, off, len, pos) {\n if (off === void 0) { off = 0; }\n if (len === void 0) { len = buf.length; }\n if (pos === void 0) { pos = 0; }\n if (!this.buf)\n this.buf = (0, buffer_1.bufferAllocUnsafe)(0);\n if (pos + len > this.buf.length) {\n var newBuf = (0, buffer_1.bufferAllocUnsafe)(pos + len);\n this.buf.copy(newBuf, 0, 0, this.buf.length);\n this.buf = newBuf;\n }\n buf.copy(this.buf, pos, off, off + len);\n this.touch();\n return len;\n };\n // Returns the number of bytes read.\n Node.prototype.read = function (buf, off, len, pos) {\n if (off === void 0) { off = 0; }\n if (len === void 0) { len = buf.byteLength; }\n if (pos === void 0) { pos = 0; }\n if (!this.buf)\n this.buf = (0, buffer_1.bufferAllocUnsafe)(0);\n var actualLen = len;\n if (actualLen > buf.byteLength) {\n actualLen = buf.byteLength;\n }\n if (actualLen + pos > this.buf.length) {\n actualLen = this.buf.length - pos;\n }\n this.buf.copy(buf, off, pos, pos + actualLen);\n return actualLen;\n };\n Node.prototype.truncate = function (len) {\n if (len === void 0) { len = 0; }\n if (!len)\n this.buf = (0, buffer_1.bufferAllocUnsafe)(0);\n else {\n if (!this.buf)\n this.buf = (0, buffer_1.bufferAllocUnsafe)(0);\n if (len <= this.buf.length) {\n this.buf = this.buf.slice(0, len);\n }\n else {\n var buf = (0, buffer_1.bufferAllocUnsafe)(len);\n this.buf.copy(buf);\n buf.fill(0, this.buf.length);\n this.buf = buf;\n }\n }\n this.touch();\n };\n Node.prototype.chmod = function (perm) {\n this.perm = perm;\n this.mode = (this.mode & ~511) | perm;\n this.touch();\n };\n Node.prototype.chown = function (uid, gid) {\n this.uid = uid;\n this.gid = gid;\n this.touch();\n };\n Node.prototype.touch = function () {\n this.mtime = new Date();\n this.emit('change', this);\n };\n Node.prototype.canRead = function (uid, gid) {\n if (uid === void 0) { uid = getuid(); }\n if (gid === void 0) { gid = getgid(); }\n if (this.perm & 4 /* S.IROTH */) {\n return true;\n }\n if (gid === this.gid) {\n if (this.perm & 32 /* S.IRGRP */) {\n return true;\n }\n }\n if (uid === this.uid) {\n if (this.perm & 256 /* S.IRUSR */) {\n return true;\n }\n }\n return false;\n };\n Node.prototype.canWrite = function (uid, gid) {\n if (uid === void 0) { uid = getuid(); }\n if (gid === void 0) { gid = getgid(); }\n if (this.perm & 2 /* S.IWOTH */) {\n return true;\n }\n if (gid === this.gid) {\n if (this.perm & 16 /* S.IWGRP */) {\n return true;\n }\n }\n if (uid === this.uid) {\n if (this.perm & 128 /* S.IWUSR */) {\n return true;\n }\n }\n return false;\n };\n Node.prototype.del = function () {\n this.emit('delete', this);\n };\n Node.prototype.toJSON = function () {\n return {\n ino: this.ino,\n uid: this.uid,\n gid: this.gid,\n atime: this.atime.getTime(),\n mtime: this.mtime.getTime(),\n ctime: this.ctime.getTime(),\n perm: this.perm,\n mode: this.mode,\n nlink: this.nlink,\n symlink: this.symlink,\n data: this.getString(),\n };\n };\n return Node;\n}(events_1.EventEmitter));\nexports.Node = Node;\n/**\n * Represents a hard link that points to an i-node `node`.\n */\nvar Link = /** @class */ (function (_super) {\n __extends(Link, _super);\n function Link(vol, parent, name) {\n var _this = _super.call(this) || this;\n _this.children = {};\n // Path to this node as Array: ['usr', 'bin', 'node'].\n _this._steps = [];\n // \"i-node\" number of the node.\n _this.ino = 0;\n // Number of children.\n _this.length = 0;\n _this.vol = vol;\n _this.parent = parent;\n _this.name = name;\n _this.syncSteps();\n return _this;\n }\n Object.defineProperty(Link.prototype, \"steps\", {\n get: function () {\n return this._steps;\n },\n // Recursively sync children steps, e.g. in case of dir rename\n set: function (val) {\n this._steps = val;\n for (var _i = 0, _a = Object.values(this.children); _i < _a.length; _i++) {\n var child = _a[_i];\n child === null || child === void 0 ? void 0 : child.syncSteps();\n }\n },\n enumerable: false,\n configurable: true\n });\n Link.prototype.setNode = function (node) {\n this.node = node;\n this.ino = node.ino;\n };\n Link.prototype.getNode = function () {\n return this.node;\n };\n Link.prototype.createChild = function (name, node) {\n if (node === void 0) { node = this.vol.createNode(); }\n var link = new Link(this.vol, this, name);\n link.setNode(node);\n if (node.isDirectory()) {\n // link.setChild('.', link);\n // link.getNode().nlink++;\n // link.setChild('..', this);\n // this.getNode().nlink++;\n }\n this.setChild(name, link);\n return link;\n };\n Link.prototype.setChild = function (name, link) {\n if (link === void 0) { link = new Link(this.vol, this, name); }\n this.children[name] = link;\n link.parent = this;\n this.length++;\n this.emit('child:add', link, this);\n return link;\n };\n Link.prototype.deleteChild = function (link) {\n delete this.children[link.getName()];\n this.length--;\n this.emit('child:delete', link, this);\n };\n Link.prototype.getChild = function (name) {\n if (Object.hasOwnProperty.call(this.children, name)) {\n return this.children[name];\n }\n };\n Link.prototype.getPath = function () {\n return this.steps.join(exports.SEP);\n };\n Link.prototype.getName = function () {\n return this.steps[this.steps.length - 1];\n };\n // del() {\n // const parent = this.parent;\n // if(parent) {\n // parent.deleteChild(link);\n // }\n // this.parent = null;\n // this.vol = null;\n // }\n /**\n * Walk the tree path and return the `Link` at that location, if any.\n * @param steps {string[]} Desired location.\n * @param stop {number} Max steps to go into.\n * @param i {number} Current step in the `steps` array.\n *\n * @return {Link|null}\n */\n Link.prototype.walk = function (steps, stop, i) {\n if (stop === void 0) { stop = steps.length; }\n if (i === void 0) { i = 0; }\n if (i >= steps.length)\n return this;\n if (i >= stop)\n return this;\n var step = steps[i];\n var link = this.getChild(step);\n if (!link)\n return null;\n return link.walk(steps, stop, i + 1);\n };\n Link.prototype.toJSON = function () {\n return {\n steps: this.steps,\n ino: this.ino,\n children: Object.keys(this.children),\n };\n };\n Link.prototype.syncSteps = function () {\n this.steps = this.parent ? this.parent.steps.concat([this.name]) : [this.name];\n };\n return Link;\n}(events_1.EventEmitter));\nexports.Link = Link;\n/**\n * Represents an open file (file descriptor) that points to a `Link` (Hard-link) and a `Node`.\n */\nvar File = /** @class */ (function () {\n /**\n * Open a Link-Node pair. `node` is provided separately as that might be a different node\n * rather the one `link` points to, because it might be a symlink.\n * @param link\n * @param node\n * @param flags\n * @param fd\n */\n function File(link, node, flags, fd) {\n /**\n * A cursor/offset position in a file, where data will be written on write.\n * User can \"seek\" this position.\n */\n this.position = 0;\n this.link = link;\n this.node = node;\n this.flags = flags;\n this.fd = fd;\n }\n File.prototype.getString = function (encoding) {\n if (encoding === void 0) { encoding = 'utf8'; }\n return this.node.getString();\n };\n File.prototype.setString = function (str) {\n this.node.setString(str);\n };\n File.prototype.getBuffer = function () {\n return this.node.getBuffer();\n };\n File.prototype.setBuffer = function (buf) {\n this.node.setBuffer(buf);\n };\n File.prototype.getSize = function () {\n return this.node.getSize();\n };\n File.prototype.truncate = function (len) {\n this.node.truncate(len);\n };\n File.prototype.seekTo = function (position) {\n this.position = position;\n };\n File.prototype.stats = function () {\n return Stats_1.default.build(this.node);\n };\n File.prototype.write = function (buf, offset, length, position) {\n if (offset === void 0) { offset = 0; }\n if (length === void 0) { length = buf.length; }\n if (typeof position !== 'number')\n position = this.position;\n if (this.flags & O_APPEND)\n position = this.getSize();\n var bytes = this.node.write(buf, offset, length, position);\n this.position = position + bytes;\n return bytes;\n };\n File.prototype.read = function (buf, offset, length, position) {\n if (offset === void 0) { offset = 0; }\n if (length === void 0) { length = buf.byteLength; }\n if (typeof position !== 'number')\n position = this.position;\n var bytes = this.node.read(buf, offset, length, position);\n this.position = position + bytes;\n return bytes;\n };\n File.prototype.chmod = function (perm) {\n this.node.chmod(perm);\n };\n File.prototype.chown = function (uid, gid) {\n this.node.chown(uid, gid);\n };\n return File;\n}());\nexports.File = File;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * `setTimeoutUnref` is just like `setTimeout`,\n * only in Node's environment it will \"unref\" its macro task.\n */\nfunction setTimeoutUnref(callback, time, args) {\n var ref = setTimeout.apply(typeof globalThis !== 'undefined' ? globalThis : global, arguments);\n if (ref && typeof ref === 'object' && typeof ref.unref === 'function')\n ref.unref();\n return ref;\n}\nexports.default = setTimeoutUnref;\n","\"use strict\";\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FileHandle = void 0;\nfunction promisify(vol, fn, getResult) {\n if (getResult === void 0) { getResult = function (input) { return input; }; }\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return new Promise(function (resolve, reject) {\n vol[fn].bind(vol).apply(void 0, __spreadArray(__spreadArray([], args, false), [function (error, result) {\n if (error)\n return reject(error);\n return resolve(getResult(result));\n }], false));\n });\n };\n}\nvar FileHandle = /** @class */ (function () {\n function FileHandle(vol, fd) {\n this.vol = vol;\n this.fd = fd;\n }\n FileHandle.prototype.appendFile = function (data, options) {\n return promisify(this.vol, 'appendFile')(this.fd, data, options);\n };\n FileHandle.prototype.chmod = function (mode) {\n return promisify(this.vol, 'fchmod')(this.fd, mode);\n };\n FileHandle.prototype.chown = function (uid, gid) {\n return promisify(this.vol, 'fchown')(this.fd, uid, gid);\n };\n FileHandle.prototype.close = function () {\n return promisify(this.vol, 'close')(this.fd);\n };\n FileHandle.prototype.datasync = function () {\n return promisify(this.vol, 'fdatasync')(this.fd);\n };\n FileHandle.prototype.read = function (buffer, offset, length, position) {\n return promisify(this.vol, 'read', function (bytesRead) { return ({ bytesRead: bytesRead, buffer: buffer }); })(this.fd, buffer, offset, length, position);\n };\n FileHandle.prototype.readFile = function (options) {\n return promisify(this.vol, 'readFile')(this.fd, options);\n };\n FileHandle.prototype.stat = function (options) {\n return promisify(this.vol, 'fstat')(this.fd, options);\n };\n FileHandle.prototype.sync = function () {\n return promisify(this.vol, 'fsync')(this.fd);\n };\n FileHandle.prototype.truncate = function (len) {\n return promisify(this.vol, 'ftruncate')(this.fd, len);\n };\n FileHandle.prototype.utimes = function (atime, mtime) {\n return promisify(this.vol, 'futimes')(this.fd, atime, mtime);\n };\n FileHandle.prototype.write = function (buffer, offset, length, position) {\n return promisify(this.vol, 'write', function (bytesWritten) { return ({ bytesWritten: bytesWritten, buffer: buffer }); })(this.fd, buffer, offset, length, position);\n };\n FileHandle.prototype.writeFile = function (data, options) {\n return promisify(this.vol, 'writeFile')(this.fd, data, options);\n };\n return FileHandle;\n}());\nexports.FileHandle = FileHandle;\nfunction createPromisesApi(vol) {\n if (typeof Promise === 'undefined')\n return null;\n return {\n FileHandle: FileHandle,\n access: function (path, mode) {\n return promisify(vol, 'access')(path, mode);\n },\n appendFile: function (path, data, options) {\n return promisify(vol, 'appendFile')(path instanceof FileHandle ? path.fd : path, data, options);\n },\n chmod: function (path, mode) {\n return promisify(vol, 'chmod')(path, mode);\n },\n chown: function (path, uid, gid) {\n return promisify(vol, 'chown')(path, uid, gid);\n },\n copyFile: function (src, dest, flags) {\n return promisify(vol, 'copyFile')(src, dest, flags);\n },\n lchmod: function (path, mode) {\n return promisify(vol, 'lchmod')(path, mode);\n },\n lchown: function (path, uid, gid) {\n return promisify(vol, 'lchown')(path, uid, gid);\n },\n link: function (existingPath, newPath) {\n return promisify(vol, 'link')(existingPath, newPath);\n },\n lstat: function (path, options) {\n return promisify(vol, 'lstat')(path, options);\n },\n mkdir: function (path, options) {\n return promisify(vol, 'mkdir')(path, options);\n },\n mkdtemp: function (prefix, options) {\n return promisify(vol, 'mkdtemp')(prefix, options);\n },\n open: function (path, flags, mode) {\n return promisify(vol, 'open', function (fd) { return new FileHandle(vol, fd); })(path, flags, mode);\n },\n readdir: function (path, options) {\n return promisify(vol, 'readdir')(path, options);\n },\n readFile: function (id, options) {\n return promisify(vol, 'readFile')(id instanceof FileHandle ? id.fd : id, options);\n },\n readlink: function (path, options) {\n return promisify(vol, 'readlink')(path, options);\n },\n realpath: function (path, options) {\n return promisify(vol, 'realpath')(path, options);\n },\n rename: function (oldPath, newPath) {\n return promisify(vol, 'rename')(oldPath, newPath);\n },\n rmdir: function (path) {\n return promisify(vol, 'rmdir')(path);\n },\n rm: function (path, options) {\n return promisify(vol, 'rm')(path, options);\n },\n stat: function (path, options) {\n return promisify(vol, 'stat')(path, options);\n },\n symlink: function (target, path, type) {\n return promisify(vol, 'symlink')(target, path, type);\n },\n truncate: function (path, len) {\n return promisify(vol, 'truncate')(path, len);\n },\n unlink: function (path) {\n return promisify(vol, 'unlink')(path);\n },\n utimes: function (path, atime, mtime) {\n return promisify(vol, 'utimes')(path, atime, mtime);\n },\n writeFile: function (id, data, options) {\n return promisify(vol, 'writeFile')(id instanceof FileHandle ? id.fd : id, data, options);\n },\n };\n}\nexports.default = createPromisesApi;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.unixify = unixify;\nexports.correctPath = correctPath;\nvar isWin = process.platform === 'win32';\n\nfunction removeTrailingSeparator(str) {\n var i = str.length - 1;\n\n if (i < 2) {\n return str;\n }\n\n while (isSeparator(str, i)) {\n i--;\n }\n\n return str.substr(0, i + 1);\n}\n\nfunction isSeparator(str, i) {\n var _char = str[i];\n return i > 0 && (_char === '/' || isWin && _char === '\\\\');\n}\n\nfunction normalizePath(str, stripTrailing) {\n if (typeof str !== 'string') {\n throw new TypeError('expected a string');\n }\n\n str = str.replace(/[\\\\\\/]+/g, '/');\n\n if (stripTrailing !== false) {\n str = removeTrailingSeparator(str);\n }\n\n return str;\n}\n\nfunction unixify(filepath) {\n var stripTrailing = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (isWin) {\n filepath = normalizePath(filepath, stripTrailing);\n return filepath.replace(/^([a-zA-Z]+:|\\.\\/)/, '');\n }\n\n return filepath;\n}\n\nfunction correctPath(filepath) {\n return unixify(filepath.replace(/^\\\\\\\\\\?\\\\.:\\\\/, '\\\\'));\n}","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FSWatcher = exports.StatWatcher = exports.Volume = exports.toUnixTimestamp = exports.bufferToEncoding = exports.dataToBuffer = exports.dataToStr = exports.pathToSteps = exports.filenameToSteps = exports.pathToFilename = exports.flagsToNumber = exports.FLAGS = void 0;\nvar pathModule = require(\"path\");\nvar node_1 = require(\"./node\");\nvar Stats_1 = require(\"./Stats\");\nvar Dirent_1 = require(\"./Dirent\");\nvar buffer_1 = require(\"./internal/buffer\");\nvar setImmediate_1 = require(\"./setImmediate\");\nvar process_1 = require(\"./process\");\nvar setTimeoutUnref_1 = require(\"./setTimeoutUnref\");\nvar stream_1 = require(\"stream\");\nvar constants_1 = require(\"./constants\");\nvar events_1 = require(\"events\");\nvar encoding_1 = require(\"./encoding\");\nvar errors = require(\"./internal/errors\");\nvar util = require(\"util\");\nvar promises_1 = require(\"./promises\");\nvar resolveCrossPlatform = pathModule.resolve;\nvar O_RDONLY = constants_1.constants.O_RDONLY, O_WRONLY = constants_1.constants.O_WRONLY, O_RDWR = constants_1.constants.O_RDWR, O_CREAT = constants_1.constants.O_CREAT, O_EXCL = constants_1.constants.O_EXCL, O_TRUNC = constants_1.constants.O_TRUNC, O_APPEND = constants_1.constants.O_APPEND, O_SYNC = constants_1.constants.O_SYNC, O_DIRECTORY = constants_1.constants.O_DIRECTORY, F_OK = constants_1.constants.F_OK, COPYFILE_EXCL = constants_1.constants.COPYFILE_EXCL, COPYFILE_FICLONE_FORCE = constants_1.constants.COPYFILE_FICLONE_FORCE;\nvar _a = pathModule.posix ? pathModule.posix : pathModule, sep = _a.sep, relative = _a.relative, join = _a.join, dirname = _a.dirname;\nvar isWin = process_1.default.platform === 'win32';\nvar kMinPoolSpace = 128;\n// const kMaxLength = require('buffer').kMaxLength;\n// ---------------------------------------- Error messages\n// TODO: Use `internal/errors.js` in the future.\nvar ERRSTR = {\n PATH_STR: 'path must be a string or Buffer',\n // FD: 'file descriptor must be a unsigned 32-bit integer',\n FD: 'fd must be a file descriptor',\n MODE_INT: 'mode must be an int',\n CB: 'callback must be a function',\n UID: 'uid must be an unsigned int',\n GID: 'gid must be an unsigned int',\n LEN: 'len must be an integer',\n ATIME: 'atime must be an integer',\n MTIME: 'mtime must be an integer',\n PREFIX: 'filename prefix is required',\n BUFFER: 'buffer must be an instance of Buffer or StaticBuffer',\n OFFSET: 'offset must be an integer',\n LENGTH: 'length must be an integer',\n POSITION: 'position must be an integer',\n};\nvar ERRSTR_OPTS = function (tipeof) { return \"Expected options to be either an object or a string, but got \".concat(tipeof, \" instead\"); };\n// const ERRSTR_FLAG = flag => `Unknown file open flag: ${flag}`;\nvar ENOENT = 'ENOENT';\nvar EBADF = 'EBADF';\nvar EINVAL = 'EINVAL';\nvar EPERM = 'EPERM';\nvar EPROTO = 'EPROTO';\nvar EEXIST = 'EEXIST';\nvar ENOTDIR = 'ENOTDIR';\nvar EMFILE = 'EMFILE';\nvar EACCES = 'EACCES';\nvar EISDIR = 'EISDIR';\nvar ENOTEMPTY = 'ENOTEMPTY';\nvar ENOSYS = 'ENOSYS';\nvar ERR_FS_EISDIR = 'ERR_FS_EISDIR';\nfunction formatError(errorCode, func, path, path2) {\n if (func === void 0) { func = ''; }\n if (path === void 0) { path = ''; }\n if (path2 === void 0) { path2 = ''; }\n var pathFormatted = '';\n if (path)\n pathFormatted = \" '\".concat(path, \"'\");\n if (path2)\n pathFormatted += \" -> '\".concat(path2, \"'\");\n switch (errorCode) {\n case ENOENT:\n return \"ENOENT: no such file or directory, \".concat(func).concat(pathFormatted);\n case EBADF:\n return \"EBADF: bad file descriptor, \".concat(func).concat(pathFormatted);\n case EINVAL:\n return \"EINVAL: invalid argument, \".concat(func).concat(pathFormatted);\n case EPERM:\n return \"EPERM: operation not permitted, \".concat(func).concat(pathFormatted);\n case EPROTO:\n return \"EPROTO: protocol error, \".concat(func).concat(pathFormatted);\n case EEXIST:\n return \"EEXIST: file already exists, \".concat(func).concat(pathFormatted);\n case ENOTDIR:\n return \"ENOTDIR: not a directory, \".concat(func).concat(pathFormatted);\n case EISDIR:\n return \"EISDIR: illegal operation on a directory, \".concat(func).concat(pathFormatted);\n case EACCES:\n return \"EACCES: permission denied, \".concat(func).concat(pathFormatted);\n case ENOTEMPTY:\n return \"ENOTEMPTY: directory not empty, \".concat(func).concat(pathFormatted);\n case EMFILE:\n return \"EMFILE: too many open files, \".concat(func).concat(pathFormatted);\n case ENOSYS:\n return \"ENOSYS: function not implemented, \".concat(func).concat(pathFormatted);\n case ERR_FS_EISDIR:\n return \"[ERR_FS_EISDIR]: Path is a directory: \".concat(func, \" returned EISDIR (is a directory) \").concat(path);\n default:\n return \"\".concat(errorCode, \": error occurred, \").concat(func).concat(pathFormatted);\n }\n}\nfunction createError(errorCode, func, path, path2, Constructor) {\n if (func === void 0) { func = ''; }\n if (path === void 0) { path = ''; }\n if (path2 === void 0) { path2 = ''; }\n if (Constructor === void 0) { Constructor = Error; }\n var error = new Constructor(formatError(errorCode, func, path, path2));\n error.code = errorCode;\n if (path) {\n error.path = path;\n }\n return error;\n}\n// ---------------------------------------- Flags\n// List of file `flags` as defined by Node.\nvar FLAGS;\n(function (FLAGS) {\n // Open file for reading. An exception occurs if the file does not exist.\n FLAGS[FLAGS[\"r\"] = O_RDONLY] = \"r\";\n // Open file for reading and writing. An exception occurs if the file does not exist.\n FLAGS[FLAGS[\"r+\"] = O_RDWR] = \"r+\";\n // Open file for reading in synchronous mode. Instructs the operating system to bypass the local file system cache.\n FLAGS[FLAGS[\"rs\"] = O_RDONLY | O_SYNC] = \"rs\";\n FLAGS[FLAGS[\"sr\"] = FLAGS.rs] = \"sr\";\n // Open file for reading and writing, telling the OS to open it synchronously. See notes for 'rs' about using this with caution.\n FLAGS[FLAGS[\"rs+\"] = O_RDWR | O_SYNC] = \"rs+\";\n FLAGS[FLAGS[\"sr+\"] = FLAGS['rs+']] = \"sr+\";\n // Open file for writing. The file is created (if it does not exist) or truncated (if it exists).\n FLAGS[FLAGS[\"w\"] = O_WRONLY | O_CREAT | O_TRUNC] = \"w\";\n // Like 'w' but fails if path exists.\n FLAGS[FLAGS[\"wx\"] = O_WRONLY | O_CREAT | O_TRUNC | O_EXCL] = \"wx\";\n FLAGS[FLAGS[\"xw\"] = FLAGS.wx] = \"xw\";\n // Open file for reading and writing. The file is created (if it does not exist) or truncated (if it exists).\n FLAGS[FLAGS[\"w+\"] = O_RDWR | O_CREAT | O_TRUNC] = \"w+\";\n // Like 'w+' but fails if path exists.\n FLAGS[FLAGS[\"wx+\"] = O_RDWR | O_CREAT | O_TRUNC | O_EXCL] = \"wx+\";\n FLAGS[FLAGS[\"xw+\"] = FLAGS['wx+']] = \"xw+\";\n // Open file for appending. The file is created if it does not exist.\n FLAGS[FLAGS[\"a\"] = O_WRONLY | O_APPEND | O_CREAT] = \"a\";\n // Like 'a' but fails if path exists.\n FLAGS[FLAGS[\"ax\"] = O_WRONLY | O_APPEND | O_CREAT | O_EXCL] = \"ax\";\n FLAGS[FLAGS[\"xa\"] = FLAGS.ax] = \"xa\";\n // Open file for reading and appending. The file is created if it does not exist.\n FLAGS[FLAGS[\"a+\"] = O_RDWR | O_APPEND | O_CREAT] = \"a+\";\n // Like 'a+' but fails if path exists.\n FLAGS[FLAGS[\"ax+\"] = O_RDWR | O_APPEND | O_CREAT | O_EXCL] = \"ax+\";\n FLAGS[FLAGS[\"xa+\"] = FLAGS['ax+']] = \"xa+\";\n})(FLAGS = exports.FLAGS || (exports.FLAGS = {}));\nfunction flagsToNumber(flags) {\n if (typeof flags === 'number')\n return flags;\n if (typeof flags === 'string') {\n var flagsNum = FLAGS[flags];\n if (typeof flagsNum !== 'undefined')\n return flagsNum;\n }\n // throw new TypeError(formatError(ERRSTR_FLAG(flags)));\n throw new errors.TypeError('ERR_INVALID_OPT_VALUE', 'flags', flags);\n}\nexports.flagsToNumber = flagsToNumber;\n// ---------------------------------------- Options\nfunction getOptions(defaults, options) {\n var opts;\n if (!options)\n return defaults;\n else {\n var tipeof = typeof options;\n switch (tipeof) {\n case 'string':\n opts = Object.assign({}, defaults, { encoding: options });\n break;\n case 'object':\n opts = Object.assign({}, defaults, options);\n break;\n default:\n throw TypeError(ERRSTR_OPTS(tipeof));\n }\n }\n if (opts.encoding !== 'buffer')\n (0, encoding_1.assertEncoding)(opts.encoding);\n return opts;\n}\nfunction optsGenerator(defaults) {\n return function (options) { return getOptions(defaults, options); };\n}\nfunction validateCallback(callback) {\n if (typeof callback !== 'function')\n throw TypeError(ERRSTR.CB);\n return callback;\n}\nfunction optsAndCbGenerator(getOpts) {\n return function (options, callback) {\n return typeof options === 'function' ? [getOpts(), options] : [getOpts(options), validateCallback(callback)];\n };\n}\nvar optsDefaults = {\n encoding: 'utf8',\n};\nvar getDefaultOpts = optsGenerator(optsDefaults);\nvar getDefaultOptsAndCb = optsAndCbGenerator(getDefaultOpts);\nvar readFileOptsDefaults = {\n flag: 'r',\n};\nvar getReadFileOptions = optsGenerator(readFileOptsDefaults);\nvar writeFileDefaults = {\n encoding: 'utf8',\n mode: 438 /* MODE.DEFAULT */,\n flag: FLAGS[FLAGS.w],\n};\nvar getWriteFileOptions = optsGenerator(writeFileDefaults);\nvar appendFileDefaults = {\n encoding: 'utf8',\n mode: 438 /* MODE.DEFAULT */,\n flag: FLAGS[FLAGS.a],\n};\nvar getAppendFileOpts = optsGenerator(appendFileDefaults);\nvar getAppendFileOptsAndCb = optsAndCbGenerator(getAppendFileOpts);\nvar realpathDefaults = optsDefaults;\nvar getRealpathOptions = optsGenerator(realpathDefaults);\nvar getRealpathOptsAndCb = optsAndCbGenerator(getRealpathOptions);\nvar mkdirDefaults = {\n mode: 511 /* MODE.DIR */,\n recursive: false,\n};\nvar getMkdirOptions = function (options) {\n if (typeof options === 'number')\n return Object.assign({}, mkdirDefaults, { mode: options });\n return Object.assign({}, mkdirDefaults, options);\n};\nvar rmdirDefaults = {\n recursive: false,\n};\nvar getRmdirOptions = function (options) {\n return Object.assign({}, rmdirDefaults, options);\n};\nvar getRmOpts = optsGenerator(optsDefaults);\nvar getRmOptsAndCb = optsAndCbGenerator(getRmOpts);\nvar readdirDefaults = {\n encoding: 'utf8',\n withFileTypes: false,\n};\nvar getReaddirOptions = optsGenerator(readdirDefaults);\nvar getReaddirOptsAndCb = optsAndCbGenerator(getReaddirOptions);\nvar statDefaults = {\n bigint: false,\n};\nvar getStatOptions = function (options) {\n if (options === void 0) { options = {}; }\n return Object.assign({}, statDefaults, options);\n};\nvar getStatOptsAndCb = function (options, callback) {\n return typeof options === 'function' ? [getStatOptions(), options] : [getStatOptions(options), validateCallback(callback)];\n};\n// ---------------------------------------- Utility functions\nfunction getPathFromURLPosix(url) {\n if (url.hostname !== '') {\n throw new errors.TypeError('ERR_INVALID_FILE_URL_HOST', process_1.default.platform);\n }\n var pathname = url.pathname;\n for (var n = 0; n < pathname.length; n++) {\n if (pathname[n] === '%') {\n var third = pathname.codePointAt(n + 2) | 0x20;\n if (pathname[n + 1] === '2' && third === 102) {\n throw new errors.TypeError('ERR_INVALID_FILE_URL_PATH', 'must not include encoded / characters');\n }\n }\n }\n return decodeURIComponent(pathname);\n}\nfunction pathToFilename(path) {\n if (typeof path !== 'string' && !buffer_1.Buffer.isBuffer(path)) {\n try {\n if (!(path instanceof require('url').URL))\n throw new TypeError(ERRSTR.PATH_STR);\n }\n catch (err) {\n throw new TypeError(ERRSTR.PATH_STR);\n }\n path = getPathFromURLPosix(path);\n }\n var pathString = String(path);\n nullCheck(pathString);\n // return slash(pathString);\n return pathString;\n}\nexports.pathToFilename = pathToFilename;\nvar resolve = function (filename, base) {\n if (base === void 0) { base = process_1.default.cwd(); }\n return resolveCrossPlatform(base, filename);\n};\nif (isWin) {\n var _resolve_1 = resolve;\n var unixify_1 = require('fs-monkey/lib/correctPath').unixify;\n resolve = function (filename, base) { return unixify_1(_resolve_1(filename, base)); };\n}\nfunction filenameToSteps(filename, base) {\n var fullPath = resolve(filename, base);\n var fullPathSansSlash = fullPath.substring(1);\n if (!fullPathSansSlash)\n return [];\n return fullPathSansSlash.split(sep);\n}\nexports.filenameToSteps = filenameToSteps;\nfunction pathToSteps(path) {\n return filenameToSteps(pathToFilename(path));\n}\nexports.pathToSteps = pathToSteps;\nfunction dataToStr(data, encoding) {\n if (encoding === void 0) { encoding = encoding_1.ENCODING_UTF8; }\n if (buffer_1.Buffer.isBuffer(data))\n return data.toString(encoding);\n else if (data instanceof Uint8Array)\n return (0, buffer_1.bufferFrom)(data).toString(encoding);\n else\n return String(data);\n}\nexports.dataToStr = dataToStr;\nfunction dataToBuffer(data, encoding) {\n if (encoding === void 0) { encoding = encoding_1.ENCODING_UTF8; }\n if (buffer_1.Buffer.isBuffer(data))\n return data;\n else if (data instanceof Uint8Array)\n return (0, buffer_1.bufferFrom)(data);\n else\n return (0, buffer_1.bufferFrom)(String(data), encoding);\n}\nexports.dataToBuffer = dataToBuffer;\nfunction bufferToEncoding(buffer, encoding) {\n if (!encoding || encoding === 'buffer')\n return buffer;\n else\n return buffer.toString(encoding);\n}\nexports.bufferToEncoding = bufferToEncoding;\nfunction nullCheck(path, callback) {\n if (('' + path).indexOf('\\u0000') !== -1) {\n var er = new Error('Path must be a string without null bytes');\n er.code = ENOENT;\n if (typeof callback !== 'function')\n throw er;\n process_1.default.nextTick(callback, er);\n return false;\n }\n return true;\n}\nfunction _modeToNumber(mode, def) {\n if (typeof mode === 'number')\n return mode;\n if (typeof mode === 'string')\n return parseInt(mode, 8);\n if (def)\n return modeToNumber(def);\n return undefined;\n}\nfunction modeToNumber(mode, def) {\n var result = _modeToNumber(mode, def);\n if (typeof result !== 'number' || isNaN(result))\n throw new TypeError(ERRSTR.MODE_INT);\n return result;\n}\nfunction isFd(path) {\n return path >>> 0 === path;\n}\nfunction validateFd(fd) {\n if (!isFd(fd))\n throw TypeError(ERRSTR.FD);\n}\n// converts Date or number to a fractional UNIX timestamp\nfunction toUnixTimestamp(time) {\n // tslint:disable-next-line triple-equals\n if (typeof time === 'string' && +time == time) {\n return +time;\n }\n if (time instanceof Date) {\n return time.getTime() / 1000;\n }\n if (isFinite(time)) {\n if (time < 0) {\n return Date.now() / 1000;\n }\n return time;\n }\n throw new Error('Cannot parse time: ' + time);\n}\nexports.toUnixTimestamp = toUnixTimestamp;\nfunction validateUid(uid) {\n if (typeof uid !== 'number')\n throw TypeError(ERRSTR.UID);\n}\nfunction validateGid(gid) {\n if (typeof gid !== 'number')\n throw TypeError(ERRSTR.GID);\n}\nfunction flattenJSON(nestedJSON) {\n var flatJSON = {};\n function flatten(pathPrefix, node) {\n for (var path in node) {\n var contentOrNode = node[path];\n var joinedPath = join(pathPrefix, path);\n if (typeof contentOrNode === 'string') {\n flatJSON[joinedPath] = contentOrNode;\n }\n else if (typeof contentOrNode === 'object' && contentOrNode !== null && Object.keys(contentOrNode).length > 0) {\n // empty directories need an explicit entry and therefore get handled in `else`, non-empty ones are implicitly considered\n flatten(joinedPath, contentOrNode);\n }\n else {\n // without this branch null, empty-object or non-object entries would not be handled in the same way\n // by both fromJSON() and fromNestedJSON()\n flatJSON[joinedPath] = null;\n }\n }\n }\n flatten('', nestedJSON);\n return flatJSON;\n}\n/**\n * `Volume` represents a file system.\n */\nvar Volume = /** @class */ (function () {\n function Volume(props) {\n if (props === void 0) { props = {}; }\n // I-node number counter.\n this.ino = 0;\n // A mapping for i-node numbers to i-nodes (`Node`);\n this.inodes = {};\n // List of released i-node numbers, for reuse.\n this.releasedInos = [];\n // A mapping for file descriptors to `File`s.\n this.fds = {};\n // A list of reusable (opened and closed) file descriptors, that should be\n // used first before creating a new file descriptor.\n this.releasedFds = [];\n // Max number of open files.\n this.maxFiles = 10000;\n // Current number of open files.\n this.openFiles = 0;\n this.promisesApi = (0, promises_1.default)(this);\n this.statWatchers = {};\n this.props = Object.assign({ Node: node_1.Node, Link: node_1.Link, File: node_1.File }, props);\n var root = this.createLink();\n root.setNode(this.createNode(true));\n var self = this; // tslint:disable-line no-this-assignment\n this.StatWatcher = /** @class */ (function (_super) {\n __extends(StatWatcher, _super);\n function StatWatcher() {\n return _super.call(this, self) || this;\n }\n return StatWatcher;\n }(StatWatcher));\n var _ReadStream = FsReadStream;\n this.ReadStream = /** @class */ (function (_super) {\n __extends(class_1, _super);\n function class_1() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return _super.apply(this, __spreadArray([self], args, false)) || this;\n }\n return class_1;\n }(_ReadStream));\n var _WriteStream = FsWriteStream;\n this.WriteStream = /** @class */ (function (_super) {\n __extends(class_2, _super);\n function class_2() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return _super.apply(this, __spreadArray([self], args, false)) || this;\n }\n return class_2;\n }(_WriteStream));\n this.FSWatcher = /** @class */ (function (_super) {\n __extends(FSWatcher, _super);\n function FSWatcher() {\n return _super.call(this, self) || this;\n }\n return FSWatcher;\n }(FSWatcher));\n // root.setChild('.', root);\n // root.getNode().nlink++;\n // root.setChild('..', root);\n // root.getNode().nlink++;\n this.root = root;\n }\n Volume.fromJSON = function (json, cwd) {\n var vol = new Volume();\n vol.fromJSON(json, cwd);\n return vol;\n };\n Volume.fromNestedJSON = function (json, cwd) {\n var vol = new Volume();\n vol.fromNestedJSON(json, cwd);\n return vol;\n };\n Object.defineProperty(Volume.prototype, \"promises\", {\n get: function () {\n if (this.promisesApi === null)\n throw new Error('Promise is not supported in this environment.');\n return this.promisesApi;\n },\n enumerable: false,\n configurable: true\n });\n Volume.prototype.createLink = function (parent, name, isDirectory, perm) {\n if (isDirectory === void 0) { isDirectory = false; }\n if (!parent) {\n return new this.props.Link(this, null, '');\n }\n if (!name) {\n throw new Error('createLink: name cannot be empty');\n }\n return parent.createChild(name, this.createNode(isDirectory, perm));\n };\n Volume.prototype.deleteLink = function (link) {\n var parent = link.parent;\n if (parent) {\n parent.deleteChild(link);\n return true;\n }\n return false;\n };\n Volume.prototype.newInoNumber = function () {\n var releasedFd = this.releasedInos.pop();\n if (releasedFd)\n return releasedFd;\n else {\n this.ino = (this.ino + 1) % 0xffffffff;\n return this.ino;\n }\n };\n Volume.prototype.newFdNumber = function () {\n var releasedFd = this.releasedFds.pop();\n return typeof releasedFd === 'number' ? releasedFd : Volume.fd--;\n };\n Volume.prototype.createNode = function (isDirectory, perm) {\n if (isDirectory === void 0) { isDirectory = false; }\n var node = new this.props.Node(this.newInoNumber(), perm);\n if (isDirectory)\n node.setIsDirectory();\n this.inodes[node.ino] = node;\n return node;\n };\n Volume.prototype.getNode = function (ino) {\n return this.inodes[ino];\n };\n Volume.prototype.deleteNode = function (node) {\n node.del();\n delete this.inodes[node.ino];\n this.releasedInos.push(node.ino);\n };\n // Generates 6 character long random string, used by `mkdtemp`.\n Volume.prototype.genRndStr = function () {\n var str = (Math.random() + 1).toString(36).substring(2, 8);\n if (str.length === 6)\n return str;\n else\n return this.genRndStr();\n };\n // Returns a `Link` (hard link) referenced by path \"split\" into steps.\n Volume.prototype.getLink = function (steps) {\n return this.root.walk(steps);\n };\n // Just link `getLink`, but throws a correct user error, if link to found.\n Volume.prototype.getLinkOrThrow = function (filename, funcName) {\n var steps = filenameToSteps(filename);\n var link = this.getLink(steps);\n if (!link)\n throw createError(ENOENT, funcName, filename);\n return link;\n };\n // Just like `getLink`, but also dereference/resolves symbolic links.\n Volume.prototype.getResolvedLink = function (filenameOrSteps) {\n var steps = typeof filenameOrSteps === 'string' ? filenameToSteps(filenameOrSteps) : filenameOrSteps;\n var link = this.root;\n var i = 0;\n while (i < steps.length) {\n var step = steps[i];\n link = link.getChild(step);\n if (!link)\n return null;\n var node = link.getNode();\n if (node.isSymlink()) {\n steps = node.symlink.concat(steps.slice(i + 1));\n link = this.root;\n i = 0;\n continue;\n }\n i++;\n }\n return link;\n };\n // Just like `getLinkOrThrow`, but also dereference/resolves symbolic links.\n Volume.prototype.getResolvedLinkOrThrow = function (filename, funcName) {\n var link = this.getResolvedLink(filename);\n if (!link)\n throw createError(ENOENT, funcName, filename);\n return link;\n };\n Volume.prototype.resolveSymlinks = function (link) {\n // let node: Node = link.getNode();\n // while(link && node.isSymlink()) {\n // link = this.getLink(node.symlink);\n // if(!link) return null;\n // node = link.getNode();\n // }\n // return link;\n return this.getResolvedLink(link.steps.slice(1));\n };\n // Just like `getLinkOrThrow`, but also verifies that the link is a directory.\n Volume.prototype.getLinkAsDirOrThrow = function (filename, funcName) {\n var link = this.getLinkOrThrow(filename, funcName);\n if (!link.getNode().isDirectory())\n throw createError(ENOTDIR, funcName, filename);\n return link;\n };\n // Get the immediate parent directory of the link.\n Volume.prototype.getLinkParent = function (steps) {\n return this.root.walk(steps, steps.length - 1);\n };\n Volume.prototype.getLinkParentAsDirOrThrow = function (filenameOrSteps, funcName) {\n var steps = filenameOrSteps instanceof Array ? filenameOrSteps : filenameToSteps(filenameOrSteps);\n var link = this.getLinkParent(steps);\n if (!link)\n throw createError(ENOENT, funcName, sep + steps.join(sep));\n if (!link.getNode().isDirectory())\n throw createError(ENOTDIR, funcName, sep + steps.join(sep));\n return link;\n };\n Volume.prototype.getFileByFd = function (fd) {\n return this.fds[String(fd)];\n };\n Volume.prototype.getFileByFdOrThrow = function (fd, funcName) {\n if (!isFd(fd))\n throw TypeError(ERRSTR.FD);\n var file = this.getFileByFd(fd);\n if (!file)\n throw createError(EBADF, funcName);\n return file;\n };\n /**\n * @todo This is not used anymore. Remove.\n */\n /*\n private getNodeByIdOrCreate(id: TFileId, flags: number, perm: number): Node {\n if (typeof id === 'number') {\n const file = this.getFileByFd(id);\n if (!file) throw Error('File nto found');\n return file.node;\n } else {\n const steps = pathToSteps(id as PathLike);\n let link = this.getLink(steps);\n if (link) return link.getNode();\n \n // Try creating a node if not found.\n if (flags & O_CREAT) {\n const dirLink = this.getLinkParent(steps);\n if (dirLink) {\n const name = steps[steps.length - 1];\n link = this.createLink(dirLink, name, false, perm);\n return link.getNode();\n }\n }\n \n throw createError(ENOENT, 'getNodeByIdOrCreate', pathToFilename(id));\n }\n }\n */\n Volume.prototype.wrapAsync = function (method, args, callback) {\n var _this = this;\n validateCallback(callback);\n (0, setImmediate_1.default)(function () {\n var result;\n try {\n result = method.apply(_this, args);\n }\n catch (err) {\n callback(err);\n return;\n }\n callback(null, result);\n });\n };\n Volume.prototype._toJSON = function (link, json, path) {\n var _a;\n if (link === void 0) { link = this.root; }\n if (json === void 0) { json = {}; }\n var isEmpty = true;\n var children = link.children;\n if (link.getNode().isFile()) {\n children = (_a = {}, _a[link.getName()] = link.parent.getChild(link.getName()), _a);\n link = link.parent;\n }\n for (var name_1 in children) {\n isEmpty = false;\n var child = link.getChild(name_1);\n if (!child) {\n throw new Error('_toJSON: unexpected undefined');\n }\n var node = child.getNode();\n if (node.isFile()) {\n var filename = child.getPath();\n if (path)\n filename = relative(path, filename);\n json[filename] = node.getString();\n }\n else if (node.isDirectory()) {\n this._toJSON(child, json, path);\n }\n }\n var dirPath = link.getPath();\n if (path)\n dirPath = relative(path, dirPath);\n if (dirPath && isEmpty) {\n json[dirPath] = null;\n }\n return json;\n };\n Volume.prototype.toJSON = function (paths, json, isRelative) {\n if (json === void 0) { json = {}; }\n if (isRelative === void 0) { isRelative = false; }\n var links = [];\n if (paths) {\n if (!(paths instanceof Array))\n paths = [paths];\n for (var _i = 0, paths_1 = paths; _i < paths_1.length; _i++) {\n var path = paths_1[_i];\n var filename = pathToFilename(path);\n var link = this.getResolvedLink(filename);\n if (!link)\n continue;\n links.push(link);\n }\n }\n else {\n links.push(this.root);\n }\n if (!links.length)\n return json;\n for (var _a = 0, links_1 = links; _a < links_1.length; _a++) {\n var link = links_1[_a];\n this._toJSON(link, json, isRelative ? link.getPath() : '');\n }\n return json;\n };\n Volume.prototype.fromJSON = function (json, cwd) {\n if (cwd === void 0) { cwd = process_1.default.cwd(); }\n for (var filename in json) {\n var data = json[filename];\n filename = resolve(filename, cwd);\n if (typeof data === 'string') {\n var dir = dirname(filename);\n this.mkdirpBase(dir, 511 /* MODE.DIR */);\n this.writeFileSync(filename, data);\n }\n else {\n this.mkdirpBase(filename, 511 /* MODE.DIR */);\n }\n }\n };\n Volume.prototype.fromNestedJSON = function (json, cwd) {\n this.fromJSON(flattenJSON(json), cwd);\n };\n Volume.prototype.reset = function () {\n this.ino = 0;\n this.inodes = {};\n this.releasedInos = [];\n this.fds = {};\n this.releasedFds = [];\n this.openFiles = 0;\n this.root = this.createLink();\n this.root.setNode(this.createNode(true));\n };\n // Legacy interface\n Volume.prototype.mountSync = function (mountpoint, json) {\n this.fromJSON(json, mountpoint);\n };\n Volume.prototype.openLink = function (link, flagsNum, resolveSymlinks) {\n if (resolveSymlinks === void 0) { resolveSymlinks = true; }\n if (this.openFiles >= this.maxFiles) {\n // Too many open files.\n throw createError(EMFILE, 'open', link.getPath());\n }\n // Resolve symlinks.\n var realLink = link;\n if (resolveSymlinks)\n realLink = this.resolveSymlinks(link);\n if (!realLink)\n throw createError(ENOENT, 'open', link.getPath());\n var node = realLink.getNode();\n // Check whether node is a directory\n if (node.isDirectory()) {\n if ((flagsNum & (O_RDONLY | O_RDWR | O_WRONLY)) !== O_RDONLY)\n throw createError(EISDIR, 'open', link.getPath());\n }\n else {\n if (flagsNum & O_DIRECTORY)\n throw createError(ENOTDIR, 'open', link.getPath());\n }\n // Check node permissions\n if (!(flagsNum & O_WRONLY)) {\n if (!node.canRead()) {\n throw createError(EACCES, 'open', link.getPath());\n }\n }\n if (flagsNum & O_RDWR) {\n }\n var file = new this.props.File(link, node, flagsNum, this.newFdNumber());\n this.fds[file.fd] = file;\n this.openFiles++;\n if (flagsNum & O_TRUNC)\n file.truncate();\n return file;\n };\n Volume.prototype.openFile = function (filename, flagsNum, modeNum, resolveSymlinks) {\n if (resolveSymlinks === void 0) { resolveSymlinks = true; }\n var steps = filenameToSteps(filename);\n var link = resolveSymlinks ? this.getResolvedLink(steps) : this.getLink(steps);\n if (link && flagsNum & O_EXCL)\n throw createError(EEXIST, 'open', filename);\n // Try creating a new file, if it does not exist.\n if (!link && flagsNum & O_CREAT) {\n // const dirLink: Link = this.getLinkParent(steps);\n var dirLink = this.getResolvedLink(steps.slice(0, steps.length - 1));\n // if(!dirLink) throw createError(ENOENT, 'open', filename);\n if (!dirLink)\n throw createError(ENOENT, 'open', sep + steps.join(sep));\n if (flagsNum & O_CREAT && typeof modeNum === 'number') {\n link = this.createLink(dirLink, steps[steps.length - 1], false, modeNum);\n }\n }\n if (link)\n return this.openLink(link, flagsNum, resolveSymlinks);\n throw createError(ENOENT, 'open', filename);\n };\n Volume.prototype.openBase = function (filename, flagsNum, modeNum, resolveSymlinks) {\n if (resolveSymlinks === void 0) { resolveSymlinks = true; }\n var file = this.openFile(filename, flagsNum, modeNum, resolveSymlinks);\n if (!file)\n throw createError(ENOENT, 'open', filename);\n return file.fd;\n };\n Volume.prototype.openSync = function (path, flags, mode) {\n if (mode === void 0) { mode = 438 /* MODE.DEFAULT */; }\n // Validate (1) mode; (2) path; (3) flags - in that order.\n var modeNum = modeToNumber(mode);\n var fileName = pathToFilename(path);\n var flagsNum = flagsToNumber(flags);\n return this.openBase(fileName, flagsNum, modeNum);\n };\n Volume.prototype.open = function (path, flags, a, b) {\n var mode = a;\n var callback = b;\n if (typeof a === 'function') {\n mode = 438 /* MODE.DEFAULT */;\n callback = a;\n }\n mode = mode || 438 /* MODE.DEFAULT */;\n var modeNum = modeToNumber(mode);\n var fileName = pathToFilename(path);\n var flagsNum = flagsToNumber(flags);\n this.wrapAsync(this.openBase, [fileName, flagsNum, modeNum], callback);\n };\n Volume.prototype.closeFile = function (file) {\n if (!this.fds[file.fd])\n return;\n this.openFiles--;\n delete this.fds[file.fd];\n this.releasedFds.push(file.fd);\n };\n Volume.prototype.closeSync = function (fd) {\n validateFd(fd);\n var file = this.getFileByFdOrThrow(fd, 'close');\n this.closeFile(file);\n };\n Volume.prototype.close = function (fd, callback) {\n validateFd(fd);\n this.wrapAsync(this.closeSync, [fd], callback);\n };\n Volume.prototype.openFileOrGetById = function (id, flagsNum, modeNum) {\n if (typeof id === 'number') {\n var file = this.fds[id];\n if (!file)\n throw createError(ENOENT);\n return file;\n }\n else {\n return this.openFile(pathToFilename(id), flagsNum, modeNum);\n }\n };\n Volume.prototype.readBase = function (fd, buffer, offset, length, position) {\n var file = this.getFileByFdOrThrow(fd);\n return file.read(buffer, Number(offset), Number(length), position);\n };\n Volume.prototype.readSync = function (fd, buffer, offset, length, position) {\n validateFd(fd);\n return this.readBase(fd, buffer, offset, length, position);\n };\n Volume.prototype.read = function (fd, buffer, offset, length, position, callback) {\n var _this = this;\n validateCallback(callback);\n // This `if` branch is from Node.js\n if (length === 0) {\n return process_1.default.nextTick(function () {\n if (callback)\n callback(null, 0, buffer);\n });\n }\n (0, setImmediate_1.default)(function () {\n try {\n var bytes = _this.readBase(fd, buffer, offset, length, position);\n callback(null, bytes, buffer);\n }\n catch (err) {\n callback(err);\n }\n });\n };\n Volume.prototype.readFileBase = function (id, flagsNum, encoding) {\n var result;\n var isUserFd = typeof id === 'number';\n var userOwnsFd = isUserFd && isFd(id);\n var fd;\n if (userOwnsFd)\n fd = id;\n else {\n var filename = pathToFilename(id);\n var steps = filenameToSteps(filename);\n var link = this.getResolvedLink(steps);\n if (link) {\n var node = link.getNode();\n if (node.isDirectory())\n throw createError(EISDIR, 'open', link.getPath());\n }\n fd = this.openSync(id, flagsNum);\n }\n try {\n result = bufferToEncoding(this.getFileByFdOrThrow(fd).getBuffer(), encoding);\n }\n finally {\n if (!userOwnsFd) {\n this.closeSync(fd);\n }\n }\n return result;\n };\n Volume.prototype.readFileSync = function (file, options) {\n var opts = getReadFileOptions(options);\n var flagsNum = flagsToNumber(opts.flag);\n return this.readFileBase(file, flagsNum, opts.encoding);\n };\n Volume.prototype.readFile = function (id, a, b) {\n var _a = optsAndCbGenerator(getReadFileOptions)(a, b), opts = _a[0], callback = _a[1];\n var flagsNum = flagsToNumber(opts.flag);\n this.wrapAsync(this.readFileBase, [id, flagsNum, opts.encoding], callback);\n };\n Volume.prototype.writeBase = function (fd, buf, offset, length, position) {\n var file = this.getFileByFdOrThrow(fd, 'write');\n return file.write(buf, offset, length, position);\n };\n Volume.prototype.writeSync = function (fd, a, b, c, d) {\n validateFd(fd);\n var encoding;\n var offset;\n var length;\n var position;\n var isBuffer = typeof a !== 'string';\n if (isBuffer) {\n offset = (b || 0) | 0;\n length = c;\n position = d;\n }\n else {\n position = b;\n encoding = c;\n }\n var buf = dataToBuffer(a, encoding);\n if (isBuffer) {\n if (typeof length === 'undefined') {\n length = buf.length;\n }\n }\n else {\n offset = 0;\n length = buf.length;\n }\n return this.writeBase(fd, buf, offset, length, position);\n };\n Volume.prototype.write = function (fd, a, b, c, d, e) {\n var _this = this;\n validateFd(fd);\n var offset;\n var length;\n var position;\n var encoding;\n var callback;\n var tipa = typeof a;\n var tipb = typeof b;\n var tipc = typeof c;\n var tipd = typeof d;\n if (tipa !== 'string') {\n if (tipb === 'function') {\n callback = b;\n }\n else if (tipc === 'function') {\n offset = b | 0;\n callback = c;\n }\n else if (tipd === 'function') {\n offset = b | 0;\n length = c;\n callback = d;\n }\n else {\n offset = b | 0;\n length = c;\n position = d;\n callback = e;\n }\n }\n else {\n if (tipb === 'function') {\n callback = b;\n }\n else if (tipc === 'function') {\n position = b;\n callback = c;\n }\n else if (tipd === 'function') {\n position = b;\n encoding = c;\n callback = d;\n }\n }\n var buf = dataToBuffer(a, encoding);\n if (tipa !== 'string') {\n if (typeof length === 'undefined')\n length = buf.length;\n }\n else {\n offset = 0;\n length = buf.length;\n }\n var cb = validateCallback(callback);\n (0, setImmediate_1.default)(function () {\n try {\n var bytes = _this.writeBase(fd, buf, offset, length, position);\n if (tipa !== 'string') {\n cb(null, bytes, buf);\n }\n else {\n cb(null, bytes, a);\n }\n }\n catch (err) {\n cb(err);\n }\n });\n };\n Volume.prototype.writeFileBase = function (id, buf, flagsNum, modeNum) {\n // console.log('writeFileBase', id, buf, flagsNum, modeNum);\n // const node = this.getNodeByIdOrCreate(id, flagsNum, modeNum);\n // node.setBuffer(buf);\n var isUserFd = typeof id === 'number';\n var fd;\n if (isUserFd)\n fd = id;\n else {\n fd = this.openBase(pathToFilename(id), flagsNum, modeNum);\n // fd = this.openSync(id as PathLike, flagsNum, modeNum);\n }\n var offset = 0;\n var length = buf.length;\n var position = flagsNum & O_APPEND ? undefined : 0;\n try {\n while (length > 0) {\n var written = this.writeSync(fd, buf, offset, length, position);\n offset += written;\n length -= written;\n if (position !== undefined)\n position += written;\n }\n }\n finally {\n if (!isUserFd)\n this.closeSync(fd);\n }\n };\n Volume.prototype.writeFileSync = function (id, data, options) {\n var opts = getWriteFileOptions(options);\n var flagsNum = flagsToNumber(opts.flag);\n var modeNum = modeToNumber(opts.mode);\n var buf = dataToBuffer(data, opts.encoding);\n this.writeFileBase(id, buf, flagsNum, modeNum);\n };\n Volume.prototype.writeFile = function (id, data, a, b) {\n var options = a;\n var callback = b;\n if (typeof a === 'function') {\n options = writeFileDefaults;\n callback = a;\n }\n var cb = validateCallback(callback);\n var opts = getWriteFileOptions(options);\n var flagsNum = flagsToNumber(opts.flag);\n var modeNum = modeToNumber(opts.mode);\n var buf = dataToBuffer(data, opts.encoding);\n this.wrapAsync(this.writeFileBase, [id, buf, flagsNum, modeNum], cb);\n };\n Volume.prototype.linkBase = function (filename1, filename2) {\n var steps1 = filenameToSteps(filename1);\n var link1 = this.getLink(steps1);\n if (!link1)\n throw createError(ENOENT, 'link', filename1, filename2);\n var steps2 = filenameToSteps(filename2);\n // Check new link directory exists.\n var dir2 = this.getLinkParent(steps2);\n if (!dir2)\n throw createError(ENOENT, 'link', filename1, filename2);\n var name = steps2[steps2.length - 1];\n // Check if new file already exists.\n if (dir2.getChild(name))\n throw createError(EEXIST, 'link', filename1, filename2);\n var node = link1.getNode();\n node.nlink++;\n dir2.createChild(name, node);\n };\n Volume.prototype.copyFileBase = function (src, dest, flags) {\n var buf = this.readFileSync(src);\n if (flags & COPYFILE_EXCL) {\n if (this.existsSync(dest)) {\n throw createError(EEXIST, 'copyFile', src, dest);\n }\n }\n if (flags & COPYFILE_FICLONE_FORCE) {\n throw createError(ENOSYS, 'copyFile', src, dest);\n }\n this.writeFileBase(dest, buf, FLAGS.w, 438 /* MODE.DEFAULT */);\n };\n Volume.prototype.copyFileSync = function (src, dest, flags) {\n var srcFilename = pathToFilename(src);\n var destFilename = pathToFilename(dest);\n return this.copyFileBase(srcFilename, destFilename, (flags || 0) | 0);\n };\n Volume.prototype.copyFile = function (src, dest, a, b) {\n var srcFilename = pathToFilename(src);\n var destFilename = pathToFilename(dest);\n var flags;\n var callback;\n if (typeof a === 'function') {\n flags = 0;\n callback = a;\n }\n else {\n flags = a;\n callback = b;\n }\n validateCallback(callback);\n this.wrapAsync(this.copyFileBase, [srcFilename, destFilename, flags], callback);\n };\n Volume.prototype.linkSync = function (existingPath, newPath) {\n var existingPathFilename = pathToFilename(existingPath);\n var newPathFilename = pathToFilename(newPath);\n this.linkBase(existingPathFilename, newPathFilename);\n };\n Volume.prototype.link = function (existingPath, newPath, callback) {\n var existingPathFilename = pathToFilename(existingPath);\n var newPathFilename = pathToFilename(newPath);\n this.wrapAsync(this.linkBase, [existingPathFilename, newPathFilename], callback);\n };\n Volume.prototype.unlinkBase = function (filename) {\n var steps = filenameToSteps(filename);\n var link = this.getLink(steps);\n if (!link)\n throw createError(ENOENT, 'unlink', filename);\n // TODO: Check if it is file, dir, other...\n if (link.length)\n throw Error('Dir not empty...');\n this.deleteLink(link);\n var node = link.getNode();\n node.nlink--;\n // When all hard links to i-node are deleted, remove the i-node, too.\n if (node.nlink <= 0) {\n this.deleteNode(node);\n }\n };\n Volume.prototype.unlinkSync = function (path) {\n var filename = pathToFilename(path);\n this.unlinkBase(filename);\n };\n Volume.prototype.unlink = function (path, callback) {\n var filename = pathToFilename(path);\n this.wrapAsync(this.unlinkBase, [filename], callback);\n };\n Volume.prototype.symlinkBase = function (targetFilename, pathFilename) {\n var pathSteps = filenameToSteps(pathFilename);\n // Check if directory exists, where we about to create a symlink.\n var dirLink = this.getLinkParent(pathSteps);\n if (!dirLink)\n throw createError(ENOENT, 'symlink', targetFilename, pathFilename);\n var name = pathSteps[pathSteps.length - 1];\n // Check if new file already exists.\n if (dirLink.getChild(name))\n throw createError(EEXIST, 'symlink', targetFilename, pathFilename);\n // Create symlink.\n var symlink = dirLink.createChild(name);\n symlink.getNode().makeSymlink(filenameToSteps(targetFilename));\n return symlink;\n };\n // `type` argument works only on Windows.\n Volume.prototype.symlinkSync = function (target, path, type) {\n var targetFilename = pathToFilename(target);\n var pathFilename = pathToFilename(path);\n this.symlinkBase(targetFilename, pathFilename);\n };\n Volume.prototype.symlink = function (target, path, a, b) {\n var callback = validateCallback(typeof a === 'function' ? a : b);\n var targetFilename = pathToFilename(target);\n var pathFilename = pathToFilename(path);\n this.wrapAsync(this.symlinkBase, [targetFilename, pathFilename], callback);\n };\n Volume.prototype.realpathBase = function (filename, encoding) {\n var steps = filenameToSteps(filename);\n var realLink = this.getResolvedLink(steps);\n if (!realLink)\n throw createError(ENOENT, 'realpath', filename);\n return (0, encoding_1.strToEncoding)(realLink.getPath() || '/', encoding);\n };\n Volume.prototype.realpathSync = function (path, options) {\n return this.realpathBase(pathToFilename(path), getRealpathOptions(options).encoding);\n };\n Volume.prototype.realpath = function (path, a, b) {\n var _a = getRealpathOptsAndCb(a, b), opts = _a[0], callback = _a[1];\n var pathFilename = pathToFilename(path);\n this.wrapAsync(this.realpathBase, [pathFilename, opts.encoding], callback);\n };\n Volume.prototype.lstatBase = function (filename, bigint, throwIfNoEntry) {\n if (bigint === void 0) { bigint = false; }\n if (throwIfNoEntry === void 0) { throwIfNoEntry = false; }\n var link = this.getLink(filenameToSteps(filename));\n if (link) {\n return Stats_1.default.build(link.getNode(), bigint);\n }\n else if (!throwIfNoEntry) {\n return undefined;\n }\n else {\n throw createError(ENOENT, 'lstat', filename);\n }\n };\n Volume.prototype.lstatSync = function (path, options) {\n var _a = getStatOptions(options), _b = _a.throwIfNoEntry, throwIfNoEntry = _b === void 0 ? true : _b, _c = _a.bigint, bigint = _c === void 0 ? false : _c;\n return this.lstatBase(pathToFilename(path), bigint, throwIfNoEntry);\n };\n Volume.prototype.lstat = function (path, a, b) {\n var _a = getStatOptsAndCb(a, b), _b = _a[0], _c = _b.throwIfNoEntry, throwIfNoEntry = _c === void 0 ? true : _c, _d = _b.bigint, bigint = _d === void 0 ? false : _d, callback = _a[1];\n this.wrapAsync(this.lstatBase, [pathToFilename(path), bigint, throwIfNoEntry], callback);\n };\n Volume.prototype.statBase = function (filename, bigint, throwIfNoEntry) {\n if (bigint === void 0) { bigint = false; }\n if (throwIfNoEntry === void 0) { throwIfNoEntry = true; }\n var link = this.getResolvedLink(filenameToSteps(filename));\n if (link) {\n return Stats_1.default.build(link.getNode(), bigint);\n }\n else if (!throwIfNoEntry) {\n return undefined;\n }\n else {\n throw createError(ENOENT, 'stat', filename);\n }\n };\n Volume.prototype.statSync = function (path, options) {\n var _a = getStatOptions(options), _b = _a.bigint, bigint = _b === void 0 ? true : _b, _c = _a.throwIfNoEntry, throwIfNoEntry = _c === void 0 ? true : _c;\n return this.statBase(pathToFilename(path), bigint, throwIfNoEntry);\n };\n Volume.prototype.stat = function (path, a, b) {\n var _a = getStatOptsAndCb(a, b), _b = _a[0], _c = _b.bigint, bigint = _c === void 0 ? false : _c, _d = _b.throwIfNoEntry, throwIfNoEntry = _d === void 0 ? true : _d, callback = _a[1];\n this.wrapAsync(this.statBase, [pathToFilename(path), bigint, throwIfNoEntry], callback);\n };\n Volume.prototype.fstatBase = function (fd, bigint) {\n if (bigint === void 0) { bigint = false; }\n var file = this.getFileByFd(fd);\n if (!file)\n throw createError(EBADF, 'fstat');\n return Stats_1.default.build(file.node, bigint);\n };\n Volume.prototype.fstatSync = function (fd, options) {\n return this.fstatBase(fd, getStatOptions(options).bigint);\n };\n Volume.prototype.fstat = function (fd, a, b) {\n var _a = getStatOptsAndCb(a, b), opts = _a[0], callback = _a[1];\n this.wrapAsync(this.fstatBase, [fd, opts.bigint], callback);\n };\n Volume.prototype.renameBase = function (oldPathFilename, newPathFilename) {\n var link = this.getLink(filenameToSteps(oldPathFilename));\n if (!link)\n throw createError(ENOENT, 'rename', oldPathFilename, newPathFilename);\n // TODO: Check if it is directory, if non-empty, we cannot move it, right?\n var newPathSteps = filenameToSteps(newPathFilename);\n // Check directory exists for the new location.\n var newPathDirLink = this.getLinkParent(newPathSteps);\n if (!newPathDirLink)\n throw createError(ENOENT, 'rename', oldPathFilename, newPathFilename);\n // TODO: Also treat cases with directories and symbolic links.\n // TODO: See: http://man7.org/linux/man-pages/man2/rename.2.html\n // Remove hard link from old folder.\n var oldLinkParent = link.parent;\n if (oldLinkParent) {\n oldLinkParent.deleteChild(link);\n }\n // Rename should overwrite the new path, if that exists.\n var name = newPathSteps[newPathSteps.length - 1];\n link.name = name;\n link.steps = __spreadArray(__spreadArray([], newPathDirLink.steps, true), [name], false);\n newPathDirLink.setChild(link.getName(), link);\n };\n Volume.prototype.renameSync = function (oldPath, newPath) {\n var oldPathFilename = pathToFilename(oldPath);\n var newPathFilename = pathToFilename(newPath);\n this.renameBase(oldPathFilename, newPathFilename);\n };\n Volume.prototype.rename = function (oldPath, newPath, callback) {\n var oldPathFilename = pathToFilename(oldPath);\n var newPathFilename = pathToFilename(newPath);\n this.wrapAsync(this.renameBase, [oldPathFilename, newPathFilename], callback);\n };\n Volume.prototype.existsBase = function (filename) {\n return !!this.statBase(filename);\n };\n Volume.prototype.existsSync = function (path) {\n try {\n return this.existsBase(pathToFilename(path));\n }\n catch (err) {\n return false;\n }\n };\n Volume.prototype.exists = function (path, callback) {\n var _this = this;\n var filename = pathToFilename(path);\n if (typeof callback !== 'function')\n throw Error(ERRSTR.CB);\n (0, setImmediate_1.default)(function () {\n try {\n callback(_this.existsBase(filename));\n }\n catch (err) {\n callback(false);\n }\n });\n };\n Volume.prototype.accessBase = function (filename, mode) {\n var link = this.getLinkOrThrow(filename, 'access');\n // TODO: Verify permissions\n };\n Volume.prototype.accessSync = function (path, mode) {\n if (mode === void 0) { mode = F_OK; }\n var filename = pathToFilename(path);\n mode = mode | 0;\n this.accessBase(filename, mode);\n };\n Volume.prototype.access = function (path, a, b) {\n var mode = F_OK;\n var callback;\n if (typeof a !== 'function') {\n mode = a | 0; // cast to number\n callback = validateCallback(b);\n }\n else {\n callback = a;\n }\n var filename = pathToFilename(path);\n this.wrapAsync(this.accessBase, [filename, mode], callback);\n };\n Volume.prototype.appendFileSync = function (id, data, options) {\n if (options === void 0) { options = appendFileDefaults; }\n var opts = getAppendFileOpts(options);\n // force append behavior when using a supplied file descriptor\n if (!opts.flag || isFd(id))\n opts.flag = 'a';\n this.writeFileSync(id, data, opts);\n };\n Volume.prototype.appendFile = function (id, data, a, b) {\n var _a = getAppendFileOptsAndCb(a, b), opts = _a[0], callback = _a[1];\n // force append behavior when using a supplied file descriptor\n if (!opts.flag || isFd(id))\n opts.flag = 'a';\n this.writeFile(id, data, opts, callback);\n };\n Volume.prototype.readdirBase = function (filename, options) {\n var steps = filenameToSteps(filename);\n var link = this.getResolvedLink(steps);\n if (!link)\n throw createError(ENOENT, 'readdir', filename);\n var node = link.getNode();\n if (!node.isDirectory())\n throw createError(ENOTDIR, 'scandir', filename);\n if (options.withFileTypes) {\n var list_1 = [];\n for (var name_2 in link.children) {\n var child = link.getChild(name_2);\n if (!child) {\n continue;\n }\n list_1.push(Dirent_1.default.build(child, options.encoding));\n }\n if (!isWin && options.encoding !== 'buffer')\n list_1.sort(function (a, b) {\n if (a.name < b.name)\n return -1;\n if (a.name > b.name)\n return 1;\n return 0;\n });\n return list_1;\n }\n var list = [];\n for (var name_3 in link.children) {\n list.push((0, encoding_1.strToEncoding)(name_3, options.encoding));\n }\n if (!isWin && options.encoding !== 'buffer')\n list.sort();\n return list;\n };\n Volume.prototype.readdirSync = function (path, options) {\n var opts = getReaddirOptions(options);\n var filename = pathToFilename(path);\n return this.readdirBase(filename, opts);\n };\n Volume.prototype.readdir = function (path, a, b) {\n var _a = getReaddirOptsAndCb(a, b), options = _a[0], callback = _a[1];\n var filename = pathToFilename(path);\n this.wrapAsync(this.readdirBase, [filename, options], callback);\n };\n Volume.prototype.readlinkBase = function (filename, encoding) {\n var link = this.getLinkOrThrow(filename, 'readlink');\n var node = link.getNode();\n if (!node.isSymlink())\n throw createError(EINVAL, 'readlink', filename);\n var str = sep + node.symlink.join(sep);\n return (0, encoding_1.strToEncoding)(str, encoding);\n };\n Volume.prototype.readlinkSync = function (path, options) {\n var opts = getDefaultOpts(options);\n var filename = pathToFilename(path);\n return this.readlinkBase(filename, opts.encoding);\n };\n Volume.prototype.readlink = function (path, a, b) {\n var _a = getDefaultOptsAndCb(a, b), opts = _a[0], callback = _a[1];\n var filename = pathToFilename(path);\n this.wrapAsync(this.readlinkBase, [filename, opts.encoding], callback);\n };\n Volume.prototype.fsyncBase = function (fd) {\n this.getFileByFdOrThrow(fd, 'fsync');\n };\n Volume.prototype.fsyncSync = function (fd) {\n this.fsyncBase(fd);\n };\n Volume.prototype.fsync = function (fd, callback) {\n this.wrapAsync(this.fsyncBase, [fd], callback);\n };\n Volume.prototype.fdatasyncBase = function (fd) {\n this.getFileByFdOrThrow(fd, 'fdatasync');\n };\n Volume.prototype.fdatasyncSync = function (fd) {\n this.fdatasyncBase(fd);\n };\n Volume.prototype.fdatasync = function (fd, callback) {\n this.wrapAsync(this.fdatasyncBase, [fd], callback);\n };\n Volume.prototype.ftruncateBase = function (fd, len) {\n var file = this.getFileByFdOrThrow(fd, 'ftruncate');\n file.truncate(len);\n };\n Volume.prototype.ftruncateSync = function (fd, len) {\n this.ftruncateBase(fd, len);\n };\n Volume.prototype.ftruncate = function (fd, a, b) {\n var len = typeof a === 'number' ? a : 0;\n var callback = validateCallback(typeof a === 'number' ? b : a);\n this.wrapAsync(this.ftruncateBase, [fd, len], callback);\n };\n Volume.prototype.truncateBase = function (path, len) {\n var fd = this.openSync(path, 'r+');\n try {\n this.ftruncateSync(fd, len);\n }\n finally {\n this.closeSync(fd);\n }\n };\n Volume.prototype.truncateSync = function (id, len) {\n if (isFd(id))\n return this.ftruncateSync(id, len);\n this.truncateBase(id, len);\n };\n Volume.prototype.truncate = function (id, a, b) {\n var len = typeof a === 'number' ? a : 0;\n var callback = validateCallback(typeof a === 'number' ? b : a);\n if (isFd(id))\n return this.ftruncate(id, len, callback);\n this.wrapAsync(this.truncateBase, [id, len], callback);\n };\n Volume.prototype.futimesBase = function (fd, atime, mtime) {\n var file = this.getFileByFdOrThrow(fd, 'futimes');\n var node = file.node;\n node.atime = new Date(atime * 1000);\n node.mtime = new Date(mtime * 1000);\n };\n Volume.prototype.futimesSync = function (fd, atime, mtime) {\n this.futimesBase(fd, toUnixTimestamp(atime), toUnixTimestamp(mtime));\n };\n Volume.prototype.futimes = function (fd, atime, mtime, callback) {\n this.wrapAsync(this.futimesBase, [fd, toUnixTimestamp(atime), toUnixTimestamp(mtime)], callback);\n };\n Volume.prototype.utimesBase = function (filename, atime, mtime) {\n var fd = this.openSync(filename, 'r');\n try {\n this.futimesBase(fd, atime, mtime);\n }\n finally {\n this.closeSync(fd);\n }\n };\n Volume.prototype.utimesSync = function (path, atime, mtime) {\n this.utimesBase(pathToFilename(path), toUnixTimestamp(atime), toUnixTimestamp(mtime));\n };\n Volume.prototype.utimes = function (path, atime, mtime, callback) {\n this.wrapAsync(this.utimesBase, [pathToFilename(path), toUnixTimestamp(atime), toUnixTimestamp(mtime)], callback);\n };\n Volume.prototype.mkdirBase = function (filename, modeNum) {\n var steps = filenameToSteps(filename);\n // This will throw if user tries to create root dir `fs.mkdirSync('/')`.\n if (!steps.length) {\n throw createError(EEXIST, 'mkdir', filename);\n }\n var dir = this.getLinkParentAsDirOrThrow(filename, 'mkdir');\n // Check path already exists.\n var name = steps[steps.length - 1];\n if (dir.getChild(name))\n throw createError(EEXIST, 'mkdir', filename);\n dir.createChild(name, this.createNode(true, modeNum));\n };\n /**\n * Creates directory tree recursively.\n * @param filename\n * @param modeNum\n */\n Volume.prototype.mkdirpBase = function (filename, modeNum) {\n var fullPath = resolve(filename);\n var fullPathSansSlash = fullPath.substring(1);\n var steps = !fullPathSansSlash ? [] : fullPathSansSlash.split(sep);\n var link = this.root;\n var created = false;\n for (var i = 0; i < steps.length; i++) {\n var step = steps[i];\n if (!link.getNode().isDirectory())\n throw createError(ENOTDIR, 'mkdir', link.getPath());\n var child = link.getChild(step);\n if (child) {\n if (child.getNode().isDirectory())\n link = child;\n else\n throw createError(ENOTDIR, 'mkdir', child.getPath());\n }\n else {\n link = link.createChild(step, this.createNode(true, modeNum));\n created = true;\n }\n }\n return created ? fullPath : undefined;\n };\n Volume.prototype.mkdirSync = function (path, options) {\n var opts = getMkdirOptions(options);\n var modeNum = modeToNumber(opts.mode, 511);\n var filename = pathToFilename(path);\n if (opts.recursive)\n return this.mkdirpBase(filename, modeNum);\n this.mkdirBase(filename, modeNum);\n };\n Volume.prototype.mkdir = function (path, a, b) {\n var opts = getMkdirOptions(a);\n var callback = validateCallback(typeof a === 'function' ? a : b);\n var modeNum = modeToNumber(opts.mode, 511);\n var filename = pathToFilename(path);\n if (opts.recursive)\n this.wrapAsync(this.mkdirpBase, [filename, modeNum], callback);\n else\n this.wrapAsync(this.mkdirBase, [filename, modeNum], callback);\n };\n // legacy interface\n Volume.prototype.mkdirpSync = function (path, mode) {\n return this.mkdirSync(path, { mode: mode, recursive: true });\n };\n Volume.prototype.mkdirp = function (path, a, b) {\n var mode = typeof a === 'function' ? undefined : a;\n var callback = validateCallback(typeof a === 'function' ? a : b);\n this.mkdir(path, { mode: mode, recursive: true }, callback);\n };\n Volume.prototype.mkdtempBase = function (prefix, encoding, retry) {\n if (retry === void 0) { retry = 5; }\n var filename = prefix + this.genRndStr();\n try {\n this.mkdirBase(filename, 511 /* MODE.DIR */);\n return (0, encoding_1.strToEncoding)(filename, encoding);\n }\n catch (err) {\n if (err.code === EEXIST) {\n if (retry > 1)\n return this.mkdtempBase(prefix, encoding, retry - 1);\n else\n throw Error('Could not create temp dir.');\n }\n else\n throw err;\n }\n };\n Volume.prototype.mkdtempSync = function (prefix, options) {\n var encoding = getDefaultOpts(options).encoding;\n if (!prefix || typeof prefix !== 'string')\n throw new TypeError('filename prefix is required');\n nullCheck(prefix);\n return this.mkdtempBase(prefix, encoding);\n };\n Volume.prototype.mkdtemp = function (prefix, a, b) {\n var _a = getDefaultOptsAndCb(a, b), encoding = _a[0].encoding, callback = _a[1];\n if (!prefix || typeof prefix !== 'string')\n throw new TypeError('filename prefix is required');\n if (!nullCheck(prefix))\n return;\n this.wrapAsync(this.mkdtempBase, [prefix, encoding], callback);\n };\n Volume.prototype.rmdirBase = function (filename, options) {\n var opts = getRmdirOptions(options);\n var link = this.getLinkAsDirOrThrow(filename, 'rmdir');\n // Check directory is empty.\n if (link.length && !opts.recursive)\n throw createError(ENOTEMPTY, 'rmdir', filename);\n this.deleteLink(link);\n };\n Volume.prototype.rmdirSync = function (path, options) {\n this.rmdirBase(pathToFilename(path), options);\n };\n Volume.prototype.rmdir = function (path, a, b) {\n var opts = getRmdirOptions(a);\n var callback = validateCallback(typeof a === 'function' ? a : b);\n this.wrapAsync(this.rmdirBase, [pathToFilename(path), opts], callback);\n };\n Volume.prototype.rmBase = function (filename, options) {\n if (options === void 0) { options = {}; }\n var link = this.getResolvedLink(filename);\n if (!link) {\n // \"stat\" is used to match Node's native error message.\n if (!options.force)\n throw createError(ENOENT, 'stat', filename);\n return;\n }\n if (link.getNode().isDirectory()) {\n if (!options.recursive) {\n throw createError(ERR_FS_EISDIR, 'rm', filename);\n }\n }\n this.deleteLink(link);\n };\n Volume.prototype.rmSync = function (path, options) {\n this.rmBase(pathToFilename(path), options);\n };\n Volume.prototype.rm = function (path, a, b) {\n var _a = getRmOptsAndCb(a, b), opts = _a[0], callback = _a[1];\n this.wrapAsync(this.rmBase, [pathToFilename(path), opts], callback);\n };\n Volume.prototype.fchmodBase = function (fd, modeNum) {\n var file = this.getFileByFdOrThrow(fd, 'fchmod');\n file.chmod(modeNum);\n };\n Volume.prototype.fchmodSync = function (fd, mode) {\n this.fchmodBase(fd, modeToNumber(mode));\n };\n Volume.prototype.fchmod = function (fd, mode, callback) {\n this.wrapAsync(this.fchmodBase, [fd, modeToNumber(mode)], callback);\n };\n Volume.prototype.chmodBase = function (filename, modeNum) {\n var fd = this.openSync(filename, 'r');\n try {\n this.fchmodBase(fd, modeNum);\n }\n finally {\n this.closeSync(fd);\n }\n };\n Volume.prototype.chmodSync = function (path, mode) {\n var modeNum = modeToNumber(mode);\n var filename = pathToFilename(path);\n this.chmodBase(filename, modeNum);\n };\n Volume.prototype.chmod = function (path, mode, callback) {\n var modeNum = modeToNumber(mode);\n var filename = pathToFilename(path);\n this.wrapAsync(this.chmodBase, [filename, modeNum], callback);\n };\n Volume.prototype.lchmodBase = function (filename, modeNum) {\n var fd = this.openBase(filename, O_RDWR, 0, false);\n try {\n this.fchmodBase(fd, modeNum);\n }\n finally {\n this.closeSync(fd);\n }\n };\n Volume.prototype.lchmodSync = function (path, mode) {\n var modeNum = modeToNumber(mode);\n var filename = pathToFilename(path);\n this.lchmodBase(filename, modeNum);\n };\n Volume.prototype.lchmod = function (path, mode, callback) {\n var modeNum = modeToNumber(mode);\n var filename = pathToFilename(path);\n this.wrapAsync(this.lchmodBase, [filename, modeNum], callback);\n };\n Volume.prototype.fchownBase = function (fd, uid, gid) {\n this.getFileByFdOrThrow(fd, 'fchown').chown(uid, gid);\n };\n Volume.prototype.fchownSync = function (fd, uid, gid) {\n validateUid(uid);\n validateGid(gid);\n this.fchownBase(fd, uid, gid);\n };\n Volume.prototype.fchown = function (fd, uid, gid, callback) {\n validateUid(uid);\n validateGid(gid);\n this.wrapAsync(this.fchownBase, [fd, uid, gid], callback);\n };\n Volume.prototype.chownBase = function (filename, uid, gid) {\n var link = this.getResolvedLinkOrThrow(filename, 'chown');\n var node = link.getNode();\n node.chown(uid, gid);\n // if(node.isFile() || node.isSymlink()) {\n //\n // } else if(node.isDirectory()) {\n //\n // } else {\n // TODO: What do we do here?\n // }\n };\n Volume.prototype.chownSync = function (path, uid, gid) {\n validateUid(uid);\n validateGid(gid);\n this.chownBase(pathToFilename(path), uid, gid);\n };\n Volume.prototype.chown = function (path, uid, gid, callback) {\n validateUid(uid);\n validateGid(gid);\n this.wrapAsync(this.chownBase, [pathToFilename(path), uid, gid], callback);\n };\n Volume.prototype.lchownBase = function (filename, uid, gid) {\n this.getLinkOrThrow(filename, 'lchown').getNode().chown(uid, gid);\n };\n Volume.prototype.lchownSync = function (path, uid, gid) {\n validateUid(uid);\n validateGid(gid);\n this.lchownBase(pathToFilename(path), uid, gid);\n };\n Volume.prototype.lchown = function (path, uid, gid, callback) {\n validateUid(uid);\n validateGid(gid);\n this.wrapAsync(this.lchownBase, [pathToFilename(path), uid, gid], callback);\n };\n Volume.prototype.watchFile = function (path, a, b) {\n var filename = pathToFilename(path);\n var options = a;\n var listener = b;\n if (typeof options === 'function') {\n listener = a;\n options = null;\n }\n if (typeof listener !== 'function') {\n throw Error('\"watchFile()\" requires a listener function');\n }\n var interval = 5007;\n var persistent = true;\n if (options && typeof options === 'object') {\n if (typeof options.interval === 'number')\n interval = options.interval;\n if (typeof options.persistent === 'boolean')\n persistent = options.persistent;\n }\n var watcher = this.statWatchers[filename];\n if (!watcher) {\n watcher = new this.StatWatcher();\n watcher.start(filename, persistent, interval);\n this.statWatchers[filename] = watcher;\n }\n watcher.addListener('change', listener);\n return watcher;\n };\n Volume.prototype.unwatchFile = function (path, listener) {\n var filename = pathToFilename(path);\n var watcher = this.statWatchers[filename];\n if (!watcher)\n return;\n if (typeof listener === 'function') {\n watcher.removeListener('change', listener);\n }\n else {\n watcher.removeAllListeners('change');\n }\n if (watcher.listenerCount('change') === 0) {\n watcher.stop();\n delete this.statWatchers[filename];\n }\n };\n Volume.prototype.createReadStream = function (path, options) {\n return new this.ReadStream(path, options);\n };\n Volume.prototype.createWriteStream = function (path, options) {\n return new this.WriteStream(path, options);\n };\n // watch(path: PathLike): FSWatcher;\n // watch(path: PathLike, options?: IWatchOptions | string): FSWatcher;\n Volume.prototype.watch = function (path, options, listener) {\n var filename = pathToFilename(path);\n var givenOptions = options;\n if (typeof options === 'function') {\n listener = options;\n givenOptions = null;\n }\n // tslint:disable-next-line prefer-const\n var _a = getDefaultOpts(givenOptions), persistent = _a.persistent, recursive = _a.recursive, encoding = _a.encoding;\n if (persistent === undefined)\n persistent = true;\n if (recursive === undefined)\n recursive = false;\n var watcher = new this.FSWatcher();\n watcher.start(filename, persistent, recursive, encoding);\n if (listener) {\n watcher.addListener('change', listener);\n }\n return watcher;\n };\n /**\n * Global file descriptor counter. UNIX file descriptors start from 0 and go sequentially\n * up, so here, in order not to conflict with them, we choose some big number and descrease\n * the file descriptor of every new opened file.\n * @type {number}\n * @todo This should not be static, right?\n */\n Volume.fd = 0x7fffffff;\n return Volume;\n}());\nexports.Volume = Volume;\nfunction emitStop(self) {\n self.emit('stop');\n}\nvar StatWatcher = /** @class */ (function (_super) {\n __extends(StatWatcher, _super);\n function StatWatcher(vol) {\n var _this = _super.call(this) || this;\n _this.onInterval = function () {\n try {\n var stats = _this.vol.statSync(_this.filename);\n if (_this.hasChanged(stats)) {\n _this.emit('change', stats, _this.prev);\n _this.prev = stats;\n }\n }\n finally {\n _this.loop();\n }\n };\n _this.vol = vol;\n return _this;\n }\n StatWatcher.prototype.loop = function () {\n this.timeoutRef = this.setTimeout(this.onInterval, this.interval);\n };\n StatWatcher.prototype.hasChanged = function (stats) {\n // if(!this.prev) return false;\n if (stats.mtimeMs > this.prev.mtimeMs)\n return true;\n if (stats.nlink !== this.prev.nlink)\n return true;\n return false;\n };\n StatWatcher.prototype.start = function (path, persistent, interval) {\n if (persistent === void 0) { persistent = true; }\n if (interval === void 0) { interval = 5007; }\n this.filename = pathToFilename(path);\n this.setTimeout = persistent\n ? setTimeout.bind(typeof globalThis !== 'undefined' ? globalThis : global)\n : setTimeoutUnref_1.default;\n this.interval = interval;\n this.prev = this.vol.statSync(this.filename);\n this.loop();\n };\n StatWatcher.prototype.stop = function () {\n clearTimeout(this.timeoutRef);\n process_1.default.nextTick(emitStop, this);\n };\n return StatWatcher;\n}(events_1.EventEmitter));\nexports.StatWatcher = StatWatcher;\nvar pool;\nfunction allocNewPool(poolSize) {\n pool = (0, buffer_1.bufferAllocUnsafe)(poolSize);\n pool.used = 0;\n}\nutil.inherits(FsReadStream, stream_1.Readable);\nexports.ReadStream = FsReadStream;\nfunction FsReadStream(vol, path, options) {\n if (!(this instanceof FsReadStream))\n return new FsReadStream(vol, path, options);\n this._vol = vol;\n // a little bit bigger buffer and water marks by default\n options = Object.assign({}, getOptions(options, {}));\n if (options.highWaterMark === undefined)\n options.highWaterMark = 64 * 1024;\n stream_1.Readable.call(this, options);\n this.path = pathToFilename(path);\n this.fd = options.fd === undefined ? null : options.fd;\n this.flags = options.flags === undefined ? 'r' : options.flags;\n this.mode = options.mode === undefined ? 438 : options.mode;\n this.start = options.start;\n this.end = options.end;\n this.autoClose = options.autoClose === undefined ? true : options.autoClose;\n this.pos = undefined;\n this.bytesRead = 0;\n if (this.start !== undefined) {\n if (typeof this.start !== 'number') {\n throw new TypeError('\"start\" option must be a Number');\n }\n if (this.end === undefined) {\n this.end = Infinity;\n }\n else if (typeof this.end !== 'number') {\n throw new TypeError('\"end\" option must be a Number');\n }\n if (this.start > this.end) {\n throw new Error('\"start\" option must be <= \"end\" option');\n }\n this.pos = this.start;\n }\n if (typeof this.fd !== 'number')\n this.open();\n this.on('end', function () {\n if (this.autoClose) {\n if (this.destroy)\n this.destroy();\n }\n });\n}\nFsReadStream.prototype.open = function () {\n var self = this; // tslint:disable-line no-this-assignment\n this._vol.open(this.path, this.flags, this.mode, function (er, fd) {\n if (er) {\n if (self.autoClose) {\n if (self.destroy)\n self.destroy();\n }\n self.emit('error', er);\n return;\n }\n self.fd = fd;\n self.emit('open', fd);\n // start the flow of data.\n self.read();\n });\n};\nFsReadStream.prototype._read = function (n) {\n if (typeof this.fd !== 'number') {\n return this.once('open', function () {\n this._read(n);\n });\n }\n if (this.destroyed)\n return;\n if (!pool || pool.length - pool.used < kMinPoolSpace) {\n // discard the old pool.\n allocNewPool(this._readableState.highWaterMark);\n }\n // Grab another reference to the pool in the case that while we're\n // in the thread pool another read() finishes up the pool, and\n // allocates a new one.\n var thisPool = pool;\n var toRead = Math.min(pool.length - pool.used, n);\n var start = pool.used;\n if (this.pos !== undefined)\n toRead = Math.min(this.end - this.pos + 1, toRead);\n // already read everything we were supposed to read!\n // treat as EOF.\n if (toRead <= 0)\n return this.push(null);\n // the actual read.\n var self = this; // tslint:disable-line no-this-assignment\n this._vol.read(this.fd, pool, pool.used, toRead, this.pos, onread);\n // move the pool positions, and internal position for reading.\n if (this.pos !== undefined)\n this.pos += toRead;\n pool.used += toRead;\n function onread(er, bytesRead) {\n if (er) {\n if (self.autoClose && self.destroy) {\n self.destroy();\n }\n self.emit('error', er);\n }\n else {\n var b = null;\n if (bytesRead > 0) {\n self.bytesRead += bytesRead;\n b = thisPool.slice(start, start + bytesRead);\n }\n self.push(b);\n }\n }\n};\nFsReadStream.prototype._destroy = function (err, cb) {\n this.close(function (err2) {\n cb(err || err2);\n });\n};\nFsReadStream.prototype.close = function (cb) {\n var _this = this;\n var _a;\n if (cb)\n this.once('close', cb);\n if (this.closed || typeof this.fd !== 'number') {\n if (typeof this.fd !== 'number') {\n this.once('open', closeOnOpen);\n return;\n }\n return process_1.default.nextTick(function () { return _this.emit('close'); });\n }\n // Since Node 18, there is only a getter for '.closed'.\n // The first branch mimics other setters from Readable.\n // See https://github.com/nodejs/node/blob/v18.0.0/lib/internal/streams/readable.js#L1243\n if (typeof ((_a = this._readableState) === null || _a === void 0 ? void 0 : _a.closed) === 'boolean') {\n this._readableState.closed = true;\n }\n else {\n this.closed = true;\n }\n this._vol.close(this.fd, function (er) {\n if (er)\n _this.emit('error', er);\n else\n _this.emit('close');\n });\n this.fd = null;\n};\n// needed because as it will be called with arguments\n// that does not match this.close() signature\nfunction closeOnOpen(fd) {\n this.close();\n}\nutil.inherits(FsWriteStream, stream_1.Writable);\nexports.WriteStream = FsWriteStream;\nfunction FsWriteStream(vol, path, options) {\n if (!(this instanceof FsWriteStream))\n return new FsWriteStream(vol, path, options);\n this._vol = vol;\n options = Object.assign({}, getOptions(options, {}));\n stream_1.Writable.call(this, options);\n this.path = pathToFilename(path);\n this.fd = options.fd === undefined ? null : options.fd;\n this.flags = options.flags === undefined ? 'w' : options.flags;\n this.mode = options.mode === undefined ? 438 : options.mode;\n this.start = options.start;\n this.autoClose = options.autoClose === undefined ? true : !!options.autoClose;\n this.pos = undefined;\n this.bytesWritten = 0;\n if (this.start !== undefined) {\n if (typeof this.start !== 'number') {\n throw new TypeError('\"start\" option must be a Number');\n }\n if (this.start < 0) {\n throw new Error('\"start\" must be >= zero');\n }\n this.pos = this.start;\n }\n if (options.encoding)\n this.setDefaultEncoding(options.encoding);\n if (typeof this.fd !== 'number')\n this.open();\n // dispose on finish.\n this.once('finish', function () {\n if (this.autoClose) {\n this.close();\n }\n });\n}\nFsWriteStream.prototype.open = function () {\n this._vol.open(this.path, this.flags, this.mode, function (er, fd) {\n if (er) {\n if (this.autoClose && this.destroy) {\n this.destroy();\n }\n this.emit('error', er);\n return;\n }\n this.fd = fd;\n this.emit('open', fd);\n }.bind(this));\n};\nFsWriteStream.prototype._write = function (data, encoding, cb) {\n if (!(data instanceof buffer_1.Buffer || data instanceof Uint8Array))\n return this.emit('error', new Error('Invalid data'));\n if (typeof this.fd !== 'number') {\n return this.once('open', function () {\n this._write(data, encoding, cb);\n });\n }\n var self = this; // tslint:disable-line no-this-assignment\n this._vol.write(this.fd, data, 0, data.length, this.pos, function (er, bytes) {\n if (er) {\n if (self.autoClose && self.destroy) {\n self.destroy();\n }\n return cb(er);\n }\n self.bytesWritten += bytes;\n cb();\n });\n if (this.pos !== undefined)\n this.pos += data.length;\n};\nFsWriteStream.prototype._writev = function (data, cb) {\n if (typeof this.fd !== 'number') {\n return this.once('open', function () {\n this._writev(data, cb);\n });\n }\n var self = this; // tslint:disable-line no-this-assignment\n var len = data.length;\n var chunks = new Array(len);\n var size = 0;\n for (var i = 0; i < len; i++) {\n var chunk = data[i].chunk;\n chunks[i] = chunk;\n size += chunk.length;\n }\n var buf = buffer_1.Buffer.concat(chunks);\n this._vol.write(this.fd, buf, 0, buf.length, this.pos, function (er, bytes) {\n if (er) {\n if (self.destroy)\n self.destroy();\n return cb(er);\n }\n self.bytesWritten += bytes;\n cb();\n });\n if (this.pos !== undefined)\n this.pos += size;\n};\nFsWriteStream.prototype.close = function (cb) {\n var _this = this;\n var _a;\n if (cb)\n this.once('close', cb);\n if (this.closed || typeof this.fd !== 'number') {\n if (typeof this.fd !== 'number') {\n this.once('open', closeOnOpen);\n return;\n }\n return process_1.default.nextTick(function () { return _this.emit('close'); });\n }\n // Since Node 18, there is only a getter for '.closed'.\n // The first branch mimics other setters from Writable.\n // See https://github.com/nodejs/node/blob/v18.0.0/lib/internal/streams/writable.js#L766\n if (typeof ((_a = this._writableState) === null || _a === void 0 ? void 0 : _a.closed) === 'boolean') {\n this._writableState.closed = true;\n }\n else {\n this.closed = true;\n }\n this._vol.close(this.fd, function (er) {\n if (er)\n _this.emit('error', er);\n else\n _this.emit('close');\n });\n this.fd = null;\n};\nFsWriteStream.prototype._destroy = FsReadStream.prototype._destroy;\n// There is no shutdown() for files.\nFsWriteStream.prototype.destroySoon = FsWriteStream.prototype.end;\n// ---------------------------------------- FSWatcher\nvar FSWatcher = /** @class */ (function (_super) {\n __extends(FSWatcher, _super);\n function FSWatcher(vol) {\n var _this = _super.call(this) || this;\n _this._filename = '';\n _this._filenameEncoded = '';\n // _persistent: boolean = true;\n _this._recursive = false;\n _this._encoding = encoding_1.ENCODING_UTF8;\n _this._onNodeChange = function () {\n _this._emit('change');\n };\n _this._onParentChild = function (link) {\n if (link.getName() === _this._getName()) {\n _this._emit('rename');\n }\n };\n _this._emit = function (type) {\n _this.emit('change', type, _this._filenameEncoded);\n };\n _this._persist = function () {\n _this._timer = setTimeout(_this._persist, 1e6);\n };\n _this._vol = vol;\n return _this;\n // TODO: Emit \"error\" messages when watching.\n // this._handle.onchange = function(status, eventType, filename) {\n // if (status < 0) {\n // self._handle.close();\n // const error = !filename ?\n // errnoException(status, 'Error watching file for changes:') :\n // errnoException(status, `Error watching file ${filename} for changes:`);\n // error.filename = filename;\n // self.emit('error', error);\n // } else {\n // self.emit('change', eventType, filename);\n // }\n // };\n }\n FSWatcher.prototype._getName = function () {\n return this._steps[this._steps.length - 1];\n };\n FSWatcher.prototype.start = function (path, persistent, recursive, encoding) {\n if (persistent === void 0) { persistent = true; }\n if (recursive === void 0) { recursive = false; }\n if (encoding === void 0) { encoding = encoding_1.ENCODING_UTF8; }\n this._filename = pathToFilename(path);\n this._steps = filenameToSteps(this._filename);\n this._filenameEncoded = (0, encoding_1.strToEncoding)(this._filename);\n // this._persistent = persistent;\n this._recursive = recursive;\n this._encoding = encoding;\n try {\n this._link = this._vol.getLinkOrThrow(this._filename, 'FSWatcher');\n }\n catch (err) {\n var error = new Error(\"watch \".concat(this._filename, \" \").concat(err.code));\n error.code = err.code;\n error.errno = err.code;\n throw error;\n }\n this._link.getNode().on('change', this._onNodeChange);\n this._link.on('child:add', this._onNodeChange);\n this._link.on('child:delete', this._onNodeChange);\n var parent = this._link.parent;\n if (parent) {\n // parent.on('child:add', this._onParentChild);\n parent.setMaxListeners(parent.getMaxListeners() + 1);\n parent.on('child:delete', this._onParentChild);\n }\n if (persistent)\n this._persist();\n };\n FSWatcher.prototype.close = function () {\n clearTimeout(this._timer);\n this._link.getNode().removeListener('change', this._onNodeChange);\n var parent = this._link.parent;\n if (parent) {\n // parent.removeListener('child:add', this._onParentChild);\n parent.removeListener('child:delete', this._onParentChild);\n }\n };\n return FSWatcher;\n}(events_1.EventEmitter));\nexports.FSWatcher = FSWatcher;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.fsAsyncMethods = exports.fsSyncMethods = exports.fsProps = void 0;\nvar fsProps = ['constants', 'F_OK', 'R_OK', 'W_OK', 'X_OK', 'Stats'];\nexports.fsProps = fsProps;\nvar fsSyncMethods = ['renameSync', 'ftruncateSync', 'truncateSync', 'chownSync', 'fchownSync', 'lchownSync', 'chmodSync', 'fchmodSync', 'lchmodSync', 'statSync', 'lstatSync', 'fstatSync', 'linkSync', 'symlinkSync', 'readlinkSync', 'realpathSync', 'unlinkSync', 'rmdirSync', 'mkdirSync', 'mkdirpSync', 'readdirSync', 'closeSync', 'openSync', 'utimesSync', 'futimesSync', 'fsyncSync', 'writeSync', 'readSync', 'readFileSync', 'writeFileSync', 'appendFileSync', 'existsSync', 'accessSync', 'fdatasyncSync', 'mkdtempSync', 'copyFileSync', 'createReadStream', 'createWriteStream'];\nexports.fsSyncMethods = fsSyncMethods;\nvar fsAsyncMethods = ['rename', 'ftruncate', 'truncate', 'chown', 'fchown', 'lchown', 'chmod', 'fchmod', 'lchmod', 'stat', 'lstat', 'fstat', 'link', 'symlink', 'readlink', 'realpath', 'unlink', 'rmdir', 'mkdir', 'mkdirp', 'readdir', 'close', 'open', 'utimes', 'futimes', 'fsync', 'write', 'read', 'readFile', 'writeFile', 'appendFile', 'exists', 'access', 'fdatasync', 'mkdtemp', 'copyFile', 'watchFile', 'unwatchFile', 'watch'];\nexports.fsAsyncMethods = fsAsyncMethods;","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fs = exports.createFsFromVolume = exports.vol = exports.Volume = void 0;\nvar Stats_1 = require(\"./Stats\");\nvar Dirent_1 = require(\"./Dirent\");\nvar volume_1 = require(\"./volume\");\nvar _a = require('fs-monkey/lib/util/lists'), fsSyncMethods = _a.fsSyncMethods, fsAsyncMethods = _a.fsAsyncMethods;\nvar constants_1 = require(\"./constants\");\nvar F_OK = constants_1.constants.F_OK, R_OK = constants_1.constants.R_OK, W_OK = constants_1.constants.W_OK, X_OK = constants_1.constants.X_OK;\nexports.Volume = volume_1.Volume;\n// Default volume.\nexports.vol = new volume_1.Volume();\nfunction createFsFromVolume(vol) {\n var fs = { F_OK: F_OK, R_OK: R_OK, W_OK: W_OK, X_OK: X_OK, constants: constants_1.constants, Stats: Stats_1.default, Dirent: Dirent_1.default };\n // Bind FS methods.\n for (var _i = 0, fsSyncMethods_1 = fsSyncMethods; _i < fsSyncMethods_1.length; _i++) {\n var method = fsSyncMethods_1[_i];\n if (typeof vol[method] === 'function')\n fs[method] = vol[method].bind(vol);\n }\n for (var _a = 0, fsAsyncMethods_1 = fsAsyncMethods; _a < fsAsyncMethods_1.length; _a++) {\n var method = fsAsyncMethods_1[_a];\n if (typeof vol[method] === 'function')\n fs[method] = vol[method].bind(vol);\n }\n fs.StatWatcher = vol.StatWatcher;\n fs.FSWatcher = vol.FSWatcher;\n fs.WriteStream = vol.WriteStream;\n fs.ReadStream = vol.ReadStream;\n fs.promises = vol.promises;\n fs._toUnixTimestamp = volume_1.toUnixTimestamp;\n return fs;\n}\nexports.createFsFromVolume = createFsFromVolume;\nexports.fs = createFsFromVolume(exports.vol);\nmodule.exports = __assign(__assign({}, module.exports), exports.fs);\nmodule.exports.semantic = true;\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\nvar pathModule = require('path');\nvar isWindows = process.platform === 'win32';\nvar fs = require('fs');\n\n// JavaScript implementation of realpath, ported from node pre-v6\n\nvar DEBUG = process.env.NODE_DEBUG && /fs/.test(process.env.NODE_DEBUG);\n\nfunction rethrow() {\n // Only enable in debug mode. A backtrace uses ~1000 bytes of heap space and\n // is fairly slow to generate.\n var callback;\n if (DEBUG) {\n var backtrace = new Error;\n callback = debugCallback;\n } else\n callback = missingCallback;\n\n return callback;\n\n function debugCallback(err) {\n if (err) {\n backtrace.message = err.message;\n err = backtrace;\n missingCallback(err);\n }\n }\n\n function missingCallback(err) {\n if (err) {\n if (process.throwDeprecation)\n throw err; // Forgot a callback but don't know where? Use NODE_DEBUG=fs\n else if (!process.noDeprecation) {\n var msg = 'fs: missing callback ' + (err.stack || err.message);\n if (process.traceDeprecation)\n console.trace(msg);\n else\n console.error(msg);\n }\n }\n }\n}\n\nfunction maybeCallback(cb) {\n return typeof cb === 'function' ? cb : rethrow();\n}\n\nvar normalize = pathModule.normalize;\n\n// Regexp that finds the next partion of a (partial) path\n// result is [base_with_slash, base], e.g. ['somedir/', 'somedir']\nif (isWindows) {\n var nextPartRe = /(.*?)(?:[\\/\\\\]+|$)/g;\n} else {\n var nextPartRe = /(.*?)(?:[\\/]+|$)/g;\n}\n\n// Regex to find the device root, including trailing slash. E.g. 'c:\\\\'.\nif (isWindows) {\n var splitRootRe = /^(?:[a-zA-Z]:|[\\\\\\/]{2}[^\\\\\\/]+[\\\\\\/][^\\\\\\/]+)?[\\\\\\/]*/;\n} else {\n var splitRootRe = /^[\\/]*/;\n}\n\nexports.realpathSync = function realpathSync(p, cache) {\n // make p is absolute\n p = pathModule.resolve(p);\n\n if (cache && Object.prototype.hasOwnProperty.call(cache, p)) {\n return cache[p];\n }\n\n var original = p,\n seenLinks = {},\n knownHard = {};\n\n // current character position in p\n var pos;\n // the partial path so far, including a trailing slash if any\n var current;\n // the partial path without a trailing slash (except when pointing at a root)\n var base;\n // the partial path scanned in the previous round, with slash\n var previous;\n\n start();\n\n function start() {\n // Skip over roots\n var m = splitRootRe.exec(p);\n pos = m[0].length;\n current = m[0];\n base = m[0];\n previous = '';\n\n // On windows, check that the root exists. On unix there is no need.\n if (isWindows && !knownHard[base]) {\n fs.lstatSync(base);\n knownHard[base] = true;\n }\n }\n\n // walk down the path, swapping out linked pathparts for their real\n // values\n // NB: p.length changes.\n while (pos < p.length) {\n // find the next part\n nextPartRe.lastIndex = pos;\n var result = nextPartRe.exec(p);\n previous = current;\n current += result[0];\n base = previous + result[1];\n pos = nextPartRe.lastIndex;\n\n // continue if not a symlink\n if (knownHard[base] || (cache && cache[base] === base)) {\n continue;\n }\n\n var resolvedLink;\n if (cache && Object.prototype.hasOwnProperty.call(cache, base)) {\n // some known symbolic link. no need to stat again.\n resolvedLink = cache[base];\n } else {\n var stat = fs.lstatSync(base);\n if (!stat.isSymbolicLink()) {\n knownHard[base] = true;\n if (cache) cache[base] = base;\n continue;\n }\n\n // read the link if it wasn't read before\n // dev/ino always return 0 on windows, so skip the check.\n var linkTarget = null;\n if (!isWindows) {\n var id = stat.dev.toString(32) + ':' + stat.ino.toString(32);\n if (seenLinks.hasOwnProperty(id)) {\n linkTarget = seenLinks[id];\n }\n }\n if (linkTarget === null) {\n fs.statSync(base);\n linkTarget = fs.readlinkSync(base);\n }\n resolvedLink = pathModule.resolve(previous, linkTarget);\n // track this, if given a cache.\n if (cache) cache[base] = resolvedLink;\n if (!isWindows) seenLinks[id] = linkTarget;\n }\n\n // resolve the link, then start over\n p = pathModule.resolve(resolvedLink, p.slice(pos));\n start();\n }\n\n if (cache) cache[original] = p;\n\n return p;\n};\n\n\nexports.realpath = function realpath(p, cache, cb) {\n if (typeof cb !== 'function') {\n cb = maybeCallback(cache);\n cache = null;\n }\n\n // make p is absolute\n p = pathModule.resolve(p);\n\n if (cache && Object.prototype.hasOwnProperty.call(cache, p)) {\n return process.nextTick(cb.bind(null, null, cache[p]));\n }\n\n var original = p,\n seenLinks = {},\n knownHard = {};\n\n // current character position in p\n var pos;\n // the partial path so far, including a trailing slash if any\n var current;\n // the partial path without a trailing slash (except when pointing at a root)\n var base;\n // the partial path scanned in the previous round, with slash\n var previous;\n\n start();\n\n function start() {\n // Skip over roots\n var m = splitRootRe.exec(p);\n pos = m[0].length;\n current = m[0];\n base = m[0];\n previous = '';\n\n // On windows, check that the root exists. On unix there is no need.\n if (isWindows && !knownHard[base]) {\n fs.lstat(base, function(err) {\n if (err) return cb(err);\n knownHard[base] = true;\n LOOP();\n });\n } else {\n process.nextTick(LOOP);\n }\n }\n\n // walk down the path, swapping out linked pathparts for their real\n // values\n function LOOP() {\n // stop if scanned past end of path\n if (pos >= p.length) {\n if (cache) cache[original] = p;\n return cb(null, p);\n }\n\n // find the next part\n nextPartRe.lastIndex = pos;\n var result = nextPartRe.exec(p);\n previous = current;\n current += result[0];\n base = previous + result[1];\n pos = nextPartRe.lastIndex;\n\n // continue if not a symlink\n if (knownHard[base] || (cache && cache[base] === base)) {\n return process.nextTick(LOOP);\n }\n\n if (cache && Object.prototype.hasOwnProperty.call(cache, base)) {\n // known symbolic link. no need to stat again.\n return gotResolvedLink(cache[base]);\n }\n\n return fs.lstat(base, gotStat);\n }\n\n function gotStat(err, stat) {\n if (err) return cb(err);\n\n // if not a symlink, skip to the next path part\n if (!stat.isSymbolicLink()) {\n knownHard[base] = true;\n if (cache) cache[base] = base;\n return process.nextTick(LOOP);\n }\n\n // stat & read the link if not read before\n // call gotTarget as soon as the link target is known\n // dev/ino always return 0 on windows, so skip the check.\n if (!isWindows) {\n var id = stat.dev.toString(32) + ':' + stat.ino.toString(32);\n if (seenLinks.hasOwnProperty(id)) {\n return gotTarget(null, seenLinks[id], base);\n }\n }\n fs.stat(base, function(err) {\n if (err) return cb(err);\n\n fs.readlink(base, function(err, target) {\n if (!isWindows) seenLinks[id] = target;\n gotTarget(err, target);\n });\n });\n }\n\n function gotTarget(err, target, base) {\n if (err) return cb(err);\n\n var resolvedLink = pathModule.resolve(previous, target);\n if (cache) cache[base] = resolvedLink;\n gotResolvedLink(resolvedLink);\n }\n\n function gotResolvedLink(resolvedLink) {\n // resolve the link, then start over\n p = pathModule.resolve(resolvedLink, p.slice(pos));\n start();\n }\n};\n","module.exports = realpath\nrealpath.realpath = realpath\nrealpath.sync = realpathSync\nrealpath.realpathSync = realpathSync\nrealpath.monkeypatch = monkeypatch\nrealpath.unmonkeypatch = unmonkeypatch\n\nvar fs = require('fs')\nvar origRealpath = fs.realpath\nvar origRealpathSync = fs.realpathSync\n\nvar version = process.version\nvar ok = /^v[0-5]\\./.test(version)\nvar old = require('./old.js')\n\nfunction newError (er) {\n return er && er.syscall === 'realpath' && (\n er.code === 'ELOOP' ||\n er.code === 'ENOMEM' ||\n er.code === 'ENAMETOOLONG'\n )\n}\n\nfunction realpath (p, cache, cb) {\n if (ok) {\n return origRealpath(p, cache, cb)\n }\n\n if (typeof cache === 'function') {\n cb = cache\n cache = null\n }\n origRealpath(p, cache, function (er, result) {\n if (newError(er)) {\n old.realpath(p, cache, cb)\n } else {\n cb(er, result)\n }\n })\n}\n\nfunction realpathSync (p, cache) {\n if (ok) {\n return origRealpathSync(p, cache)\n }\n\n try {\n return origRealpathSync(p, cache)\n } catch (er) {\n if (newError(er)) {\n return old.realpathSync(p, cache)\n } else {\n throw er\n }\n }\n}\n\nfunction monkeypatch () {\n fs.realpath = realpath\n fs.realpathSync = realpathSync\n}\n\nfunction unmonkeypatch () {\n fs.realpath = origRealpath\n fs.realpathSync = origRealpathSync\n}\n","module.exports = function (xs, fn) {\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n var x = fn(xs[i], i);\n if (isArray(x)) res.push.apply(res, x);\n else res.push(x);\n }\n return res;\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\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 concatMap = require('concat-map');\nvar 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) {\n if (!str)\n return [];\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), true).map(unescapeBraces);\n}\n\nfunction identity(e) {\n return e;\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, isTop) {\n var expansions = [];\n\n var m = balanced('{', '}', str);\n if (!m || /\\$$/.test(m.pre)) return [str];\n\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);\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], false).map(embrace);\n if (n.length === 1) {\n var post = m.post.length\n ? expand(m.post, false)\n : [''];\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\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, false)\n : [''];\n\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.abs(numeric(n[2]))\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 = concatMap(n, function(el) { return expand(el, false) });\n }\n\n for (var j = 0; j < N.length; j++) {\n for (var k = 0; k < post.length; k++) {\n var expansion = pre + N[j] + post[k];\n if (!isTop || isSequence || expansion)\n expansions.push(expansion);\n }\n }\n\n return expansions;\n}\n\n","module.exports = minimatch\nminimatch.Minimatch = Minimatch\n\nvar path = (function () { try { return require('path') } catch (e) {}}()) || {\n sep: '/'\n}\nminimatch.sep = path.sep\n\nvar GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {}\nvar expand = require('brace-expansion')\n\nvar 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()\nvar qmark = '[^/]'\n\n// * => any number of characters\nvar 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.\nvar twoStarDot = '(?:(?!(?:\\\\\\/|^)(?:\\\\.{1,2})($|\\\\\\/)).)*?'\n\n// not a ^ or / followed by a dot,\n// followed by anything, any number of times.\nvar twoStarNoDot = '(?:(?!(?:\\\\\\/|^)\\\\.).)*?'\n\n// characters that need to be escaped in RegExp.\nvar reSpecials = charSet('().*{}+?[]^$\\\\!')\n\n// \"abc\" -> { a:true, b:true, c:true }\nfunction charSet (s) {\n return s.split('').reduce(function (set, c) {\n set[c] = true\n return set\n }, {})\n}\n\n// normalizes slashes.\nvar slashSplit = /\\/+/\n\nminimatch.filter = filter\nfunction filter (pattern, options) {\n options = options || {}\n return function (p, i, list) {\n return minimatch(p, pattern, options)\n }\n}\n\nfunction ext (a, b) {\n b = b || {}\n var t = {}\n Object.keys(a).forEach(function (k) {\n t[k] = a[k]\n })\n Object.keys(b).forEach(function (k) {\n t[k] = b[k]\n })\n return t\n}\n\nminimatch.defaults = function (def) {\n if (!def || typeof def !== 'object' || !Object.keys(def).length) {\n return minimatch\n }\n\n var orig = minimatch\n\n var m = function minimatch (p, pattern, options) {\n return orig(p, pattern, ext(def, options))\n }\n\n m.Minimatch = function Minimatch (pattern, options) {\n return new orig.Minimatch(pattern, ext(def, options))\n }\n m.Minimatch.defaults = function defaults (options) {\n return orig.defaults(ext(def, options)).Minimatch\n }\n\n m.filter = function filter (pattern, options) {\n return orig.filter(pattern, ext(def, options))\n }\n\n m.defaults = function defaults (options) {\n return orig.defaults(ext(def, options))\n }\n\n m.makeRe = function makeRe (pattern, options) {\n return orig.makeRe(pattern, ext(def, options))\n }\n\n m.braceExpand = function braceExpand (pattern, options) {\n return orig.braceExpand(pattern, ext(def, options))\n }\n\n m.match = function (list, pattern, options) {\n return orig.match(list, pattern, ext(def, options))\n }\n\n return m\n}\n\nMinimatch.defaults = function (def) {\n return minimatch.defaults(def).Minimatch\n}\n\nfunction minimatch (p, pattern, options) {\n assertValidPattern(pattern)\n\n if (!options) options = {}\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\nfunction Minimatch (pattern, options) {\n if (!(this instanceof Minimatch)) {\n return new Minimatch(pattern, options)\n }\n\n assertValidPattern(pattern)\n\n if (!options) options = {}\n\n pattern = pattern.trim()\n\n // windows support: need to use /, not \\\n if (!options.allowWindowsEscape && path.sep !== '/') {\n pattern = pattern.split(path.sep).join('/')\n }\n\n this.options = options\n this.set = []\n this.pattern = pattern\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\nMinimatch.prototype.debug = function () {}\n\nMinimatch.prototype.make = make\nfunction make () {\n var pattern = this.pattern\n var 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 var set = this.globSet = this.braceExpand()\n\n if (options.debug) this.debug = function debug() { console.error.apply(console, arguments) }\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(function (s) {\n return s.split(slashSplit)\n })\n\n this.debug(this.pattern, set)\n\n // glob --> regexps\n set = set.map(function (s, si, set) {\n return s.map(this.parse, this)\n }, this)\n\n this.debug(this.pattern, set)\n\n // filter out everything that didn't compile properly.\n set = set.filter(function (s) {\n return s.indexOf(false) === -1\n })\n\n this.debug(this.pattern, set)\n\n this.set = set\n}\n\nMinimatch.prototype.parseNegate = parseNegate\nfunction parseNegate () {\n var pattern = this.pattern\n var negate = false\n var options = this.options\n var negateOffset = 0\n\n if (options.nonegate) return\n\n for (var i = 0, l = pattern.length\n ; i < l && pattern.charAt(i) === '!'\n ; i++) {\n negate = !negate\n negateOffset++\n }\n\n if (negateOffset) this.pattern = pattern.substr(negateOffset)\n this.negate = negate\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 = function (pattern, options) {\n return braceExpand(pattern, options)\n}\n\nMinimatch.prototype.braceExpand = braceExpand\n\nfunction braceExpand (pattern, options) {\n if (!options) {\n if (this instanceof Minimatch) {\n options = this.options\n } else {\n options = {}\n }\n }\n\n pattern = typeof pattern === 'undefined'\n ? this.pattern : pattern\n\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\nvar MAX_PATTERN_LENGTH = 1024 * 64\nvar assertValidPattern = function (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.\nMinimatch.prototype.parse = parse\nvar SUBPARSE = {}\nfunction parse (pattern, isSub) {\n assertValidPattern(pattern)\n\n var 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 var re = ''\n var hasMagic = !!options.nocase\n var escaping = false\n // ? => one single character\n var patternListStack = []\n var negativeLists = []\n var stateChar\n var inClass = false\n var reClassStart = -1\n var classStart = -1\n // . and .. never match anything that doesn't start with .,\n // even when options.dot is set.\n var patternStart = pattern.charAt(0) === '.' ? '' // anything\n // not (start or / followed by . or .. followed by / or end)\n : options.dot ? '(?!(?:^|\\\\\\/)\\\\.{1,2}(?:$|\\\\\\/))'\n : '(?!\\\\.)'\n var self = this\n\n function 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 self.debug('clearStateChar %j %j', stateChar, re)\n stateChar = false\n }\n }\n\n for (var i = 0, len = pattern.length, c\n ; (i < len) && (c = pattern.charAt(i))\n ; i++) {\n this.debug('%s\\t%s %s %j', pattern, i, re, c)\n\n // skip over any that are escaped.\n if (escaping && reSpecials[c]) {\n re += '\\\\' + c\n escaping = false\n continue\n }\n\n switch (c) {\n /* istanbul ignore next */\n case '/': {\n // completely not allowed, even escaped.\n // Should already be path-split by now.\n return false\n }\n\n case '\\\\':\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 // 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 self.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 patternListStack.push({\n type: stateChar,\n start: i - 1,\n reStart: re.length,\n open: plTypes[stateChar].open,\n close: plTypes[stateChar].close\n })\n // negation is (?:(?!js)[^/]*)\n re += stateChar === '!' ? '(?:(?!(?:' : '(?:'\n this.debug('plType %j %j', stateChar, re)\n stateChar = false\n continue\n\n case ')':\n if (inClass || !patternListStack.length) {\n re += '\\\\)'\n continue\n }\n\n clearStateChar()\n hasMagic = true\n var pl = patternListStack.pop()\n // negation is (?:(?!js)[^/]*)\n // The others are (?:<pattern>)<type>\n re += pl.close\n if (pl.type === '!') {\n negativeLists.push(pl)\n }\n pl.reEnd = re.length\n continue\n\n case '|':\n if (inClass || !patternListStack.length || escaping) {\n re += '\\\\|'\n escaping = false\n continue\n }\n\n clearStateChar()\n re += '|'\n continue\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 escaping = false\n continue\n }\n\n // handle the case where we left a class open.\n // \"[z-a]\" is valid, equivalent to \"\\[z-a\\]\"\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 var cs = pattern.substring(classStart + 1, i)\n try {\n RegExp('[' + cs + ']')\n } catch (er) {\n // not a valid class!\n var sp = this.parse(cs, SUBPARSE)\n re = re.substr(0, reClassStart) + '\\\\[' + sp[0] + '\\\\]'\n hasMagic = hasMagic || sp[1]\n inClass = false\n continue\n }\n\n // finish up the class.\n hasMagic = true\n inClass = false\n re += c\n continue\n\n default:\n // swallow any state char that wasn't consumed\n clearStateChar()\n\n if (escaping) {\n // no need\n escaping = false\n } else if (reSpecials[c]\n && !(c === '^' && inClass)) {\n re += '\\\\'\n }\n\n re += c\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.substr(classStart + 1)\n sp = this.parse(cs, SUBPARSE)\n re = re.substr(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 var 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, function (_, $1, $2) {\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 var 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 var addPatternStart = false\n switch (re.charAt(0)) {\n case '[': case '.': case '(': addPatternStart = true\n }\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 (var n = negativeLists.length - 1; n > -1; n--) {\n var nl = negativeLists[n]\n\n var nlBefore = re.slice(0, nl.reStart)\n var nlFirst = re.slice(nl.reStart, nl.reEnd - 8)\n var nlLast = re.slice(nl.reEnd - 8, nl.reEnd)\n var nlAfter = re.slice(nl.reEnd)\n\n nlLast += 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 var openParensBefore = nlBefore.split('(').length - 1\n var cleanAfter = nlAfter\n for (i = 0; i < openParensBefore; i++) {\n cleanAfter = cleanAfter.replace(/\\)[+*?]?/, '')\n }\n nlAfter = cleanAfter\n\n var dollar = ''\n if (nlAfter === '' && isSub !== SUBPARSE) {\n dollar = '$'\n }\n var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast\n re = newRe\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 // 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 var flags = options.nocase ? 'i' : ''\n try {\n var regExp = new RegExp('^' + re + '$', flags)\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 regExp._glob = pattern\n regExp._src = re\n\n return regExp\n}\n\nminimatch.makeRe = function (pattern, options) {\n return new Minimatch(pattern, options || {}).makeRe()\n}\n\nMinimatch.prototype.makeRe = makeRe\nfunction 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 var set = this.set\n\n if (!set.length) {\n this.regexp = false\n return this.regexp\n }\n var options = this.options\n\n var twoStar = options.noglobstar ? star\n : options.dot ? twoStarDot\n : twoStarNoDot\n var flags = options.nocase ? 'i' : ''\n\n var re = set.map(function (pattern) {\n return pattern.map(function (p) {\n return (p === GLOBSTAR) ? twoStar\n : (typeof p === 'string') ? regExpEscape(p)\n : p._src\n }).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\nminimatch.match = function (list, pattern, options) {\n options = options || {}\n var mm = new Minimatch(pattern, options)\n list = list.filter(function (f) {\n return mm.match(f)\n })\n if (mm.options.nonull && !list.length) {\n list.push(pattern)\n }\n return list\n}\n\nMinimatch.prototype.match = function match (f, partial) {\n if (typeof partial === 'undefined') 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 var 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 var 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 var filename\n var i\n for (i = f.length - 1; i >= 0; i--) {\n filename = f[i]\n if (filename) break\n }\n\n for (i = 0; i < set.length; i++) {\n var pattern = set[i]\n var file = f\n if (options.matchBase && pattern.length === 1) {\n file = [filename]\n }\n var 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// 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.\nMinimatch.prototype.matchOne = function (file, pattern, partial) {\n var options = this.options\n\n this.debug('matchOne',\n { 'this': this, file: file, pattern: pattern })\n\n this.debug('matchOne', file.length, pattern.length)\n\n for (var fi = 0,\n pi = 0,\n fl = file.length,\n pl = pattern.length\n ; (fi < fl) && (pi < pl)\n ; fi++, pi++) {\n this.debug('matchOne loop')\n var p = pattern[pi]\n var 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) return false\n\n if (p === GLOBSTAR) {\n this.debug('GLOBSTAR', [pattern, p, f])\n\n // \"**\"\n // a/**/b/**/c would match the following:\n // a/b/x/y/z/c\n // a/x/y/z/b/c\n // a/b/x/b/x/c\n // a/b/c\n // To do this, take the rest of the pattern after\n // the **, and see if it would match the file remainder.\n // If so, return success.\n // If not, the ** \"swallows\" a segment, and try again.\n // This is recursively awful.\n //\n // a/**/b/**/c matching a/b/x/y/z/c\n // - a matches a\n // - doublestar\n // - matchOne(b/x/y/z/c, b/**/c)\n // - b matches b\n // - doublestar\n // - matchOne(x/y/z/c, c) -> no\n // - matchOne(y/z/c, c) -> no\n // - matchOne(z/c, c) -> no\n // - matchOne(c, c) yes, hit\n var fr = fi\n var pr = pi + 1\n if (pr === pl) {\n this.debug('** at the end')\n // a ** at the end will just swallow the rest.\n // We have found a match.\n // however, it will not swallow /.x, unless\n // options.dot is set.\n // . and .. are *never* matched by **, for explosively\n // exponential reasons.\n for (; fi < fl; fi++) {\n if (file[fi] === '.' || file[fi] === '..' ||\n (!options.dot && file[fi].charAt(0) === '.')) return false\n }\n return true\n }\n\n // ok, let's see if we can swallow whatever we can.\n while (fr < fl) {\n var swallowee = file[fr]\n\n this.debug('\\nglobstar while', file, fr, pattern, pr, swallowee)\n\n // XXX remove this slice. Just pass the start index.\n if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {\n this.debug('globstar found match!', fr, fl, swallowee)\n // found a match.\n return true\n } else {\n // can't swallow \".\" or \"..\" ever.\n // can only swallow \".foo\" when explicitly asked.\n if (swallowee === '.' || swallowee === '..' ||\n (!options.dot && swallowee.charAt(0) === '.')) {\n this.debug('dot detected!', file, fr, pattern, pr)\n break\n }\n\n // ** swallows a segment, and continue.\n this.debug('globstar swallow a segment, and continue')\n fr++\n }\n }\n\n // no match was found.\n // However, in partial mode, we can't say this is necessarily over.\n // If there's more *pattern* left, then\n /* istanbul ignore if */\n if (partial) {\n // ran out of file\n this.debug('\\n>>> no match, partial?', file, fr, pattern, pr)\n if (fr === fl) return true\n }\n return false\n }\n\n // something other than **\n // non-magic patterns just have to match exactly\n // patterns with magic have been turned into regexps.\n var 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 // Note: ending in / means that we'll get a final \"\"\n // at the end of the pattern. This can only match a\n // corresponding \"\" at the end of the file.\n // If the file ends in /, then it can only match a\n // a pattern that ends in /, unless the pattern just\n // doesn't have any more for it. But, a/b/ should *not*\n // match \"a/b/*\", even though \"\" matches against the\n // [^/]*? pattern, except in partial mode, where it might\n // simply not be reached yet.\n // However, a/b/ should still satisfy a/*\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// replace stuff like \\* with *\nfunction globUnescape (s) {\n return s.replace(/\\\\(.)/g, '$1')\n}\n\nfunction regExpEscape (s) {\n return s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\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 posix(path) {\n\treturn path.charAt(0) === '/';\n}\n\nfunction win32(path) {\n\t// https://github.com/nodejs/node/blob/b3fcc245fb25539909ef1d5eaa01dbf92e168633/lib/path.js#L56\n\tvar splitDeviceRe = /^([a-zA-Z]:|[\\\\\\/]{2}[^\\\\\\/]+[\\\\\\/]+[^\\\\\\/]+)?([\\\\\\/])?([\\s\\S]*?)$/;\n\tvar result = splitDeviceRe.exec(path);\n\tvar device = result[1] || '';\n\tvar isUnc = Boolean(device && device.charAt(1) !== ':');\n\n\t// UNC paths are always absolute\n\treturn Boolean(result[2] || isUnc);\n}\n\nmodule.exports = process.platform === 'win32' ? win32 : posix;\nmodule.exports.posix = posix;\nmodule.exports.win32 = win32;\n","exports.setopts = setopts\nexports.ownProp = ownProp\nexports.makeAbs = makeAbs\nexports.finish = finish\nexports.mark = mark\nexports.isIgnored = isIgnored\nexports.childrenIgnored = childrenIgnored\n\nfunction ownProp (obj, field) {\n return Object.prototype.hasOwnProperty.call(obj, field)\n}\n\nvar fs = require(\"fs\")\nvar path = require(\"path\")\nvar minimatch = require(\"minimatch\")\nvar isAbsolute = require(\"path-is-absolute\")\nvar Minimatch = minimatch.Minimatch\n\nfunction alphasort (a, b) {\n return a.localeCompare(b, 'en')\n}\n\nfunction setupIgnores (self, options) {\n self.ignore = options.ignore || []\n\n if (!Array.isArray(self.ignore))\n self.ignore = [self.ignore]\n\n if (self.ignore.length) {\n self.ignore = self.ignore.map(ignoreMap)\n }\n}\n\n// ignore patterns are always in dot:true mode.\nfunction ignoreMap (pattern) {\n var gmatcher = null\n if (pattern.slice(-3) === '/**') {\n var gpattern = pattern.replace(/(\\/\\*\\*)+$/, '')\n gmatcher = new Minimatch(gpattern, { dot: true })\n }\n\n return {\n matcher: new Minimatch(pattern, { dot: true }),\n gmatcher: gmatcher\n }\n}\n\nfunction setopts (self, pattern, options) {\n if (!options)\n options = {}\n\n // base-matching: just use globstar for that.\n if (options.matchBase && -1 === pattern.indexOf(\"/\")) {\n if (options.noglobstar) {\n throw new Error(\"base matching requires globstar\")\n }\n pattern = \"**/\" + pattern\n }\n\n self.silent = !!options.silent\n self.pattern = pattern\n self.strict = options.strict !== false\n self.realpath = !!options.realpath\n self.realpathCache = options.realpathCache || Object.create(null)\n self.follow = !!options.follow\n self.dot = !!options.dot\n self.mark = !!options.mark\n self.nodir = !!options.nodir\n if (self.nodir)\n self.mark = true\n self.sync = !!options.sync\n self.nounique = !!options.nounique\n self.nonull = !!options.nonull\n self.nosort = !!options.nosort\n self.nocase = !!options.nocase\n self.stat = !!options.stat\n self.noprocess = !!options.noprocess\n self.absolute = !!options.absolute\n self.fs = options.fs || fs\n\n self.maxLength = options.maxLength || Infinity\n self.cache = options.cache || Object.create(null)\n self.statCache = options.statCache || Object.create(null)\n self.symlinks = options.symlinks || Object.create(null)\n\n setupIgnores(self, options)\n\n self.changedCwd = false\n var cwd = process.cwd()\n if (!ownProp(options, \"cwd\"))\n self.cwd = cwd\n else {\n self.cwd = path.resolve(options.cwd)\n self.changedCwd = self.cwd !== cwd\n }\n\n self.root = options.root || path.resolve(self.cwd, \"/\")\n self.root = path.resolve(self.root)\n if (process.platform === \"win32\")\n self.root = self.root.replace(/\\\\/g, \"/\")\n\n // TODO: is an absolute `cwd` supposed to be resolved against `root`?\n // e.g. { cwd: '/test', root: __dirname } === path.join(__dirname, '/test')\n self.cwdAbs = isAbsolute(self.cwd) ? self.cwd : makeAbs(self, self.cwd)\n if (process.platform === \"win32\")\n self.cwdAbs = self.cwdAbs.replace(/\\\\/g, \"/\")\n self.nomount = !!options.nomount\n\n // disable comments and negation in Minimatch.\n // Note that they are not supported in Glob itself anyway.\n options.nonegate = true\n options.nocomment = true\n // always treat \\ in patterns as escapes, not path separators\n options.allowWindowsEscape = false\n\n self.minimatch = new Minimatch(pattern, options)\n self.options = self.minimatch.options\n}\n\nfunction finish (self) {\n var nou = self.nounique\n var all = nou ? [] : Object.create(null)\n\n for (var i = 0, l = self.matches.length; i < l; i ++) {\n var matches = self.matches[i]\n if (!matches || Object.keys(matches).length === 0) {\n if (self.nonull) {\n // do like the shell, and spit out the literal glob\n var literal = self.minimatch.globSet[i]\n if (nou)\n all.push(literal)\n else\n all[literal] = true\n }\n } else {\n // had matches\n var m = Object.keys(matches)\n if (nou)\n all.push.apply(all, m)\n else\n m.forEach(function (m) {\n all[m] = true\n })\n }\n }\n\n if (!nou)\n all = Object.keys(all)\n\n if (!self.nosort)\n all = all.sort(alphasort)\n\n // at *some* point we statted all of these\n if (self.mark) {\n for (var i = 0; i < all.length; i++) {\n all[i] = self._mark(all[i])\n }\n if (self.nodir) {\n all = all.filter(function (e) {\n var notDir = !(/\\/$/.test(e))\n var c = self.cache[e] || self.cache[makeAbs(self, e)]\n if (notDir && c)\n notDir = c !== 'DIR' && !Array.isArray(c)\n return notDir\n })\n }\n }\n\n if (self.ignore.length)\n all = all.filter(function(m) {\n return !isIgnored(self, m)\n })\n\n self.found = all\n}\n\nfunction mark (self, p) {\n var abs = makeAbs(self, p)\n var c = self.cache[abs]\n var m = p\n if (c) {\n var isDir = c === 'DIR' || Array.isArray(c)\n var slash = p.slice(-1) === '/'\n\n if (isDir && !slash)\n m += '/'\n else if (!isDir && slash)\n m = m.slice(0, -1)\n\n if (m !== p) {\n var mabs = makeAbs(self, m)\n self.statCache[mabs] = self.statCache[abs]\n self.cache[mabs] = self.cache[abs]\n }\n }\n\n return m\n}\n\n// lotta situps...\nfunction makeAbs (self, f) {\n var abs = f\n if (f.charAt(0) === '/') {\n abs = path.join(self.root, f)\n } else if (isAbsolute(f) || f === '') {\n abs = f\n } else if (self.changedCwd) {\n abs = path.resolve(self.cwd, f)\n } else {\n abs = path.resolve(f)\n }\n\n if (process.platform === 'win32')\n abs = abs.replace(/\\\\/g, '/')\n\n return abs\n}\n\n\n// Return true, if pattern ends with globstar '**', for the accompanying parent directory.\n// Ex:- If node_modules/** is the pattern, add 'node_modules' to ignore list along with it's contents\nfunction isIgnored (self, path) {\n if (!self.ignore.length)\n return false\n\n return self.ignore.some(function(item) {\n return item.matcher.match(path) || !!(item.gmatcher && item.gmatcher.match(path))\n })\n}\n\nfunction childrenIgnored (self, path) {\n if (!self.ignore.length)\n return false\n\n return self.ignore.some(function(item) {\n return !!(item.gmatcher && item.gmatcher.match(path))\n })\n}\n","module.exports = globSync\nglobSync.GlobSync = GlobSync\n\nvar rp = require('fs.realpath')\nvar minimatch = require('minimatch')\nvar Minimatch = minimatch.Minimatch\nvar Glob = require('./glob.js').Glob\nvar util = require('util')\nvar path = require('path')\nvar assert = require('assert')\nvar isAbsolute = require('path-is-absolute')\nvar common = require('./common.js')\nvar setopts = common.setopts\nvar ownProp = common.ownProp\nvar childrenIgnored = common.childrenIgnored\nvar isIgnored = common.isIgnored\n\nfunction globSync (pattern, options) {\n if (typeof options === 'function' || arguments.length === 3)\n throw new TypeError('callback provided to sync glob\\n'+\n 'See: https://github.com/isaacs/node-glob/issues/167')\n\n return new GlobSync(pattern, options).found\n}\n\nfunction GlobSync (pattern, options) {\n if (!pattern)\n throw new Error('must provide pattern')\n\n if (typeof options === 'function' || arguments.length === 3)\n throw new TypeError('callback provided to sync glob\\n'+\n 'See: https://github.com/isaacs/node-glob/issues/167')\n\n if (!(this instanceof GlobSync))\n return new GlobSync(pattern, options)\n\n setopts(this, pattern, options)\n\n if (this.noprocess)\n return this\n\n var n = this.minimatch.set.length\n this.matches = new Array(n)\n for (var i = 0; i < n; i ++) {\n this._process(this.minimatch.set[i], i, false)\n }\n this._finish()\n}\n\nGlobSync.prototype._finish = function () {\n assert.ok(this instanceof GlobSync)\n if (this.realpath) {\n var self = this\n this.matches.forEach(function (matchset, index) {\n var set = self.matches[index] = Object.create(null)\n for (var p in matchset) {\n try {\n p = self._makeAbs(p)\n var real = rp.realpathSync(p, self.realpathCache)\n set[real] = true\n } catch (er) {\n if (er.syscall === 'stat')\n set[self._makeAbs(p)] = true\n else\n throw er\n }\n }\n })\n }\n common.finish(this)\n}\n\n\nGlobSync.prototype._process = function (pattern, index, inGlobStar) {\n assert.ok(this instanceof GlobSync)\n\n // Get the first [n] parts of pattern that are all strings.\n var n = 0\n while (typeof pattern[n] === 'string') {\n n ++\n }\n // now n is the index of the first one that is *not* a string.\n\n // See if there's anything else\n var prefix\n switch (n) {\n // if not, then this is rather simple\n case pattern.length:\n this._processSimple(pattern.join('/'), index)\n return\n\n case 0:\n // pattern *starts* with some non-trivial item.\n // going to readdir(cwd), but not include the prefix in matches.\n prefix = null\n break\n\n default:\n // pattern has some string bits in the front.\n // whatever it starts with, whether that's 'absolute' like /foo/bar,\n // or 'relative' like '../baz'\n prefix = pattern.slice(0, n).join('/')\n break\n }\n\n var remain = pattern.slice(n)\n\n // get the list of entries.\n var read\n if (prefix === null)\n read = '.'\n else if (isAbsolute(prefix) ||\n isAbsolute(pattern.map(function (p) {\n return typeof p === 'string' ? p : '[*]'\n }).join('/'))) {\n if (!prefix || !isAbsolute(prefix))\n prefix = '/' + prefix\n read = prefix\n } else\n read = prefix\n\n var abs = this._makeAbs(read)\n\n //if ignored, skip processing\n if (childrenIgnored(this, read))\n return\n\n var isGlobStar = remain[0] === minimatch.GLOBSTAR\n if (isGlobStar)\n this._processGlobStar(prefix, read, abs, remain, index, inGlobStar)\n else\n this._processReaddir(prefix, read, abs, remain, index, inGlobStar)\n}\n\n\nGlobSync.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar) {\n var entries = this._readdir(abs, inGlobStar)\n\n // if the abs isn't a dir, then nothing can match!\n if (!entries)\n return\n\n // It will only match dot entries if it starts with a dot, or if\n // dot is set. Stuff like @(.foo|.bar) isn't allowed.\n var pn = remain[0]\n var negate = !!this.minimatch.negate\n var rawGlob = pn._glob\n var dotOk = this.dot || rawGlob.charAt(0) === '.'\n\n var matchedEntries = []\n for (var i = 0; i < entries.length; i++) {\n var e = entries[i]\n if (e.charAt(0) !== '.' || dotOk) {\n var m\n if (negate && !prefix) {\n m = !e.match(pn)\n } else {\n m = e.match(pn)\n }\n if (m)\n matchedEntries.push(e)\n }\n }\n\n var len = matchedEntries.length\n // If there are no matched entries, then nothing matches.\n if (len === 0)\n return\n\n // if this is the last remaining pattern bit, then no need for\n // an additional stat *unless* the user has specified mark or\n // stat explicitly. We know they exist, since readdir returned\n // them.\n\n if (remain.length === 1 && !this.mark && !this.stat) {\n if (!this.matches[index])\n this.matches[index] = Object.create(null)\n\n for (var i = 0; i < len; i ++) {\n var e = matchedEntries[i]\n if (prefix) {\n if (prefix.slice(-1) !== '/')\n e = prefix + '/' + e\n else\n e = prefix + e\n }\n\n if (e.charAt(0) === '/' && !this.nomount) {\n e = path.join(this.root, e)\n }\n this._emitMatch(index, e)\n }\n // This was the last one, and no stats were needed\n return\n }\n\n // now test all matched entries as stand-ins for that part\n // of the pattern.\n remain.shift()\n for (var i = 0; i < len; i ++) {\n var e = matchedEntries[i]\n var newPattern\n if (prefix)\n newPattern = [prefix, e]\n else\n newPattern = [e]\n this._process(newPattern.concat(remain), index, inGlobStar)\n }\n}\n\n\nGlobSync.prototype._emitMatch = function (index, e) {\n if (isIgnored(this, e))\n return\n\n var abs = this._makeAbs(e)\n\n if (this.mark)\n e = this._mark(e)\n\n if (this.absolute) {\n e = abs\n }\n\n if (this.matches[index][e])\n return\n\n if (this.nodir) {\n var c = this.cache[abs]\n if (c === 'DIR' || Array.isArray(c))\n return\n }\n\n this.matches[index][e] = true\n\n if (this.stat)\n this._stat(e)\n}\n\n\nGlobSync.prototype._readdirInGlobStar = function (abs) {\n // follow all symlinked directories forever\n // just proceed as if this is a non-globstar situation\n if (this.follow)\n return this._readdir(abs, false)\n\n var entries\n var lstat\n var stat\n try {\n lstat = this.fs.lstatSync(abs)\n } catch (er) {\n if (er.code === 'ENOENT') {\n // lstat failed, doesn't exist\n return null\n }\n }\n\n var isSym = lstat && lstat.isSymbolicLink()\n this.symlinks[abs] = isSym\n\n // If it's not a symlink or a dir, then it's definitely a regular file.\n // don't bother doing a readdir in that case.\n if (!isSym && lstat && !lstat.isDirectory())\n this.cache[abs] = 'FILE'\n else\n entries = this._readdir(abs, false)\n\n return entries\n}\n\nGlobSync.prototype._readdir = function (abs, inGlobStar) {\n var entries\n\n if (inGlobStar && !ownProp(this.symlinks, abs))\n return this._readdirInGlobStar(abs)\n\n if (ownProp(this.cache, abs)) {\n var c = this.cache[abs]\n if (!c || c === 'FILE')\n return null\n\n if (Array.isArray(c))\n return c\n }\n\n try {\n return this._readdirEntries(abs, this.fs.readdirSync(abs))\n } catch (er) {\n this._readdirError(abs, er)\n return null\n }\n}\n\nGlobSync.prototype._readdirEntries = function (abs, entries) {\n // if we haven't asked to stat everything, then just\n // assume that everything in there exists, so we can avoid\n // having to stat it a second time.\n if (!this.mark && !this.stat) {\n for (var i = 0; i < entries.length; i ++) {\n var e = entries[i]\n if (abs === '/')\n e = abs + e\n else\n e = abs + '/' + e\n this.cache[e] = true\n }\n }\n\n this.cache[abs] = entries\n\n // mark and cache dir-ness\n return entries\n}\n\nGlobSync.prototype._readdirError = function (f, er) {\n // handle errors, and cache the information\n switch (er.code) {\n case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205\n case 'ENOTDIR': // totally normal. means it *does* exist.\n var abs = this._makeAbs(f)\n this.cache[abs] = 'FILE'\n if (abs === this.cwdAbs) {\n var error = new Error(er.code + ' invalid cwd ' + this.cwd)\n error.path = this.cwd\n error.code = er.code\n throw error\n }\n break\n\n case 'ENOENT': // not terribly unusual\n case 'ELOOP':\n case 'ENAMETOOLONG':\n case 'UNKNOWN':\n this.cache[this._makeAbs(f)] = false\n break\n\n default: // some unusual error. Treat as failure.\n this.cache[this._makeAbs(f)] = false\n if (this.strict)\n throw er\n if (!this.silent)\n console.error('glob error', er)\n break\n }\n}\n\nGlobSync.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar) {\n\n var entries = this._readdir(abs, inGlobStar)\n\n // no entries means not a dir, so it can never have matches\n // foo.txt/** doesn't match foo.txt\n if (!entries)\n return\n\n // test without the globstar, and with every child both below\n // and replacing the globstar.\n var remainWithoutGlobStar = remain.slice(1)\n var gspref = prefix ? [ prefix ] : []\n var noGlobStar = gspref.concat(remainWithoutGlobStar)\n\n // the noGlobStar pattern exits the inGlobStar state\n this._process(noGlobStar, index, false)\n\n var len = entries.length\n var isSym = this.symlinks[abs]\n\n // If it's a symlink, and we're in a globstar, then stop\n if (isSym && inGlobStar)\n return\n\n for (var i = 0; i < len; i++) {\n var e = entries[i]\n if (e.charAt(0) === '.' && !this.dot)\n continue\n\n // these two cases enter the inGlobStar state\n var instead = gspref.concat(entries[i], remainWithoutGlobStar)\n this._process(instead, index, true)\n\n var below = gspref.concat(entries[i], remain)\n this._process(below, index, true)\n }\n}\n\nGlobSync.prototype._processSimple = function (prefix, index) {\n // XXX review this. Shouldn't it be doing the mounting etc\n // before doing stat? kinda weird?\n var exists = this._stat(prefix)\n\n if (!this.matches[index])\n this.matches[index] = Object.create(null)\n\n // If it doesn't exist, then just mark the lack of results\n if (!exists)\n return\n\n if (prefix && isAbsolute(prefix) && !this.nomount) {\n var trail = /[\\/\\\\]$/.test(prefix)\n if (prefix.charAt(0) === '/') {\n prefix = path.join(this.root, prefix)\n } else {\n prefix = path.resolve(this.root, prefix)\n if (trail)\n prefix += '/'\n }\n }\n\n if (process.platform === 'win32')\n prefix = prefix.replace(/\\\\/g, '/')\n\n // Mark this as a match\n this._emitMatch(index, prefix)\n}\n\n// Returns either 'DIR', 'FILE', or false\nGlobSync.prototype._stat = function (f) {\n var abs = this._makeAbs(f)\n var needDir = f.slice(-1) === '/'\n\n if (f.length > this.maxLength)\n return false\n\n if (!this.stat && ownProp(this.cache, abs)) {\n var c = this.cache[abs]\n\n if (Array.isArray(c))\n c = 'DIR'\n\n // It exists, but maybe not how we need it\n if (!needDir || c === 'DIR')\n return c\n\n if (needDir && c === 'FILE')\n return false\n\n // otherwise we have to stat, because maybe c=true\n // if we know it exists, but not what it is.\n }\n\n var exists\n var stat = this.statCache[abs]\n if (!stat) {\n var lstat\n try {\n lstat = this.fs.lstatSync(abs)\n } catch (er) {\n if (er && (er.code === 'ENOENT' || er.code === 'ENOTDIR')) {\n this.statCache[abs] = false\n return false\n }\n }\n\n if (lstat && lstat.isSymbolicLink()) {\n try {\n stat = this.fs.statSync(abs)\n } catch (er) {\n stat = lstat\n }\n } else {\n stat = lstat\n }\n }\n\n this.statCache[abs] = stat\n\n var c = true\n if (stat)\n c = stat.isDirectory() ? 'DIR' : 'FILE'\n\n this.cache[abs] = this.cache[abs] || c\n\n if (needDir && c === 'FILE')\n return false\n\n return c\n}\n\nGlobSync.prototype._mark = function (p) {\n return common.mark(this, p)\n}\n\nGlobSync.prototype._makeAbs = function (f) {\n return common.makeAbs(this, f)\n}\n","// Returns a wrapper function that returns a wrapped callback\n// The wrapper function should do some stuff, and return a\n// presumably different callback function.\n// This makes sure that own properties are retained, so that\n// decorations and such are not lost along the way.\nmodule.exports = wrappy\nfunction wrappy (fn, cb) {\n if (fn && cb) return wrappy(fn)(cb)\n\n if (typeof fn !== 'function')\n throw new TypeError('need wrapper function')\n\n Object.keys(fn).forEach(function (k) {\n wrapper[k] = fn[k]\n })\n\n return wrapper\n\n function wrapper() {\n var args = new Array(arguments.length)\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i]\n }\n var ret = fn.apply(this, args)\n var cb = args[args.length-1]\n if (typeof ret === 'function' && ret !== cb) {\n Object.keys(cb).forEach(function (k) {\n ret[k] = cb[k]\n })\n }\n return ret\n }\n}\n","var wrappy = require('wrappy')\nmodule.exports = wrappy(once)\nmodule.exports.strict = wrappy(onceStrict)\n\nonce.proto = once(function () {\n Object.defineProperty(Function.prototype, 'once', {\n value: function () {\n return once(this)\n },\n configurable: true\n })\n\n Object.defineProperty(Function.prototype, 'onceStrict', {\n value: function () {\n return onceStrict(this)\n },\n configurable: true\n })\n})\n\nfunction once (fn) {\n var f = function () {\n if (f.called) return f.value\n f.called = true\n return f.value = fn.apply(this, arguments)\n }\n f.called = false\n return f\n}\n\nfunction onceStrict (fn) {\n var f = function () {\n if (f.called)\n throw new Error(f.onceError)\n f.called = true\n return f.value = fn.apply(this, arguments)\n }\n var name = fn.name || 'Function wrapped with `once`'\n f.onceError = name + \" shouldn't be called more than once\"\n f.called = false\n return f\n}\n","var wrappy = require('wrappy')\nvar reqs = Object.create(null)\nvar once = require('once')\n\nmodule.exports = wrappy(inflight)\n\nfunction inflight (key, cb) {\n if (reqs[key]) {\n reqs[key].push(cb)\n return null\n } else {\n reqs[key] = [cb]\n return makeres(key)\n }\n}\n\nfunction makeres (key) {\n return once(function RES () {\n var cbs = reqs[key]\n var len = cbs.length\n var args = slice(arguments)\n\n // XXX It's somewhat ambiguous whether a new callback added in this\n // pass should be queued for later execution if something in the\n // list of callbacks throws, or if it should just be discarded.\n // However, it's such an edge case that it hardly matters, and either\n // choice is likely as surprising as the other.\n // As it happens, we do go ahead and schedule it for later execution.\n try {\n for (var i = 0; i < len; i++) {\n cbs[i].apply(null, args)\n }\n } finally {\n if (cbs.length > len) {\n // added more in the interim.\n // de-zalgo, just in case, but don't call again.\n cbs.splice(0, len)\n process.nextTick(function () {\n RES.apply(null, args)\n })\n } else {\n delete reqs[key]\n }\n }\n })\n}\n\nfunction slice (args) {\n var length = args.length\n var array = []\n\n for (var i = 0; i < length; i++) array[i] = args[i]\n return array\n}\n","// Approach:\n//\n// 1. Get the minimatch set\n// 2. For each pattern in the set, PROCESS(pattern, false)\n// 3. Store matches per-set, then uniq them\n//\n// PROCESS(pattern, inGlobStar)\n// Get the first [n] items from pattern that are all strings\n// Join these together. This is PREFIX.\n// If there is no more remaining, then stat(PREFIX) and\n// add to matches if it succeeds. END.\n//\n// If inGlobStar and PREFIX is symlink and points to dir\n// set ENTRIES = []\n// else readdir(PREFIX) as ENTRIES\n// If fail, END\n//\n// with ENTRIES\n// If pattern[n] is GLOBSTAR\n// // handle the case where the globstar match is empty\n// // by pruning it out, and testing the resulting pattern\n// PROCESS(pattern[0..n] + pattern[n+1 .. $], false)\n// // handle other cases.\n// for ENTRY in ENTRIES (not dotfiles)\n// // attach globstar + tail onto the entry\n// // Mark that this entry is a globstar match\n// PROCESS(pattern[0..n] + ENTRY + pattern[n .. $], true)\n//\n// else // not globstar\n// for ENTRY in ENTRIES (not dotfiles, unless pattern[n] is dot)\n// Test ENTRY against pattern[n]\n// If fails, continue\n// If passes, PROCESS(pattern[0..n] + item + pattern[n+1 .. $])\n//\n// Caveat:\n// Cache all stats and readdirs results to minimize syscall. Since all\n// we ever care about is existence and directory-ness, we can just keep\n// `true` for files, and [children,...] for directories, or `false` for\n// things that don't exist.\n\nmodule.exports = glob\n\nvar rp = require('fs.realpath')\nvar minimatch = require('minimatch')\nvar Minimatch = minimatch.Minimatch\nvar inherits = require('inherits')\nvar EE = require('events').EventEmitter\nvar path = require('path')\nvar assert = require('assert')\nvar isAbsolute = require('path-is-absolute')\nvar globSync = require('./sync.js')\nvar common = require('./common.js')\nvar setopts = common.setopts\nvar ownProp = common.ownProp\nvar inflight = require('inflight')\nvar util = require('util')\nvar childrenIgnored = common.childrenIgnored\nvar isIgnored = common.isIgnored\n\nvar once = require('once')\n\nfunction glob (pattern, options, cb) {\n if (typeof options === 'function') cb = options, options = {}\n if (!options) options = {}\n\n if (options.sync) {\n if (cb)\n throw new TypeError('callback provided to sync glob')\n return globSync(pattern, options)\n }\n\n return new Glob(pattern, options, cb)\n}\n\nglob.sync = globSync\nvar GlobSync = glob.GlobSync = globSync.GlobSync\n\n// old api surface\nglob.glob = glob\n\nfunction extend (origin, add) {\n if (add === null || typeof add !== 'object') {\n return origin\n }\n\n var keys = Object.keys(add)\n var i = keys.length\n while (i--) {\n origin[keys[i]] = add[keys[i]]\n }\n return origin\n}\n\nglob.hasMagic = function (pattern, options_) {\n var options = extend({}, options_)\n options.noprocess = true\n\n var g = new Glob(pattern, options)\n var set = g.minimatch.set\n\n if (!pattern)\n return false\n\n if (set.length > 1)\n return true\n\n for (var j = 0; j < set[0].length; j++) {\n if (typeof set[0][j] !== 'string')\n return true\n }\n\n return false\n}\n\nglob.Glob = Glob\ninherits(Glob, EE)\nfunction Glob (pattern, options, cb) {\n if (typeof options === 'function') {\n cb = options\n options = null\n }\n\n if (options && options.sync) {\n if (cb)\n throw new TypeError('callback provided to sync glob')\n return new GlobSync(pattern, options)\n }\n\n if (!(this instanceof Glob))\n return new Glob(pattern, options, cb)\n\n setopts(this, pattern, options)\n this._didRealPath = false\n\n // process each pattern in the minimatch set\n var n = this.minimatch.set.length\n\n // The matches are stored as {<filename>: true,...} so that\n // duplicates are automagically pruned.\n // Later, we do an Object.keys() on these.\n // Keep them as a list so we can fill in when nonull is set.\n this.matches = new Array(n)\n\n if (typeof cb === 'function') {\n cb = once(cb)\n this.on('error', cb)\n this.on('end', function (matches) {\n cb(null, matches)\n })\n }\n\n var self = this\n this._processing = 0\n\n this._emitQueue = []\n this._processQueue = []\n this.paused = false\n\n if (this.noprocess)\n return this\n\n if (n === 0)\n return done()\n\n var sync = true\n for (var i = 0; i < n; i ++) {\n this._process(this.minimatch.set[i], i, false, done)\n }\n sync = false\n\n function done () {\n --self._processing\n if (self._processing <= 0) {\n if (sync) {\n process.nextTick(function () {\n self._finish()\n })\n } else {\n self._finish()\n }\n }\n }\n}\n\nGlob.prototype._finish = function () {\n assert(this instanceof Glob)\n if (this.aborted)\n return\n\n if (this.realpath && !this._didRealpath)\n return this._realpath()\n\n common.finish(this)\n this.emit('end', this.found)\n}\n\nGlob.prototype._realpath = function () {\n if (this._didRealpath)\n return\n\n this._didRealpath = true\n\n var n = this.matches.length\n if (n === 0)\n return this._finish()\n\n var self = this\n for (var i = 0; i < this.matches.length; i++)\n this._realpathSet(i, next)\n\n function next () {\n if (--n === 0)\n self._finish()\n }\n}\n\nGlob.prototype._realpathSet = function (index, cb) {\n var matchset = this.matches[index]\n if (!matchset)\n return cb()\n\n var found = Object.keys(matchset)\n var self = this\n var n = found.length\n\n if (n === 0)\n return cb()\n\n var set = this.matches[index] = Object.create(null)\n found.forEach(function (p, i) {\n // If there's a problem with the stat, then it means that\n // one or more of the links in the realpath couldn't be\n // resolved. just return the abs value in that case.\n p = self._makeAbs(p)\n rp.realpath(p, self.realpathCache, function (er, real) {\n if (!er)\n set[real] = true\n else if (er.syscall === 'stat')\n set[p] = true\n else\n self.emit('error', er) // srsly wtf right here\n\n if (--n === 0) {\n self.matches[index] = set\n cb()\n }\n })\n })\n}\n\nGlob.prototype._mark = function (p) {\n return common.mark(this, p)\n}\n\nGlob.prototype._makeAbs = function (f) {\n return common.makeAbs(this, f)\n}\n\nGlob.prototype.abort = function () {\n this.aborted = true\n this.emit('abort')\n}\n\nGlob.prototype.pause = function () {\n if (!this.paused) {\n this.paused = true\n this.emit('pause')\n }\n}\n\nGlob.prototype.resume = function () {\n if (this.paused) {\n this.emit('resume')\n this.paused = false\n if (this._emitQueue.length) {\n var eq = this._emitQueue.slice(0)\n this._emitQueue.length = 0\n for (var i = 0; i < eq.length; i ++) {\n var e = eq[i]\n this._emitMatch(e[0], e[1])\n }\n }\n if (this._processQueue.length) {\n var pq = this._processQueue.slice(0)\n this._processQueue.length = 0\n for (var i = 0; i < pq.length; i ++) {\n var p = pq[i]\n this._processing--\n this._process(p[0], p[1], p[2], p[3])\n }\n }\n }\n}\n\nGlob.prototype._process = function (pattern, index, inGlobStar, cb) {\n assert(this instanceof Glob)\n assert(typeof cb === 'function')\n\n if (this.aborted)\n return\n\n this._processing++\n if (this.paused) {\n this._processQueue.push([pattern, index, inGlobStar, cb])\n return\n }\n\n //console.error('PROCESS %d', this._processing, pattern)\n\n // Get the first [n] parts of pattern that are all strings.\n var n = 0\n while (typeof pattern[n] === 'string') {\n n ++\n }\n // now n is the index of the first one that is *not* a string.\n\n // see if there's anything else\n var prefix\n switch (n) {\n // if not, then this is rather simple\n case pattern.length:\n this._processSimple(pattern.join('/'), index, cb)\n return\n\n case 0:\n // pattern *starts* with some non-trivial item.\n // going to readdir(cwd), but not include the prefix in matches.\n prefix = null\n break\n\n default:\n // pattern has some string bits in the front.\n // whatever it starts with, whether that's 'absolute' like /foo/bar,\n // or 'relative' like '../baz'\n prefix = pattern.slice(0, n).join('/')\n break\n }\n\n var remain = pattern.slice(n)\n\n // get the list of entries.\n var read\n if (prefix === null)\n read = '.'\n else if (isAbsolute(prefix) ||\n isAbsolute(pattern.map(function (p) {\n return typeof p === 'string' ? p : '[*]'\n }).join('/'))) {\n if (!prefix || !isAbsolute(prefix))\n prefix = '/' + prefix\n read = prefix\n } else\n read = prefix\n\n var abs = this._makeAbs(read)\n\n //if ignored, skip _processing\n if (childrenIgnored(this, read))\n return cb()\n\n var isGlobStar = remain[0] === minimatch.GLOBSTAR\n if (isGlobStar)\n this._processGlobStar(prefix, read, abs, remain, index, inGlobStar, cb)\n else\n this._processReaddir(prefix, read, abs, remain, index, inGlobStar, cb)\n}\n\nGlob.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar, cb) {\n var self = this\n this._readdir(abs, inGlobStar, function (er, entries) {\n return self._processReaddir2(prefix, read, abs, remain, index, inGlobStar, entries, cb)\n })\n}\n\nGlob.prototype._processReaddir2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) {\n\n // if the abs isn't a dir, then nothing can match!\n if (!entries)\n return cb()\n\n // It will only match dot entries if it starts with a dot, or if\n // dot is set. Stuff like @(.foo|.bar) isn't allowed.\n var pn = remain[0]\n var negate = !!this.minimatch.negate\n var rawGlob = pn._glob\n var dotOk = this.dot || rawGlob.charAt(0) === '.'\n\n var matchedEntries = []\n for (var i = 0; i < entries.length; i++) {\n var e = entries[i]\n if (e.charAt(0) !== '.' || dotOk) {\n var m\n if (negate && !prefix) {\n m = !e.match(pn)\n } else {\n m = e.match(pn)\n }\n if (m)\n matchedEntries.push(e)\n }\n }\n\n //console.error('prd2', prefix, entries, remain[0]._glob, matchedEntries)\n\n var len = matchedEntries.length\n // If there are no matched entries, then nothing matches.\n if (len === 0)\n return cb()\n\n // if this is the last remaining pattern bit, then no need for\n // an additional stat *unless* the user has specified mark or\n // stat explicitly. We know they exist, since readdir returned\n // them.\n\n if (remain.length === 1 && !this.mark && !this.stat) {\n if (!this.matches[index])\n this.matches[index] = Object.create(null)\n\n for (var i = 0; i < len; i ++) {\n var e = matchedEntries[i]\n if (prefix) {\n if (prefix !== '/')\n e = prefix + '/' + e\n else\n e = prefix + e\n }\n\n if (e.charAt(0) === '/' && !this.nomount) {\n e = path.join(this.root, e)\n }\n this._emitMatch(index, e)\n }\n // This was the last one, and no stats were needed\n return cb()\n }\n\n // now test all matched entries as stand-ins for that part\n // of the pattern.\n remain.shift()\n for (var i = 0; i < len; i ++) {\n var e = matchedEntries[i]\n var newPattern\n if (prefix) {\n if (prefix !== '/')\n e = prefix + '/' + e\n else\n e = prefix + e\n }\n this._process([e].concat(remain), index, inGlobStar, cb)\n }\n cb()\n}\n\nGlob.prototype._emitMatch = function (index, e) {\n if (this.aborted)\n return\n\n if (isIgnored(this, e))\n return\n\n if (this.paused) {\n this._emitQueue.push([index, e])\n return\n }\n\n var abs = isAbsolute(e) ? e : this._makeAbs(e)\n\n if (this.mark)\n e = this._mark(e)\n\n if (this.absolute)\n e = abs\n\n if (this.matches[index][e])\n return\n\n if (this.nodir) {\n var c = this.cache[abs]\n if (c === 'DIR' || Array.isArray(c))\n return\n }\n\n this.matches[index][e] = true\n\n var st = this.statCache[abs]\n if (st)\n this.emit('stat', e, st)\n\n this.emit('match', e)\n}\n\nGlob.prototype._readdirInGlobStar = function (abs, cb) {\n if (this.aborted)\n return\n\n // follow all symlinked directories forever\n // just proceed as if this is a non-globstar situation\n if (this.follow)\n return this._readdir(abs, false, cb)\n\n var lstatkey = 'lstat\\0' + abs\n var self = this\n var lstatcb = inflight(lstatkey, lstatcb_)\n\n if (lstatcb)\n self.fs.lstat(abs, lstatcb)\n\n function lstatcb_ (er, lstat) {\n if (er && er.code === 'ENOENT')\n return cb()\n\n var isSym = lstat && lstat.isSymbolicLink()\n self.symlinks[abs] = isSym\n\n // If it's not a symlink or a dir, then it's definitely a regular file.\n // don't bother doing a readdir in that case.\n if (!isSym && lstat && !lstat.isDirectory()) {\n self.cache[abs] = 'FILE'\n cb()\n } else\n self._readdir(abs, false, cb)\n }\n}\n\nGlob.prototype._readdir = function (abs, inGlobStar, cb) {\n if (this.aborted)\n return\n\n cb = inflight('readdir\\0'+abs+'\\0'+inGlobStar, cb)\n if (!cb)\n return\n\n //console.error('RD %j %j', +inGlobStar, abs)\n if (inGlobStar && !ownProp(this.symlinks, abs))\n return this._readdirInGlobStar(abs, cb)\n\n if (ownProp(this.cache, abs)) {\n var c = this.cache[abs]\n if (!c || c === 'FILE')\n return cb()\n\n if (Array.isArray(c))\n return cb(null, c)\n }\n\n var self = this\n self.fs.readdir(abs, readdirCb(this, abs, cb))\n}\n\nfunction readdirCb (self, abs, cb) {\n return function (er, entries) {\n if (er)\n self._readdirError(abs, er, cb)\n else\n self._readdirEntries(abs, entries, cb)\n }\n}\n\nGlob.prototype._readdirEntries = function (abs, entries, cb) {\n if (this.aborted)\n return\n\n // if we haven't asked to stat everything, then just\n // assume that everything in there exists, so we can avoid\n // having to stat it a second time.\n if (!this.mark && !this.stat) {\n for (var i = 0; i < entries.length; i ++) {\n var e = entries[i]\n if (abs === '/')\n e = abs + e\n else\n e = abs + '/' + e\n this.cache[e] = true\n }\n }\n\n this.cache[abs] = entries\n return cb(null, entries)\n}\n\nGlob.prototype._readdirError = function (f, er, cb) {\n if (this.aborted)\n return\n\n // handle errors, and cache the information\n switch (er.code) {\n case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205\n case 'ENOTDIR': // totally normal. means it *does* exist.\n var abs = this._makeAbs(f)\n this.cache[abs] = 'FILE'\n if (abs === this.cwdAbs) {\n var error = new Error(er.code + ' invalid cwd ' + this.cwd)\n error.path = this.cwd\n error.code = er.code\n this.emit('error', error)\n this.abort()\n }\n break\n\n case 'ENOENT': // not terribly unusual\n case 'ELOOP':\n case 'ENAMETOOLONG':\n case 'UNKNOWN':\n this.cache[this._makeAbs(f)] = false\n break\n\n default: // some unusual error. Treat as failure.\n this.cache[this._makeAbs(f)] = false\n if (this.strict) {\n this.emit('error', er)\n // If the error is handled, then we abort\n // if not, we threw out of here\n this.abort()\n }\n if (!this.silent)\n console.error('glob error', er)\n break\n }\n\n return cb()\n}\n\nGlob.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar, cb) {\n var self = this\n this._readdir(abs, inGlobStar, function (er, entries) {\n self._processGlobStar2(prefix, read, abs, remain, index, inGlobStar, entries, cb)\n })\n}\n\n\nGlob.prototype._processGlobStar2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) {\n //console.error('pgs2', prefix, remain[0], entries)\n\n // no entries means not a dir, so it can never have matches\n // foo.txt/** doesn't match foo.txt\n if (!entries)\n return cb()\n\n // test without the globstar, and with every child both below\n // and replacing the globstar.\n var remainWithoutGlobStar = remain.slice(1)\n var gspref = prefix ? [ prefix ] : []\n var noGlobStar = gspref.concat(remainWithoutGlobStar)\n\n // the noGlobStar pattern exits the inGlobStar state\n this._process(noGlobStar, index, false, cb)\n\n var isSym = this.symlinks[abs]\n var len = entries.length\n\n // If it's a symlink, and we're in a globstar, then stop\n if (isSym && inGlobStar)\n return cb()\n\n for (var i = 0; i < len; i++) {\n var e = entries[i]\n if (e.charAt(0) === '.' && !this.dot)\n continue\n\n // these two cases enter the inGlobStar state\n var instead = gspref.concat(entries[i], remainWithoutGlobStar)\n this._process(instead, index, true, cb)\n\n var below = gspref.concat(entries[i], remain)\n this._process(below, index, true, cb)\n }\n\n cb()\n}\n\nGlob.prototype._processSimple = function (prefix, index, cb) {\n // XXX review this. Shouldn't it be doing the mounting etc\n // before doing stat? kinda weird?\n var self = this\n this._stat(prefix, function (er, exists) {\n self._processSimple2(prefix, index, er, exists, cb)\n })\n}\nGlob.prototype._processSimple2 = function (prefix, index, er, exists, cb) {\n\n //console.error('ps2', prefix, exists)\n\n if (!this.matches[index])\n this.matches[index] = Object.create(null)\n\n // If it doesn't exist, then just mark the lack of results\n if (!exists)\n return cb()\n\n if (prefix && isAbsolute(prefix) && !this.nomount) {\n var trail = /[\\/\\\\]$/.test(prefix)\n if (prefix.charAt(0) === '/') {\n prefix = path.join(this.root, prefix)\n } else {\n prefix = path.resolve(this.root, prefix)\n if (trail)\n prefix += '/'\n }\n }\n\n if (process.platform === 'win32')\n prefix = prefix.replace(/\\\\/g, '/')\n\n // Mark this as a match\n this._emitMatch(index, prefix)\n cb()\n}\n\n// Returns either 'DIR', 'FILE', or false\nGlob.prototype._stat = function (f, cb) {\n var abs = this._makeAbs(f)\n var needDir = f.slice(-1) === '/'\n\n if (f.length > this.maxLength)\n return cb()\n\n if (!this.stat && ownProp(this.cache, abs)) {\n var c = this.cache[abs]\n\n if (Array.isArray(c))\n c = 'DIR'\n\n // It exists, but maybe not how we need it\n if (!needDir || c === 'DIR')\n return cb(null, c)\n\n if (needDir && c === 'FILE')\n return cb()\n\n // otherwise we have to stat, because maybe c=true\n // if we know it exists, but not what it is.\n }\n\n var exists\n var stat = this.statCache[abs]\n if (stat !== undefined) {\n if (stat === false)\n return cb(null, stat)\n else {\n var type = stat.isDirectory() ? 'DIR' : 'FILE'\n if (needDir && type === 'FILE')\n return cb()\n else\n return cb(null, type, stat)\n }\n }\n\n var self = this\n var statcb = inflight('stat\\0' + abs, lstatcb_)\n if (statcb)\n self.fs.lstat(abs, statcb)\n\n function lstatcb_ (er, lstat) {\n if (lstat && lstat.isSymbolicLink()) {\n // If it's a symlink, then treat it as the target, unless\n // the target does not exist, then treat it as a file.\n return self.fs.stat(abs, function (er, stat) {\n if (er)\n self._stat2(f, abs, null, lstat, cb)\n else\n self._stat2(f, abs, er, stat, cb)\n })\n } else {\n self._stat2(f, abs, er, lstat, cb)\n }\n }\n}\n\nGlob.prototype._stat2 = function (f, abs, er, stat, cb) {\n if (er && (er.code === 'ENOENT' || er.code === 'ENOTDIR')) {\n this.statCache[abs] = false\n return cb()\n }\n\n var needDir = f.slice(-1) === '/'\n this.statCache[abs] = stat\n\n if (abs.slice(-1) === '/' && stat && !stat.isDirectory())\n return cb(null, false, stat)\n\n var c = true\n if (stat)\n c = stat.isDirectory() ? 'DIR' : 'FILE'\n this.cache[abs] = this.cache[abs] || c\n\n if (needDir && c === 'FILE')\n return cb()\n\n return cb(null, c, stat)\n}\n","const assert = require(\"assert\")\nconst path = require(\"path\")\nconst fs = require(\"fs\")\nlet glob = undefined\ntry {\n glob = require(\"glob\")\n} catch (_err) {\n // treat glob as optional.\n}\n\nconst defaultGlobOpts = {\n nosort: true,\n silent: true\n}\n\n// for EMFILE handling\nlet timeout = 0\n\nconst isWindows = (process.platform === \"win32\")\n\nconst defaults = options => {\n const methods = [\n 'unlink',\n 'chmod',\n 'stat',\n 'lstat',\n 'rmdir',\n 'readdir'\n ]\n methods.forEach(m => {\n options[m] = options[m] || fs[m]\n m = m + 'Sync'\n options[m] = options[m] || fs[m]\n })\n\n options.maxBusyTries = options.maxBusyTries || 3\n options.emfileWait = options.emfileWait || 1000\n if (options.glob === false) {\n options.disableGlob = true\n }\n if (options.disableGlob !== true && glob === undefined) {\n throw Error('glob dependency not found, set `options.disableGlob = true` if intentional')\n }\n options.disableGlob = options.disableGlob || false\n options.glob = options.glob || defaultGlobOpts\n}\n\nconst rimraf = (p, options, cb) => {\n if (typeof options === 'function') {\n cb = options\n options = {}\n }\n\n assert(p, 'rimraf: missing path')\n assert.equal(typeof p, 'string', 'rimraf: path should be a string')\n assert.equal(typeof cb, 'function', 'rimraf: callback function required')\n assert(options, 'rimraf: invalid options argument provided')\n assert.equal(typeof options, 'object', 'rimraf: options should be object')\n\n defaults(options)\n\n let busyTries = 0\n let errState = null\n let n = 0\n\n const next = (er) => {\n errState = errState || er\n if (--n === 0)\n cb(errState)\n }\n\n const afterGlob = (er, results) => {\n if (er)\n return cb(er)\n\n n = results.length\n if (n === 0)\n return cb()\n\n results.forEach(p => {\n const CB = (er) => {\n if (er) {\n if ((er.code === \"EBUSY\" || er.code === \"ENOTEMPTY\" || er.code === \"EPERM\") &&\n busyTries < options.maxBusyTries) {\n busyTries ++\n // try again, with the same exact callback as this one.\n return setTimeout(() => rimraf_(p, options, CB), busyTries * 100)\n }\n\n // this one won't happen if graceful-fs is used.\n if (er.code === \"EMFILE\" && timeout < options.emfileWait) {\n return setTimeout(() => rimraf_(p, options, CB), timeout ++)\n }\n\n // already gone\n if (er.code === \"ENOENT\") er = null\n }\n\n timeout = 0\n next(er)\n }\n rimraf_(p, options, CB)\n })\n }\n\n if (options.disableGlob || !glob.hasMagic(p))\n return afterGlob(null, [p])\n\n options.lstat(p, (er, stat) => {\n if (!er)\n return afterGlob(null, [p])\n\n glob(p, options.glob, afterGlob)\n })\n\n}\n\n// Two possible strategies.\n// 1. Assume it's a file. unlink it, then do the dir stuff on EPERM or EISDIR\n// 2. Assume it's a directory. readdir, then do the file stuff on ENOTDIR\n//\n// Both result in an extra syscall when you guess wrong. However, there\n// are likely far more normal files in the world than directories. This\n// is based on the assumption that a the average number of files per\n// directory is >= 1.\n//\n// If anyone ever complains about this, then I guess the strategy could\n// be made configurable somehow. But until then, YAGNI.\nconst rimraf_ = (p, options, cb) => {\n assert(p)\n assert(options)\n assert(typeof cb === 'function')\n\n // sunos lets the root user unlink directories, which is... weird.\n // so we have to lstat here and make sure it's not a dir.\n options.lstat(p, (er, st) => {\n if (er && er.code === \"ENOENT\")\n return cb(null)\n\n // Windows can EPERM on stat. Life is suffering.\n if (er && er.code === \"EPERM\" && isWindows)\n fixWinEPERM(p, options, er, cb)\n\n if (st && st.isDirectory())\n return rmdir(p, options, er, cb)\n\n options.unlink(p, er => {\n if (er) {\n if (er.code === \"ENOENT\")\n return cb(null)\n if (er.code === \"EPERM\")\n return (isWindows)\n ? fixWinEPERM(p, options, er, cb)\n : rmdir(p, options, er, cb)\n if (er.code === \"EISDIR\")\n return rmdir(p, options, er, cb)\n }\n return cb(er)\n })\n })\n}\n\nconst fixWinEPERM = (p, options, er, cb) => {\n assert(p)\n assert(options)\n assert(typeof cb === 'function')\n\n options.chmod(p, 0o666, er2 => {\n if (er2)\n cb(er2.code === \"ENOENT\" ? null : er)\n else\n options.stat(p, (er3, stats) => {\n if (er3)\n cb(er3.code === \"ENOENT\" ? null : er)\n else if (stats.isDirectory())\n rmdir(p, options, er, cb)\n else\n options.unlink(p, cb)\n })\n })\n}\n\nconst fixWinEPERMSync = (p, options, er) => {\n assert(p)\n assert(options)\n\n try {\n options.chmodSync(p, 0o666)\n } catch (er2) {\n if (er2.code === \"ENOENT\")\n return\n else\n throw er\n }\n\n let stats\n try {\n stats = options.statSync(p)\n } catch (er3) {\n if (er3.code === \"ENOENT\")\n return\n else\n throw er\n }\n\n if (stats.isDirectory())\n rmdirSync(p, options, er)\n else\n options.unlinkSync(p)\n}\n\nconst rmdir = (p, options, originalEr, cb) => {\n assert(p)\n assert(options)\n assert(typeof cb === 'function')\n\n // try to rmdir first, and only readdir on ENOTEMPTY or EEXIST (SunOS)\n // if we guessed wrong, and it's not a directory, then\n // raise the original error.\n options.rmdir(p, er => {\n if (er && (er.code === \"ENOTEMPTY\" || er.code === \"EEXIST\" || er.code === \"EPERM\"))\n rmkids(p, options, cb)\n else if (er && er.code === \"ENOTDIR\")\n cb(originalEr)\n else\n cb(er)\n })\n}\n\nconst rmkids = (p, options, cb) => {\n assert(p)\n assert(options)\n assert(typeof cb === 'function')\n\n options.readdir(p, (er, files) => {\n if (er)\n return cb(er)\n let n = files.length\n if (n === 0)\n return options.rmdir(p, cb)\n let errState\n files.forEach(f => {\n rimraf(path.join(p, f), options, er => {\n if (errState)\n return\n if (er)\n return cb(errState = er)\n if (--n === 0)\n options.rmdir(p, cb)\n })\n })\n })\n}\n\n// this looks simpler, and is strictly *faster*, but will\n// tie up the JavaScript thread and fail on excessively\n// deep directory trees.\nconst rimrafSync = (p, options) => {\n options = options || {}\n defaults(options)\n\n assert(p, 'rimraf: missing path')\n assert.equal(typeof p, 'string', 'rimraf: path should be a string')\n assert(options, 'rimraf: missing options')\n assert.equal(typeof options, 'object', 'rimraf: options should be object')\n\n let results\n\n if (options.disableGlob || !glob.hasMagic(p)) {\n results = [p]\n } else {\n try {\n options.lstatSync(p)\n results = [p]\n } catch (er) {\n results = glob.sync(p, options.glob)\n }\n }\n\n if (!results.length)\n return\n\n for (let i = 0; i < results.length; i++) {\n const p = results[i]\n\n let st\n try {\n st = options.lstatSync(p)\n } catch (er) {\n if (er.code === \"ENOENT\")\n return\n\n // Windows can EPERM on stat. Life is suffering.\n if (er.code === \"EPERM\" && isWindows)\n fixWinEPERMSync(p, options, er)\n }\n\n try {\n // sunos lets the root user unlink directories, which is... weird.\n if (st && st.isDirectory())\n rmdirSync(p, options, null)\n else\n options.unlinkSync(p)\n } catch (er) {\n if (er.code === \"ENOENT\")\n return\n if (er.code === \"EPERM\")\n return isWindows ? fixWinEPERMSync(p, options, er) : rmdirSync(p, options, er)\n if (er.code !== \"EISDIR\")\n throw er\n\n rmdirSync(p, options, er)\n }\n }\n}\n\nconst rmdirSync = (p, options, originalEr) => {\n assert(p)\n assert(options)\n\n try {\n options.rmdirSync(p)\n } catch (er) {\n if (er.code === \"ENOENT\")\n return\n if (er.code === \"ENOTDIR\")\n throw originalEr\n if (er.code === \"ENOTEMPTY\" || er.code === \"EEXIST\" || er.code === \"EPERM\")\n rmkidsSync(p, options)\n }\n}\n\nconst rmkidsSync = (p, options) => {\n assert(p)\n assert(options)\n options.readdirSync(p).forEach(f => rimrafSync(path.join(p, f), options))\n\n // We only end up here once we got ENOTEMPTY at least once, and\n // at this point, we are guaranteed to have removed all the kids.\n // So, we know that it won't be ENOENT or ENOTDIR or anything else.\n // try really hard to delete stuff on windows, because it has a\n // PROFOUNDLY annoying habit of not closing handles promptly when\n // files are deleted, resulting in spurious ENOTEMPTY errors.\n const retries = isWindows ? 100 : 1\n let i = 0\n do {\n let threw = true\n try {\n const ret = options.rmdirSync(p, options)\n threw = false\n return ret\n } finally {\n if (++i < retries && threw)\n continue\n }\n } while (true)\n}\n\nmodule.exports = rimraf\nrimraf.sync = rimrafSync\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = rng;\n\nvar _crypto = _interopRequireDefault(require(\"crypto\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate\n\nlet poolPtr = rnds8Pool.length;\n\nfunction rng() {\n if (poolPtr > rnds8Pool.length - 16) {\n _crypto.default.randomFillSync(rnds8Pool);\n\n poolPtr = 0;\n }\n\n return rnds8Pool.slice(poolPtr, poolPtr += 16);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _regex = _interopRequireDefault(require(\"./regex.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && _regex.default.test(uuid);\n}\n\nvar _default = validate;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nexports.unsafeStringify = unsafeStringify;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nfunction unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase();\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nvar _default = stringify;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _stringify = require(\"./stringify.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\nlet _nodeId;\n\nlet _clockseq; // Previous uuid creation time\n\n\nlet _lastMSecs = 0;\nlet _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details\n\nfunction v1(options, buf, offset) {\n let i = buf && offset || 0;\n const b = buf || new Array(16);\n options = options || {};\n let node = options.node || _nodeId;\n let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n\n if (node == null || clockseq == null) {\n const seedBytes = options.random || (options.rng || _rng.default)();\n\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];\n }\n\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n } // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n\n\n let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n\n let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)\n\n const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression\n\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n\n\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n } // Per 4.2.1.2 Throw error if too many uuids are requested\n\n\n if (nsecs >= 10000) {\n throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\");\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n\n msecs += 12219292800000; // `time_low`\n\n const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff; // `time_mid`\n\n const tmh = msecs / 0x100000000 * 10000 & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff; // `time_high_and_version`\n\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n\n b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n\n b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`\n\n b[i++] = clockseq & 0xff; // `node`\n\n for (let n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf || (0, _stringify.unsafeStringify)(b);\n}\n\nvar _default = v1;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction parse(uuid) {\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n let v;\n const arr = new Uint8Array(16); // Parse ########-....-....-....-............\n\n arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;\n arr[1] = v >>> 16 & 0xff;\n arr[2] = v >>> 8 & 0xff;\n arr[3] = v & 0xff; // Parse ........-####-....-....-............\n\n arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;\n arr[5] = v & 0xff; // Parse ........-....-####-....-............\n\n arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;\n arr[7] = v & 0xff; // Parse ........-....-....-####-............\n\n arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;\n arr[9] = v & 0xff; // Parse ........-....-....-....-############\n // (Use \"/\" to avoid 32-bit truncation when bit-shifting high-order bytes)\n\n arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;\n arr[11] = v / 0x100000000 & 0xff;\n arr[12] = v >>> 24 & 0xff;\n arr[13] = v >>> 16 & 0xff;\n arr[14] = v >>> 8 & 0xff;\n arr[15] = v & 0xff;\n return arr;\n}\n\nvar _default = parse;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.URL = exports.DNS = void 0;\nexports.default = v35;\n\nvar _stringify = require(\"./stringify.js\");\n\nvar _parse = _interopRequireDefault(require(\"./parse.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction stringToBytes(str) {\n str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n const bytes = [];\n\n for (let i = 0; i < str.length; ++i) {\n bytes.push(str.charCodeAt(i));\n }\n\n return bytes;\n}\n\nconst DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexports.DNS = DNS;\nconst URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexports.URL = URL;\n\nfunction v35(name, version, hashfunc) {\n function generateUUID(value, namespace, buf, offset) {\n var _namespace;\n\n if (typeof value === 'string') {\n value = stringToBytes(value);\n }\n\n if (typeof namespace === 'string') {\n namespace = (0, _parse.default)(namespace);\n }\n\n if (((_namespace = namespace) === null || _namespace === void 0 ? void 0 : _namespace.length) !== 16) {\n throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n } // Compute hash of namespace and value, Per 4.3\n // Future: Use spread syntax when supported on all platforms, e.g. `bytes =\n // hashfunc([...namespace, ... value])`\n\n\n let bytes = new Uint8Array(16 + value.length);\n bytes.set(namespace);\n bytes.set(value, namespace.length);\n bytes = hashfunc(bytes);\n bytes[6] = bytes[6] & 0x0f | version;\n bytes[8] = bytes[8] & 0x3f | 0x80;\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = bytes[i];\n }\n\n return buf;\n }\n\n return (0, _stringify.unsafeStringify)(bytes);\n } // Function#name is not settable on some platforms (#270)\n\n\n try {\n generateUUID.name = name; // eslint-disable-next-line no-empty\n } catch (err) {} // For CommonJS default export support\n\n\n generateUUID.DNS = DNS;\n generateUUID.URL = URL;\n return generateUUID;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _crypto = _interopRequireDefault(require(\"crypto\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction md5(bytes) {\n if (Array.isArray(bytes)) {\n bytes = Buffer.from(bytes);\n } else if (typeof bytes === 'string') {\n bytes = Buffer.from(bytes, 'utf8');\n }\n\n return _crypto.default.createHash('md5').update(bytes).digest();\n}\n\nvar _default = md5;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _md = _interopRequireDefault(require(\"./md5.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v3 = (0, _v.default)('v3', 0x30, _md.default);\nvar _default = v3;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _crypto = _interopRequireDefault(require(\"crypto\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _default = {\n randomUUID: _crypto.default.randomUUID\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _native = _interopRequireDefault(require(\"./native.js\"));\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _stringify = require(\"./stringify.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction v4(options, buf, offset) {\n if (_native.default.randomUUID && !buf && !options) {\n return _native.default.randomUUID();\n }\n\n options = options || {};\n\n const rnds = options.random || (options.rng || _rng.default)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return (0, _stringify.unsafeStringify)(rnds);\n}\n\nvar _default = v4;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _crypto = _interopRequireDefault(require(\"crypto\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction sha1(bytes) {\n if (Array.isArray(bytes)) {\n bytes = Buffer.from(bytes);\n } else if (typeof bytes === 'string') {\n bytes = Buffer.from(bytes, 'utf8');\n }\n\n return _crypto.default.createHash('sha1').update(bytes).digest();\n}\n\nvar _default = sha1;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _sha = _interopRequireDefault(require(\"./sha1.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v5 = (0, _v.default)('v5', 0x50, _sha.default);\nvar _default = v5;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = '00000000-0000-0000-0000-000000000000';\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction version(uuid) {\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n return parseInt(uuid.slice(14, 15), 16);\n}\n\nvar _default = version;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"NIL\", {\n enumerable: true,\n get: function () {\n return _nil.default;\n }\n});\nObject.defineProperty(exports, \"parse\", {\n enumerable: true,\n get: function () {\n return _parse.default;\n }\n});\nObject.defineProperty(exports, \"stringify\", {\n enumerable: true,\n get: function () {\n return _stringify.default;\n }\n});\nObject.defineProperty(exports, \"v1\", {\n enumerable: true,\n get: function () {\n return _v.default;\n }\n});\nObject.defineProperty(exports, \"v3\", {\n enumerable: true,\n get: function () {\n return _v2.default;\n }\n});\nObject.defineProperty(exports, \"v4\", {\n enumerable: true,\n get: function () {\n return _v3.default;\n }\n});\nObject.defineProperty(exports, \"v5\", {\n enumerable: true,\n get: function () {\n return _v4.default;\n }\n});\nObject.defineProperty(exports, \"validate\", {\n enumerable: true,\n get: function () {\n return _validate.default;\n }\n});\nObject.defineProperty(exports, \"version\", {\n enumerable: true,\n get: function () {\n return _version.default;\n }\n});\n\nvar _v = _interopRequireDefault(require(\"./v1.js\"));\n\nvar _v2 = _interopRequireDefault(require(\"./v3.js\"));\n\nvar _v3 = _interopRequireDefault(require(\"./v4.js\"));\n\nvar _v4 = _interopRequireDefault(require(\"./v5.js\"));\n\nvar _nil = _interopRequireDefault(require(\"./nil.js\"));\n\nvar _version = _interopRequireDefault(require(\"./version.js\"));\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nvar _stringify = _interopRequireDefault(require(\"./stringify.js\"));\n\nvar _parse = _interopRequireDefault(require(\"./parse.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","'use strict';\n\nconst FS = require('fs');\nconst PATH = require('path');\nconst constants = {\n DIRECTORY: 'directory',\n FILE: 'file'\n}\n\nfunction safeReadDirSync (path) {\n let dirData = {};\n try {\n dirData = FS.readdirSync(path);\n } catch(ex) {\n if (ex.code == \"EACCES\" || ex.code == \"EPERM\") {\n //User does not have permissions, ignore directory\n return null;\n }\n else throw ex;\n }\n return dirData;\n}\n\n/**\n * Normalizes windows style paths by replacing double backslahes with single forward slahes (unix style).\n * @param {string} path\n * @return {string}\n */\nfunction normalizePath(path) {\n return path.replace(/\\\\/g, '/');\n}\n\n/**\n * Tests if the supplied parameter is of type RegExp\n * @param {any} regExp\n * @return {Boolean}\n */\nfunction isRegExp(regExp) {\n return typeof regExp === \"object\" && regExp.constructor == RegExp;\n}\n\n/**\n * Collects the files and folders for a directory path into an Object, subject\n * to the options supplied, and invoking optional\n * @param {String} path\n * @param {Object} options\n * @param {function} onEachFile\n * @param {function} onEachDirectory\n * @return {Object}\n */\nfunction directoryTree (path, options, onEachFile, onEachDirectory, currentDepth = 0) {\n options = options || {};\n\n if (options.depth !== undefined && options.attributes && options.attributes.indexOf('size') !== -1) {\n throw new Error('usage of size attribute with depth option is prohibited');\n }\n\n const name = PATH.basename(path);\n path = options.normalizePath ? normalizePath(path) : path;\n const item = { path, name };\n let stats;\n let lstat;\n\n try {\n stats = FS.statSync(path);\n lstat = FS.lstatSync(path);\n }\n catch (e) { return null }\n\n // Skip if it matches the exclude regex\n if (options.exclude) {\n const excludes = isRegExp(options.exclude) ? [options.exclude] : options.exclude;\n if (excludes.some((exclusion) => exclusion.test(path))) {\n return null;\n }\n }\n\n if (lstat.isSymbolicLink()) {\n item.isSymbolicLink = true;\n // Skip if symbolic links should not be followed\n if (options.followSymlinks === false)\n return null;\n // Initialize the symbolic links array to avoid infinite loops\n if (!options.symlinks)\n options = { ...options, symlinks: [] };\n // Skip if a cyclic symbolic link has been found\n if (options.symlinks.find(ino => ino === lstat.ino)) {\n return null;\n } else {\n options.symlinks.push(lstat.ino);\n }\n }\n\n if (stats.isFile()) {\n\n const ext = PATH.extname(path).toLowerCase();\n\n // Skip if it does not match the extension regex\n if (options.extensions && !options.extensions.test(ext))\n return null;\n\n\n if (options.attributes) {\n options.attributes.forEach((attribute) => {\n switch (attribute) {\n case 'extension':\n item.extension = ext;\n break;\n case 'type':\n item.type = constants.FILE;\n break;\n default:\n item[attribute] = stats[attribute];\n break;\n }\n });\n }\n\n if (onEachFile) {\n onEachFile(item, path, stats);\n }\n }\n else if (stats.isDirectory()) {\n let dirData = safeReadDirSync(path);\n if (dirData === null) return null;\n\n if (options.depth === undefined || options.depth > currentDepth) {\n item.children = dirData\n .map(child => directoryTree(PATH.join(path, child), options, onEachFile, onEachDirectory, currentDepth + 1))\n .filter(e => !!e);\n }\n\n if (options.attributes) {\n options.attributes.forEach((attribute) => {\n switch (attribute) {\n case 'size':\n item.size = item.children.reduce((prev, cur) => prev + cur.size, 0);\n break;\n case 'type':\n item.type = constants.DIRECTORY;\n break;\n case 'extension':\n break;\n default:\n item[attribute] = stats[attribute];\n break;\n }\n \n });\n }\n\n if (onEachDirectory) {\n onEachDirectory(item, path, stats);\n }\n } else {\n return null; // Or set item.size = 0 for devices, FIFO and sockets ?\n }\n return item;\n}\n\nmodule.exports = directoryTree;\n","import pathParser from 'path'\n\nimport { createPluginCache } from './utils'\n\nimport type { FileManager, EmittedFile, File } from './managers/fileManager'\nimport type { PluginContext, KubbPlugin, PluginFactoryOptions } from './types'\n\ntype KubbPluginFactory<T extends PluginFactoryOptions = PluginFactoryOptions> = (\n options: T['options']\n) => T['nested'] extends true ? Array<KubbPlugin<T>> : KubbPlugin<T>\n\nexport function createPlugin<T extends PluginFactoryOptions = PluginFactoryOptions>(factory: KubbPluginFactory<T>) {\n return (options: T['options']) => {\n const plugin = factory(options)\n if (Array.isArray(plugin)) {\n throw new Error('Not implemented')\n }\n\n // default transform\n if (!plugin.transform) {\n plugin.transform = function transform(code) {\n return code\n }\n }\n\n return plugin\n }\n}\n\ntype Options = {\n config: PluginContext['config']\n fileManager: FileManager\n resolveId: PluginContext['resolveId']\n load: PluginContext['load']\n}\n\n// not publicly exported\nexport type CorePluginOptions = PluginFactoryOptions<Options, false, PluginContext>\n\nexport const name = 'core' as const\n\nconst isEmittedFile = (result: EmittedFile | File): result is EmittedFile => {\n return !!(result as any).id\n}\n\nexport const definePlugin = createPlugin<CorePluginOptions>((options) => {\n const { fileManager, resolveId, load } = options\n const indexFiles: File[] = []\n\n const api: PluginContext = {\n get config() {\n return options.config\n },\n fileManager,\n async addFile(file, options) {\n if (isEmittedFile(file)) {\n const resolvedId = await resolveId({ fileName: file.id, directory: file.importer, options: file.options })\n const path = resolvedId || file.importer || file.id\n\n return fileManager.add({\n path,\n fileName: file.name || file.id,\n source: file.source || '',\n })\n }\n\n if (options?.root) {\n indexFiles.push(file)\n }\n\n return fileManager.addOrAppend(file)\n },\n resolveId,\n load,\n cache: createPluginCache(Object.create(null)),\n }\n\n return {\n name,\n api,\n resolveId(fileName, directory) {\n if (!directory) {\n return null\n }\n return pathParser.resolve(directory, fileName)\n },\n }\n})\n","import type { MaybePromise } from '../types'\n\nexport const isPromise = <T>(result: MaybePromise<T>): result is Promise<T> => {\n return typeof (result as any)?.then === 'function'\n}\n","/* eslint-disable consistent-return */\nimport { promises as fs } from 'fs'\nimport pathParser from 'path'\n\nimport rimraf from 'rimraf'\n\n\nconst safeWriteFileToPath = async (path: string, data: any) => {\n // resolve the full path and get just the directory, ignoring the file and extension\n const passedPath = pathParser.dirname(pathParser.resolve(path))\n // make the directory, recursively. Theoretically, if every directory in the path exists, this won't do anything.\n await fs.mkdir(passedPath, { recursive: true })\n // write the file to the newly created directory\n return fs.writeFile(pathParser.resolve(path), data, { encoding: 'utf-8' })\n}\n\nexport const write = async (data: string, path: string) => {\n \n\n try {\n await fs.stat(path)\n const oldContent = await fs.readFile(path, { encoding: 'utf-8' })\n if (oldContent?.toString() === data) {\n return\n }\n } catch (_err) {\n return safeWriteFileToPath(path, data)\n }\n\n return safeWriteFileToPath(path, data)\n}\n\nexport const clean = async (path: string) => {\n return new Promise((resolve, reject) => {\n rimraf(path, (err) => {\n if (err) {\n reject(err)\n } else {\n resolve(true)\n }\n })\n })\n}\n","/* eslint-disable no-param-reassign */\n/* eslint-disable consistent-return */\n\nexport interface Cache<TCache = any> {\n delete(id: string): boolean\n get<T = TCache>(id: string): T\n has(id: string): boolean\n set<T = TCache>(id: string, value: T): void\n}\n\nexport function createPluginCache(cache: any): Cache {\n return {\n delete(id: string) {\n return delete cache[id]\n },\n get(id: string) {\n const item = cache[id]\n if (!item) return\n item[0] = 0\n return item[1]\n },\n has(id: string) {\n const item = cache[id]\n if (!item) return false\n item[0] = 0\n return true\n },\n set(id: string, value: any) {\n cache[id] = [0, value]\n },\n }\n}\n","import pathParser from 'path'\nimport { promises as fs } from 'fs'\n\n// TODO check for a better way or resolving the relative path\nexport const getRelativePath = (root?: string | null, file?: string | null) => {\n if (!root || !file) {\n throw new Error('Root and file should be filled in when retrieving the relativePath')\n }\n const newPath = pathParser.relative(root, file).replace('../', '').replace('.ts', '').trimEnd()\n\n return `./${newPath}`\n}\n\nexport type PathMode = 'file' | 'directory'\n\nexport const getPathMode = (path: string | undefined | null): PathMode | undefined => {\n if (!path) {\n return undefined\n }\n return pathParser.extname(path) ? 'file' : 'directory'\n}\n\nexport const read = async (path: string) => {\n try {\n return fs.readFile(path)\n } catch (err) {\n console.error(err)\n throw err\n }\n}\n","import EventEmitter from './index.js'\n\nexport { EventEmitter }\nexport default EventEmitter\n","import uuid from './dist/index.js';\nexport const v1 = uuid.v1;\nexport const v3 = uuid.v3;\nexport const v4 = uuid.v4;\nexport const v5 = uuid.v5;\nexport const NIL = uuid.NIL;\nexport const version = uuid.version;\nexport const validate = uuid.validate;\nexport const stringify = uuid.stringify;\nexport const parse = uuid.parse;\n","import type EventEmitter from 'eventemitter3'\nimport type { File, Status, UUID } from './types'\n\nconst keys = {\n getFileKey: () => `file`,\n getStatusChangeKey: () => `status-change`,\n getStatusChangeByIdKey: (id: string) => `${id}-status-change`,\n getSuccessKey: () => `success`,\n getRemoveKey: (id: string) => `${id}remove`,\n} as const\n\ntype VoidFunction = () => void\n\nexport const getFileManagerEvents = (emitter: EventEmitter) => {\n return {\n /**\n * Emiter\n */\n emitFile: (id: UUID, file: File): void => {\n emitter.emit(keys.getFileKey(), id, file)\n },\n emitStatusChange: (file: File): void => {\n emitter.emit(keys.getStatusChangeKey(), file)\n },\n emitStatusChangeById: (id: UUID, status: Status): void => {\n emitter.emit(keys.getStatusChangeByIdKey(id), status)\n },\n emitSuccess: (): void => {\n emitter.emit(keys.getSuccessKey())\n },\n emitRemove: (id: UUID, file: File): void => {\n emitter.emit(keys.getRemoveKey(id), file)\n },\n /**\n * Listeners\n */\n\n onAdd: (callback: (id: UUID, file: File) => void): VoidFunction => {\n emitter.on(keys.getFileKey(), callback)\n return () => emitter.removeListener(keys.getFileKey(), callback)\n },\n onStatusChange: (callback: (file: File) => void): VoidFunction => {\n emitter.on(keys.getStatusChangeKey(), callback)\n return () => emitter.removeListener(keys.getStatusChangeKey(), callback)\n },\n onStatusChangeById: (id: UUID, callback: (status: Status) => void): VoidFunction => {\n emitter.on(keys.getStatusChangeByIdKey(id), callback)\n return () => emitter.removeListener(keys.getStatusChangeByIdKey(id), callback)\n },\n onSuccess: (callback: () => void): VoidFunction => {\n emitter.on(keys.getSuccessKey(), callback)\n return () => emitter.removeListener(keys.getSuccessKey(), callback)\n },\n onRemove: (id: UUID, callback: (file: File) => void): VoidFunction => {\n emitter.on(keys.getRemoveKey(id), callback)\n return () => emitter.removeListener(keys.getRemoveKey(id), callback)\n },\n }\n}\n","import EventEmitter from 'eventemitter3'\nimport { v4 as uuidv4 } from 'uuid'\n\nimport { getFileManagerEvents } from './events'\n\nimport { write, read } from '../../utils'\n\nimport type { CacheStore, UUID, Status, File } from './types'\n\nexport class FileManager {\n private cache: Map<CacheStore['id'], CacheStore> = new Map()\n\n emitter = new EventEmitter()\n\n events = getFileManagerEvents(this.emitter)\n\n constructor() {\n this.events.onStatusChange(() => {\n if (this.getCountByStatus('removed') === this.cache.size) {\n // all files are been resolved and written to the file system\n this.events.emitSuccess()\n }\n })\n }\n\n private getCache(id: UUID) {\n return this.cache.get(id)\n }\n\n private getCacheByPath(path: string | undefined): CacheStore | undefined {\n let cache\n\n this.cache.forEach((item) => {\n if (item.file.path === path) {\n cache = item\n }\n })\n return cache as CacheStore\n }\n\n private getCountByStatus(status: Status) {\n let count = 0\n\n this.cache.forEach((item) => {\n if (item.status === status) {\n count++\n }\n })\n return count\n }\n\n get files() {\n const files: File[] = []\n this.cache.forEach((item) => {\n files.push(item.file)\n })\n\n return files\n }\n\n add(file: File) {\n const cacheItem = { id: uuidv4(), file, status: 'new' as Status }\n\n this.cache.set(cacheItem.id, cacheItem)\n this.events.emitFile(cacheItem.id, file)\n\n return new Promise<File>((resolve) => {\n const unsubscribe = this.events.onRemove(cacheItem.id, (file) => {\n resolve(file)\n unsubscribe()\n })\n })\n }\n\n addOrAppend(file: File) {\n const previousCache = this.getCacheByPath(file.path)\n\n if (previousCache) {\n this.remove(previousCache.id)\n return this.add({\n ...file,\n source: `${previousCache.file.source}\\n${file.source}`,\n })\n }\n return this.add(file)\n }\n\n setStatus(id: UUID, status: Status) {\n const cacheItem = this.getCache(id)\n if (!cacheItem) {\n return\n }\n\n cacheItem.status = status\n this.cache.set(id, cacheItem)\n this.events.emitStatusChange(cacheItem.file)\n this.events.emitStatusChangeById(id, status)\n }\n\n get(id: UUID) {\n const cacheItem = this.getCache(id)\n return cacheItem?.file\n }\n\n remove(id: UUID) {\n const cacheItem = this.getCache(id)\n if (!cacheItem) {\n return\n }\n\n this.setStatus(id, 'removed')\n this.events.emitRemove(id, cacheItem.file)\n }\n\n async write(...params: Parameters<typeof write>) {\n return write(...params)\n }\n\n async read(...params: Parameters<typeof read>) {\n return read(...params)\n }\n}\n","import dirTree from 'directory-tree'\n\nimport type { DirectoryTree, DirectoryTreeOptions } from 'directory-tree'\n\nexport class TreeNode<T = unknown> {\n public data: T\n\n public parent?: TreeNode<T>\n\n public children: Array<TreeNode<T>>\n\n constructor(data: T, parent?: TreeNode<T>) {\n this.data = data\n this.parent = parent\n return this\n }\n\n addChild(data: T) {\n const child = new TreeNode(data, this)\n if (!this.children) {\n this.children = []\n }\n this.children.push(child)\n return child\n }\n\n find(data: T) {\n if (data === this.data) {\n return this\n }\n\n if (this.children) {\n for (let i = 0, { length } = this.children, target: any = null; i < length; i++) {\n target = this.children[i].find(data)\n if (target) {\n return target\n }\n }\n }\n\n return null\n }\n\n leaves() {\n if (!this.children || this.children.length === 0) {\n // this is a leaf\n return [this]\n }\n\n // if not a leaf, return all children's leaves recursively\n const leaves = []\n if (this.children) {\n for (let i = 0, { length } = this.children; i < length; i++) {\n // eslint-disable-next-line prefer-spread\n leaves.push.apply(leaves, this.children[i].leaves())\n }\n }\n return leaves\n }\n\n root() {\n if (!this.parent) {\n return this\n }\n return this.parent.root()\n }\n\n forEach(callback: (treeNode: TreeNode<T>) => void) {\n if (typeof callback !== 'function') {\n throw new TypeError('forEach() callback must be a function')\n }\n\n // run this node through function\n callback(this)\n\n // do the same for all children\n if (this.children) {\n for (let i = 0, { length } = this.children; i < length; i++) {\n this.children[i].forEach(callback)\n }\n }\n\n return this\n }\n\n public static build(path: string, options: DirectoryTreeOptions = {}) {\n const filteredTree = dirTree(path, { extensions: options?.extensions, exclude: options.exclude })\n\n if (!filteredTree) {\n return\n }\n\n const treeNode = new TreeNode({ name: filteredTree.name, path: filteredTree.path, type: filteredTree.type })\n\n const recurse = (node: typeof treeNode, item: DirectoryTree) => {\n const subNode = node.addChild({ name: item.name, path: item.path, type: item.type })\n\n if (item.children?.length) {\n item.children?.forEach((child) => {\n recurse(subNode, child)\n })\n }\n }\n\n filteredTree.children?.forEach((child) => recurse(treeNode, child))\n\n return treeNode\n }\n}\n","/* eslint-disable no-await-in-loop */\n/* eslint-disable no-restricted-syntax */\n\nimport { definePlugin } from '../../plugin'\nimport { FileManager } from '../fileManager'\n\nimport type { Argument0, Strategy } from './types'\nimport type { KubbConfig, KubbPlugin, PluginLifecycleHooks, PluginLifecycle, MaybePromise, ResolveIdParams } from '../../types'\nimport type { Logger } from '../../build'\nimport type { CorePluginOptions } from '../../plugin'\n\n// inspired by: https://github.com/rollup/rollup/blob/master/src/utils/PluginDriver.ts#\n\n// This will make sure no input hook is omitted\nconst hookNames: {\n [P in PluginLifecycleHooks]: 1\n} = {\n validate: 1,\n buildStart: 1,\n resolveId: 1,\n load: 1,\n transform: 1,\n writeFile: 1,\n buildEnd: 1,\n}\nexport const hooks = Object.keys(hookNames) as [PluginLifecycleHooks]\n\nexport class PluginManager {\n public plugins: KubbPlugin[]\n\n public readonly fileManager: FileManager\n\n private readonly logger?: Logger\n\n private readonly config: KubbConfig\n\n public readonly core: KubbPlugin<CorePluginOptions>\n\n constructor(config: KubbConfig, options: { logger?: Logger }) {\n this.logger = options.logger\n this.config = config\n\n this.fileManager = new FileManager()\n this.core = definePlugin({\n config,\n fileManager: this.fileManager,\n load: this.load,\n resolveId: this.resolveId,\n }) as KubbPlugin<CorePluginOptions> & {\n api: CorePluginOptions['api']\n }\n this.plugins = [this.core, ...(config.plugins || [])]\n }\n\n resolveId = (params: ResolveIdParams) => {\n if (params.pluginName) {\n return this.hookForPlugin(params.pluginName, 'resolveId', [params.fileName, params.directory, params.options])\n }\n return this.hookFirst('resolveId', [params.fileName, params.directory, params.options])\n }\n\n load = async (id: string) => {\n return this.hookFirst('load', [id])\n }\n\n // run only hook for a specific plugin name\n hookForPlugin<H extends PluginLifecycleHooks>(\n pluginName: string,\n hookName: H,\n parameters: Parameters<PluginLifecycle[H]>,\n skipped?: ReadonlySet<KubbPlugin> | null\n ): Promise<ReturnType<PluginLifecycle[H]> | null> {\n let promise: Promise<ReturnType<PluginLifecycle[H]> | null> = Promise.resolve(null)\n for (const plugin of this.getSortedPlugins(hookName, pluginName)) {\n if (skipped && skipped.has(plugin)) continue\n promise = promise.then((result) => {\n if (result != null) return result\n return this.run('hookFirst', hookName, parameters, plugin) as any\n })\n }\n return promise\n }\n\n // chains, first non-null result stops and returns\n hookFirst<H extends PluginLifecycleHooks>(\n hookName: H,\n parameters: Parameters<PluginLifecycle[H]>,\n skipped?: ReadonlySet<KubbPlugin> | null\n ): Promise<ReturnType<PluginLifecycle[H]> | null> {\n let promise: Promise<ReturnType<PluginLifecycle[H]> | null> = Promise.resolve(null)\n for (const plugin of this.getSortedPlugins(hookName)) {\n if (skipped && skipped.has(plugin)) continue\n promise = promise.then((result) => {\n if (result != null) return result\n return this.run('hookFirst', hookName, parameters, plugin) as any\n })\n }\n return promise\n }\n\n // parallel\n async hookParallel<H extends PluginLifecycleHooks, TOuput = void>(hookName: H, parameters?: Parameters<PluginLifecycle[H]> | undefined) {\n const parallelPromises: Promise<TOuput>[] = []\n\n for (const plugin of this.getSortedPlugins(hookName)) {\n if ((plugin[hookName] as { sequential?: boolean })?.sequential) {\n await Promise.all(parallelPromises)\n parallelPromises.length = 0\n await this.run('hookParallel', hookName, parameters, plugin)\n } else {\n const promise: Promise<TOuput> = this.run('hookParallel', hookName, parameters, plugin)\n\n parallelPromises.push(promise)\n }\n }\n return Promise.all(parallelPromises)\n }\n\n // chains, reduces returned value, handling the reduced value as the first hook argument\n hookReduceArg0<H extends PluginLifecycleHooks>(\n hookName: H,\n [argument0, ...rest]: Parameters<PluginLifecycle[H]>,\n reduce: (reduction: Argument0<H>, result: ReturnType<PluginLifecycle[H]>, plugin: KubbPlugin) => MaybePromise<Argument0<H> | null>\n ): Promise<Argument0<H>> {\n let promise = Promise.resolve(argument0)\n for (const plugin of this.getSortedPlugins(hookName)) {\n promise = promise.then((argument0) =>\n this.run('hookReduceArg0', hookName, [argument0, ...rest] as Parameters<PluginLifecycle[H]>, plugin).then((result) =>\n reduce.call(this.core.api, argument0, result, plugin)\n )\n )\n }\n return promise\n }\n\n // chains\n\n hookSeq<H extends PluginLifecycleHooks>(hookName: H, parameters?: Parameters<PluginLifecycle[H]>) {\n let promise: Promise<void> = Promise.resolve()\n for (const plugin of this.getSortedPlugins(hookName)) {\n promise = promise.then(() => this.run('hookSeq', hookName, parameters, plugin))\n }\n return promise.then(noReturn)\n }\n\n private getSortedPlugins(hookName: keyof PluginLifecycle, pluginName?: string): KubbPlugin[] {\n const plugins = [...this.plugins]\n\n if (pluginName) {\n const pluginsByPluginName = plugins.filter((item) => item.name === pluginName && item[hookName])\n if (pluginsByPluginName.length === 0) {\n // fallback on the core plugin when there is no match\n if (this.config.logLevel === 'warn' && this.logger?.spinner) {\n this.logger.spinner.info(`Plugin hook with ${hookName} not found for plugin ${pluginName}`)\n }\n return [this.core]\n }\n return pluginsByPluginName\n }\n\n return plugins\n }\n\n /**\n * Run an async plugin hook and return the result.\n * @param hookName Name of the plugin hook. Must be either in `PluginHooks` or `OutputPluginValueHooks`.\n * @param args Arguments passed to the plugin hook.\n * @param plugin The actual pluginObject to run.\n */\n // Implementation signature\n private run<H extends PluginLifecycleHooks, TResult = void>(\n strategy: Strategy,\n hookName: H,\n parameters: unknown[] | undefined,\n plugin: KubbPlugin\n ): Promise<TResult> {\n const hook = plugin[hookName]!\n\n return Promise.resolve()\n .then(() => {\n if (typeof hook !== 'function') {\n return hook\n }\n\n if (this.config.logLevel === 'info' && this.logger?.spinner) {\n this.logger.spinner.text = `[${strategy}] ${hookName}: Excecuting task for plugin ${plugin.name} \\n`\n }\n\n const hookResult = (hook as any).apply(this.core.api, parameters)\n\n if (!hookResult?.then) {\n // short circuit for non-thenables and non-Promises\n if (this.config.logLevel === 'info' && this.logger?.spinner) {\n this.logger.spinner.succeed(`[${strategy}] ${hookName}: Excecuting task for plugin ${plugin.name} \\n`)\n }\n return hookResult\n }\n\n return Promise.resolve(hookResult).then((result) => {\n // action was fulfilled\n if (this.config.logLevel === 'info' && this.logger?.spinner) {\n this.logger.spinner.succeed(`[${strategy}] ${hookName}: Excecuting task for plugin ${plugin.name} \\n`)\n }\n return result\n })\n })\n .catch((e: Error) => this.catcher<H>(e, plugin, hookName))\n }\n\n /**\n * Run a sync plugin hook and return the result.\n * @param hookName Name of the plugin hook. Must be in `PluginHooks`.\n * @param args Arguments passed to the plugin hook.\n * @param plugin The acutal plugin\n * @param replaceContext When passed, the plugin context can be overridden.\n */\n private runSync<H extends PluginLifecycleHooks>(hookName: H, parameters: Parameters<PluginLifecycle[H]>, plugin: KubbPlugin): ReturnType<PluginLifecycle[H]> {\n const hook = plugin[hookName]!\n\n // const context = this.pluginContexts.get(plugin)!;\n\n try {\n // eslint-disable-next-line @typescript-eslint/ban-types\n return (hook as Function).apply(this.core.api, parameters)\n } catch (error: any) {\n return error\n }\n }\n\n private catcher<H extends PluginLifecycleHooks>(e: Error, plugin: KubbPlugin, hookName: H) {\n const text = `${e.message} (plugin: ${plugin.name}, hook: ${hookName})\\n`\n\n if (this.logger?.spinner) {\n this.logger.spinner.fail(text)\n throw e\n }\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nfunction noReturn() {}\n","import type { KubbPlugin } from '../../types'\n\nexport class ValidationPluginError extends Error {}\n\nexport const validatePlugins = (plugins: KubbPlugin[], dependedPluginNames: string | string[]): true => {\n let pluginNames: string[] = []\n if (typeof dependedPluginNames === 'string') {\n pluginNames = [dependedPluginNames]\n } else {\n pluginNames = dependedPluginNames\n }\n\n pluginNames.forEach((pluginName) => {\n const exists = plugins.some((plugin) => plugin.name === pluginName)\n if (!exists) {\n throw new ValidationPluginError(`This plugin depends on the ${pluginName} plugin.`)\n }\n })\n\n return true\n}\n","import { PluginManager } from './managers/pluginManager'\nimport { clean } from './utils/write'\n\nimport type { FileManager } from './managers/fileManager'\nimport type { PluginContext, TransformResult, LogLevel, KubbPlugin } from './types'\n\ntype BuildOutput = {\n fileManager: FileManager\n}\n\n// Same type as ora\ntype Spinner = {\n start: (text?: string) => Spinner\n succeed: (text: string) => Spinner\n fail: (text?: string) => Spinner\n stopAndPersist: (options: { text: string }) => Spinner\n render: () => Spinner\n text: string\n info: (text: string) => Spinner\n}\n\nexport type Logger = {\n log: (message: string, logLevel: LogLevel) => void\n spinner?: Spinner\n}\ntype BuildOptions = {\n config: PluginContext['config']\n mode: 'development' | 'production'\n logger?: Logger\n}\n\nasync function transformReducer(this: PluginContext, _previousCode: string, result: TransformResult, _plugin: KubbPlugin) {\n if (result === null) {\n return null\n }\n return result\n}\n\nasync function buildImplementation(options: BuildOptions, done: (output: BuildOutput) => void) {\n const { config, logger } = options\n\n if (config.output.clean) {\n await clean(config.output.path)\n }\n\n const pluginManager = new PluginManager(config, { logger })\n const { plugins, fileManager } = pluginManager\n\n try {\n await pluginManager.hookParallel<'validate', true>('validate', [plugins])\n } catch (e: any) {\n return\n }\n\n fileManager.events.onSuccess(async () => {\n await pluginManager.hookParallel('buildEnd')\n setTimeout(() => {\n done({ fileManager })\n }, 1000)\n })\n\n fileManager.events.onAdd(async (id, file) => {\n const { path } = file\n let { source: code } = file\n\n const loadedResult = await pluginManager.hookFirst('load', [path])\n if (loadedResult) {\n code = loadedResult\n }\n\n if (code) {\n const transformedCode = await pluginManager.hookReduceArg0('transform', [code, path], transformReducer)\n\n if (typeof config.input === 'object') {\n await pluginManager.hookParallel('writeFile', [transformedCode, path])\n }\n\n fileManager.setStatus(id, 'success')\n fileManager.remove(id)\n }\n })\n\n await pluginManager.hookParallel('buildStart', [config])\n}\n\nexport type KubbBuild = (options: BuildOptions) => Promise<BuildOutput>\n\nexport function build(options: BuildOptions): Promise<BuildOutput> {\n return new Promise((resolve, reject) => {\n try {\n buildImplementation(options, resolve)\n } catch (e) {\n reject(e)\n }\n })\n}\n","import type { MaybePromise, KubbUserConfig, CLIOptions } from './types'\n\n/**\n * Type helper to make it easier to use kubb.config.ts\n * accepts a direct {@link KubbConfig} object, or a function that returns it.\n * The function receives a {@link ConfigEnv} object that exposes two properties:\n */\nexport const defineConfig = (\n options:\n | MaybePromise<KubbUserConfig>\n | ((\n /** The options derived from the CLI flags */\n cliOptions: CLIOptions\n ) => MaybePromise<KubbUserConfig>)\n) => options\n","/**\n * Abstract class that contains the building blocks for plugins to create their own Generator\n * @link idea based on https://github.com/colinhacks/zod/blob/master/src/types.ts#L137\n */\nexport abstract class Generator<TOptions extends object = object> {\n private _options: TOptions = {} as TOptions\n\n constructor(options: TOptions = {} as TOptions) {\n if (options) {\n this._options = {\n ...this._options,\n ...options,\n }\n }\n return this\n }\n\n get options() {\n return this._options\n }\n\n abstract build(...params: unknown[]): unknown\n}\n","import { Generator } from './Generator'\n/**\n * Abstract class that contains the building blocks for plugins to create their own SchemaGenerator\n */\nexport abstract class SchemaGenerator<TOptions extends object, TInput, TOutput> extends Generator<TOptions> {\n abstract build(schema: TInput, name: string, description?: string): TOutput\n}\n","/* eslint-disable @typescript-eslint/no-empty-interface */\nimport { build } from './build'\n\nexport * from './config'\nexport * from './build'\nexport { CorePluginOptions, createPlugin } from './plugin'\nexport * from './utils'\nexport * from './types'\nexport * from './managers'\nexport * from './generators'\nexport default build\n"]}
1
+ {"version":3,"sources":["../../../node_modules/.pnpm/path-browserify@1.0.1/node_modules/path-browserify/index.js","../../../node_modules/.pnpm/memfs@3.4.13/node_modules/memfs/lib/constants.js","../../../node_modules/.pnpm/memfs@3.4.13/node_modules/memfs/lib/getBigInt.js","../../../node_modules/.pnpm/memfs@3.4.13/node_modules/memfs/lib/Stats.js","../../../node_modules/.pnpm/memfs@3.4.13/node_modules/memfs/lib/internal/buffer.js","../../../node_modules/.pnpm/memfs@3.4.13/node_modules/memfs/lib/internal/errors.js","../../../node_modules/.pnpm/memfs@3.4.13/node_modules/memfs/lib/encoding.js","../../../node_modules/.pnpm/memfs@3.4.13/node_modules/memfs/lib/Dirent.js","../../../node_modules/.pnpm/memfs@3.4.13/node_modules/memfs/lib/setImmediate.js","../../../node_modules/.pnpm/memfs@3.4.13/node_modules/memfs/lib/process.js","../../../node_modules/.pnpm/eventemitter3@5.0.0/node_modules/eventemitter3/index.js","../../../node_modules/.pnpm/memfs@3.4.13/node_modules/memfs/lib/node.js","../../../node_modules/.pnpm/memfs@3.4.13/node_modules/memfs/lib/setTimeoutUnref.js","../../../node_modules/.pnpm/memfs@3.4.13/node_modules/memfs/lib/promises.js","../../../node_modules/.pnpm/fs-monkey@1.0.3/node_modules/fs-monkey/lib/correctPath.js","../../../node_modules/.pnpm/memfs@3.4.13/node_modules/memfs/lib/volume.js","../../../node_modules/.pnpm/fs-monkey@1.0.3/node_modules/fs-monkey/lib/util/lists.js","../../../node_modules/.pnpm/memfs@3.4.13/node_modules/memfs/lib/index.js","../../../node_modules/.pnpm/fs.realpath@1.0.0/node_modules/fs.realpath/old.js","../../../node_modules/.pnpm/fs.realpath@1.0.0/node_modules/fs.realpath/index.js","../../../node_modules/.pnpm/concat-map@0.0.1/node_modules/concat-map/index.js","../../../node_modules/.pnpm/balanced-match@1.0.2/node_modules/balanced-match/index.js","../../../node_modules/.pnpm/brace-expansion@1.1.11/node_modules/brace-expansion/index.js","../../../node_modules/.pnpm/minimatch@3.1.2/node_modules/minimatch/minimatch.js","../../../node_modules/.pnpm/inherits@2.0.4/node_modules/inherits/inherits_browser.js","../../../node_modules/.pnpm/inherits@2.0.4/node_modules/inherits/inherits.js","../../../node_modules/.pnpm/path-is-absolute@1.0.1/node_modules/path-is-absolute/index.js","../../../node_modules/.pnpm/glob@7.2.3/node_modules/glob/common.js","../../../node_modules/.pnpm/glob@7.2.3/node_modules/glob/sync.js","../../../node_modules/.pnpm/wrappy@1.0.2/node_modules/wrappy/wrappy.js","../../../node_modules/.pnpm/once@1.4.0/node_modules/once/once.js","../../../node_modules/.pnpm/inflight@1.0.6/node_modules/inflight/inflight.js","../../../node_modules/.pnpm/glob@7.2.3/node_modules/glob/glob.js","../../../node_modules/.pnpm/rimraf@3.0.2/node_modules/rimraf/rimraf.js","../../../node_modules/.pnpm/uuid@9.0.0/node_modules/uuid/dist/rng.js","../../../node_modules/.pnpm/uuid@9.0.0/node_modules/uuid/dist/regex.js","../../../node_modules/.pnpm/uuid@9.0.0/node_modules/uuid/dist/validate.js","../../../node_modules/.pnpm/uuid@9.0.0/node_modules/uuid/dist/stringify.js","../../../node_modules/.pnpm/uuid@9.0.0/node_modules/uuid/dist/v1.js","../../../node_modules/.pnpm/uuid@9.0.0/node_modules/uuid/dist/parse.js","../../../node_modules/.pnpm/uuid@9.0.0/node_modules/uuid/dist/v35.js","../../../node_modules/.pnpm/uuid@9.0.0/node_modules/uuid/dist/md5.js","../../../node_modules/.pnpm/uuid@9.0.0/node_modules/uuid/dist/v3.js","../../../node_modules/.pnpm/uuid@9.0.0/node_modules/uuid/dist/native.js","../../../node_modules/.pnpm/uuid@9.0.0/node_modules/uuid/dist/v4.js","../../../node_modules/.pnpm/uuid@9.0.0/node_modules/uuid/dist/sha1.js","../../../node_modules/.pnpm/uuid@9.0.0/node_modules/uuid/dist/v5.js","../../../node_modules/.pnpm/uuid@9.0.0/node_modules/uuid/dist/nil.js","../../../node_modules/.pnpm/uuid@9.0.0/node_modules/uuid/dist/version.js","../../../node_modules/.pnpm/uuid@9.0.0/node_modules/uuid/dist/index.js","../../../node_modules/.pnpm/directory-tree@3.5.1/node_modules/directory-tree/lib/directory-tree.js","../src/plugin.ts","../src/utils/isPromise.ts","../src/utils/write.ts","../src/utils/cache.ts","../src/utils/read.ts","../../../node_modules/.pnpm/eventemitter3@5.0.0/node_modules/eventemitter3/index.mjs","../../../node_modules/.pnpm/uuid@9.0.0/node_modules/uuid/wrapper.mjs","../src/managers/fileManager/events.ts","../src/managers/fileManager/FileManager.ts","../src/managers/fileManager/TreeNode.ts","../src/managers/pluginManager/PluginManager.ts","../src/managers/pluginManager/validate.ts","../src/build.ts","../src/config.ts","../src/generators/Generator.ts","../src/generators/SchemaGenerator.ts","../src/index.ts"],"names":["parse","Stats","d","b","AssertionError","name","Dirent","EventEmitter","Node","Link","File","FileHandle","FLAGS","Volume","StatWatcher","FSWatcher","_a","fs","err","base","version","minimatch","Minimatch","filter","makeRe","braceExpand","set","m","path","read","cb","keys","er","stat","rimraf","p","validate","uuid","stringify","v1","v3","v4","v5","import_path","pathParser","import_fs","options","file","dirTree","argument0"],"mappings":"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","sourcesContent":["// 'path' module extracted from Node.js v8.11.1 (only the posix part)\n// transplited with Babel\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\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError('Path must be a string. Received ' + JSON.stringify(path));\n }\n}\n\n// Resolves . and .. elements in a path with directory names\nfunction normalizeStringPosix(path, allowAboveRoot) {\n var res = '';\n var lastSegmentLength = 0;\n var lastSlash = -1;\n var dots = 0;\n var code;\n for (var i = 0; i <= path.length; ++i) {\n if (i < path.length)\n code = path.charCodeAt(i);\n else if (code === 47 /*/*/)\n break;\n else\n code = 47 /*/*/;\n if (code === 47 /*/*/) {\n if (lastSlash === i - 1 || dots === 1) {\n // NOOP\n } else if (lastSlash !== i - 1 && dots === 2) {\n if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== 46 /*.*/ || res.charCodeAt(res.length - 2) !== 46 /*.*/) {\n if (res.length > 2) {\n var lastSlashIndex = res.lastIndexOf('/');\n if (lastSlashIndex !== res.length - 1) {\n if (lastSlashIndex === -1) {\n res = '';\n lastSegmentLength = 0;\n } else {\n res = res.slice(0, lastSlashIndex);\n lastSegmentLength = res.length - 1 - res.lastIndexOf('/');\n }\n lastSlash = i;\n dots = 0;\n continue;\n }\n } else if (res.length === 2 || res.length === 1) {\n res = '';\n lastSegmentLength = 0;\n lastSlash = i;\n dots = 0;\n continue;\n }\n }\n if (allowAboveRoot) {\n if (res.length > 0)\n res += '/..';\n else\n res = '..';\n lastSegmentLength = 2;\n }\n } else {\n if (res.length > 0)\n res += '/' + path.slice(lastSlash + 1, i);\n else\n res = path.slice(lastSlash + 1, i);\n lastSegmentLength = i - lastSlash - 1;\n }\n lastSlash = i;\n dots = 0;\n } else if (code === 46 /*.*/ && dots !== -1) {\n ++dots;\n } else {\n dots = -1;\n }\n }\n return res;\n}\n\nfunction _format(sep, pathObject) {\n var dir = pathObject.dir || pathObject.root;\n var base = pathObject.base || (pathObject.name || '') + (pathObject.ext || '');\n if (!dir) {\n return base;\n }\n if (dir === pathObject.root) {\n return dir + base;\n }\n return dir + sep + base;\n}\n\nvar posix = {\n // path.resolve([from ...], to)\n resolve: function resolve() {\n var resolvedPath = '';\n var resolvedAbsolute = false;\n var cwd;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path;\n if (i >= 0)\n path = arguments[i];\n else {\n if (cwd === undefined)\n cwd = process.cwd();\n path = cwd;\n }\n\n assertPath(path);\n\n // Skip empty entries\n if (path.length === 0) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charCodeAt(0) === 47 /*/*/;\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeStringPosix(resolvedPath, !resolvedAbsolute);\n\n if (resolvedAbsolute) {\n if (resolvedPath.length > 0)\n return '/' + resolvedPath;\n else\n return '/';\n } else if (resolvedPath.length > 0) {\n return resolvedPath;\n } else {\n return '.';\n }\n },\n\n normalize: function normalize(path) {\n assertPath(path);\n\n if (path.length === 0) return '.';\n\n var isAbsolute = path.charCodeAt(0) === 47 /*/*/;\n var trailingSeparator = path.charCodeAt(path.length - 1) === 47 /*/*/;\n\n // Normalize the path\n path = normalizeStringPosix(path, !isAbsolute);\n\n if (path.length === 0 && !isAbsolute) path = '.';\n if (path.length > 0 && trailingSeparator) path += '/';\n\n if (isAbsolute) return '/' + path;\n return path;\n },\n\n isAbsolute: function isAbsolute(path) {\n assertPath(path);\n return path.length > 0 && path.charCodeAt(0) === 47 /*/*/;\n },\n\n join: function join() {\n if (arguments.length === 0)\n return '.';\n var joined;\n for (var i = 0; i < arguments.length; ++i) {\n var arg = arguments[i];\n assertPath(arg);\n if (arg.length > 0) {\n if (joined === undefined)\n joined = arg;\n else\n joined += '/' + arg;\n }\n }\n if (joined === undefined)\n return '.';\n return posix.normalize(joined);\n },\n\n relative: function relative(from, to) {\n assertPath(from);\n assertPath(to);\n\n if (from === to) return '';\n\n from = posix.resolve(from);\n to = posix.resolve(to);\n\n if (from === to) return '';\n\n // Trim any leading backslashes\n var fromStart = 1;\n for (; fromStart < from.length; ++fromStart) {\n if (from.charCodeAt(fromStart) !== 47 /*/*/)\n break;\n }\n var fromEnd = from.length;\n var fromLen = fromEnd - fromStart;\n\n // Trim any leading backslashes\n var toStart = 1;\n for (; toStart < to.length; ++toStart) {\n if (to.charCodeAt(toStart) !== 47 /*/*/)\n break;\n }\n var toEnd = to.length;\n var toLen = toEnd - toStart;\n\n // Compare paths to find the longest common path from root\n var length = fromLen < toLen ? fromLen : toLen;\n var lastCommonSep = -1;\n var i = 0;\n for (; i <= length; ++i) {\n if (i === length) {\n if (toLen > length) {\n if (to.charCodeAt(toStart + i) === 47 /*/*/) {\n // We get here if `from` is the exact base path for `to`.\n // For example: from='/foo/bar'; to='/foo/bar/baz'\n return to.slice(toStart + i + 1);\n } else if (i === 0) {\n // We get here if `from` is the root\n // For example: from='/'; to='/foo'\n return to.slice(toStart + i);\n }\n } else if (fromLen > length) {\n if (from.charCodeAt(fromStart + i) === 47 /*/*/) {\n // We get here if `to` is the exact base path for `from`.\n // For example: from='/foo/bar/baz'; to='/foo/bar'\n lastCommonSep = i;\n } else if (i === 0) {\n // We get here if `to` is the root.\n // For example: from='/foo'; to='/'\n lastCommonSep = 0;\n }\n }\n break;\n }\n var fromCode = from.charCodeAt(fromStart + i);\n var toCode = to.charCodeAt(toStart + i);\n if (fromCode !== toCode)\n break;\n else if (fromCode === 47 /*/*/)\n lastCommonSep = i;\n }\n\n var out = '';\n // Generate the relative path based on the path difference between `to`\n // and `from`\n for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {\n if (i === fromEnd || from.charCodeAt(i) === 47 /*/*/) {\n if (out.length === 0)\n out += '..';\n else\n out += '/..';\n }\n }\n\n // Lastly, append the rest of the destination (`to`) path that comes after\n // the common path parts\n if (out.length > 0)\n return out + to.slice(toStart + lastCommonSep);\n else {\n toStart += lastCommonSep;\n if (to.charCodeAt(toStart) === 47 /*/*/)\n ++toStart;\n return to.slice(toStart);\n }\n },\n\n _makeLong: function _makeLong(path) {\n return path;\n },\n\n dirname: function dirname(path) {\n assertPath(path);\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) return '//';\n return path.slice(0, end);\n },\n\n basename: function basename(path, ext) {\n if (ext !== undefined && typeof ext !== 'string') throw new TypeError('\"ext\" argument must be a string');\n assertPath(path);\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n if (ext !== undefined && ext.length > 0 && ext.length <= path.length) {\n if (ext.length === path.length && ext === path) return '';\n var extIdx = ext.length - 1;\n var firstNonSlashEnd = -1;\n for (i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else {\n if (firstNonSlashEnd === -1) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching\n matchedSlash = false;\n firstNonSlashEnd = i + 1;\n }\n if (extIdx >= 0) {\n // Try to match the explicit extension\n if (code === ext.charCodeAt(extIdx)) {\n if (--extIdx === -1) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = i;\n }\n } else {\n // Extension does not match, so our result is the entire path\n // component\n extIdx = -1;\n end = firstNonSlashEnd;\n }\n }\n }\n }\n\n if (start === end) end = firstNonSlashEnd;else if (end === -1) end = path.length;\n return path.slice(start, end);\n } else {\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n }\n },\n\n extname: function extname(path) {\n assertPath(path);\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n },\n\n format: function format(pathObject) {\n if (pathObject === null || typeof pathObject !== 'object') {\n throw new TypeError('The \"pathObject\" argument must be of type Object. Received type ' + typeof pathObject);\n }\n return _format('/', pathObject);\n },\n\n parse: function parse(path) {\n assertPath(path);\n\n var ret = { root: '', dir: '', base: '', ext: '', name: '' };\n if (path.length === 0) return ret;\n var code = path.charCodeAt(0);\n var isAbsolute = code === 47 /*/*/;\n var start;\n if (isAbsolute) {\n ret.root = '/';\n start = 1;\n } else {\n start = 0;\n }\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n var i = path.length - 1;\n\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n\n // Get non-dir info\n for (; i >= start; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1) startDot = i;else if (preDotState !== 1) preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n if (end !== -1) {\n if (startPart === 0 && isAbsolute) ret.base = ret.name = path.slice(1, end);else ret.base = ret.name = path.slice(startPart, end);\n }\n } else {\n if (startPart === 0 && isAbsolute) {\n ret.name = path.slice(1, startDot);\n ret.base = path.slice(1, end);\n } else {\n ret.name = path.slice(startPart, startDot);\n ret.base = path.slice(startPart, end);\n }\n ret.ext = path.slice(startDot, end);\n }\n\n if (startPart > 0) ret.dir = path.slice(0, startPart - 1);else if (isAbsolute) ret.dir = '/';\n\n return ret;\n },\n\n sep: '/',\n delimiter: ':',\n win32: null,\n posix: null\n};\n\nposix.posix = posix;\n\nmodule.exports = posix;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.constants = void 0;\nexports.constants = {\n O_RDONLY: 0,\n O_WRONLY: 1,\n O_RDWR: 2,\n S_IFMT: 61440,\n S_IFREG: 32768,\n S_IFDIR: 16384,\n S_IFCHR: 8192,\n S_IFBLK: 24576,\n S_IFIFO: 4096,\n S_IFLNK: 40960,\n S_IFSOCK: 49152,\n O_CREAT: 64,\n O_EXCL: 128,\n O_NOCTTY: 256,\n O_TRUNC: 512,\n O_APPEND: 1024,\n O_DIRECTORY: 65536,\n O_NOATIME: 262144,\n O_NOFOLLOW: 131072,\n O_SYNC: 1052672,\n O_DIRECT: 16384,\n O_NONBLOCK: 2048,\n S_IRWXU: 448,\n S_IRUSR: 256,\n S_IWUSR: 128,\n S_IXUSR: 64,\n S_IRWXG: 56,\n S_IRGRP: 32,\n S_IWGRP: 16,\n S_IXGRP: 8,\n S_IRWXO: 7,\n S_IROTH: 4,\n S_IWOTH: 2,\n S_IXOTH: 1,\n F_OK: 0,\n R_OK: 4,\n W_OK: 2,\n X_OK: 1,\n UV_FS_SYMLINK_DIR: 1,\n UV_FS_SYMLINK_JUNCTION: 2,\n UV_FS_COPYFILE_EXCL: 1,\n UV_FS_COPYFILE_FICLONE: 2,\n UV_FS_COPYFILE_FICLONE_FORCE: 4,\n COPYFILE_EXCL: 1,\n COPYFILE_FICLONE: 2,\n COPYFILE_FICLONE_FORCE: 4,\n};\n","if (typeof BigInt === 'function') exports.default = BigInt;\nelse\n exports.default = function BigIntNotSupported() {\n throw new Error('BigInt is not supported in this environment.');\n };\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Stats = void 0;\nvar constants_1 = require(\"./constants\");\nvar getBigInt_1 = require(\"./getBigInt\");\nvar S_IFMT = constants_1.constants.S_IFMT, S_IFDIR = constants_1.constants.S_IFDIR, S_IFREG = constants_1.constants.S_IFREG, S_IFBLK = constants_1.constants.S_IFBLK, S_IFCHR = constants_1.constants.S_IFCHR, S_IFLNK = constants_1.constants.S_IFLNK, S_IFIFO = constants_1.constants.S_IFIFO, S_IFSOCK = constants_1.constants.S_IFSOCK;\n/**\n * Statistics about a file/directory, like `fs.Stats`.\n */\nvar Stats = /** @class */ (function () {\n function Stats() {\n }\n Stats.build = function (node, bigint) {\n if (bigint === void 0) { bigint = false; }\n var stats = new Stats();\n var uid = node.uid, gid = node.gid, atime = node.atime, mtime = node.mtime, ctime = node.ctime;\n var getStatNumber = !bigint ? function (number) { return number; } : getBigInt_1.default;\n // Copy all values on Stats from Node, so that if Node values\n // change, values on Stats would still be the old ones,\n // just like in Node fs.\n stats.uid = getStatNumber(uid);\n stats.gid = getStatNumber(gid);\n stats.rdev = getStatNumber(0);\n stats.blksize = getStatNumber(4096);\n stats.ino = getStatNumber(node.ino);\n stats.size = getStatNumber(node.getSize());\n stats.blocks = getStatNumber(1);\n stats.atime = atime;\n stats.mtime = mtime;\n stats.ctime = ctime;\n stats.birthtime = ctime;\n stats.atimeMs = getStatNumber(atime.getTime());\n stats.mtimeMs = getStatNumber(mtime.getTime());\n var ctimeMs = getStatNumber(ctime.getTime());\n stats.ctimeMs = ctimeMs;\n stats.birthtimeMs = ctimeMs;\n stats.dev = getStatNumber(0);\n stats.mode = getStatNumber(node.mode);\n stats.nlink = getStatNumber(node.nlink);\n return stats;\n };\n Stats.prototype._checkModeProperty = function (property) {\n return (Number(this.mode) & S_IFMT) === property;\n };\n Stats.prototype.isDirectory = function () {\n return this._checkModeProperty(S_IFDIR);\n };\n Stats.prototype.isFile = function () {\n return this._checkModeProperty(S_IFREG);\n };\n Stats.prototype.isBlockDevice = function () {\n return this._checkModeProperty(S_IFBLK);\n };\n Stats.prototype.isCharacterDevice = function () {\n return this._checkModeProperty(S_IFCHR);\n };\n Stats.prototype.isSymbolicLink = function () {\n return this._checkModeProperty(S_IFLNK);\n };\n Stats.prototype.isFIFO = function () {\n return this._checkModeProperty(S_IFIFO);\n };\n Stats.prototype.isSocket = function () {\n return this._checkModeProperty(S_IFSOCK);\n };\n return Stats;\n}());\nexports.Stats = Stats;\nexports.default = Stats;\n","\"use strict\";\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.bufferFrom = exports.bufferAllocUnsafe = exports.Buffer = void 0;\nvar buffer_1 = require(\"buffer\");\nObject.defineProperty(exports, \"Buffer\", { enumerable: true, get: function () { return buffer_1.Buffer; } });\nfunction bufferV0P12Ponyfill(arg0) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n return new (buffer_1.Buffer.bind.apply(buffer_1.Buffer, __spreadArray([void 0, arg0], args, false)))();\n}\nvar bufferAllocUnsafe = buffer_1.Buffer.allocUnsafe || bufferV0P12Ponyfill;\nexports.bufferAllocUnsafe = bufferAllocUnsafe;\nvar bufferFrom = buffer_1.Buffer.from || bufferV0P12Ponyfill;\nexports.bufferFrom = bufferFrom;\n","\"use strict\";\n// The whole point behind this internal module is to allow Node.js to no\n// longer be forced to treat every error message change as a semver-major\n// change. The NodeError classes here all expose a `code` property whose\n// value statically and permanently identifies the error. While the error\n// message may change, the code should not.\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.E = exports.AssertionError = exports.message = exports.RangeError = exports.TypeError = exports.Error = void 0;\nvar assert = require(\"assert\");\nvar util = require(\"util\");\nvar kCode = typeof Symbol === 'undefined' ? '_kCode' : Symbol('code');\nvar messages = {}; // new Map();\nfunction makeNodeError(Base) {\n return /** @class */ (function (_super) {\n __extends(NodeError, _super);\n function NodeError(key) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n var _this = _super.call(this, message(key, args)) || this;\n _this.code = key;\n _this[kCode] = key;\n _this.name = \"\".concat(_super.prototype.name, \" [\").concat(_this[kCode], \"]\");\n return _this;\n }\n return NodeError;\n }(Base));\n}\nvar g = typeof globalThis !== 'undefined' ? globalThis : global;\nvar AssertionError = /** @class */ (function (_super) {\n __extends(AssertionError, _super);\n function AssertionError(options) {\n var _this = this;\n if (typeof options !== 'object' || options === null) {\n throw new exports.TypeError('ERR_INVALID_ARG_TYPE', 'options', 'object');\n }\n if (options.message) {\n _this = _super.call(this, options.message) || this;\n }\n else {\n _this = _super.call(this, \"\".concat(util.inspect(options.actual).slice(0, 128), \" \") +\n \"\".concat(options.operator, \" \").concat(util.inspect(options.expected).slice(0, 128))) || this;\n }\n _this.generatedMessage = !options.message;\n _this.name = 'AssertionError [ERR_ASSERTION]';\n _this.code = 'ERR_ASSERTION';\n _this.actual = options.actual;\n _this.expected = options.expected;\n _this.operator = options.operator;\n exports.Error.captureStackTrace(_this, options.stackStartFunction);\n return _this;\n }\n return AssertionError;\n}(g.Error));\nexports.AssertionError = AssertionError;\nfunction message(key, args) {\n assert.strictEqual(typeof key, 'string');\n // const msg = messages.get(key);\n var msg = messages[key];\n assert(msg, \"An invalid error message key was used: \".concat(key, \".\"));\n var fmt;\n if (typeof msg === 'function') {\n fmt = msg;\n }\n else {\n fmt = util.format;\n if (args === undefined || args.length === 0)\n return msg;\n args.unshift(msg);\n }\n return String(fmt.apply(null, args));\n}\nexports.message = message;\n// Utility function for registering the error codes. Only used here. Exported\n// *only* to allow for testing.\nfunction E(sym, val) {\n messages[sym] = typeof val === 'function' ? val : String(val);\n}\nexports.E = E;\nexports.Error = makeNodeError(g.Error);\nexports.TypeError = makeNodeError(g.TypeError);\nexports.RangeError = makeNodeError(g.RangeError);\n// To declare an error message, use the E(sym, val) function above. The sym\n// must be an upper case string. The val can be either a function or a string.\n// The return value of the function must be a string.\n// Examples:\n// E('EXAMPLE_KEY1', 'This is the error value');\n// E('EXAMPLE_KEY2', (a, b) => return `${a} ${b}`);\n//\n// Once an error code has been assigned, the code itself MUST NOT change and\n// any given error code must never be reused to identify a different error.\n//\n// Any error code added here should also be added to the documentation\n//\n// Note: Please try to keep these in alphabetical order\nE('ERR_ARG_NOT_ITERABLE', '%s must be iterable');\nE('ERR_ASSERTION', '%s');\nE('ERR_BUFFER_OUT_OF_BOUNDS', bufferOutOfBounds);\nE('ERR_CHILD_CLOSED_BEFORE_REPLY', 'Child closed before reply received');\nE('ERR_CONSOLE_WRITABLE_STREAM', 'Console expects a writable stream instance for %s');\nE('ERR_CPU_USAGE', 'Unable to obtain cpu usage %s');\nE('ERR_DNS_SET_SERVERS_FAILED', function (err, servers) { return \"c-ares failed to set servers: \\\"\".concat(err, \"\\\" [\").concat(servers, \"]\"); });\nE('ERR_FALSY_VALUE_REJECTION', 'Promise was rejected with falsy value');\nE('ERR_ENCODING_NOT_SUPPORTED', function (enc) { return \"The \\\"\".concat(enc, \"\\\" encoding is not supported\"); });\nE('ERR_ENCODING_INVALID_ENCODED_DATA', function (enc) { return \"The encoded data was not valid for encoding \".concat(enc); });\nE('ERR_HTTP_HEADERS_SENT', 'Cannot render headers after they are sent to the client');\nE('ERR_HTTP_INVALID_STATUS_CODE', 'Invalid status code: %s');\nE('ERR_HTTP_TRAILER_INVALID', 'Trailers are invalid with this transfer encoding');\nE('ERR_INDEX_OUT_OF_RANGE', 'Index out of range');\nE('ERR_INVALID_ARG_TYPE', invalidArgType);\nE('ERR_INVALID_ARRAY_LENGTH', function (name, len, actual) {\n assert.strictEqual(typeof actual, 'number');\n return \"The array \\\"\".concat(name, \"\\\" (length \").concat(actual, \") must be of length \").concat(len, \".\");\n});\nE('ERR_INVALID_BUFFER_SIZE', 'Buffer size must be a multiple of %s');\nE('ERR_INVALID_CALLBACK', 'Callback must be a function');\nE('ERR_INVALID_CHAR', 'Invalid character in %s');\nE('ERR_INVALID_CURSOR_POS', 'Cannot set cursor row without setting its column');\nE('ERR_INVALID_FD', '\"fd\" must be a positive integer: %s');\nE('ERR_INVALID_FILE_URL_HOST', 'File URL host must be \"localhost\" or empty on %s');\nE('ERR_INVALID_FILE_URL_PATH', 'File URL path %s');\nE('ERR_INVALID_HANDLE_TYPE', 'This handle type cannot be sent');\nE('ERR_INVALID_IP_ADDRESS', 'Invalid IP address: %s');\nE('ERR_INVALID_OPT_VALUE', function (name, value) {\n return \"The value \\\"\".concat(String(value), \"\\\" is invalid for option \\\"\").concat(name, \"\\\"\");\n});\nE('ERR_INVALID_OPT_VALUE_ENCODING', function (value) { return \"The value \\\"\".concat(String(value), \"\\\" is invalid for option \\\"encoding\\\"\"); });\nE('ERR_INVALID_REPL_EVAL_CONFIG', 'Cannot specify both \"breakEvalOnSigint\" and \"eval\" for REPL');\nE('ERR_INVALID_SYNC_FORK_INPUT', 'Asynchronous forks do not support Buffer, Uint8Array or string input: %s');\nE('ERR_INVALID_THIS', 'Value of \"this\" must be of type %s');\nE('ERR_INVALID_TUPLE', '%s must be an iterable %s tuple');\nE('ERR_INVALID_URL', 'Invalid URL: %s');\nE('ERR_INVALID_URL_SCHEME', function (expected) { return \"The URL must be \".concat(oneOf(expected, 'scheme')); });\nE('ERR_IPC_CHANNEL_CLOSED', 'Channel closed');\nE('ERR_IPC_DISCONNECTED', 'IPC channel is already disconnected');\nE('ERR_IPC_ONE_PIPE', 'Child process can have only one IPC pipe');\nE('ERR_IPC_SYNC_FORK', 'IPC cannot be used with synchronous forks');\nE('ERR_MISSING_ARGS', missingArgs);\nE('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\nE('ERR_NAPI_CONS_FUNCTION', 'Constructor must be a function');\nE('ERR_NAPI_CONS_PROTOTYPE_OBJECT', 'Constructor.prototype must be an object');\nE('ERR_NO_CRYPTO', 'Node.js is not compiled with OpenSSL crypto support');\nE('ERR_NO_LONGER_SUPPORTED', '%s is no longer supported');\nE('ERR_PARSE_HISTORY_DATA', 'Could not parse history data in %s');\nE('ERR_SOCKET_ALREADY_BOUND', 'Socket is already bound');\nE('ERR_SOCKET_BAD_PORT', 'Port should be > 0 and < 65536');\nE('ERR_SOCKET_BAD_TYPE', 'Bad socket type specified. Valid types are: udp4, udp6');\nE('ERR_SOCKET_CANNOT_SEND', 'Unable to send data');\nE('ERR_SOCKET_CLOSED', 'Socket is closed');\nE('ERR_SOCKET_DGRAM_NOT_RUNNING', 'Not running');\nE('ERR_STDERR_CLOSE', 'process.stderr cannot be closed');\nE('ERR_STDOUT_CLOSE', 'process.stdout cannot be closed');\nE('ERR_STREAM_WRAP', 'Stream has StringDecoder set or is in objectMode');\nE('ERR_TLS_CERT_ALTNAME_INVALID', \"Hostname/IP does not match certificate's altnames: %s\");\nE('ERR_TLS_DH_PARAM_SIZE', function (size) { return \"DH parameter size \".concat(size, \" is less than 2048\"); });\nE('ERR_TLS_HANDSHAKE_TIMEOUT', 'TLS handshake timeout');\nE('ERR_TLS_RENEGOTIATION_FAILED', 'Failed to renegotiate');\nE('ERR_TLS_REQUIRED_SERVER_NAME', '\"servername\" is required parameter for Server.addContext');\nE('ERR_TLS_SESSION_ATTACK', 'TSL session renegotiation attack detected');\nE('ERR_TRANSFORM_ALREADY_TRANSFORMING', 'Calling transform done when still transforming');\nE('ERR_TRANSFORM_WITH_LENGTH_0', 'Calling transform done when writableState.length != 0');\nE('ERR_UNKNOWN_ENCODING', 'Unknown encoding: %s');\nE('ERR_UNKNOWN_SIGNAL', 'Unknown signal: %s');\nE('ERR_UNKNOWN_STDIN_TYPE', 'Unknown stdin file type');\nE('ERR_UNKNOWN_STREAM_TYPE', 'Unknown stream file type');\nE('ERR_V8BREAKITERATOR', 'Full ICU data not installed. ' + 'See https://github.com/nodejs/node/wiki/Intl');\nfunction invalidArgType(name, expected, actual) {\n assert(name, 'name is required');\n // determiner: 'must be' or 'must not be'\n var determiner;\n if (expected.includes('not ')) {\n determiner = 'must not be';\n expected = expected.split('not ')[1];\n }\n else {\n determiner = 'must be';\n }\n var msg;\n if (Array.isArray(name)) {\n var names = name.map(function (val) { return \"\\\"\".concat(val, \"\\\"\"); }).join(', ');\n msg = \"The \".concat(names, \" arguments \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n else if (name.includes(' argument')) {\n // for the case like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n else {\n var type = name.includes('.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n // if actual value received, output it\n if (arguments.length >= 3) {\n msg += \". Received type \".concat(actual !== null ? typeof actual : 'null');\n }\n return msg;\n}\nfunction missingArgs() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n assert(args.length > 0, 'At least one arg needs to be specified');\n var msg = 'The ';\n var len = args.length;\n args = args.map(function (a) { return \"\\\"\".concat(a, \"\\\"\"); });\n switch (len) {\n case 1:\n msg += \"\".concat(args[0], \" argument\");\n break;\n case 2:\n msg += \"\".concat(args[0], \" and \").concat(args[1], \" arguments\");\n break;\n default:\n msg += args.slice(0, len - 1).join(', ');\n msg += \", and \".concat(args[len - 1], \" arguments\");\n break;\n }\n return \"\".concat(msg, \" must be specified\");\n}\nfunction oneOf(expected, thing) {\n assert(expected, 'expected is required');\n assert(typeof thing === 'string', 'thing is required');\n if (Array.isArray(expected)) {\n var len = expected.length;\n assert(len > 0, 'At least one expected value needs to be specified');\n // tslint:disable-next-line\n expected = expected.map(function (i) { return String(i); });\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n }\n else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n }\n else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n }\n else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n}\nfunction bufferOutOfBounds(name, isWriting) {\n if (isWriting) {\n return 'Attempt to write outside buffer bounds';\n }\n else {\n return \"\\\"\".concat(name, \"\\\" is outside of buffer bounds\");\n }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.strToEncoding = exports.assertEncoding = exports.ENCODING_UTF8 = void 0;\nvar buffer_1 = require(\"./internal/buffer\");\nvar errors = require(\"./internal/errors\");\nexports.ENCODING_UTF8 = 'utf8';\nfunction assertEncoding(encoding) {\n if (encoding && !buffer_1.Buffer.isEncoding(encoding))\n throw new errors.TypeError('ERR_INVALID_OPT_VALUE_ENCODING', encoding);\n}\nexports.assertEncoding = assertEncoding;\nfunction strToEncoding(str, encoding) {\n if (!encoding || encoding === exports.ENCODING_UTF8)\n return str; // UTF-8\n if (encoding === 'buffer')\n return new buffer_1.Buffer(str); // `buffer` encoding\n return new buffer_1.Buffer(str).toString(encoding); // Custom encoding\n}\nexports.strToEncoding = strToEncoding;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Dirent = void 0;\nvar constants_1 = require(\"./constants\");\nvar encoding_1 = require(\"./encoding\");\nvar S_IFMT = constants_1.constants.S_IFMT, S_IFDIR = constants_1.constants.S_IFDIR, S_IFREG = constants_1.constants.S_IFREG, S_IFBLK = constants_1.constants.S_IFBLK, S_IFCHR = constants_1.constants.S_IFCHR, S_IFLNK = constants_1.constants.S_IFLNK, S_IFIFO = constants_1.constants.S_IFIFO, S_IFSOCK = constants_1.constants.S_IFSOCK;\n/**\n * A directory entry, like `fs.Dirent`.\n */\nvar Dirent = /** @class */ (function () {\n function Dirent() {\n this.name = '';\n this.mode = 0;\n }\n Dirent.build = function (link, encoding) {\n var dirent = new Dirent();\n var mode = link.getNode().mode;\n dirent.name = (0, encoding_1.strToEncoding)(link.getName(), encoding);\n dirent.mode = mode;\n return dirent;\n };\n Dirent.prototype._checkModeProperty = function (property) {\n return (this.mode & S_IFMT) === property;\n };\n Dirent.prototype.isDirectory = function () {\n return this._checkModeProperty(S_IFDIR);\n };\n Dirent.prototype.isFile = function () {\n return this._checkModeProperty(S_IFREG);\n };\n Dirent.prototype.isBlockDevice = function () {\n return this._checkModeProperty(S_IFBLK);\n };\n Dirent.prototype.isCharacterDevice = function () {\n return this._checkModeProperty(S_IFCHR);\n };\n Dirent.prototype.isSymbolicLink = function () {\n return this._checkModeProperty(S_IFLNK);\n };\n Dirent.prototype.isFIFO = function () {\n return this._checkModeProperty(S_IFIFO);\n };\n Dirent.prototype.isSocket = function () {\n return this._checkModeProperty(S_IFSOCK);\n };\n return Dirent;\n}());\nexports.Dirent = Dirent;\nexports.default = Dirent;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar _setImmediate;\nif (typeof setImmediate === 'function')\n _setImmediate = setImmediate.bind(typeof globalThis !== 'undefined' ? globalThis : global);\nelse\n _setImmediate = setTimeout.bind(typeof globalThis !== 'undefined' ? globalThis : global);\nexports.default = _setImmediate;\n","\"use strict\";\n// Here we mock the global `process` variable in case we are not in Node's environment.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createProcess = void 0;\n/**\n * Looks to return a `process` object, if one is available.\n *\n * The global `process` is returned if defined;\n * otherwise `require('process')` is attempted.\n *\n * If that fails, `undefined` is returned.\n *\n * @return {IProcess | undefined}\n */\nvar maybeReturnProcess = function () {\n if (typeof process !== 'undefined') {\n return process;\n }\n try {\n return require('process');\n }\n catch (_a) {\n return undefined;\n }\n};\nfunction createProcess() {\n var p = maybeReturnProcess() || {};\n if (!p.cwd)\n p.cwd = function () { return '/'; };\n if (!p.nextTick)\n p.nextTick = require('./setImmediate').default;\n if (!p.emitWarning)\n p.emitWarning = function (message, type) {\n // tslint:disable-next-line:no-console\n console.warn(\"\".concat(type).concat(type ? ': ' : '').concat(message));\n };\n if (!p.env)\n p.env = {};\n return p;\n}\nexports.createProcess = createProcess;\nexports.default = createProcess();\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.File = exports.Link = exports.Node = exports.SEP = void 0;\nvar process_1 = require(\"./process\");\nvar buffer_1 = require(\"./internal/buffer\");\nvar constants_1 = require(\"./constants\");\nvar events_1 = require(\"events\");\nvar Stats_1 = require(\"./Stats\");\nvar S_IFMT = constants_1.constants.S_IFMT, S_IFDIR = constants_1.constants.S_IFDIR, S_IFREG = constants_1.constants.S_IFREG, S_IFLNK = constants_1.constants.S_IFLNK, O_APPEND = constants_1.constants.O_APPEND;\nvar getuid = function () { var _a, _b; return (_b = (_a = process_1.default.getuid) === null || _a === void 0 ? void 0 : _a.call(process_1.default)) !== null && _b !== void 0 ? _b : 0; };\nvar getgid = function () { var _a, _b; return (_b = (_a = process_1.default.getgid) === null || _a === void 0 ? void 0 : _a.call(process_1.default)) !== null && _b !== void 0 ? _b : 0; };\nexports.SEP = '/';\n/**\n * Node in a file system (like i-node, v-node).\n */\nvar Node = /** @class */ (function (_super) {\n __extends(Node, _super);\n function Node(ino, perm) {\n if (perm === void 0) { perm = 438; }\n var _this = _super.call(this) || this;\n // User ID and group ID.\n _this.uid = getuid();\n _this.gid = getgid();\n _this.atime = new Date();\n _this.mtime = new Date();\n _this.ctime = new Date();\n _this.perm = 438; // Permissions `chmod`, `fchmod`\n _this.mode = S_IFREG; // S_IFDIR, S_IFREG, etc.. (file by default?)\n // Number of hard links pointing at this Node.\n _this.nlink = 1;\n _this.perm = perm;\n _this.mode |= perm;\n _this.ino = ino;\n return _this;\n }\n Node.prototype.getString = function (encoding) {\n if (encoding === void 0) { encoding = 'utf8'; }\n return this.getBuffer().toString(encoding);\n };\n Node.prototype.setString = function (str) {\n // this.setBuffer(bufferFrom(str, 'utf8'));\n this.buf = (0, buffer_1.bufferFrom)(str, 'utf8');\n this.touch();\n };\n Node.prototype.getBuffer = function () {\n if (!this.buf)\n this.setBuffer((0, buffer_1.bufferAllocUnsafe)(0));\n return (0, buffer_1.bufferFrom)(this.buf); // Return a copy.\n };\n Node.prototype.setBuffer = function (buf) {\n this.buf = (0, buffer_1.bufferFrom)(buf); // Creates a copy of data.\n this.touch();\n };\n Node.prototype.getSize = function () {\n return this.buf ? this.buf.length : 0;\n };\n Node.prototype.setModeProperty = function (property) {\n this.mode = (this.mode & ~S_IFMT) | property;\n };\n Node.prototype.setIsFile = function () {\n this.setModeProperty(S_IFREG);\n };\n Node.prototype.setIsDirectory = function () {\n this.setModeProperty(S_IFDIR);\n };\n Node.prototype.setIsSymlink = function () {\n this.setModeProperty(S_IFLNK);\n };\n Node.prototype.isFile = function () {\n return (this.mode & S_IFMT) === S_IFREG;\n };\n Node.prototype.isDirectory = function () {\n return (this.mode & S_IFMT) === S_IFDIR;\n };\n Node.prototype.isSymlink = function () {\n // return !!this.symlink;\n return (this.mode & S_IFMT) === S_IFLNK;\n };\n Node.prototype.makeSymlink = function (steps) {\n this.symlink = steps;\n this.setIsSymlink();\n };\n Node.prototype.write = function (buf, off, len, pos) {\n if (off === void 0) { off = 0; }\n if (len === void 0) { len = buf.length; }\n if (pos === void 0) { pos = 0; }\n if (!this.buf)\n this.buf = (0, buffer_1.bufferAllocUnsafe)(0);\n if (pos + len > this.buf.length) {\n var newBuf = (0, buffer_1.bufferAllocUnsafe)(pos + len);\n this.buf.copy(newBuf, 0, 0, this.buf.length);\n this.buf = newBuf;\n }\n buf.copy(this.buf, pos, off, off + len);\n this.touch();\n return len;\n };\n // Returns the number of bytes read.\n Node.prototype.read = function (buf, off, len, pos) {\n if (off === void 0) { off = 0; }\n if (len === void 0) { len = buf.byteLength; }\n if (pos === void 0) { pos = 0; }\n if (!this.buf)\n this.buf = (0, buffer_1.bufferAllocUnsafe)(0);\n var actualLen = len;\n if (actualLen > buf.byteLength) {\n actualLen = buf.byteLength;\n }\n if (actualLen + pos > this.buf.length) {\n actualLen = this.buf.length - pos;\n }\n this.buf.copy(buf, off, pos, pos + actualLen);\n return actualLen;\n };\n Node.prototype.truncate = function (len) {\n if (len === void 0) { len = 0; }\n if (!len)\n this.buf = (0, buffer_1.bufferAllocUnsafe)(0);\n else {\n if (!this.buf)\n this.buf = (0, buffer_1.bufferAllocUnsafe)(0);\n if (len <= this.buf.length) {\n this.buf = this.buf.slice(0, len);\n }\n else {\n var buf = (0, buffer_1.bufferAllocUnsafe)(len);\n this.buf.copy(buf);\n buf.fill(0, this.buf.length);\n this.buf = buf;\n }\n }\n this.touch();\n };\n Node.prototype.chmod = function (perm) {\n this.perm = perm;\n this.mode = (this.mode & ~511) | perm;\n this.touch();\n };\n Node.prototype.chown = function (uid, gid) {\n this.uid = uid;\n this.gid = gid;\n this.touch();\n };\n Node.prototype.touch = function () {\n this.mtime = new Date();\n this.emit('change', this);\n };\n Node.prototype.canRead = function (uid, gid) {\n if (uid === void 0) { uid = getuid(); }\n if (gid === void 0) { gid = getgid(); }\n if (this.perm & 4 /* S.IROTH */) {\n return true;\n }\n if (gid === this.gid) {\n if (this.perm & 32 /* S.IRGRP */) {\n return true;\n }\n }\n if (uid === this.uid) {\n if (this.perm & 256 /* S.IRUSR */) {\n return true;\n }\n }\n return false;\n };\n Node.prototype.canWrite = function (uid, gid) {\n if (uid === void 0) { uid = getuid(); }\n if (gid === void 0) { gid = getgid(); }\n if (this.perm & 2 /* S.IWOTH */) {\n return true;\n }\n if (gid === this.gid) {\n if (this.perm & 16 /* S.IWGRP */) {\n return true;\n }\n }\n if (uid === this.uid) {\n if (this.perm & 128 /* S.IWUSR */) {\n return true;\n }\n }\n return false;\n };\n Node.prototype.del = function () {\n this.emit('delete', this);\n };\n Node.prototype.toJSON = function () {\n return {\n ino: this.ino,\n uid: this.uid,\n gid: this.gid,\n atime: this.atime.getTime(),\n mtime: this.mtime.getTime(),\n ctime: this.ctime.getTime(),\n perm: this.perm,\n mode: this.mode,\n nlink: this.nlink,\n symlink: this.symlink,\n data: this.getString(),\n };\n };\n return Node;\n}(events_1.EventEmitter));\nexports.Node = Node;\n/**\n * Represents a hard link that points to an i-node `node`.\n */\nvar Link = /** @class */ (function (_super) {\n __extends(Link, _super);\n function Link(vol, parent, name) {\n var _this = _super.call(this) || this;\n _this.children = {};\n // Path to this node as Array: ['usr', 'bin', 'node'].\n _this._steps = [];\n // \"i-node\" number of the node.\n _this.ino = 0;\n // Number of children.\n _this.length = 0;\n _this.vol = vol;\n _this.parent = parent;\n _this.name = name;\n _this.syncSteps();\n return _this;\n }\n Object.defineProperty(Link.prototype, \"steps\", {\n get: function () {\n return this._steps;\n },\n // Recursively sync children steps, e.g. in case of dir rename\n set: function (val) {\n this._steps = val;\n for (var _i = 0, _a = Object.values(this.children); _i < _a.length; _i++) {\n var child = _a[_i];\n child === null || child === void 0 ? void 0 : child.syncSteps();\n }\n },\n enumerable: false,\n configurable: true\n });\n Link.prototype.setNode = function (node) {\n this.node = node;\n this.ino = node.ino;\n };\n Link.prototype.getNode = function () {\n return this.node;\n };\n Link.prototype.createChild = function (name, node) {\n if (node === void 0) { node = this.vol.createNode(); }\n var link = new Link(this.vol, this, name);\n link.setNode(node);\n if (node.isDirectory()) {\n // link.setChild('.', link);\n // link.getNode().nlink++;\n // link.setChild('..', this);\n // this.getNode().nlink++;\n }\n this.setChild(name, link);\n return link;\n };\n Link.prototype.setChild = function (name, link) {\n if (link === void 0) { link = new Link(this.vol, this, name); }\n this.children[name] = link;\n link.parent = this;\n this.length++;\n this.emit('child:add', link, this);\n return link;\n };\n Link.prototype.deleteChild = function (link) {\n delete this.children[link.getName()];\n this.length--;\n this.emit('child:delete', link, this);\n };\n Link.prototype.getChild = function (name) {\n if (Object.hasOwnProperty.call(this.children, name)) {\n return this.children[name];\n }\n };\n Link.prototype.getPath = function () {\n return this.steps.join(exports.SEP);\n };\n Link.prototype.getName = function () {\n return this.steps[this.steps.length - 1];\n };\n // del() {\n // const parent = this.parent;\n // if(parent) {\n // parent.deleteChild(link);\n // }\n // this.parent = null;\n // this.vol = null;\n // }\n /**\n * Walk the tree path and return the `Link` at that location, if any.\n * @param steps {string[]} Desired location.\n * @param stop {number} Max steps to go into.\n * @param i {number} Current step in the `steps` array.\n *\n * @return {Link|null}\n */\n Link.prototype.walk = function (steps, stop, i) {\n if (stop === void 0) { stop = steps.length; }\n if (i === void 0) { i = 0; }\n if (i >= steps.length)\n return this;\n if (i >= stop)\n return this;\n var step = steps[i];\n var link = this.getChild(step);\n if (!link)\n return null;\n return link.walk(steps, stop, i + 1);\n };\n Link.prototype.toJSON = function () {\n return {\n steps: this.steps,\n ino: this.ino,\n children: Object.keys(this.children),\n };\n };\n Link.prototype.syncSteps = function () {\n this.steps = this.parent ? this.parent.steps.concat([this.name]) : [this.name];\n };\n return Link;\n}(events_1.EventEmitter));\nexports.Link = Link;\n/**\n * Represents an open file (file descriptor) that points to a `Link` (Hard-link) and a `Node`.\n */\nvar File = /** @class */ (function () {\n /**\n * Open a Link-Node pair. `node` is provided separately as that might be a different node\n * rather the one `link` points to, because it might be a symlink.\n * @param link\n * @param node\n * @param flags\n * @param fd\n */\n function File(link, node, flags, fd) {\n /**\n * A cursor/offset position in a file, where data will be written on write.\n * User can \"seek\" this position.\n */\n this.position = 0;\n this.link = link;\n this.node = node;\n this.flags = flags;\n this.fd = fd;\n }\n File.prototype.getString = function (encoding) {\n if (encoding === void 0) { encoding = 'utf8'; }\n return this.node.getString();\n };\n File.prototype.setString = function (str) {\n this.node.setString(str);\n };\n File.prototype.getBuffer = function () {\n return this.node.getBuffer();\n };\n File.prototype.setBuffer = function (buf) {\n this.node.setBuffer(buf);\n };\n File.prototype.getSize = function () {\n return this.node.getSize();\n };\n File.prototype.truncate = function (len) {\n this.node.truncate(len);\n };\n File.prototype.seekTo = function (position) {\n this.position = position;\n };\n File.prototype.stats = function () {\n return Stats_1.default.build(this.node);\n };\n File.prototype.write = function (buf, offset, length, position) {\n if (offset === void 0) { offset = 0; }\n if (length === void 0) { length = buf.length; }\n if (typeof position !== 'number')\n position = this.position;\n if (this.flags & O_APPEND)\n position = this.getSize();\n var bytes = this.node.write(buf, offset, length, position);\n this.position = position + bytes;\n return bytes;\n };\n File.prototype.read = function (buf, offset, length, position) {\n if (offset === void 0) { offset = 0; }\n if (length === void 0) { length = buf.byteLength; }\n if (typeof position !== 'number')\n position = this.position;\n var bytes = this.node.read(buf, offset, length, position);\n this.position = position + bytes;\n return bytes;\n };\n File.prototype.chmod = function (perm) {\n this.node.chmod(perm);\n };\n File.prototype.chown = function (uid, gid) {\n this.node.chown(uid, gid);\n };\n return File;\n}());\nexports.File = File;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * `setTimeoutUnref` is just like `setTimeout`,\n * only in Node's environment it will \"unref\" its macro task.\n */\nfunction setTimeoutUnref(callback, time, args) {\n var ref = setTimeout.apply(typeof globalThis !== 'undefined' ? globalThis : global, arguments);\n if (ref && typeof ref === 'object' && typeof ref.unref === 'function')\n ref.unref();\n return ref;\n}\nexports.default = setTimeoutUnref;\n","\"use strict\";\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FileHandle = void 0;\nfunction promisify(vol, fn, getResult) {\n if (getResult === void 0) { getResult = function (input) { return input; }; }\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return new Promise(function (resolve, reject) {\n vol[fn].bind(vol).apply(void 0, __spreadArray(__spreadArray([], args, false), [function (error, result) {\n if (error)\n return reject(error);\n return resolve(getResult(result));\n }], false));\n });\n };\n}\nvar FileHandle = /** @class */ (function () {\n function FileHandle(vol, fd) {\n this.vol = vol;\n this.fd = fd;\n }\n FileHandle.prototype.appendFile = function (data, options) {\n return promisify(this.vol, 'appendFile')(this.fd, data, options);\n };\n FileHandle.prototype.chmod = function (mode) {\n return promisify(this.vol, 'fchmod')(this.fd, mode);\n };\n FileHandle.prototype.chown = function (uid, gid) {\n return promisify(this.vol, 'fchown')(this.fd, uid, gid);\n };\n FileHandle.prototype.close = function () {\n return promisify(this.vol, 'close')(this.fd);\n };\n FileHandle.prototype.datasync = function () {\n return promisify(this.vol, 'fdatasync')(this.fd);\n };\n FileHandle.prototype.read = function (buffer, offset, length, position) {\n return promisify(this.vol, 'read', function (bytesRead) { return ({ bytesRead: bytesRead, buffer: buffer }); })(this.fd, buffer, offset, length, position);\n };\n FileHandle.prototype.readFile = function (options) {\n return promisify(this.vol, 'readFile')(this.fd, options);\n };\n FileHandle.prototype.stat = function (options) {\n return promisify(this.vol, 'fstat')(this.fd, options);\n };\n FileHandle.prototype.sync = function () {\n return promisify(this.vol, 'fsync')(this.fd);\n };\n FileHandle.prototype.truncate = function (len) {\n return promisify(this.vol, 'ftruncate')(this.fd, len);\n };\n FileHandle.prototype.utimes = function (atime, mtime) {\n return promisify(this.vol, 'futimes')(this.fd, atime, mtime);\n };\n FileHandle.prototype.write = function (buffer, offset, length, position) {\n return promisify(this.vol, 'write', function (bytesWritten) { return ({ bytesWritten: bytesWritten, buffer: buffer }); })(this.fd, buffer, offset, length, position);\n };\n FileHandle.prototype.writeFile = function (data, options) {\n return promisify(this.vol, 'writeFile')(this.fd, data, options);\n };\n return FileHandle;\n}());\nexports.FileHandle = FileHandle;\nfunction createPromisesApi(vol) {\n if (typeof Promise === 'undefined')\n return null;\n return {\n FileHandle: FileHandle,\n access: function (path, mode) {\n return promisify(vol, 'access')(path, mode);\n },\n appendFile: function (path, data, options) {\n return promisify(vol, 'appendFile')(path instanceof FileHandle ? path.fd : path, data, options);\n },\n chmod: function (path, mode) {\n return promisify(vol, 'chmod')(path, mode);\n },\n chown: function (path, uid, gid) {\n return promisify(vol, 'chown')(path, uid, gid);\n },\n copyFile: function (src, dest, flags) {\n return promisify(vol, 'copyFile')(src, dest, flags);\n },\n lchmod: function (path, mode) {\n return promisify(vol, 'lchmod')(path, mode);\n },\n lchown: function (path, uid, gid) {\n return promisify(vol, 'lchown')(path, uid, gid);\n },\n link: function (existingPath, newPath) {\n return promisify(vol, 'link')(existingPath, newPath);\n },\n lstat: function (path, options) {\n return promisify(vol, 'lstat')(path, options);\n },\n mkdir: function (path, options) {\n return promisify(vol, 'mkdir')(path, options);\n },\n mkdtemp: function (prefix, options) {\n return promisify(vol, 'mkdtemp')(prefix, options);\n },\n open: function (path, flags, mode) {\n return promisify(vol, 'open', function (fd) { return new FileHandle(vol, fd); })(path, flags, mode);\n },\n readdir: function (path, options) {\n return promisify(vol, 'readdir')(path, options);\n },\n readFile: function (id, options) {\n return promisify(vol, 'readFile')(id instanceof FileHandle ? id.fd : id, options);\n },\n readlink: function (path, options) {\n return promisify(vol, 'readlink')(path, options);\n },\n realpath: function (path, options) {\n return promisify(vol, 'realpath')(path, options);\n },\n rename: function (oldPath, newPath) {\n return promisify(vol, 'rename')(oldPath, newPath);\n },\n rmdir: function (path) {\n return promisify(vol, 'rmdir')(path);\n },\n rm: function (path, options) {\n return promisify(vol, 'rm')(path, options);\n },\n stat: function (path, options) {\n return promisify(vol, 'stat')(path, options);\n },\n symlink: function (target, path, type) {\n return promisify(vol, 'symlink')(target, path, type);\n },\n truncate: function (path, len) {\n return promisify(vol, 'truncate')(path, len);\n },\n unlink: function (path) {\n return promisify(vol, 'unlink')(path);\n },\n utimes: function (path, atime, mtime) {\n return promisify(vol, 'utimes')(path, atime, mtime);\n },\n writeFile: function (id, data, options) {\n return promisify(vol, 'writeFile')(id instanceof FileHandle ? id.fd : id, data, options);\n },\n };\n}\nexports.default = createPromisesApi;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.unixify = unixify;\nexports.correctPath = correctPath;\nvar isWin = process.platform === 'win32';\n\nfunction removeTrailingSeparator(str) {\n var i = str.length - 1;\n\n if (i < 2) {\n return str;\n }\n\n while (isSeparator(str, i)) {\n i--;\n }\n\n return str.substr(0, i + 1);\n}\n\nfunction isSeparator(str, i) {\n var _char = str[i];\n return i > 0 && (_char === '/' || isWin && _char === '\\\\');\n}\n\nfunction normalizePath(str, stripTrailing) {\n if (typeof str !== 'string') {\n throw new TypeError('expected a string');\n }\n\n str = str.replace(/[\\\\\\/]+/g, '/');\n\n if (stripTrailing !== false) {\n str = removeTrailingSeparator(str);\n }\n\n return str;\n}\n\nfunction unixify(filepath) {\n var stripTrailing = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (isWin) {\n filepath = normalizePath(filepath, stripTrailing);\n return filepath.replace(/^([a-zA-Z]+:|\\.\\/)/, '');\n }\n\n return filepath;\n}\n\nfunction correctPath(filepath) {\n return unixify(filepath.replace(/^\\\\\\\\\\?\\\\.:\\\\/, '\\\\'));\n}","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FSWatcher = exports.StatWatcher = exports.Volume = exports.toUnixTimestamp = exports.bufferToEncoding = exports.dataToBuffer = exports.dataToStr = exports.pathToSteps = exports.filenameToSteps = exports.pathToFilename = exports.flagsToNumber = exports.FLAGS = void 0;\nvar pathModule = require(\"path\");\nvar node_1 = require(\"./node\");\nvar Stats_1 = require(\"./Stats\");\nvar Dirent_1 = require(\"./Dirent\");\nvar buffer_1 = require(\"./internal/buffer\");\nvar setImmediate_1 = require(\"./setImmediate\");\nvar process_1 = require(\"./process\");\nvar setTimeoutUnref_1 = require(\"./setTimeoutUnref\");\nvar stream_1 = require(\"stream\");\nvar constants_1 = require(\"./constants\");\nvar events_1 = require(\"events\");\nvar encoding_1 = require(\"./encoding\");\nvar errors = require(\"./internal/errors\");\nvar util = require(\"util\");\nvar promises_1 = require(\"./promises\");\nvar resolveCrossPlatform = pathModule.resolve;\nvar O_RDONLY = constants_1.constants.O_RDONLY, O_WRONLY = constants_1.constants.O_WRONLY, O_RDWR = constants_1.constants.O_RDWR, O_CREAT = constants_1.constants.O_CREAT, O_EXCL = constants_1.constants.O_EXCL, O_TRUNC = constants_1.constants.O_TRUNC, O_APPEND = constants_1.constants.O_APPEND, O_SYNC = constants_1.constants.O_SYNC, O_DIRECTORY = constants_1.constants.O_DIRECTORY, F_OK = constants_1.constants.F_OK, COPYFILE_EXCL = constants_1.constants.COPYFILE_EXCL, COPYFILE_FICLONE_FORCE = constants_1.constants.COPYFILE_FICLONE_FORCE;\nvar _a = pathModule.posix ? pathModule.posix : pathModule, sep = _a.sep, relative = _a.relative, join = _a.join, dirname = _a.dirname;\nvar isWin = process_1.default.platform === 'win32';\nvar kMinPoolSpace = 128;\n// const kMaxLength = require('buffer').kMaxLength;\n// ---------------------------------------- Error messages\n// TODO: Use `internal/errors.js` in the future.\nvar ERRSTR = {\n PATH_STR: 'path must be a string or Buffer',\n // FD: 'file descriptor must be a unsigned 32-bit integer',\n FD: 'fd must be a file descriptor',\n MODE_INT: 'mode must be an int',\n CB: 'callback must be a function',\n UID: 'uid must be an unsigned int',\n GID: 'gid must be an unsigned int',\n LEN: 'len must be an integer',\n ATIME: 'atime must be an integer',\n MTIME: 'mtime must be an integer',\n PREFIX: 'filename prefix is required',\n BUFFER: 'buffer must be an instance of Buffer or StaticBuffer',\n OFFSET: 'offset must be an integer',\n LENGTH: 'length must be an integer',\n POSITION: 'position must be an integer',\n};\nvar ERRSTR_OPTS = function (tipeof) { return \"Expected options to be either an object or a string, but got \".concat(tipeof, \" instead\"); };\n// const ERRSTR_FLAG = flag => `Unknown file open flag: ${flag}`;\nvar ENOENT = 'ENOENT';\nvar EBADF = 'EBADF';\nvar EINVAL = 'EINVAL';\nvar EPERM = 'EPERM';\nvar EPROTO = 'EPROTO';\nvar EEXIST = 'EEXIST';\nvar ENOTDIR = 'ENOTDIR';\nvar EMFILE = 'EMFILE';\nvar EACCES = 'EACCES';\nvar EISDIR = 'EISDIR';\nvar ENOTEMPTY = 'ENOTEMPTY';\nvar ENOSYS = 'ENOSYS';\nvar ERR_FS_EISDIR = 'ERR_FS_EISDIR';\nfunction formatError(errorCode, func, path, path2) {\n if (func === void 0) { func = ''; }\n if (path === void 0) { path = ''; }\n if (path2 === void 0) { path2 = ''; }\n var pathFormatted = '';\n if (path)\n pathFormatted = \" '\".concat(path, \"'\");\n if (path2)\n pathFormatted += \" -> '\".concat(path2, \"'\");\n switch (errorCode) {\n case ENOENT:\n return \"ENOENT: no such file or directory, \".concat(func).concat(pathFormatted);\n case EBADF:\n return \"EBADF: bad file descriptor, \".concat(func).concat(pathFormatted);\n case EINVAL:\n return \"EINVAL: invalid argument, \".concat(func).concat(pathFormatted);\n case EPERM:\n return \"EPERM: operation not permitted, \".concat(func).concat(pathFormatted);\n case EPROTO:\n return \"EPROTO: protocol error, \".concat(func).concat(pathFormatted);\n case EEXIST:\n return \"EEXIST: file already exists, \".concat(func).concat(pathFormatted);\n case ENOTDIR:\n return \"ENOTDIR: not a directory, \".concat(func).concat(pathFormatted);\n case EISDIR:\n return \"EISDIR: illegal operation on a directory, \".concat(func).concat(pathFormatted);\n case EACCES:\n return \"EACCES: permission denied, \".concat(func).concat(pathFormatted);\n case ENOTEMPTY:\n return \"ENOTEMPTY: directory not empty, \".concat(func).concat(pathFormatted);\n case EMFILE:\n return \"EMFILE: too many open files, \".concat(func).concat(pathFormatted);\n case ENOSYS:\n return \"ENOSYS: function not implemented, \".concat(func).concat(pathFormatted);\n case ERR_FS_EISDIR:\n return \"[ERR_FS_EISDIR]: Path is a directory: \".concat(func, \" returned EISDIR (is a directory) \").concat(path);\n default:\n return \"\".concat(errorCode, \": error occurred, \").concat(func).concat(pathFormatted);\n }\n}\nfunction createError(errorCode, func, path, path2, Constructor) {\n if (func === void 0) { func = ''; }\n if (path === void 0) { path = ''; }\n if (path2 === void 0) { path2 = ''; }\n if (Constructor === void 0) { Constructor = Error; }\n var error = new Constructor(formatError(errorCode, func, path, path2));\n error.code = errorCode;\n if (path) {\n error.path = path;\n }\n return error;\n}\n// ---------------------------------------- Flags\n// List of file `flags` as defined by Node.\nvar FLAGS;\n(function (FLAGS) {\n // Open file for reading. An exception occurs if the file does not exist.\n FLAGS[FLAGS[\"r\"] = O_RDONLY] = \"r\";\n // Open file for reading and writing. An exception occurs if the file does not exist.\n FLAGS[FLAGS[\"r+\"] = O_RDWR] = \"r+\";\n // Open file for reading in synchronous mode. Instructs the operating system to bypass the local file system cache.\n FLAGS[FLAGS[\"rs\"] = O_RDONLY | O_SYNC] = \"rs\";\n FLAGS[FLAGS[\"sr\"] = FLAGS.rs] = \"sr\";\n // Open file for reading and writing, telling the OS to open it synchronously. See notes for 'rs' about using this with caution.\n FLAGS[FLAGS[\"rs+\"] = O_RDWR | O_SYNC] = \"rs+\";\n FLAGS[FLAGS[\"sr+\"] = FLAGS['rs+']] = \"sr+\";\n // Open file for writing. The file is created (if it does not exist) or truncated (if it exists).\n FLAGS[FLAGS[\"w\"] = O_WRONLY | O_CREAT | O_TRUNC] = \"w\";\n // Like 'w' but fails if path exists.\n FLAGS[FLAGS[\"wx\"] = O_WRONLY | O_CREAT | O_TRUNC | O_EXCL] = \"wx\";\n FLAGS[FLAGS[\"xw\"] = FLAGS.wx] = \"xw\";\n // Open file for reading and writing. The file is created (if it does not exist) or truncated (if it exists).\n FLAGS[FLAGS[\"w+\"] = O_RDWR | O_CREAT | O_TRUNC] = \"w+\";\n // Like 'w+' but fails if path exists.\n FLAGS[FLAGS[\"wx+\"] = O_RDWR | O_CREAT | O_TRUNC | O_EXCL] = \"wx+\";\n FLAGS[FLAGS[\"xw+\"] = FLAGS['wx+']] = \"xw+\";\n // Open file for appending. The file is created if it does not exist.\n FLAGS[FLAGS[\"a\"] = O_WRONLY | O_APPEND | O_CREAT] = \"a\";\n // Like 'a' but fails if path exists.\n FLAGS[FLAGS[\"ax\"] = O_WRONLY | O_APPEND | O_CREAT | O_EXCL] = \"ax\";\n FLAGS[FLAGS[\"xa\"] = FLAGS.ax] = \"xa\";\n // Open file for reading and appending. The file is created if it does not exist.\n FLAGS[FLAGS[\"a+\"] = O_RDWR | O_APPEND | O_CREAT] = \"a+\";\n // Like 'a+' but fails if path exists.\n FLAGS[FLAGS[\"ax+\"] = O_RDWR | O_APPEND | O_CREAT | O_EXCL] = \"ax+\";\n FLAGS[FLAGS[\"xa+\"] = FLAGS['ax+']] = \"xa+\";\n})(FLAGS = exports.FLAGS || (exports.FLAGS = {}));\nfunction flagsToNumber(flags) {\n if (typeof flags === 'number')\n return flags;\n if (typeof flags === 'string') {\n var flagsNum = FLAGS[flags];\n if (typeof flagsNum !== 'undefined')\n return flagsNum;\n }\n // throw new TypeError(formatError(ERRSTR_FLAG(flags)));\n throw new errors.TypeError('ERR_INVALID_OPT_VALUE', 'flags', flags);\n}\nexports.flagsToNumber = flagsToNumber;\n// ---------------------------------------- Options\nfunction getOptions(defaults, options) {\n var opts;\n if (!options)\n return defaults;\n else {\n var tipeof = typeof options;\n switch (tipeof) {\n case 'string':\n opts = Object.assign({}, defaults, { encoding: options });\n break;\n case 'object':\n opts = Object.assign({}, defaults, options);\n break;\n default:\n throw TypeError(ERRSTR_OPTS(tipeof));\n }\n }\n if (opts.encoding !== 'buffer')\n (0, encoding_1.assertEncoding)(opts.encoding);\n return opts;\n}\nfunction optsGenerator(defaults) {\n return function (options) { return getOptions(defaults, options); };\n}\nfunction validateCallback(callback) {\n if (typeof callback !== 'function')\n throw TypeError(ERRSTR.CB);\n return callback;\n}\nfunction optsAndCbGenerator(getOpts) {\n return function (options, callback) {\n return typeof options === 'function' ? [getOpts(), options] : [getOpts(options), validateCallback(callback)];\n };\n}\nvar optsDefaults = {\n encoding: 'utf8',\n};\nvar getDefaultOpts = optsGenerator(optsDefaults);\nvar getDefaultOptsAndCb = optsAndCbGenerator(getDefaultOpts);\nvar readFileOptsDefaults = {\n flag: 'r',\n};\nvar getReadFileOptions = optsGenerator(readFileOptsDefaults);\nvar writeFileDefaults = {\n encoding: 'utf8',\n mode: 438 /* MODE.DEFAULT */,\n flag: FLAGS[FLAGS.w],\n};\nvar getWriteFileOptions = optsGenerator(writeFileDefaults);\nvar appendFileDefaults = {\n encoding: 'utf8',\n mode: 438 /* MODE.DEFAULT */,\n flag: FLAGS[FLAGS.a],\n};\nvar getAppendFileOpts = optsGenerator(appendFileDefaults);\nvar getAppendFileOptsAndCb = optsAndCbGenerator(getAppendFileOpts);\nvar realpathDefaults = optsDefaults;\nvar getRealpathOptions = optsGenerator(realpathDefaults);\nvar getRealpathOptsAndCb = optsAndCbGenerator(getRealpathOptions);\nvar mkdirDefaults = {\n mode: 511 /* MODE.DIR */,\n recursive: false,\n};\nvar getMkdirOptions = function (options) {\n if (typeof options === 'number')\n return Object.assign({}, mkdirDefaults, { mode: options });\n return Object.assign({}, mkdirDefaults, options);\n};\nvar rmdirDefaults = {\n recursive: false,\n};\nvar getRmdirOptions = function (options) {\n return Object.assign({}, rmdirDefaults, options);\n};\nvar getRmOpts = optsGenerator(optsDefaults);\nvar getRmOptsAndCb = optsAndCbGenerator(getRmOpts);\nvar readdirDefaults = {\n encoding: 'utf8',\n withFileTypes: false,\n};\nvar getReaddirOptions = optsGenerator(readdirDefaults);\nvar getReaddirOptsAndCb = optsAndCbGenerator(getReaddirOptions);\nvar statDefaults = {\n bigint: false,\n};\nvar getStatOptions = function (options) {\n if (options === void 0) { options = {}; }\n return Object.assign({}, statDefaults, options);\n};\nvar getStatOptsAndCb = function (options, callback) {\n return typeof options === 'function' ? [getStatOptions(), options] : [getStatOptions(options), validateCallback(callback)];\n};\n// ---------------------------------------- Utility functions\nfunction getPathFromURLPosix(url) {\n if (url.hostname !== '') {\n throw new errors.TypeError('ERR_INVALID_FILE_URL_HOST', process_1.default.platform);\n }\n var pathname = url.pathname;\n for (var n = 0; n < pathname.length; n++) {\n if (pathname[n] === '%') {\n var third = pathname.codePointAt(n + 2) | 0x20;\n if (pathname[n + 1] === '2' && third === 102) {\n throw new errors.TypeError('ERR_INVALID_FILE_URL_PATH', 'must not include encoded / characters');\n }\n }\n }\n return decodeURIComponent(pathname);\n}\nfunction pathToFilename(path) {\n if (typeof path !== 'string' && !buffer_1.Buffer.isBuffer(path)) {\n try {\n if (!(path instanceof require('url').URL))\n throw new TypeError(ERRSTR.PATH_STR);\n }\n catch (err) {\n throw new TypeError(ERRSTR.PATH_STR);\n }\n path = getPathFromURLPosix(path);\n }\n var pathString = String(path);\n nullCheck(pathString);\n // return slash(pathString);\n return pathString;\n}\nexports.pathToFilename = pathToFilename;\nvar resolve = function (filename, base) {\n if (base === void 0) { base = process_1.default.cwd(); }\n return resolveCrossPlatform(base, filename);\n};\nif (isWin) {\n var _resolve_1 = resolve;\n var unixify_1 = require('fs-monkey/lib/correctPath').unixify;\n resolve = function (filename, base) { return unixify_1(_resolve_1(filename, base)); };\n}\nfunction filenameToSteps(filename, base) {\n var fullPath = resolve(filename, base);\n var fullPathSansSlash = fullPath.substring(1);\n if (!fullPathSansSlash)\n return [];\n return fullPathSansSlash.split(sep);\n}\nexports.filenameToSteps = filenameToSteps;\nfunction pathToSteps(path) {\n return filenameToSteps(pathToFilename(path));\n}\nexports.pathToSteps = pathToSteps;\nfunction dataToStr(data, encoding) {\n if (encoding === void 0) { encoding = encoding_1.ENCODING_UTF8; }\n if (buffer_1.Buffer.isBuffer(data))\n return data.toString(encoding);\n else if (data instanceof Uint8Array)\n return (0, buffer_1.bufferFrom)(data).toString(encoding);\n else\n return String(data);\n}\nexports.dataToStr = dataToStr;\nfunction dataToBuffer(data, encoding) {\n if (encoding === void 0) { encoding = encoding_1.ENCODING_UTF8; }\n if (buffer_1.Buffer.isBuffer(data))\n return data;\n else if (data instanceof Uint8Array)\n return (0, buffer_1.bufferFrom)(data);\n else\n return (0, buffer_1.bufferFrom)(String(data), encoding);\n}\nexports.dataToBuffer = dataToBuffer;\nfunction bufferToEncoding(buffer, encoding) {\n if (!encoding || encoding === 'buffer')\n return buffer;\n else\n return buffer.toString(encoding);\n}\nexports.bufferToEncoding = bufferToEncoding;\nfunction nullCheck(path, callback) {\n if (('' + path).indexOf('\\u0000') !== -1) {\n var er = new Error('Path must be a string without null bytes');\n er.code = ENOENT;\n if (typeof callback !== 'function')\n throw er;\n process_1.default.nextTick(callback, er);\n return false;\n }\n return true;\n}\nfunction _modeToNumber(mode, def) {\n if (typeof mode === 'number')\n return mode;\n if (typeof mode === 'string')\n return parseInt(mode, 8);\n if (def)\n return modeToNumber(def);\n return undefined;\n}\nfunction modeToNumber(mode, def) {\n var result = _modeToNumber(mode, def);\n if (typeof result !== 'number' || isNaN(result))\n throw new TypeError(ERRSTR.MODE_INT);\n return result;\n}\nfunction isFd(path) {\n return path >>> 0 === path;\n}\nfunction validateFd(fd) {\n if (!isFd(fd))\n throw TypeError(ERRSTR.FD);\n}\n// converts Date or number to a fractional UNIX timestamp\nfunction toUnixTimestamp(time) {\n // tslint:disable-next-line triple-equals\n if (typeof time === 'string' && +time == time) {\n return +time;\n }\n if (time instanceof Date) {\n return time.getTime() / 1000;\n }\n if (isFinite(time)) {\n if (time < 0) {\n return Date.now() / 1000;\n }\n return time;\n }\n throw new Error('Cannot parse time: ' + time);\n}\nexports.toUnixTimestamp = toUnixTimestamp;\nfunction validateUid(uid) {\n if (typeof uid !== 'number')\n throw TypeError(ERRSTR.UID);\n}\nfunction validateGid(gid) {\n if (typeof gid !== 'number')\n throw TypeError(ERRSTR.GID);\n}\nfunction flattenJSON(nestedJSON) {\n var flatJSON = {};\n function flatten(pathPrefix, node) {\n for (var path in node) {\n var contentOrNode = node[path];\n var joinedPath = join(pathPrefix, path);\n if (typeof contentOrNode === 'string') {\n flatJSON[joinedPath] = contentOrNode;\n }\n else if (typeof contentOrNode === 'object' && contentOrNode !== null && Object.keys(contentOrNode).length > 0) {\n // empty directories need an explicit entry and therefore get handled in `else`, non-empty ones are implicitly considered\n flatten(joinedPath, contentOrNode);\n }\n else {\n // without this branch null, empty-object or non-object entries would not be handled in the same way\n // by both fromJSON() and fromNestedJSON()\n flatJSON[joinedPath] = null;\n }\n }\n }\n flatten('', nestedJSON);\n return flatJSON;\n}\n/**\n * `Volume` represents a file system.\n */\nvar Volume = /** @class */ (function () {\n function Volume(props) {\n if (props === void 0) { props = {}; }\n // I-node number counter.\n this.ino = 0;\n // A mapping for i-node numbers to i-nodes (`Node`);\n this.inodes = {};\n // List of released i-node numbers, for reuse.\n this.releasedInos = [];\n // A mapping for file descriptors to `File`s.\n this.fds = {};\n // A list of reusable (opened and closed) file descriptors, that should be\n // used first before creating a new file descriptor.\n this.releasedFds = [];\n // Max number of open files.\n this.maxFiles = 10000;\n // Current number of open files.\n this.openFiles = 0;\n this.promisesApi = (0, promises_1.default)(this);\n this.statWatchers = {};\n this.props = Object.assign({ Node: node_1.Node, Link: node_1.Link, File: node_1.File }, props);\n var root = this.createLink();\n root.setNode(this.createNode(true));\n var self = this; // tslint:disable-line no-this-assignment\n this.StatWatcher = /** @class */ (function (_super) {\n __extends(StatWatcher, _super);\n function StatWatcher() {\n return _super.call(this, self) || this;\n }\n return StatWatcher;\n }(StatWatcher));\n var _ReadStream = FsReadStream;\n this.ReadStream = /** @class */ (function (_super) {\n __extends(class_1, _super);\n function class_1() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return _super.apply(this, __spreadArray([self], args, false)) || this;\n }\n return class_1;\n }(_ReadStream));\n var _WriteStream = FsWriteStream;\n this.WriteStream = /** @class */ (function (_super) {\n __extends(class_2, _super);\n function class_2() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return _super.apply(this, __spreadArray([self], args, false)) || this;\n }\n return class_2;\n }(_WriteStream));\n this.FSWatcher = /** @class */ (function (_super) {\n __extends(FSWatcher, _super);\n function FSWatcher() {\n return _super.call(this, self) || this;\n }\n return FSWatcher;\n }(FSWatcher));\n // root.setChild('.', root);\n // root.getNode().nlink++;\n // root.setChild('..', root);\n // root.getNode().nlink++;\n this.root = root;\n }\n Volume.fromJSON = function (json, cwd) {\n var vol = new Volume();\n vol.fromJSON(json, cwd);\n return vol;\n };\n Volume.fromNestedJSON = function (json, cwd) {\n var vol = new Volume();\n vol.fromNestedJSON(json, cwd);\n return vol;\n };\n Object.defineProperty(Volume.prototype, \"promises\", {\n get: function () {\n if (this.promisesApi === null)\n throw new Error('Promise is not supported in this environment.');\n return this.promisesApi;\n },\n enumerable: false,\n configurable: true\n });\n Volume.prototype.createLink = function (parent, name, isDirectory, perm) {\n if (isDirectory === void 0) { isDirectory = false; }\n if (!parent) {\n return new this.props.Link(this, null, '');\n }\n if (!name) {\n throw new Error('createLink: name cannot be empty');\n }\n return parent.createChild(name, this.createNode(isDirectory, perm));\n };\n Volume.prototype.deleteLink = function (link) {\n var parent = link.parent;\n if (parent) {\n parent.deleteChild(link);\n return true;\n }\n return false;\n };\n Volume.prototype.newInoNumber = function () {\n var releasedFd = this.releasedInos.pop();\n if (releasedFd)\n return releasedFd;\n else {\n this.ino = (this.ino + 1) % 0xffffffff;\n return this.ino;\n }\n };\n Volume.prototype.newFdNumber = function () {\n var releasedFd = this.releasedFds.pop();\n return typeof releasedFd === 'number' ? releasedFd : Volume.fd--;\n };\n Volume.prototype.createNode = function (isDirectory, perm) {\n if (isDirectory === void 0) { isDirectory = false; }\n var node = new this.props.Node(this.newInoNumber(), perm);\n if (isDirectory)\n node.setIsDirectory();\n this.inodes[node.ino] = node;\n return node;\n };\n Volume.prototype.getNode = function (ino) {\n return this.inodes[ino];\n };\n Volume.prototype.deleteNode = function (node) {\n node.del();\n delete this.inodes[node.ino];\n this.releasedInos.push(node.ino);\n };\n // Generates 6 character long random string, used by `mkdtemp`.\n Volume.prototype.genRndStr = function () {\n var str = (Math.random() + 1).toString(36).substring(2, 8);\n if (str.length === 6)\n return str;\n else\n return this.genRndStr();\n };\n // Returns a `Link` (hard link) referenced by path \"split\" into steps.\n Volume.prototype.getLink = function (steps) {\n return this.root.walk(steps);\n };\n // Just link `getLink`, but throws a correct user error, if link to found.\n Volume.prototype.getLinkOrThrow = function (filename, funcName) {\n var steps = filenameToSteps(filename);\n var link = this.getLink(steps);\n if (!link)\n throw createError(ENOENT, funcName, filename);\n return link;\n };\n // Just like `getLink`, but also dereference/resolves symbolic links.\n Volume.prototype.getResolvedLink = function (filenameOrSteps) {\n var steps = typeof filenameOrSteps === 'string' ? filenameToSteps(filenameOrSteps) : filenameOrSteps;\n var link = this.root;\n var i = 0;\n while (i < steps.length) {\n var step = steps[i];\n link = link.getChild(step);\n if (!link)\n return null;\n var node = link.getNode();\n if (node.isSymlink()) {\n steps = node.symlink.concat(steps.slice(i + 1));\n link = this.root;\n i = 0;\n continue;\n }\n i++;\n }\n return link;\n };\n // Just like `getLinkOrThrow`, but also dereference/resolves symbolic links.\n Volume.prototype.getResolvedLinkOrThrow = function (filename, funcName) {\n var link = this.getResolvedLink(filename);\n if (!link)\n throw createError(ENOENT, funcName, filename);\n return link;\n };\n Volume.prototype.resolveSymlinks = function (link) {\n // let node: Node = link.getNode();\n // while(link && node.isSymlink()) {\n // link = this.getLink(node.symlink);\n // if(!link) return null;\n // node = link.getNode();\n // }\n // return link;\n return this.getResolvedLink(link.steps.slice(1));\n };\n // Just like `getLinkOrThrow`, but also verifies that the link is a directory.\n Volume.prototype.getLinkAsDirOrThrow = function (filename, funcName) {\n var link = this.getLinkOrThrow(filename, funcName);\n if (!link.getNode().isDirectory())\n throw createError(ENOTDIR, funcName, filename);\n return link;\n };\n // Get the immediate parent directory of the link.\n Volume.prototype.getLinkParent = function (steps) {\n return this.root.walk(steps, steps.length - 1);\n };\n Volume.prototype.getLinkParentAsDirOrThrow = function (filenameOrSteps, funcName) {\n var steps = filenameOrSteps instanceof Array ? filenameOrSteps : filenameToSteps(filenameOrSteps);\n var link = this.getLinkParent(steps);\n if (!link)\n throw createError(ENOENT, funcName, sep + steps.join(sep));\n if (!link.getNode().isDirectory())\n throw createError(ENOTDIR, funcName, sep + steps.join(sep));\n return link;\n };\n Volume.prototype.getFileByFd = function (fd) {\n return this.fds[String(fd)];\n };\n Volume.prototype.getFileByFdOrThrow = function (fd, funcName) {\n if (!isFd(fd))\n throw TypeError(ERRSTR.FD);\n var file = this.getFileByFd(fd);\n if (!file)\n throw createError(EBADF, funcName);\n return file;\n };\n /**\n * @todo This is not used anymore. Remove.\n */\n /*\n private getNodeByIdOrCreate(id: TFileId, flags: number, perm: number): Node {\n if (typeof id === 'number') {\n const file = this.getFileByFd(id);\n if (!file) throw Error('File nto found');\n return file.node;\n } else {\n const steps = pathToSteps(id as PathLike);\n let link = this.getLink(steps);\n if (link) return link.getNode();\n \n // Try creating a node if not found.\n if (flags & O_CREAT) {\n const dirLink = this.getLinkParent(steps);\n if (dirLink) {\n const name = steps[steps.length - 1];\n link = this.createLink(dirLink, name, false, perm);\n return link.getNode();\n }\n }\n \n throw createError(ENOENT, 'getNodeByIdOrCreate', pathToFilename(id));\n }\n }\n */\n Volume.prototype.wrapAsync = function (method, args, callback) {\n var _this = this;\n validateCallback(callback);\n (0, setImmediate_1.default)(function () {\n var result;\n try {\n result = method.apply(_this, args);\n }\n catch (err) {\n callback(err);\n return;\n }\n callback(null, result);\n });\n };\n Volume.prototype._toJSON = function (link, json, path) {\n var _a;\n if (link === void 0) { link = this.root; }\n if (json === void 0) { json = {}; }\n var isEmpty = true;\n var children = link.children;\n if (link.getNode().isFile()) {\n children = (_a = {}, _a[link.getName()] = link.parent.getChild(link.getName()), _a);\n link = link.parent;\n }\n for (var name_1 in children) {\n isEmpty = false;\n var child = link.getChild(name_1);\n if (!child) {\n throw new Error('_toJSON: unexpected undefined');\n }\n var node = child.getNode();\n if (node.isFile()) {\n var filename = child.getPath();\n if (path)\n filename = relative(path, filename);\n json[filename] = node.getString();\n }\n else if (node.isDirectory()) {\n this._toJSON(child, json, path);\n }\n }\n var dirPath = link.getPath();\n if (path)\n dirPath = relative(path, dirPath);\n if (dirPath && isEmpty) {\n json[dirPath] = null;\n }\n return json;\n };\n Volume.prototype.toJSON = function (paths, json, isRelative) {\n if (json === void 0) { json = {}; }\n if (isRelative === void 0) { isRelative = false; }\n var links = [];\n if (paths) {\n if (!(paths instanceof Array))\n paths = [paths];\n for (var _i = 0, paths_1 = paths; _i < paths_1.length; _i++) {\n var path = paths_1[_i];\n var filename = pathToFilename(path);\n var link = this.getResolvedLink(filename);\n if (!link)\n continue;\n links.push(link);\n }\n }\n else {\n links.push(this.root);\n }\n if (!links.length)\n return json;\n for (var _a = 0, links_1 = links; _a < links_1.length; _a++) {\n var link = links_1[_a];\n this._toJSON(link, json, isRelative ? link.getPath() : '');\n }\n return json;\n };\n Volume.prototype.fromJSON = function (json, cwd) {\n if (cwd === void 0) { cwd = process_1.default.cwd(); }\n for (var filename in json) {\n var data = json[filename];\n filename = resolve(filename, cwd);\n if (typeof data === 'string') {\n var dir = dirname(filename);\n this.mkdirpBase(dir, 511 /* MODE.DIR */);\n this.writeFileSync(filename, data);\n }\n else {\n this.mkdirpBase(filename, 511 /* MODE.DIR */);\n }\n }\n };\n Volume.prototype.fromNestedJSON = function (json, cwd) {\n this.fromJSON(flattenJSON(json), cwd);\n };\n Volume.prototype.reset = function () {\n this.ino = 0;\n this.inodes = {};\n this.releasedInos = [];\n this.fds = {};\n this.releasedFds = [];\n this.openFiles = 0;\n this.root = this.createLink();\n this.root.setNode(this.createNode(true));\n };\n // Legacy interface\n Volume.prototype.mountSync = function (mountpoint, json) {\n this.fromJSON(json, mountpoint);\n };\n Volume.prototype.openLink = function (link, flagsNum, resolveSymlinks) {\n if (resolveSymlinks === void 0) { resolveSymlinks = true; }\n if (this.openFiles >= this.maxFiles) {\n // Too many open files.\n throw createError(EMFILE, 'open', link.getPath());\n }\n // Resolve symlinks.\n var realLink = link;\n if (resolveSymlinks)\n realLink = this.resolveSymlinks(link);\n if (!realLink)\n throw createError(ENOENT, 'open', link.getPath());\n var node = realLink.getNode();\n // Check whether node is a directory\n if (node.isDirectory()) {\n if ((flagsNum & (O_RDONLY | O_RDWR | O_WRONLY)) !== O_RDONLY)\n throw createError(EISDIR, 'open', link.getPath());\n }\n else {\n if (flagsNum & O_DIRECTORY)\n throw createError(ENOTDIR, 'open', link.getPath());\n }\n // Check node permissions\n if (!(flagsNum & O_WRONLY)) {\n if (!node.canRead()) {\n throw createError(EACCES, 'open', link.getPath());\n }\n }\n if (flagsNum & O_RDWR) {\n }\n var file = new this.props.File(link, node, flagsNum, this.newFdNumber());\n this.fds[file.fd] = file;\n this.openFiles++;\n if (flagsNum & O_TRUNC)\n file.truncate();\n return file;\n };\n Volume.prototype.openFile = function (filename, flagsNum, modeNum, resolveSymlinks) {\n if (resolveSymlinks === void 0) { resolveSymlinks = true; }\n var steps = filenameToSteps(filename);\n var link = resolveSymlinks ? this.getResolvedLink(steps) : this.getLink(steps);\n if (link && flagsNum & O_EXCL)\n throw createError(EEXIST, 'open', filename);\n // Try creating a new file, if it does not exist.\n if (!link && flagsNum & O_CREAT) {\n // const dirLink: Link = this.getLinkParent(steps);\n var dirLink = this.getResolvedLink(steps.slice(0, steps.length - 1));\n // if(!dirLink) throw createError(ENOENT, 'open', filename);\n if (!dirLink)\n throw createError(ENOENT, 'open', sep + steps.join(sep));\n if (flagsNum & O_CREAT && typeof modeNum === 'number') {\n link = this.createLink(dirLink, steps[steps.length - 1], false, modeNum);\n }\n }\n if (link)\n return this.openLink(link, flagsNum, resolveSymlinks);\n throw createError(ENOENT, 'open', filename);\n };\n Volume.prototype.openBase = function (filename, flagsNum, modeNum, resolveSymlinks) {\n if (resolveSymlinks === void 0) { resolveSymlinks = true; }\n var file = this.openFile(filename, flagsNum, modeNum, resolveSymlinks);\n if (!file)\n throw createError(ENOENT, 'open', filename);\n return file.fd;\n };\n Volume.prototype.openSync = function (path, flags, mode) {\n if (mode === void 0) { mode = 438 /* MODE.DEFAULT */; }\n // Validate (1) mode; (2) path; (3) flags - in that order.\n var modeNum = modeToNumber(mode);\n var fileName = pathToFilename(path);\n var flagsNum = flagsToNumber(flags);\n return this.openBase(fileName, flagsNum, modeNum);\n };\n Volume.prototype.open = function (path, flags, a, b) {\n var mode = a;\n var callback = b;\n if (typeof a === 'function') {\n mode = 438 /* MODE.DEFAULT */;\n callback = a;\n }\n mode = mode || 438 /* MODE.DEFAULT */;\n var modeNum = modeToNumber(mode);\n var fileName = pathToFilename(path);\n var flagsNum = flagsToNumber(flags);\n this.wrapAsync(this.openBase, [fileName, flagsNum, modeNum], callback);\n };\n Volume.prototype.closeFile = function (file) {\n if (!this.fds[file.fd])\n return;\n this.openFiles--;\n delete this.fds[file.fd];\n this.releasedFds.push(file.fd);\n };\n Volume.prototype.closeSync = function (fd) {\n validateFd(fd);\n var file = this.getFileByFdOrThrow(fd, 'close');\n this.closeFile(file);\n };\n Volume.prototype.close = function (fd, callback) {\n validateFd(fd);\n this.wrapAsync(this.closeSync, [fd], callback);\n };\n Volume.prototype.openFileOrGetById = function (id, flagsNum, modeNum) {\n if (typeof id === 'number') {\n var file = this.fds[id];\n if (!file)\n throw createError(ENOENT);\n return file;\n }\n else {\n return this.openFile(pathToFilename(id), flagsNum, modeNum);\n }\n };\n Volume.prototype.readBase = function (fd, buffer, offset, length, position) {\n var file = this.getFileByFdOrThrow(fd);\n return file.read(buffer, Number(offset), Number(length), position);\n };\n Volume.prototype.readSync = function (fd, buffer, offset, length, position) {\n validateFd(fd);\n return this.readBase(fd, buffer, offset, length, position);\n };\n Volume.prototype.read = function (fd, buffer, offset, length, position, callback) {\n var _this = this;\n validateCallback(callback);\n // This `if` branch is from Node.js\n if (length === 0) {\n return process_1.default.nextTick(function () {\n if (callback)\n callback(null, 0, buffer);\n });\n }\n (0, setImmediate_1.default)(function () {\n try {\n var bytes = _this.readBase(fd, buffer, offset, length, position);\n callback(null, bytes, buffer);\n }\n catch (err) {\n callback(err);\n }\n });\n };\n Volume.prototype.readFileBase = function (id, flagsNum, encoding) {\n var result;\n var isUserFd = typeof id === 'number';\n var userOwnsFd = isUserFd && isFd(id);\n var fd;\n if (userOwnsFd)\n fd = id;\n else {\n var filename = pathToFilename(id);\n var steps = filenameToSteps(filename);\n var link = this.getResolvedLink(steps);\n if (link) {\n var node = link.getNode();\n if (node.isDirectory())\n throw createError(EISDIR, 'open', link.getPath());\n }\n fd = this.openSync(id, flagsNum);\n }\n try {\n result = bufferToEncoding(this.getFileByFdOrThrow(fd).getBuffer(), encoding);\n }\n finally {\n if (!userOwnsFd) {\n this.closeSync(fd);\n }\n }\n return result;\n };\n Volume.prototype.readFileSync = function (file, options) {\n var opts = getReadFileOptions(options);\n var flagsNum = flagsToNumber(opts.flag);\n return this.readFileBase(file, flagsNum, opts.encoding);\n };\n Volume.prototype.readFile = function (id, a, b) {\n var _a = optsAndCbGenerator(getReadFileOptions)(a, b), opts = _a[0], callback = _a[1];\n var flagsNum = flagsToNumber(opts.flag);\n this.wrapAsync(this.readFileBase, [id, flagsNum, opts.encoding], callback);\n };\n Volume.prototype.writeBase = function (fd, buf, offset, length, position) {\n var file = this.getFileByFdOrThrow(fd, 'write');\n return file.write(buf, offset, length, position);\n };\n Volume.prototype.writeSync = function (fd, a, b, c, d) {\n validateFd(fd);\n var encoding;\n var offset;\n var length;\n var position;\n var isBuffer = typeof a !== 'string';\n if (isBuffer) {\n offset = (b || 0) | 0;\n length = c;\n position = d;\n }\n else {\n position = b;\n encoding = c;\n }\n var buf = dataToBuffer(a, encoding);\n if (isBuffer) {\n if (typeof length === 'undefined') {\n length = buf.length;\n }\n }\n else {\n offset = 0;\n length = buf.length;\n }\n return this.writeBase(fd, buf, offset, length, position);\n };\n Volume.prototype.write = function (fd, a, b, c, d, e) {\n var _this = this;\n validateFd(fd);\n var offset;\n var length;\n var position;\n var encoding;\n var callback;\n var tipa = typeof a;\n var tipb = typeof b;\n var tipc = typeof c;\n var tipd = typeof d;\n if (tipa !== 'string') {\n if (tipb === 'function') {\n callback = b;\n }\n else if (tipc === 'function') {\n offset = b | 0;\n callback = c;\n }\n else if (tipd === 'function') {\n offset = b | 0;\n length = c;\n callback = d;\n }\n else {\n offset = b | 0;\n length = c;\n position = d;\n callback = e;\n }\n }\n else {\n if (tipb === 'function') {\n callback = b;\n }\n else if (tipc === 'function') {\n position = b;\n callback = c;\n }\n else if (tipd === 'function') {\n position = b;\n encoding = c;\n callback = d;\n }\n }\n var buf = dataToBuffer(a, encoding);\n if (tipa !== 'string') {\n if (typeof length === 'undefined')\n length = buf.length;\n }\n else {\n offset = 0;\n length = buf.length;\n }\n var cb = validateCallback(callback);\n (0, setImmediate_1.default)(function () {\n try {\n var bytes = _this.writeBase(fd, buf, offset, length, position);\n if (tipa !== 'string') {\n cb(null, bytes, buf);\n }\n else {\n cb(null, bytes, a);\n }\n }\n catch (err) {\n cb(err);\n }\n });\n };\n Volume.prototype.writeFileBase = function (id, buf, flagsNum, modeNum) {\n // console.log('writeFileBase', id, buf, flagsNum, modeNum);\n // const node = this.getNodeByIdOrCreate(id, flagsNum, modeNum);\n // node.setBuffer(buf);\n var isUserFd = typeof id === 'number';\n var fd;\n if (isUserFd)\n fd = id;\n else {\n fd = this.openBase(pathToFilename(id), flagsNum, modeNum);\n // fd = this.openSync(id as PathLike, flagsNum, modeNum);\n }\n var offset = 0;\n var length = buf.length;\n var position = flagsNum & O_APPEND ? undefined : 0;\n try {\n while (length > 0) {\n var written = this.writeSync(fd, buf, offset, length, position);\n offset += written;\n length -= written;\n if (position !== undefined)\n position += written;\n }\n }\n finally {\n if (!isUserFd)\n this.closeSync(fd);\n }\n };\n Volume.prototype.writeFileSync = function (id, data, options) {\n var opts = getWriteFileOptions(options);\n var flagsNum = flagsToNumber(opts.flag);\n var modeNum = modeToNumber(opts.mode);\n var buf = dataToBuffer(data, opts.encoding);\n this.writeFileBase(id, buf, flagsNum, modeNum);\n };\n Volume.prototype.writeFile = function (id, data, a, b) {\n var options = a;\n var callback = b;\n if (typeof a === 'function') {\n options = writeFileDefaults;\n callback = a;\n }\n var cb = validateCallback(callback);\n var opts = getWriteFileOptions(options);\n var flagsNum = flagsToNumber(opts.flag);\n var modeNum = modeToNumber(opts.mode);\n var buf = dataToBuffer(data, opts.encoding);\n this.wrapAsync(this.writeFileBase, [id, buf, flagsNum, modeNum], cb);\n };\n Volume.prototype.linkBase = function (filename1, filename2) {\n var steps1 = filenameToSteps(filename1);\n var link1 = this.getLink(steps1);\n if (!link1)\n throw createError(ENOENT, 'link', filename1, filename2);\n var steps2 = filenameToSteps(filename2);\n // Check new link directory exists.\n var dir2 = this.getLinkParent(steps2);\n if (!dir2)\n throw createError(ENOENT, 'link', filename1, filename2);\n var name = steps2[steps2.length - 1];\n // Check if new file already exists.\n if (dir2.getChild(name))\n throw createError(EEXIST, 'link', filename1, filename2);\n var node = link1.getNode();\n node.nlink++;\n dir2.createChild(name, node);\n };\n Volume.prototype.copyFileBase = function (src, dest, flags) {\n var buf = this.readFileSync(src);\n if (flags & COPYFILE_EXCL) {\n if (this.existsSync(dest)) {\n throw createError(EEXIST, 'copyFile', src, dest);\n }\n }\n if (flags & COPYFILE_FICLONE_FORCE) {\n throw createError(ENOSYS, 'copyFile', src, dest);\n }\n this.writeFileBase(dest, buf, FLAGS.w, 438 /* MODE.DEFAULT */);\n };\n Volume.prototype.copyFileSync = function (src, dest, flags) {\n var srcFilename = pathToFilename(src);\n var destFilename = pathToFilename(dest);\n return this.copyFileBase(srcFilename, destFilename, (flags || 0) | 0);\n };\n Volume.prototype.copyFile = function (src, dest, a, b) {\n var srcFilename = pathToFilename(src);\n var destFilename = pathToFilename(dest);\n var flags;\n var callback;\n if (typeof a === 'function') {\n flags = 0;\n callback = a;\n }\n else {\n flags = a;\n callback = b;\n }\n validateCallback(callback);\n this.wrapAsync(this.copyFileBase, [srcFilename, destFilename, flags], callback);\n };\n Volume.prototype.linkSync = function (existingPath, newPath) {\n var existingPathFilename = pathToFilename(existingPath);\n var newPathFilename = pathToFilename(newPath);\n this.linkBase(existingPathFilename, newPathFilename);\n };\n Volume.prototype.link = function (existingPath, newPath, callback) {\n var existingPathFilename = pathToFilename(existingPath);\n var newPathFilename = pathToFilename(newPath);\n this.wrapAsync(this.linkBase, [existingPathFilename, newPathFilename], callback);\n };\n Volume.prototype.unlinkBase = function (filename) {\n var steps = filenameToSteps(filename);\n var link = this.getLink(steps);\n if (!link)\n throw createError(ENOENT, 'unlink', filename);\n // TODO: Check if it is file, dir, other...\n if (link.length)\n throw Error('Dir not empty...');\n this.deleteLink(link);\n var node = link.getNode();\n node.nlink--;\n // When all hard links to i-node are deleted, remove the i-node, too.\n if (node.nlink <= 0) {\n this.deleteNode(node);\n }\n };\n Volume.prototype.unlinkSync = function (path) {\n var filename = pathToFilename(path);\n this.unlinkBase(filename);\n };\n Volume.prototype.unlink = function (path, callback) {\n var filename = pathToFilename(path);\n this.wrapAsync(this.unlinkBase, [filename], callback);\n };\n Volume.prototype.symlinkBase = function (targetFilename, pathFilename) {\n var pathSteps = filenameToSteps(pathFilename);\n // Check if directory exists, where we about to create a symlink.\n var dirLink = this.getLinkParent(pathSteps);\n if (!dirLink)\n throw createError(ENOENT, 'symlink', targetFilename, pathFilename);\n var name = pathSteps[pathSteps.length - 1];\n // Check if new file already exists.\n if (dirLink.getChild(name))\n throw createError(EEXIST, 'symlink', targetFilename, pathFilename);\n // Create symlink.\n var symlink = dirLink.createChild(name);\n symlink.getNode().makeSymlink(filenameToSteps(targetFilename));\n return symlink;\n };\n // `type` argument works only on Windows.\n Volume.prototype.symlinkSync = function (target, path, type) {\n var targetFilename = pathToFilename(target);\n var pathFilename = pathToFilename(path);\n this.symlinkBase(targetFilename, pathFilename);\n };\n Volume.prototype.symlink = function (target, path, a, b) {\n var callback = validateCallback(typeof a === 'function' ? a : b);\n var targetFilename = pathToFilename(target);\n var pathFilename = pathToFilename(path);\n this.wrapAsync(this.symlinkBase, [targetFilename, pathFilename], callback);\n };\n Volume.prototype.realpathBase = function (filename, encoding) {\n var steps = filenameToSteps(filename);\n var realLink = this.getResolvedLink(steps);\n if (!realLink)\n throw createError(ENOENT, 'realpath', filename);\n return (0, encoding_1.strToEncoding)(realLink.getPath() || '/', encoding);\n };\n Volume.prototype.realpathSync = function (path, options) {\n return this.realpathBase(pathToFilename(path), getRealpathOptions(options).encoding);\n };\n Volume.prototype.realpath = function (path, a, b) {\n var _a = getRealpathOptsAndCb(a, b), opts = _a[0], callback = _a[1];\n var pathFilename = pathToFilename(path);\n this.wrapAsync(this.realpathBase, [pathFilename, opts.encoding], callback);\n };\n Volume.prototype.lstatBase = function (filename, bigint, throwIfNoEntry) {\n if (bigint === void 0) { bigint = false; }\n if (throwIfNoEntry === void 0) { throwIfNoEntry = false; }\n var link = this.getLink(filenameToSteps(filename));\n if (link) {\n return Stats_1.default.build(link.getNode(), bigint);\n }\n else if (!throwIfNoEntry) {\n return undefined;\n }\n else {\n throw createError(ENOENT, 'lstat', filename);\n }\n };\n Volume.prototype.lstatSync = function (path, options) {\n var _a = getStatOptions(options), _b = _a.throwIfNoEntry, throwIfNoEntry = _b === void 0 ? true : _b, _c = _a.bigint, bigint = _c === void 0 ? false : _c;\n return this.lstatBase(pathToFilename(path), bigint, throwIfNoEntry);\n };\n Volume.prototype.lstat = function (path, a, b) {\n var _a = getStatOptsAndCb(a, b), _b = _a[0], _c = _b.throwIfNoEntry, throwIfNoEntry = _c === void 0 ? true : _c, _d = _b.bigint, bigint = _d === void 0 ? false : _d, callback = _a[1];\n this.wrapAsync(this.lstatBase, [pathToFilename(path), bigint, throwIfNoEntry], callback);\n };\n Volume.prototype.statBase = function (filename, bigint, throwIfNoEntry) {\n if (bigint === void 0) { bigint = false; }\n if (throwIfNoEntry === void 0) { throwIfNoEntry = true; }\n var link = this.getResolvedLink(filenameToSteps(filename));\n if (link) {\n return Stats_1.default.build(link.getNode(), bigint);\n }\n else if (!throwIfNoEntry) {\n return undefined;\n }\n else {\n throw createError(ENOENT, 'stat', filename);\n }\n };\n Volume.prototype.statSync = function (path, options) {\n var _a = getStatOptions(options), _b = _a.bigint, bigint = _b === void 0 ? true : _b, _c = _a.throwIfNoEntry, throwIfNoEntry = _c === void 0 ? true : _c;\n return this.statBase(pathToFilename(path), bigint, throwIfNoEntry);\n };\n Volume.prototype.stat = function (path, a, b) {\n var _a = getStatOptsAndCb(a, b), _b = _a[0], _c = _b.bigint, bigint = _c === void 0 ? false : _c, _d = _b.throwIfNoEntry, throwIfNoEntry = _d === void 0 ? true : _d, callback = _a[1];\n this.wrapAsync(this.statBase, [pathToFilename(path), bigint, throwIfNoEntry], callback);\n };\n Volume.prototype.fstatBase = function (fd, bigint) {\n if (bigint === void 0) { bigint = false; }\n var file = this.getFileByFd(fd);\n if (!file)\n throw createError(EBADF, 'fstat');\n return Stats_1.default.build(file.node, bigint);\n };\n Volume.prototype.fstatSync = function (fd, options) {\n return this.fstatBase(fd, getStatOptions(options).bigint);\n };\n Volume.prototype.fstat = function (fd, a, b) {\n var _a = getStatOptsAndCb(a, b), opts = _a[0], callback = _a[1];\n this.wrapAsync(this.fstatBase, [fd, opts.bigint], callback);\n };\n Volume.prototype.renameBase = function (oldPathFilename, newPathFilename) {\n var link = this.getLink(filenameToSteps(oldPathFilename));\n if (!link)\n throw createError(ENOENT, 'rename', oldPathFilename, newPathFilename);\n // TODO: Check if it is directory, if non-empty, we cannot move it, right?\n var newPathSteps = filenameToSteps(newPathFilename);\n // Check directory exists for the new location.\n var newPathDirLink = this.getLinkParent(newPathSteps);\n if (!newPathDirLink)\n throw createError(ENOENT, 'rename', oldPathFilename, newPathFilename);\n // TODO: Also treat cases with directories and symbolic links.\n // TODO: See: http://man7.org/linux/man-pages/man2/rename.2.html\n // Remove hard link from old folder.\n var oldLinkParent = link.parent;\n if (oldLinkParent) {\n oldLinkParent.deleteChild(link);\n }\n // Rename should overwrite the new path, if that exists.\n var name = newPathSteps[newPathSteps.length - 1];\n link.name = name;\n link.steps = __spreadArray(__spreadArray([], newPathDirLink.steps, true), [name], false);\n newPathDirLink.setChild(link.getName(), link);\n };\n Volume.prototype.renameSync = function (oldPath, newPath) {\n var oldPathFilename = pathToFilename(oldPath);\n var newPathFilename = pathToFilename(newPath);\n this.renameBase(oldPathFilename, newPathFilename);\n };\n Volume.prototype.rename = function (oldPath, newPath, callback) {\n var oldPathFilename = pathToFilename(oldPath);\n var newPathFilename = pathToFilename(newPath);\n this.wrapAsync(this.renameBase, [oldPathFilename, newPathFilename], callback);\n };\n Volume.prototype.existsBase = function (filename) {\n return !!this.statBase(filename);\n };\n Volume.prototype.existsSync = function (path) {\n try {\n return this.existsBase(pathToFilename(path));\n }\n catch (err) {\n return false;\n }\n };\n Volume.prototype.exists = function (path, callback) {\n var _this = this;\n var filename = pathToFilename(path);\n if (typeof callback !== 'function')\n throw Error(ERRSTR.CB);\n (0, setImmediate_1.default)(function () {\n try {\n callback(_this.existsBase(filename));\n }\n catch (err) {\n callback(false);\n }\n });\n };\n Volume.prototype.accessBase = function (filename, mode) {\n var link = this.getLinkOrThrow(filename, 'access');\n // TODO: Verify permissions\n };\n Volume.prototype.accessSync = function (path, mode) {\n if (mode === void 0) { mode = F_OK; }\n var filename = pathToFilename(path);\n mode = mode | 0;\n this.accessBase(filename, mode);\n };\n Volume.prototype.access = function (path, a, b) {\n var mode = F_OK;\n var callback;\n if (typeof a !== 'function') {\n mode = a | 0; // cast to number\n callback = validateCallback(b);\n }\n else {\n callback = a;\n }\n var filename = pathToFilename(path);\n this.wrapAsync(this.accessBase, [filename, mode], callback);\n };\n Volume.prototype.appendFileSync = function (id, data, options) {\n if (options === void 0) { options = appendFileDefaults; }\n var opts = getAppendFileOpts(options);\n // force append behavior when using a supplied file descriptor\n if (!opts.flag || isFd(id))\n opts.flag = 'a';\n this.writeFileSync(id, data, opts);\n };\n Volume.prototype.appendFile = function (id, data, a, b) {\n var _a = getAppendFileOptsAndCb(a, b), opts = _a[0], callback = _a[1];\n // force append behavior when using a supplied file descriptor\n if (!opts.flag || isFd(id))\n opts.flag = 'a';\n this.writeFile(id, data, opts, callback);\n };\n Volume.prototype.readdirBase = function (filename, options) {\n var steps = filenameToSteps(filename);\n var link = this.getResolvedLink(steps);\n if (!link)\n throw createError(ENOENT, 'readdir', filename);\n var node = link.getNode();\n if (!node.isDirectory())\n throw createError(ENOTDIR, 'scandir', filename);\n if (options.withFileTypes) {\n var list_1 = [];\n for (var name_2 in link.children) {\n var child = link.getChild(name_2);\n if (!child) {\n continue;\n }\n list_1.push(Dirent_1.default.build(child, options.encoding));\n }\n if (!isWin && options.encoding !== 'buffer')\n list_1.sort(function (a, b) {\n if (a.name < b.name)\n return -1;\n if (a.name > b.name)\n return 1;\n return 0;\n });\n return list_1;\n }\n var list = [];\n for (var name_3 in link.children) {\n list.push((0, encoding_1.strToEncoding)(name_3, options.encoding));\n }\n if (!isWin && options.encoding !== 'buffer')\n list.sort();\n return list;\n };\n Volume.prototype.readdirSync = function (path, options) {\n var opts = getReaddirOptions(options);\n var filename = pathToFilename(path);\n return this.readdirBase(filename, opts);\n };\n Volume.prototype.readdir = function (path, a, b) {\n var _a = getReaddirOptsAndCb(a, b), options = _a[0], callback = _a[1];\n var filename = pathToFilename(path);\n this.wrapAsync(this.readdirBase, [filename, options], callback);\n };\n Volume.prototype.readlinkBase = function (filename, encoding) {\n var link = this.getLinkOrThrow(filename, 'readlink');\n var node = link.getNode();\n if (!node.isSymlink())\n throw createError(EINVAL, 'readlink', filename);\n var str = sep + node.symlink.join(sep);\n return (0, encoding_1.strToEncoding)(str, encoding);\n };\n Volume.prototype.readlinkSync = function (path, options) {\n var opts = getDefaultOpts(options);\n var filename = pathToFilename(path);\n return this.readlinkBase(filename, opts.encoding);\n };\n Volume.prototype.readlink = function (path, a, b) {\n var _a = getDefaultOptsAndCb(a, b), opts = _a[0], callback = _a[1];\n var filename = pathToFilename(path);\n this.wrapAsync(this.readlinkBase, [filename, opts.encoding], callback);\n };\n Volume.prototype.fsyncBase = function (fd) {\n this.getFileByFdOrThrow(fd, 'fsync');\n };\n Volume.prototype.fsyncSync = function (fd) {\n this.fsyncBase(fd);\n };\n Volume.prototype.fsync = function (fd, callback) {\n this.wrapAsync(this.fsyncBase, [fd], callback);\n };\n Volume.prototype.fdatasyncBase = function (fd) {\n this.getFileByFdOrThrow(fd, 'fdatasync');\n };\n Volume.prototype.fdatasyncSync = function (fd) {\n this.fdatasyncBase(fd);\n };\n Volume.prototype.fdatasync = function (fd, callback) {\n this.wrapAsync(this.fdatasyncBase, [fd], callback);\n };\n Volume.prototype.ftruncateBase = function (fd, len) {\n var file = this.getFileByFdOrThrow(fd, 'ftruncate');\n file.truncate(len);\n };\n Volume.prototype.ftruncateSync = function (fd, len) {\n this.ftruncateBase(fd, len);\n };\n Volume.prototype.ftruncate = function (fd, a, b) {\n var len = typeof a === 'number' ? a : 0;\n var callback = validateCallback(typeof a === 'number' ? b : a);\n this.wrapAsync(this.ftruncateBase, [fd, len], callback);\n };\n Volume.prototype.truncateBase = function (path, len) {\n var fd = this.openSync(path, 'r+');\n try {\n this.ftruncateSync(fd, len);\n }\n finally {\n this.closeSync(fd);\n }\n };\n Volume.prototype.truncateSync = function (id, len) {\n if (isFd(id))\n return this.ftruncateSync(id, len);\n this.truncateBase(id, len);\n };\n Volume.prototype.truncate = function (id, a, b) {\n var len = typeof a === 'number' ? a : 0;\n var callback = validateCallback(typeof a === 'number' ? b : a);\n if (isFd(id))\n return this.ftruncate(id, len, callback);\n this.wrapAsync(this.truncateBase, [id, len], callback);\n };\n Volume.prototype.futimesBase = function (fd, atime, mtime) {\n var file = this.getFileByFdOrThrow(fd, 'futimes');\n var node = file.node;\n node.atime = new Date(atime * 1000);\n node.mtime = new Date(mtime * 1000);\n };\n Volume.prototype.futimesSync = function (fd, atime, mtime) {\n this.futimesBase(fd, toUnixTimestamp(atime), toUnixTimestamp(mtime));\n };\n Volume.prototype.futimes = function (fd, atime, mtime, callback) {\n this.wrapAsync(this.futimesBase, [fd, toUnixTimestamp(atime), toUnixTimestamp(mtime)], callback);\n };\n Volume.prototype.utimesBase = function (filename, atime, mtime) {\n var fd = this.openSync(filename, 'r');\n try {\n this.futimesBase(fd, atime, mtime);\n }\n finally {\n this.closeSync(fd);\n }\n };\n Volume.prototype.utimesSync = function (path, atime, mtime) {\n this.utimesBase(pathToFilename(path), toUnixTimestamp(atime), toUnixTimestamp(mtime));\n };\n Volume.prototype.utimes = function (path, atime, mtime, callback) {\n this.wrapAsync(this.utimesBase, [pathToFilename(path), toUnixTimestamp(atime), toUnixTimestamp(mtime)], callback);\n };\n Volume.prototype.mkdirBase = function (filename, modeNum) {\n var steps = filenameToSteps(filename);\n // This will throw if user tries to create root dir `fs.mkdirSync('/')`.\n if (!steps.length) {\n throw createError(EEXIST, 'mkdir', filename);\n }\n var dir = this.getLinkParentAsDirOrThrow(filename, 'mkdir');\n // Check path already exists.\n var name = steps[steps.length - 1];\n if (dir.getChild(name))\n throw createError(EEXIST, 'mkdir', filename);\n dir.createChild(name, this.createNode(true, modeNum));\n };\n /**\n * Creates directory tree recursively.\n * @param filename\n * @param modeNum\n */\n Volume.prototype.mkdirpBase = function (filename, modeNum) {\n var fullPath = resolve(filename);\n var fullPathSansSlash = fullPath.substring(1);\n var steps = !fullPathSansSlash ? [] : fullPathSansSlash.split(sep);\n var link = this.root;\n var created = false;\n for (var i = 0; i < steps.length; i++) {\n var step = steps[i];\n if (!link.getNode().isDirectory())\n throw createError(ENOTDIR, 'mkdir', link.getPath());\n var child = link.getChild(step);\n if (child) {\n if (child.getNode().isDirectory())\n link = child;\n else\n throw createError(ENOTDIR, 'mkdir', child.getPath());\n }\n else {\n link = link.createChild(step, this.createNode(true, modeNum));\n created = true;\n }\n }\n return created ? fullPath : undefined;\n };\n Volume.prototype.mkdirSync = function (path, options) {\n var opts = getMkdirOptions(options);\n var modeNum = modeToNumber(opts.mode, 511);\n var filename = pathToFilename(path);\n if (opts.recursive)\n return this.mkdirpBase(filename, modeNum);\n this.mkdirBase(filename, modeNum);\n };\n Volume.prototype.mkdir = function (path, a, b) {\n var opts = getMkdirOptions(a);\n var callback = validateCallback(typeof a === 'function' ? a : b);\n var modeNum = modeToNumber(opts.mode, 511);\n var filename = pathToFilename(path);\n if (opts.recursive)\n this.wrapAsync(this.mkdirpBase, [filename, modeNum], callback);\n else\n this.wrapAsync(this.mkdirBase, [filename, modeNum], callback);\n };\n // legacy interface\n Volume.prototype.mkdirpSync = function (path, mode) {\n return this.mkdirSync(path, { mode: mode, recursive: true });\n };\n Volume.prototype.mkdirp = function (path, a, b) {\n var mode = typeof a === 'function' ? undefined : a;\n var callback = validateCallback(typeof a === 'function' ? a : b);\n this.mkdir(path, { mode: mode, recursive: true }, callback);\n };\n Volume.prototype.mkdtempBase = function (prefix, encoding, retry) {\n if (retry === void 0) { retry = 5; }\n var filename = prefix + this.genRndStr();\n try {\n this.mkdirBase(filename, 511 /* MODE.DIR */);\n return (0, encoding_1.strToEncoding)(filename, encoding);\n }\n catch (err) {\n if (err.code === EEXIST) {\n if (retry > 1)\n return this.mkdtempBase(prefix, encoding, retry - 1);\n else\n throw Error('Could not create temp dir.');\n }\n else\n throw err;\n }\n };\n Volume.prototype.mkdtempSync = function (prefix, options) {\n var encoding = getDefaultOpts(options).encoding;\n if (!prefix || typeof prefix !== 'string')\n throw new TypeError('filename prefix is required');\n nullCheck(prefix);\n return this.mkdtempBase(prefix, encoding);\n };\n Volume.prototype.mkdtemp = function (prefix, a, b) {\n var _a = getDefaultOptsAndCb(a, b), encoding = _a[0].encoding, callback = _a[1];\n if (!prefix || typeof prefix !== 'string')\n throw new TypeError('filename prefix is required');\n if (!nullCheck(prefix))\n return;\n this.wrapAsync(this.mkdtempBase, [prefix, encoding], callback);\n };\n Volume.prototype.rmdirBase = function (filename, options) {\n var opts = getRmdirOptions(options);\n var link = this.getLinkAsDirOrThrow(filename, 'rmdir');\n // Check directory is empty.\n if (link.length && !opts.recursive)\n throw createError(ENOTEMPTY, 'rmdir', filename);\n this.deleteLink(link);\n };\n Volume.prototype.rmdirSync = function (path, options) {\n this.rmdirBase(pathToFilename(path), options);\n };\n Volume.prototype.rmdir = function (path, a, b) {\n var opts = getRmdirOptions(a);\n var callback = validateCallback(typeof a === 'function' ? a : b);\n this.wrapAsync(this.rmdirBase, [pathToFilename(path), opts], callback);\n };\n Volume.prototype.rmBase = function (filename, options) {\n if (options === void 0) { options = {}; }\n var link = this.getResolvedLink(filename);\n if (!link) {\n // \"stat\" is used to match Node's native error message.\n if (!options.force)\n throw createError(ENOENT, 'stat', filename);\n return;\n }\n if (link.getNode().isDirectory()) {\n if (!options.recursive) {\n throw createError(ERR_FS_EISDIR, 'rm', filename);\n }\n }\n this.deleteLink(link);\n };\n Volume.prototype.rmSync = function (path, options) {\n this.rmBase(pathToFilename(path), options);\n };\n Volume.prototype.rm = function (path, a, b) {\n var _a = getRmOptsAndCb(a, b), opts = _a[0], callback = _a[1];\n this.wrapAsync(this.rmBase, [pathToFilename(path), opts], callback);\n };\n Volume.prototype.fchmodBase = function (fd, modeNum) {\n var file = this.getFileByFdOrThrow(fd, 'fchmod');\n file.chmod(modeNum);\n };\n Volume.prototype.fchmodSync = function (fd, mode) {\n this.fchmodBase(fd, modeToNumber(mode));\n };\n Volume.prototype.fchmod = function (fd, mode, callback) {\n this.wrapAsync(this.fchmodBase, [fd, modeToNumber(mode)], callback);\n };\n Volume.prototype.chmodBase = function (filename, modeNum) {\n var fd = this.openSync(filename, 'r');\n try {\n this.fchmodBase(fd, modeNum);\n }\n finally {\n this.closeSync(fd);\n }\n };\n Volume.prototype.chmodSync = function (path, mode) {\n var modeNum = modeToNumber(mode);\n var filename = pathToFilename(path);\n this.chmodBase(filename, modeNum);\n };\n Volume.prototype.chmod = function (path, mode, callback) {\n var modeNum = modeToNumber(mode);\n var filename = pathToFilename(path);\n this.wrapAsync(this.chmodBase, [filename, modeNum], callback);\n };\n Volume.prototype.lchmodBase = function (filename, modeNum) {\n var fd = this.openBase(filename, O_RDWR, 0, false);\n try {\n this.fchmodBase(fd, modeNum);\n }\n finally {\n this.closeSync(fd);\n }\n };\n Volume.prototype.lchmodSync = function (path, mode) {\n var modeNum = modeToNumber(mode);\n var filename = pathToFilename(path);\n this.lchmodBase(filename, modeNum);\n };\n Volume.prototype.lchmod = function (path, mode, callback) {\n var modeNum = modeToNumber(mode);\n var filename = pathToFilename(path);\n this.wrapAsync(this.lchmodBase, [filename, modeNum], callback);\n };\n Volume.prototype.fchownBase = function (fd, uid, gid) {\n this.getFileByFdOrThrow(fd, 'fchown').chown(uid, gid);\n };\n Volume.prototype.fchownSync = function (fd, uid, gid) {\n validateUid(uid);\n validateGid(gid);\n this.fchownBase(fd, uid, gid);\n };\n Volume.prototype.fchown = function (fd, uid, gid, callback) {\n validateUid(uid);\n validateGid(gid);\n this.wrapAsync(this.fchownBase, [fd, uid, gid], callback);\n };\n Volume.prototype.chownBase = function (filename, uid, gid) {\n var link = this.getResolvedLinkOrThrow(filename, 'chown');\n var node = link.getNode();\n node.chown(uid, gid);\n // if(node.isFile() || node.isSymlink()) {\n //\n // } else if(node.isDirectory()) {\n //\n // } else {\n // TODO: What do we do here?\n // }\n };\n Volume.prototype.chownSync = function (path, uid, gid) {\n validateUid(uid);\n validateGid(gid);\n this.chownBase(pathToFilename(path), uid, gid);\n };\n Volume.prototype.chown = function (path, uid, gid, callback) {\n validateUid(uid);\n validateGid(gid);\n this.wrapAsync(this.chownBase, [pathToFilename(path), uid, gid], callback);\n };\n Volume.prototype.lchownBase = function (filename, uid, gid) {\n this.getLinkOrThrow(filename, 'lchown').getNode().chown(uid, gid);\n };\n Volume.prototype.lchownSync = function (path, uid, gid) {\n validateUid(uid);\n validateGid(gid);\n this.lchownBase(pathToFilename(path), uid, gid);\n };\n Volume.prototype.lchown = function (path, uid, gid, callback) {\n validateUid(uid);\n validateGid(gid);\n this.wrapAsync(this.lchownBase, [pathToFilename(path), uid, gid], callback);\n };\n Volume.prototype.watchFile = function (path, a, b) {\n var filename = pathToFilename(path);\n var options = a;\n var listener = b;\n if (typeof options === 'function') {\n listener = a;\n options = null;\n }\n if (typeof listener !== 'function') {\n throw Error('\"watchFile()\" requires a listener function');\n }\n var interval = 5007;\n var persistent = true;\n if (options && typeof options === 'object') {\n if (typeof options.interval === 'number')\n interval = options.interval;\n if (typeof options.persistent === 'boolean')\n persistent = options.persistent;\n }\n var watcher = this.statWatchers[filename];\n if (!watcher) {\n watcher = new this.StatWatcher();\n watcher.start(filename, persistent, interval);\n this.statWatchers[filename] = watcher;\n }\n watcher.addListener('change', listener);\n return watcher;\n };\n Volume.prototype.unwatchFile = function (path, listener) {\n var filename = pathToFilename(path);\n var watcher = this.statWatchers[filename];\n if (!watcher)\n return;\n if (typeof listener === 'function') {\n watcher.removeListener('change', listener);\n }\n else {\n watcher.removeAllListeners('change');\n }\n if (watcher.listenerCount('change') === 0) {\n watcher.stop();\n delete this.statWatchers[filename];\n }\n };\n Volume.prototype.createReadStream = function (path, options) {\n return new this.ReadStream(path, options);\n };\n Volume.prototype.createWriteStream = function (path, options) {\n return new this.WriteStream(path, options);\n };\n // watch(path: PathLike): FSWatcher;\n // watch(path: PathLike, options?: IWatchOptions | string): FSWatcher;\n Volume.prototype.watch = function (path, options, listener) {\n var filename = pathToFilename(path);\n var givenOptions = options;\n if (typeof options === 'function') {\n listener = options;\n givenOptions = null;\n }\n // tslint:disable-next-line prefer-const\n var _a = getDefaultOpts(givenOptions), persistent = _a.persistent, recursive = _a.recursive, encoding = _a.encoding;\n if (persistent === undefined)\n persistent = true;\n if (recursive === undefined)\n recursive = false;\n var watcher = new this.FSWatcher();\n watcher.start(filename, persistent, recursive, encoding);\n if (listener) {\n watcher.addListener('change', listener);\n }\n return watcher;\n };\n /**\n * Global file descriptor counter. UNIX file descriptors start from 0 and go sequentially\n * up, so here, in order not to conflict with them, we choose some big number and descrease\n * the file descriptor of every new opened file.\n * @type {number}\n * @todo This should not be static, right?\n */\n Volume.fd = 0x7fffffff;\n return Volume;\n}());\nexports.Volume = Volume;\nfunction emitStop(self) {\n self.emit('stop');\n}\nvar StatWatcher = /** @class */ (function (_super) {\n __extends(StatWatcher, _super);\n function StatWatcher(vol) {\n var _this = _super.call(this) || this;\n _this.onInterval = function () {\n try {\n var stats = _this.vol.statSync(_this.filename);\n if (_this.hasChanged(stats)) {\n _this.emit('change', stats, _this.prev);\n _this.prev = stats;\n }\n }\n finally {\n _this.loop();\n }\n };\n _this.vol = vol;\n return _this;\n }\n StatWatcher.prototype.loop = function () {\n this.timeoutRef = this.setTimeout(this.onInterval, this.interval);\n };\n StatWatcher.prototype.hasChanged = function (stats) {\n // if(!this.prev) return false;\n if (stats.mtimeMs > this.prev.mtimeMs)\n return true;\n if (stats.nlink !== this.prev.nlink)\n return true;\n return false;\n };\n StatWatcher.prototype.start = function (path, persistent, interval) {\n if (persistent === void 0) { persistent = true; }\n if (interval === void 0) { interval = 5007; }\n this.filename = pathToFilename(path);\n this.setTimeout = persistent\n ? setTimeout.bind(typeof globalThis !== 'undefined' ? globalThis : global)\n : setTimeoutUnref_1.default;\n this.interval = interval;\n this.prev = this.vol.statSync(this.filename);\n this.loop();\n };\n StatWatcher.prototype.stop = function () {\n clearTimeout(this.timeoutRef);\n process_1.default.nextTick(emitStop, this);\n };\n return StatWatcher;\n}(events_1.EventEmitter));\nexports.StatWatcher = StatWatcher;\nvar pool;\nfunction allocNewPool(poolSize) {\n pool = (0, buffer_1.bufferAllocUnsafe)(poolSize);\n pool.used = 0;\n}\nutil.inherits(FsReadStream, stream_1.Readable);\nexports.ReadStream = FsReadStream;\nfunction FsReadStream(vol, path, options) {\n if (!(this instanceof FsReadStream))\n return new FsReadStream(vol, path, options);\n this._vol = vol;\n // a little bit bigger buffer and water marks by default\n options = Object.assign({}, getOptions(options, {}));\n if (options.highWaterMark === undefined)\n options.highWaterMark = 64 * 1024;\n stream_1.Readable.call(this, options);\n this.path = pathToFilename(path);\n this.fd = options.fd === undefined ? null : options.fd;\n this.flags = options.flags === undefined ? 'r' : options.flags;\n this.mode = options.mode === undefined ? 438 : options.mode;\n this.start = options.start;\n this.end = options.end;\n this.autoClose = options.autoClose === undefined ? true : options.autoClose;\n this.pos = undefined;\n this.bytesRead = 0;\n if (this.start !== undefined) {\n if (typeof this.start !== 'number') {\n throw new TypeError('\"start\" option must be a Number');\n }\n if (this.end === undefined) {\n this.end = Infinity;\n }\n else if (typeof this.end !== 'number') {\n throw new TypeError('\"end\" option must be a Number');\n }\n if (this.start > this.end) {\n throw new Error('\"start\" option must be <= \"end\" option');\n }\n this.pos = this.start;\n }\n if (typeof this.fd !== 'number')\n this.open();\n this.on('end', function () {\n if (this.autoClose) {\n if (this.destroy)\n this.destroy();\n }\n });\n}\nFsReadStream.prototype.open = function () {\n var self = this; // tslint:disable-line no-this-assignment\n this._vol.open(this.path, this.flags, this.mode, function (er, fd) {\n if (er) {\n if (self.autoClose) {\n if (self.destroy)\n self.destroy();\n }\n self.emit('error', er);\n return;\n }\n self.fd = fd;\n self.emit('open', fd);\n // start the flow of data.\n self.read();\n });\n};\nFsReadStream.prototype._read = function (n) {\n if (typeof this.fd !== 'number') {\n return this.once('open', function () {\n this._read(n);\n });\n }\n if (this.destroyed)\n return;\n if (!pool || pool.length - pool.used < kMinPoolSpace) {\n // discard the old pool.\n allocNewPool(this._readableState.highWaterMark);\n }\n // Grab another reference to the pool in the case that while we're\n // in the thread pool another read() finishes up the pool, and\n // allocates a new one.\n var thisPool = pool;\n var toRead = Math.min(pool.length - pool.used, n);\n var start = pool.used;\n if (this.pos !== undefined)\n toRead = Math.min(this.end - this.pos + 1, toRead);\n // already read everything we were supposed to read!\n // treat as EOF.\n if (toRead <= 0)\n return this.push(null);\n // the actual read.\n var self = this; // tslint:disable-line no-this-assignment\n this._vol.read(this.fd, pool, pool.used, toRead, this.pos, onread);\n // move the pool positions, and internal position for reading.\n if (this.pos !== undefined)\n this.pos += toRead;\n pool.used += toRead;\n function onread(er, bytesRead) {\n if (er) {\n if (self.autoClose && self.destroy) {\n self.destroy();\n }\n self.emit('error', er);\n }\n else {\n var b = null;\n if (bytesRead > 0) {\n self.bytesRead += bytesRead;\n b = thisPool.slice(start, start + bytesRead);\n }\n self.push(b);\n }\n }\n};\nFsReadStream.prototype._destroy = function (err, cb) {\n this.close(function (err2) {\n cb(err || err2);\n });\n};\nFsReadStream.prototype.close = function (cb) {\n var _this = this;\n var _a;\n if (cb)\n this.once('close', cb);\n if (this.closed || typeof this.fd !== 'number') {\n if (typeof this.fd !== 'number') {\n this.once('open', closeOnOpen);\n return;\n }\n return process_1.default.nextTick(function () { return _this.emit('close'); });\n }\n // Since Node 18, there is only a getter for '.closed'.\n // The first branch mimics other setters from Readable.\n // See https://github.com/nodejs/node/blob/v18.0.0/lib/internal/streams/readable.js#L1243\n if (typeof ((_a = this._readableState) === null || _a === void 0 ? void 0 : _a.closed) === 'boolean') {\n this._readableState.closed = true;\n }\n else {\n this.closed = true;\n }\n this._vol.close(this.fd, function (er) {\n if (er)\n _this.emit('error', er);\n else\n _this.emit('close');\n });\n this.fd = null;\n};\n// needed because as it will be called with arguments\n// that does not match this.close() signature\nfunction closeOnOpen(fd) {\n this.close();\n}\nutil.inherits(FsWriteStream, stream_1.Writable);\nexports.WriteStream = FsWriteStream;\nfunction FsWriteStream(vol, path, options) {\n if (!(this instanceof FsWriteStream))\n return new FsWriteStream(vol, path, options);\n this._vol = vol;\n options = Object.assign({}, getOptions(options, {}));\n stream_1.Writable.call(this, options);\n this.path = pathToFilename(path);\n this.fd = options.fd === undefined ? null : options.fd;\n this.flags = options.flags === undefined ? 'w' : options.flags;\n this.mode = options.mode === undefined ? 438 : options.mode;\n this.start = options.start;\n this.autoClose = options.autoClose === undefined ? true : !!options.autoClose;\n this.pos = undefined;\n this.bytesWritten = 0;\n if (this.start !== undefined) {\n if (typeof this.start !== 'number') {\n throw new TypeError('\"start\" option must be a Number');\n }\n if (this.start < 0) {\n throw new Error('\"start\" must be >= zero');\n }\n this.pos = this.start;\n }\n if (options.encoding)\n this.setDefaultEncoding(options.encoding);\n if (typeof this.fd !== 'number')\n this.open();\n // dispose on finish.\n this.once('finish', function () {\n if (this.autoClose) {\n this.close();\n }\n });\n}\nFsWriteStream.prototype.open = function () {\n this._vol.open(this.path, this.flags, this.mode, function (er, fd) {\n if (er) {\n if (this.autoClose && this.destroy) {\n this.destroy();\n }\n this.emit('error', er);\n return;\n }\n this.fd = fd;\n this.emit('open', fd);\n }.bind(this));\n};\nFsWriteStream.prototype._write = function (data, encoding, cb) {\n if (!(data instanceof buffer_1.Buffer || data instanceof Uint8Array))\n return this.emit('error', new Error('Invalid data'));\n if (typeof this.fd !== 'number') {\n return this.once('open', function () {\n this._write(data, encoding, cb);\n });\n }\n var self = this; // tslint:disable-line no-this-assignment\n this._vol.write(this.fd, data, 0, data.length, this.pos, function (er, bytes) {\n if (er) {\n if (self.autoClose && self.destroy) {\n self.destroy();\n }\n return cb(er);\n }\n self.bytesWritten += bytes;\n cb();\n });\n if (this.pos !== undefined)\n this.pos += data.length;\n};\nFsWriteStream.prototype._writev = function (data, cb) {\n if (typeof this.fd !== 'number') {\n return this.once('open', function () {\n this._writev(data, cb);\n });\n }\n var self = this; // tslint:disable-line no-this-assignment\n var len = data.length;\n var chunks = new Array(len);\n var size = 0;\n for (var i = 0; i < len; i++) {\n var chunk = data[i].chunk;\n chunks[i] = chunk;\n size += chunk.length;\n }\n var buf = buffer_1.Buffer.concat(chunks);\n this._vol.write(this.fd, buf, 0, buf.length, this.pos, function (er, bytes) {\n if (er) {\n if (self.destroy)\n self.destroy();\n return cb(er);\n }\n self.bytesWritten += bytes;\n cb();\n });\n if (this.pos !== undefined)\n this.pos += size;\n};\nFsWriteStream.prototype.close = function (cb) {\n var _this = this;\n var _a;\n if (cb)\n this.once('close', cb);\n if (this.closed || typeof this.fd !== 'number') {\n if (typeof this.fd !== 'number') {\n this.once('open', closeOnOpen);\n return;\n }\n return process_1.default.nextTick(function () { return _this.emit('close'); });\n }\n // Since Node 18, there is only a getter for '.closed'.\n // The first branch mimics other setters from Writable.\n // See https://github.com/nodejs/node/blob/v18.0.0/lib/internal/streams/writable.js#L766\n if (typeof ((_a = this._writableState) === null || _a === void 0 ? void 0 : _a.closed) === 'boolean') {\n this._writableState.closed = true;\n }\n else {\n this.closed = true;\n }\n this._vol.close(this.fd, function (er) {\n if (er)\n _this.emit('error', er);\n else\n _this.emit('close');\n });\n this.fd = null;\n};\nFsWriteStream.prototype._destroy = FsReadStream.prototype._destroy;\n// There is no shutdown() for files.\nFsWriteStream.prototype.destroySoon = FsWriteStream.prototype.end;\n// ---------------------------------------- FSWatcher\nvar FSWatcher = /** @class */ (function (_super) {\n __extends(FSWatcher, _super);\n function FSWatcher(vol) {\n var _this = _super.call(this) || this;\n _this._filename = '';\n _this._filenameEncoded = '';\n // _persistent: boolean = true;\n _this._recursive = false;\n _this._encoding = encoding_1.ENCODING_UTF8;\n _this._onNodeChange = function () {\n _this._emit('change');\n };\n _this._onParentChild = function (link) {\n if (link.getName() === _this._getName()) {\n _this._emit('rename');\n }\n };\n _this._emit = function (type) {\n _this.emit('change', type, _this._filenameEncoded);\n };\n _this._persist = function () {\n _this._timer = setTimeout(_this._persist, 1e6);\n };\n _this._vol = vol;\n return _this;\n // TODO: Emit \"error\" messages when watching.\n // this._handle.onchange = function(status, eventType, filename) {\n // if (status < 0) {\n // self._handle.close();\n // const error = !filename ?\n // errnoException(status, 'Error watching file for changes:') :\n // errnoException(status, `Error watching file ${filename} for changes:`);\n // error.filename = filename;\n // self.emit('error', error);\n // } else {\n // self.emit('change', eventType, filename);\n // }\n // };\n }\n FSWatcher.prototype._getName = function () {\n return this._steps[this._steps.length - 1];\n };\n FSWatcher.prototype.start = function (path, persistent, recursive, encoding) {\n if (persistent === void 0) { persistent = true; }\n if (recursive === void 0) { recursive = false; }\n if (encoding === void 0) { encoding = encoding_1.ENCODING_UTF8; }\n this._filename = pathToFilename(path);\n this._steps = filenameToSteps(this._filename);\n this._filenameEncoded = (0, encoding_1.strToEncoding)(this._filename);\n // this._persistent = persistent;\n this._recursive = recursive;\n this._encoding = encoding;\n try {\n this._link = this._vol.getLinkOrThrow(this._filename, 'FSWatcher');\n }\n catch (err) {\n var error = new Error(\"watch \".concat(this._filename, \" \").concat(err.code));\n error.code = err.code;\n error.errno = err.code;\n throw error;\n }\n this._link.getNode().on('change', this._onNodeChange);\n this._link.on('child:add', this._onNodeChange);\n this._link.on('child:delete', this._onNodeChange);\n var parent = this._link.parent;\n if (parent) {\n // parent.on('child:add', this._onParentChild);\n parent.setMaxListeners(parent.getMaxListeners() + 1);\n parent.on('child:delete', this._onParentChild);\n }\n if (persistent)\n this._persist();\n };\n FSWatcher.prototype.close = function () {\n clearTimeout(this._timer);\n this._link.getNode().removeListener('change', this._onNodeChange);\n var parent = this._link.parent;\n if (parent) {\n // parent.removeListener('child:add', this._onParentChild);\n parent.removeListener('child:delete', this._onParentChild);\n }\n };\n return FSWatcher;\n}(events_1.EventEmitter));\nexports.FSWatcher = FSWatcher;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.fsAsyncMethods = exports.fsSyncMethods = exports.fsProps = void 0;\nvar fsProps = ['constants', 'F_OK', 'R_OK', 'W_OK', 'X_OK', 'Stats'];\nexports.fsProps = fsProps;\nvar fsSyncMethods = ['renameSync', 'ftruncateSync', 'truncateSync', 'chownSync', 'fchownSync', 'lchownSync', 'chmodSync', 'fchmodSync', 'lchmodSync', 'statSync', 'lstatSync', 'fstatSync', 'linkSync', 'symlinkSync', 'readlinkSync', 'realpathSync', 'unlinkSync', 'rmdirSync', 'mkdirSync', 'mkdirpSync', 'readdirSync', 'closeSync', 'openSync', 'utimesSync', 'futimesSync', 'fsyncSync', 'writeSync', 'readSync', 'readFileSync', 'writeFileSync', 'appendFileSync', 'existsSync', 'accessSync', 'fdatasyncSync', 'mkdtempSync', 'copyFileSync', 'createReadStream', 'createWriteStream'];\nexports.fsSyncMethods = fsSyncMethods;\nvar fsAsyncMethods = ['rename', 'ftruncate', 'truncate', 'chown', 'fchown', 'lchown', 'chmod', 'fchmod', 'lchmod', 'stat', 'lstat', 'fstat', 'link', 'symlink', 'readlink', 'realpath', 'unlink', 'rmdir', 'mkdir', 'mkdirp', 'readdir', 'close', 'open', 'utimes', 'futimes', 'fsync', 'write', 'read', 'readFile', 'writeFile', 'appendFile', 'exists', 'access', 'fdatasync', 'mkdtemp', 'copyFile', 'watchFile', 'unwatchFile', 'watch'];\nexports.fsAsyncMethods = fsAsyncMethods;","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fs = exports.createFsFromVolume = exports.vol = exports.Volume = void 0;\nvar Stats_1 = require(\"./Stats\");\nvar Dirent_1 = require(\"./Dirent\");\nvar volume_1 = require(\"./volume\");\nvar _a = require('fs-monkey/lib/util/lists'), fsSyncMethods = _a.fsSyncMethods, fsAsyncMethods = _a.fsAsyncMethods;\nvar constants_1 = require(\"./constants\");\nvar F_OK = constants_1.constants.F_OK, R_OK = constants_1.constants.R_OK, W_OK = constants_1.constants.W_OK, X_OK = constants_1.constants.X_OK;\nexports.Volume = volume_1.Volume;\n// Default volume.\nexports.vol = new volume_1.Volume();\nfunction createFsFromVolume(vol) {\n var fs = { F_OK: F_OK, R_OK: R_OK, W_OK: W_OK, X_OK: X_OK, constants: constants_1.constants, Stats: Stats_1.default, Dirent: Dirent_1.default };\n // Bind FS methods.\n for (var _i = 0, fsSyncMethods_1 = fsSyncMethods; _i < fsSyncMethods_1.length; _i++) {\n var method = fsSyncMethods_1[_i];\n if (typeof vol[method] === 'function')\n fs[method] = vol[method].bind(vol);\n }\n for (var _a = 0, fsAsyncMethods_1 = fsAsyncMethods; _a < fsAsyncMethods_1.length; _a++) {\n var method = fsAsyncMethods_1[_a];\n if (typeof vol[method] === 'function')\n fs[method] = vol[method].bind(vol);\n }\n fs.StatWatcher = vol.StatWatcher;\n fs.FSWatcher = vol.FSWatcher;\n fs.WriteStream = vol.WriteStream;\n fs.ReadStream = vol.ReadStream;\n fs.promises = vol.promises;\n fs._toUnixTimestamp = volume_1.toUnixTimestamp;\n return fs;\n}\nexports.createFsFromVolume = createFsFromVolume;\nexports.fs = createFsFromVolume(exports.vol);\nmodule.exports = __assign(__assign({}, module.exports), exports.fs);\nmodule.exports.semantic = true;\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\nvar pathModule = require('path');\nvar isWindows = process.platform === 'win32';\nvar fs = require('fs');\n\n// JavaScript implementation of realpath, ported from node pre-v6\n\nvar DEBUG = process.env.NODE_DEBUG && /fs/.test(process.env.NODE_DEBUG);\n\nfunction rethrow() {\n // Only enable in debug mode. A backtrace uses ~1000 bytes of heap space and\n // is fairly slow to generate.\n var callback;\n if (DEBUG) {\n var backtrace = new Error;\n callback = debugCallback;\n } else\n callback = missingCallback;\n\n return callback;\n\n function debugCallback(err) {\n if (err) {\n backtrace.message = err.message;\n err = backtrace;\n missingCallback(err);\n }\n }\n\n function missingCallback(err) {\n if (err) {\n if (process.throwDeprecation)\n throw err; // Forgot a callback but don't know where? Use NODE_DEBUG=fs\n else if (!process.noDeprecation) {\n var msg = 'fs: missing callback ' + (err.stack || err.message);\n if (process.traceDeprecation)\n console.trace(msg);\n else\n console.error(msg);\n }\n }\n }\n}\n\nfunction maybeCallback(cb) {\n return typeof cb === 'function' ? cb : rethrow();\n}\n\nvar normalize = pathModule.normalize;\n\n// Regexp that finds the next partion of a (partial) path\n// result is [base_with_slash, base], e.g. ['somedir/', 'somedir']\nif (isWindows) {\n var nextPartRe = /(.*?)(?:[\\/\\\\]+|$)/g;\n} else {\n var nextPartRe = /(.*?)(?:[\\/]+|$)/g;\n}\n\n// Regex to find the device root, including trailing slash. E.g. 'c:\\\\'.\nif (isWindows) {\n var splitRootRe = /^(?:[a-zA-Z]:|[\\\\\\/]{2}[^\\\\\\/]+[\\\\\\/][^\\\\\\/]+)?[\\\\\\/]*/;\n} else {\n var splitRootRe = /^[\\/]*/;\n}\n\nexports.realpathSync = function realpathSync(p, cache) {\n // make p is absolute\n p = pathModule.resolve(p);\n\n if (cache && Object.prototype.hasOwnProperty.call(cache, p)) {\n return cache[p];\n }\n\n var original = p,\n seenLinks = {},\n knownHard = {};\n\n // current character position in p\n var pos;\n // the partial path so far, including a trailing slash if any\n var current;\n // the partial path without a trailing slash (except when pointing at a root)\n var base;\n // the partial path scanned in the previous round, with slash\n var previous;\n\n start();\n\n function start() {\n // Skip over roots\n var m = splitRootRe.exec(p);\n pos = m[0].length;\n current = m[0];\n base = m[0];\n previous = '';\n\n // On windows, check that the root exists. On unix there is no need.\n if (isWindows && !knownHard[base]) {\n fs.lstatSync(base);\n knownHard[base] = true;\n }\n }\n\n // walk down the path, swapping out linked pathparts for their real\n // values\n // NB: p.length changes.\n while (pos < p.length) {\n // find the next part\n nextPartRe.lastIndex = pos;\n var result = nextPartRe.exec(p);\n previous = current;\n current += result[0];\n base = previous + result[1];\n pos = nextPartRe.lastIndex;\n\n // continue if not a symlink\n if (knownHard[base] || (cache && cache[base] === base)) {\n continue;\n }\n\n var resolvedLink;\n if (cache && Object.prototype.hasOwnProperty.call(cache, base)) {\n // some known symbolic link. no need to stat again.\n resolvedLink = cache[base];\n } else {\n var stat = fs.lstatSync(base);\n if (!stat.isSymbolicLink()) {\n knownHard[base] = true;\n if (cache) cache[base] = base;\n continue;\n }\n\n // read the link if it wasn't read before\n // dev/ino always return 0 on windows, so skip the check.\n var linkTarget = null;\n if (!isWindows) {\n var id = stat.dev.toString(32) + ':' + stat.ino.toString(32);\n if (seenLinks.hasOwnProperty(id)) {\n linkTarget = seenLinks[id];\n }\n }\n if (linkTarget === null) {\n fs.statSync(base);\n linkTarget = fs.readlinkSync(base);\n }\n resolvedLink = pathModule.resolve(previous, linkTarget);\n // track this, if given a cache.\n if (cache) cache[base] = resolvedLink;\n if (!isWindows) seenLinks[id] = linkTarget;\n }\n\n // resolve the link, then start over\n p = pathModule.resolve(resolvedLink, p.slice(pos));\n start();\n }\n\n if (cache) cache[original] = p;\n\n return p;\n};\n\n\nexports.realpath = function realpath(p, cache, cb) {\n if (typeof cb !== 'function') {\n cb = maybeCallback(cache);\n cache = null;\n }\n\n // make p is absolute\n p = pathModule.resolve(p);\n\n if (cache && Object.prototype.hasOwnProperty.call(cache, p)) {\n return process.nextTick(cb.bind(null, null, cache[p]));\n }\n\n var original = p,\n seenLinks = {},\n knownHard = {};\n\n // current character position in p\n var pos;\n // the partial path so far, including a trailing slash if any\n var current;\n // the partial path without a trailing slash (except when pointing at a root)\n var base;\n // the partial path scanned in the previous round, with slash\n var previous;\n\n start();\n\n function start() {\n // Skip over roots\n var m = splitRootRe.exec(p);\n pos = m[0].length;\n current = m[0];\n base = m[0];\n previous = '';\n\n // On windows, check that the root exists. On unix there is no need.\n if (isWindows && !knownHard[base]) {\n fs.lstat(base, function(err) {\n if (err) return cb(err);\n knownHard[base] = true;\n LOOP();\n });\n } else {\n process.nextTick(LOOP);\n }\n }\n\n // walk down the path, swapping out linked pathparts for their real\n // values\n function LOOP() {\n // stop if scanned past end of path\n if (pos >= p.length) {\n if (cache) cache[original] = p;\n return cb(null, p);\n }\n\n // find the next part\n nextPartRe.lastIndex = pos;\n var result = nextPartRe.exec(p);\n previous = current;\n current += result[0];\n base = previous + result[1];\n pos = nextPartRe.lastIndex;\n\n // continue if not a symlink\n if (knownHard[base] || (cache && cache[base] === base)) {\n return process.nextTick(LOOP);\n }\n\n if (cache && Object.prototype.hasOwnProperty.call(cache, base)) {\n // known symbolic link. no need to stat again.\n return gotResolvedLink(cache[base]);\n }\n\n return fs.lstat(base, gotStat);\n }\n\n function gotStat(err, stat) {\n if (err) return cb(err);\n\n // if not a symlink, skip to the next path part\n if (!stat.isSymbolicLink()) {\n knownHard[base] = true;\n if (cache) cache[base] = base;\n return process.nextTick(LOOP);\n }\n\n // stat & read the link if not read before\n // call gotTarget as soon as the link target is known\n // dev/ino always return 0 on windows, so skip the check.\n if (!isWindows) {\n var id = stat.dev.toString(32) + ':' + stat.ino.toString(32);\n if (seenLinks.hasOwnProperty(id)) {\n return gotTarget(null, seenLinks[id], base);\n }\n }\n fs.stat(base, function(err) {\n if (err) return cb(err);\n\n fs.readlink(base, function(err, target) {\n if (!isWindows) seenLinks[id] = target;\n gotTarget(err, target);\n });\n });\n }\n\n function gotTarget(err, target, base) {\n if (err) return cb(err);\n\n var resolvedLink = pathModule.resolve(previous, target);\n if (cache) cache[base] = resolvedLink;\n gotResolvedLink(resolvedLink);\n }\n\n function gotResolvedLink(resolvedLink) {\n // resolve the link, then start over\n p = pathModule.resolve(resolvedLink, p.slice(pos));\n start();\n }\n};\n","module.exports = realpath\nrealpath.realpath = realpath\nrealpath.sync = realpathSync\nrealpath.realpathSync = realpathSync\nrealpath.monkeypatch = monkeypatch\nrealpath.unmonkeypatch = unmonkeypatch\n\nvar fs = require('fs')\nvar origRealpath = fs.realpath\nvar origRealpathSync = fs.realpathSync\n\nvar version = process.version\nvar ok = /^v[0-5]\\./.test(version)\nvar old = require('./old.js')\n\nfunction newError (er) {\n return er && er.syscall === 'realpath' && (\n er.code === 'ELOOP' ||\n er.code === 'ENOMEM' ||\n er.code === 'ENAMETOOLONG'\n )\n}\n\nfunction realpath (p, cache, cb) {\n if (ok) {\n return origRealpath(p, cache, cb)\n }\n\n if (typeof cache === 'function') {\n cb = cache\n cache = null\n }\n origRealpath(p, cache, function (er, result) {\n if (newError(er)) {\n old.realpath(p, cache, cb)\n } else {\n cb(er, result)\n }\n })\n}\n\nfunction realpathSync (p, cache) {\n if (ok) {\n return origRealpathSync(p, cache)\n }\n\n try {\n return origRealpathSync(p, cache)\n } catch (er) {\n if (newError(er)) {\n return old.realpathSync(p, cache)\n } else {\n throw er\n }\n }\n}\n\nfunction monkeypatch () {\n fs.realpath = realpath\n fs.realpathSync = realpathSync\n}\n\nfunction unmonkeypatch () {\n fs.realpath = origRealpath\n fs.realpathSync = origRealpathSync\n}\n","module.exports = function (xs, fn) {\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n var x = fn(xs[i], i);\n if (isArray(x)) res.push.apply(res, x);\n else res.push(x);\n }\n return res;\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\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 concatMap = require('concat-map');\nvar 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) {\n if (!str)\n return [];\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), true).map(unescapeBraces);\n}\n\nfunction identity(e) {\n return e;\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, isTop) {\n var expansions = [];\n\n var m = balanced('{', '}', str);\n if (!m || /\\$$/.test(m.pre)) return [str];\n\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);\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], false).map(embrace);\n if (n.length === 1) {\n var post = m.post.length\n ? expand(m.post, false)\n : [''];\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\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, false)\n : [''];\n\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.abs(numeric(n[2]))\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 = concatMap(n, function(el) { return expand(el, false) });\n }\n\n for (var j = 0; j < N.length; j++) {\n for (var k = 0; k < post.length; k++) {\n var expansion = pre + N[j] + post[k];\n if (!isTop || isSequence || expansion)\n expansions.push(expansion);\n }\n }\n\n return expansions;\n}\n\n","module.exports = minimatch\nminimatch.Minimatch = Minimatch\n\nvar path = (function () { try { return require('path') } catch (e) {}}()) || {\n sep: '/'\n}\nminimatch.sep = path.sep\n\nvar GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {}\nvar expand = require('brace-expansion')\n\nvar 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()\nvar qmark = '[^/]'\n\n// * => any number of characters\nvar 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.\nvar twoStarDot = '(?:(?!(?:\\\\\\/|^)(?:\\\\.{1,2})($|\\\\\\/)).)*?'\n\n// not a ^ or / followed by a dot,\n// followed by anything, any number of times.\nvar twoStarNoDot = '(?:(?!(?:\\\\\\/|^)\\\\.).)*?'\n\n// characters that need to be escaped in RegExp.\nvar reSpecials = charSet('().*{}+?[]^$\\\\!')\n\n// \"abc\" -> { a:true, b:true, c:true }\nfunction charSet (s) {\n return s.split('').reduce(function (set, c) {\n set[c] = true\n return set\n }, {})\n}\n\n// normalizes slashes.\nvar slashSplit = /\\/+/\n\nminimatch.filter = filter\nfunction filter (pattern, options) {\n options = options || {}\n return function (p, i, list) {\n return minimatch(p, pattern, options)\n }\n}\n\nfunction ext (a, b) {\n b = b || {}\n var t = {}\n Object.keys(a).forEach(function (k) {\n t[k] = a[k]\n })\n Object.keys(b).forEach(function (k) {\n t[k] = b[k]\n })\n return t\n}\n\nminimatch.defaults = function (def) {\n if (!def || typeof def !== 'object' || !Object.keys(def).length) {\n return minimatch\n }\n\n var orig = minimatch\n\n var m = function minimatch (p, pattern, options) {\n return orig(p, pattern, ext(def, options))\n }\n\n m.Minimatch = function Minimatch (pattern, options) {\n return new orig.Minimatch(pattern, ext(def, options))\n }\n m.Minimatch.defaults = function defaults (options) {\n return orig.defaults(ext(def, options)).Minimatch\n }\n\n m.filter = function filter (pattern, options) {\n return orig.filter(pattern, ext(def, options))\n }\n\n m.defaults = function defaults (options) {\n return orig.defaults(ext(def, options))\n }\n\n m.makeRe = function makeRe (pattern, options) {\n return orig.makeRe(pattern, ext(def, options))\n }\n\n m.braceExpand = function braceExpand (pattern, options) {\n return orig.braceExpand(pattern, ext(def, options))\n }\n\n m.match = function (list, pattern, options) {\n return orig.match(list, pattern, ext(def, options))\n }\n\n return m\n}\n\nMinimatch.defaults = function (def) {\n return minimatch.defaults(def).Minimatch\n}\n\nfunction minimatch (p, pattern, options) {\n assertValidPattern(pattern)\n\n if (!options) options = {}\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\nfunction Minimatch (pattern, options) {\n if (!(this instanceof Minimatch)) {\n return new Minimatch(pattern, options)\n }\n\n assertValidPattern(pattern)\n\n if (!options) options = {}\n\n pattern = pattern.trim()\n\n // windows support: need to use /, not \\\n if (!options.allowWindowsEscape && path.sep !== '/') {\n pattern = pattern.split(path.sep).join('/')\n }\n\n this.options = options\n this.set = []\n this.pattern = pattern\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\nMinimatch.prototype.debug = function () {}\n\nMinimatch.prototype.make = make\nfunction make () {\n var pattern = this.pattern\n var 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 var set = this.globSet = this.braceExpand()\n\n if (options.debug) this.debug = function debug() { console.error.apply(console, arguments) }\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(function (s) {\n return s.split(slashSplit)\n })\n\n this.debug(this.pattern, set)\n\n // glob --> regexps\n set = set.map(function (s, si, set) {\n return s.map(this.parse, this)\n }, this)\n\n this.debug(this.pattern, set)\n\n // filter out everything that didn't compile properly.\n set = set.filter(function (s) {\n return s.indexOf(false) === -1\n })\n\n this.debug(this.pattern, set)\n\n this.set = set\n}\n\nMinimatch.prototype.parseNegate = parseNegate\nfunction parseNegate () {\n var pattern = this.pattern\n var negate = false\n var options = this.options\n var negateOffset = 0\n\n if (options.nonegate) return\n\n for (var i = 0, l = pattern.length\n ; i < l && pattern.charAt(i) === '!'\n ; i++) {\n negate = !negate\n negateOffset++\n }\n\n if (negateOffset) this.pattern = pattern.substr(negateOffset)\n this.negate = negate\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 = function (pattern, options) {\n return braceExpand(pattern, options)\n}\n\nMinimatch.prototype.braceExpand = braceExpand\n\nfunction braceExpand (pattern, options) {\n if (!options) {\n if (this instanceof Minimatch) {\n options = this.options\n } else {\n options = {}\n }\n }\n\n pattern = typeof pattern === 'undefined'\n ? this.pattern : pattern\n\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\nvar MAX_PATTERN_LENGTH = 1024 * 64\nvar assertValidPattern = function (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.\nMinimatch.prototype.parse = parse\nvar SUBPARSE = {}\nfunction parse (pattern, isSub) {\n assertValidPattern(pattern)\n\n var 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 var re = ''\n var hasMagic = !!options.nocase\n var escaping = false\n // ? => one single character\n var patternListStack = []\n var negativeLists = []\n var stateChar\n var inClass = false\n var reClassStart = -1\n var classStart = -1\n // . and .. never match anything that doesn't start with .,\n // even when options.dot is set.\n var patternStart = pattern.charAt(0) === '.' ? '' // anything\n // not (start or / followed by . or .. followed by / or end)\n : options.dot ? '(?!(?:^|\\\\\\/)\\\\.{1,2}(?:$|\\\\\\/))'\n : '(?!\\\\.)'\n var self = this\n\n function 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 self.debug('clearStateChar %j %j', stateChar, re)\n stateChar = false\n }\n }\n\n for (var i = 0, len = pattern.length, c\n ; (i < len) && (c = pattern.charAt(i))\n ; i++) {\n this.debug('%s\\t%s %s %j', pattern, i, re, c)\n\n // skip over any that are escaped.\n if (escaping && reSpecials[c]) {\n re += '\\\\' + c\n escaping = false\n continue\n }\n\n switch (c) {\n /* istanbul ignore next */\n case '/': {\n // completely not allowed, even escaped.\n // Should already be path-split by now.\n return false\n }\n\n case '\\\\':\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 // 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 self.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 patternListStack.push({\n type: stateChar,\n start: i - 1,\n reStart: re.length,\n open: plTypes[stateChar].open,\n close: plTypes[stateChar].close\n })\n // negation is (?:(?!js)[^/]*)\n re += stateChar === '!' ? '(?:(?!(?:' : '(?:'\n this.debug('plType %j %j', stateChar, re)\n stateChar = false\n continue\n\n case ')':\n if (inClass || !patternListStack.length) {\n re += '\\\\)'\n continue\n }\n\n clearStateChar()\n hasMagic = true\n var pl = patternListStack.pop()\n // negation is (?:(?!js)[^/]*)\n // The others are (?:<pattern>)<type>\n re += pl.close\n if (pl.type === '!') {\n negativeLists.push(pl)\n }\n pl.reEnd = re.length\n continue\n\n case '|':\n if (inClass || !patternListStack.length || escaping) {\n re += '\\\\|'\n escaping = false\n continue\n }\n\n clearStateChar()\n re += '|'\n continue\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 escaping = false\n continue\n }\n\n // handle the case where we left a class open.\n // \"[z-a]\" is valid, equivalent to \"\\[z-a\\]\"\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 var cs = pattern.substring(classStart + 1, i)\n try {\n RegExp('[' + cs + ']')\n } catch (er) {\n // not a valid class!\n var sp = this.parse(cs, SUBPARSE)\n re = re.substr(0, reClassStart) + '\\\\[' + sp[0] + '\\\\]'\n hasMagic = hasMagic || sp[1]\n inClass = false\n continue\n }\n\n // finish up the class.\n hasMagic = true\n inClass = false\n re += c\n continue\n\n default:\n // swallow any state char that wasn't consumed\n clearStateChar()\n\n if (escaping) {\n // no need\n escaping = false\n } else if (reSpecials[c]\n && !(c === '^' && inClass)) {\n re += '\\\\'\n }\n\n re += c\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.substr(classStart + 1)\n sp = this.parse(cs, SUBPARSE)\n re = re.substr(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 var 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, function (_, $1, $2) {\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 var 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 var addPatternStart = false\n switch (re.charAt(0)) {\n case '[': case '.': case '(': addPatternStart = true\n }\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 (var n = negativeLists.length - 1; n > -1; n--) {\n var nl = negativeLists[n]\n\n var nlBefore = re.slice(0, nl.reStart)\n var nlFirst = re.slice(nl.reStart, nl.reEnd - 8)\n var nlLast = re.slice(nl.reEnd - 8, nl.reEnd)\n var nlAfter = re.slice(nl.reEnd)\n\n nlLast += 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 var openParensBefore = nlBefore.split('(').length - 1\n var cleanAfter = nlAfter\n for (i = 0; i < openParensBefore; i++) {\n cleanAfter = cleanAfter.replace(/\\)[+*?]?/, '')\n }\n nlAfter = cleanAfter\n\n var dollar = ''\n if (nlAfter === '' && isSub !== SUBPARSE) {\n dollar = '$'\n }\n var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast\n re = newRe\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 // 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 var flags = options.nocase ? 'i' : ''\n try {\n var regExp = new RegExp('^' + re + '$', flags)\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 regExp._glob = pattern\n regExp._src = re\n\n return regExp\n}\n\nminimatch.makeRe = function (pattern, options) {\n return new Minimatch(pattern, options || {}).makeRe()\n}\n\nMinimatch.prototype.makeRe = makeRe\nfunction 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 var set = this.set\n\n if (!set.length) {\n this.regexp = false\n return this.regexp\n }\n var options = this.options\n\n var twoStar = options.noglobstar ? star\n : options.dot ? twoStarDot\n : twoStarNoDot\n var flags = options.nocase ? 'i' : ''\n\n var re = set.map(function (pattern) {\n return pattern.map(function (p) {\n return (p === GLOBSTAR) ? twoStar\n : (typeof p === 'string') ? regExpEscape(p)\n : p._src\n }).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\nminimatch.match = function (list, pattern, options) {\n options = options || {}\n var mm = new Minimatch(pattern, options)\n list = list.filter(function (f) {\n return mm.match(f)\n })\n if (mm.options.nonull && !list.length) {\n list.push(pattern)\n }\n return list\n}\n\nMinimatch.prototype.match = function match (f, partial) {\n if (typeof partial === 'undefined') 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 var 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 var 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 var filename\n var i\n for (i = f.length - 1; i >= 0; i--) {\n filename = f[i]\n if (filename) break\n }\n\n for (i = 0; i < set.length; i++) {\n var pattern = set[i]\n var file = f\n if (options.matchBase && pattern.length === 1) {\n file = [filename]\n }\n var 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// 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.\nMinimatch.prototype.matchOne = function (file, pattern, partial) {\n var options = this.options\n\n this.debug('matchOne',\n { 'this': this, file: file, pattern: pattern })\n\n this.debug('matchOne', file.length, pattern.length)\n\n for (var fi = 0,\n pi = 0,\n fl = file.length,\n pl = pattern.length\n ; (fi < fl) && (pi < pl)\n ; fi++, pi++) {\n this.debug('matchOne loop')\n var p = pattern[pi]\n var 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) return false\n\n if (p === GLOBSTAR) {\n this.debug('GLOBSTAR', [pattern, p, f])\n\n // \"**\"\n // a/**/b/**/c would match the following:\n // a/b/x/y/z/c\n // a/x/y/z/b/c\n // a/b/x/b/x/c\n // a/b/c\n // To do this, take the rest of the pattern after\n // the **, and see if it would match the file remainder.\n // If so, return success.\n // If not, the ** \"swallows\" a segment, and try again.\n // This is recursively awful.\n //\n // a/**/b/**/c matching a/b/x/y/z/c\n // - a matches a\n // - doublestar\n // - matchOne(b/x/y/z/c, b/**/c)\n // - b matches b\n // - doublestar\n // - matchOne(x/y/z/c, c) -> no\n // - matchOne(y/z/c, c) -> no\n // - matchOne(z/c, c) -> no\n // - matchOne(c, c) yes, hit\n var fr = fi\n var pr = pi + 1\n if (pr === pl) {\n this.debug('** at the end')\n // a ** at the end will just swallow the rest.\n // We have found a match.\n // however, it will not swallow /.x, unless\n // options.dot is set.\n // . and .. are *never* matched by **, for explosively\n // exponential reasons.\n for (; fi < fl; fi++) {\n if (file[fi] === '.' || file[fi] === '..' ||\n (!options.dot && file[fi].charAt(0) === '.')) return false\n }\n return true\n }\n\n // ok, let's see if we can swallow whatever we can.\n while (fr < fl) {\n var swallowee = file[fr]\n\n this.debug('\\nglobstar while', file, fr, pattern, pr, swallowee)\n\n // XXX remove this slice. Just pass the start index.\n if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {\n this.debug('globstar found match!', fr, fl, swallowee)\n // found a match.\n return true\n } else {\n // can't swallow \".\" or \"..\" ever.\n // can only swallow \".foo\" when explicitly asked.\n if (swallowee === '.' || swallowee === '..' ||\n (!options.dot && swallowee.charAt(0) === '.')) {\n this.debug('dot detected!', file, fr, pattern, pr)\n break\n }\n\n // ** swallows a segment, and continue.\n this.debug('globstar swallow a segment, and continue')\n fr++\n }\n }\n\n // no match was found.\n // However, in partial mode, we can't say this is necessarily over.\n // If there's more *pattern* left, then\n /* istanbul ignore if */\n if (partial) {\n // ran out of file\n this.debug('\\n>>> no match, partial?', file, fr, pattern, pr)\n if (fr === fl) return true\n }\n return false\n }\n\n // something other than **\n // non-magic patterns just have to match exactly\n // patterns with magic have been turned into regexps.\n var 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 // Note: ending in / means that we'll get a final \"\"\n // at the end of the pattern. This can only match a\n // corresponding \"\" at the end of the file.\n // If the file ends in /, then it can only match a\n // a pattern that ends in /, unless the pattern just\n // doesn't have any more for it. But, a/b/ should *not*\n // match \"a/b/*\", even though \"\" matches against the\n // [^/]*? pattern, except in partial mode, where it might\n // simply not be reached yet.\n // However, a/b/ should still satisfy a/*\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// replace stuff like \\* with *\nfunction globUnescape (s) {\n return s.replace(/\\\\(.)/g, '$1')\n}\n\nfunction regExpEscape (s) {\n return s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\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 posix(path) {\n\treturn path.charAt(0) === '/';\n}\n\nfunction win32(path) {\n\t// https://github.com/nodejs/node/blob/b3fcc245fb25539909ef1d5eaa01dbf92e168633/lib/path.js#L56\n\tvar splitDeviceRe = /^([a-zA-Z]:|[\\\\\\/]{2}[^\\\\\\/]+[\\\\\\/]+[^\\\\\\/]+)?([\\\\\\/])?([\\s\\S]*?)$/;\n\tvar result = splitDeviceRe.exec(path);\n\tvar device = result[1] || '';\n\tvar isUnc = Boolean(device && device.charAt(1) !== ':');\n\n\t// UNC paths are always absolute\n\treturn Boolean(result[2] || isUnc);\n}\n\nmodule.exports = process.platform === 'win32' ? win32 : posix;\nmodule.exports.posix = posix;\nmodule.exports.win32 = win32;\n","exports.setopts = setopts\nexports.ownProp = ownProp\nexports.makeAbs = makeAbs\nexports.finish = finish\nexports.mark = mark\nexports.isIgnored = isIgnored\nexports.childrenIgnored = childrenIgnored\n\nfunction ownProp (obj, field) {\n return Object.prototype.hasOwnProperty.call(obj, field)\n}\n\nvar fs = require(\"fs\")\nvar path = require(\"path\")\nvar minimatch = require(\"minimatch\")\nvar isAbsolute = require(\"path-is-absolute\")\nvar Minimatch = minimatch.Minimatch\n\nfunction alphasort (a, b) {\n return a.localeCompare(b, 'en')\n}\n\nfunction setupIgnores (self, options) {\n self.ignore = options.ignore || []\n\n if (!Array.isArray(self.ignore))\n self.ignore = [self.ignore]\n\n if (self.ignore.length) {\n self.ignore = self.ignore.map(ignoreMap)\n }\n}\n\n// ignore patterns are always in dot:true mode.\nfunction ignoreMap (pattern) {\n var gmatcher = null\n if (pattern.slice(-3) === '/**') {\n var gpattern = pattern.replace(/(\\/\\*\\*)+$/, '')\n gmatcher = new Minimatch(gpattern, { dot: true })\n }\n\n return {\n matcher: new Minimatch(pattern, { dot: true }),\n gmatcher: gmatcher\n }\n}\n\nfunction setopts (self, pattern, options) {\n if (!options)\n options = {}\n\n // base-matching: just use globstar for that.\n if (options.matchBase && -1 === pattern.indexOf(\"/\")) {\n if (options.noglobstar) {\n throw new Error(\"base matching requires globstar\")\n }\n pattern = \"**/\" + pattern\n }\n\n self.silent = !!options.silent\n self.pattern = pattern\n self.strict = options.strict !== false\n self.realpath = !!options.realpath\n self.realpathCache = options.realpathCache || Object.create(null)\n self.follow = !!options.follow\n self.dot = !!options.dot\n self.mark = !!options.mark\n self.nodir = !!options.nodir\n if (self.nodir)\n self.mark = true\n self.sync = !!options.sync\n self.nounique = !!options.nounique\n self.nonull = !!options.nonull\n self.nosort = !!options.nosort\n self.nocase = !!options.nocase\n self.stat = !!options.stat\n self.noprocess = !!options.noprocess\n self.absolute = !!options.absolute\n self.fs = options.fs || fs\n\n self.maxLength = options.maxLength || Infinity\n self.cache = options.cache || Object.create(null)\n self.statCache = options.statCache || Object.create(null)\n self.symlinks = options.symlinks || Object.create(null)\n\n setupIgnores(self, options)\n\n self.changedCwd = false\n var cwd = process.cwd()\n if (!ownProp(options, \"cwd\"))\n self.cwd = cwd\n else {\n self.cwd = path.resolve(options.cwd)\n self.changedCwd = self.cwd !== cwd\n }\n\n self.root = options.root || path.resolve(self.cwd, \"/\")\n self.root = path.resolve(self.root)\n if (process.platform === \"win32\")\n self.root = self.root.replace(/\\\\/g, \"/\")\n\n // TODO: is an absolute `cwd` supposed to be resolved against `root`?\n // e.g. { cwd: '/test', root: __dirname } === path.join(__dirname, '/test')\n self.cwdAbs = isAbsolute(self.cwd) ? self.cwd : makeAbs(self, self.cwd)\n if (process.platform === \"win32\")\n self.cwdAbs = self.cwdAbs.replace(/\\\\/g, \"/\")\n self.nomount = !!options.nomount\n\n // disable comments and negation in Minimatch.\n // Note that they are not supported in Glob itself anyway.\n options.nonegate = true\n options.nocomment = true\n // always treat \\ in patterns as escapes, not path separators\n options.allowWindowsEscape = false\n\n self.minimatch = new Minimatch(pattern, options)\n self.options = self.minimatch.options\n}\n\nfunction finish (self) {\n var nou = self.nounique\n var all = nou ? [] : Object.create(null)\n\n for (var i = 0, l = self.matches.length; i < l; i ++) {\n var matches = self.matches[i]\n if (!matches || Object.keys(matches).length === 0) {\n if (self.nonull) {\n // do like the shell, and spit out the literal glob\n var literal = self.minimatch.globSet[i]\n if (nou)\n all.push(literal)\n else\n all[literal] = true\n }\n } else {\n // had matches\n var m = Object.keys(matches)\n if (nou)\n all.push.apply(all, m)\n else\n m.forEach(function (m) {\n all[m] = true\n })\n }\n }\n\n if (!nou)\n all = Object.keys(all)\n\n if (!self.nosort)\n all = all.sort(alphasort)\n\n // at *some* point we statted all of these\n if (self.mark) {\n for (var i = 0; i < all.length; i++) {\n all[i] = self._mark(all[i])\n }\n if (self.nodir) {\n all = all.filter(function (e) {\n var notDir = !(/\\/$/.test(e))\n var c = self.cache[e] || self.cache[makeAbs(self, e)]\n if (notDir && c)\n notDir = c !== 'DIR' && !Array.isArray(c)\n return notDir\n })\n }\n }\n\n if (self.ignore.length)\n all = all.filter(function(m) {\n return !isIgnored(self, m)\n })\n\n self.found = all\n}\n\nfunction mark (self, p) {\n var abs = makeAbs(self, p)\n var c = self.cache[abs]\n var m = p\n if (c) {\n var isDir = c === 'DIR' || Array.isArray(c)\n var slash = p.slice(-1) === '/'\n\n if (isDir && !slash)\n m += '/'\n else if (!isDir && slash)\n m = m.slice(0, -1)\n\n if (m !== p) {\n var mabs = makeAbs(self, m)\n self.statCache[mabs] = self.statCache[abs]\n self.cache[mabs] = self.cache[abs]\n }\n }\n\n return m\n}\n\n// lotta situps...\nfunction makeAbs (self, f) {\n var abs = f\n if (f.charAt(0) === '/') {\n abs = path.join(self.root, f)\n } else if (isAbsolute(f) || f === '') {\n abs = f\n } else if (self.changedCwd) {\n abs = path.resolve(self.cwd, f)\n } else {\n abs = path.resolve(f)\n }\n\n if (process.platform === 'win32')\n abs = abs.replace(/\\\\/g, '/')\n\n return abs\n}\n\n\n// Return true, if pattern ends with globstar '**', for the accompanying parent directory.\n// Ex:- If node_modules/** is the pattern, add 'node_modules' to ignore list along with it's contents\nfunction isIgnored (self, path) {\n if (!self.ignore.length)\n return false\n\n return self.ignore.some(function(item) {\n return item.matcher.match(path) || !!(item.gmatcher && item.gmatcher.match(path))\n })\n}\n\nfunction childrenIgnored (self, path) {\n if (!self.ignore.length)\n return false\n\n return self.ignore.some(function(item) {\n return !!(item.gmatcher && item.gmatcher.match(path))\n })\n}\n","module.exports = globSync\nglobSync.GlobSync = GlobSync\n\nvar rp = require('fs.realpath')\nvar minimatch = require('minimatch')\nvar Minimatch = minimatch.Minimatch\nvar Glob = require('./glob.js').Glob\nvar util = require('util')\nvar path = require('path')\nvar assert = require('assert')\nvar isAbsolute = require('path-is-absolute')\nvar common = require('./common.js')\nvar setopts = common.setopts\nvar ownProp = common.ownProp\nvar childrenIgnored = common.childrenIgnored\nvar isIgnored = common.isIgnored\n\nfunction globSync (pattern, options) {\n if (typeof options === 'function' || arguments.length === 3)\n throw new TypeError('callback provided to sync glob\\n'+\n 'See: https://github.com/isaacs/node-glob/issues/167')\n\n return new GlobSync(pattern, options).found\n}\n\nfunction GlobSync (pattern, options) {\n if (!pattern)\n throw new Error('must provide pattern')\n\n if (typeof options === 'function' || arguments.length === 3)\n throw new TypeError('callback provided to sync glob\\n'+\n 'See: https://github.com/isaacs/node-glob/issues/167')\n\n if (!(this instanceof GlobSync))\n return new GlobSync(pattern, options)\n\n setopts(this, pattern, options)\n\n if (this.noprocess)\n return this\n\n var n = this.minimatch.set.length\n this.matches = new Array(n)\n for (var i = 0; i < n; i ++) {\n this._process(this.minimatch.set[i], i, false)\n }\n this._finish()\n}\n\nGlobSync.prototype._finish = function () {\n assert.ok(this instanceof GlobSync)\n if (this.realpath) {\n var self = this\n this.matches.forEach(function (matchset, index) {\n var set = self.matches[index] = Object.create(null)\n for (var p in matchset) {\n try {\n p = self._makeAbs(p)\n var real = rp.realpathSync(p, self.realpathCache)\n set[real] = true\n } catch (er) {\n if (er.syscall === 'stat')\n set[self._makeAbs(p)] = true\n else\n throw er\n }\n }\n })\n }\n common.finish(this)\n}\n\n\nGlobSync.prototype._process = function (pattern, index, inGlobStar) {\n assert.ok(this instanceof GlobSync)\n\n // Get the first [n] parts of pattern that are all strings.\n var n = 0\n while (typeof pattern[n] === 'string') {\n n ++\n }\n // now n is the index of the first one that is *not* a string.\n\n // See if there's anything else\n var prefix\n switch (n) {\n // if not, then this is rather simple\n case pattern.length:\n this._processSimple(pattern.join('/'), index)\n return\n\n case 0:\n // pattern *starts* with some non-trivial item.\n // going to readdir(cwd), but not include the prefix in matches.\n prefix = null\n break\n\n default:\n // pattern has some string bits in the front.\n // whatever it starts with, whether that's 'absolute' like /foo/bar,\n // or 'relative' like '../baz'\n prefix = pattern.slice(0, n).join('/')\n break\n }\n\n var remain = pattern.slice(n)\n\n // get the list of entries.\n var read\n if (prefix === null)\n read = '.'\n else if (isAbsolute(prefix) ||\n isAbsolute(pattern.map(function (p) {\n return typeof p === 'string' ? p : '[*]'\n }).join('/'))) {\n if (!prefix || !isAbsolute(prefix))\n prefix = '/' + prefix\n read = prefix\n } else\n read = prefix\n\n var abs = this._makeAbs(read)\n\n //if ignored, skip processing\n if (childrenIgnored(this, read))\n return\n\n var isGlobStar = remain[0] === minimatch.GLOBSTAR\n if (isGlobStar)\n this._processGlobStar(prefix, read, abs, remain, index, inGlobStar)\n else\n this._processReaddir(prefix, read, abs, remain, index, inGlobStar)\n}\n\n\nGlobSync.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar) {\n var entries = this._readdir(abs, inGlobStar)\n\n // if the abs isn't a dir, then nothing can match!\n if (!entries)\n return\n\n // It will only match dot entries if it starts with a dot, or if\n // dot is set. Stuff like @(.foo|.bar) isn't allowed.\n var pn = remain[0]\n var negate = !!this.minimatch.negate\n var rawGlob = pn._glob\n var dotOk = this.dot || rawGlob.charAt(0) === '.'\n\n var matchedEntries = []\n for (var i = 0; i < entries.length; i++) {\n var e = entries[i]\n if (e.charAt(0) !== '.' || dotOk) {\n var m\n if (negate && !prefix) {\n m = !e.match(pn)\n } else {\n m = e.match(pn)\n }\n if (m)\n matchedEntries.push(e)\n }\n }\n\n var len = matchedEntries.length\n // If there are no matched entries, then nothing matches.\n if (len === 0)\n return\n\n // if this is the last remaining pattern bit, then no need for\n // an additional stat *unless* the user has specified mark or\n // stat explicitly. We know they exist, since readdir returned\n // them.\n\n if (remain.length === 1 && !this.mark && !this.stat) {\n if (!this.matches[index])\n this.matches[index] = Object.create(null)\n\n for (var i = 0; i < len; i ++) {\n var e = matchedEntries[i]\n if (prefix) {\n if (prefix.slice(-1) !== '/')\n e = prefix + '/' + e\n else\n e = prefix + e\n }\n\n if (e.charAt(0) === '/' && !this.nomount) {\n e = path.join(this.root, e)\n }\n this._emitMatch(index, e)\n }\n // This was the last one, and no stats were needed\n return\n }\n\n // now test all matched entries as stand-ins for that part\n // of the pattern.\n remain.shift()\n for (var i = 0; i < len; i ++) {\n var e = matchedEntries[i]\n var newPattern\n if (prefix)\n newPattern = [prefix, e]\n else\n newPattern = [e]\n this._process(newPattern.concat(remain), index, inGlobStar)\n }\n}\n\n\nGlobSync.prototype._emitMatch = function (index, e) {\n if (isIgnored(this, e))\n return\n\n var abs = this._makeAbs(e)\n\n if (this.mark)\n e = this._mark(e)\n\n if (this.absolute) {\n e = abs\n }\n\n if (this.matches[index][e])\n return\n\n if (this.nodir) {\n var c = this.cache[abs]\n if (c === 'DIR' || Array.isArray(c))\n return\n }\n\n this.matches[index][e] = true\n\n if (this.stat)\n this._stat(e)\n}\n\n\nGlobSync.prototype._readdirInGlobStar = function (abs) {\n // follow all symlinked directories forever\n // just proceed as if this is a non-globstar situation\n if (this.follow)\n return this._readdir(abs, false)\n\n var entries\n var lstat\n var stat\n try {\n lstat = this.fs.lstatSync(abs)\n } catch (er) {\n if (er.code === 'ENOENT') {\n // lstat failed, doesn't exist\n return null\n }\n }\n\n var isSym = lstat && lstat.isSymbolicLink()\n this.symlinks[abs] = isSym\n\n // If it's not a symlink or a dir, then it's definitely a regular file.\n // don't bother doing a readdir in that case.\n if (!isSym && lstat && !lstat.isDirectory())\n this.cache[abs] = 'FILE'\n else\n entries = this._readdir(abs, false)\n\n return entries\n}\n\nGlobSync.prototype._readdir = function (abs, inGlobStar) {\n var entries\n\n if (inGlobStar && !ownProp(this.symlinks, abs))\n return this._readdirInGlobStar(abs)\n\n if (ownProp(this.cache, abs)) {\n var c = this.cache[abs]\n if (!c || c === 'FILE')\n return null\n\n if (Array.isArray(c))\n return c\n }\n\n try {\n return this._readdirEntries(abs, this.fs.readdirSync(abs))\n } catch (er) {\n this._readdirError(abs, er)\n return null\n }\n}\n\nGlobSync.prototype._readdirEntries = function (abs, entries) {\n // if we haven't asked to stat everything, then just\n // assume that everything in there exists, so we can avoid\n // having to stat it a second time.\n if (!this.mark && !this.stat) {\n for (var i = 0; i < entries.length; i ++) {\n var e = entries[i]\n if (abs === '/')\n e = abs + e\n else\n e = abs + '/' + e\n this.cache[e] = true\n }\n }\n\n this.cache[abs] = entries\n\n // mark and cache dir-ness\n return entries\n}\n\nGlobSync.prototype._readdirError = function (f, er) {\n // handle errors, and cache the information\n switch (er.code) {\n case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205\n case 'ENOTDIR': // totally normal. means it *does* exist.\n var abs = this._makeAbs(f)\n this.cache[abs] = 'FILE'\n if (abs === this.cwdAbs) {\n var error = new Error(er.code + ' invalid cwd ' + this.cwd)\n error.path = this.cwd\n error.code = er.code\n throw error\n }\n break\n\n case 'ENOENT': // not terribly unusual\n case 'ELOOP':\n case 'ENAMETOOLONG':\n case 'UNKNOWN':\n this.cache[this._makeAbs(f)] = false\n break\n\n default: // some unusual error. Treat as failure.\n this.cache[this._makeAbs(f)] = false\n if (this.strict)\n throw er\n if (!this.silent)\n console.error('glob error', er)\n break\n }\n}\n\nGlobSync.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar) {\n\n var entries = this._readdir(abs, inGlobStar)\n\n // no entries means not a dir, so it can never have matches\n // foo.txt/** doesn't match foo.txt\n if (!entries)\n return\n\n // test without the globstar, and with every child both below\n // and replacing the globstar.\n var remainWithoutGlobStar = remain.slice(1)\n var gspref = prefix ? [ prefix ] : []\n var noGlobStar = gspref.concat(remainWithoutGlobStar)\n\n // the noGlobStar pattern exits the inGlobStar state\n this._process(noGlobStar, index, false)\n\n var len = entries.length\n var isSym = this.symlinks[abs]\n\n // If it's a symlink, and we're in a globstar, then stop\n if (isSym && inGlobStar)\n return\n\n for (var i = 0; i < len; i++) {\n var e = entries[i]\n if (e.charAt(0) === '.' && !this.dot)\n continue\n\n // these two cases enter the inGlobStar state\n var instead = gspref.concat(entries[i], remainWithoutGlobStar)\n this._process(instead, index, true)\n\n var below = gspref.concat(entries[i], remain)\n this._process(below, index, true)\n }\n}\n\nGlobSync.prototype._processSimple = function (prefix, index) {\n // XXX review this. Shouldn't it be doing the mounting etc\n // before doing stat? kinda weird?\n var exists = this._stat(prefix)\n\n if (!this.matches[index])\n this.matches[index] = Object.create(null)\n\n // If it doesn't exist, then just mark the lack of results\n if (!exists)\n return\n\n if (prefix && isAbsolute(prefix) && !this.nomount) {\n var trail = /[\\/\\\\]$/.test(prefix)\n if (prefix.charAt(0) === '/') {\n prefix = path.join(this.root, prefix)\n } else {\n prefix = path.resolve(this.root, prefix)\n if (trail)\n prefix += '/'\n }\n }\n\n if (process.platform === 'win32')\n prefix = prefix.replace(/\\\\/g, '/')\n\n // Mark this as a match\n this._emitMatch(index, prefix)\n}\n\n// Returns either 'DIR', 'FILE', or false\nGlobSync.prototype._stat = function (f) {\n var abs = this._makeAbs(f)\n var needDir = f.slice(-1) === '/'\n\n if (f.length > this.maxLength)\n return false\n\n if (!this.stat && ownProp(this.cache, abs)) {\n var c = this.cache[abs]\n\n if (Array.isArray(c))\n c = 'DIR'\n\n // It exists, but maybe not how we need it\n if (!needDir || c === 'DIR')\n return c\n\n if (needDir && c === 'FILE')\n return false\n\n // otherwise we have to stat, because maybe c=true\n // if we know it exists, but not what it is.\n }\n\n var exists\n var stat = this.statCache[abs]\n if (!stat) {\n var lstat\n try {\n lstat = this.fs.lstatSync(abs)\n } catch (er) {\n if (er && (er.code === 'ENOENT' || er.code === 'ENOTDIR')) {\n this.statCache[abs] = false\n return false\n }\n }\n\n if (lstat && lstat.isSymbolicLink()) {\n try {\n stat = this.fs.statSync(abs)\n } catch (er) {\n stat = lstat\n }\n } else {\n stat = lstat\n }\n }\n\n this.statCache[abs] = stat\n\n var c = true\n if (stat)\n c = stat.isDirectory() ? 'DIR' : 'FILE'\n\n this.cache[abs] = this.cache[abs] || c\n\n if (needDir && c === 'FILE')\n return false\n\n return c\n}\n\nGlobSync.prototype._mark = function (p) {\n return common.mark(this, p)\n}\n\nGlobSync.prototype._makeAbs = function (f) {\n return common.makeAbs(this, f)\n}\n","// Returns a wrapper function that returns a wrapped callback\n// The wrapper function should do some stuff, and return a\n// presumably different callback function.\n// This makes sure that own properties are retained, so that\n// decorations and such are not lost along the way.\nmodule.exports = wrappy\nfunction wrappy (fn, cb) {\n if (fn && cb) return wrappy(fn)(cb)\n\n if (typeof fn !== 'function')\n throw new TypeError('need wrapper function')\n\n Object.keys(fn).forEach(function (k) {\n wrapper[k] = fn[k]\n })\n\n return wrapper\n\n function wrapper() {\n var args = new Array(arguments.length)\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i]\n }\n var ret = fn.apply(this, args)\n var cb = args[args.length-1]\n if (typeof ret === 'function' && ret !== cb) {\n Object.keys(cb).forEach(function (k) {\n ret[k] = cb[k]\n })\n }\n return ret\n }\n}\n","var wrappy = require('wrappy')\nmodule.exports = wrappy(once)\nmodule.exports.strict = wrappy(onceStrict)\n\nonce.proto = once(function () {\n Object.defineProperty(Function.prototype, 'once', {\n value: function () {\n return once(this)\n },\n configurable: true\n })\n\n Object.defineProperty(Function.prototype, 'onceStrict', {\n value: function () {\n return onceStrict(this)\n },\n configurable: true\n })\n})\n\nfunction once (fn) {\n var f = function () {\n if (f.called) return f.value\n f.called = true\n return f.value = fn.apply(this, arguments)\n }\n f.called = false\n return f\n}\n\nfunction onceStrict (fn) {\n var f = function () {\n if (f.called)\n throw new Error(f.onceError)\n f.called = true\n return f.value = fn.apply(this, arguments)\n }\n var name = fn.name || 'Function wrapped with `once`'\n f.onceError = name + \" shouldn't be called more than once\"\n f.called = false\n return f\n}\n","var wrappy = require('wrappy')\nvar reqs = Object.create(null)\nvar once = require('once')\n\nmodule.exports = wrappy(inflight)\n\nfunction inflight (key, cb) {\n if (reqs[key]) {\n reqs[key].push(cb)\n return null\n } else {\n reqs[key] = [cb]\n return makeres(key)\n }\n}\n\nfunction makeres (key) {\n return once(function RES () {\n var cbs = reqs[key]\n var len = cbs.length\n var args = slice(arguments)\n\n // XXX It's somewhat ambiguous whether a new callback added in this\n // pass should be queued for later execution if something in the\n // list of callbacks throws, or if it should just be discarded.\n // However, it's such an edge case that it hardly matters, and either\n // choice is likely as surprising as the other.\n // As it happens, we do go ahead and schedule it for later execution.\n try {\n for (var i = 0; i < len; i++) {\n cbs[i].apply(null, args)\n }\n } finally {\n if (cbs.length > len) {\n // added more in the interim.\n // de-zalgo, just in case, but don't call again.\n cbs.splice(0, len)\n process.nextTick(function () {\n RES.apply(null, args)\n })\n } else {\n delete reqs[key]\n }\n }\n })\n}\n\nfunction slice (args) {\n var length = args.length\n var array = []\n\n for (var i = 0; i < length; i++) array[i] = args[i]\n return array\n}\n","// Approach:\n//\n// 1. Get the minimatch set\n// 2. For each pattern in the set, PROCESS(pattern, false)\n// 3. Store matches per-set, then uniq them\n//\n// PROCESS(pattern, inGlobStar)\n// Get the first [n] items from pattern that are all strings\n// Join these together. This is PREFIX.\n// If there is no more remaining, then stat(PREFIX) and\n// add to matches if it succeeds. END.\n//\n// If inGlobStar and PREFIX is symlink and points to dir\n// set ENTRIES = []\n// else readdir(PREFIX) as ENTRIES\n// If fail, END\n//\n// with ENTRIES\n// If pattern[n] is GLOBSTAR\n// // handle the case where the globstar match is empty\n// // by pruning it out, and testing the resulting pattern\n// PROCESS(pattern[0..n] + pattern[n+1 .. $], false)\n// // handle other cases.\n// for ENTRY in ENTRIES (not dotfiles)\n// // attach globstar + tail onto the entry\n// // Mark that this entry is a globstar match\n// PROCESS(pattern[0..n] + ENTRY + pattern[n .. $], true)\n//\n// else // not globstar\n// for ENTRY in ENTRIES (not dotfiles, unless pattern[n] is dot)\n// Test ENTRY against pattern[n]\n// If fails, continue\n// If passes, PROCESS(pattern[0..n] + item + pattern[n+1 .. $])\n//\n// Caveat:\n// Cache all stats and readdirs results to minimize syscall. Since all\n// we ever care about is existence and directory-ness, we can just keep\n// `true` for files, and [children,...] for directories, or `false` for\n// things that don't exist.\n\nmodule.exports = glob\n\nvar rp = require('fs.realpath')\nvar minimatch = require('minimatch')\nvar Minimatch = minimatch.Minimatch\nvar inherits = require('inherits')\nvar EE = require('events').EventEmitter\nvar path = require('path')\nvar assert = require('assert')\nvar isAbsolute = require('path-is-absolute')\nvar globSync = require('./sync.js')\nvar common = require('./common.js')\nvar setopts = common.setopts\nvar ownProp = common.ownProp\nvar inflight = require('inflight')\nvar util = require('util')\nvar childrenIgnored = common.childrenIgnored\nvar isIgnored = common.isIgnored\n\nvar once = require('once')\n\nfunction glob (pattern, options, cb) {\n if (typeof options === 'function') cb = options, options = {}\n if (!options) options = {}\n\n if (options.sync) {\n if (cb)\n throw new TypeError('callback provided to sync glob')\n return globSync(pattern, options)\n }\n\n return new Glob(pattern, options, cb)\n}\n\nglob.sync = globSync\nvar GlobSync = glob.GlobSync = globSync.GlobSync\n\n// old api surface\nglob.glob = glob\n\nfunction extend (origin, add) {\n if (add === null || typeof add !== 'object') {\n return origin\n }\n\n var keys = Object.keys(add)\n var i = keys.length\n while (i--) {\n origin[keys[i]] = add[keys[i]]\n }\n return origin\n}\n\nglob.hasMagic = function (pattern, options_) {\n var options = extend({}, options_)\n options.noprocess = true\n\n var g = new Glob(pattern, options)\n var set = g.minimatch.set\n\n if (!pattern)\n return false\n\n if (set.length > 1)\n return true\n\n for (var j = 0; j < set[0].length; j++) {\n if (typeof set[0][j] !== 'string')\n return true\n }\n\n return false\n}\n\nglob.Glob = Glob\ninherits(Glob, EE)\nfunction Glob (pattern, options, cb) {\n if (typeof options === 'function') {\n cb = options\n options = null\n }\n\n if (options && options.sync) {\n if (cb)\n throw new TypeError('callback provided to sync glob')\n return new GlobSync(pattern, options)\n }\n\n if (!(this instanceof Glob))\n return new Glob(pattern, options, cb)\n\n setopts(this, pattern, options)\n this._didRealPath = false\n\n // process each pattern in the minimatch set\n var n = this.minimatch.set.length\n\n // The matches are stored as {<filename>: true,...} so that\n // duplicates are automagically pruned.\n // Later, we do an Object.keys() on these.\n // Keep them as a list so we can fill in when nonull is set.\n this.matches = new Array(n)\n\n if (typeof cb === 'function') {\n cb = once(cb)\n this.on('error', cb)\n this.on('end', function (matches) {\n cb(null, matches)\n })\n }\n\n var self = this\n this._processing = 0\n\n this._emitQueue = []\n this._processQueue = []\n this.paused = false\n\n if (this.noprocess)\n return this\n\n if (n === 0)\n return done()\n\n var sync = true\n for (var i = 0; i < n; i ++) {\n this._process(this.minimatch.set[i], i, false, done)\n }\n sync = false\n\n function done () {\n --self._processing\n if (self._processing <= 0) {\n if (sync) {\n process.nextTick(function () {\n self._finish()\n })\n } else {\n self._finish()\n }\n }\n }\n}\n\nGlob.prototype._finish = function () {\n assert(this instanceof Glob)\n if (this.aborted)\n return\n\n if (this.realpath && !this._didRealpath)\n return this._realpath()\n\n common.finish(this)\n this.emit('end', this.found)\n}\n\nGlob.prototype._realpath = function () {\n if (this._didRealpath)\n return\n\n this._didRealpath = true\n\n var n = this.matches.length\n if (n === 0)\n return this._finish()\n\n var self = this\n for (var i = 0; i < this.matches.length; i++)\n this._realpathSet(i, next)\n\n function next () {\n if (--n === 0)\n self._finish()\n }\n}\n\nGlob.prototype._realpathSet = function (index, cb) {\n var matchset = this.matches[index]\n if (!matchset)\n return cb()\n\n var found = Object.keys(matchset)\n var self = this\n var n = found.length\n\n if (n === 0)\n return cb()\n\n var set = this.matches[index] = Object.create(null)\n found.forEach(function (p, i) {\n // If there's a problem with the stat, then it means that\n // one or more of the links in the realpath couldn't be\n // resolved. just return the abs value in that case.\n p = self._makeAbs(p)\n rp.realpath(p, self.realpathCache, function (er, real) {\n if (!er)\n set[real] = true\n else if (er.syscall === 'stat')\n set[p] = true\n else\n self.emit('error', er) // srsly wtf right here\n\n if (--n === 0) {\n self.matches[index] = set\n cb()\n }\n })\n })\n}\n\nGlob.prototype._mark = function (p) {\n return common.mark(this, p)\n}\n\nGlob.prototype._makeAbs = function (f) {\n return common.makeAbs(this, f)\n}\n\nGlob.prototype.abort = function () {\n this.aborted = true\n this.emit('abort')\n}\n\nGlob.prototype.pause = function () {\n if (!this.paused) {\n this.paused = true\n this.emit('pause')\n }\n}\n\nGlob.prototype.resume = function () {\n if (this.paused) {\n this.emit('resume')\n this.paused = false\n if (this._emitQueue.length) {\n var eq = this._emitQueue.slice(0)\n this._emitQueue.length = 0\n for (var i = 0; i < eq.length; i ++) {\n var e = eq[i]\n this._emitMatch(e[0], e[1])\n }\n }\n if (this._processQueue.length) {\n var pq = this._processQueue.slice(0)\n this._processQueue.length = 0\n for (var i = 0; i < pq.length; i ++) {\n var p = pq[i]\n this._processing--\n this._process(p[0], p[1], p[2], p[3])\n }\n }\n }\n}\n\nGlob.prototype._process = function (pattern, index, inGlobStar, cb) {\n assert(this instanceof Glob)\n assert(typeof cb === 'function')\n\n if (this.aborted)\n return\n\n this._processing++\n if (this.paused) {\n this._processQueue.push([pattern, index, inGlobStar, cb])\n return\n }\n\n //console.error('PROCESS %d', this._processing, pattern)\n\n // Get the first [n] parts of pattern that are all strings.\n var n = 0\n while (typeof pattern[n] === 'string') {\n n ++\n }\n // now n is the index of the first one that is *not* a string.\n\n // see if there's anything else\n var prefix\n switch (n) {\n // if not, then this is rather simple\n case pattern.length:\n this._processSimple(pattern.join('/'), index, cb)\n return\n\n case 0:\n // pattern *starts* with some non-trivial item.\n // going to readdir(cwd), but not include the prefix in matches.\n prefix = null\n break\n\n default:\n // pattern has some string bits in the front.\n // whatever it starts with, whether that's 'absolute' like /foo/bar,\n // or 'relative' like '../baz'\n prefix = pattern.slice(0, n).join('/')\n break\n }\n\n var remain = pattern.slice(n)\n\n // get the list of entries.\n var read\n if (prefix === null)\n read = '.'\n else if (isAbsolute(prefix) ||\n isAbsolute(pattern.map(function (p) {\n return typeof p === 'string' ? p : '[*]'\n }).join('/'))) {\n if (!prefix || !isAbsolute(prefix))\n prefix = '/' + prefix\n read = prefix\n } else\n read = prefix\n\n var abs = this._makeAbs(read)\n\n //if ignored, skip _processing\n if (childrenIgnored(this, read))\n return cb()\n\n var isGlobStar = remain[0] === minimatch.GLOBSTAR\n if (isGlobStar)\n this._processGlobStar(prefix, read, abs, remain, index, inGlobStar, cb)\n else\n this._processReaddir(prefix, read, abs, remain, index, inGlobStar, cb)\n}\n\nGlob.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar, cb) {\n var self = this\n this._readdir(abs, inGlobStar, function (er, entries) {\n return self._processReaddir2(prefix, read, abs, remain, index, inGlobStar, entries, cb)\n })\n}\n\nGlob.prototype._processReaddir2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) {\n\n // if the abs isn't a dir, then nothing can match!\n if (!entries)\n return cb()\n\n // It will only match dot entries if it starts with a dot, or if\n // dot is set. Stuff like @(.foo|.bar) isn't allowed.\n var pn = remain[0]\n var negate = !!this.minimatch.negate\n var rawGlob = pn._glob\n var dotOk = this.dot || rawGlob.charAt(0) === '.'\n\n var matchedEntries = []\n for (var i = 0; i < entries.length; i++) {\n var e = entries[i]\n if (e.charAt(0) !== '.' || dotOk) {\n var m\n if (negate && !prefix) {\n m = !e.match(pn)\n } else {\n m = e.match(pn)\n }\n if (m)\n matchedEntries.push(e)\n }\n }\n\n //console.error('prd2', prefix, entries, remain[0]._glob, matchedEntries)\n\n var len = matchedEntries.length\n // If there are no matched entries, then nothing matches.\n if (len === 0)\n return cb()\n\n // if this is the last remaining pattern bit, then no need for\n // an additional stat *unless* the user has specified mark or\n // stat explicitly. We know they exist, since readdir returned\n // them.\n\n if (remain.length === 1 && !this.mark && !this.stat) {\n if (!this.matches[index])\n this.matches[index] = Object.create(null)\n\n for (var i = 0; i < len; i ++) {\n var e = matchedEntries[i]\n if (prefix) {\n if (prefix !== '/')\n e = prefix + '/' + e\n else\n e = prefix + e\n }\n\n if (e.charAt(0) === '/' && !this.nomount) {\n e = path.join(this.root, e)\n }\n this._emitMatch(index, e)\n }\n // This was the last one, and no stats were needed\n return cb()\n }\n\n // now test all matched entries as stand-ins for that part\n // of the pattern.\n remain.shift()\n for (var i = 0; i < len; i ++) {\n var e = matchedEntries[i]\n var newPattern\n if (prefix) {\n if (prefix !== '/')\n e = prefix + '/' + e\n else\n e = prefix + e\n }\n this._process([e].concat(remain), index, inGlobStar, cb)\n }\n cb()\n}\n\nGlob.prototype._emitMatch = function (index, e) {\n if (this.aborted)\n return\n\n if (isIgnored(this, e))\n return\n\n if (this.paused) {\n this._emitQueue.push([index, e])\n return\n }\n\n var abs = isAbsolute(e) ? e : this._makeAbs(e)\n\n if (this.mark)\n e = this._mark(e)\n\n if (this.absolute)\n e = abs\n\n if (this.matches[index][e])\n return\n\n if (this.nodir) {\n var c = this.cache[abs]\n if (c === 'DIR' || Array.isArray(c))\n return\n }\n\n this.matches[index][e] = true\n\n var st = this.statCache[abs]\n if (st)\n this.emit('stat', e, st)\n\n this.emit('match', e)\n}\n\nGlob.prototype._readdirInGlobStar = function (abs, cb) {\n if (this.aborted)\n return\n\n // follow all symlinked directories forever\n // just proceed as if this is a non-globstar situation\n if (this.follow)\n return this._readdir(abs, false, cb)\n\n var lstatkey = 'lstat\\0' + abs\n var self = this\n var lstatcb = inflight(lstatkey, lstatcb_)\n\n if (lstatcb)\n self.fs.lstat(abs, lstatcb)\n\n function lstatcb_ (er, lstat) {\n if (er && er.code === 'ENOENT')\n return cb()\n\n var isSym = lstat && lstat.isSymbolicLink()\n self.symlinks[abs] = isSym\n\n // If it's not a symlink or a dir, then it's definitely a regular file.\n // don't bother doing a readdir in that case.\n if (!isSym && lstat && !lstat.isDirectory()) {\n self.cache[abs] = 'FILE'\n cb()\n } else\n self._readdir(abs, false, cb)\n }\n}\n\nGlob.prototype._readdir = function (abs, inGlobStar, cb) {\n if (this.aborted)\n return\n\n cb = inflight('readdir\\0'+abs+'\\0'+inGlobStar, cb)\n if (!cb)\n return\n\n //console.error('RD %j %j', +inGlobStar, abs)\n if (inGlobStar && !ownProp(this.symlinks, abs))\n return this._readdirInGlobStar(abs, cb)\n\n if (ownProp(this.cache, abs)) {\n var c = this.cache[abs]\n if (!c || c === 'FILE')\n return cb()\n\n if (Array.isArray(c))\n return cb(null, c)\n }\n\n var self = this\n self.fs.readdir(abs, readdirCb(this, abs, cb))\n}\n\nfunction readdirCb (self, abs, cb) {\n return function (er, entries) {\n if (er)\n self._readdirError(abs, er, cb)\n else\n self._readdirEntries(abs, entries, cb)\n }\n}\n\nGlob.prototype._readdirEntries = function (abs, entries, cb) {\n if (this.aborted)\n return\n\n // if we haven't asked to stat everything, then just\n // assume that everything in there exists, so we can avoid\n // having to stat it a second time.\n if (!this.mark && !this.stat) {\n for (var i = 0; i < entries.length; i ++) {\n var e = entries[i]\n if (abs === '/')\n e = abs + e\n else\n e = abs + '/' + e\n this.cache[e] = true\n }\n }\n\n this.cache[abs] = entries\n return cb(null, entries)\n}\n\nGlob.prototype._readdirError = function (f, er, cb) {\n if (this.aborted)\n return\n\n // handle errors, and cache the information\n switch (er.code) {\n case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205\n case 'ENOTDIR': // totally normal. means it *does* exist.\n var abs = this._makeAbs(f)\n this.cache[abs] = 'FILE'\n if (abs === this.cwdAbs) {\n var error = new Error(er.code + ' invalid cwd ' + this.cwd)\n error.path = this.cwd\n error.code = er.code\n this.emit('error', error)\n this.abort()\n }\n break\n\n case 'ENOENT': // not terribly unusual\n case 'ELOOP':\n case 'ENAMETOOLONG':\n case 'UNKNOWN':\n this.cache[this._makeAbs(f)] = false\n break\n\n default: // some unusual error. Treat as failure.\n this.cache[this._makeAbs(f)] = false\n if (this.strict) {\n this.emit('error', er)\n // If the error is handled, then we abort\n // if not, we threw out of here\n this.abort()\n }\n if (!this.silent)\n console.error('glob error', er)\n break\n }\n\n return cb()\n}\n\nGlob.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar, cb) {\n var self = this\n this._readdir(abs, inGlobStar, function (er, entries) {\n self._processGlobStar2(prefix, read, abs, remain, index, inGlobStar, entries, cb)\n })\n}\n\n\nGlob.prototype._processGlobStar2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) {\n //console.error('pgs2', prefix, remain[0], entries)\n\n // no entries means not a dir, so it can never have matches\n // foo.txt/** doesn't match foo.txt\n if (!entries)\n return cb()\n\n // test without the globstar, and with every child both below\n // and replacing the globstar.\n var remainWithoutGlobStar = remain.slice(1)\n var gspref = prefix ? [ prefix ] : []\n var noGlobStar = gspref.concat(remainWithoutGlobStar)\n\n // the noGlobStar pattern exits the inGlobStar state\n this._process(noGlobStar, index, false, cb)\n\n var isSym = this.symlinks[abs]\n var len = entries.length\n\n // If it's a symlink, and we're in a globstar, then stop\n if (isSym && inGlobStar)\n return cb()\n\n for (var i = 0; i < len; i++) {\n var e = entries[i]\n if (e.charAt(0) === '.' && !this.dot)\n continue\n\n // these two cases enter the inGlobStar state\n var instead = gspref.concat(entries[i], remainWithoutGlobStar)\n this._process(instead, index, true, cb)\n\n var below = gspref.concat(entries[i], remain)\n this._process(below, index, true, cb)\n }\n\n cb()\n}\n\nGlob.prototype._processSimple = function (prefix, index, cb) {\n // XXX review this. Shouldn't it be doing the mounting etc\n // before doing stat? kinda weird?\n var self = this\n this._stat(prefix, function (er, exists) {\n self._processSimple2(prefix, index, er, exists, cb)\n })\n}\nGlob.prototype._processSimple2 = function (prefix, index, er, exists, cb) {\n\n //console.error('ps2', prefix, exists)\n\n if (!this.matches[index])\n this.matches[index] = Object.create(null)\n\n // If it doesn't exist, then just mark the lack of results\n if (!exists)\n return cb()\n\n if (prefix && isAbsolute(prefix) && !this.nomount) {\n var trail = /[\\/\\\\]$/.test(prefix)\n if (prefix.charAt(0) === '/') {\n prefix = path.join(this.root, prefix)\n } else {\n prefix = path.resolve(this.root, prefix)\n if (trail)\n prefix += '/'\n }\n }\n\n if (process.platform === 'win32')\n prefix = prefix.replace(/\\\\/g, '/')\n\n // Mark this as a match\n this._emitMatch(index, prefix)\n cb()\n}\n\n// Returns either 'DIR', 'FILE', or false\nGlob.prototype._stat = function (f, cb) {\n var abs = this._makeAbs(f)\n var needDir = f.slice(-1) === '/'\n\n if (f.length > this.maxLength)\n return cb()\n\n if (!this.stat && ownProp(this.cache, abs)) {\n var c = this.cache[abs]\n\n if (Array.isArray(c))\n c = 'DIR'\n\n // It exists, but maybe not how we need it\n if (!needDir || c === 'DIR')\n return cb(null, c)\n\n if (needDir && c === 'FILE')\n return cb()\n\n // otherwise we have to stat, because maybe c=true\n // if we know it exists, but not what it is.\n }\n\n var exists\n var stat = this.statCache[abs]\n if (stat !== undefined) {\n if (stat === false)\n return cb(null, stat)\n else {\n var type = stat.isDirectory() ? 'DIR' : 'FILE'\n if (needDir && type === 'FILE')\n return cb()\n else\n return cb(null, type, stat)\n }\n }\n\n var self = this\n var statcb = inflight('stat\\0' + abs, lstatcb_)\n if (statcb)\n self.fs.lstat(abs, statcb)\n\n function lstatcb_ (er, lstat) {\n if (lstat && lstat.isSymbolicLink()) {\n // If it's a symlink, then treat it as the target, unless\n // the target does not exist, then treat it as a file.\n return self.fs.stat(abs, function (er, stat) {\n if (er)\n self._stat2(f, abs, null, lstat, cb)\n else\n self._stat2(f, abs, er, stat, cb)\n })\n } else {\n self._stat2(f, abs, er, lstat, cb)\n }\n }\n}\n\nGlob.prototype._stat2 = function (f, abs, er, stat, cb) {\n if (er && (er.code === 'ENOENT' || er.code === 'ENOTDIR')) {\n this.statCache[abs] = false\n return cb()\n }\n\n var needDir = f.slice(-1) === '/'\n this.statCache[abs] = stat\n\n if (abs.slice(-1) === '/' && stat && !stat.isDirectory())\n return cb(null, false, stat)\n\n var c = true\n if (stat)\n c = stat.isDirectory() ? 'DIR' : 'FILE'\n this.cache[abs] = this.cache[abs] || c\n\n if (needDir && c === 'FILE')\n return cb()\n\n return cb(null, c, stat)\n}\n","const assert = require(\"assert\")\nconst path = require(\"path\")\nconst fs = require(\"fs\")\nlet glob = undefined\ntry {\n glob = require(\"glob\")\n} catch (_err) {\n // treat glob as optional.\n}\n\nconst defaultGlobOpts = {\n nosort: true,\n silent: true\n}\n\n// for EMFILE handling\nlet timeout = 0\n\nconst isWindows = (process.platform === \"win32\")\n\nconst defaults = options => {\n const methods = [\n 'unlink',\n 'chmod',\n 'stat',\n 'lstat',\n 'rmdir',\n 'readdir'\n ]\n methods.forEach(m => {\n options[m] = options[m] || fs[m]\n m = m + 'Sync'\n options[m] = options[m] || fs[m]\n })\n\n options.maxBusyTries = options.maxBusyTries || 3\n options.emfileWait = options.emfileWait || 1000\n if (options.glob === false) {\n options.disableGlob = true\n }\n if (options.disableGlob !== true && glob === undefined) {\n throw Error('glob dependency not found, set `options.disableGlob = true` if intentional')\n }\n options.disableGlob = options.disableGlob || false\n options.glob = options.glob || defaultGlobOpts\n}\n\nconst rimraf = (p, options, cb) => {\n if (typeof options === 'function') {\n cb = options\n options = {}\n }\n\n assert(p, 'rimraf: missing path')\n assert.equal(typeof p, 'string', 'rimraf: path should be a string')\n assert.equal(typeof cb, 'function', 'rimraf: callback function required')\n assert(options, 'rimraf: invalid options argument provided')\n assert.equal(typeof options, 'object', 'rimraf: options should be object')\n\n defaults(options)\n\n let busyTries = 0\n let errState = null\n let n = 0\n\n const next = (er) => {\n errState = errState || er\n if (--n === 0)\n cb(errState)\n }\n\n const afterGlob = (er, results) => {\n if (er)\n return cb(er)\n\n n = results.length\n if (n === 0)\n return cb()\n\n results.forEach(p => {\n const CB = (er) => {\n if (er) {\n if ((er.code === \"EBUSY\" || er.code === \"ENOTEMPTY\" || er.code === \"EPERM\") &&\n busyTries < options.maxBusyTries) {\n busyTries ++\n // try again, with the same exact callback as this one.\n return setTimeout(() => rimraf_(p, options, CB), busyTries * 100)\n }\n\n // this one won't happen if graceful-fs is used.\n if (er.code === \"EMFILE\" && timeout < options.emfileWait) {\n return setTimeout(() => rimraf_(p, options, CB), timeout ++)\n }\n\n // already gone\n if (er.code === \"ENOENT\") er = null\n }\n\n timeout = 0\n next(er)\n }\n rimraf_(p, options, CB)\n })\n }\n\n if (options.disableGlob || !glob.hasMagic(p))\n return afterGlob(null, [p])\n\n options.lstat(p, (er, stat) => {\n if (!er)\n return afterGlob(null, [p])\n\n glob(p, options.glob, afterGlob)\n })\n\n}\n\n// Two possible strategies.\n// 1. Assume it's a file. unlink it, then do the dir stuff on EPERM or EISDIR\n// 2. Assume it's a directory. readdir, then do the file stuff on ENOTDIR\n//\n// Both result in an extra syscall when you guess wrong. However, there\n// are likely far more normal files in the world than directories. This\n// is based on the assumption that a the average number of files per\n// directory is >= 1.\n//\n// If anyone ever complains about this, then I guess the strategy could\n// be made configurable somehow. But until then, YAGNI.\nconst rimraf_ = (p, options, cb) => {\n assert(p)\n assert(options)\n assert(typeof cb === 'function')\n\n // sunos lets the root user unlink directories, which is... weird.\n // so we have to lstat here and make sure it's not a dir.\n options.lstat(p, (er, st) => {\n if (er && er.code === \"ENOENT\")\n return cb(null)\n\n // Windows can EPERM on stat. Life is suffering.\n if (er && er.code === \"EPERM\" && isWindows)\n fixWinEPERM(p, options, er, cb)\n\n if (st && st.isDirectory())\n return rmdir(p, options, er, cb)\n\n options.unlink(p, er => {\n if (er) {\n if (er.code === \"ENOENT\")\n return cb(null)\n if (er.code === \"EPERM\")\n return (isWindows)\n ? fixWinEPERM(p, options, er, cb)\n : rmdir(p, options, er, cb)\n if (er.code === \"EISDIR\")\n return rmdir(p, options, er, cb)\n }\n return cb(er)\n })\n })\n}\n\nconst fixWinEPERM = (p, options, er, cb) => {\n assert(p)\n assert(options)\n assert(typeof cb === 'function')\n\n options.chmod(p, 0o666, er2 => {\n if (er2)\n cb(er2.code === \"ENOENT\" ? null : er)\n else\n options.stat(p, (er3, stats) => {\n if (er3)\n cb(er3.code === \"ENOENT\" ? null : er)\n else if (stats.isDirectory())\n rmdir(p, options, er, cb)\n else\n options.unlink(p, cb)\n })\n })\n}\n\nconst fixWinEPERMSync = (p, options, er) => {\n assert(p)\n assert(options)\n\n try {\n options.chmodSync(p, 0o666)\n } catch (er2) {\n if (er2.code === \"ENOENT\")\n return\n else\n throw er\n }\n\n let stats\n try {\n stats = options.statSync(p)\n } catch (er3) {\n if (er3.code === \"ENOENT\")\n return\n else\n throw er\n }\n\n if (stats.isDirectory())\n rmdirSync(p, options, er)\n else\n options.unlinkSync(p)\n}\n\nconst rmdir = (p, options, originalEr, cb) => {\n assert(p)\n assert(options)\n assert(typeof cb === 'function')\n\n // try to rmdir first, and only readdir on ENOTEMPTY or EEXIST (SunOS)\n // if we guessed wrong, and it's not a directory, then\n // raise the original error.\n options.rmdir(p, er => {\n if (er && (er.code === \"ENOTEMPTY\" || er.code === \"EEXIST\" || er.code === \"EPERM\"))\n rmkids(p, options, cb)\n else if (er && er.code === \"ENOTDIR\")\n cb(originalEr)\n else\n cb(er)\n })\n}\n\nconst rmkids = (p, options, cb) => {\n assert(p)\n assert(options)\n assert(typeof cb === 'function')\n\n options.readdir(p, (er, files) => {\n if (er)\n return cb(er)\n let n = files.length\n if (n === 0)\n return options.rmdir(p, cb)\n let errState\n files.forEach(f => {\n rimraf(path.join(p, f), options, er => {\n if (errState)\n return\n if (er)\n return cb(errState = er)\n if (--n === 0)\n options.rmdir(p, cb)\n })\n })\n })\n}\n\n// this looks simpler, and is strictly *faster*, but will\n// tie up the JavaScript thread and fail on excessively\n// deep directory trees.\nconst rimrafSync = (p, options) => {\n options = options || {}\n defaults(options)\n\n assert(p, 'rimraf: missing path')\n assert.equal(typeof p, 'string', 'rimraf: path should be a string')\n assert(options, 'rimraf: missing options')\n assert.equal(typeof options, 'object', 'rimraf: options should be object')\n\n let results\n\n if (options.disableGlob || !glob.hasMagic(p)) {\n results = [p]\n } else {\n try {\n options.lstatSync(p)\n results = [p]\n } catch (er) {\n results = glob.sync(p, options.glob)\n }\n }\n\n if (!results.length)\n return\n\n for (let i = 0; i < results.length; i++) {\n const p = results[i]\n\n let st\n try {\n st = options.lstatSync(p)\n } catch (er) {\n if (er.code === \"ENOENT\")\n return\n\n // Windows can EPERM on stat. Life is suffering.\n if (er.code === \"EPERM\" && isWindows)\n fixWinEPERMSync(p, options, er)\n }\n\n try {\n // sunos lets the root user unlink directories, which is... weird.\n if (st && st.isDirectory())\n rmdirSync(p, options, null)\n else\n options.unlinkSync(p)\n } catch (er) {\n if (er.code === \"ENOENT\")\n return\n if (er.code === \"EPERM\")\n return isWindows ? fixWinEPERMSync(p, options, er) : rmdirSync(p, options, er)\n if (er.code !== \"EISDIR\")\n throw er\n\n rmdirSync(p, options, er)\n }\n }\n}\n\nconst rmdirSync = (p, options, originalEr) => {\n assert(p)\n assert(options)\n\n try {\n options.rmdirSync(p)\n } catch (er) {\n if (er.code === \"ENOENT\")\n return\n if (er.code === \"ENOTDIR\")\n throw originalEr\n if (er.code === \"ENOTEMPTY\" || er.code === \"EEXIST\" || er.code === \"EPERM\")\n rmkidsSync(p, options)\n }\n}\n\nconst rmkidsSync = (p, options) => {\n assert(p)\n assert(options)\n options.readdirSync(p).forEach(f => rimrafSync(path.join(p, f), options))\n\n // We only end up here once we got ENOTEMPTY at least once, and\n // at this point, we are guaranteed to have removed all the kids.\n // So, we know that it won't be ENOENT or ENOTDIR or anything else.\n // try really hard to delete stuff on windows, because it has a\n // PROFOUNDLY annoying habit of not closing handles promptly when\n // files are deleted, resulting in spurious ENOTEMPTY errors.\n const retries = isWindows ? 100 : 1\n let i = 0\n do {\n let threw = true\n try {\n const ret = options.rmdirSync(p, options)\n threw = false\n return ret\n } finally {\n if (++i < retries && threw)\n continue\n }\n } while (true)\n}\n\nmodule.exports = rimraf\nrimraf.sync = rimrafSync\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = rng;\n\nvar _crypto = _interopRequireDefault(require(\"crypto\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate\n\nlet poolPtr = rnds8Pool.length;\n\nfunction rng() {\n if (poolPtr > rnds8Pool.length - 16) {\n _crypto.default.randomFillSync(rnds8Pool);\n\n poolPtr = 0;\n }\n\n return rnds8Pool.slice(poolPtr, poolPtr += 16);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _regex = _interopRequireDefault(require(\"./regex.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && _regex.default.test(uuid);\n}\n\nvar _default = validate;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nexports.unsafeStringify = unsafeStringify;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nfunction unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase();\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nvar _default = stringify;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _stringify = require(\"./stringify.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\nlet _nodeId;\n\nlet _clockseq; // Previous uuid creation time\n\n\nlet _lastMSecs = 0;\nlet _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details\n\nfunction v1(options, buf, offset) {\n let i = buf && offset || 0;\n const b = buf || new Array(16);\n options = options || {};\n let node = options.node || _nodeId;\n let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n\n if (node == null || clockseq == null) {\n const seedBytes = options.random || (options.rng || _rng.default)();\n\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];\n }\n\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n } // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n\n\n let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n\n let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)\n\n const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression\n\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n\n\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n } // Per 4.2.1.2 Throw error if too many uuids are requested\n\n\n if (nsecs >= 10000) {\n throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\");\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n\n msecs += 12219292800000; // `time_low`\n\n const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff; // `time_mid`\n\n const tmh = msecs / 0x100000000 * 10000 & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff; // `time_high_and_version`\n\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n\n b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n\n b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`\n\n b[i++] = clockseq & 0xff; // `node`\n\n for (let n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf || (0, _stringify.unsafeStringify)(b);\n}\n\nvar _default = v1;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction parse(uuid) {\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n let v;\n const arr = new Uint8Array(16); // Parse ########-....-....-....-............\n\n arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;\n arr[1] = v >>> 16 & 0xff;\n arr[2] = v >>> 8 & 0xff;\n arr[3] = v & 0xff; // Parse ........-####-....-....-............\n\n arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;\n arr[5] = v & 0xff; // Parse ........-....-####-....-............\n\n arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;\n arr[7] = v & 0xff; // Parse ........-....-....-####-............\n\n arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;\n arr[9] = v & 0xff; // Parse ........-....-....-....-############\n // (Use \"/\" to avoid 32-bit truncation when bit-shifting high-order bytes)\n\n arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;\n arr[11] = v / 0x100000000 & 0xff;\n arr[12] = v >>> 24 & 0xff;\n arr[13] = v >>> 16 & 0xff;\n arr[14] = v >>> 8 & 0xff;\n arr[15] = v & 0xff;\n return arr;\n}\n\nvar _default = parse;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.URL = exports.DNS = void 0;\nexports.default = v35;\n\nvar _stringify = require(\"./stringify.js\");\n\nvar _parse = _interopRequireDefault(require(\"./parse.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction stringToBytes(str) {\n str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n const bytes = [];\n\n for (let i = 0; i < str.length; ++i) {\n bytes.push(str.charCodeAt(i));\n }\n\n return bytes;\n}\n\nconst DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexports.DNS = DNS;\nconst URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexports.URL = URL;\n\nfunction v35(name, version, hashfunc) {\n function generateUUID(value, namespace, buf, offset) {\n var _namespace;\n\n if (typeof value === 'string') {\n value = stringToBytes(value);\n }\n\n if (typeof namespace === 'string') {\n namespace = (0, _parse.default)(namespace);\n }\n\n if (((_namespace = namespace) === null || _namespace === void 0 ? void 0 : _namespace.length) !== 16) {\n throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n } // Compute hash of namespace and value, Per 4.3\n // Future: Use spread syntax when supported on all platforms, e.g. `bytes =\n // hashfunc([...namespace, ... value])`\n\n\n let bytes = new Uint8Array(16 + value.length);\n bytes.set(namespace);\n bytes.set(value, namespace.length);\n bytes = hashfunc(bytes);\n bytes[6] = bytes[6] & 0x0f | version;\n bytes[8] = bytes[8] & 0x3f | 0x80;\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = bytes[i];\n }\n\n return buf;\n }\n\n return (0, _stringify.unsafeStringify)(bytes);\n } // Function#name is not settable on some platforms (#270)\n\n\n try {\n generateUUID.name = name; // eslint-disable-next-line no-empty\n } catch (err) {} // For CommonJS default export support\n\n\n generateUUID.DNS = DNS;\n generateUUID.URL = URL;\n return generateUUID;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _crypto = _interopRequireDefault(require(\"crypto\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction md5(bytes) {\n if (Array.isArray(bytes)) {\n bytes = Buffer.from(bytes);\n } else if (typeof bytes === 'string') {\n bytes = Buffer.from(bytes, 'utf8');\n }\n\n return _crypto.default.createHash('md5').update(bytes).digest();\n}\n\nvar _default = md5;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _md = _interopRequireDefault(require(\"./md5.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v3 = (0, _v.default)('v3', 0x30, _md.default);\nvar _default = v3;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _crypto = _interopRequireDefault(require(\"crypto\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _default = {\n randomUUID: _crypto.default.randomUUID\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _native = _interopRequireDefault(require(\"./native.js\"));\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _stringify = require(\"./stringify.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction v4(options, buf, offset) {\n if (_native.default.randomUUID && !buf && !options) {\n return _native.default.randomUUID();\n }\n\n options = options || {};\n\n const rnds = options.random || (options.rng || _rng.default)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return (0, _stringify.unsafeStringify)(rnds);\n}\n\nvar _default = v4;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _crypto = _interopRequireDefault(require(\"crypto\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction sha1(bytes) {\n if (Array.isArray(bytes)) {\n bytes = Buffer.from(bytes);\n } else if (typeof bytes === 'string') {\n bytes = Buffer.from(bytes, 'utf8');\n }\n\n return _crypto.default.createHash('sha1').update(bytes).digest();\n}\n\nvar _default = sha1;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _sha = _interopRequireDefault(require(\"./sha1.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v5 = (0, _v.default)('v5', 0x50, _sha.default);\nvar _default = v5;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = '00000000-0000-0000-0000-000000000000';\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction version(uuid) {\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n return parseInt(uuid.slice(14, 15), 16);\n}\n\nvar _default = version;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"NIL\", {\n enumerable: true,\n get: function () {\n return _nil.default;\n }\n});\nObject.defineProperty(exports, \"parse\", {\n enumerable: true,\n get: function () {\n return _parse.default;\n }\n});\nObject.defineProperty(exports, \"stringify\", {\n enumerable: true,\n get: function () {\n return _stringify.default;\n }\n});\nObject.defineProperty(exports, \"v1\", {\n enumerable: true,\n get: function () {\n return _v.default;\n }\n});\nObject.defineProperty(exports, \"v3\", {\n enumerable: true,\n get: function () {\n return _v2.default;\n }\n});\nObject.defineProperty(exports, \"v4\", {\n enumerable: true,\n get: function () {\n return _v3.default;\n }\n});\nObject.defineProperty(exports, \"v5\", {\n enumerable: true,\n get: function () {\n return _v4.default;\n }\n});\nObject.defineProperty(exports, \"validate\", {\n enumerable: true,\n get: function () {\n return _validate.default;\n }\n});\nObject.defineProperty(exports, \"version\", {\n enumerable: true,\n get: function () {\n return _version.default;\n }\n});\n\nvar _v = _interopRequireDefault(require(\"./v1.js\"));\n\nvar _v2 = _interopRequireDefault(require(\"./v3.js\"));\n\nvar _v3 = _interopRequireDefault(require(\"./v4.js\"));\n\nvar _v4 = _interopRequireDefault(require(\"./v5.js\"));\n\nvar _nil = _interopRequireDefault(require(\"./nil.js\"));\n\nvar _version = _interopRequireDefault(require(\"./version.js\"));\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nvar _stringify = _interopRequireDefault(require(\"./stringify.js\"));\n\nvar _parse = _interopRequireDefault(require(\"./parse.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","'use strict';\n\nconst FS = require('fs');\nconst PATH = require('path');\nconst constants = {\n DIRECTORY: 'directory',\n FILE: 'file'\n}\n\nfunction safeReadDirSync (path) {\n let dirData = {};\n try {\n dirData = FS.readdirSync(path);\n } catch(ex) {\n if (ex.code == \"EACCES\" || ex.code == \"EPERM\") {\n //User does not have permissions, ignore directory\n return null;\n }\n else throw ex;\n }\n return dirData;\n}\n\n/**\n * Normalizes windows style paths by replacing double backslahes with single forward slahes (unix style).\n * @param {string} path\n * @return {string}\n */\nfunction normalizePath(path) {\n return path.replace(/\\\\/g, '/');\n}\n\n/**\n * Tests if the supplied parameter is of type RegExp\n * @param {any} regExp\n * @return {Boolean}\n */\nfunction isRegExp(regExp) {\n return typeof regExp === \"object\" && regExp.constructor == RegExp;\n}\n\n/**\n * Collects the files and folders for a directory path into an Object, subject\n * to the options supplied, and invoking optional\n * @param {String} path\n * @param {Object} options\n * @param {function} onEachFile\n * @param {function} onEachDirectory\n * @return {Object}\n */\nfunction directoryTree (path, options, onEachFile, onEachDirectory, currentDepth = 0) {\n options = options || {};\n\n if (options.depth !== undefined && options.attributes && options.attributes.indexOf('size') !== -1) {\n throw new Error('usage of size attribute with depth option is prohibited');\n }\n\n const name = PATH.basename(path);\n path = options.normalizePath ? normalizePath(path) : path;\n const item = { path, name };\n let stats;\n let lstat;\n\n try {\n stats = FS.statSync(path);\n lstat = FS.lstatSync(path);\n }\n catch (e) { return null }\n\n // Skip if it matches the exclude regex\n if (options.exclude) {\n const excludes = isRegExp(options.exclude) ? [options.exclude] : options.exclude;\n if (excludes.some((exclusion) => exclusion.test(path))) {\n return null;\n }\n }\n\n if (lstat.isSymbolicLink()) {\n item.isSymbolicLink = true;\n // Skip if symbolic links should not be followed\n if (options.followSymlinks === false)\n return null;\n // Initialize the symbolic links array to avoid infinite loops\n if (!options.symlinks)\n options = { ...options, symlinks: [] };\n // Skip if a cyclic symbolic link has been found\n if (options.symlinks.find(ino => ino === lstat.ino)) {\n return null;\n } else {\n options.symlinks.push(lstat.ino);\n }\n }\n\n if (stats.isFile()) {\n\n const ext = PATH.extname(path).toLowerCase();\n\n // Skip if it does not match the extension regex\n if (options.extensions && !options.extensions.test(ext))\n return null;\n\n\n if (options.attributes) {\n options.attributes.forEach((attribute) => {\n switch (attribute) {\n case 'extension':\n item.extension = ext;\n break;\n case 'type':\n item.type = constants.FILE;\n break;\n default:\n item[attribute] = stats[attribute];\n break;\n }\n });\n }\n\n if (onEachFile) {\n onEachFile(item, path, stats);\n }\n }\n else if (stats.isDirectory()) {\n let dirData = safeReadDirSync(path);\n if (dirData === null) return null;\n\n if (options.depth === undefined || options.depth > currentDepth) {\n item.children = dirData\n .map(child => directoryTree(PATH.join(path, child), options, onEachFile, onEachDirectory, currentDepth + 1))\n .filter(e => !!e);\n }\n\n if (options.attributes) {\n options.attributes.forEach((attribute) => {\n switch (attribute) {\n case 'size':\n item.size = item.children.reduce((prev, cur) => prev + cur.size, 0);\n break;\n case 'type':\n item.type = constants.DIRECTORY;\n break;\n case 'extension':\n break;\n default:\n item[attribute] = stats[attribute];\n break;\n }\n \n });\n }\n\n if (onEachDirectory) {\n onEachDirectory(item, path, stats);\n }\n } else {\n return null; // Or set item.size = 0 for devices, FIFO and sockets ?\n }\n return item;\n}\n\nmodule.exports = directoryTree;\n","import pathParser from 'path'\n\nimport { createPluginCache } from './utils'\n\nimport type { FileManager, EmittedFile, File } from './managers/fileManager'\nimport type { PluginContext, KubbPlugin, PluginFactoryOptions } from './types'\n\ntype KubbPluginFactory<T extends PluginFactoryOptions = PluginFactoryOptions> = (\n options: T['options']\n) => T['nested'] extends true ? Array<KubbPlugin<T>> : KubbPlugin<T>\n\nexport function createPlugin<T extends PluginFactoryOptions = PluginFactoryOptions>(factory: KubbPluginFactory<T>) {\n return (options: T['options']) => {\n const plugin = factory(options)\n if (Array.isArray(plugin)) {\n throw new Error('Not implemented')\n }\n\n // default transform\n if (!plugin.transform) {\n plugin.transform = function transform(code) {\n return code\n }\n }\n\n return plugin\n }\n}\n\ntype Options = {\n config: PluginContext['config']\n fileManager: FileManager\n resolveId: PluginContext['resolveId']\n load: PluginContext['load']\n}\n\n// not publicly exported\nexport type CorePluginOptions = PluginFactoryOptions<Options, false, PluginContext>\n\nexport const name = 'core' as const\n\nconst isEmittedFile = (result: EmittedFile | File): result is EmittedFile => {\n return !!(result as any).id\n}\n\nexport const definePlugin = createPlugin<CorePluginOptions>((options) => {\n const { fileManager, resolveId, load } = options\n const indexFiles: File[] = []\n\n const api: PluginContext = {\n get config() {\n return options.config\n },\n fileManager,\n async addFile(file, options) {\n if (isEmittedFile(file)) {\n const resolvedId = await resolveId({ fileName: file.id, directory: file.importer, options: file.options })\n const path = resolvedId || file.importer || file.id\n\n return fileManager.add({\n path,\n fileName: file.name || file.id,\n source: file.source || '',\n })\n }\n\n if (options?.root) {\n indexFiles.push(file)\n }\n\n return fileManager.addOrAppend(file)\n },\n resolveId,\n load,\n cache: createPluginCache(Object.create(null)),\n }\n\n return {\n name,\n api,\n resolveId(fileName, directory) {\n if (!directory) {\n return null\n }\n return pathParser.resolve(directory, fileName)\n },\n }\n})\n","import type { MaybePromise } from '../types'\n\nexport const isPromise = <T>(result: MaybePromise<T>): result is Promise<T> => {\n return typeof (result as any)?.then === 'function'\n}\n","/* eslint-disable consistent-return */\nimport { promises as fs } from 'fs'\nimport pathParser from 'path'\n\nimport rimraf from 'rimraf'\n\n\nconst safeWriteFileToPath = async (path: string, data: any) => {\n // resolve the full path and get just the directory, ignoring the file and extension\n const passedPath = pathParser.dirname(pathParser.resolve(path))\n // make the directory, recursively. Theoretically, if every directory in the path exists, this won't do anything.\n await fs.mkdir(passedPath, { recursive: true })\n // write the file to the newly created directory\n return fs.writeFile(pathParser.resolve(path), data, { encoding: 'utf-8' })\n}\n\nexport const write = async (data: string, path: string) => {\n \n\n try {\n await fs.stat(path)\n const oldContent = await fs.readFile(path, { encoding: 'utf-8' })\n if (oldContent?.toString() === data) {\n return\n }\n } catch (_err) {\n return safeWriteFileToPath(path, data)\n }\n\n return safeWriteFileToPath(path, data)\n}\n\nexport const clean = async (path: string) => {\n return new Promise((resolve, reject) => {\n rimraf(path, (err) => {\n if (err) {\n reject(err)\n } else {\n resolve(true)\n }\n })\n })\n}\n","/* eslint-disable no-param-reassign */\n/* eslint-disable consistent-return */\n\nexport interface Cache<TCache = any> {\n delete(id: string): boolean\n get<T = TCache>(id: string): T\n has(id: string): boolean\n set<T = TCache>(id: string, value: T): void\n}\n\nexport function createPluginCache(cache: any): Cache {\n return {\n delete(id: string) {\n return delete cache[id]\n },\n get(id: string) {\n const item = cache[id]\n if (!item) return\n item[0] = 0\n return item[1]\n },\n has(id: string) {\n const item = cache[id]\n if (!item) return false\n item[0] = 0\n return true\n },\n set(id: string, value: any) {\n cache[id] = [0, value]\n },\n }\n}\n","import pathParser from 'path'\nimport { promises as fs } from 'fs'\n\n// TODO check for a better way or resolving the relative path\nexport const getRelativePath = (root?: string | null, file?: string | null) => {\n if (!root || !file) {\n throw new Error('Root and file should be filled in when retrieving the relativePath')\n }\n const newPath = pathParser.relative(root, file).replace('../', '').replace('.ts', '').trimEnd()\n\n return `./${newPath}`\n}\n\nexport type PathMode = 'file' | 'directory'\n\nexport const getPathMode = (path: string | undefined | null): PathMode | undefined => {\n if (!path) {\n return undefined\n }\n return pathParser.extname(path) ? 'file' : 'directory'\n}\n\nexport const read = async (path: string) => {\n try {\n return fs.readFile(path)\n } catch (err) {\n console.error(err)\n throw err\n }\n}\n","import EventEmitter from './index.js'\n\nexport { EventEmitter }\nexport default EventEmitter\n","import uuid from './dist/index.js';\nexport const v1 = uuid.v1;\nexport const v3 = uuid.v3;\nexport const v4 = uuid.v4;\nexport const v5 = uuid.v5;\nexport const NIL = uuid.NIL;\nexport const version = uuid.version;\nexport const validate = uuid.validate;\nexport const stringify = uuid.stringify;\nexport const parse = uuid.parse;\n","import type EventEmitter from 'eventemitter3'\nimport type { File, Status, UUID } from './types'\n\nconst keys = {\n getFileKey: () => `file`,\n getStatusChangeKey: () => `status-change`,\n getStatusChangeByIdKey: (id: string) => `${id}-status-change`,\n getSuccessKey: () => `success`,\n getRemoveKey: (id: string) => `${id}remove`,\n} as const\n\ntype VoidFunction = () => void\n\nexport const getFileManagerEvents = (emitter: EventEmitter) => {\n return {\n /**\n * Emiter\n */\n emitFile: (id: UUID, file: File): void => {\n emitter.emit(keys.getFileKey(), id, file)\n },\n emitStatusChange: (file: File): void => {\n emitter.emit(keys.getStatusChangeKey(), file)\n },\n emitStatusChangeById: (id: UUID, status: Status): void => {\n emitter.emit(keys.getStatusChangeByIdKey(id), status)\n },\n emitSuccess: (): void => {\n emitter.emit(keys.getSuccessKey())\n },\n emitRemove: (id: UUID, file: File): void => {\n emitter.emit(keys.getRemoveKey(id), file)\n },\n /**\n * Listeners\n */\n\n onAdd: (callback: (id: UUID, file: File) => void): VoidFunction => {\n emitter.on(keys.getFileKey(), callback)\n return () => emitter.removeListener(keys.getFileKey(), callback)\n },\n onStatusChange: (callback: (file: File) => void): VoidFunction => {\n emitter.on(keys.getStatusChangeKey(), callback)\n return () => emitter.removeListener(keys.getStatusChangeKey(), callback)\n },\n onStatusChangeById: (id: UUID, callback: (status: Status) => void): VoidFunction => {\n emitter.on(keys.getStatusChangeByIdKey(id), callback)\n return () => emitter.removeListener(keys.getStatusChangeByIdKey(id), callback)\n },\n onSuccess: (callback: () => void): VoidFunction => {\n emitter.on(keys.getSuccessKey(), callback)\n return () => emitter.removeListener(keys.getSuccessKey(), callback)\n },\n onRemove: (id: UUID, callback: (file: File) => void): VoidFunction => {\n emitter.on(keys.getRemoveKey(id), callback)\n return () => emitter.removeListener(keys.getRemoveKey(id), callback)\n },\n }\n}\n","import EventEmitter from 'eventemitter3'\nimport { v4 as uuidv4 } from 'uuid'\n\nimport { getFileManagerEvents } from './events'\n\nimport { write, read } from '../../utils'\n\nimport type { CacheStore, UUID, Status, File } from './types'\n\nexport class FileManager {\n private cache: Map<CacheStore['id'], CacheStore> = new Map()\n\n emitter = new EventEmitter()\n\n events = getFileManagerEvents(this.emitter)\n\n constructor() {\n this.events.onStatusChange(() => {\n if (this.getCountByStatus('removed') === this.cache.size) {\n // all files are been resolved and written to the file system\n this.events.emitSuccess()\n }\n })\n }\n\n private getCache(id: UUID) {\n return this.cache.get(id)\n }\n\n private getCacheByPath(path: string | undefined): CacheStore | undefined {\n let cache\n\n this.cache.forEach((item) => {\n if (item.file.path === path) {\n cache = item\n }\n })\n return cache as CacheStore\n }\n\n private getCountByStatus(status: Status) {\n let count = 0\n\n this.cache.forEach((item) => {\n if (item.status === status) {\n count++\n }\n })\n return count\n }\n\n get files() {\n const files: File[] = []\n this.cache.forEach((item) => {\n files.push(item.file)\n })\n\n return files\n }\n\n add(file: File) {\n const cacheItem = { id: uuidv4(), file, status: 'new' as Status }\n\n this.cache.set(cacheItem.id, cacheItem)\n this.events.emitFile(cacheItem.id, file)\n\n return new Promise<File>((resolve) => {\n const unsubscribe = this.events.onRemove(cacheItem.id, (file) => {\n resolve(file)\n unsubscribe()\n })\n })\n }\n\n addOrAppend(file: File) {\n const previousCache = this.getCacheByPath(file.path)\n\n if (previousCache) {\n this.remove(previousCache.id)\n return this.add({\n ...file,\n source: `${previousCache.file.source}\\n${file.source}`,\n })\n }\n return this.add(file)\n }\n\n setStatus(id: UUID, status: Status) {\n const cacheItem = this.getCache(id)\n if (!cacheItem) {\n return\n }\n\n cacheItem.status = status\n this.cache.set(id, cacheItem)\n this.events.emitStatusChange(cacheItem.file)\n this.events.emitStatusChangeById(id, status)\n }\n\n get(id: UUID) {\n const cacheItem = this.getCache(id)\n return cacheItem?.file\n }\n\n remove(id: UUID) {\n const cacheItem = this.getCache(id)\n if (!cacheItem) {\n return\n }\n\n this.setStatus(id, 'removed')\n this.events.emitRemove(id, cacheItem.file)\n }\n\n async write(...params: Parameters<typeof write>) {\n return write(...params)\n }\n\n async read(...params: Parameters<typeof read>) {\n return read(...params)\n }\n}\n","import dirTree from 'directory-tree'\n\nimport type { DirectoryTree, DirectoryTreeOptions } from 'directory-tree'\n\nexport class TreeNode<T = unknown> {\n public data: T\n\n public parent?: TreeNode<T>\n\n public children: Array<TreeNode<T>>\n\n constructor(data: T, parent?: TreeNode<T>) {\n this.data = data\n this.parent = parent\n return this\n }\n\n addChild(data: T) {\n const child = new TreeNode(data, this)\n if (!this.children) {\n this.children = []\n }\n this.children.push(child)\n return child\n }\n\n find(data: T) {\n if (data === this.data) {\n return this\n }\n\n if (this.children) {\n for (let i = 0, { length } = this.children, target: any = null; i < length; i++) {\n target = this.children[i].find(data)\n if (target) {\n return target\n }\n }\n }\n\n return null\n }\n\n leaves() {\n if (!this.children || this.children.length === 0) {\n // this is a leaf\n return [this]\n }\n\n // if not a leaf, return all children's leaves recursively\n const leaves = []\n if (this.children) {\n for (let i = 0, { length } = this.children; i < length; i++) {\n // eslint-disable-next-line prefer-spread\n leaves.push.apply(leaves, this.children[i].leaves())\n }\n }\n return leaves\n }\n\n root() {\n if (!this.parent) {\n return this\n }\n return this.parent.root()\n }\n\n forEach(callback: (treeNode: TreeNode<T>) => void) {\n if (typeof callback !== 'function') {\n throw new TypeError('forEach() callback must be a function')\n }\n\n // run this node through function\n callback(this)\n\n // do the same for all children\n if (this.children) {\n for (let i = 0, { length } = this.children; i < length; i++) {\n this.children[i].forEach(callback)\n }\n }\n\n return this\n }\n\n public static build(path: string, options: DirectoryTreeOptions = {}) {\n const filteredTree = dirTree(path, { extensions: options?.extensions, exclude: options.exclude })\n\n if (!filteredTree) {\n return\n }\n\n const treeNode = new TreeNode({ name: filteredTree.name, path: filteredTree.path, type: filteredTree.type })\n\n const recurse = (node: typeof treeNode, item: DirectoryTree) => {\n const subNode = node.addChild({ name: item.name, path: item.path, type: item.type })\n\n if (item.children?.length) {\n item.children?.forEach((child) => {\n recurse(subNode, child)\n })\n }\n }\n\n filteredTree.children?.forEach((child) => recurse(treeNode, child))\n\n return treeNode\n }\n}\n","/* eslint-disable no-await-in-loop */\n/* eslint-disable no-restricted-syntax */\n\nimport { definePlugin } from '../../plugin'\nimport { FileManager } from '../fileManager'\n\nimport type { Argument0, Strategy } from './types'\nimport type { KubbConfig, KubbPlugin, PluginLifecycleHooks, PluginLifecycle, MaybePromise, ResolveIdParams } from '../../types'\nimport type { Logger } from '../../build'\nimport type { CorePluginOptions } from '../../plugin'\n\n// inspired by: https://github.com/rollup/rollup/blob/master/src/utils/PluginDriver.ts#\n\n// This will make sure no input hook is omitted\nconst hookNames: {\n [P in PluginLifecycleHooks]: 1\n} = {\n validate: 1,\n buildStart: 1,\n resolveId: 1,\n load: 1,\n transform: 1,\n writeFile: 1,\n buildEnd: 1,\n}\nexport const hooks = Object.keys(hookNames) as [PluginLifecycleHooks]\n\nexport class PluginManager {\n public plugins: KubbPlugin[]\n\n public readonly fileManager: FileManager\n\n private readonly logger?: Logger\n\n private readonly config: KubbConfig\n\n public readonly core: KubbPlugin<CorePluginOptions>\n\n constructor(config: KubbConfig, options: { logger?: Logger }) {\n this.logger = options.logger\n this.config = config\n\n this.fileManager = new FileManager()\n this.core = definePlugin({\n config,\n fileManager: this.fileManager,\n load: this.load,\n resolveId: this.resolveId,\n }) as KubbPlugin<CorePluginOptions> & {\n api: CorePluginOptions['api']\n }\n this.plugins = [this.core, ...(config.plugins || [])]\n }\n\n resolveId = (params: ResolveIdParams) => {\n if (params.pluginName) {\n return this.hookForPlugin(params.pluginName, 'resolveId', [params.fileName, params.directory, params.options])\n }\n return this.hookFirst('resolveId', [params.fileName, params.directory, params.options])\n }\n\n load = async (id: string) => {\n return this.hookFirst('load', [id])\n }\n\n // run only hook for a specific plugin name\n hookForPlugin<H extends PluginLifecycleHooks>(\n pluginName: string,\n hookName: H,\n parameters: Parameters<PluginLifecycle[H]>,\n skipped?: ReadonlySet<KubbPlugin> | null\n ): Promise<ReturnType<PluginLifecycle[H]> | null> {\n let promise: Promise<ReturnType<PluginLifecycle[H]> | null> = Promise.resolve(null)\n for (const plugin of this.getSortedPlugins(hookName, pluginName)) {\n if (skipped && skipped.has(plugin)) continue\n promise = promise.then((result) => {\n if (result != null) return result\n return this.run('hookFirst', hookName, parameters, plugin) as any\n })\n }\n return promise\n }\n\n // chains, first non-null result stops and returns\n hookFirst<H extends PluginLifecycleHooks>(\n hookName: H,\n parameters: Parameters<PluginLifecycle[H]>,\n skipped?: ReadonlySet<KubbPlugin> | null\n ): Promise<ReturnType<PluginLifecycle[H]> | null> {\n let promise: Promise<ReturnType<PluginLifecycle[H]> | null> = Promise.resolve(null)\n for (const plugin of this.getSortedPlugins(hookName)) {\n if (skipped && skipped.has(plugin)) continue\n promise = promise.then((result) => {\n if (result != null) return result\n return this.run('hookFirst', hookName, parameters, plugin) as any\n })\n }\n return promise\n }\n\n // parallel\n async hookParallel<H extends PluginLifecycleHooks, TOuput = void>(hookName: H, parameters?: Parameters<PluginLifecycle[H]> | undefined) {\n const parallelPromises: Promise<TOuput>[] = []\n\n for (const plugin of this.getSortedPlugins(hookName)) {\n if ((plugin[hookName] as { sequential?: boolean })?.sequential) {\n await Promise.all(parallelPromises)\n parallelPromises.length = 0\n await this.run('hookParallel', hookName, parameters, plugin)\n } else {\n const promise: Promise<TOuput> = this.run('hookParallel', hookName, parameters, plugin)\n\n parallelPromises.push(promise)\n }\n }\n return Promise.all(parallelPromises)\n }\n\n // chains, reduces returned value, handling the reduced value as the first hook argument\n hookReduceArg0<H extends PluginLifecycleHooks>(\n hookName: H,\n [argument0, ...rest]: Parameters<PluginLifecycle[H]>,\n reduce: (reduction: Argument0<H>, result: ReturnType<PluginLifecycle[H]>, plugin: KubbPlugin) => MaybePromise<Argument0<H> | null>\n ): Promise<Argument0<H>> {\n let promise = Promise.resolve(argument0)\n for (const plugin of this.getSortedPlugins(hookName)) {\n promise = promise.then((argument0) =>\n this.run('hookReduceArg0', hookName, [argument0, ...rest] as Parameters<PluginLifecycle[H]>, plugin).then((result) =>\n reduce.call(this.core.api, argument0, result, plugin)\n )\n )\n }\n return promise\n }\n\n // chains\n\n hookSeq<H extends PluginLifecycleHooks>(hookName: H, parameters?: Parameters<PluginLifecycle[H]>) {\n let promise: Promise<void> = Promise.resolve()\n for (const plugin of this.getSortedPlugins(hookName)) {\n promise = promise.then(() => this.run('hookSeq', hookName, parameters, plugin))\n }\n return promise.then(noReturn)\n }\n\n private getSortedPlugins(hookName: keyof PluginLifecycle, pluginName?: string): KubbPlugin[] {\n const plugins = [...this.plugins]\n\n if (pluginName) {\n const pluginsByPluginName = plugins.filter((item) => item.name === pluginName && item[hookName])\n if (pluginsByPluginName.length === 0) {\n // fallback on the core plugin when there is no match\n if (this.config.logLevel === 'warn' && this.logger?.spinner) {\n this.logger.spinner.info(`Plugin hook with ${hookName} not found for plugin ${pluginName}`)\n }\n return [this.core]\n }\n return pluginsByPluginName\n }\n\n return plugins\n }\n\n /**\n * Run an async plugin hook and return the result.\n * @param hookName Name of the plugin hook. Must be either in `PluginHooks` or `OutputPluginValueHooks`.\n * @param args Arguments passed to the plugin hook.\n * @param plugin The actual pluginObject to run.\n */\n // Implementation signature\n private run<H extends PluginLifecycleHooks, TResult = void>(\n strategy: Strategy,\n hookName: H,\n parameters: unknown[] | undefined,\n plugin: KubbPlugin\n ): Promise<TResult> {\n const hook = plugin[hookName]!\n\n return Promise.resolve()\n .then(() => {\n if (typeof hook !== 'function') {\n return hook\n }\n\n if (this.config.logLevel === 'info' && this.logger?.spinner) {\n this.logger.spinner.text = `[${strategy}] ${hookName}: Excecuting task for plugin ${plugin.name} \\n`\n }\n\n const hookResult = (hook as any).apply(this.core.api, parameters)\n\n if (!hookResult?.then) {\n // short circuit for non-thenables and non-Promises\n if (this.config.logLevel === 'info' && this.logger?.spinner) {\n this.logger.spinner.succeed(`[${strategy}] ${hookName}: Excecuting task for plugin ${plugin.name} \\n`)\n }\n return hookResult\n }\n\n return Promise.resolve(hookResult).then((result) => {\n // action was fulfilled\n if (this.config.logLevel === 'info' && this.logger?.spinner) {\n this.logger.spinner.succeed(`[${strategy}] ${hookName}: Excecuting task for plugin ${plugin.name} \\n`)\n }\n return result\n })\n })\n .catch((e: Error) => this.catcher<H>(e, plugin, hookName))\n }\n\n /**\n * Run a sync plugin hook and return the result.\n * @param hookName Name of the plugin hook. Must be in `PluginHooks`.\n * @param args Arguments passed to the plugin hook.\n * @param plugin The acutal plugin\n * @param replaceContext When passed, the plugin context can be overridden.\n */\n private runSync<H extends PluginLifecycleHooks>(hookName: H, parameters: Parameters<PluginLifecycle[H]>, plugin: KubbPlugin): ReturnType<PluginLifecycle[H]> {\n const hook = plugin[hookName]!\n\n // const context = this.pluginContexts.get(plugin)!;\n\n try {\n // eslint-disable-next-line @typescript-eslint/ban-types\n return (hook as Function).apply(this.core.api, parameters)\n } catch (error: any) {\n return error\n }\n }\n\n private catcher<H extends PluginLifecycleHooks>(e: Error, plugin: KubbPlugin, hookName: H) {\n const text = `${e.message} (plugin: ${plugin.name}, hook: ${hookName})\\n`\n\n if (this.logger?.spinner) {\n this.logger.spinner.fail(text)\n throw e\n }\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nfunction noReturn() {}\n","import type { KubbPlugin } from '../../types'\n\nexport class ValidationPluginError extends Error {}\n\nexport const validatePlugins = (plugins: KubbPlugin[], dependedPluginNames: string | string[]): true => {\n let pluginNames: string[] = []\n if (typeof dependedPluginNames === 'string') {\n pluginNames = [dependedPluginNames]\n } else {\n pluginNames = dependedPluginNames\n }\n\n pluginNames.forEach((pluginName) => {\n const exists = plugins.some((plugin) => plugin.name === pluginName)\n if (!exists) {\n throw new ValidationPluginError(`This plugin depends on the ${pluginName} plugin.`)\n }\n })\n\n return true\n}\n","import { PluginManager } from './managers/pluginManager'\nimport { clean } from './utils/write'\n\nimport type { FileManager } from './managers/fileManager'\nimport type { PluginContext, TransformResult, LogLevel, KubbPlugin } from './types'\n\ntype BuildOutput = {\n fileManager: FileManager\n}\n\n// Same type as ora\ntype Spinner = {\n start: (text?: string) => Spinner\n succeed: (text: string) => Spinner\n fail: (text?: string) => Spinner\n stopAndPersist: (options: { text: string }) => Spinner\n render: () => Spinner\n text: string\n info: (text: string) => Spinner\n}\n\nexport type Logger = {\n log: (message: string, logLevel: LogLevel) => void\n spinner?: Spinner\n}\ntype BuildOptions = {\n config: PluginContext['config']\n mode: 'development' | 'production'\n logger?: Logger\n}\n\nasync function transformReducer(this: PluginContext, _previousCode: string, result: TransformResult, _plugin: KubbPlugin) {\n if (result === null) {\n return null\n }\n return result\n}\n\nasync function buildImplementation(options: BuildOptions, done: (output: BuildOutput) => void) {\n const { config, logger } = options\n\n if (config.output.clean) {\n await clean(config.output.path)\n }\n\n const pluginManager = new PluginManager(config, { logger })\n const { plugins, fileManager } = pluginManager\n\n try {\n await pluginManager.hookParallel<'validate', true>('validate', [plugins])\n } catch (e: any) {\n return\n }\n\n fileManager.events.onSuccess(async () => {\n await pluginManager.hookParallel('buildEnd')\n setTimeout(() => {\n done({ fileManager })\n }, 1000)\n })\n\n fileManager.events.onAdd(async (id, file) => {\n const { path } = file\n let { source: code } = file\n\n const loadedResult = await pluginManager.hookFirst('load', [path])\n if (loadedResult) {\n code = loadedResult\n }\n\n if (code) {\n const transformedCode = await pluginManager.hookReduceArg0('transform', [code, path], transformReducer)\n\n if (typeof config.input === 'object') {\n await pluginManager.hookParallel('writeFile', [transformedCode, path])\n }\n\n fileManager.setStatus(id, 'success')\n fileManager.remove(id)\n }\n })\n\n await pluginManager.hookParallel('buildStart', [config])\n}\n\nexport type KubbBuild = (options: BuildOptions) => Promise<BuildOutput>\n\nexport function build(options: BuildOptions): Promise<BuildOutput> {\n return new Promise((resolve, reject) => {\n try {\n buildImplementation(options, resolve)\n } catch (e) {\n reject(e)\n }\n })\n}\n","import type { MaybePromise, KubbUserConfig, CLIOptions } from './types'\n\n/**\n * Type helper to make it easier to use kubb.config.ts\n * accepts a direct {@link KubbConfig} object, or a function that returns it.\n * The function receives a {@link ConfigEnv} object that exposes two properties:\n */\nexport const defineConfig = (\n options:\n | MaybePromise<KubbUserConfig>\n | ((\n /** The options derived from the CLI flags */\n cliOptions: CLIOptions\n ) => MaybePromise<KubbUserConfig>)\n) => options\n","/**\n * Abstract class that contains the building blocks for plugins to create their own Generator\n * @link idea based on https://github.com/colinhacks/zod/blob/master/src/types.ts#L137\n */\nexport abstract class Generator<TOptions extends object = object> {\n private _options: TOptions = {} as TOptions\n\n constructor(options: TOptions = {} as TOptions) {\n if (options) {\n this._options = {\n ...this._options,\n ...options,\n }\n }\n return this\n }\n\n get options() {\n return this._options\n }\n\n abstract build(...params: unknown[]): unknown\n}\n","import { Generator } from './Generator'\n/**\n * Abstract class that contains the building blocks for plugins to create their own SchemaGenerator\n */\nexport abstract class SchemaGenerator<TOptions extends object, TInput, TOutput> extends Generator<TOptions> {\n abstract build(schema: TInput, name: string, description?: string): TOutput\n}\n","/* eslint-disable @typescript-eslint/no-empty-interface */\nimport { build } from './build'\n\nexport * from './config'\nexport * from './build'\nexport { CorePluginOptions, createPlugin } from './plugin'\nexport * from './utils'\nexport * from './types'\nexport * from './managers'\nexport * from './generators'\nexport default build\n"]}