@@ -9,6 +9,8 @@ import { hasProtocol, joinURL } from 'ufo'
9
9
import { extname , join } from 'pathe'
10
10
import { filename } from 'pathe/utils'
11
11
import { hash } from 'ohash'
12
+ import { createStorage } from 'unstorage'
13
+ import fsDriver from 'unstorage/drivers/fs-lite'
12
14
13
15
import { logger } from './logger'
14
16
import { formatToExtension , parseFont } from './css/render'
@@ -54,11 +56,11 @@ export function setupPublicAssetStrategy (options: ModuleOptions['assets'] = {})
54
56
const url = renderedFontURLs . get ( event . path . slice ( 1 ) )
55
57
if ( ! url ) { throw createError ( { statusCode : 404 } ) }
56
58
const key = 'data:fonts:' + filename
57
- // Use nitro. storage to cache the font data between requests
58
- let res = await nitro . storage . getItemRaw ( key )
59
+ // Use storage to cache the font data between requests
60
+ let res = await storage . getItemRaw ( key )
59
61
if ( ! res ) {
60
62
res = await fetch ( url ) . then ( r => r . arrayBuffer ( ) ) . then ( r => Buffer . from ( r ) )
61
- await nitro . storage . setItemRaw ( key , res )
63
+ await storage . setItemRaw ( key , res )
62
64
}
63
65
return res
64
66
} )
@@ -86,15 +88,13 @@ export function setupPublicAssetStrategy (options: ModuleOptions['assets'] = {})
86
88
prerender : {
87
89
ignore : [ assetsBaseURL ]
88
90
} ,
89
- // TODO: refactor to use nitro storage when it can be cached between builds
90
- storage : {
91
- 'data:fonts:' : {
92
- driver : 'fs' ,
93
- base : 'node_modules/.cache/nuxt/fonts/data'
94
- }
95
- }
96
91
} satisfies NitroConfig )
97
92
93
+ // TODO: refactor to use nitro storage when it can be cached between builds
94
+ const storage = createStorage ( fsDriver ( {
95
+ base : 'node_modules/.cache/nuxt/fonts'
96
+ } ) )
97
+
98
98
nuxt . hook ( 'nitro:init' , async ( nitro ) => {
99
99
if ( nuxt . options . dev ) { return }
100
100
nitro . hooks . hook ( 'rollup:before' , async ( ) => {
@@ -103,16 +103,16 @@ export function setupPublicAssetStrategy (options: ModuleOptions['assets'] = {})
103
103
let banner = false
104
104
for ( const [ filename , url ] of renderedFontURLs ) {
105
105
const key = 'data:fonts:' + filename
106
- // Use nitro. storage to cache the font data between builds
107
- let res = await nitro . storage . getItemRaw ( key )
106
+ // Use storage to cache the font data between builds
107
+ let res = await storage . getItemRaw ( key )
108
108
if ( ! res ) {
109
109
if ( ! banner ) {
110
110
banner = true
111
111
logger . info ( 'Downloading fonts...' )
112
112
}
113
113
logger . log ( chalk . gray ( ' ├─ ' + url ) )
114
114
res = await fetch ( url ) . then ( r => r . arrayBuffer ( ) ) . then ( r => Buffer . from ( r ) )
115
- await nitro . storage . setItemRaw ( key , res )
115
+ await storage . setItemRaw ( key , res )
116
116
}
117
117
await fsp . writeFile ( join ( cacheDir , filename ) , res )
118
118
}
0 commit comments