Skip to content

Commit b1444a5

Browse files
committed
fix: transform with path-meta
1 parent 0c7d09b commit b1444a5

File tree

5 files changed

+20
-11
lines changed

5 files changed

+20
-11
lines changed

src/app/test/mocks/host.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { createMockDocument } from './document'
55
import { createMockMedia } from './media'
66
import { joinURL } from 'ufo'
77
import type { MediaItem } from '../../src/types/media'
8+
import { isDocumentMatchContent } from '../../../module/dist/runtime/utils/document'
89

910
// Helper to convert fsPath to id (simulates module's internal mapping)
1011
export const fsPathToId = (fsPath: string, type: 'document' | 'media') => {
@@ -51,6 +52,12 @@ export const createMockHost = (): StudioHost => ({
5152
list: vi.fn().mockImplementation(async () => {
5253
return Array.from(documentDb.values())
5354
}),
55+
isEqual: vi.fn().mockImplementation(async (content: string, document: DatabaseItem) => {
56+
return isDocumentMatchContent(content, document)
57+
}),
58+
generateDocumentFromContent: vi.fn().mockImplementation(async (_id: string, _content: string) => {
59+
throw new Error('Not implemented')
60+
}),
5461
},
5562
media: {
5663
get: vi.fn().mockImplementation(async (fsPath: string) => {

src/module/src/runtime/host.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ 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 { createCollectionDocument, isDocumentMatchContent, normalizeDocument } from './utils/document'
6+
import { createCollectionDocument, isDocumentMatchContent, normalizeDocument, generateDocumentFromContent } from './utils/document'
77
import { kebabCase } from 'scule'
88
import type { StudioHost, StudioUser, DatabaseItem, MediaItem, Repository } from 'nuxt-studio/app'
99
import type { RouteLocationNormalized, Router } from 'vue-router'
@@ -12,7 +12,6 @@ import { clearError, getAppManifest, queryCollection, queryCollectionItemSurroun
1212
import { collections } from '#content/preview'
1313
import { publicAssetsStorage } from '#build/studio-public-assets'
1414
import { useHostMeta } from './composables/useMeta'
15-
import { generateDocumentFromContent } from './utils/document'
1615
import { generateIdFromFsPath as generateMediaIdFromFsPath } from './utils/media'
1716
import { getCollectionSourceById } from './utils/source'
1817

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
export enum ContentFileExtension {
2+
Markdown = 'md',
3+
YAML = 'yaml',
4+
YML = 'yml',
5+
JSON = 'json',
6+
}

src/module/src/runtime/utils/document.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { getOrderedSchemaKeys } from './collection'
33
import { pathMetaTransform } from './path-meta'
44
import type { DatabaseItem } from 'nuxt-studio/app'
55
import { isObjectMatch } from './object'
6-
import { ContentFileExtension } from '../../types/content'
6+
import { ContentFileExtension } from '../types/content'
77
import { parseMarkdown } from '@nuxtjs/mdc/runtime/parser/index'
88
import type { MDCElement } from '@nuxtjs/mdc'
99
import { visit } from 'unist-util-visit'
@@ -140,7 +140,7 @@ export async function generateDocumentFromMarkdownContent(id: string, content: s
140140

141141
const body = document.body.type === 'root' ? compressTree(document.body) : document.body as never as MarkdownRoot
142142

143-
return {
143+
const result = {
144144
id,
145145
meta: {},
146146
extension: 'md',
@@ -150,7 +150,9 @@ export async function generateDocumentFromMarkdownContent(id: string, content: s
150150
toc: document.toc,
151151
},
152152
...document.data,
153-
} as never as DatabaseItem
153+
}
154+
155+
return pathMetaTransform(result as PageCollectionItemBase) as unknown as DatabaseItem
154156
}
155157

156158
function generateStemFromId(id: string) {

src/module/src/types/content.ts

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,4 @@ export interface ContentProvide {
1111
}
1212
export type ContentDatabaseAdapter = (collection: string) => DatabaseAdapter
1313

14-
export enum ContentFileExtension {
15-
Markdown = 'md',
16-
YAML = 'yaml',
17-
YML = 'yml',
18-
JSON = 'json',
19-
}
14+
export { ContentFileExtension } from '../runtime/types/content'

0 commit comments

Comments
 (0)