UNPKG

@lucidcms/core

Version:

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

2 lines 2.54 kB
import e from"zod";const t=e.enum([`=`,`!=`,`>`,`>=`,`<`,`<=`,`in`,`not-in`,`is`,`is-not`,`contains`,`not-contains`,`starts-with`,`not-starts-with`,`ends-with`,`not-ends-with`]).optional(),n={schema:{filter:(t=!1,n)=>e.string().trim().meta({description:t?n?.description||`Accepts multiple values separated by commas.`:(n?.description||`Accepts a single value only.`)+(n?.nullable?` Leave empty for null comparison`:``),example:n?.example}).optional(),sort:t=>e.string().trim().meta({description:`Orders results using comma-separated field names. Prefix with - for descending order.`,example:t}).optional(),include:t=>e.string().trim().meta({description:`Specifies related resources to include in response as comma-separated values`,example:t}).optional(),exclude:t=>e.string().trim().meta({description:`Defines fields to exclude from response as comma-separated values`,example:t}).optional(),page:e.string().trim().regex(/^[1-9][0-9]*$/).describe(`Specifies the page number for pagination (must be a positive integer)`).optional(),perPage:e.string().trim().regex(/^([1-9][0-9]*|-1)$/).describe(`Sets the number of items per page (use positive integer or -1 for all items)`).optional()},meta:{patternProperties:{"^filter\\[([^\\]:]+):?([^\\]]*)\\]$":{type:[`string`,`null`],description:`Dynamic filter parameter in format filter[fieldName:operator]. Supported operators include: '=', '!=', '>', '>=', '<', '<=', 'in', 'not-in', 'is', 'is-not', 'contains', 'not-contains', 'starts-with', 'not-starts-with', 'ends-with' and 'not-ends-with'. Text-filter values are literal, including '%', '_' and backslashes. Text matching is case-insensitive according to the database adapter and collation.`},"^filter\\[or\\]\\[[0-9]+\\]\\[([^\\]:]+):?([^\\]]*)\\]$":{type:[`string`,`null`],description:`Grouped OR filter parameter in format filter[or][groupIndex][fieldName:operator]. Conditions within a group are ANDed, groups are ORed.`}},additionalProperties:!1}},r={schema:{filters:{single:e.object({value:e.union([e.string(),e.number(),e.boolean(),e.null()]),operator:t}),union:e.object({value:e.union([e.string(),e.array(e.string()),e.number(),e.array(e.number()),e.boolean(),e.array(e.boolean())]),operator:t})},filterOr:e.array(e.array(e.object({key:e.string(),value:e.union([e.string(),e.array(e.string()),e.number(),e.array(e.number()),e.boolean(),e.array(e.boolean()),e.null()]),operator:t}))).optional(),page:e.number(),perPage:e.number()}};export{t as filterOperators,r as queryFormatted,n as queryString}; //# sourceMappingURL=querystring.mjs.map