import path from 'path'; function normalizeWindowsPath(input = "") { if (!input.includes("\\")) { return input; } return input.replace(/\\/g, "/"); } const _UNC_REGEX = /^[/][/]/; const _UNC_DRIVE_REGEX = /^[/][/]([.]{1,2}[/])?([a-zA-Z]):[/]/; const _IS_ABSOLUTE_RE = /^\/|^\\|^[a-zA-Z]:[/\\]/; const sep = "/"; const delimiter = ":"; const normalize = function(path2) { if (path2.length === 0) { return "."; } path2 = normalizeWindowsPath(path2); const isUNCPath = path2.match(_UNC_REGEX); const hasUNCDrive = isUNCPath && path2.match(_UNC_DRIVE_REGEX); const isPathAbsolute = isAbsolute(path2); const trailingSeparator = path2[path2.length - 1] === "/"; path2 = normalizeString(path2, !isPathAbsolute); if (path2.length === 0) { if (isPathAbsolute) { return "/"; } return trailingSeparator ? "./" : "."; } if (trailingSeparator) { path2 += "/"; } if (isUNCPath) { if (hasUNCDrive) { return `//./${path2}`; } return `//${path2}`; } return isPathAbsolute && !isAbsolute(path2) ? `/${path2}` : path2; }; const join = function(...args) { if (args.length === 0) { return "."; } let joined; for (let i = 0; i < args.length; ++i) { const arg = args[i]; if (arg.length > 0) { if (joined === void 0) { joined = arg; } else { joined += `/${arg}`; } } } if (joined === void 0) { return "."; } return normalize(joined); }; const resolve = function(...args) { args = args.map((arg) => normalizeWindowsPath(arg)); let resolvedPath = ""; let resolvedAbsolute = false; for (let i = args.length - 1; i >= -1 && !resolvedAbsolute; i--) { const path2 = i >= 0 ? args[i] : process.cwd(); if (path2.length === 0) { continue; } resolvedPath = `${path2}/${resolvedPath}`; resolvedAbsolute = isAbsolute(path2); } resolvedPath = normalizeString(resolvedPath, !resolvedAbsolute); if (resolvedAbsolute && !isAbsolute(resolvedPath)) { return `/${resolvedPath}`; } return resolvedPath.length > 0 ? resolvedPath : "."; }; function normalizeString(path2, allowAboveRoot) { let res = ""; let lastSegmentLength = 0; let lastSlash = -1; let dots = 0; let char = null; for (let i = 0; i <= path2.length; ++i) { if (i < path2.length) { char = path2[i]; } else if (char === "/") { break; } else { char = "/"; } if (char === "/") { if (lastSlash === i - 1 || dots === 1) ; else if (dots === 2) { if (res.length < 2 || lastSegmentLength !== 2 || res[res.length - 1] !== "." || res[res.length - 2] !== ".") { if (res.length > 2) { const lastSlashIndex = res.lastIndexOf("/"); if (lastSlashIndex === -1) { res = ""; lastSegmentLength = 0; } else { res = res.slice(0, lastSlashIndex); lastSegmentLength = res.length - 1 - res.lastIndexOf("/"); } lastSlash = i; dots = 0; continue; } else if (res.length !== 0) { res = ""; lastSegmentLength = 0; lastSlash = i; dots = 0; continue; } } if (allowAboveRoot) { res += res.length > 0 ? "/.." : ".."; lastSegmentLength = 2; } } else { if (res.length > 0) { res += `/${path2.slice(lastSlash + 1, i)}`; } else { res = path2.slice(lastSlash + 1, i); } lastSegmentLength = i - lastSlash - 1; } lastSlash = i; dots = 0; } else if (char === "." && dots !== -1) { ++dots; } else { dots = -1; } } return res; } const isAbsolute = function(p) { return _IS_ABSOLUTE_RE.test(p); }; const toNamespacedPath = function(p) { return normalizeWindowsPath(p); }; const extname = function(p) { return path.posix.extname(normalizeWindowsPath(p)); }; const relative = function(from, to) { return path.posix.relative(normalizeWindowsPath(from), normalizeWindowsPath(to)); }; const dirname = function(p) { return path.posix.dirname(normalizeWindowsPath(p)); }; const format = function(p) { return normalizeWindowsPath(path.posix.format(p)); }; const basename = function(p, ext) { return path.posix.basename(normalizeWindowsPath(p), ext); }; const parse = function(p) { return path.posix.parse(normalizeWindowsPath(p)); }; const _path = /*#__PURE__*/Object.freeze({ __proto__: null, sep: sep, delimiter: delimiter, normalize: normalize, join: join, resolve: resolve, normalizeString: normalizeString, isAbsolute: isAbsolute, toNamespacedPath: toNamespacedPath, extname: extname, relative: relative, dirname: dirname, format: format, basename: basename, parse: parse }); const index = { ..._path }; export { basename, index as default, delimiter, dirname, extname, format, isAbsolute, join, normalize, normalizeString, parse, relative, resolve, sep, toNamespacedPath };