Skip to content

Commit 4bfc8c0

Browse files
committed
expose media virtual collection name
1 parent d9648e1 commit 4bfc8c0

File tree

11 files changed

+18
-14
lines changed

11 files changed

+18
-14
lines changed

src/app/src/composables/useContext.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { createSharedComposable } from '@vueuse/core'
22
import { computed, ref } from 'vue'
3-
import { StudioItemActionId, DraftStatus, StudioBranchActionId, StudioFeature, VirtualMediaCollectionName } from '../types'
3+
import { StudioItemActionId, DraftStatus, StudioBranchActionId, StudioFeature,
4+
} from '../types'
45
import type {
56
PublishBranchParams,
67
RenameFileParams,
@@ -15,6 +16,7 @@ import type {
1516
DatabaseItem,
1617
MediaItem,
1718
} from '../types'
19+
import { VirtualMediaCollectionName, generateStemFromFsPath } from '../utils/media'
1820
import { oneStepActions, STUDIO_ITEM_ACTION_DEFINITIONS, twoStepActions, STUDIO_BRANCH_ACTION_DEFINITIONS } from '../utils/context'
1921
import type { useTree } from './useTree'
2022
import type { useGit } from './useGit'
@@ -23,7 +25,6 @@ import { useRoute, useRouter } from 'vue-router'
2325
import { findDescendantsFileItemsFromFsPath } from '../utils/tree'
2426
import { joinURL } from 'ufo'
2527
import { upperFirst } from 'scule'
26-
import { generateStemFromFsPath } from '../utils/media'
2728

2829
export const useContext = createSharedComposable((
2930
host: StudioHost,

src/app/src/composables/useDraftMedias.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
import { joinURL, withLeadingSlash } from 'ufo'
22
import type { DraftItem, StudioHost, MediaItem, RawFile } from '../types'
3-
import { VirtualMediaCollectionName } from '../types/media'
3+
import { VirtualMediaCollectionName, generateStemFromFsPath } from '../utils/media'
44
import { DraftStatus } from '../types/draft'
55
import type { useGit } from './useGit'
66
import { createSharedComposable } from '@vueuse/core'
77
import { useDraftBase } from './useDraftBase'
88
import { mediaStorage as storage } from '../utils/storage'
99
import { getFileExtension, slugifyFileName } from '../utils/file'
10-
import { generateStemFromFsPath } from '../utils/media'
1110
import { useHooks } from './useHooks'
1211

1312
const hooks = useHooks()

src/app/src/shared.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
export { generateContentFromDocument, generateDocumentFromContent, removeReservedKeysFromDocument } from './utils/content'
2-
export { VirtualMediaCollectionName } from './types/media'
2+
export { VirtualMediaCollectionName } from './utils/media'

src/app/src/types/media.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,3 @@ import type { BaseItem } from './item'
33
export interface MediaItem extends BaseItem {
44
[key: string]: unknown
55
}
6-
7-
export const VirtualMediaCollectionName = 'public-assets' as const

src/app/src/utils/media.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
11
export function generateStemFromFsPath(fsPath: string) {
22
return fsPath.split('.').slice(0, -1).join('.')
33
}
4+
5+
export const VirtualMediaCollectionName = 'public-assets' as const

src/app/test/mocks/host.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
import { type StudioHost, VirtualMediaCollectionName, type DatabaseItem } from '../../src/types'
1+
import type { StudioHost, DatabaseItem } from '../../src/types'
2+
import { VirtualMediaCollectionName } from '../../src/utils/media'
23
import { vi } from 'vitest'
34
import { createMockDocument } from './document'
45
import { createMockMedia } from './media'

src/app/test/unit/utils/tree.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import { DraftStatus, TreeStatus } from '../../../src/types'
99
import type { RouteLocationNormalized } from 'vue-router'
1010
import type { DatabaseItem } from '../../../src/types/database'
1111
import { joinURL, withLeadingSlash } from 'ufo'
12-
import { VirtualMediaCollectionName } from '../../../src/types/media'
12+
import { VirtualMediaCollectionName } from '../../../src/utils/media'
1313

1414
describe('buildTree of documents with one level of depth', () => {
1515
// Result based on dbItemsList mock

src/module/src/module.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import { createStorage } from 'unstorage'
77
import type { ViteDevServer } from 'vite'
88
import { getAssetsStorageDevTemplate, getAssetsStorageTemplate } from './templates'
99
import { version } from '../../../package.json'
10+
import { VirtualMediaCollectionName } from 'nuxt-studio/app/utils'
1011

1112
interface ModuleOptions {
1213
/**
@@ -205,7 +206,7 @@ export default defineNuxtModule<ModuleOptions>({
205206
server.ws.send({
206207
type: 'custom',
207208
event: 'nuxt-studio:media:update',
208-
data: { type, id: `public-assets/${file}` },
209+
data: { type, id: `${VirtualMediaCollectionName}/${file}` },
209210
})
210211
})
211212
},

src/module/src/runtime/server/routes/dev/public/[...path].ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,11 @@ import { createError, eventHandler, getRequestHeader, readRawBody, setResponseHe
33
import type { Storage, StorageMeta } from 'unstorage'
44
// @ts-expect-error useStorage is not defined in .nuxt/imports.d.ts
55
import { useStorage } from '#imports'
6+
import { VirtualMediaCollectionName } from 'nuxt-studio/app/utils'
67

78
export default eventHandler(async (event) => {
89
const path = event.path.replace('/__nuxt_studio/dev/public/', '')
9-
const key = path.replace(/\//g, ':').replace(/^public-assets:/, '')
10+
const key = path.replace(/\//g, ':').replace(new RegExp(`^${VirtualMediaCollectionName}:`), '')
1011
const storage = useStorage('nuxt_studio_public_assets') as Storage
1112

1213
// GET => getItem / getKeys
@@ -26,7 +27,7 @@ export default eventHandler(async (event) => {
2627
})
2728
}
2829
return {
29-
id: `public-assets/${key.replace(/:/g, '/')}`,
30+
id: `${VirtualMediaCollectionName}/${key.replace(/:/g, '/')}`,
3031
extension: key.split('.').pop(),
3132
stem: key.split('.').join('.'),
3233
path: '/' + key.replace(/:/g, '/'),

src/module/src/runtime/utils/media.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { join } from 'pathe'
2-
import { VirtualMediaCollectionName } from 'nuxt-studio/app'
2+
import { VirtualMediaCollectionName } from 'nuxt-studio/app/utils'
33

44
export function generateIdFromFsPath(fsPath: string) {
55
return join(VirtualMediaCollectionName, fsPath)

0 commit comments

Comments
 (0)