import { defineDocumentType, makeSource } from "contentlayer/source-files"; /** @type {import('contentlayer/source-files').ComputedFields} */ const computedFields = { slug: { type: "string", resolve: (doc) => `/${doc._raw.flattenedPath}`, }, slugAsParams: { type: "string", resolve: (doc) => doc._raw.flattenedPath.split("/").slice(1).join("/"), }, }; export const Page = defineDocumentType(() => ({ name: "Page", filePathPattern: `pages/**/*.mdx`, contentType: "mdx", fields: { title: { type: "string", required: true, }, description: { type: "string", }, }, computedFields, })); export const Project = defineDocumentType(() => ({ name: "Project", filePathPattern: `projects/**/*.mdx`, contentType: "mdx", fields: { title: { type: "string", required: true, }, description: { type: "string", required: true, }, date: { type: "date", required: true, }, starred: { type: "boolean", }, githubLink: { type: "string", }, resultingPaper: { type: "string", }, projectType: { type: "enum", options: ["Personal" | "Class" | "Start Up" | "Research"], default: "Personal", }, keyWords: { type: "list", of: { type: "string", }, }, }, computedFields, })); export default makeSource({ contentDirPath: "./content", documentTypes: [Project, Page], });