@lucidcms/core
Version:
The core of the Lucid CMS. It's responsible for spinning up the API and serving the CMS.
2 lines • 3.58 kB
JavaScript
import{copy as e}from"../../../libs/i18n/copy.mjs";import t from"../../../utils/helpers/apply-default-query-filters.mjs";import n from"../../../utils/helpers/get-base-url.mjs";import r from"../../../libs/repositories/documents.mjs";import{getCollectionClientScope as i}from"../../../libs/permission/client-scopes.mjs";import{getBricksTableSchema as a,getTableNames as o}from"../../../libs/collection/schema/runtime/runtime-schema-selectors.mjs";import s from"../../collections/get-single-instance.mjs";import c from"../helpers/resolve-relation-version-type.mjs";import l from"../../preview-sessions/authorize.mjs";import u from"../helpers/resolve-document-includes.mjs";import d from"../helpers/resolve-relation-document-filters.mjs";import f from"../helpers/validate-client-version-target.mjs";import p from"../../documents-bricks/get-multiple.mjs";import m,{groupDocumentFilterConditions as h}from"../../../utils/helpers/group-document-filters.mjs";import g from"../../../libs/formatters/documents.mjs";const _=async(_,v)=>{let y=await f({versionType:v.versionType,versionId:v.versionId});if(y.error)return y;let b=v.versionType,x=y.data.versionId,S;if(v.preview!==void 0){let e=await l(_,{token:v.preview,collectionKey:v.collectionKey,versionType:b,versionId:x});if(e.error)return e;S=e.data,S.mode===`scoped`&&S.target===`entry`?(b=S.entry.versionType,x=S.entry.versionId):(b=S.versionType,x=S.versionId)}let C=new r(_.db.client,_.config.db),w=s(_,{key:v.collectionKey});if(w.error)return w;let T=v.clientScopes?_.config.collections.filter(e=>v.clientScopes?.includes(i(e.key))).map(e=>e.key):void 0,E=await a(_,v.collectionKey);if(E.error)return E;let D=await o(_,v.collectionKey);if(D.error)return D;let O={...v.query,filter:{...t(v.query.filter,{isDeleted:{value:_.config.db.getDefault(`boolean`,`false`)}}),...S?.mode===`scoped`&&S.target===`entry`?{id:{value:S.entry.documentId}}:{}}},k=u(O.include),A=await c(_,{collectionKey:v.collectionKey,documentId:S?.mode===`scoped`&&S.target===`entry`?S.entry.documentId:void 0,versionId:x,versionType:b});if(A.error)return A;let j=await d(_,{collection:w.data,bricksTableSchema:E.data,filter:O.filter,filterOr:O.filterOr,relationVersionType:A.data.versionType,resolveVersionType:A.data.resolveVersionType,allowedCollectionKeys:T});if(j.error)return j;let{documentFilters:M,brickFilters:N}=m(E.data,O.filter,{relationCollectionDefaults:j.data.relationCollectionDefaults}),P=O.filterOr?.map((e,t)=>({...h(E.data,e,{relationCollectionDefaults:j.data.relationCollectionDefaults}),relationDocumentFilters:j.data.filterOr[t]??[]})),F=await C.selectSingleFiltered({version:b,versionId:x,query:O,documentFilters:M,filterOr:P,brickFilters:N,relationDocumentFilters:j.data.filters,collection:w.data,config:_.config,relationVersionType:A.data.versionType,tenantKey:_.request.tenantKey,tables:{versions:D.data.version}},{tableName:D.data.document});if(F.error)return F;if(!F.data?.version_id)return{error:{message:e(`server:core.documents.not.found.message`),status:404},data:void 0};let I=await p(_,{versionId:F.data.version_id,collectionKey:w.data.key,versionType:A.data.versionType,resolveVersionType:A.data.resolveVersionType,includeBricks:k.bricks,includeRefs:k.refs,refTypes:k.refTypes,flattenRelationRefFields:!0,allowedDocumentCollectionKeys:T});return I.error?I:{error:void 0,data:g.formatClientSingle({document:F.data,collection:w.data,bricks:I.data.bricks,fields:I.data.fields,config:_.config,refs:I.data.refs,host:n(_),include:{bricks:k.bricks,refs:k.refs,meta:k.meta}})}};export{_ as default};
//# sourceMappingURL=get-single.mjs.map