@vulog/aima-core
Version:
46 lines (43 loc) • 1.46 kB
text/typescript
import { z } from 'zod';
type PaginableOptions<T> = {
page?: number;
pageSize?: number;
filters?: T;
};
declare const createPaginableOptionsSchema: <T extends z.ZodTypeAny>(optionsSchema: T) => z.ZodObject<{
page: z.ZodDefault<z.ZodNumber>;
pageSize: z.ZodDefault<z.ZodNumber>;
filters: z.ZodDefault<T>;
}, "strip", z.ZodTypeAny, z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
page: z.ZodDefault<z.ZodNumber>;
pageSize: z.ZodDefault<z.ZodNumber>;
filters: z.ZodDefault<T>;
}>, any> extends infer T_1 ? { [k in keyof T_1]: z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
page: z.ZodDefault<z.ZodNumber>;
pageSize: z.ZodDefault<z.ZodNumber>;
filters: z.ZodDefault<T>;
}>, any>[k]; } : never, z.baseObjectInputType<{
page: z.ZodDefault<z.ZodNumber>;
pageSize: z.ZodDefault<z.ZodNumber>;
filters: z.ZodDefault<T>;
}> extends infer T_2 ? { [k_1 in keyof T_2]: z.baseObjectInputType<{
page: z.ZodDefault<z.ZodNumber>;
pageSize: z.ZodDefault<z.ZodNumber>;
filters: z.ZodDefault<T>;
}>[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 };