UNPKG

@lucidcms/core

Version:

The core of the Lucid CMS. It's responsible for spinning up the API and serving the CMS.

2 lines 5.24 kB
import{adminCopyInputSchema as e}from"../../../i18n/copy.mjs";import t from"../../../../constants/constants.mjs";import n from"zod";const r=n.string().min(1).max(50).regex(/^[a-z0-9-_]+$/,{message:`Environment key must contain only lowercase letters, numbers, hyphens and underscores`}),i=n.string().min(1).max(50).regex(/^[a-z0-9-_]+$/,{message:`Collection group key must contain only lowercase letters, numbers, hyphens and underscores`}),a=n.string().min(1).max(50).regex(/^[a-z0-9-_]+$/,{message:`Preview breakpoint key must contain only lowercase letters, numbers, hyphens and underscores`}),o=n.string().min(1).max(t.db.maxBuilderKeyLength).regex(/^[a-z0-9-_]+$/,{message:`Collection key must contain only lowercase letters, numbers, hyphens and underscores`}).refine(e=>!e.includes(t.db.nameSeparator),{message:`Collection key cannot contain '${t.db.nameSeparator}'`}),s=n.object({key:n.string().min(1).max(t.db.maxBuilderKeyLength).regex(/^[a-z0-9-_]+$/,{message:`Collection key must contain only lowercase letters, numbers, hyphens and underscores`}).refine(e=>!e.includes(t.db.nameSeparator),{message:`Collection key cannot contain '${t.db.nameSeparator}'`}),mode:n.enum([`single`,`multiple`]),group:n.union([i,n.object({key:i,name:e.optional(),order:n.number().optional()})]).optional(),tenants:n.array(n.string().min(1)).optional(),details:n.object({name:e,singularName:e,summary:e.optional()}),locked:n.boolean().default(t.collectionBuilder.locked).optional(),localized:n.boolean().default(t.collectionBuilder.localized).optional(),revisions:n.boolean().default(t.collectionBuilder.revisions).optional(),autoSave:n.boolean().default(t.collectionBuilder.autoSave).optional(),scheduling:n.boolean().default(t.collectionBuilder.scheduling).optional(),orderable:n.boolean().default(t.collectionBuilder.orderable).optional(),review:n.object({requiredFor:n.array(n.string().min(1).max(50).regex(/^[a-z0-9-_]+$/)).optional(),allowSelfApproval:n.boolean().default(t.collectionBuilder.publishing.allowSelfApproval).optional(),comments:n.object({request:n.enum([`required`,`optional`]).default(t.collectionBuilder.publishing.comments.request).optional(),decision:n.enum([`required`,`optional`]).default(t.collectionBuilder.publishing.comments.decision).optional()}).optional()}).optional(),workflow:n.object({initial:n.string().min(1).max(50).regex(/^[a-z0-9-_]+$/).optional(),stages:n.array(n.object({key:n.string().min(1).max(50).regex(/^[a-z0-9-_]+$/),name:e,color:n.enum(t.collectionBuilder.publishing.workflow.stageColors).optional(),publishTargets:n.array(n.string().min(1).max(50).regex(/^[a-z0-9-_]+$/)).optional()})).min(1)}).optional(),environments:n.array(n.object({key:r.refine(e=>!t.collectionBuilder.protectedEnvironments.includes(e),{message:`Environment key cannot be one of the protected environments: ${t.collectionBuilder.protectedEnvironments.join(`, `)}`}),name:e,requires:n.array(r).optional(),collectionVersions:n.record(o,r).optional()})).optional(),revisionRetentionDays:n.union([n.number().int().positive(),n.literal(!1)]).default(t.collectionBuilder.revisionRetentionDays).optional(),preview:n.object({url:n.function(),expiresIn:n.number().int().positive().max(t.collectionBuilder.previewMaxExpirationSeconds).optional(),breakpoints:n.array(n.object({key:a,label:e,width:n.number().int().min(280).max(2560)})).optional()}).optional(),hooks:n.array(n.object({service:n.string(),event:n.string(),priority:n.number().optional(),handler:n.unknown()})).optional(),bricks:n.object({fixed:n.array(n.unknown()).optional(),builder:n.array(n.unknown()).optional()}).optional()}).superRefine((e,t)=>{let n=new Set(e.environments?.map(e=>e.key)??[]);for(let[r,i]of(e.environments??[]).entries())for(let[e,a]of(i.requires??[]).entries()){if(a===i.key){t.addIssue({code:`custom`,path:[`environments`,r,`requires`,e],message:`Environment "${i.key}" cannot require itself`});continue}n.has(a)||t.addIssue({code:`custom`,path:[`environments`,r,`requires`,e],message:`Environment requires target "${a}" must reference a configured environment`})}let r=e.review;for(let[e,i]of(r?.requiredFor??[]).entries())n.has(i)||t.addIssue({code:`custom`,path:[`review`,`requiredFor`,e],message:`Review requiredFor target "${i}" must reference a configured environment`});let i=e.preview?.breakpoints?.map(e=>e.key)??[],a=i.filter((e,t)=>i.indexOf(e)!==t);a.length>0&&t.addIssue({code:`custom`,path:[`preview`,`breakpoints`],message:`Preview breakpoint keys must be unique: ${Array.from(new Set(a)).join(`, `)}`});let o=e.workflow;if(!o)return;let s=o.stages.map(e=>e.key),c=s.filter((e,t)=>s.indexOf(e)!==t);c.length>0&&t.addIssue({code:`custom`,path:[`workflow`,`stages`],message:`Workflow stage keys must be unique: ${Array.from(new Set(c)).join(`, `)}`}),o.initial&&!s.includes(o.initial)&&t.addIssue({code:`custom`,path:[`workflow`,`initial`],message:`Workflow initial stage must reference one of the configured stages`});for(let[e,r]of o.stages.entries())for(let[i,a]of(r.publishTargets??[]).entries())n.has(a)||t.addIssue({code:`custom`,path:[`workflow`,`stages`,e,`publishTargets`,i],message:`Workflow publishTargets target "${a}" must reference a configured environment`})});export{s as default}; //# sourceMappingURL=schema.mjs.map