UNPKG

@vulog/aima-core

Version:

51 lines (48 loc) 1.65 kB
import { z } from 'zod'; type PaginableOptions<T = void, S = string> = T extends void ? { page?: number; pageSize?: number; sort?: S; sortDirection?: 'ASC' | 'DESC'; } : { page?: number; pageSize?: number; sort?: S; sortDirection?: 'ASC' | 'DESC'; filters?: T; }; declare const createPaginableOptionsSchema: <T extends z.ZodTypeAny, S extends z.ZodTypeAny>(optionsSchema?: T, sortSchema?: S) => z.ZodObject<{ filters?: T | undefined; page: z.ZodDefault<z.ZodNumber>; pageSize: z.ZodDefault<z.ZodNumber>; sort: S; sortDirection: z.ZodDefault<z.ZodOptional<z.ZodEnum<["ASC", "DESC"]>>>; }, "strip", z.ZodTypeAny, z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{ filters?: T | undefined; page: z.ZodDefault<z.ZodNumber>; pageSize: z.ZodDefault<z.ZodNumber>; sort: S; sortDirection: z.ZodDefault<z.ZodOptional<z.ZodEnum<["ASC", "DESC"]>>>; }>, any> extends infer T_1 ? { [k in keyof T_1]: T_1[k]; } : never, z.baseObjectInputType<{ filters?: T | undefined; page: z.ZodDefault<z.ZodNumber>; pageSize: z.ZodDefault<z.ZodNumber>; sort: S; sortDirection: z.ZodDefault<z.ZodOptional<z.ZodEnum<["ASC", "DESC"]>>>; }> extends infer T_2 ? { [k_1 in keyof T_2]: T_2[k_1]; } : never>; type PaginableResponse<T> = { data: T[]; page: number; pageSize: number; total: number; totalPages: number; }; type PatchAction<T extends string> = { op: 'add' | 'replace'; path: T; value: string; } | { op: 'remove'; path: T; }; export { type PaginableOptions, type PaginableResponse, type PatchAction, createPaginableOptionsSchema };