@lucidcms/core
Version:
The core of the Lucid CMS. It's responsible for spinning up the API and serving the CMS.
2 lines • 7.43 kB
JavaScript
import{copy as e}from"../../libs/i18n/copy.mjs";import t from"../../constants/constants.mjs";import n from"../../libs/repositories/media.mjs";import r from"../../libs/repositories/media-awaiting-sync.mjs";import i from"../../libs/repositories/media-translations.mjs";import a from"../../utils/media/get-key-visibility.mjs";import o from"../../utils/media/change-key-visibility.mjs";import s from"../../libs/kv/cache-keys.mjs";import c from"../../libs/hooks/execute-hooks.mjs";import{invalidateHttpCacheTags as l}from"../../libs/kv/http-cache.mjs";import u from"./checks/check-media-key-access.mjs";import d from"./checks/check-awaiting-sync.mjs";import f from"../media-folders/checks/check-folder-access.mjs";import p from"./helpers/check-folder-tenant-compatibility.mjs";import m from"./helpers/prepare-media-translations.mjs";import h from"./helpers/resolve-ai-generation.mjs";import g from"./helpers/resolve-poster.mjs";import _ from"./helpers/sync-owned-visibility.mjs";import v from"./helpers/upsert-crop.mjs";import ee from"./helpers/clear-client-media-cache.mjs";import y from"./helpers/permanently-delete-media.mjs";import b from"./strategies/rename.mjs";import x from"./strategies/update.mjs";import S from"./helpers/deactivate-crop.mjs";import C from"../processed-images/clear-single.mjs";import w from"../../libs/formatters/index.mjs";const T=async(T,E)=>{let D=new n(T.db.client,T.config.db),O=new i(T.db.client,T.config.db),k=new r(T.db.client,T.config.db),A=await f(T,{folderId:E.folderId});if(A.error)return A;let j=await D.selectSingleById({id:E.id,tenantKey:T.request.tenantKey,includeOwned:!0,validation:{enabled:!0,defaultError:{message:e(`server:core.media.not.found.message`),status:404}}});if(j.error)return j;if(j.data.relation_type===`crop`)return{error:{type:`basic`,status:404,message:e(`server:core.media.not.found.message`)},data:void 0};if(E.crop&&j.data.type!==`image`)return{error:{type:`basic`,status:400,message:e(`server:core.media.errors.image.only`)},data:void 0};let M=p({folderId:E.folderId,folderTenantKey:A.data?.tenant_key??null,mediaTenantKey:j.data.tenant_key});if(M.error)return M;if(E.focalPoint!==void 0&&j.data.type!==`image`)return{error:{type:`basic`,status:400,errors:{focalPoint:{code:`media_error`,message:e(`server:core.media.errors.focal.point.image.only`)}}},data:void 0};if(E.posterId!==void 0&&E.posterId!==null){let e=await g(T,{posterId:E.posterId,parentId:E.id});if(e.error)return e}if(E.key!==void 0&&E.fileName===void 0)return{error:{type:`basic`,status:400,errors:{file:{code:`media_error`,message:e(`server:core.media.errors.missing.file.name`)}}},data:void 0};let N,P,F=w.formatBoolean(j.data.public),I=E.public??F;if(E.key!==void 0&&E.fileName!==void 0){let e=await u(T,{key:E.key});if(e.error)return e;let n=await d(T,{key:E.key});if(n.error)return n;let r=await x(T,{previousSize:j.data.file_size,previousKey:j.data.key,tenantKey:j.data.tenant_key,previousType:j.data.type,previousEtag:j.data.e_tag,updatedKey:E.key,allowedType:E.allowedType,fileName:E.fileName,targetKey:I===F?j.data.key:o({key:j.data.key,visibility:I?t.media.visibilityKeys.public:t.media.visibilityKeys.private})});if(r.error)return r;N=r.data}let L=N?.type??j.data.type,R=m({title:E.title||[],alt:L===`image`?E.alt??[]:[],description:L===`video`||L===`audio`?E.description??[]:[],summary:L===`document`?E.summary??[]:[],mediaId:j.data.id});if(E.posterId!=null&&L!==`video`)return{error:{type:`basic`,status:400,message:e(`server:core.media.poster.video.only`)},data:void 0};if(E.focalPoint!==void 0&&L!==`image`)return{error:{type:`basic`,status:400,errors:{focalPoint:{code:`media_error`,message:e(`server:core.media.errors.focal.point.image.only`)}}},data:void 0};if(E.key===void 0&&E.public!==void 0&&F!==E.public){let e=E.public?t.media.visibilityKeys.public:t.media.visibilityKeys.private,n=o({key:j.data.key,visibility:e}),r=await b(T,{from:j.data.key,to:n});if(r.error)return r;P=n}let z=N?.key?a(N.key):P?a(P):void 0,B=z===void 0?void 0:z===t.media.visibilityKeys.public,V=j.data.crop?.[0],H=j.data.type===`image`&&(N!==void 0||P!==void 0||E.focalPoint!==void 0&&V===void 0),U=V!==void 0&&E.focalPoint!==void 0&&E.crop===void 0&&N===void 0,W=await h(T,{origin:E.origin,aiGenerationRequestId:E.aiGenerationRequestId});if(W.error)return W;let G={key:N?.key??P,e_tag:N?.etag,origin:E.origin,ai_generation_id:W.data,type:N?.type,mime_type:N?.mimeType,file_extension:N?.extension,file_name:E.fileName,file_size:N?.size,width:E.width,height:E.height,focal_x:L===`image`?V!==void 0&&N===void 0||E.focalPoint===void 0?void 0:E.focalPoint===null?null:Math.round(E.focalPoint.x*1e4):null,focal_y:L===`image`?V!==void 0&&N===void 0||E.focalPoint===void 0?void 0:E.focalPoint===null?null:Math.round(E.focalPoint.y*1e4):null,blur_hash:E.blurHash,average_color:E.averageColor,base64:L===`image`?E.base64:null,is_dark:E.isDark,is_light:E.isLight,folder_id:E.folderId,public:B??E.public,is_deleted:E.isDeleted,is_deleted_at:E.isDeleted?new Date().toISOString():E.isDeleted===!1?null:void 0,deleted_by:E.isDeleted?E.userId:E.isDeleted===!1?null:void 0,updated_at:new Date().toISOString(),updated_by:E.userId},[K,q,J,Y,X]=await Promise.all([D.updateSingle({where:[{key:`id`,operator:`=`,value:E.id}],data:G,returning:[`id`],validation:{enabled:!0}}),R.length>0?O.upsertMultiple({data:R,returning:[`id`],validation:{enabled:!0}}):Promise.resolve({error:void 0,data:void 0}),H?C(T,{id:j.data.id,key:j.data.key}):Promise.resolve({error:void 0,data:void 0}),U?C(T,{key:V.key}):Promise.resolve({error:void 0,data:void 0}),U?D.updateSingle({where:[{key:`id`,operator:`=`,value:V.id}],data:{focal_x:E.focalPoint===null?null:Math.round((E.focalPoint?.x??0)*1e4),focal_y:E.focalPoint===null?null:Math.round((E.focalPoint?.y??0)*1e4),updated_at:new Date().toISOString(),updated_by:E.userId},returning:[`id`]}):Promise.resolve({error:void 0,data:void 0})]);if(K.error)return K;if(q.error)return q;if(J.error)return J;if(Y.error)return Y;if(X.error)return X;let Z=j.data.poster?.[0]?.id??null;if(E.posterId!==void 0&&Z!==null&&E.posterId!==Z&&Z!==null){let e=await y(T,{id:Z,invalidateCache:!1});if(e.error)return e}if(E.posterId!==void 0&&E.posterId!==null){let e=await D.updateSingle({where:[{key:`id`,operator:`=`,value:E.posterId}],data:{is_hidden:!0,folder_id:null,parent_media_id:j.data.id,relation_type:`poster`,updated_at:new Date().toISOString(),updated_by:E.userId},validation:{enabled:!0}});if(e.error)return e}if(E.crop===null||N!==void 0&&E.crop===void 0){let e=await S(T,{parentId:j.data.id,userId:E.userId});if(e.error)return e}if(E.crop){let e=await v(T,{parent:{id:j.data.id,key:N?.key??P??j.data.key,type:L,origin:E.origin??j.data.origin,public:B??E.public??j.data.public,tenant_key:j.data.tenant_key,relation_type:j.data.relation_type},crop:E.crop,userId:E.userId});if(e.error)return e}let Q=await _(T,{parentId:j.data.id,public:B??E.public??F,userId:E.userId});if(Q.error)return Q;if(N!==void 0&&N.sourceDeleted!==!1&&E.key!==void 0){let e=await k.deleteSingle({where:[{key:`key`,operator:`=`,value:E.key}],returning:[`key`],validation:{enabled:!0}});if(e.error)return e}await Promise.all([ee(T,E.id),l(T,[s.http.tags.clientMedia])]);let $=await c(T,{service:`media`,event:`afterUpdate`,config:T.config},{meta:{tenantKey:T.request.tenantKey??null},data:{id:K.data.id,userId:E.userId}});return $.error?$:{error:void 0,data:K.data.id}};export{T as default};
//# sourceMappingURL=update-single.mjs.map