vike
Version:
The Framework *You* Control - Next.js & Nuxt alternative for unprecedented flexibility and dependability.
65 lines (64 loc) • 2.21 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.scriptFileExtensionList = exports.scriptFileExtensions = void 0;
exports.isScriptFile = isScriptFile;
exports.isPlainJavaScriptFile = isPlainJavaScriptFile;
exports.isTemplateFile = isTemplateFile;
const assert_js_1 = require("./assert.js");
// We can't use a RegExp:
// - Needs to work with Micromatch: https://github.com/micromatch/micromatch because:
// - Vite's `import.meta.glob()` uses Micromatch
// - We need this to be a allowlist because:
// - A pattern `*([a-zA-Z0-9]` doesn't work.
// - Because of ReScript: `.res` are ReScript source files which need to be ignored. (The ReScript compiler generates `.js` files alongside `.res` files.)
// - Block listing doesn't work.
// - We cannot implement a blocklist with a glob pattern.
// - A post `import.meta.glob()` blocklist filtering doesn't work because Vite would still process the files (e.g. including them in the bundle).
// prettier-ignore
// biome-ignore format:
const extJavaScript = [
'js',
'ts',
'cjs',
'cts',
'mjs',
'mts',
];
// prettier-ignore
// biome-ignore format:
const extJsx = [
'jsx',
'tsx',
'cjsx',
'ctsx',
'mjsx',
'mtsx',
];
// prettier-ignore
// biome-ignore format:
const extTemplates = [
'vue',
'svelte',
'marko',
'md',
'mdx'
];
const scriptFileExtensionList = [...extJavaScript, ...extJsx, ...extTemplates];
exports.scriptFileExtensionList = scriptFileExtensionList;
const scriptFileExtensions = '(' + scriptFileExtensionList.join('|') + ')';
exports.scriptFileExtensions = scriptFileExtensions;
function isScriptFile(filePath) {
const yes = scriptFileExtensionList.some((ext) => filePath.endsWith('.' + ext));
if (isPlainJavaScriptFile(filePath))
(0, assert_js_1.assert)(yes);
return yes;
}
function isPlainJavaScriptFile(filePath) {
const yes1 = /\.(c|m)?(j|t)s$/.test(filePath);
const yes2 = extJavaScript.some((ext) => filePath.endsWith('.' + ext));
(0, assert_js_1.assert)(yes1 === yes2);
return yes1;
}
function isTemplateFile(filePath) {
return extTemplates.some((ext) => filePath.endsWith('.' + ext));
}