/
t3
/
cli
Обзор
Документация
Войти
/
t3
/
cli
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
master
types/t3.ts
109 строк
2 KB
Ivan
fix TUI metrics
09 июл 2026, 15:21
09 июл 2026, 15:21
f8d1b63
Код
Авторство
О чём код?
// Standalone stub implementations of the t3 SDK. // These stubs work without the T3 runtime being present. // When running inside the T3 engine, the engine injects a native // "t3" global object — these functions delegate to it so that // custom metrics are registered in the T3 metrics registry. // Outside the engine (e.g. unit tests), local stubs are used. function nativeT3(): any { return (globalThis as any).t3; } export interface Counter { add(n: number, tags?: Record<string, string>): void; value(): number; } export interface Gauge { set(v: number): void; value(): number; } export interface HistogramOptions { quantiles?: number[]; } export interface Histogram { record(v: number): void; } export function Counter(name: string): Counter { const t3 = nativeT3(); if (t3) { return t3.Counter(name) as Counter; } let v = 0; return { add(n: number): void { v += n; }, value(): number { return v; }, }; } export function Gauge(name: string): Gauge { const t3 = nativeT3(); if (t3) { return t3.Gauge(name) as Gauge; } let v = 0; return { set(n: number): void { v = n; }, value(): number { return v; }, }; } export function Histogram(name: string, opts?: HistogramOptions): Histogram { const t3 = nativeT3(); if (t3) { return t3.Histogram(name, opts) as Histogram; } return { record(_v: number): void { /* noop */ }, }; } // --- HTTP Bridge stubs --- export interface ResponseTime { ttfb: number; total: number; } export interface HttpResponse { status: number; statusText: string; headers: Record<string, string>; responseTime: ResponseTime; text(): string; json(): any; arrayBuffer(): ArrayBuffer; } export interface RequestOptions { method?: string; body?: string; headers?: Record<string, string>; } export interface HttpClientConfig { baseURL?: string; headers?: Record<string, string>; insecureSkipVerify?: boolean; tlsCert?: string | any; tlsKey?: string | any; timeoutMs?: number; } export interface HttpClient { fetch(url: string, options?: RequestOptions): HttpResponse; } export interface HttpBridge { newClient(config: HttpClientConfig): HttpClient; } // Override T3 type to include http declare module './t3' { interface T3 { http: HttpBridge; } }