@@ -14,6 +14,7 @@ import type { FileAfterParseHook, FileBeforeParseHook, ModuleOptions, ContentFil
1414import { logger } from '../dev'
1515import { getOrderedSchemaKeys } from '../../runtime/internal/schema'
1616import { transformContent } from './transformers'
17+ import pathMetaTransformer from './transformers/path-meta'
1718
1819let parserOptions = {
1920 mdcConfigs : [ ] as MdcConfig [ ] ,
@@ -169,11 +170,13 @@ export async function createParser(collection: ResolvedCollection, nuxt?: Nuxt)
169170 ...beforeParseCtx . parserOptions ,
170171 transformers : extraTransformers ,
171172 } )
173+
174+ const collectionKeys = getOrderedSchemaKeys ( collection . extendedSchema )
175+
172176 const { id : id , __metadata, ...parsedContentFields } = parsedContent
173177 const result = { id } as ParsedContentFile
174178 const meta = { } as Record < string , unknown >
175179
176- const collectionKeys = getOrderedSchemaKeys ( collection . extendedSchema )
177180 for ( const key of Object . keys ( parsedContentFields ) ) {
178181 if ( collectionKeys . includes ( key ) ) {
179182 result [ key ] = parsedContent [ key ]
@@ -198,6 +201,14 @@ export async function createParser(collection: ResolvedCollection, nuxt?: Nuxt)
198201 seo . description = seo . description || result . description
199202 }
200203
204+ const pathMetaFields = await pathMetaTransformer . transform ! ( parsedContent , { } )
205+ const metaFields = [ 'path' , 'title' , 'stem' , 'extension' ]
206+ for ( const key of metaFields ) {
207+ if ( collectionKeys . includes ( key ) && result [ key ] === undefined ) {
208+ result [ key ] = pathMetaFields [ key ]
209+ }
210+ }
211+
201212 const afterParseCtx : FileAfterParseHook = { file : hookedFile , content : result as ParsedContentFile , collection }
202213 await nuxt ?. callHook ?.( 'content:file:afterParse' , afterParseCtx )
203214 return afterParseCtx . content
0 commit comments