import { defineMDSveXConfig as defineConfig } from "mdsvex"; // import type { Plugin, Settings } from 'unified'; import remarkGfm from "remark-gfm"; import remarkFrontmatter from "remark-frontmatter"; import remarkMath from "remark-math"; import remarkWikiLink, { } from "remark-wiki-link"; import slug from 'rehype-slug'; import { parse, format } from "node:path"; import slugify from 'slugify'; export const NOTE_ICON = ''; export const QUOTE_ICON = ''; export const INFO_ICON = ''; export const ICONS = { note: NOTE_ICON, quote: QUOTE_ICON, info: INFO_ICON, }; import { globSync } from 'glob' const projects = globSync('/node_modules/Notes/Projects/*.md') .map((filepath) => { return parse(filepath) }) .map((path) => { return format({ // ...path, name: slugify(path.name, { lower: true }), // base: undefined, // root: "", // ext: undefined, // dir: path.dir.replace("/node_modules/Notes/Projects", "") }) }) /** * @type {string[]} */ const permalinks = projects.map((p) => "/projects/" + p) /** * @param {string} pageName * @returns {string[]} */ function pageResolver(pageName) { const slug = slugify(pageName, { lower: true }); return ["/", "/projects/"].map((p) => p + slug); } const hrefTemplate = (/** @type {string} */ permalink) => `#${permalink}` const config = defineConfig({ extensions: [".svelte.md", ".md", ".svx"], // fences: true, // ruleSpaces: false, smartypants: { dashes: "oldschool", }, highlight: { alias: { ts: "typescript", mdx: "markdown", svelte: "svelte", svx: "svx", mdsvex: "svx", sig: "ts", } }, remarkPlugins: [ remarkGfm, remarkFrontmatter, remarkMath, [remarkWikiLink, { // @ts-ignore aliasDivider: "|", permalinks: permalinks, pageResolver, hrefTemplate, // wikiLinkClassName, // newClassName, }], // [citePlugin, { // syntax: { // // see micromark-extension-cite // enableAltSyntax: false, // enablePandocSyntax: true, // }, // toMarkdown: { // // see mdast-util-cite // standardizeAltSyntax: false, // enableAuthorSuppression: true, // useNodeValue: false, // }, // }], // [remarkBibliography, { bibliography }], // [remarkMermaid, {}] ], rehypePlugins: [ // @ts-ignore slug ], }); export default config;