UNPKG

@lucidcms/core

Version:

The core of the Lucid CMS. It's responsible for spinning up the API and serving the CMS.

2 lines 2.06 kB
import{copy as e}from"../../libs/i18n/copy.mjs";import{resolveMediaKeyTenant as t}from"../../utils/media/media-key-tenant.mjs";import n from"../../utils/media/normalize-media-key.mjs";import r from"../../utils/media/generate-process-key.mjs";import i from"../../utils/media/is-processed-image-key.mjs";import a from"../../utils/media/resolve-processing-request.mjs";import o from"../media/checks/check-has-media-strategy.mjs";import s from"../processed-images/process-image.mjs";import c from"mime-types";const l=async(l,u)=>{let d=await o(l);if(d.error)return d;let f=n(u.key),p=i(f),m=t(l.config,f);if(p)return{error:{type:`basic`,status:404,name:e(`server:core.media.not.found.name`),message:e(`server:core.media.not.found.message`)},data:void 0};let h=a({presets:l.config.media.images.presets,allowFormatQuery:l.config.media.images.allowFormatQuery,query:u.query,accept:u.accept});if(!h.hasProcessing){let e=await d.data.stream(l,{key:f,ifNoneMatch:u.ifNoneMatch,range:u.range,tenant:m});return e.error?e:{error:void 0,data:{key:f,contentLength:e.data.contentLength,contentType:e.data.contentType,body:e.data.body,etag:e.data.etag,notModified:e.data.notModified,isPartialContent:e.data.isPartialContent,totalSize:e.data.totalSize,range:e.data.range}}}let g=h.format??null;if(!g){let e=await d.data.getMeta(l,{key:f,tenant:m});if(e.error)return e;g=c.extension(e.data.mimeType||``)||null}let _=r({key:f,extension:g,options:{format:h.format,quality:h.quality,width:h.width,height:h.height,fit:h.fit}}),v=await d.data.stream(l,{key:_,ifNoneMatch:u.ifNoneMatch,range:u.range,tenant:t(l.config,_)});return v.data?{error:void 0,data:{key:_,contentLength:v.data.contentLength,contentType:v.data.contentType,body:v.data.body,etag:v.data.etag,notModified:v.data.notModified,isPartialContent:v.data.isPartialContent,totalSize:v.data.totalSize,range:v.data.range}}:await s(l,{key:f,processKey:_,ifNoneMatch:u.ifNoneMatch,options:{format:h.format,quality:h.quality,width:h.width,height:h.height,fit:h.fit}})};export{l as default}; //# sourceMappingURL=stream-media.mjs.map