Skip to content
This repository was archived by the owner on Dec 20, 2023. It is now read-only.

Commit 96b4a96

Browse files
fix: module imports
1 parent c2066df commit 96b4a96

File tree

8 files changed

+801
-23
lines changed

8 files changed

+801
-23
lines changed

pnpm-lock.yaml

Lines changed: 767 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/runtime/components/MediaGalleryItem.vue

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ onMounted(() => {
1515
const image = new Image()
1616
image.onerror = async () => {
1717
image.onerror = null
18+
// @ts-ignore
1819
fileStat.value = await $fetch(`/_media-viewer/stats?key=${props.assetKey}`)
1920
isImage.value = false
2021
}

src/runtime/components/MediaPreview.vue

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ watchEffect(async () => {
3030
return
3131
}
3232
33+
// @ts-ignore
3334
previewState.stats = await $fetch(`/_media-viewer/stats?key=${selectedAssetKey.value}`)
3435
3536
// reset preview state

src/runtime/pages/index.vue

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<script setup lang="ts">
22
import { ref, computed } from 'vue'
33
// @ts-ignore
4-
import { useRouter, useRoute, useAsyncData, useHead } from '#app'
4+
import { useRouter, useRoute, useHead, useFetch } from '#app'
55
import { onKeyStroke } from '@vueuse/core'
66
77
import MediaGallery from '../components/MediaGallery.vue'
@@ -15,14 +15,7 @@ const route = useRoute()
1515
const selectedAssetKey = computed(() => route.hash ? route.hash.substring(1) : '')
1616
1717
// list available assets
18-
const { data: assets } = useAsyncData(async () => {
19-
const data = await $fetch<string[]>('/_media-viewer/ls')
20-
21-
// sort by path/name to keep same order as in file system
22-
data.sort()
23-
24-
return data
25-
})
18+
const { data: assets } = useFetch('/_media-viewer/ls')
2619
2720
// extract directories/extensions filters
2821
const directoriesKeysPrefix = computed(() => {

src/runtime/server/dev-routes/ls.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,14 @@
1+
import { defineEventHandler } from 'h3'
2+
// @ts-ignore
3+
// eslint-disable-next-line import/named
4+
import { useStorage } from '#imports'
5+
16
export default defineEventHandler(async () => {
27
const storage = useStorage()
38
const keys = await storage.getKeys('root:public')
49

10+
// sort by path/name to keep same order as in file system
11+
keys.sort()
12+
513
return keys
614
})

src/runtime/server/dev-routes/stats.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,11 @@ import { exec } from 'child_process'
33
import { promisify } from 'util'
44
import sizeOf from 'image-size'
55
import { join } from 'pathe'
6-
import { AssetImageDimentions, AssetStats } from '../../shared'
7-
import { type ISizeCalculationResult, type ISize } from 'image-size/dist/types/interface'
6+
import { type ISize } from 'image-size/dist/types/interface'
7+
import { defineEventHandler, getQuery } from 'h3'
8+
import { AssetStats } from '../../shared'
9+
// @ts-ignore
10+
import { useRuntimeConfig } from '#imports'
811

912
const execPromise = promisify(exec)
1013
const sizeOfPromise = promisify(sizeOf)
@@ -92,7 +95,7 @@ export default defineEventHandler(async (event) => {
9295
}
9396

9497
// extract images specific informations
95-
const dimensions: ISize & { mode?: 'portrait' | 'landscape' | 'square'; aspect?: string } | undefined = mimetype.startsWith('image/') ? await sizeOfPromise(absolutePath).then(r => r) : undefined
98+
const dimensions: ISize & { mode?: 'portrait' | 'landscape' | 'square'; aspect?: string } | undefined = mimetype.startsWith('image/') ? await sizeOfPromise(absolutePath).then(r => r) : undefined
9699
const source = mimetype.startsWith('image/svg') ? await fsp.readFile(absolutePath, 'utf-8') : undefined
97100

98101
// compute mode and aspect ratio

src/runtime/server/middlewares/ipx.ts

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,13 @@
33
// initial goal was to not use /_ipx prefix and plug this middleware directly on public folder but seems not possible
44

55
import { createIPX } from 'ipx'
6-
import { send, appendHeader } from 'h3'
6+
import { send, appendHeader, defineEventHandler, setResponseStatus, getHeader } from 'h3'
77
import qs from 'qs'
88
import getEtag from 'etag'
9-
109
// @ts-ignore
10+
// eslint-disable-next-line import/named
11+
import { useRuntimeConfig } from '#imports'
12+
1113
const config = useRuntimeConfig()
1214
const dir = config.mediaViewer.publicRoot
1315

@@ -18,11 +20,12 @@ const ipx = createIPX({
1820

1921
// @ts-ignore
2022
export default defineEventHandler(async (event) => {
21-
if (!event.req.url.startsWith('/_ipx')) {
23+
const url = event.node.req.url
24+
if (!url || !url.startsWith('/_ipx')) {
2225
return
2326
}
2427

25-
const [originalPath, query] = event.req.url.replace('/_ipx', '').split('?')
28+
const [originalPath, query] = url.replace('/_ipx', '').split('?')
2629
const modifiers = qs.parse(query) as Record<string, string>
2730
const img = ipx(originalPath, modifiers, {})
2831

@@ -35,9 +38,10 @@ export default defineEventHandler(async (event) => {
3538

3639
// Caching headers
3740
if (src.mtime) {
38-
if (event.req.headers['if-modified-since']) {
39-
if (new Date(event.req.headers['if-modified-since']) >= src.mtime) {
40-
event.res.statusCode = 304
41+
const ifModifiedSince = getHeader(event, 'if-modified-since')
42+
if (ifModifiedSince) {
43+
if (new Date(ifModifiedSince) >= src.mtime) {
44+
event.node.res.statusCode = 304
4145
return null
4246
}
4347
}
@@ -53,8 +57,8 @@ export default defineEventHandler(async (event) => {
5357
// ETag
5458
const etag = getEtag(data)
5559
appendHeader(event, 'ETag', etag)
56-
if (etag && event.req.headers['if-none-match'] === etag) {
57-
event.res.statusCode = 304
60+
if (etag && event.node.req.headers['if-none-match'] === etag) {
61+
setResponseStatus(event, 304)
5862
return null
5963
}
6064

@@ -65,6 +69,6 @@ export default defineEventHandler(async (event) => {
6569
const statusMessage = error.message ? `IPX Error (${error.message})` : `IPX Error (${statusCode})`
6670
console.error(statusMessage)
6771

68-
event.res.statusCode = statusCode
72+
setResponseStatus(event, statusCode)
6973
}
7074
})

src/runtime/shared/snippets/index.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1+
import type { PreviewState } from '../preview'
12
import { generateHtmlSnippet } from './html'
23
import { generateInlineSvgSnippet } from './inline'
34
import { generateNuxtImageSnippet } from './nuxt-image'
45

5-
export function generateSnippet (previewState) {
6+
export function generateSnippet (previewState: PreviewState) {
67
// @ts-ignore
78
if (!previewState.stats || process.server) {
89
return ''

0 commit comments

Comments
 (0)