@braindb/remark-dataview
Version:
markdown-graph-content-layer-database
29 lines (28 loc) • 1.14 kB
JavaScript
import remarkCodeHook from "@beoe/remark-code-hook";
import { generateList, generateTable, parse, processMeta, transform, } from "./sqlUtils.js";
export function remarkDataview(options) {
const { getBrainDb, bdb, ...rest } = options;
// @ts-expect-error
return remarkCodeHook.call(this, {
...rest,
language: "dataview",
code: async ({ code, meta }) => {
if (getBrainDb == null) {
console.warn(`[remark-dataview]: "bdb" option is deprecated. Use "getBrainDb" instead`);
}
const bdbInstance = getBrainDb == null ? bdb : getBrainDb();
await bdbInstance.ready();
try {
const options = processMeta(meta);
const { query, columns } = transform(parse(code));
if (options.list)
return generateList(columns, bdbInstance.__rawQuery(query), options);
return generateTable(columns, bdbInstance.__rawQuery(query));
}
catch (e) {
return String(e);
}
},
});
}
export default remarkDataview;