@lucidcms/core
Version:
The core of the Lucid CMS. It's responsible for spinning up the API and serving the CMS.
2 lines • 2.47 kB
JavaScript
import{copy as e}from"../../libs/i18n/copy.mjs";import t from"../../constants/constants.mjs";import n from"../../libs/repositories/preview-sessions.mjs";import r from"../collections/get-single-instance.mjs";import i,{requiresPinnedPreviewVersion as a}from"./helpers/resolve-preview-mode.mjs";import o from"../documents/helpers/validate-client-version-target.mjs";import s from"../documents/client/get-single.mjs";import c from"../../utils/helpers/hash-preview-token.mjs";import l from"../../utils/helpers/normalize-preview-url.mjs";import{randomBytes as u}from"node:crypto";const d=async(d,f)=>{let p=await o({versionType:f.versionType,versionId:f.versionId});if(p.error)return p;let m=await i({versionType:f.versionType,mode:f.mode});if(m.error)return m;let h=r(d,{key:f.collectionKey});if(h.error)return h;let g=h.data.config.preview;if(!g)return{error:{type:`basic`,message:e(`server:core.documents.preview.not.configured.message`),status:404},data:void 0};let _=await s(d,{collectionKey:f.collectionKey,versionType:f.versionType,versionId:p.data.versionId,query:{filter:{id:{value:f.documentId}},include:[`bricks`,`refs`,`meta`]}});if(_.error)return _;let v=_.data.meta?.versionId;if(typeof v!=`number`||!Number.isInteger(v))return{error:{type:`basic`,message:e(`server:core.documents.version.not.found.message`),status:404},data:void 0};let y={..._.data,id:f.documentId,collectionKey:f.collectionKey,version:f.versionType},b=f.locale?.trim()||d.config.localization.defaultLocale,x=u(32).toString(`base64url`),S;try{S=await g.url({document:y,env:d.env,locale:b,tenantKey:d.request.tenantKey??null})}catch{return{error:{type:`basic`,message:e(`server:core.documents.preview.url.invalid.message`),status:400},data:void 0}}if(S===null)return{error:void 0,data:{url:null,expiresAt:null}};let C=new Date(Date.now()+(g.expiresIn??t.collectionBuilder.previewExpirationSeconds)*1e3).toISOString(),w=await l(S,x);if(w.error)return w;if(w.data===null)return{error:void 0,data:{url:null,expiresAt:null}};let T=await new n(d.db.client,d.config.db).createSingle({data:{token_hash:c(x),entry_collection_key:f.collectionKey,entry_document_id:f.documentId,entry_version_type:f.versionType,mode:m.data,entry_version_id:a(f.versionType)?v:null,expires_at:C,created_by:f.creator.id,created_at:new Date().toISOString()},returning:[`id`],validation:{enabled:!0}});return T.error?T:{error:void 0,data:{url:w.data,expiresAt:C}}};export{d as default};
//# sourceMappingURL=create.mjs.map