pathUtils.js 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. "use strict";
  2. var __importDefault = (this && this.__importDefault) || function (mod) {
  3. return (mod && mod.__esModule) ? mod : { "default": mod };
  4. };
  5. Object.defineProperty(exports, "__esModule", { value: true });
  6. exports.removeUnRelatedHmrQuery = exports.parseNodeModuleId = exports.isImportRequest = exports.isStaticAsset = exports.isDataUrl = exports.isExternalUrl = exports.bareImportRE = exports.parseWithQuery = exports.cleanUrl = exports.hashRE = exports.queryRE = exports.resolveFrom = void 0;
  7. const slash_1 = __importDefault(require("slash"));
  8. const querystring_1 = __importDefault(require("querystring"));
  9. const resolve_1 = __importDefault(require("resolve"));
  10. const resolver_1 = require("../resolver");
  11. let isRunningWithYarnPnp;
  12. try {
  13. isRunningWithYarnPnp = Boolean(require('pnpapi'));
  14. }
  15. catch { }
  16. exports.resolveFrom = (root, id) => resolve_1.default.sync(id, {
  17. basedir: root,
  18. extensions: resolver_1.supportedExts,
  19. // necessary to work with pnpm
  20. preserveSymlinks: isRunningWithYarnPnp || false
  21. });
  22. exports.queryRE = /\?.*$/;
  23. exports.hashRE = /#.*$/;
  24. exports.cleanUrl = (url) => url.replace(exports.hashRE, '').replace(exports.queryRE, '');
  25. exports.parseWithQuery = (id) => {
  26. const queryMatch = id.match(exports.queryRE);
  27. if (queryMatch) {
  28. return {
  29. path: slash_1.default(exports.cleanUrl(id)),
  30. query: querystring_1.default.parse(queryMatch[0].slice(1))
  31. };
  32. }
  33. return {
  34. path: id,
  35. query: {}
  36. };
  37. };
  38. exports.bareImportRE = /^[^\/\.]/;
  39. const externalRE = /^(https?:)?\/\//;
  40. exports.isExternalUrl = (url) => externalRE.test(url);
  41. const dataUrlRE = /^\s*data:/i;
  42. exports.isDataUrl = (url) => dataUrlRE.test(url);
  43. const imageRE = /\.(png|jpe?g|gif|svg|ico|webp)(\?.*)?$/;
  44. const mediaRE = /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/;
  45. const fontsRE = /\.(woff2?|eot|ttf|otf)(\?.*)?$/i;
  46. /**
  47. * Check if a file is a static asset that vite can process.
  48. */
  49. exports.isStaticAsset = (file) => {
  50. return imageRE.test(file) || mediaRE.test(file) || fontsRE.test(file);
  51. };
  52. /**
  53. * Check if a request is an import from js instead of a native resource request
  54. * i.e. differentiate
  55. * `import('/style.css')`
  56. * from
  57. * `<link rel="stylesheet" href="/style.css">`
  58. *
  59. * The ?import query is injected by serverPluginModuleRewrite.
  60. */
  61. exports.isImportRequest = (ctx) => {
  62. return ctx.query.import != null;
  63. };
  64. function parseNodeModuleId(id) {
  65. const parts = id.split('/');
  66. let scope = '', name = '', inPkgPath = '';
  67. if (id.startsWith('@'))
  68. scope = parts.shift();
  69. name = parts.shift();
  70. inPkgPath = parts.join('/');
  71. return {
  72. scope,
  73. name,
  74. inPkgPath
  75. };
  76. }
  77. exports.parseNodeModuleId = parseNodeModuleId;
  78. function removeUnRelatedHmrQuery(url) {
  79. const { path, query } = exports.parseWithQuery(url);
  80. delete query.t;
  81. delete query.import;
  82. if (Object.keys(query).length) {
  83. return path + '?' + querystring_1.default.stringify(query);
  84. }
  85. return path;
  86. }
  87. exports.removeUnRelatedHmrQuery = removeUnRelatedHmrQuery;
  88. //# sourceMappingURL=pathUtils.js.map