@lucidcms/core
Version:
The core of the Lucid CMS. It's responsible for spinning up the API and serving the CMS.
2 lines • 4.48 kB
JavaScript
import e from"../collection/helpers/prefix-generated-column-name.mjs";import{isStorageMode as t}from"../collection/custom-fields/storage/index.mjs";import n from"../collection/custom-fields/registered-fields.mjs";import r from"./document-bricks.mjs";import i from"./index.mjs";import a from"node:crypto";const o=(i,a)=>{let o=a.builder.fields.get(a.fieldConfig.key);if(!o)return[];let s=n[a.fieldConfig.type].config.database;if(!t(s,`relation-table`)){let t=e(a.fieldConfig.key);return i.brickRows.map(e=>({value:e[t],locale:e.locale}))}let c=r.getRelationRows({bricksQuery:i.bricksQuery,bricksSchema:i.bricksSchema,collectionKey:a.collection.key,brickKey:a.brickKey,fieldKey:a.fieldConfig.key,relationIds:i.brickRows.flatMap(e=>e.id),tableType:s.tableType});return a.localization.locales.map(e=>({value:c.filter(t=>t.locale===e).sort((e,t)=>e.position-t.position).reduce((e,t)=>{let n=o.extractRelationFieldValue(t);return n!==null&&e.push(n),e},[]),locale:e}))},s=e=>t(n[e].config.database,`tree-table`),c=e=>!s(e.type)||!(`fields`in e)||!Array.isArray(e.fields)?null:e.fields,l=(e,t)=>u(e,{builder:t.builder,fieldConfig:t.builder.persistedFieldTree,host:t.host,localization:t.localization,collection:t.collection,brickKey:t.brickKey,config:t.config,bricksTableSchema:t.bricksTableSchema}),u=(e,t)=>{let n=[];for(let r of t.fieldConfig){let i=c(r);if(i){n.push({key:r.key,type:r.type,groupRef:t.groupRef,groups:f(e,{builder:t.builder,treeFieldConfig:r,treeChildFields:i,host:t.host,localization:t.localization,collection:t.collection,brickKey:t.brickKey,treeLevel:t.treeLevel||0,groupRef:t.groupRef,config:t.config,bricksTableSchema:t.bricksTableSchema})});continue}let a=o(e,{builder:t.builder,fieldConfig:r,host:t.host,localization:t.localization,collection:t.collection,brickKey:t.brickKey,config:t.config,bricksTableSchema:t.bricksTableSchema}),s=d({values:a,refData:e.refData},{builder:t.builder,fieldConfig:r,host:t.host,localization:t.localization,collection:t.collection,brickKey:t.brickKey,config:t.config,groupRef:t.groupRef,bricksTableSchema:t.bricksTableSchema});s&&n.push(s)}return n},d=(e,t)=>{let n=t.builder.fields.get(t.fieldConfig.key);if(!n)return null;if(!s(t.fieldConfig.type)&&t.fieldConfig.type!==`tab`&&n.localizedEnabled===!0&&t.collection.getData.localized===!0){let r={};for(let i of t.localization.locales){let t=e.values.find(e=>e.locale===i);t?r[i]=n.formatResponseValue(t.value):r[i]=null}return{key:t.fieldConfig.key,type:t.fieldConfig.type,groupRef:t.groupRef,translations:r}}let r=e.values.find(e=>e.locale===t.localization.default);return r?{key:t.fieldConfig.key,type:t.fieldConfig.type,value:n.formatResponseValue(r.value),groupRef:t.groupRef}:null},f=(e,t)=>{let n=[],a=r.getBrickTreeRows({bricksQuery:e.bricksQuery,bricksSchema:e.bricksSchema,collectionKey:t.collection.key,brickKey:t.brickKey,treeFieldKey:t.treeFieldConfig.key,treeLevel:t.treeLevel,relationIds:e.brickRows.flatMap(e=>e.id)});return Map.groupBy(a,e=>e.position).forEach((r,a)=>{let o=r[0]?.is_open??!1,s=v(t.collection.key,t.brickKey,t.treeFieldConfig.key,a,t.treeLevel,t.groupRef);n.push({ref:s,order:a,open:i.formatBoolean(o),fields:u({brickRows:r,bricksQuery:e.bricksQuery,bricksSchema:e.bricksSchema,refData:e.refData},{builder:t.builder,host:t.host,localization:t.localization,collection:t.collection,brickKey:t.brickKey,fieldConfig:t.treeChildFields,treeLevel:t.treeLevel+1,config:t.config,groupRef:s,bricksTableSchema:t.bricksTableSchema})})}),n.sort((e,t)=>e.order-t.order)},p=e=>e.reduce((e,t)=>(t&&(e[t.key]={...t,groups:t.groups?.map(e=>({...e,fields:p(e.fields||[])}))}),e),{}),m=e=>e.groups?e.groups.map(e=>_(e.fields||[])):e.translations?e.translations:`value`in e?e.value:null,h=e=>e.type===`section`||e.type===`collapsible`,g=(e,t,n)=>{for(let r of n){if(r.type===`tab`){g(e,t,r.fields);continue}if(h(r)){if(r.output===`inline`)g(e,t,r.fields);else{let n={};g(n,t,r.fields),e[r.key]=n}continue}let n=t.get(r.key);if(n){if(n.groups){let t=`fields`in r&&Array.isArray(r.fields)?r.fields:void 0;e[r.key]=n.groups.map(e=>_(e.fields||[],t));continue}e[r.key]=m(n)}}},_=(e,t)=>{if(!t)return e.reduce((e,t)=>(t&&(e[t.key]=m(t)),e),{});let n=new Map(e.filter(e=>!!e).map(e=>[e.key,e])),r={};return g(r,n,t),r},v=(e,t,n,r,i,o)=>a.createHash(`sha256`).update(`${e}-${t||`document`}-${n}-${r}-${i}-${o||`root`}`).digest(`hex`).substring(0,36);var y={formatMultiple:l,objectifyFields:p,flattenFields:_};export{y as default};
//# sourceMappingURL=document-fields.mjs.map