@lucidcms/core
Version:
The core of the Lucid CMS. It's responsible for spinning up the API and serving the CMS.
2 lines • 2.95 kB
JavaScript
import{copy as e}from"../../../libs/i18n/copy.mjs";import t from"../../../constants/constants.mjs";import{tenantAccessAllowed as n}from"../../../utils/helpers/tenants.mjs";import{resolveCollectionPermission as r}from"../../../libs/permission/collection-permissions.mjs";import i from"../../../libs/permission/has-access.mjs";const a=[`pending`,`approved`],o=[`awaiting_approval`,`scheduled`,`executing`,`failed`],s=t.collectionBuilder.publishing.snapshotVersionType,c=`document-publish-operation:execute`,l=360*60*1e3,u=e=>{let t=e.getData.review?.requiredFor;if(t===void 0)return[];let n=e.getData.environments.map(e=>e.key);return t.filter(e=>n.includes(e))},d=e=>u(e.collection).includes(e.target),f=e=>{let t=e.collection.getData.environments.find(t=>t.key===e.target);return Array.from(new Set(t?.requires??[]))},p=e=>f({collection:e.collection,target:e.target}).filter(t=>e.contentIdsByTarget.get(t)!==e.sourceContentId),m=e=>e.collection.getData.environments.some(t=>t.key===e.target)&&e.collection.getData.scheduling===!0&&e.queueSupportsScheduling===!0,h=e=>{let t=e.now??new Date;return e.scheduledAt.getTime()<=t.getTime()+l},g=t=>{let n=t.scheduledAt!==void 0,r=t.scheduledTimezone!==void 0;if(!n&&!r)return{data:{scheduledAt:null,scheduledTimezone:null,scheduledDate:null,provided:!1}};if(t.scheduledAt===null)return{data:{scheduledAt:null,scheduledTimezone:null,scheduledDate:null,provided:!0}};if(!t.scheduledAt||!t.scheduledTimezone)return{error:{type:`basic`,message:e(`server:core.publish.operations.schedule.incomplete`),status:400}};let i=new Date(t.scheduledAt);if(Number.isNaN(i.getTime()))return{error:{type:`basic`,message:e(`server:core.publish.operations.schedule.invalid`),status:400}};if(i.getUTCSeconds()!==0||i.getUTCMilliseconds()!==0)return{error:{type:`basic`,message:e(`server:core.publish.operations.schedule.minute.precision`),status:400}};try{new Intl.DateTimeFormat(`en-US`,{timeZone:t.scheduledTimezone}).format(i)}catch{return{error:{type:`basic`,message:e(`server:core.publish.operations.schedule.timezone.invalid`),status:400}}}return{data:{scheduledAt:i.toISOString(),scheduledTimezone:t.scheduledTimezone,scheduledDate:i,provided:!0}}},_=e=>{let t=r({collection:e.collection,action:e.action});return i({user:e.user,requiredPermissions:[t]})},v=e=>e.config.collections.filter(t=>n(t.getData.tenants,e.tenantKey)).filter(t=>_({user:e.user,collection:t,action:`review`})).map(e=>e.key);export{a as activePublishOperationStatuses,d as canUsePublishOperationsForTarget,m as collectionTargetSupportsScheduling,u as getPublishOperationTargets,f as getReleaseRequirementTargets,v as getReviewableCollectionKeys,p as getUnmetReleaseRequirementTargets,_ as hasCollectionPermission,h as isInSchedulingDispatchWindow,g as parseScheduleInput,c as publishOperationExecuteEvent,l as schedulingDispatchWindowMs,s as snapshotVersionType,o as unresolvedPublishOperationExecutionStatuses};
//# sourceMappingURL=index.mjs.map