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;
|