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.25 kB
import{copy as e}from"../../libs/i18n/copy.mjs";import t from"../../constants/constants.mjs";import n from"../../utils/helpers/get-base-url.mjs";import r from"../../libs/repositories/media-awaiting-sync.mjs";import i from"../../libs/repositories/media-upload-sessions.mjs";import{resolveMediaTenant as a}from"../../utils/media/media-key-tenant.mjs";import o from"../../utils/media/generate-key.mjs";import s from"./checks/check-can-store-media.mjs";import{addMilliseconds as c}from"date-fns";import l from"mime-types";const u=()=>globalThis.crypto.randomUUID(),d=async(d,f)=>{if(!d.media)return{error:{type:`basic`,status:400,message:e(`server:core.media.adapters.not.enabled`)},data:void 0};let p=await s(d,{size:f.size});if(p.error)return p;let m=l.extension(f.mimeType),h=o({name:f.fileName,public:f.public,tenantKey:d.request.tenantKey??null,temporary:f.temporary});if(h.error)return h;let g=a(d.config,d.request.tenantKey??null),_=await d.media.createUploadSession(d,{key:h.data,host:n(d),secretKey:d.config.secrets.cookie,mimeType:f.mimeType,extension:m||void 0,size:f.size,tenant:g});if(_.error)return{error:{type:`basic`,message:_.error.message,status:500,errors:{file:{code:`media_error`,message:_.error.message}}},data:void 0};let v=_.data.key;if(_.data.mode===`single`){let e=await new r(d.db.client,d.config.db).createSingle({data:{key:v,timestamp:new Date().toISOString()},returning:[`key`],validation:{enabled:!0}});return e.error?e:{error:void 0,data:{mode:`single`,key:v,url:_.data.url,headers:_.data.headers}}}let y=new i(d.db.client,d.config.db),b=u(),x=new Date().toISOString(),S=_.data.expiresAt??c(new Date,t.uploadSessionExpiration).toISOString(),C=await y.createSingle({data:{session_id:b,key:v,adapter_key:d.media.key,adapter_upload_id:_.data.uploadId,mode:`resumable`,status:`active`,file_name:f.fileName,mime_type:f.mimeType,file_extension:m||null,file_size:f.size,part_size:_.data.partSize,created_by:f.userId,created_at:x,updated_at:x,expires_at:S},returning:[`session_id`],validation:{enabled:!0}});return C.error?C:{error:void 0,data:{mode:`resumable`,key:v,sessionId:b,partSize:_.data.partSize,expiresAt:S,uploadedParts:_.data.uploadedParts}}};export{d as default}; //# sourceMappingURL=create-upload-session.mjs.map