utils.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.normalizePath = exports.isRootDirectory = exports.convertSlashes = exports.cleanPath = void 0;
  4. const path_1 = require("path");
  5. function cleanPath(path) {
  6. let normalized = (0, path_1.normalize)(path);
  7. // we have to remove the last path separator
  8. // to account for / root path
  9. if (normalized.length > 1 && normalized[normalized.length - 1] === path_1.sep)
  10. normalized = normalized.substring(0, normalized.length - 1);
  11. return normalized;
  12. }
  13. exports.cleanPath = cleanPath;
  14. const SLASHES_REGEX = /[\\/]/g;
  15. function convertSlashes(path, separator) {
  16. return path.replace(SLASHES_REGEX, separator);
  17. }
  18. exports.convertSlashes = convertSlashes;
  19. function isRootDirectory(path) {
  20. return path === "/" || /^[a-z]:\\$/i.test(path);
  21. }
  22. exports.isRootDirectory = isRootDirectory;
  23. function normalizePath(path, options) {
  24. const { resolvePaths, normalizePath, pathSeparator } = options;
  25. const pathNeedsCleaning = (process.platform === "win32" && path.includes("/")) ||
  26. path.startsWith(".");
  27. if (resolvePaths)
  28. path = (0, path_1.resolve)(path);
  29. if (normalizePath || pathNeedsCleaning)
  30. path = cleanPath(path);
  31. if (path === ".")
  32. return "";
  33. const needsSeperator = path[path.length - 1] !== pathSeparator;
  34. return convertSlashes(needsSeperator ? path + pathSeparator : path, pathSeparator);
  35. }
  36. exports.normalizePath = normalizePath;