UNPKG

@lucidcms/core

Version:

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

2 lines 9.66 kB
import{queryFormatted as e,queryString as t}from"./helpers/querystring.mjs";import{profilePictureResponseSchema as n}from"./media.mjs";import{fieldInputSchema as r}from"./collection-fields.mjs";import{brickInputSchema as i}from"./collection-bricks.mjs";import a from"zod";const o=8e6,s=a.enum([`low`,`high`,`auto`]).default(`low`),c=3840,l=655360,u=8294400,d=a.tuple([a.number(),a.number()]).superRefine(([e,t],n)=>{if(!(Number.isInteger(e)&&Number.isInteger(t)&&e>0&&t>0)){n.addIssue({code:`custom`,message:`Image width and height must be positive whole pixels.`});return}(e>c||t>c)&&n.addIssue({code:`custom`,message:`Image width and height must not exceed ${c}px.`}),(e%16!=0||t%16!=0)&&n.addIssue({code:`custom`,message:`Image width and height must be multiples of 16px.`}),Math.max(e,t)/Math.min(e,t)>3&&n.addIssue({code:`custom`,message:`Image long edge to short edge ratio must not exceed 3:1.`});let r=e*t;(r<l||r>u)&&n.addIssue({code:`custom`,message:`Image total pixels must be between ${l} and ${u}.`})}),f=a.object({size:a.union([a.enum([`auto`,`1024x1024`,`1536x1024`,`1024x1536`,`2048x2048`,`2048x1152`,`3840x2160`,`2160x3840`]),d],{error:`Image resolution must be a preset or custom width and height.`}).default(`1024x1024`),quality:a.enum([`auto`,`low`,`medium`,`high`]).default(`medium`),outputFormat:a.enum([`webp`,`png`,`jpeg`]).default(`webp`)}).strict().default({size:`1024x1024`,quality:`medium`,outputFormat:`webp`}),p=a.object({source:a.string().trim().min(2).max(32).optional(),target:a.array(a.string().trim().min(2).max(32)).min(1).superRefine((e,t)=>{new Set(e).size!==e.length&&t.addIssue({code:`custom`,message:`Target locales must be unique.`})})}).strict(),m=a.object({mode:a.enum([`sync`,`async`]),status:a.literal(`complete`).optional(),requestId:a.string(),feature:a.object({key:a.string(),version:a.string()}).strict(),output:a.unknown(),usage:a.object({model:a.string(),providerRequestId:a.string().optional(),tokens:a.object({input:a.object({text:a.number().int().nonnegative(),image:a.number().int().nonnegative(),audio:a.number().int().nonnegative(),cached:a.object({total:a.number().int().nonnegative(),text:a.number().int().nonnegative(),image:a.number().int().nonnegative(),audio:a.number().int().nonnegative()}).strict(),total:a.number().int().nonnegative()}).strict(),output:a.object({text:a.number().int().nonnegative(),image:a.number().int().nonnegative(),audio:a.number().int().nonnegative(),reasoning:a.number().int().nonnegative(),acceptedPrediction:a.number().int().nonnegative(),rejectedPrediction:a.number().int().nonnegative(),total:a.number().int().nonnegative()}).strict(),total:a.number().int().nonnegative()}).strict(),cost:a.object({currency:a.string(),totalCostMinor:a.number().int().nonnegative()}).strict()}).strict()}).strict(),h=a.object({mode:a.literal(`async`),requestId:a.string(),feature:a.object({key:a.string(),version:a.string()}).strict(),status:a.enum([`queued`,`processing`])}).strict(),g=a.object({key:a.literal(`media.image.generate`),version:a.literal(`v1`)}).strict(),_=h.extend({feature:g}),v=m.extend({feature:g,output:a.object({id:a.string(),url:a.string(),storageKey:a.string(),byteSize:a.number().int().nonnegative(),mimeType:a.string(),extension:a.string(),size:a.string(),quality:a.string(),outputFormat:a.string()}).strict()}),y=a.string().trim().regex(/^\d{4}-\d{2}-\d{2}$/),b=a.enum([`day`]),x=a.enum([`requests`,`totalTokens`,`cost`]),S={getUsageChart:{body:void 0,query:{string:a.object({dimension:b.optional().meta({description:`Groups chart points by the selected dimension.`,example:`day`}),metric:a.string().trim().superRefine((e,t)=>{let n=e.split(`,`).map(e=>e.trim()).filter(Boolean);if(n.length===0){t.addIssue({code:`custom`,message:`At least one metric must be provided.`});return}for(let e of n)x.safeParse(e).success||t.addIssue({code:`custom`,message:`Unsupported metric "${e}".`})}).optional().meta({description:`Comma-separated usage metrics to aggregate. Supported values are requests, totalTokens, and cost.`,example:`requests,totalTokens`}),startDate:y.optional().meta({description:`Inclusive chart start date in YYYY-MM-DD format.`,example:`2026-06-01`}),endDate:y.optional().meta({description:`Inclusive chart end date in YYYY-MM-DD format.`,example:`2026-06-07`}),"filter[featureKey]":t.schema.filter(!1,{example:`media.image.generate`})}).meta(t.meta),formatted:void 0},params:void 0,response:a.object({dimension:b,metrics:a.array(x),startDate:y,endDate:y,currency:a.string().nullable(),feature:a.object({key:a.string(),label:a.string()}).strict().nullable(),series:a.array(a.object({metric:x,points:a.array(a.object({date:y,value:a.number().nonnegative()}).strict())}).strict())}).strict()},getUsage:{body:void 0,query:{string:a.object({"filter[requestId]":t.schema.filter(!1,{example:`req_123`}),"filter[providerRequestId]":t.schema.filter(!1,{example:`provider_req_123`}),"filter[featureKey]":t.schema.filter(!1,{example:`media.image.generate`}),"filter[status]":t.schema.filter(!0,{example:`success`}),"filter[model]":t.schema.filter(!1,{example:`gpt-image-1`}),"filter[userId]":t.schema.filter(!0,{example:`1`}),"filter[featureVersion]":t.schema.filter(!1,{example:`1`}),"filter[targetType]":t.schema.filter(!1,{example:`media`}),"filter[durationMs]":t.schema.filter(!1,{example:`1000`}),"filter[createdAt]":t.schema.filter(!1,{example:`2026-01-01T00:00:00Z`}),sort:t.schema.sort(`createdAt,cost,durationMs`),page:t.schema.page,perPage:t.schema.perPage}).meta(t.meta),formatted:a.object({filter:a.object({requestId:e.schema.filters.single.optional(),providerRequestId:e.schema.filters.single.optional(),featureKey:e.schema.filters.single.optional(),featureVersion:e.schema.filters.single.optional(),status:e.schema.filters.union.optional(),model:e.schema.filters.single.optional(),userId:e.schema.filters.union.optional(),targetType:e.schema.filters.single.optional(),durationMs:e.schema.filters.single.optional(),createdAt:e.schema.filters.single.optional()}).optional(),filterOr:e.schema.filterOr,sort:a.array(a.object({key:a.enum([`createdAt`,`cost`,`durationMs`]),direction:a.enum([`asc`,`desc`])})).optional(),page:e.schema.page,perPage:e.schema.perPage})},params:void 0,response:a.array(a.object({id:a.number(),requestId:a.string(),providerRequestId:a.string().nullable(),feature:a.object({key:a.string(),label:a.string(),version:a.string()}).strict(),status:a.enum([`failed`,`pending`,`success`]),model:a.string().nullable(),createdAt:a.string().nullable(),durationMs:a.number().nullable(),errorMessage:a.string().nullable(),tokens:a.object({input:a.number().int().nonnegative(),output:a.number().int().nonnegative(),total:a.number().int().nonnegative()}).strict().nullable(),cost:a.object({currency:a.string(),totalCostMinor:a.number().int().nonnegative()}).strict().nullable(),target:a.object({type:a.string(),data:a.record(a.string(),a.unknown())}).strict(),user:a.object({id:a.number(),username:a.string(),email:a.email(),firstName:a.string().nullable(),lastName:a.string().nullable(),profilePicture:n.nullable()}).strict().nullable()}).strict())},customFieldInput:{body:a.object({instruction:a.string().trim().min(1).max(8e3).optional(),guidance:a.string().trim().min(1).optional(),value:a.record(a.string().trim().min(2).max(32),a.unknown()),document:a.object({fields:a.array(r).optional(),bricks:a.array(i).optional()}).strict().optional(),target:a.object({collectionKey:a.string().trim().min(1),brickKey:a.string().trim().min(1).optional(),fieldKey:a.string().trim().min(1)}).strict(),locale:p}).strict(),query:{string:void 0,formatted:void 0},params:void 0,response:m.extend({feature:a.object({key:a.literal(`custom-field.input.generate`),version:a.literal(`v1`)}).strict(),output:a.record(a.string().trim().min(2).max(32),a.unknown())})},mediaAlt:{body:a.object({instruction:a.string().trim().min(1).max(8e3).optional(),previousResponses:a.array(a.object({instruction:a.string().trim().min(1).max(8e3).optional(),output:a.record(a.string().trim().min(2).max(32),a.string().trim())}).strict()).optional(),image:a.object({data:a.string().trim().min(1).max(o),mimeType:a.literal(`image/webp`),detail:s,filename:a.string().trim().min(1).max(255).optional()}).strict(),media:a.object({id:a.union([a.string().trim().min(1),a.number()]).optional(),name:a.record(a.string().trim().min(2).max(32),a.string().trim()).optional(),alt:a.record(a.string().trim().min(2).max(32),a.string().trim()).optional()}).strict(),locale:p}).strict(),query:{string:void 0,formatted:void 0},params:void 0,response:m.extend({feature:a.object({key:a.literal(`media.alt.generate`),version:a.literal(`v1`)}).strict(),output:a.record(a.string().trim().min(2).max(32),a.string())})},mediaImageGenerate:{body:a.object({instruction:a.string().trim().min(1).max(8e3).optional(),guidance:a.string().trim().min(1).optional(),previousInstructions:a.array(a.string().trim().min(1).max(8e3)).max(10).optional(),image:a.discriminatedUnion(`type`,[a.object({type:a.literal(`url`),url:a.url().trim().max(2048),detail:s,filename:a.string().trim().min(1).max(255).optional(),mimeType:a.enum([`image/webp`,`image/png`,`image/jpeg`]).optional()}).strict(),a.object({type:a.literal(`base64`),data:a.string().trim().min(1).max(o),mimeType:a.enum([`image/webp`,`image/png`,`image/jpeg`]),detail:s,filename:a.string().trim().min(1).max(255).optional()}).strict()]).optional(),generation:f}).strict(),query:{string:void 0,formatted:void 0},params:void 0,response:_},mediaImageCompletion:{body:void 0,query:{string:void 0,formatted:void 0},params:a.object({requestId:a.uuid()}).strict(),response:a.union([_,v])}};export{S as controllerSchemas}; //# sourceMappingURL=ai.mjs.map