2022-12-13 04:45:38 +01:00
|
|
|
import { NextApiRequest } from 'next';
|
2023-03-23 22:01:15 +01:00
|
|
|
import { EVENT_DATA_TYPE, EVENT_TYPE, KAFKA_TOPIC, ROLES } from './constants';
|
2023-03-03 07:48:30 +01:00
|
|
|
|
|
|
|
type ObjectValues<T> = T[keyof T];
|
|
|
|
|
|
|
|
export type Roles = ObjectValues<typeof ROLES>;
|
2022-12-13 04:45:38 +01:00
|
|
|
|
2023-03-23 22:01:15 +01:00
|
|
|
export type EventTypes = ObjectValues<typeof EVENT_TYPE>;
|
|
|
|
|
|
|
|
export type EventDataTypes = ObjectValues<typeof EVENT_DATA_TYPE>;
|
|
|
|
|
|
|
|
export type KafkaTopics = ObjectValues<typeof KAFKA_TOPIC>;
|
|
|
|
|
|
|
|
export interface EventData {
|
|
|
|
[key: string]: number | string | EventData | number[] | string[] | EventData[];
|
|
|
|
}
|
2022-12-13 04:45:38 +01:00
|
|
|
export interface Auth {
|
|
|
|
user?: {
|
|
|
|
id: string;
|
|
|
|
username: string;
|
|
|
|
role: string;
|
|
|
|
isAdmin: boolean;
|
|
|
|
};
|
2022-12-13 20:27:55 +01:00
|
|
|
shareToken?: {
|
|
|
|
websiteId: string;
|
|
|
|
};
|
2022-12-13 04:45:38 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
export interface NextApiRequestQueryBody<TQuery = any, TBody = any> extends NextApiRequest {
|
|
|
|
auth?: Auth;
|
|
|
|
query: TQuery & { [key: string]: string | string[] };
|
|
|
|
body: TBody;
|
|
|
|
headers: any;
|
|
|
|
}
|
|
|
|
|
|
|
|
export interface NextApiRequestAuth extends NextApiRequest {
|
|
|
|
auth?: Auth;
|
|
|
|
headers: any;
|
|
|
|
}
|
|
|
|
|
2023-02-28 05:03:04 +01:00
|
|
|
export interface User {
|
|
|
|
id: string;
|
|
|
|
username: string;
|
|
|
|
password?: string;
|
|
|
|
createdAt?: Date;
|
|
|
|
}
|
|
|
|
|
2022-12-13 04:45:38 +01:00
|
|
|
export interface Website {
|
|
|
|
id: string;
|
|
|
|
userId: string;
|
|
|
|
revId: number;
|
|
|
|
name: string;
|
|
|
|
domain: string;
|
|
|
|
shareId: string;
|
|
|
|
createdAt: Date;
|
|
|
|
}
|
|
|
|
|
|
|
|
export interface Share {
|
|
|
|
id: string;
|
|
|
|
token: string;
|
|
|
|
}
|
|
|
|
|
|
|
|
export interface WebsiteActive {
|
|
|
|
x: number;
|
|
|
|
}
|
|
|
|
|
|
|
|
export interface WebsiteMetric {
|
|
|
|
x: string;
|
|
|
|
y: number;
|
|
|
|
}
|
|
|
|
|
|
|
|
export interface WebsiteEventMetric {
|
|
|
|
x: string;
|
|
|
|
t: string;
|
|
|
|
y: number;
|
|
|
|
}
|
|
|
|
|
2023-03-23 22:01:15 +01:00
|
|
|
export interface WebsiteEventDataMetric {
|
|
|
|
x: string;
|
|
|
|
t: string;
|
|
|
|
eventName?: string;
|
|
|
|
urlPath?: string;
|
|
|
|
}
|
|
|
|
|
2022-12-13 04:45:38 +01:00
|
|
|
export interface WebsitePageviews {
|
|
|
|
pageviews: {
|
|
|
|
t: string;
|
|
|
|
y: number;
|
|
|
|
};
|
|
|
|
sessions: {
|
|
|
|
t: string;
|
|
|
|
y: number;
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
export interface WebsiteStats {
|
|
|
|
pageviews: { value: number; change: number };
|
|
|
|
uniques: { value: number; change: number };
|
|
|
|
bounces: { value: number; change: number };
|
|
|
|
totalTime: { value: number; change: number };
|
|
|
|
}
|
|
|
|
|
|
|
|
export interface RealtimeInit {
|
|
|
|
websites: Website[];
|
|
|
|
token: string;
|
|
|
|
data: RealtimeUpdate;
|
|
|
|
}
|
|
|
|
|
|
|
|
export interface RealtimeUpdate {
|
|
|
|
pageviews: any[];
|
|
|
|
sessions: any[];
|
|
|
|
events: any[];
|
|
|
|
timestamp: number;
|
|
|
|
}
|