Skip to content

Commit a607691

Browse files
farnabazlarbishvercel[bot]
authored
fix(document): do not apply page meta information in data collections (#167)
Co-authored-by: Baptiste Leproux <leproux.baptiste@gmail.com> Co-authored-by: vercel[bot] <35613825+vercel[bot]@users.noreply.github.com>
1 parent 0453f4e commit a607691

File tree

14 files changed

+594
-561
lines changed

14 files changed

+594
-561
lines changed

src/app/src/types/content.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
1+
import type { CollectionType } from '@nuxt/content'
2+
13
export interface MarkdownParsingOptions {
24
compress?: boolean
5+
collectionType?: CollectionType
36
}
47

58
export interface SyntaxHighlightTheme {

src/app/test/mocks/host.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ export const createMockHost = (): StudioHost => ({
7171
},
7272
generate: {
7373
documentFromContent: vi.fn().mockImplementation(async (id: string, content: string) => {
74-
return generateDocumentFromContent(id, content)
74+
return generateDocumentFromContent(id, content, { collectionType: 'page', compress: true })
7575
}),
7676
contentFromDocument: vi.fn().mockImplementation(async (document: DatabaseItem) => {
7777
return generateContentFromDocument(document)

src/module/src/runtime/host.ts

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ import { ensure } from './utils/ensure'
33
import type { CollectionInfo, CollectionItemBase, CollectionSource, DatabaseAdapter } from '@nuxt/content'
44
import type { ContentDatabaseAdapter } from '../types/content'
55
import { getCollectionByFilePath, generateIdFromFsPath, generateRecordDeletion, generateRecordInsert, generateFsPathFromId, getCollectionById } from './utils/collection'
6-
import { applyCollectionSchema, isDocumentMatchingContent, generateDocumentFromContent, generateContentFromDocument, areDocumentsEqual, pickReservedKeysFromDocument, removeReservedKeysFromDocument, sanitizeDocument } from './utils/document'
6+
import { applyCollectionSchema, isDocumentMatchingContent, generateDocumentFromContent, generateContentFromDocument, areDocumentsEqual, pickReservedKeysFromDocument, removeReservedKeysFromDocument, sanitizeDocumentTree } from './utils/document'
77
import { kebabCase } from 'scule'
8-
import type { StudioHost, StudioUser, DatabaseItem, MediaItem, Repository, MarkdownParsingOptions } from 'nuxt-studio/app'
8+
import type { StudioHost, StudioUser, DatabaseItem, MediaItem, Repository } from 'nuxt-studio/app'
99
import type { RouteLocationNormalized, Router } from 'vue-router'
1010
// @ts-expect-error queryCollection is not defined in .nuxt/imports.d.ts
1111
import { clearError, getAppManifest, queryCollection, queryCollectionItemSurroundings, queryCollectionNavigation, queryCollectionSearchSections, useRuntimeConfig } from '#imports'
@@ -204,7 +204,7 @@ export function useStudioHost(user: StudioUser, repository: Repository): StudioH
204204
return undefined
205205
}
206206

207-
return sanitizeDocument({
207+
return sanitizeDocumentTree({
208208
...item,
209209
fsPath,
210210
})
@@ -218,7 +218,7 @@ export function useStudioHost(user: StudioUser, repository: Repository): StudioH
218218
const source = getCollectionSourceById(document.id, collection.source)
219219
const fsPath = generateFsPathFromId(document.id, source!)
220220

221-
return sanitizeDocument({
221+
return sanitizeDocumentTree({
222222
...document,
223223
fsPath,
224224
})
@@ -239,12 +239,13 @@ export function useStudioHost(user: StudioUser, repository: Repository): StudioH
239239
}
240240

241241
const id = generateIdFromFsPath(fsPath, collectionInfo!)
242-
const document = await generateDocumentFromContent(id, content)
242+
const generateOptions = { collectionType: collectionInfo.type, compress: true }
243+
const document = await generateDocumentFromContent(id, content, generateOptions)
243244
const normalizedDocument = applyCollectionSchema(id, collectionInfo, document!)
244245

245246
await host.document.db.upsert(fsPath, normalizedDocument)
246247

247-
return sanitizeDocument({
248+
return sanitizeDocumentTree({
248249
...normalizedDocument,
249250
fsPath,
250251
})
@@ -299,7 +300,12 @@ export function useStudioHost(user: StudioUser, repository: Repository): StudioH
299300
},
300301
},
301302
generate: {
302-
documentFromContent: async (id: string, content: string, options: MarkdownParsingOptions = { compress: true }) => generateDocumentFromContent(id, content, options),
303+
documentFromContent: async (id: string, content: string) => {
304+
const collection = getCollectionById(id, useContentCollections())
305+
306+
const generateOptions = { collectionType: collection.type, compress: true }
307+
return await generateDocumentFromContent(id, content, generateOptions)
308+
},
303309
contentFromDocument: async (document: DatabaseItem) => generateContentFromDocument(document),
304310
},
305311
},

0 commit comments

Comments
 (0)