import type { Plugin } from 'vite' import { getReadingTime } from './../theme/utils' // import { replacer } from '../../../scripts/utils' export function MarkdownTransform(): Plugin { return { name: 'toshiki-notebook-md-transform', enforce: 'pre', async transform(code, id) { if (!id.match(/\.md\b/)) return null // convert links to relative code = code.replace(/https?:\/\/note.toshiki\.dev\//g, '/') const [_name, i] = id.split('/').slice(-2) // convert img by applying regex // const imgRegex = /!\[(.+?)\]\((.+?)\)/g; // let imgMatches = imgRegex.exec(code); // while (imgMatches) { // const [text, link] = imgMatches.slice(1); // code = code.replace( // imgMatches[0], // `${text || ` // ); // imgMatches = imgRegex.exec(code); // } // convert links to components // const linkRegex = /\[(.+?)\]\((.+?)\)/g; // let matches = linkRegex.exec(code); // while (matches) { // const [text, link] = matches.slice(1); // code = code.replace( // matches[0], // `` // ); // matches = linkRegex.exec(code); // } // cut index.md if (_name === 'docs' && i === 'index.md') return code // const { footer } = await getDocsMarkdown() // code = replacer(code, footer, 'FOOTER', 'tail') const { readTime, words } = getReadingTime(code) code = code.replace(/(#\s.+?\n)/, `$1\n\n\n`) return code }, } } // export async function getDocsMarkdown() { // const CopyRightSection = ` // `; // const footer = `${CopyRightSection}\n`; // return { // footer, // }; // }