{"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]}