UNPKG

vite-plugin-react18-pages

Version:

<p> <a href="https://www.npmjs.com/package/vite-plugin-react-pages" target="_blank" rel="noopener"><img src="https://img.shields.io/npm/v/vite-plugin-react-pages.svg" alt="npm package" /></a> </p>

42 lines 1.81 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.FileTextMdxPlugin = void 0; const unist_util_visit_1 = __importDefault(require("unist-util-visit")); function FileTextMdxPlugin() { return transformer; function transformer(tree, file) { const addImports = []; (0, unist_util_visit_1.default)(tree, 'jsx', (child, index, parent) => { const regexp = /<FileText\s+src=["'](.*?)["']\s+syntax=["'](.*?)["']/; const match = child.value.match(regexp); if (match) { const [, src, syntax] = match; const nextIndex = addImports.length; const varName = `_fileText${nextIndex}`; addImports.push(`import ${varName} from "${src}?raw";`); child.value = `<FileText text={${varName}} syntax="${syntax}" />`; } else { const basicRegexp = /<FileText\s+(?:.+?\s)?src=/; const basicMatch = child.value.match(basicRegexp); if (basicMatch) { // detect invalid usage of FileText // for example: props.syntax missing throw new Error(`Invalid usage of <FileText />: ${child.value}. Correct Syntax: <FileText src="./path/to/file" syntax="ts|tsx|text" />`); } } }); tree.children.unshift(...addImports.map((importStr) => { return { type: 'import', value: importStr, }; })); } } exports.FileTextMdxPlugin = FileTextMdxPlugin; //# sourceMappingURL=mdx-plugin-file-text.js.map