Review a live analytics chart

src/analytics-types.tsTypeScript
@@ -0,0 +1,28 @@
1+export interface AnalyticsRange {
2+ start: string;
3+ end: string;
4+}
5+
6+export interface AnalyticsPoint {
7+ timestamp: string;
8+ value: number;
9+}
10+
11+export interface AnalyticsSnapshot {
12+ range: AnalyticsRange;
13+ points: AnalyticsPoint[];
14+}
15+
16+export interface AnalyticsClient {
17+ fetchSnapshot(range: AnalyticsRange): Promise<AnalyticsSnapshot>;
18+}
19+
20+export interface ChartInstance {
21+ update(snapshot: AnalyticsSnapshot): void;
22+ resize(width: number, height: number): void;
23+ destroy(): void;
24+}
25+
26+export interface ChartFactory {
27+ create(canvas: HTMLCanvasElement, snapshot: AnalyticsSnapshot): ChartInstance;
28+}