Files
Shadowbroker/frontend/src/lib/uwClient.ts
T
anoracleofra-code 668ce16dc7 v0.9.6: InfoNet hashchain, Wormhole gate encryption, mesh reputation, 16 community contributors
Gate messages now propagate via the Infonet hashchain as encrypted blobs — every node syncs them
through normal chain sync while only Gate members with MLS keys can decrypt. Added mesh reputation
system, peer push workers, voluntary Wormhole opt-in for node participation, fork recovery,
killwormhole scripts, obfuscated terminology, and hardened the self-updater to protect encryption
keys and chain state during updates.

New features: Shodan search, train tracking, Sentinel Hub imagery, 8 new intelligence layers,
CCTV expansion to 11,000+ cameras across 6 countries, Mesh Terminal CLI, prediction markets,
desktop-shell scaffold, and comprehensive mesh test suite (215 frontend + backend tests passing).

Community contributors: @wa1id, @AlborzNazari, @adust09, @Xpirix, @imqdcr, @csysp, @suranyami,
@chr0n1x, @johan-martensson, @singularfailure, @smithbh, @OrfeoTerkuci, @deuza, @tm-const,
@Elhard1, @ttulttul
2026-03-26 05:58:04 -06:00

37 lines
1.1 KiB
TypeScript

import { API_BASE } from '@/lib/api';
import type {
UWCongressResponse,
UWInsiderResponse,
UWStatusResponse,
} from '@/types/unusualWhales';
async function postJson<T>(path: string): Promise<T> {
const res = await fetch(`${API_BASE}${path}`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: '{}',
});
const data = await res.json().catch(() => ({}));
if (!res.ok) {
throw new Error(String((data as { detail?: string }).detail || 'Request failed'));
}
return data as T;
}
export async function fetchUWStatus(): Promise<UWStatusResponse> {
const res = await fetch(`${API_BASE}/api/tools/uw/status`);
const data = await res.json().catch(() => ({}));
if (!res.ok) {
throw new Error(String((data as { detail?: string }).detail || 'Failed to load Finnhub status'));
}
return data as UWStatusResponse;
}
export function fetchCongressTrades() {
return postJson<UWCongressResponse>('/api/tools/uw/congress');
}
export function fetchInsiderTransactions() {
return postJson<UWInsiderResponse>('/api/tools/uw/darkpool');
}