@@ -6,35 +6,33 @@ function lqip(cfg, ctx) {
66 const r = resize ( { width : cfg . lqip } , ctx )
77 const f = format ( { format : 'webp' , quality : '20' } , ctx )
88 return async function ( image ) {
9- image = f ( r ( image ) )
10- const buffer = await image . toBuffer ( )
9+ const buffer = await f ( r ( image ) ) . toBuffer ( )
1110 setMetadata ( image , 'base64' , `data:image/webp;base64,${ buffer . toString ( 'base64' ) } ` )
1211 return image
1312 }
1413 }
1514}
1615
17- function set ( url , defaults = 'width=480;1024;1920&format=avif;webp;jpg' ) {
18- const merge = new URLSearchParams ( defaults )
19- for ( const [ key , val ] of url . searchParams . entries ( ) ) merge . set ( key , val )
20- return merge
21- }
22-
2316function main ( overrides = { } ) {
2417 return imagetools ( {
25- defaultDirectives : ( url ) => set ( url ) ,
18+ defaultDirectives : ( ) => new URLSearchParams ( 'width=480;1024;1920&format=avif;webp;jpg' ) ,
2619 extendTransforms : ( builtins ) => [ ...builtins , lqip ] ,
2720 extendOutputFormats : ( builtinOutputFormats ) => ( {
2821 ...builtinOutputFormats ,
2922 run : ( ) => metadataFormat ( [ 'format' , 'src' , 'width' , 'base64' ] )
3023 } ) ,
3124 resolveConfigs : ( e , f ) => {
32- const idx = e . findIndex ( ( i ) => i [ 0 ] === 'lqip' )
33- const lqip = idx > - 1 ? parseInt ( e . splice ( idx , 1 ) [ 0 ] [ 1 ] [ 0 ] ) : 16
34- return [ ...resolveConfigs ( e , f ) , { lqip } ]
25+ if ( e . findIndex ( ( i ) => i [ 0 ] === 'run' ) > - 1 ) {
26+ const idx = e . findIndex ( ( i ) => i [ 0 ] === 'lqip' )
27+ const lqip = idx > - 1 ? parseInt ( e . splice ( idx , 1 ) [ 0 ] [ 1 ] [ 0 ] ) : 16
28+ const merge = new Map ( )
29+ for ( const [ key , val ] of e ) merge . set ( key , val )
30+ return [ ...resolveConfigs ( [ ...merge ] , f ) , { lqip } ]
31+ }
32+ return resolveConfigs ( e , f )
3533 } ,
3634 ...overrides
3735 } )
3836}
3937
40- export { main as imagetools , set , lqip }
38+ export { main as imagetools , lqip }
0 commit comments