@braindb/astro
Version:
BrainDB Astro integration
46 lines • 1.35 kB
JavaScript
// src/remarkWikiLink.ts
import "@braindb/core";
import { visit, SKIP } from "unist-util-visit";
var remarkWikiLink = ({ bdb }) => {
return (ast, _file) => {
visit(ast, "wikiLink", (node) => {
const slug = node.value;
const alias = node.data.alias;
const [slugWithoutAnchor, anchor] = slug.split("#");
if (slugWithoutAnchor) {
const doc = bdb.documentsSync({ slug: slugWithoutAnchor })[0];
if (doc) {
if (!doc.frontmatter().draft || import.meta.env && import.meta.env.DEV) {
node.data = {
hName: "a",
hProperties: {
href: anchor ? `${doc.url()}#${anchor}` : doc.url(),
class: doc.frontmatter().draft ? "draft-link" : ""
},
hChildren: [
{
type: "text",
value: alias == null ? doc.frontmatter().title : alias
}
]
};
}
return SKIP;
}
}
node.data = {
hName: "span",
hProperties: {
class: "broken-link",
title: `Can't resolve link to ${slug}`
},
hChildren: [{ type: "text", value: alias || slug }]
};
return SKIP;
});
};
};
export {
remarkWikiLink
};
//# sourceMappingURL=remarkWikiLink.js.map