Open
Description
Today we have fields
and computedFields
. The definitions in computedFields
expects a function to which Contentlayer passes the processed document.
I'd rather be able to define all my fields in one place and allow the options of that field definition (presence of resolve
) to determine whether or not it should be computed. Thus, I could have a doc type def like this:
const Page = defineDocumentType(() => ({
// ...
fields: {
title: { type: 'string', required: true },
url_path: {
type: 'string',
resolve: (doc) => doc._raw.flattenedPath.replace(/pages\/?/, ''),
},
},
}))
To do this and still support current use cases, it'd be beneficial to not just pass the processed doc object, but also input data. (See #76 for an example use case.) IOW the shape of the doc
passed to the resolve
function might include the following properties:
_raw
would still be there as it is todayfrontmatter
would contain the raw frontmatter contentbody
(configurable) would contain the processed body