diff options
| author | Fuwn <[email protected]> | 2026-01-24 13:09:50 +0000 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2026-01-24 13:09:50 +0000 |
| commit | 396acf3bbbe00a192cb0ea0a9ccf91b1d8d2850b (patch) | |
| tree | b9df4ca6a70db45cfffbae6fdd7252e20fb8e93c /src/lib/types.ts | |
| download | umami-396acf3bbbe00a192cb0ea0a9ccf91b1d8d2850b.tar.xz umami-396acf3bbbe00a192cb0ea0a9ccf91b1d8d2850b.zip | |
Created from https://vercel.com/new
Diffstat (limited to 'src/lib/types.ts')
| -rw-r--r-- | src/lib/types.ts | 143 |
1 files changed, 143 insertions, 0 deletions
diff --git a/src/lib/types.ts b/src/lib/types.ts new file mode 100644 index 0000000..9c06197 --- /dev/null +++ b/src/lib/types.ts @@ -0,0 +1,143 @@ +import type { UseQueryOptions } from '@tanstack/react-query'; +import type { DATA_TYPE, OPERATORS, ROLES } from './constants'; +import type { TIME_UNIT } from './date'; + +export type ObjectValues<T> = T[keyof T]; + +export type ReactQueryOptions<T = any> = Omit<UseQueryOptions<T, Error, T>, 'queryKey' | 'queryFn'>; + +export type TimeUnit = ObjectValues<typeof TIME_UNIT>; +export type Role = ObjectValues<typeof ROLES>; +export type DynamicDataType = ObjectValues<typeof DATA_TYPE>; +export type Operator = (typeof OPERATORS)[keyof typeof OPERATORS]; + +export interface Auth { + user?: { + id: string; + username: string; + role: string; + isAdmin: boolean; + }; + shareToken?: { + websiteId: string; + }; +} + +export interface Filter { + name: string; + operator: Operator; + value: string; + type?: string; + column?: string; + prefix?: string; +} + +export interface DateRange { + startDate: Date; + endDate: Date; + value?: string; + unit?: TimeUnit; + num?: number; + offset?: number; +} + +export interface DynamicData { + [key: string]: number | string | number[] | string[]; +} + +export interface QueryOptions { + joinSession?: boolean; + columns?: Record<string, string>; + limit?: number; + prefix?: string; + isCohort?: boolean; +} + +export interface QueryFilters + extends DateParams, + FilterParams, + SortParams, + PageParams, + SegmentParams { + cohortFilters?: QueryFilters; +} + +export interface DateParams { + startDate?: Date; + endDate?: Date; + unit?: string; + timezone?: string; + compareDate?: Date; +} + +export interface FilterParams { + path?: string; + referrer?: string; + title?: string; + query?: string; + host?: string; + os?: string; + browser?: string; + device?: string; + country?: string; + region?: string; + city?: string; + language?: string; + event?: string; + search?: string; + tag?: string; + eventType?: number; + segment?: string; + cohort?: string; + compare?: string; +} + +export interface SortParams { + orderBy?: string; + sortDescending?: boolean; +} + +export interface PageParams { + page?: number; + pageSize?: number; +} + +export interface SegmentParams { + segment?: string; + cohort?: string; +} + +export interface PageResult<T> { + data: T; + count: number; + page: number; + pageSize: number; + orderBy?: string; + sortDescending?: boolean; + search?: string; +} + +export interface RealtimeData { + countries: Record<string, number>; + events: any[]; + pageviews: any[]; + referrers: Record<string, number>; + timestamp: number; + series: { + views: any[]; + visitors: any[]; + }; + totals: { + views: number; + visitors: number; + events: number; + countries: number; + }; + urls: Record<string, number>; + visitors: any[]; +} + +export interface ApiError extends Error { + code?: string; + message: string; +} |