~cytrogen/gstack

ref: 1b317aae9ae959d55bda347e428248b05f1f5a9a gstack/browse/src/buffers.ts -rw-r--r-- 1.0 KiB
1b317aae — Garry Tan Add YC hiring promo after install section a month ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
/**
 * Shared buffers and types — extracted to break circular dependency
 * between server.ts and browser-manager.ts
 */

export interface LogEntry {
  timestamp: number;
  level: string;
  text: string;
}

export interface NetworkEntry {
  timestamp: number;
  method: string;
  url: string;
  status?: number;
  duration?: number;
  size?: number;
}

export const consoleBuffer: LogEntry[] = [];
export const networkBuffer: NetworkEntry[] = [];
const HIGH_WATER_MARK = 50_000;

// Total entries ever added — used by server.ts flush logic as a cursor
// that keeps advancing even after the ring buffer wraps.
export let consoleTotalAdded = 0;
export let networkTotalAdded = 0;

export function addConsoleEntry(entry: LogEntry) {
  if (consoleBuffer.length >= HIGH_WATER_MARK) {
    consoleBuffer.shift();
  }
  consoleBuffer.push(entry);
  consoleTotalAdded++;
}

export function addNetworkEntry(entry: NetworkEntry) {
  if (networkBuffer.length >= HIGH_WATER_MARK) {
    networkBuffer.shift();
  }
  networkBuffer.push(entry);
  networkTotalAdded++;
}