49 lines
1.2 KiB
JavaScript
49 lines
1.2 KiB
JavaScript
|
import { defineDocumentType, makeSource } from "contentlayer/source-files";
|
||
|
import remarkGfm from "remark-gfm";
|
||
|
|
||
|
const Monster = defineDocumentType(() => ({
|
||
|
name: "Npc",
|
||
|
filePathPattern: "monsters/*.yml",
|
||
|
contentType: "data",
|
||
|
fields: {
|
||
|
name: { type: "string", required: true },
|
||
|
system: { type: "json", required: true },
|
||
|
items: { type: "list", of: { type: "json" }, required: true },
|
||
|
},
|
||
|
computedFields: {
|
||
|
slug: {
|
||
|
type: "string",
|
||
|
resolve: (doc) => doc._raw.sourceFileName.replace(/\.yml$/, ""),
|
||
|
},
|
||
|
},
|
||
|
}));
|
||
|
|
||
|
const ClassItem = defineDocumentType(() => ({
|
||
|
name: "ClassItem",
|
||
|
filePathPattern: "classes/*.mdx",
|
||
|
contentType: "mdx",
|
||
|
fields: {
|
||
|
title: { type: "string", required: true },
|
||
|
source: { type: "string", required: true },
|
||
|
quote: { type: "string", required: true },
|
||
|
quote_source: { type: "string", required: true },
|
||
|
lead: { type: "string", required: true },
|
||
|
},
|
||
|
computedFields: {
|
||
|
slug: {
|
||
|
type: "string",
|
||
|
resolve: (doc) => doc._raw.sourceFileName.replace(/\.mdx$/, ""),
|
||
|
},
|
||
|
},
|
||
|
}));
|
||
|
|
||
|
const contentLayerConfig = makeSource({
|
||
|
contentDirPath: "vaults",
|
||
|
documentTypes: [ClassItem, Monster],
|
||
|
mdx: {
|
||
|
remarkPlugins: [remarkGfm],
|
||
|
},
|
||
|
});
|
||
|
|
||
|
export default contentLayerConfig;
|