@vulog/aima-core
Version:
51 lines (48 loc) • 1.65 kB
TypeScript
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 };