vue-files-preview-inno
Version:
A tool for previewing files such as doc, excel, pdf, image, markdown, txt, audio, and video and so on.
1 lines • 23.4 kB
Source Map (JSON)
{"version":3,"file":"path.mjs","sources":["../../../../node_modules/path-webpack/path.js"],"sourcesContent":["'use strict';\n\nif (!process) {\n var process = {\n \"cwd\" : function () { return '/' }\n };\n}\n\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError('Path must be a string. Received ' + path);\n }\n}\n\n// Resolves . and .. elements in a path with directory names\nfunction normalizeStringPosix(path, allowAboveRoot) {\n var res = '';\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 ||\n res.charCodeAt(res.length - 1) !== 46/*.*/ ||\n res.charCodeAt(res.length - 2) !== 46/*.*/) {\n if (res.length > 2) {\n var start = res.length - 1;\n var j = start;\n for (; j >= 0; --j) {\n if (res.charCodeAt(j) === 47/*/*/)\n break;\n }\n if (j !== start) {\n if (j === -1)\n res = '';\n else\n res = res.slice(0, j);\n lastSlash = i;\n dots = 0;\n continue;\n }\n } else if (res.length === 2 || res.length === 1) {\n res = '';\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 }\n } else {\n if (res.length > 0)\n res += '/' + path.slice(lastSlash + 1, i);\n else\n res = path.slice(lastSlash + 1, i);\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 ||\n ((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\n normalize: function normalize(path) {\n assertPath(path);\n\n if (path.length === 0)\n 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)\n path = '.';\n if (path.length > 0 && trailingSeparator)\n path += '/';\n\n if (isAbsolute)\n return '/' + path;\n return path;\n },\n\n\n isAbsolute: function isAbsolute(path) {\n assertPath(path);\n return path.length > 0 && path.charCodeAt(0) === 47/*/*/;\n },\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\n relative: function relative(from, to) {\n assertPath(from);\n assertPath(to);\n\n if (from === to)\n return '';\n\n from = posix.resolve(from);\n to = posix.resolve(to);\n\n if (from === to)\n 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\n _makeLong: function _makeLong(path) {\n return path;\n },\n\n\n dirname: function dirname(path) {\n assertPath(path);\n if (path.length === 0)\n 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)\n return hasRoot ? '/' : '.';\n if (hasRoot && end === 1)\n return '//';\n return path.slice(0, end);\n },\n\n\n basename: function basename(path, ext) {\n if (ext !== undefined && typeof ext !== 'string')\n 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)\n 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)\n end = firstNonSlashEnd;\n else if (end === -1)\n 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)\n return '';\n return path.slice(start, end);\n }\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 ||\n 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 &&\n startDot === end - 1 &&\n startDot === startPart + 1)) {\n return '';\n }\n return path.slice(startDot, end);\n },\n\n\n format: function format(pathObject) {\n if (pathObject === null || typeof pathObject !== 'object') {\n throw new TypeError(\n 'Parameter \"pathObject\" must be an object, not ' + typeof(pathObject)\n );\n }\n return _format('/', pathObject);\n },\n\n\n parse: function parse(path) {\n assertPath(path);\n\n var ret = { root: '', dir: '', base: '', ext: '', name: '' };\n if (path.length === 0)\n 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)\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 ||\n 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 &&\n startDot === end - 1 &&\n startDot === startPart + 1)) {\n if (end !== -1) {\n if (startPart === 0 && isAbsolute)\n ret.base = ret.name = path.slice(1, end);\n else\n 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)\n ret.dir = path.slice(0, startPart - 1);\n else if (isAbsolute)\n ret.dir = '/';\n\n return ret;\n },\n\n\n sep: '/',\n delimiter: ':',\n posix: null\n};\n\n\nmodule.exports = posix;\n"],"names":["process","assertPath","path","normalizeStringPosix","allowAboveRoot","res","lastSlash","dots","code","i","start","j","_format","sep","pathObject","dir","base","posix","resolvedPath","resolvedAbsolute","cwd","isAbsolute","trailingSeparator","joined","arg","from","to","fromStart","fromEnd","fromLen","toStart","toEnd","toLen","length","lastCommonSep","fromCode","toCode","out","hasRoot","end","matchedSlash","ext","extIdx","firstNonSlashEnd","startDot","startPart","preDotState","ret"],"mappings":"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","x_google_ignoreList":[0]}