import { BaseType, ExtractArr, MergeAttrs, PickRelations, RelationKeys } from "./utils"; export type PickByType = { [P in keyof T as T[P] extends Value | undefined ? P : never]: T[P]; }; export type PayloadMeta = { pagination?: ({ start: number; limit: number; } | { page: number; pageSize: number; pageCount: number; }) & { total: number; }; }; export interface UserAttrs { username: string; email: string; provider: string; confirmed: boolean; blocked: boolean; createdAt: string; updatedAt: string; } export interface User> { id: number; attributes: T; } /** * type of data when post or put */ export type InputData = MergeAttrs & RelationData; export type RelationData = { [K in RelationKeys]?: MergeAttrs[K]["data"]>>; }; export type Relation = number[] | { id: number; }[]; export type RelationField = { connect?: Relation; disconnect?: Relation; set?: Relation; }; export type UserLogged = { user: T & { id: number; }; jwt: string; }; export type Payload = { data: T; meta: PayloadMeta; };