url.js 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  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.isJsFile = exports.cleanUrl = exports.hashRE = exports.queryRE = exports.isInternalRequest = exports.ENV_PUBLIC_PATH = exports.CLIENT_PUBLIC_PATH = exports.VALID_ID_PREFIX = exports.FS_PREFIX = exports.isImportRequest = exports.parseVueRequest = void 0;
  7. const shared_1 = require("@vue/shared");
  8. const path_1 = __importDefault(require("path"));
  9. const constants_1 = require("../../constants");
  10. function parseVueRequest(id) {
  11. const [filename, rawQuery] = id.split(`?`, 2);
  12. const query = Object.fromEntries(new URLSearchParams(rawQuery));
  13. if (query.vue != null) {
  14. query.vue = true;
  15. }
  16. if (query.src != null) {
  17. query.src = true;
  18. }
  19. if (query.index != null) {
  20. query.index = Number(query.index);
  21. }
  22. if (query.raw != null) {
  23. query.raw = true;
  24. }
  25. return {
  26. filename,
  27. query,
  28. };
  29. }
  30. exports.parseVueRequest = parseVueRequest;
  31. const importQueryRE = /(\?|&)import=?(?:&|$)/;
  32. const isImportRequest = (url) => importQueryRE.test(url);
  33. exports.isImportRequest = isImportRequest;
  34. /**
  35. * Prefix for resolved fs paths, since windows paths may not be valid as URLs.
  36. */
  37. exports.FS_PREFIX = `/@fs/`;
  38. /**
  39. * Prefix for resolved Ids that are not valid browser import specifiers
  40. */
  41. exports.VALID_ID_PREFIX = `/@id/`;
  42. exports.CLIENT_PUBLIC_PATH = `/@vite/client`;
  43. exports.ENV_PUBLIC_PATH = `/@vite/env`;
  44. const internalPrefixes = [
  45. exports.FS_PREFIX,
  46. exports.VALID_ID_PREFIX,
  47. exports.CLIENT_PUBLIC_PATH,
  48. exports.ENV_PUBLIC_PATH,
  49. ];
  50. const InternalPrefixRE = new RegExp(`^(?:${internalPrefixes.join('|')})`);
  51. const isInternalRequest = (url) => InternalPrefixRE.test(url);
  52. exports.isInternalRequest = isInternalRequest;
  53. exports.queryRE = /\?.*$/;
  54. exports.hashRE = /#.*$/;
  55. const cleanUrl = (url) => url.replace(exports.hashRE, '').replace(exports.queryRE, '');
  56. exports.cleanUrl = cleanUrl;
  57. function isJsFile(id) {
  58. const { filename, query } = parseVueRequest(id);
  59. const isJs = constants_1.EXTNAME_JS_RE.test(filename);
  60. if (isJs) {
  61. return true;
  62. }
  63. const isVueJs = constants_1.EXTNAME_VUE.includes(path_1.default.extname(filename)) &&
  64. (!query.vue ||
  65. query.setup ||
  66. (0, shared_1.hasOwn)(query, 'lang.ts') ||
  67. (0, shared_1.hasOwn)(query, 'lang.js') ||
  68. (0, shared_1.hasOwn)(query, 'lang.uts'));
  69. if (isVueJs) {
  70. return true;
  71. }
  72. return false;
  73. }
  74. exports.isJsFile = isJsFile;