UNPKG

@lucidcms/core

Version:

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

2 lines 6.3 kB
import{adminCopyInputSchema as e}from"../i18n/copy.mjs";import t from"../../constants/constants.mjs";import{AuthProviderSchema as n}from"../auth-providers/schema.mjs";import{LogLevelSchema as r,LogTransportSchema as i}from"../logger/schema.mjs";import a from"zod";const o=a.custom(e=>typeof e==`function`,{message:`Expected an HTTP extension register function`}),s=a.object({name:a.string().trim().min(1),priority:a.union([a.literal(0),a.literal(1),a.literal(2)]),register:o}),c=a.custom(e=>typeof e==`object`&&!!e,{message:`Expected a Lucid route definition`}),l=a.custom(e=>typeof e==`function`||typeof e==`object`,{message:`Expected an ImageProcessor function`}),u=a.custom(e=>typeof e==`function`||typeof e==`object`,{message:`Expected a QueueAdapter function`}),d=a.custom(e=>typeof e==`function`||typeof e==`object`,{message:`Expected a KVAdapter function`}),f=a.custom(e=>typeof e==`function`||typeof e==`object`,{message:`Expected a MediaAdapter function`}),p=a.custom(e=>typeof e==`function`||typeof e==`object`,{message:`Expected an EmailAdapter function`}),m=a.object({defaultSrc:a.array(a.string()).optional(),baseUri:a.array(a.string()).optional(),childSrc:a.array(a.string()).optional(),connectSrc:a.array(a.string()).optional(),fontSrc:a.array(a.string()).optional(),formAction:a.array(a.string()).optional(),frameAncestors:a.array(a.string()).optional(),frameSrc:a.array(a.string()).optional(),imgSrc:a.array(a.string()).optional(),manifestSrc:a.array(a.string()).optional(),mediaSrc:a.array(a.string()).optional(),objectSrc:a.array(a.string()).optional(),sandbox:a.array(a.string()).optional(),scriptSrc:a.array(a.string()).optional(),scriptSrcAttr:a.array(a.string()).optional(),scriptSrcElem:a.array(a.string()).optional(),styleSrc:a.array(a.string()).optional(),styleSrcAttr:a.array(a.string()).optional(),styleSrcElem:a.array(a.string()).optional(),upgradeInsecureRequests:a.array(a.string()).optional(),workerSrc:a.array(a.string()).optional(),requireTrustedTypesFor:a.array(a.string()).optional(),trustedTypes:a.array(a.string()).optional()}).optional(),h=a.union([a.boolean(),a.string()]),g=e=>t.media.reservedTenantKeys.includes(e),_=e=>/^[a-f0-9]{32}$/i.test(e),v=a.object({db:a.unknown(),host:a.string().trim().min(1).optional(),http:a.object({security:a.object({trustProxyHeaders:a.boolean().optional(),cors:a.object({origin:a.array(a.string()).optional(),allowHeaders:a.array(a.string()).optional()}).optional(),headers:a.object({contentSecurityPolicy:m,strictTransportSecurity:h.optional(),xFrameOptions:h.optional(),referrerPolicy:h.optional(),crossOriginResourcePolicy:h.optional(),crossOriginOpenerPolicy:h.optional(),crossOriginEmbedderPolicy:h.optional()}).optional()}).optional(),openAPI:a.object({enabled:a.boolean()}).optional(),routes:a.array(c).optional(),extensions:a.array(s).optional()}).optional(),secrets:a.object({encryption:a.string().length(64),cookie:a.string().length(64),accessToken:a.string().length(64),refreshToken:a.string().length(64)}),logger:a.object({level:r,transport:i.optional()}),auth:a.object({password:a.object({enabled:a.boolean().optional()}),providers:a.array(n).optional()}).optional(),ai:a.object({enabled:a.boolean(),features:a.object({imageGeneration:a.boolean(),altGeneration:a.boolean(),customFieldGeneration:a.boolean()})}),localization:a.object({locales:a.array(a.object({label:a.string(),code:a.string(),direction:a.enum([`ltr`,`rtl`]).default(`ltr`).optional()})),defaultLocale:a.string()}).optional(),tenants:a.array(a.object({key:a.string().min(2).refine(e=>!g(e),{message:`Tenant key cannot be one of: ${t.media.reservedTenantKeys.join(`, `)}`}).refine(e=>!_(e),{message:`Tenant key cannot match a generated media ID.`}),name:e,default:a.boolean().optional()})).optional(),i18n:a.object({locales:a.array(a.object({label:a.string(),code:a.string(),direction:a.enum([`ltr`,`rtl`]).default(`ltr`).optional()})),defaultLocale:a.string(),sources:a.array(a.union([a.string(),a.instanceof(URL)])).optional()}).optional(),migrations:a.object({sources:a.array(a.union([a.string(),a.instanceof(URL),a.object({name:a.string(),migration:a.custom(e=>typeof e==`function`,{message:`Expected a migration function`})})])).optional()}).optional(),email:a.object({from:a.object({email:a.string(),name:a.string()}).optional(),simulate:a.boolean().optional(),resendWindowDays:a.number().int().min(0).optional(),adapter:p.optional(),templates:a.object({directory:a.string().optional(),rendered:a.record(a.string(),a.string()).optional()}).optional()}).optional(),media:a.object({adapter:f.optional(),limits:a.object({storageBytes:a.union([a.number(),a.literal(!1)]),uploadBytes:a.number(),processedImagesPerFile:a.number()}),images:a.object({processor:l.optional(),presets:a.record(a.string(),a.object({width:a.number().optional(),height:a.number().optional(),fit:a.enum([`cover`,`contain`,`fill`,`inside`,`outside`]).optional(),format:a.union([a.literal(`webp`),a.literal(`avif`),a.literal(`jpeg`),a.literal(`png`)]).optional(),quality:a.number().optional()})),storeProcessed:a.boolean(),allowFormatQuery:a.boolean(),fallbackUrl:a.string().optional()}),video:a.object({fallbackUrl:a.string().optional()})}),hooks:a.array(a.object({service:a.string(),event:a.string(),priority:a.number().optional(),handler:a.unknown()})),queue:a.object({adapter:u.optional()}).optional(),kv:a.object({adapter:d.optional(),namespace:a.union([a.string().min(1),a.literal(!1)]).optional()}).optional(),collections:a.array(a.unknown()),plugins:a.array(a.unknown()),build:a.object({paths:a.object({outDir:a.string().optional(),copyPublic:a.array(a.union([a.string(),a.object({input:a.string(),output:a.string().optional()})])).optional()}).optional(),watch:a.object({ignore:a.array(a.string()).optional()}).optional()}).optional(),retention:a.object({defaultPurgeAfterDays:a.number().int().positive().optional(),purgeAfterDays:a.object({removedLocales:a.number().int().positive().optional(),deletedUsers:a.number().int().positive().optional(),deletedMedia:a.number().int().positive().optional(),removedCollections:a.number().int().positive().optional(),deletedDocuments:a.number().int().positive().optional()}).optional()}).optional(),brand:a.object({name:a.string().optional()}).optional()});export{v as default}; //# sourceMappingURL=config-schema.mjs.map