@hookbase/cli 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +107 -0
- package/dist/commands/api-keys.d.ts +15 -0
- package/dist/commands/api-keys.d.ts.map +1 -0
- package/dist/commands/api-keys.js +143 -0
- package/dist/commands/api-keys.js.map +1 -0
- package/dist/commands/dashboard.d.ts +3 -0
- package/dist/commands/dashboard.d.ts.map +1 -0
- package/dist/commands/dashboard.js +26 -0
- package/dist/commands/dashboard.js.map +1 -0
- package/dist/commands/deliveries.d.ts +22 -0
- package/dist/commands/deliveries.d.ts.map +1 -0
- package/dist/commands/deliveries.js +223 -0
- package/dist/commands/deliveries.js.map +1 -0
- package/dist/commands/destinations.d.ts +29 -0
- package/dist/commands/destinations.d.ts.map +1 -0
- package/dist/commands/destinations.js +232 -0
- package/dist/commands/destinations.js.map +1 -0
- package/dist/commands/events.d.ts +13 -0
- package/dist/commands/events.d.ts.map +1 -0
- package/dist/commands/events.js +192 -0
- package/dist/commands/events.js.map +1 -0
- package/dist/commands/forward.d.ts +2 -0
- package/dist/commands/forward.d.ts.map +1 -0
- package/dist/commands/forward.js +25 -0
- package/dist/commands/forward.js.map +1 -0
- package/dist/commands/login.d.ts +2 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +91 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/logout.d.ts +2 -0
- package/dist/commands/logout.d.ts.map +1 -0
- package/dist/commands/logout.js +12 -0
- package/dist/commands/logout.js.map +1 -0
- package/dist/commands/logs.d.ts +5 -0
- package/dist/commands/logs.d.ts.map +1 -0
- package/dist/commands/logs.js +43 -0
- package/dist/commands/logs.js.map +1 -0
- package/dist/commands/routes.d.ts +28 -0
- package/dist/commands/routes.d.ts.map +1 -0
- package/dist/commands/routes.js +225 -0
- package/dist/commands/routes.js.map +1 -0
- package/dist/commands/sources.d.ts +30 -0
- package/dist/commands/sources.d.ts.map +1 -0
- package/dist/commands/sources.js +256 -0
- package/dist/commands/sources.js.map +1 -0
- package/dist/commands/tunnel.d.ts +6 -0
- package/dist/commands/tunnel.d.ts.map +1 -0
- package/dist/commands/tunnel.js +150 -0
- package/dist/commands/tunnel.js.map +1 -0
- package/dist/commands/tunnels.d.ts +32 -0
- package/dist/commands/tunnels.d.ts.map +1 -0
- package/dist/commands/tunnels.js +432 -0
- package/dist/commands/tunnels.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +430 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/api.d.ts +472 -0
- package/dist/lib/api.d.ts.map +1 -0
- package/dist/lib/api.js +480 -0
- package/dist/lib/api.js.map +1 -0
- package/dist/lib/config.d.ts +31 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +98 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/logger.d.ts +19 -0
- package/dist/lib/logger.d.ts.map +1 -0
- package/dist/lib/logger.js +90 -0
- package/dist/lib/logger.js.map +1 -0
- package/dist/lib/tunnel.d.ts +28 -0
- package/dist/lib/tunnel.d.ts.map +1 -0
- package/dist/lib/tunnel.js +197 -0
- package/dist/lib/tunnel.js.map +1 -0
- package/dist/tui/App.d.ts +2 -0
- package/dist/tui/App.d.ts.map +1 -0
- package/dist/tui/App.js +136 -0
- package/dist/tui/App.js.map +1 -0
- package/dist/tui/Dashboard.d.ts +2 -0
- package/dist/tui/Dashboard.d.ts.map +1 -0
- package/dist/tui/Dashboard.js +113 -0
- package/dist/tui/Dashboard.js.map +1 -0
- package/dist/tui/TunnelMonitor.d.ts +2 -0
- package/dist/tui/TunnelMonitor.d.ts.map +1 -0
- package/dist/tui/TunnelMonitor.js +131 -0
- package/dist/tui/TunnelMonitor.js.map +1 -0
- package/dist/tui/components/Box.d.ts +22 -0
- package/dist/tui/components/Box.d.ts.map +1 -0
- package/dist/tui/components/Box.js +27 -0
- package/dist/tui/components/Box.js.map +1 -0
- package/dist/tui/views/Analytics.d.ts +6 -0
- package/dist/tui/views/Analytics.d.ts.map +1 -0
- package/dist/tui/views/Analytics.js +104 -0
- package/dist/tui/views/Analytics.js.map +1 -0
- package/dist/tui/views/Destinations.d.ts +10 -0
- package/dist/tui/views/Destinations.d.ts.map +1 -0
- package/dist/tui/views/Destinations.js +156 -0
- package/dist/tui/views/Destinations.js.map +1 -0
- package/dist/tui/views/Events.d.ts +9 -0
- package/dist/tui/views/Events.d.ts.map +1 -0
- package/dist/tui/views/Events.js +60 -0
- package/dist/tui/views/Events.js.map +1 -0
- package/dist/tui/views/Overview.d.ts +13 -0
- package/dist/tui/views/Overview.d.ts.map +1 -0
- package/dist/tui/views/Overview.js +29 -0
- package/dist/tui/views/Overview.js.map +1 -0
- package/dist/tui/views/Sources.d.ts +10 -0
- package/dist/tui/views/Sources.d.ts.map +1 -0
- package/dist/tui/views/Sources.js +151 -0
- package/dist/tui/views/Sources.js.map +1 -0
- package/dist/tui/views/Tunnels.d.ts +10 -0
- package/dist/tui/views/Tunnels.d.ts.map +1 -0
- package/dist/tui/views/Tunnels.js +283 -0
- package/dist/tui/views/Tunnels.js.map +1 -0
- package/package.json +62 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Dashboard.js","sourceRoot":"","sources":["../../src/tui/Dashboard.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TunnelMonitor.d.ts","sourceRoot":"","sources":["../../src/tui/TunnelMonitor.tsx"],"names":[],"mappings":"AAqQA,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,iBAGpE"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useState, useEffect, useCallback } from 'react';
|
|
3
|
+
import { render, Box, Text, useInput, useApp } from 'ink';
|
|
4
|
+
import Spinner from 'ink-spinner';
|
|
5
|
+
import { Panel, StatusBadge } from './components/Box.js';
|
|
6
|
+
import * as api from '../lib/api.js';
|
|
7
|
+
import * as config from '../lib/config.js';
|
|
8
|
+
import { TunnelClient } from '../lib/tunnel.js';
|
|
9
|
+
function Header({ tunnel, connected }) {
|
|
10
|
+
return (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsxs(Box, { children: [_jsxs(Text, { bold: true, color: "cyan", children: [' ', "Tunnel Monitor", ' '] }), _jsx(Text, { dimColor: true, children: " | Press 'q' to quit, 'c' to clear" })] }), tunnel && (_jsx(Box, { marginTop: 1, children: _jsxs(Text, { children: [_jsx(Text, { bold: true, children: tunnel.name }), _jsxs(Text, { dimColor: true, children: [" (", tunnel.subdomain, ") "] }), _jsx(StatusBadge, { status: connected ? 'success' : 'pending', label: connected ? 'connected' : 'connecting...' })] }) }))] }));
|
|
11
|
+
}
|
|
12
|
+
function RequestList({ requests }) {
|
|
13
|
+
const getMethodColor = (method) => {
|
|
14
|
+
switch (method) {
|
|
15
|
+
case 'GET': return 'cyan';
|
|
16
|
+
case 'POST': return 'green';
|
|
17
|
+
case 'PUT': return 'yellow';
|
|
18
|
+
case 'DELETE': return 'red';
|
|
19
|
+
case 'PATCH': return 'magenta';
|
|
20
|
+
default: return 'white';
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
const getStatusColor = (status) => {
|
|
24
|
+
if (status >= 200 && status < 300)
|
|
25
|
+
return 'green';
|
|
26
|
+
if (status >= 300 && status < 400)
|
|
27
|
+
return 'yellow';
|
|
28
|
+
if (status >= 400 && status < 500)
|
|
29
|
+
return 'red';
|
|
30
|
+
if (status >= 500)
|
|
31
|
+
return 'red';
|
|
32
|
+
return 'gray';
|
|
33
|
+
};
|
|
34
|
+
if (requests.length === 0) {
|
|
35
|
+
return (_jsx(Panel, { title: "Requests", borderColor: "gray", children: _jsx(Text, { dimColor: true, children: "Waiting for incoming requests..." }) }));
|
|
36
|
+
}
|
|
37
|
+
return (_jsx(Panel, { title: `Requests (${requests.length})`, borderColor: "green", children: _jsx(Box, { flexDirection: "column", children: requests.slice(-15).map(req => (_jsxs(Box, { children: [_jsx(Box, { width: 10, children: _jsx(Text, { dimColor: true, children: req.timestamp.toLocaleTimeString() }) }), _jsx(Box, { width: 8, children: _jsx(Text, { color: getMethodColor(req.method), bold: true, children: req.method }) }), _jsx(Box, { width: 40, children: _jsx(Text, { children: req.path.slice(0, 38) }) }), _jsx(Box, { width: 6, children: _jsx(Text, { color: getStatusColor(req.status), children: req.status }) }), _jsxs(Text, { dimColor: true, children: [req.duration, "ms"] })] }, req.id))) }) }));
|
|
38
|
+
}
|
|
39
|
+
function Stats({ requests, tunnel }) {
|
|
40
|
+
const successCount = requests.filter(r => r.status >= 200 && r.status < 300).length;
|
|
41
|
+
const errorCount = requests.filter(r => r.status >= 400).length;
|
|
42
|
+
const avgDuration = requests.length > 0
|
|
43
|
+
? Math.round(requests.reduce((sum, r) => sum + r.duration, 0) / requests.length)
|
|
44
|
+
: 0;
|
|
45
|
+
return (_jsxs(Box, { flexDirection: "row", marginTop: 1, children: [_jsxs(Box, { marginRight: 4, children: [_jsx(Text, { dimColor: true, children: "Total: " }), _jsx(Text, { bold: true, children: (tunnel?.total_requests || 0) + requests.length })] }), _jsxs(Box, { marginRight: 4, children: [_jsx(Text, { dimColor: true, children: "Session: " }), _jsx(Text, { bold: true, color: "blue", children: requests.length })] }), _jsxs(Box, { marginRight: 4, children: [_jsx(Text, { dimColor: true, children: "Success: " }), _jsx(Text, { bold: true, color: "green", children: successCount })] }), _jsxs(Box, { marginRight: 4, children: [_jsx(Text, { dimColor: true, children: "Errors: " }), _jsx(Text, { bold: true, color: "red", children: errorCount })] }), _jsxs(Box, { children: [_jsx(Text, { dimColor: true, children: "Avg: " }), _jsxs(Text, { bold: true, children: [avgDuration, "ms"] })] })] }));
|
|
46
|
+
}
|
|
47
|
+
function TunnelMonitorApp({ tunnelId, port }) {
|
|
48
|
+
const { exit } = useApp();
|
|
49
|
+
const [tunnel, setTunnel] = useState();
|
|
50
|
+
const [connected, setConnected] = useState(false);
|
|
51
|
+
const [requests, setRequests] = useState([]);
|
|
52
|
+
const [error, setError] = useState();
|
|
53
|
+
const [tunnelUrl, setTunnelUrl] = useState('');
|
|
54
|
+
const addRequest = useCallback((method, path, status, duration) => {
|
|
55
|
+
setRequests(prev => [...prev, {
|
|
56
|
+
id: `${Date.now()}-${Math.random()}`,
|
|
57
|
+
method,
|
|
58
|
+
path,
|
|
59
|
+
status,
|
|
60
|
+
duration,
|
|
61
|
+
timestamp: new Date(),
|
|
62
|
+
}]);
|
|
63
|
+
}, []);
|
|
64
|
+
useEffect(() => {
|
|
65
|
+
let client = null;
|
|
66
|
+
const connect = async () => {
|
|
67
|
+
try {
|
|
68
|
+
// Get tunnel info
|
|
69
|
+
const tunnelRes = await api.getTunnel(tunnelId);
|
|
70
|
+
if (tunnelRes.error || !tunnelRes.data?.tunnel) {
|
|
71
|
+
setError(tunnelRes.error || 'Tunnel not found');
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
setTunnel(tunnelRes.data.tunnel);
|
|
75
|
+
// Regenerate token
|
|
76
|
+
const tokenRes = await api.regenerateTunnelToken(tunnelId);
|
|
77
|
+
if (tokenRes.error || !tokenRes.data?.authToken) {
|
|
78
|
+
setError(tokenRes.error || 'Failed to get auth token');
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
const authToken = tokenRes.data.authToken;
|
|
82
|
+
const apiUrl = config.getApiUrl();
|
|
83
|
+
const wsUrl = apiUrl
|
|
84
|
+
.replace('https://', 'wss://')
|
|
85
|
+
.replace('http://', 'ws://') +
|
|
86
|
+
`/tunnels/${tunnelRes.data.tunnel.subdomain}/ws?tunnelId=${tunnelId}&token=${authToken}`;
|
|
87
|
+
setTunnelUrl(`${apiUrl}/t/${tunnelRes.data.tunnel.subdomain}`);
|
|
88
|
+
client = new TunnelClient({
|
|
89
|
+
wsUrl,
|
|
90
|
+
localPort: port,
|
|
91
|
+
onConnect: () => setConnected(true),
|
|
92
|
+
onDisconnect: () => setConnected(false),
|
|
93
|
+
onRequest: addRequest,
|
|
94
|
+
onError: (err) => setError(err.message),
|
|
95
|
+
});
|
|
96
|
+
await client.connect();
|
|
97
|
+
}
|
|
98
|
+
catch (err) {
|
|
99
|
+
setError(err instanceof Error ? err.message : 'Connection failed');
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
if (config.isAuthenticated()) {
|
|
103
|
+
connect();
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
setError('Not authenticated. Run "hookbase login" first.');
|
|
107
|
+
}
|
|
108
|
+
return () => {
|
|
109
|
+
if (client) {
|
|
110
|
+
client.close();
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
}, [tunnelId, port, addRequest]);
|
|
114
|
+
useInput((input, key) => {
|
|
115
|
+
if (input === 'q' || (key.ctrl && input === 'c')) {
|
|
116
|
+
exit();
|
|
117
|
+
}
|
|
118
|
+
if (input === 'c') {
|
|
119
|
+
setRequests([]);
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
if (error) {
|
|
123
|
+
return (_jsxs(Box, { flexDirection: "column", padding: 1, children: [_jsx(Header, { tunnel: tunnel, connected: connected }), _jsxs(Text, { color: "red", children: ["Error: ", error] })] }));
|
|
124
|
+
}
|
|
125
|
+
return (_jsxs(Box, { flexDirection: "column", padding: 1, children: [_jsx(Header, { tunnel: tunnel, connected: connected }), tunnelUrl && (_jsxs(Box, { marginBottom: 1, children: [_jsx(Text, { dimColor: true, children: "URL: " }), _jsx(Text, { color: "cyan", children: tunnelUrl }), _jsxs(Text, { dimColor: true, children: [" \u2192 localhost:", port] })] })), !connected && (_jsxs(Box, { children: [_jsx(Text, { color: "yellow", children: _jsx(Spinner, { type: "dots" }) }), _jsx(Text, { children: " Connecting to tunnel..." })] })), _jsx(RequestList, { requests: requests }), _jsx(Stats, { requests: requests, tunnel: tunnel })] }));
|
|
126
|
+
}
|
|
127
|
+
export async function runTunnelMonitor(tunnelId, port) {
|
|
128
|
+
const { waitUntilExit } = render(_jsx(TunnelMonitorApp, { tunnelId: tunnelId, port: port }));
|
|
129
|
+
await waitUntilExit();
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=TunnelMonitor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TunnelMonitor.js","sourceRoot":"","sources":["../../src/tui/TunnelMonitor.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface PanelProps {
|
|
3
|
+
title: string;
|
|
4
|
+
children: React.ReactNode;
|
|
5
|
+
width?: number | string;
|
|
6
|
+
height?: number | string;
|
|
7
|
+
borderColor?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare function Panel({ title, children, width, height, borderColor }: PanelProps): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
interface StatusBadgeProps {
|
|
11
|
+
status: 'success' | 'error' | 'warning' | 'info' | 'pending';
|
|
12
|
+
label: string;
|
|
13
|
+
}
|
|
14
|
+
export declare function StatusBadge({ status, label }: StatusBadgeProps): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
interface TableProps {
|
|
16
|
+
headers: string[];
|
|
17
|
+
rows: string[][];
|
|
18
|
+
columnWidths?: number[];
|
|
19
|
+
}
|
|
20
|
+
export declare function Table({ headers, rows, columnWidths }: TableProps): import("react/jsx-runtime").JSX.Element;
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=Box.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Box.d.ts","sourceRoot":"","sources":["../../../src/tui/components/Box.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,UAAU;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,KAAK,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,WAAoB,EAAE,EAAE,UAAU,2CAgBzF;AAED,UAAU,gBAAgB;IACxB,MAAM,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC;IAC7D,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,WAAW,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,gBAAgB,2CAsB9D;AAED,UAAU,UAAU;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,wBAAgB,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,UAAU,2CAuBhE"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Box as InkBox, Text } from 'ink';
|
|
3
|
+
export function Panel({ title, children, width, height, borderColor = 'gray' }) {
|
|
4
|
+
return (_jsxs(InkBox, { flexDirection: "column", borderStyle: "round", borderColor: borderColor, width: width, height: height, paddingX: 1, children: [_jsx(InkBox, { marginBottom: 1, children: _jsx(Text, { bold: true, color: "cyan", children: title }) }), children] }));
|
|
5
|
+
}
|
|
6
|
+
export function StatusBadge({ status, label }) {
|
|
7
|
+
const colors = {
|
|
8
|
+
success: 'green',
|
|
9
|
+
error: 'red',
|
|
10
|
+
warning: 'yellow',
|
|
11
|
+
info: 'blue',
|
|
12
|
+
pending: 'gray',
|
|
13
|
+
};
|
|
14
|
+
const symbols = {
|
|
15
|
+
success: '●',
|
|
16
|
+
error: '●',
|
|
17
|
+
warning: '●',
|
|
18
|
+
info: '●',
|
|
19
|
+
pending: '○',
|
|
20
|
+
};
|
|
21
|
+
return (_jsxs(Text, { color: colors[status], children: [symbols[status], " ", label] }));
|
|
22
|
+
}
|
|
23
|
+
export function Table({ headers, rows, columnWidths }) {
|
|
24
|
+
const widths = columnWidths || headers.map(() => 15);
|
|
25
|
+
return (_jsxs(InkBox, { flexDirection: "column", children: [_jsx(InkBox, { children: headers.map((header, i) => (_jsx(InkBox, { width: widths[i], children: _jsx(Text, { bold: true, dimColor: true, children: header }) }, i))) }), rows.map((row, rowIndex) => (_jsx(InkBox, { children: row.map((cell, cellIndex) => (_jsx(InkBox, { width: widths[cellIndex], children: _jsx(Text, { children: cell.slice(0, widths[cellIndex] - 1) }) }, cellIndex))) }, rowIndex)))] }));
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=Box.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Box.js","sourceRoot":"","sources":["../../../src/tui/components/Box.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,IAAI,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAU1C,MAAM,UAAU,KAAK,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,GAAG,MAAM,EAAc;IACxF,OAAO,CACL,MAAC,MAAM,IACL,aAAa,EAAC,QAAQ,EACtB,WAAW,EAAC,OAAO,EACnB,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,CAAC,aAEX,KAAC,MAAM,IAAC,YAAY,EAAE,CAAC,YACrB,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM,YAAE,KAAK,GAAQ,GAC/B,EACR,QAAQ,IACF,CACV,CAAC;AACJ,CAAC;AAOD,MAAM,UAAU,WAAW,CAAC,EAAE,MAAM,EAAE,KAAK,EAAoB;IAC7D,MAAM,MAAM,GAA2B;QACrC,OAAO,EAAE,OAAO;QAChB,KAAK,EAAE,KAAK;QACZ,OAAO,EAAE,QAAQ;QACjB,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,MAAM;KAChB,CAAC;IAEF,MAAM,OAAO,GAA2B;QACtC,OAAO,EAAE,GAAG;QACZ,KAAK,EAAE,GAAG;QACV,OAAO,EAAE,GAAG;QACZ,IAAI,EAAE,GAAG;QACT,OAAO,EAAE,GAAG;KACb,CAAC;IAEF,OAAO,CACL,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,aACxB,OAAO,CAAC,MAAM,CAAC,OAAG,KAAK,IACnB,CACR,CAAC;AACJ,CAAC;AAQD,MAAM,UAAU,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAc;IAC/D,MAAM,MAAM,GAAG,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IAErD,OAAO,CACL,MAAC,MAAM,IAAC,aAAa,EAAC,QAAQ,aAC5B,KAAC,MAAM,cACJ,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAC1B,KAAC,MAAM,IAAS,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,YAC9B,KAAC,IAAI,IAAC,IAAI,QAAC,QAAQ,kBAAE,MAAM,GAAQ,IADxB,CAAC,CAEL,CACV,CAAC,GACK,EACR,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,CAAC,CAC3B,KAAC,MAAM,cACJ,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,CAC5B,KAAC,MAAM,IAAiB,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,YAC9C,KAAC,IAAI,cAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAQ,IADxC,SAAS,CAEb,CACV,CAAC,IALS,QAAQ,CAMZ,CACV,CAAC,IACK,CACV,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Analytics.d.ts","sourceRoot":"","sources":["../../../src/tui/views/Analytics.tsx"],"names":[],"mappings":"AAKA,UAAU,kBAAkB;IAC1B,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;CAC3C;AAWD,wBAAgB,aAAa,CAAC,EAAE,UAAU,EAAE,EAAE,kBAAkB,2CA8Q/D"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState, useEffect, useCallback } from 'react';
|
|
3
|
+
import { Box, Text, useInput } from 'ink';
|
|
4
|
+
import Spinner from 'ink-spinner';
|
|
5
|
+
import * as api from '../../lib/api.js';
|
|
6
|
+
const TIME_RANGES = [
|
|
7
|
+
{ key: '1h', label: '1 Hour' },
|
|
8
|
+
{ key: '24h', label: '24 Hours' },
|
|
9
|
+
{ key: '7d', label: '7 Days' },
|
|
10
|
+
{ key: '30d', label: '30 Days' },
|
|
11
|
+
];
|
|
12
|
+
export function AnalyticsView({ onNavigate }) {
|
|
13
|
+
const [loading, setLoading] = useState(true);
|
|
14
|
+
const [error, setError] = useState(null);
|
|
15
|
+
const [timeRange, setTimeRange] = useState('24h');
|
|
16
|
+
const [selectedRangeIndex, setSelectedRangeIndex] = useState(1);
|
|
17
|
+
const [data, setData] = useState(null);
|
|
18
|
+
const [liveEvents, setLiveEvents] = useState([]);
|
|
19
|
+
const [autoRefresh, setAutoRefresh] = useState(true);
|
|
20
|
+
const fetchData = useCallback(async () => {
|
|
21
|
+
try {
|
|
22
|
+
const [analyticsRes, eventsRes] = await Promise.all([
|
|
23
|
+
api.getDashboardAnalytics(timeRange),
|
|
24
|
+
api.getEvents({ limit: 10 }),
|
|
25
|
+
]);
|
|
26
|
+
if (analyticsRes.data) {
|
|
27
|
+
setData(analyticsRes.data);
|
|
28
|
+
}
|
|
29
|
+
if (eventsRes.data?.events) {
|
|
30
|
+
setLiveEvents(eventsRes.data.events);
|
|
31
|
+
}
|
|
32
|
+
setError(null);
|
|
33
|
+
}
|
|
34
|
+
catch (err) {
|
|
35
|
+
setError(err instanceof Error ? err.message : 'Failed to fetch analytics');
|
|
36
|
+
}
|
|
37
|
+
setLoading(false);
|
|
38
|
+
}, [timeRange]);
|
|
39
|
+
useEffect(() => {
|
|
40
|
+
fetchData();
|
|
41
|
+
}, [fetchData]);
|
|
42
|
+
// Auto-refresh every 5 seconds for live events
|
|
43
|
+
useEffect(() => {
|
|
44
|
+
if (!autoRefresh)
|
|
45
|
+
return;
|
|
46
|
+
const interval = setInterval(async () => {
|
|
47
|
+
try {
|
|
48
|
+
const eventsRes = await api.getEvents({ limit: 10 });
|
|
49
|
+
if (eventsRes.data?.events) {
|
|
50
|
+
setLiveEvents(eventsRes.data.events);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
catch (err) {
|
|
54
|
+
// Silently fail on refresh
|
|
55
|
+
}
|
|
56
|
+
}, 10000);
|
|
57
|
+
return () => clearInterval(interval);
|
|
58
|
+
}, [autoRefresh]);
|
|
59
|
+
useInput((input, key) => {
|
|
60
|
+
if (key.escape) {
|
|
61
|
+
onNavigate(null);
|
|
62
|
+
}
|
|
63
|
+
if (key.leftArrow) {
|
|
64
|
+
setSelectedRangeIndex(prev => Math.max(0, prev - 1));
|
|
65
|
+
}
|
|
66
|
+
if (key.rightArrow) {
|
|
67
|
+
setSelectedRangeIndex(prev => Math.min(TIME_RANGES.length - 1, prev + 1));
|
|
68
|
+
}
|
|
69
|
+
if (key.return) {
|
|
70
|
+
const newRange = TIME_RANGES[selectedRangeIndex].key;
|
|
71
|
+
if (newRange !== timeRange) {
|
|
72
|
+
setTimeRange(newRange);
|
|
73
|
+
setLoading(true);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
if (input === 'r') {
|
|
77
|
+
setLoading(true);
|
|
78
|
+
fetchData();
|
|
79
|
+
}
|
|
80
|
+
if (input === 'a') {
|
|
81
|
+
setAutoRefresh(prev => !prev);
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
if (loading && !data) {
|
|
85
|
+
return (_jsx(Box, { flexDirection: "column", children: _jsxs(Box, { children: [_jsx(Text, { color: "yellow", children: _jsx(Spinner, { type: "dots" }) }), _jsx(Text, { children: " Loading analytics..." })] }) }));
|
|
86
|
+
}
|
|
87
|
+
if (error) {
|
|
88
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { color: "red", children: ["Error: ", error] }), _jsx(Text, { dimColor: true, children: "Press 'r' to retry" })] }));
|
|
89
|
+
}
|
|
90
|
+
// Handle different API response structures
|
|
91
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
92
|
+
const rawOverview = data?.overview || data || {};
|
|
93
|
+
const overview = {
|
|
94
|
+
totalEvents: rawOverview.totalEvents ?? rawOverview.total_events ?? 0,
|
|
95
|
+
totalDeliveries: rawOverview.totalDeliveries ?? rawOverview.total_deliveries ?? 0,
|
|
96
|
+
successfulDeliveries: rawOverview.successfulDeliveries ?? rawOverview.successful_deliveries ?? 0,
|
|
97
|
+
failedDeliveries: rawOverview.failedDeliveries ?? rawOverview.failed_deliveries ?? 0,
|
|
98
|
+
successRate: rawOverview.successRate ?? rawOverview.success_rate ?? 0,
|
|
99
|
+
avgResponseTime: rawOverview.avgResponseTime ?? rawOverview.avg_response_time ?? 0,
|
|
100
|
+
};
|
|
101
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { marginBottom: 1, children: [_jsx(Text, { bold: true, children: "Analytics Dashboard" }), _jsxs(Text, { dimColor: true, children: [" - \u2190\u2192 time range, Enter select, r: refresh, a: auto-refresh (", autoRefresh ? 'ON' : 'OFF', ")"] })] }), _jsxs(Box, { marginBottom: 1, children: [TIME_RANGES.map((range, index) => (_jsx(Box, { marginRight: 1, children: _jsxs(Text, { color: index === selectedRangeIndex ? 'cyan' : timeRange === range.key ? 'green' : 'gray', bold: index === selectedRangeIndex, inverse: index === selectedRangeIndex, children: [' ', range.label, ' '] }) }, range.key))), loading && (_jsx(Text, { color: "yellow", children: _jsx(Spinner, { type: "dots" }) }))] }), _jsxs(Box, { marginBottom: 1, children: [_jsx(Box, { borderStyle: "round", borderColor: "cyan", paddingX: 2, paddingY: 0, marginRight: 1, width: 18, children: _jsxs(Box, { flexDirection: "column", alignItems: "center", children: [_jsx(Text, { bold: true, color: "cyan", children: overview.totalEvents }), _jsx(Text, { dimColor: true, children: "Events" })] }) }), _jsx(Box, { borderStyle: "round", borderColor: "green", paddingX: 2, paddingY: 0, marginRight: 1, width: 18, children: _jsxs(Box, { flexDirection: "column", alignItems: "center", children: [_jsx(Text, { bold: true, color: "green", children: overview.successfulDeliveries }), _jsx(Text, { dimColor: true, children: "Delivered" })] }) }), _jsx(Box, { borderStyle: "round", borderColor: "red", paddingX: 2, paddingY: 0, marginRight: 1, width: 18, children: _jsxs(Box, { flexDirection: "column", alignItems: "center", children: [_jsx(Text, { bold: true, color: "red", children: overview.failedDeliveries }), _jsx(Text, { dimColor: true, children: "Failed" })] }) }), _jsx(Box, { borderStyle: "round", borderColor: "yellow", paddingX: 2, paddingY: 0, marginRight: 1, width: 18, children: _jsxs(Box, { flexDirection: "column", alignItems: "center", children: [_jsxs(Text, { bold: true, color: overview.successRate >= 90 ? 'green' : overview.successRate >= 70 ? 'yellow' : 'red', children: [(overview.successRate || 0).toFixed(1), "%"] }), _jsx(Text, { dimColor: true, children: "Success" })] }) }), _jsx(Box, { borderStyle: "round", borderColor: "blue", paddingX: 2, paddingY: 0, width: 18, children: _jsxs(Box, { flexDirection: "column", alignItems: "center", children: [_jsxs(Text, { bold: true, color: "blue", children: [overview.avgResponseTime?.toFixed(0) || 0, "ms"] }), _jsx(Text, { dimColor: true, children: "Avg Time" })] }) })] }), _jsxs(Box, { children: [_jsxs(Box, { flexDirection: "column", width: "50%", marginRight: 1, children: [_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(Text, { bold: true, children: "Top Sources" }), _jsx(Box, { flexDirection: "column", borderStyle: "round", borderColor: "gray", paddingX: 1, children: (data?.topSources || []).length === 0 ? (_jsx(Text, { dimColor: true, children: "No data" })) : ((data?.topSources || []).slice(0, 5).map((source, i) => (_jsxs(Box, { children: [_jsx(Box, { width: 3, children: _jsxs(Text, { dimColor: true, children: [i + 1, "."] }) }), _jsx(Box, { width: 20, children: _jsx(Text, { children: source.name.slice(0, 18) }) }), _jsxs(Text, { color: "cyan", children: [source.eventCount, " events"] })] }, source.id)))) })] }), _jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { bold: true, children: "Top Destinations" }), _jsx(Box, { flexDirection: "column", borderStyle: "round", borderColor: "gray", paddingX: 1, children: (data?.topDestinations || []).length === 0 ? (_jsx(Text, { dimColor: true, children: "No data" })) : ((data?.topDestinations || []).slice(0, 5).map((dest, i) => (_jsxs(Box, { children: [_jsx(Box, { width: 3, children: _jsxs(Text, { dimColor: true, children: [i + 1, "."] }) }), _jsx(Box, { width: 20, children: _jsx(Text, { children: dest.name.slice(0, 18) }) }), _jsxs(Text, { color: (dest.successRate || 0) >= 90 ? 'green' : (dest.successRate || 0) >= 70 ? 'yellow' : 'red', children: [(dest.successRate || 0).toFixed(0), "%"] })] }, dest.id)))) })] })] }), _jsxs(Box, { flexDirection: "column", width: "50%", children: [_jsxs(Box, { children: [_jsx(Text, { bold: true, children: "Live Events " }), autoRefresh && (_jsx(Text, { color: "green", dimColor: true, children: "\u25CF" }))] }), _jsx(Box, { flexDirection: "column", borderStyle: "round", borderColor: "green", paddingX: 1, height: 14, children: liveEvents.length === 0 ? (_jsx(Text, { dimColor: true, children: "No recent events" })) : (liveEvents.slice(0, 10).map(event => (_jsxs(Box, { children: [_jsx(Box, { width: 9, children: _jsx(Text, { dimColor: true, children: new Date(event.received_at).toLocaleTimeString() }) }), _jsx(Box, { width: 12, children: _jsx(Text, { color: "cyan", children: (event.source_name || event.source_slug || '').slice(0, 10) }) }), _jsx(Box, { width: 8, children: _jsx(Text, { color: "yellow", children: event.method || '-' }) }), _jsx(Text, { color: event.status === 'delivered' ? 'green' :
|
|
102
|
+
event.status === 'failed' ? 'red' : 'yellow', children: event.status || 'pending' })] }, event.id)))) })] })] })] }));
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=Analytics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Analytics.js","sourceRoot":"","sources":["../../../src/tui/views/Analytics.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAChE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAC1C,OAAO,OAAO,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,GAAG,MAAM,kBAAkB,CAAC;AAQxC,MAAM,WAAW,GAAwC;IACvD,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE;IAC9B,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE;IACjC,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE;IAC9B,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE;CACjC,CAAC;AAEF,MAAM,UAAU,aAAa,CAAC,EAAE,UAAU,EAAsB;IAC9D,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IACxD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAY,KAAK,CAAC,CAAC;IAC7D,MAAM,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAChE,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAgC,IAAI,CAAC,CAAC;IACtE,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAc,EAAE,CAAC,CAAC;IAC9D,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAErD,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QACvC,IAAI,CAAC;YACH,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBAClD,GAAG,CAAC,qBAAqB,CAAC,SAAS,CAAC;gBACpC,GAAG,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;aAC7B,CAAC,CAAC;YAEH,IAAI,YAAY,CAAC,IAAI,EAAE,CAAC;gBACtB,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAC7B,CAAC;YACD,IAAI,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;gBAC3B,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACvC,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,CAAC;QACjB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,QAAQ,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC;QAC7E,CAAC;QACD,UAAU,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,SAAS,CAAC,GAAG,EAAE;QACb,SAAS,EAAE,CAAC;IACd,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,+CAA+C;IAC/C,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,WAAW;YAAE,OAAO;QAEzB,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;YACtC,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;gBACrD,IAAI,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;oBAC3B,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACvC,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,2BAA2B;YAC7B,CAAC;QACH,CAAC,EAAE,KAAK,CAAC,CAAC;QAEV,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAElB,QAAQ,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACtB,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACf,UAAU,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;QACD,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;YAClB,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;QACvD,CAAC;QACD,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;YACnB,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;QAC5E,CAAC;QACD,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACf,MAAM,QAAQ,GAAG,WAAW,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC;YACrD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,YAAY,CAAC,QAAQ,CAAC,CAAC;gBACvB,UAAU,CAAC,IAAI,CAAC,CAAC;YACnB,CAAC;QACH,CAAC;QACD,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;YAClB,UAAU,CAAC,IAAI,CAAC,CAAC;YACjB,SAAS,EAAE,CAAC;QACd,CAAC;QACD,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;YAClB,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;QACrB,OAAO,CACL,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,YACzB,MAAC,GAAG,eACF,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,YAClB,KAAC,OAAO,IAAC,IAAI,EAAC,MAAM,GAAG,GAClB,EACP,KAAC,IAAI,wCAA6B,IAC9B,GACF,CACP,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,MAAC,IAAI,IAAC,KAAK,EAAC,KAAK,wBAAS,KAAK,IAAQ,EACvC,KAAC,IAAI,IAAC,QAAQ,yCAA0B,IACpC,CACP,CAAC;IACJ,CAAC;IAED,2CAA2C;IAC3C,8DAA8D;IAC9D,MAAM,WAAW,GAAQ,IAAI,EAAE,QAAQ,IAAI,IAAI,IAAI,EAAE,CAAC;IACtD,MAAM,QAAQ,GAAG;QACf,WAAW,EAAE,WAAW,CAAC,WAAW,IAAI,WAAW,CAAC,YAAY,IAAI,CAAC;QACrE,eAAe,EAAE,WAAW,CAAC,eAAe,IAAI,WAAW,CAAC,gBAAgB,IAAI,CAAC;QACjF,oBAAoB,EAAE,WAAW,CAAC,oBAAoB,IAAI,WAAW,CAAC,qBAAqB,IAAI,CAAC;QAChG,gBAAgB,EAAE,WAAW,CAAC,gBAAgB,IAAI,WAAW,CAAC,iBAAiB,IAAI,CAAC;QACpF,WAAW,EAAE,WAAW,CAAC,WAAW,IAAI,WAAW,CAAC,YAAY,IAAI,CAAC;QACrE,eAAe,EAAE,WAAW,CAAC,eAAe,IAAI,WAAW,CAAC,iBAAiB,IAAI,CAAC;KACnF,CAAC;IAEF,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,MAAC,GAAG,IAAC,YAAY,EAAE,CAAC,aAClB,KAAC,IAAI,IAAC,IAAI,0CAA2B,EACrC,MAAC,IAAI,IAAC,QAAQ,8FAA+D,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,IAC5G,EAGN,MAAC,GAAG,IAAC,YAAY,EAAE,CAAC,aACjB,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CACjC,KAAC,GAAG,IAAiB,WAAW,EAAE,CAAC,YACjC,MAAC,IAAI,IACH,KAAK,EAAE,KAAK,KAAK,kBAAkB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,KAAK,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EACzF,IAAI,EAAE,KAAK,KAAK,kBAAkB,EAClC,OAAO,EAAE,KAAK,KAAK,kBAAkB,aAEpC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,IACjB,IAPC,KAAK,CAAC,GAAG,CAQb,CACP,CAAC,EACD,OAAO,IAAI,CACV,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,YAClB,KAAC,OAAO,IAAC,IAAI,EAAC,MAAM,GAAG,GAClB,CACR,IACG,EAGN,MAAC,GAAG,IAAC,YAAY,EAAE,CAAC,aAClB,KAAC,GAAG,IAAC,WAAW,EAAC,OAAO,EAAC,WAAW,EAAC,MAAM,EAAC,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,YAC7F,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,UAAU,EAAC,QAAQ,aAC7C,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM,YAAE,QAAQ,CAAC,WAAW,GAAQ,EACrD,KAAC,IAAI,IAAC,QAAQ,6BAAc,IACxB,GACF,EAEN,KAAC,GAAG,IAAC,WAAW,EAAC,OAAO,EAAC,WAAW,EAAC,OAAO,EAAC,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,YAC9F,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,UAAU,EAAC,QAAQ,aAC7C,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,OAAO,YAAE,QAAQ,CAAC,oBAAoB,GAAQ,EAC/D,KAAC,IAAI,IAAC,QAAQ,gCAAiB,IAC3B,GACF,EAEN,KAAC,GAAG,IAAC,WAAW,EAAC,OAAO,EAAC,WAAW,EAAC,KAAK,EAAC,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,YAC5F,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,UAAU,EAAC,QAAQ,aAC7C,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,KAAK,YAAE,QAAQ,CAAC,gBAAgB,GAAQ,EACzD,KAAC,IAAI,IAAC,QAAQ,6BAAc,IACxB,GACF,EAEN,KAAC,GAAG,IAAC,WAAW,EAAC,OAAO,EAAC,WAAW,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,YAC/F,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,UAAU,EAAC,QAAQ,aAC7C,MAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,QAAQ,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,aACnG,CAAC,QAAQ,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAClC,EACP,KAAC,IAAI,IAAC,QAAQ,8BAAe,IACzB,GACF,EAEN,KAAC,GAAG,IAAC,WAAW,EAAC,OAAO,EAAC,WAAW,EAAC,MAAM,EAAC,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,YAC7E,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,UAAU,EAAC,QAAQ,aAC7C,MAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM,aAAE,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAC5E,KAAC,IAAI,IAAC,QAAQ,+BAAgB,IAC1B,GACF,IACF,EAGN,MAAC,GAAG,eAEF,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,KAAK,EAAC,KAAK,EAAC,WAAW,EAAE,CAAC,aAEpD,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,YAAY,EAAE,CAAC,aACzC,KAAC,IAAI,IAAC,IAAI,kCAAmB,EAC7B,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,WAAW,EAAC,OAAO,EAAC,WAAW,EAAC,MAAM,EAAC,QAAQ,EAAE,CAAC,YAC3E,CAAC,IAAI,EAAE,UAAU,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CACvC,KAAC,IAAI,IAAC,QAAQ,8BAAe,CAC9B,CAAC,CAAC,CAAC,CACF,CAAC,IAAI,EAAE,UAAU,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CACtD,MAAC,GAAG,eACF,KAAC,GAAG,IAAC,KAAK,EAAE,CAAC,YACX,MAAC,IAAI,IAAC,QAAQ,mBAAE,CAAC,GAAG,CAAC,SAAS,GAC1B,EACN,KAAC,GAAG,IAAC,KAAK,EAAE,EAAE,YACZ,KAAC,IAAI,cAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAQ,GACnC,EACN,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,aAAE,MAAM,CAAC,UAAU,eAAe,KAP5C,MAAM,CAAC,EAAE,CAQb,CACP,CAAC,CACH,GACG,IACF,EAGN,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,IAAI,IAAC,IAAI,uCAAwB,EAClC,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,WAAW,EAAC,OAAO,EAAC,WAAW,EAAC,MAAM,EAAC,QAAQ,EAAE,CAAC,YAC3E,CAAC,IAAI,EAAE,eAAe,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAC5C,KAAC,IAAI,IAAC,QAAQ,8BAAe,CAC9B,CAAC,CAAC,CAAC,CACF,CAAC,IAAI,EAAE,eAAe,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CACzD,MAAC,GAAG,eACF,KAAC,GAAG,IAAC,KAAK,EAAE,CAAC,YACX,MAAC,IAAI,IAAC,QAAQ,mBAAE,CAAC,GAAG,CAAC,SAAS,GAC1B,EACN,KAAC,GAAG,IAAC,KAAK,EAAE,EAAE,YACZ,KAAC,IAAI,cAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAQ,GACjC,EACN,MAAC,IAAI,IAAC,KAAK,EAAE,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,aACpG,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAC9B,KATC,IAAI,CAAC,EAAE,CAUX,CACP,CAAC,CACH,GACG,IACF,IACF,EAGN,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,KAAK,EAAC,KAAK,aACrC,MAAC,GAAG,eACF,KAAC,IAAI,IAAC,IAAI,mCAAoB,EAC7B,WAAW,IAAI,CACd,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,EAAC,QAAQ,6BAAS,CACtC,IACG,EACN,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,WAAW,EAAC,OAAO,EAAC,WAAW,EAAC,OAAO,EAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,YACxF,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CACzB,KAAC,IAAI,IAAC,QAAQ,uCAAwB,CACvC,CAAC,CAAC,CAAC,CACF,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CACnC,MAAC,GAAG,eACF,KAAC,GAAG,IAAC,KAAK,EAAE,CAAC,YACX,KAAC,IAAI,IAAC,QAAQ,kBACX,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,kBAAkB,EAAE,GAC5C,GACH,EACN,KAAC,GAAG,IAAC,KAAK,EAAE,EAAE,YACZ,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YACf,CAAC,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GACvD,GACH,EACN,KAAC,GAAG,IAAC,KAAK,EAAE,CAAC,YACX,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,YAAE,KAAK,CAAC,MAAM,IAAI,GAAG,GAAQ,GAC7C,EACN,KAAC,IAAI,IAAC,KAAK,EACT,KAAK,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;gDACxC,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,YAE3C,KAAK,CAAC,MAAM,IAAI,SAAS,GACrB,KAnBC,KAAK,CAAC,EAAE,CAoBZ,CACP,CAAC,CACH,GACG,IACF,IACF,IACF,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as api from '../../lib/api.js';
|
|
2
|
+
interface DestinationsViewProps {
|
|
3
|
+
destinations: api.Destination[];
|
|
4
|
+
subView: string | null;
|
|
5
|
+
onNavigate: (view: string | null) => void;
|
|
6
|
+
onRefresh: () => void;
|
|
7
|
+
}
|
|
8
|
+
export declare function DestinationsView({ destinations, subView, onNavigate, onRefresh }: DestinationsViewProps): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=Destinations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Destinations.d.ts","sourceRoot":"","sources":["../../../src/tui/views/Destinations.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,GAAG,MAAM,kBAAkB,CAAC;AAExC,UAAU,qBAAqB;IAC7B,YAAY,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC;IAChC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC1C,SAAS,EAAE,MAAM,IAAI,CAAC;CACvB;AAsVD,wBAAgB,gBAAgB,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,qBAAqB,2CA6BvG"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
import { Box, Text, useInput } from 'ink';
|
|
4
|
+
import TextInput from 'ink-text-input';
|
|
5
|
+
import SelectInput from 'ink-select-input';
|
|
6
|
+
import * as api from '../../lib/api.js';
|
|
7
|
+
function DestinationList({ destinations, onSelect, onCreate }) {
|
|
8
|
+
const [selectedIndex, setSelectedIndex] = useState(0);
|
|
9
|
+
const items = [
|
|
10
|
+
{ id: 'create', name: '+ Create New Destination', isAction: true },
|
|
11
|
+
...destinations,
|
|
12
|
+
];
|
|
13
|
+
useInput((input, key) => {
|
|
14
|
+
if (key.upArrow) {
|
|
15
|
+
setSelectedIndex(prev => Math.max(0, prev - 1));
|
|
16
|
+
}
|
|
17
|
+
if (key.downArrow) {
|
|
18
|
+
setSelectedIndex(prev => Math.min(items.length - 1, prev + 1));
|
|
19
|
+
}
|
|
20
|
+
if (key.return) {
|
|
21
|
+
const item = items[selectedIndex];
|
|
22
|
+
if (item.id === 'create') {
|
|
23
|
+
onCreate();
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
onSelect(item.id);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { marginBottom: 1, children: [_jsx(Text, { bold: true, children: "Destinations" }), _jsxs(Text, { dimColor: true, children: [" - ", destinations.length, " total | \u2191\u2193 navigate, Enter select"] })] }), _jsx(Box, { flexDirection: "column", borderStyle: "round", borderColor: "gray", paddingX: 1, children: items.map((item, index) => (_jsx(Box, { children: _jsxs(Text, { color: index === selectedIndex ? 'cyan' : undefined, bold: index === selectedIndex, inverse: index === selectedIndex, children: [index === selectedIndex ? '▶ ' : ' ', 'isAction' in item ? (_jsx(Text, { color: "green", children: item.name })) : (_jsxs(_Fragment, { children: [_jsx(Text, { children: item.name }), _jsx(Text, { dimColor: true, children: " \u2192 " }), _jsxs(Text, { color: "blue", children: [item.url.slice(0, 40), item.url.length > 40 ? '...' : ''] })] }))] }) }, item.id))) })] }));
|
|
31
|
+
}
|
|
32
|
+
function DestinationDetail({ destId, destinations, onBack, onRefresh }) {
|
|
33
|
+
const dest = destinations.find(d => d.id === destId);
|
|
34
|
+
const [testing, setTesting] = useState(false);
|
|
35
|
+
const [testResult, setTestResult] = useState(null);
|
|
36
|
+
const [confirmDelete, setConfirmDelete] = useState(false);
|
|
37
|
+
const [deleting, setDeleting] = useState(false);
|
|
38
|
+
const [message, setMessage] = useState(null);
|
|
39
|
+
useInput(async (input, key) => {
|
|
40
|
+
if (deleting)
|
|
41
|
+
return;
|
|
42
|
+
if (key.escape || input === 'b') {
|
|
43
|
+
if (confirmDelete) {
|
|
44
|
+
setConfirmDelete(false);
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
onBack();
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
if (input === 't' && !testing && !confirmDelete) {
|
|
51
|
+
setTesting(true);
|
|
52
|
+
try {
|
|
53
|
+
const result = await api.testDestination(destId);
|
|
54
|
+
if (result.data) {
|
|
55
|
+
setTestResult({
|
|
56
|
+
success: result.data.success,
|
|
57
|
+
status: result.data.statusCode,
|
|
58
|
+
time: result.data.responseTime,
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
catch (err) {
|
|
63
|
+
setTestResult({ success: false, status: 0, time: 0 });
|
|
64
|
+
}
|
|
65
|
+
setTesting(false);
|
|
66
|
+
}
|
|
67
|
+
if (input === 'd' && !confirmDelete && !testing) {
|
|
68
|
+
setConfirmDelete(true);
|
|
69
|
+
}
|
|
70
|
+
if (input === 'y' && confirmDelete) {
|
|
71
|
+
setDeleting(true);
|
|
72
|
+
try {
|
|
73
|
+
const result = await api.deleteDestination(destId);
|
|
74
|
+
if (result.error) {
|
|
75
|
+
setMessage(`Error: ${result.error}`);
|
|
76
|
+
setConfirmDelete(false);
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
setMessage('Destination deleted');
|
|
80
|
+
setTimeout(() => {
|
|
81
|
+
onRefresh();
|
|
82
|
+
onBack();
|
|
83
|
+
}, 1000);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
catch (err) {
|
|
87
|
+
setMessage('Failed to delete');
|
|
88
|
+
setConfirmDelete(false);
|
|
89
|
+
}
|
|
90
|
+
setDeleting(false);
|
|
91
|
+
}
|
|
92
|
+
if (input === 'n' && confirmDelete) {
|
|
93
|
+
setConfirmDelete(false);
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
if (!dest) {
|
|
97
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { color: "red", children: ["Destination not found: ", destId] }), _jsxs(Text, { dimColor: true, children: ["Available IDs: ", destinations.map(d => d.id).join(', ') || 'none'] }), _jsx(Text, { dimColor: true, children: "Press Esc to go back" })] }));
|
|
98
|
+
}
|
|
99
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { marginBottom: 1, children: [_jsx(Text, { bold: true, children: "Destination Details" }), _jsx(Text, { dimColor: true, children: " - Esc: back | t: test | d: delete" })] }), _jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: "cyan", paddingX: 2, paddingY: 1, children: [_jsxs(Box, { children: [_jsx(Box, { width: 15, children: _jsx(Text, { dimColor: true, children: "ID:" }) }), _jsx(Text, { children: dest.id })] }), _jsxs(Box, { children: [_jsx(Box, { width: 15, children: _jsx(Text, { dimColor: true, children: "Name:" }) }), _jsx(Text, { bold: true, children: dest.name })] }), _jsxs(Box, { children: [_jsx(Box, { width: 15, children: _jsx(Text, { dimColor: true, children: "URL:" }) }), _jsx(Text, { color: "blue", children: dest.url })] }), _jsxs(Box, { children: [_jsx(Box, { width: 15, children: _jsx(Text, { dimColor: true, children: "Method:" }) }), _jsx(Text, { color: "yellow", children: dest.method || 'POST' })] }), _jsxs(Box, { children: [_jsx(Box, { width: 15, children: _jsx(Text, { dimColor: true, children: "Auth Type:" }) }), _jsx(Text, { children: dest.auth_type || dest.authType || 'none' })] }), _jsxs(Box, { children: [_jsx(Box, { width: 15, children: _jsx(Text, { dimColor: true, children: "Status:" }) }), _jsx(Text, { color: (dest.is_active || dest.isActive) ? 'green' : 'red', children: (dest.is_active || dest.isActive) ? 'Active' : 'Inactive' })] }), _jsxs(Box, { children: [_jsx(Box, { width: 15, children: _jsx(Text, { dimColor: true, children: "Deliveries:" }) }), _jsx(Text, { children: dest.delivery_count ?? dest.deliveryCount ?? 0 })] }), testing && (_jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "yellow", children: "Testing destination..." }) })), testResult && (_jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsx(Text, { bold: true, children: "Test Result:" }), _jsxs(Text, { color: testResult.success ? 'green' : 'red', children: [testResult.success ? '✓' : '✗', " Status: ", testResult.status, " | Time: ", testResult.time, "ms"] })] })), confirmDelete && (_jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsx(Text, { color: "red", bold: true, children: "Delete this destination?" }), _jsx(Text, { children: "Press 'y' to confirm, 'n' or Esc to cancel" })] })), deleting && (_jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "yellow", children: "Deleting..." }) })), message && (_jsx(Box, { marginTop: 1, children: _jsx(Text, { color: message.startsWith('Error') ? 'red' : 'green', children: message }) }))] })] }));
|
|
100
|
+
}
|
|
101
|
+
function CreateDestination({ onBack, onCreated }) {
|
|
102
|
+
const [step, setStep] = useState('name');
|
|
103
|
+
const [name, setName] = useState('');
|
|
104
|
+
const [url, setUrl] = useState('');
|
|
105
|
+
const [method, setMethod] = useState('POST');
|
|
106
|
+
const [error, setError] = useState(null);
|
|
107
|
+
const [createdDest, setCreatedDest] = useState(null);
|
|
108
|
+
useInput((input, key) => {
|
|
109
|
+
if (key.escape && step !== 'creating') {
|
|
110
|
+
onBack();
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
const handleMethodSelect = async (item) => {
|
|
114
|
+
setMethod(item.value);
|
|
115
|
+
setStep('creating');
|
|
116
|
+
try {
|
|
117
|
+
const result = await api.createDestination({
|
|
118
|
+
name,
|
|
119
|
+
url,
|
|
120
|
+
method: item.value,
|
|
121
|
+
});
|
|
122
|
+
if (result.error) {
|
|
123
|
+
setError(result.error);
|
|
124
|
+
setStep('method');
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
setCreatedDest(result.data?.destination || null);
|
|
128
|
+
setStep('done');
|
|
129
|
+
setTimeout(() => {
|
|
130
|
+
onCreated();
|
|
131
|
+
onBack();
|
|
132
|
+
}, 2000);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
catch (err) {
|
|
136
|
+
setError(err instanceof Error ? err.message : 'Failed to create destination');
|
|
137
|
+
setStep('method');
|
|
138
|
+
}
|
|
139
|
+
};
|
|
140
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { marginBottom: 1, children: [_jsx(Text, { bold: true, children: "Create New Destination" }), _jsx(Text, { dimColor: true, children: " - Press Esc to cancel" })] }), _jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: "green", paddingX: 2, paddingY: 1, children: [step === 'name' && (_jsxs(Box, { children: [_jsx(Text, { children: "Destination name: " }), _jsx(TextInput, { value: name, onChange: setName, onSubmit: () => name.trim() && setStep('url'), placeholder: "My API Endpoint" })] })), step === 'url' && (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { marginBottom: 1, children: _jsxs(Text, { dimColor: true, children: ["Name: ", name] }) }), _jsxs(Box, { children: [_jsx(Text, { children: "URL: " }), _jsx(TextInput, { value: url, onChange: setUrl, onSubmit: () => url.trim() && setStep('method'), placeholder: "https://api.example.com/webhook" })] })] })), step === 'method' && (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { marginBottom: 1, children: _jsxs(Text, { dimColor: true, children: ["Name: ", name] }) }), _jsx(Box, { marginBottom: 1, children: _jsxs(Text, { dimColor: true, children: ["URL: ", url] }) }), _jsx(Text, { children: "Select HTTP method:" }), _jsx(SelectInput, { items: [
|
|
141
|
+
{ label: 'POST (Recommended)', value: 'POST' },
|
|
142
|
+
{ label: 'PUT', value: 'PUT' },
|
|
143
|
+
{ label: 'PATCH', value: 'PATCH' },
|
|
144
|
+
], onSelect: handleMethodSelect })] })), step === 'creating' && (_jsx(Text, { color: "yellow", children: "Creating destination..." })), step === 'done' && createdDest && (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: "green", children: "\u2713 Destination created successfully!" }), _jsxs(Box, { marginTop: 1, children: [_jsx(Text, { dimColor: true, children: "ID: " }), _jsx(Text, { children: createdDest.id })] })] })), error && (_jsx(Box, { marginTop: 1, children: _jsxs(Text, { color: "red", children: ["Error: ", error] }) }))] })] }));
|
|
145
|
+
}
|
|
146
|
+
export function DestinationsView({ destinations, subView, onNavigate, onRefresh }) {
|
|
147
|
+
if (subView === 'create') {
|
|
148
|
+
return (_jsx(CreateDestination, { onBack: () => onNavigate(null), onCreated: onRefresh }));
|
|
149
|
+
}
|
|
150
|
+
if (subView && subView.startsWith('detail:')) {
|
|
151
|
+
const destId = subView.replace('detail:', '');
|
|
152
|
+
return (_jsx(DestinationDetail, { destId: destId, destinations: destinations, onBack: () => onNavigate(null), onRefresh: onRefresh }));
|
|
153
|
+
}
|
|
154
|
+
return (_jsx(DestinationList, { destinations: destinations, onSelect: (id) => onNavigate(`detail:${id}`), onCreate: () => onNavigate('create') }));
|
|
155
|
+
}
|
|
156
|
+
//# sourceMappingURL=Destinations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Destinations.js","sourceRoot":"","sources":["../../../src/tui/views/Destinations.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as api from '../../lib/api.js';
|
|
2
|
+
interface EventsViewProps {
|
|
3
|
+
events: api.Event[];
|
|
4
|
+
subView: string | null;
|
|
5
|
+
onNavigate: (view: string | null) => void;
|
|
6
|
+
}
|
|
7
|
+
export declare function EventsView({ events, subView, onNavigate }: EventsViewProps): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=Events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Events.d.ts","sourceRoot":"","sources":["../../../src/tui/views/Events.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,GAAG,MAAM,kBAAkB,CAAC;AAExC,UAAU,eAAe;IACvB,MAAM,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;CAC3C;AA6LD,wBAAgB,UAAU,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,eAAe,2CAkB1E"}
|