75 lines
2.6 KiB
JavaScript
75 lines
2.6 KiB
JavaScript
"use strict";
|
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
};
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
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;
|
|
const shared_1 = require("@vue/shared");
|
|
const path_1 = __importDefault(require("path"));
|
|
const constants_1 = require("../../constants");
|
|
function parseVueRequest(id) {
|
|
const [filename, rawQuery] = id.split(`?`, 2);
|
|
const query = Object.fromEntries(new URLSearchParams(rawQuery));
|
|
if (query.vue != null) {
|
|
query.vue = true;
|
|
}
|
|
if (query.src != null) {
|
|
query.src = true;
|
|
}
|
|
if (query.index != null) {
|
|
query.index = Number(query.index);
|
|
}
|
|
if (query.raw != null) {
|
|
query.raw = true;
|
|
}
|
|
return {
|
|
filename,
|
|
query,
|
|
};
|
|
}
|
|
exports.parseVueRequest = parseVueRequest;
|
|
const importQueryRE = /(\?|&)import=?(?:&|$)/;
|
|
const isImportRequest = (url) => importQueryRE.test(url);
|
|
exports.isImportRequest = isImportRequest;
|
|
/**
|
|
* Prefix for resolved fs paths, since windows paths may not be valid as URLs.
|
|
*/
|
|
exports.FS_PREFIX = `/@fs/`;
|
|
/**
|
|
* Prefix for resolved Ids that are not valid browser import specifiers
|
|
*/
|
|
exports.VALID_ID_PREFIX = `/@id/`;
|
|
exports.CLIENT_PUBLIC_PATH = `/@vite/client`;
|
|
exports.ENV_PUBLIC_PATH = `/@vite/env`;
|
|
const internalPrefixes = [
|
|
exports.FS_PREFIX,
|
|
exports.VALID_ID_PREFIX,
|
|
exports.CLIENT_PUBLIC_PATH,
|
|
exports.ENV_PUBLIC_PATH,
|
|
];
|
|
const InternalPrefixRE = new RegExp(`^(?:${internalPrefixes.join('|')})`);
|
|
const isInternalRequest = (url) => InternalPrefixRE.test(url);
|
|
exports.isInternalRequest = isInternalRequest;
|
|
exports.queryRE = /\?.*$/;
|
|
exports.hashRE = /#.*$/;
|
|
const cleanUrl = (url) => url.replace(exports.hashRE, '').replace(exports.queryRE, '');
|
|
exports.cleanUrl = cleanUrl;
|
|
function isJsFile(id) {
|
|
const { filename, query } = parseVueRequest(id);
|
|
const isJs = constants_1.EXTNAME_JS_RE.test(filename);
|
|
if (isJs) {
|
|
return true;
|
|
}
|
|
const isVueJs = constants_1.EXTNAME_VUE.includes(path_1.default.extname(filename)) &&
|
|
(!query.vue ||
|
|
query.setup ||
|
|
(0, shared_1.hasOwn)(query, 'lang.ts') ||
|
|
(0, shared_1.hasOwn)(query, 'lang.js') ||
|
|
(0, shared_1.hasOwn)(query, 'lang.uts'));
|
|
if (isVueJs) {
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
exports.isJsFile = isJsFile;
|