@aaronbassett/midnight-local-devnet 0.2.1 → 0.3.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.
Files changed (88) hide show
  1. package/README.md +16 -26
  2. package/dist/cli/commands/dashboard.js +53 -14
  3. package/dist/cli/commands/dashboard.js.map +1 -1
  4. package/dist/cli/dashboard/html.d.ts +3 -0
  5. package/dist/cli/dashboard/html.js +1095 -0
  6. package/dist/cli/dashboard/html.js.map +1 -0
  7. package/dist/cli/dashboard/server.d.ts +17 -0
  8. package/dist/cli/dashboard/server.js +133 -0
  9. package/dist/cli/dashboard/server.js.map +1 -0
  10. package/dist/cli/dashboard/state-collector.d.ts +67 -0
  11. package/dist/cli/dashboard/state-collector.js +121 -0
  12. package/dist/cli/dashboard/state-collector.js.map +1 -0
  13. package/package.json +4 -5
  14. package/dist/cli/dashboard/app.d.ts +0 -9
  15. package/dist/cli/dashboard/app.js +0 -106
  16. package/dist/cli/dashboard/app.js.map +0 -1
  17. package/dist/cli/dashboard/components/gauge.d.ts +0 -9
  18. package/dist/cli/dashboard/components/gauge.js +0 -10
  19. package/dist/cli/dashboard/components/gauge.js.map +0 -1
  20. package/dist/cli/dashboard/components/panel-box.d.ts +0 -10
  21. package/dist/cli/dashboard/components/panel-box.js +0 -6
  22. package/dist/cli/dashboard/components/panel-box.js.map +0 -1
  23. package/dist/cli/dashboard/components/sparkline.d.ts +0 -9
  24. package/dist/cli/dashboard/components/sparkline.js +0 -25
  25. package/dist/cli/dashboard/components/sparkline.js.map +0 -1
  26. package/dist/cli/dashboard/components/status-badge.d.ts +0 -6
  27. package/dist/cli/dashboard/components/status-badge.js +0 -24
  28. package/dist/cli/dashboard/components/status-badge.js.map +0 -1
  29. package/dist/cli/dashboard/hooks/use-breakpoint.d.ts +0 -7
  30. package/dist/cli/dashboard/hooks/use-breakpoint.js +0 -15
  31. package/dist/cli/dashboard/hooks/use-breakpoint.js.map +0 -1
  32. package/dist/cli/dashboard/hooks/use-health.d.ts +0 -9
  33. package/dist/cli/dashboard/hooks/use-health.js +0 -35
  34. package/dist/cli/dashboard/hooks/use-health.js.map +0 -1
  35. package/dist/cli/dashboard/hooks/use-indexer-info.d.ts +0 -5
  36. package/dist/cli/dashboard/hooks/use-indexer-info.js +0 -19
  37. package/dist/cli/dashboard/hooks/use-indexer-info.js.map +0 -1
  38. package/dist/cli/dashboard/hooks/use-logs.d.ts +0 -19
  39. package/dist/cli/dashboard/hooks/use-logs.js +0 -55
  40. package/dist/cli/dashboard/hooks/use-logs.js.map +0 -1
  41. package/dist/cli/dashboard/hooks/use-node-info.d.ts +0 -21
  42. package/dist/cli/dashboard/hooks/use-node-info.js +0 -49
  43. package/dist/cli/dashboard/hooks/use-node-info.js.map +0 -1
  44. package/dist/cli/dashboard/hooks/use-polling.d.ts +0 -7
  45. package/dist/cli/dashboard/hooks/use-polling.js +0 -35
  46. package/dist/cli/dashboard/hooks/use-polling.js.map +0 -1
  47. package/dist/cli/dashboard/hooks/use-proof-server.d.ts +0 -7
  48. package/dist/cli/dashboard/hooks/use-proof-server.js +0 -14
  49. package/dist/cli/dashboard/hooks/use-proof-server.js.map +0 -1
  50. package/dist/cli/dashboard/hooks/use-services.d.ts +0 -3
  51. package/dist/cli/dashboard/hooks/use-services.js +0 -6
  52. package/dist/cli/dashboard/hooks/use-services.js.map +0 -1
  53. package/dist/cli/dashboard/hooks/use-terminal-size.d.ts +0 -5
  54. package/dist/cli/dashboard/hooks/use-terminal-size.js +0 -22
  55. package/dist/cli/dashboard/hooks/use-terminal-size.js.map +0 -1
  56. package/dist/cli/dashboard/hooks/use-wallet-state.d.ts +0 -10
  57. package/dist/cli/dashboard/hooks/use-wallet-state.js +0 -63
  58. package/dist/cli/dashboard/hooks/use-wallet-state.js.map +0 -1
  59. package/dist/cli/dashboard/layouts/large.d.ts +0 -7
  60. package/dist/cli/dashboard/layouts/large.js +0 -13
  61. package/dist/cli/dashboard/layouts/large.js.map +0 -1
  62. package/dist/cli/dashboard/layouts/medium.d.ts +0 -7
  63. package/dist/cli/dashboard/layouts/medium.js +0 -11
  64. package/dist/cli/dashboard/layouts/medium.js.map +0 -1
  65. package/dist/cli/dashboard/layouts/small.d.ts +0 -7
  66. package/dist/cli/dashboard/layouts/small.js +0 -11
  67. package/dist/cli/dashboard/layouts/small.js.map +0 -1
  68. package/dist/cli/dashboard/panels/indexer-panel.d.ts +0 -11
  69. package/dist/cli/dashboard/panels/indexer-panel.js +0 -17
  70. package/dist/cli/dashboard/panels/indexer-panel.js.map +0 -1
  71. package/dist/cli/dashboard/panels/log-panel.d.ts +0 -13
  72. package/dist/cli/dashboard/panels/log-panel.js +0 -27
  73. package/dist/cli/dashboard/panels/log-panel.js.map +0 -1
  74. package/dist/cli/dashboard/panels/node-panel.d.ts +0 -10
  75. package/dist/cli/dashboard/panels/node-panel.js +0 -17
  76. package/dist/cli/dashboard/panels/node-panel.js.map +0 -1
  77. package/dist/cli/dashboard/panels/proof-panel.d.ts +0 -10
  78. package/dist/cli/dashboard/panels/proof-panel.js +0 -20
  79. package/dist/cli/dashboard/panels/proof-panel.js.map +0 -1
  80. package/dist/cli/dashboard/panels/response-graph.d.ts +0 -10
  81. package/dist/cli/dashboard/panels/response-graph.js +0 -12
  82. package/dist/cli/dashboard/panels/response-graph.js.map +0 -1
  83. package/dist/cli/dashboard/panels/wallet-panel.d.ts +0 -9
  84. package/dist/cli/dashboard/panels/wallet-panel.js +0 -24
  85. package/dist/cli/dashboard/panels/wallet-panel.js.map +0 -1
  86. package/dist/cli/dashboard/types.d.ts +0 -39
  87. package/dist/cli/dashboard/types.js +0 -2
  88. package/dist/cli/dashboard/types.js.map +0 -1
@@ -1,24 +0,0 @@
1
- import { jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Text } from 'ink';
3
- const STATUS_COLORS = {
4
- healthy: 'green',
5
- running: 'green',
6
- ok: 'green',
7
- busy: 'yellow',
8
- unknown: 'gray',
9
- unhealthy: 'red',
10
- stopped: 'red',
11
- };
12
- const STATUS_SYMBOLS = {
13
- healthy: '●',
14
- running: '●',
15
- ok: '●',
16
- busy: '◐',
17
- unknown: '○',
18
- unhealthy: '●',
19
- stopped: '●',
20
- };
21
- export function StatusBadge({ status }) {
22
- return (_jsxs(Text, { color: STATUS_COLORS[status], children: [STATUS_SYMBOLS[status], " ", status] }));
23
- }
24
- //# sourceMappingURL=status-badge.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"status-badge.js","sourceRoot":"","sources":["../../../../src/cli/dashboard/components/status-badge.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAM3B,MAAM,aAAa,GAA+C;IAChE,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,OAAO;IAChB,EAAE,EAAE,OAAO;IACX,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,MAAM;IACf,SAAS,EAAE,KAAK;IAChB,OAAO,EAAE,KAAK;CACf,CAAC;AAEF,MAAM,cAAc,GAA+C;IACjE,OAAO,EAAE,GAAG;IACZ,OAAO,EAAE,GAAG;IACZ,EAAE,EAAE,GAAG;IACP,IAAI,EAAE,GAAG;IACT,OAAO,EAAE,GAAG;IACZ,SAAS,EAAE,GAAG;IACd,OAAO,EAAE,GAAG;CACb,CAAC;AAEF,MAAM,UAAU,WAAW,CAAC,EAAE,MAAM,EAAoB;IACtD,OAAO,CACL,MAAC,IAAI,IAAC,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,aAC/B,cAAc,CAAC,MAAM,CAAC,OAAG,MAAM,IAC3B,CACR,CAAC;AACJ,CAAC"}
@@ -1,7 +0,0 @@
1
- export type Breakpoint = 'small' | 'medium' | 'large';
2
- export declare function getBreakpoint(width: number): Breakpoint;
3
- export declare function useBreakpoint(): {
4
- breakpoint: Breakpoint;
5
- columns: number;
6
- rows: number;
7
- };
@@ -1,15 +0,0 @@
1
- import { useMemo } from 'react';
2
- import { useTerminalSize } from './use-terminal-size.js';
3
- export function getBreakpoint(width) {
4
- if (width < 40)
5
- return 'small';
6
- if (width < 120)
7
- return 'medium';
8
- return 'large';
9
- }
10
- export function useBreakpoint() {
11
- const { columns, rows } = useTerminalSize();
12
- const breakpoint = useMemo(() => getBreakpoint(columns), [columns]);
13
- return { breakpoint, columns, rows };
14
- }
15
- //# sourceMappingURL=use-breakpoint.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"use-breakpoint.js","sourceRoot":"","sources":["../../../../src/cli/dashboard/hooks/use-breakpoint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAIzD,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,IAAI,KAAK,GAAG,EAAE;QAAE,OAAO,OAAO,CAAC;IAC/B,IAAI,KAAK,GAAG,GAAG;QAAE,OAAO,QAAQ,CAAC;IACjC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC;IAC5C,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACpE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AACvC,CAAC"}
@@ -1,9 +0,0 @@
1
- import { type HealthReport } from '../../../core/health.js';
2
- import type { NetworkConfig } from '../../../core/types.js';
3
- export interface HealthWithHistory {
4
- current: HealthReport;
5
- nodeHistory: number[];
6
- indexerHistory: number[];
7
- proofServerHistory: number[];
8
- }
9
- export declare function useHealth(config: NetworkConfig): import("./use-polling.js").PollingState<HealthWithHistory>;
@@ -1,35 +0,0 @@
1
- import { useRef } from 'react';
2
- import { usePolling } from './use-polling.js';
3
- import { checkAllHealth } from '../../../core/health.js';
4
- const MAX_HISTORY = 30;
5
- export function useHealth(config) {
6
- const nodeHistory = useRef([]);
7
- const indexerHistory = useRef([]);
8
- const proofServerHistory = useRef([]);
9
- const polling = usePolling(async () => {
10
- const report = await checkAllHealth(config);
11
- if (report.node.responseTime != null) {
12
- nodeHistory.current.push(report.node.responseTime);
13
- if (nodeHistory.current.length > MAX_HISTORY)
14
- nodeHistory.current.shift();
15
- }
16
- if (report.indexer.responseTime != null) {
17
- indexerHistory.current.push(report.indexer.responseTime);
18
- if (indexerHistory.current.length > MAX_HISTORY)
19
- indexerHistory.current.shift();
20
- }
21
- if (report.proofServer.responseTime != null) {
22
- proofServerHistory.current.push(report.proofServer.responseTime);
23
- if (proofServerHistory.current.length > MAX_HISTORY)
24
- proofServerHistory.current.shift();
25
- }
26
- return {
27
- current: report,
28
- nodeHistory: [...nodeHistory.current],
29
- indexerHistory: [...indexerHistory.current],
30
- proofServerHistory: [...proofServerHistory.current],
31
- };
32
- }, 10000);
33
- return polling;
34
- }
35
- //# sourceMappingURL=use-health.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"use-health.js","sourceRoot":"","sources":["../../../../src/cli/dashboard/hooks/use-health.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAqB,MAAM,yBAAyB,CAAC;AAU5E,MAAM,WAAW,GAAG,EAAE,CAAC;AAEvB,MAAM,UAAU,SAAS,CAAC,MAAqB;IAC7C,MAAM,WAAW,GAAG,MAAM,CAAW,EAAE,CAAC,CAAC;IACzC,MAAM,cAAc,GAAG,MAAM,CAAW,EAAE,CAAC,CAAC;IAC5C,MAAM,kBAAkB,GAAG,MAAM,CAAW,EAAE,CAAC,CAAC;IAEhD,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,IAAgC,EAAE;QAChE,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,CAAC;QAE5C,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,EAAE,CAAC;YACrC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACnD,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,GAAG,WAAW;gBAAE,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAC5E,CAAC;QACD,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,IAAI,IAAI,EAAE,CAAC;YACxC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YACzD,IAAI,cAAc,CAAC,OAAO,CAAC,MAAM,GAAG,WAAW;gBAAE,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAClF,CAAC;QACD,IAAI,MAAM,CAAC,WAAW,CAAC,YAAY,IAAI,IAAI,EAAE,CAAC;YAC5C,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;YACjE,IAAI,kBAAkB,CAAC,OAAO,CAAC,MAAM,GAAG,WAAW;gBAAE,kBAAkB,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAC1F,CAAC;QAED,OAAO;YACL,OAAO,EAAE,MAAM;YACf,WAAW,EAAE,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC;YACrC,cAAc,EAAE,CAAC,GAAG,cAAc,CAAC,OAAO,CAAC;YAC3C,kBAAkB,EAAE,CAAC,GAAG,kBAAkB,CAAC,OAAO,CAAC;SACpD,CAAC;IACJ,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -1,5 +0,0 @@
1
- export interface IndexerInfo {
2
- ready: boolean;
3
- responseTime: number | null;
4
- }
5
- export declare function useIndexerInfo(indexerUrl: string): import("./use-polling.js").PollingState<IndexerInfo>;
@@ -1,19 +0,0 @@
1
- import { usePolling } from './use-polling.js';
2
- async function fetchIndexerInfo(indexerUrl) {
3
- const origin = new URL(indexerUrl).origin;
4
- const start = Date.now();
5
- try {
6
- const response = await fetch(`${origin}/ready`, { signal: AbortSignal.timeout(5000) });
7
- return {
8
- ready: response.ok,
9
- responseTime: Date.now() - start,
10
- };
11
- }
12
- catch {
13
- return { ready: false, responseTime: Date.now() - start };
14
- }
15
- }
16
- export function useIndexerInfo(indexerUrl) {
17
- return usePolling(() => fetchIndexerInfo(indexerUrl), 10000);
18
- }
19
- //# sourceMappingURL=use-indexer-info.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"use-indexer-info.js","sourceRoot":"","sources":["../../../../src/cli/dashboard/hooks/use-indexer-info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAO9C,KAAK,UAAU,gBAAgB,CAAC,UAAkB;IAChD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC;IAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,QAAQ,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvF,OAAO;YACL,KAAK,EAAE,QAAQ,CAAC,EAAE;YAClB,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK;SACjC,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC;IAC5D,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,UAAkB;IAC/C,OAAO,UAAU,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,CAAC;AAC/D,CAAC"}
@@ -1,19 +0,0 @@
1
- import { type ParsedLogLine, type LogFilter } from '../lib/log-parser.js';
2
- export interface LogState {
3
- lines: ParsedLogLine[];
4
- filteredLines: ParsedLogLine[];
5
- filter: LogFilter;
6
- scrollOffset: number;
7
- }
8
- export declare function useLogs(): {
9
- lines: ParsedLogLine[];
10
- allLines: ParsedLogLine[];
11
- filter: LogFilter;
12
- scrollOffset: number;
13
- loading: boolean;
14
- cycleService: () => void;
15
- cycleLevel: () => void;
16
- setSearch: (search: string) => void;
17
- scrollUp: () => void;
18
- scrollDown: () => void;
19
- };
@@ -1,55 +0,0 @@
1
- import { useState, useCallback } from 'react';
2
- import { usePolling } from './use-polling.js';
3
- import { composeLogs } from '../../../core/docker.js';
4
- import { parseLogLines, filterLogs } from '../lib/log-parser.js';
5
- const SERVICE_CYCLE = [undefined, 'node', 'indexer', 'proof-server'];
6
- const LEVEL_CYCLE = [undefined, 'info', 'warn', 'error'];
7
- export function useLogs() {
8
- const [filter, setFilter] = useState({});
9
- const [scrollOffset, setScrollOffset] = useState(0);
10
- const polling = usePolling(async () => {
11
- const raw = await composeLogs({ lines: 100 });
12
- return parseLogLines(raw);
13
- }, 3000);
14
- const lines = polling.data ?? [];
15
- const filteredLines = filterLogs(lines, filter);
16
- const cycleService = useCallback(() => {
17
- setFilter((prev) => {
18
- const currentIdx = SERVICE_CYCLE.indexOf(prev.service);
19
- const nextIdx = (currentIdx + 1) % SERVICE_CYCLE.length;
20
- return { ...prev, service: SERVICE_CYCLE[nextIdx] };
21
- });
22
- setScrollOffset(0);
23
- }, []);
24
- const cycleLevel = useCallback(() => {
25
- setFilter((prev) => {
26
- const currentIdx = LEVEL_CYCLE.indexOf(prev.level);
27
- const nextIdx = (currentIdx + 1) % LEVEL_CYCLE.length;
28
- return { ...prev, level: LEVEL_CYCLE[nextIdx] };
29
- });
30
- setScrollOffset(0);
31
- }, []);
32
- const setSearch = useCallback((search) => {
33
- setFilter((prev) => ({ ...prev, search: search || undefined }));
34
- setScrollOffset(0);
35
- }, []);
36
- const scrollUp = useCallback(() => {
37
- setScrollOffset((prev) => Math.max(0, prev - 1));
38
- }, []);
39
- const scrollDown = useCallback(() => {
40
- setScrollOffset((prev) => Math.min(filteredLines.length - 1, prev + 1));
41
- }, [filteredLines.length]);
42
- return {
43
- lines: filteredLines,
44
- allLines: lines,
45
- filter,
46
- scrollOffset,
47
- loading: polling.loading,
48
- cycleService,
49
- cycleLevel,
50
- setSearch,
51
- scrollUp,
52
- scrollDown,
53
- };
54
- }
55
- //# sourceMappingURL=use-logs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"use-logs.js","sourceRoot":"","sources":["../../../../src/cli/dashboard/hooks/use-logs.ts"],"names":[],"mappings":"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"}
@@ -1,21 +0,0 @@
1
- import { type SystemHealth } from '../lib/substrate-rpc.js';
2
- export interface NodeInfo {
3
- chainName: string | null;
4
- nodeName: string | null;
5
- version: string | null;
6
- health: SystemHealth | null;
7
- bestBlock: number | null;
8
- avgBlockTime: number | null;
9
- }
10
- export declare function useNodeInfo(nodeUrl: string): {
11
- data: {
12
- avgBlockTime: number | null;
13
- chainName: string | null;
14
- nodeName: string | null;
15
- version: string | null;
16
- health: SystemHealth | null;
17
- bestBlock: number | null;
18
- } | null;
19
- error: unknown | null;
20
- loading: boolean;
21
- };
@@ -1,49 +0,0 @@
1
- import { useEffect, useRef } from 'react';
2
- import { usePolling } from './use-polling.js';
3
- import { fetchSystemChain, fetchSystemName, fetchSystemVersion, fetchSystemHealth, fetchBestBlockHeader, } from '../lib/substrate-rpc.js';
4
- async function fetchNodeInfo(nodeUrl) {
5
- const [chainName, nodeName, version, health, header] = await Promise.all([
6
- fetchSystemChain(nodeUrl),
7
- fetchSystemName(nodeUrl),
8
- fetchSystemVersion(nodeUrl),
9
- fetchSystemHealth(nodeUrl),
10
- fetchBestBlockHeader(nodeUrl),
11
- ]);
12
- return {
13
- chainName,
14
- nodeName,
15
- version,
16
- health,
17
- bestBlock: header?.number ?? null,
18
- avgBlockTime: null,
19
- };
20
- }
21
- export function useNodeInfo(nodeUrl) {
22
- const blockHistory = useRef([]);
23
- const polling = usePolling(() => fetchNodeInfo(nodeUrl), 5000);
24
- useEffect(() => {
25
- if (polling.data?.bestBlock != null) {
26
- const now = Date.now();
27
- const history = blockHistory.current;
28
- history.push({ block: polling.data.bestBlock, time: now });
29
- if (history.length > 20)
30
- history.shift();
31
- }
32
- }, [polling.data?.bestBlock]);
33
- const avgBlockTime = (() => {
34
- const history = blockHistory.current;
35
- if (history.length < 2)
36
- return null;
37
- const first = history[0];
38
- const last = history[history.length - 1];
39
- const blockDiff = last.block - first.block;
40
- if (blockDiff <= 0)
41
- return null;
42
- return (last.time - first.time) / blockDiff / 1000;
43
- })();
44
- return {
45
- ...polling,
46
- data: polling.data ? { ...polling.data, avgBlockTime } : null,
47
- };
48
- }
49
- //# sourceMappingURL=use-node-info.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"use-node-info.js","sourceRoot":"","sources":["../../../../src/cli/dashboard/hooks/use-node-info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,GAErB,MAAM,yBAAyB,CAAC;AAWjC,KAAK,UAAU,aAAa,CAAC,OAAe;IAC1C,MAAM,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACvE,gBAAgB,CAAC,OAAO,CAAC;QACzB,eAAe,CAAC,OAAO,CAAC;QACxB,kBAAkB,CAAC,OAAO,CAAC;QAC3B,iBAAiB,CAAC,OAAO,CAAC;QAC1B,oBAAoB,CAAC,OAAO,CAAC;KAC9B,CAAC,CAAC;IAEH,OAAO;QACL,SAAS;QACT,QAAQ;QACR,OAAO;QACP,MAAM;QACN,SAAS,EAAE,MAAM,EAAE,MAAM,IAAI,IAAI;QACjC,YAAY,EAAE,IAAI;KACnB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAAe;IACzC,MAAM,YAAY,GAAG,MAAM,CAAoC,EAAE,CAAC,CAAC;IACnE,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC;IAE/D,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,OAAO,CAAC,IAAI,EAAE,SAAS,IAAI,IAAI,EAAE,CAAC;YACpC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACvB,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC;YACrC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;YAC3D,IAAI,OAAO,CAAC,MAAM,GAAG,EAAE;gBAAE,OAAO,CAAC,KAAK,EAAE,CAAC;QAC3C,CAAC;IACH,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;IAE9B,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE;QACzB,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC;QACrC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QACpC,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACzB,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACzC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QAC3C,IAAI,SAAS,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QAChC,OAAO,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC;IACrD,CAAC,CAAC,EAAE,CAAC;IAEL,OAAO;QACL,GAAG,OAAO;QACV,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI;KAC9D,CAAC;AACJ,CAAC"}
@@ -1,7 +0,0 @@
1
- export declare function createPoller<T>(fetcher: () => Promise<T>, intervalMs: number, onData: (data: T) => void, onError: (error: unknown) => void): () => void;
2
- export interface PollingState<T> {
3
- data: T | null;
4
- error: unknown | null;
5
- loading: boolean;
6
- }
7
- export declare function usePolling<T>(fetcher: () => Promise<T>, intervalMs: number): PollingState<T>;
@@ -1,35 +0,0 @@
1
- import { useState, useEffect, useRef } from 'react';
2
- export function createPoller(fetcher, intervalMs, onData, onError) {
3
- let stopped = false;
4
- const poll = async () => {
5
- if (stopped)
6
- return;
7
- try {
8
- const data = await fetcher();
9
- if (!stopped)
10
- onData(data);
11
- }
12
- catch (err) {
13
- if (!stopped)
14
- onError(err);
15
- }
16
- };
17
- // Initial fetch
18
- void poll();
19
- const timer = setInterval(() => void poll(), intervalMs);
20
- return () => {
21
- stopped = true;
22
- clearInterval(timer);
23
- };
24
- }
25
- export function usePolling(fetcher, intervalMs) {
26
- const [state, setState] = useState({ data: null, error: null, loading: true });
27
- const fetcherRef = useRef(fetcher);
28
- fetcherRef.current = fetcher;
29
- useEffect(() => {
30
- const stop = createPoller(() => fetcherRef.current(), intervalMs, (data) => setState({ data, error: null, loading: false }), (error) => setState((prev) => ({ ...prev, error, loading: false })));
31
- return stop;
32
- }, [intervalMs]);
33
- return state;
34
- }
35
- //# sourceMappingURL=use-polling.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"use-polling.js","sourceRoot":"","sources":["../../../../src/cli/dashboard/hooks/use-polling.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAEpD,MAAM,UAAU,YAAY,CAC1B,OAAyB,EACzB,UAAkB,EAClB,MAAyB,EACzB,OAAiC;IAEjC,IAAI,OAAO,GAAG,KAAK,CAAC;IAEpB,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;QACtB,IAAI,OAAO;YAAE,OAAO;QACpB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,OAAO,EAAE,CAAC;YAC7B,IAAI,CAAC,OAAO;gBAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,OAAO;gBAAE,OAAO,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC,CAAC;IAEF,gBAAgB;IAChB,KAAK,IAAI,EAAE,CAAC;IAEZ,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,EAAE,EAAE,UAAU,CAAC,CAAC;IAEzD,OAAO,GAAG,EAAE;QACV,OAAO,GAAG,IAAI,CAAC;QACf,aAAa,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC,CAAC;AACJ,CAAC;AAQD,MAAM,UAAU,UAAU,CAAI,OAAyB,EAAE,UAAkB;IACzE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAkB,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAChG,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IACnC,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC;IAE7B,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,IAAI,GAAG,YAAY,CACvB,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAC1B,UAAU,EACV,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EACzD,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CACpE,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjB,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -1,7 +0,0 @@
1
- import { type ProofServerReady } from '../lib/proof-server-api.js';
2
- export interface ProofServerInfo {
3
- version: string | null;
4
- proofVersions: string[] | null;
5
- ready: ProofServerReady | null;
6
- }
7
- export declare function useProofServer(proofServerUrl: string): import("./use-polling.js").PollingState<ProofServerInfo>;
@@ -1,14 +0,0 @@
1
- import { usePolling } from './use-polling.js';
2
- import { fetchProofServerVersion, fetchProofServerReady, fetchProofVersions, } from '../lib/proof-server-api.js';
3
- async function fetchAllProofServerInfo(baseUrl) {
4
- const [version, ready, proofVersions] = await Promise.all([
5
- fetchProofServerVersion(baseUrl),
6
- fetchProofServerReady(baseUrl),
7
- fetchProofVersions(baseUrl),
8
- ]);
9
- return { version, ready, proofVersions };
10
- }
11
- export function useProofServer(proofServerUrl) {
12
- return usePolling(() => fetchAllProofServerInfo(proofServerUrl), 10000);
13
- }
14
- //# sourceMappingURL=use-proof-server.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"use-proof-server.js","sourceRoot":"","sources":["../../../../src/cli/dashboard/hooks/use-proof-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,kBAAkB,GAEnB,MAAM,4BAA4B,CAAC;AAQpC,KAAK,UAAU,uBAAuB,CAAC,OAAe;IACpD,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,aAAa,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACxD,uBAAuB,CAAC,OAAO,CAAC;QAChC,qBAAqB,CAAC,OAAO,CAAC;QAC9B,kBAAkB,CAAC,OAAO,CAAC;KAC5B,CAAC,CAAC;IACH,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,cAAsB;IACnD,OAAO,UAAU,CAAC,GAAG,EAAE,CAAC,uBAAuB,CAAC,cAAc,CAAC,EAAE,KAAK,CAAC,CAAC;AAC1E,CAAC"}
@@ -1,3 +0,0 @@
1
- import { type PollingState } from './use-polling.js';
2
- import type { ServiceStatus } from '../../../core/types.js';
3
- export declare function useServices(): PollingState<ServiceStatus[]>;
@@ -1,6 +0,0 @@
1
- import { usePolling } from './use-polling.js';
2
- import { composePs } from '../../../core/docker.js';
3
- export function useServices() {
4
- return usePolling(() => composePs(), 5000);
5
- }
6
- //# sourceMappingURL=use-services.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"use-services.js","sourceRoot":"","sources":["../../../../src/cli/dashboard/hooks/use-services.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAqB,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAGpD,MAAM,UAAU,WAAW;IACzB,OAAO,UAAU,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,CAAC;AAC7C,CAAC"}
@@ -1,5 +0,0 @@
1
- export interface TerminalSize {
2
- columns: number;
3
- rows: number;
4
- }
5
- export declare function useTerminalSize(): TerminalSize;
@@ -1,22 +0,0 @@
1
- import { useState, useEffect } from 'react';
2
- import { useStdout } from 'ink';
3
- export function useTerminalSize() {
4
- const { stdout } = useStdout();
5
- const [size, setSize] = useState({
6
- columns: stdout?.columns ?? 80,
7
- rows: stdout?.rows ?? 24,
8
- });
9
- useEffect(() => {
10
- if (!stdout)
11
- return;
12
- const handleResize = () => {
13
- setSize({ columns: stdout.columns, rows: stdout.rows });
14
- };
15
- stdout.on('resize', handleResize);
16
- return () => {
17
- stdout.off('resize', handleResize);
18
- };
19
- }, [stdout]);
20
- return size;
21
- }
22
- //# sourceMappingURL=use-terminal-size.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"use-terminal-size.js","sourceRoot":"","sources":["../../../../src/cli/dashboard/hooks/use-terminal-size.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AAOhC,MAAM,UAAU,eAAe;IAC7B,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC;IAC/B,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAe;QAC7C,OAAO,EAAE,MAAM,EAAE,OAAO,IAAI,EAAE;QAC9B,IAAI,EAAE,MAAM,EAAE,IAAI,IAAI,EAAE;KACzB,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,MAAM;YAAE,OAAO;QAEpB,MAAM,YAAY,GAAG,GAAG,EAAE;YACxB,OAAO,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAC1D,CAAC,CAAC;QAEF,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QAClC,OAAO,GAAG,EAAE;YACV,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QACrC,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -1,10 +0,0 @@
1
- import type { NetworkManager } from '../../../core/network-manager.js';
2
- import type { WalletBalances } from '../../../core/types.js';
3
- export interface WalletState {
4
- connected: boolean;
5
- connecting: boolean;
6
- error: string | null;
7
- balances: WalletBalances | null;
8
- address: string | null;
9
- }
10
- export declare function useWalletState(manager: NetworkManager): WalletState;
@@ -1,63 +0,0 @@
1
- import { useState, useEffect } from 'react';
2
- import { getWalletBalances } from '../../../core/wallet.js';
3
- export function useWalletState(manager) {
4
- const [state, setState] = useState({
5
- connected: false,
6
- connecting: false,
7
- error: null,
8
- balances: null,
9
- address: null,
10
- });
11
- useEffect(() => {
12
- let cancelled = false;
13
- let timer = null;
14
- const connect = async () => {
15
- if (manager.getStatus() !== 'running') {
16
- setState({ connected: false, connecting: false, error: 'Network not running', balances: null, address: null });
17
- return;
18
- }
19
- setState((prev) => ({ ...prev, connecting: true, error: null }));
20
- try {
21
- const wallet = await manager.ensureWallet();
22
- if (cancelled)
23
- return;
24
- const balances = await getWalletBalances(wallet);
25
- if (cancelled)
26
- return;
27
- setState({ connected: true, connecting: false, error: null, balances, address: 'master' });
28
- timer = setInterval(async () => {
29
- if (cancelled)
30
- return;
31
- try {
32
- const b = await getWalletBalances(wallet);
33
- if (!cancelled) {
34
- setState((prev) => ({ ...prev, balances: b }));
35
- }
36
- }
37
- catch {
38
- // Ignore polling errors
39
- }
40
- }, 10000);
41
- }
42
- catch (err) {
43
- if (!cancelled) {
44
- setState({
45
- connected: false,
46
- connecting: false,
47
- error: err instanceof Error ? err.message : 'Wallet connection failed',
48
- balances: null,
49
- address: null,
50
- });
51
- }
52
- }
53
- };
54
- void connect();
55
- return () => {
56
- cancelled = true;
57
- if (timer)
58
- clearInterval(timer);
59
- };
60
- }, [manager, manager.getStatus()]);
61
- return state;
62
- }
63
- //# sourceMappingURL=use-wallet-state.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"use-wallet-state.js","sourceRoot":"","sources":["../../../../src/cli/dashboard/hooks/use-wallet-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAG5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAU5D,MAAM,UAAU,cAAc,CAAC,OAAuB;IACpD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAc;QAC9C,SAAS,EAAE,KAAK;QAChB,UAAU,EAAE,KAAK;QACjB,KAAK,EAAE,IAAI;QACX,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,IAAI;KACd,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,IAAI,KAAK,GAA0C,IAAI,CAAC;QAExD,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE;YACzB,IAAI,OAAO,CAAC,SAAS,EAAE,KAAK,SAAS,EAAE,CAAC;gBACtC,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,qBAAqB,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC/G,OAAO;YACT,CAAC;YAED,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAEjE,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,YAAY,EAAE,CAAC;gBAC5C,IAAI,SAAS;oBAAE,OAAO;gBAEtB,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,MAAM,CAAC,CAAC;gBACjD,IAAI,SAAS;oBAAE,OAAO;gBAEtB,QAAQ,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;gBAE3F,KAAK,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;oBAC7B,IAAI,SAAS;wBAAE,OAAO;oBACtB,IAAI,CAAC;wBACH,MAAM,CAAC,GAAG,MAAM,iBAAiB,CAAC,MAAM,CAAC,CAAC;wBAC1C,IAAI,CAAC,SAAS,EAAE,CAAC;4BACf,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;wBACjD,CAAC;oBACH,CAAC;oBAAC,MAAM,CAAC;wBACP,wBAAwB;oBAC1B,CAAC;gBACH,CAAC,EAAE,KAAK,CAAC,CAAC;YACZ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,QAAQ,CAAC;wBACP,SAAS,EAAE,KAAK;wBAChB,UAAU,EAAE,KAAK;wBACjB,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,0BAA0B;wBACtE,QAAQ,EAAE,IAAI;wBACd,OAAO,EAAE,IAAI;qBACd,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC,CAAC;QAEF,KAAK,OAAO,EAAE,CAAC;QAEf,OAAO,GAAG,EAAE;YACV,SAAS,GAAG,IAAI,CAAC;YACjB,IAAI,KAAK;gBAAE,aAAa,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IAEnC,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -1,7 +0,0 @@
1
- import React from 'react';
2
- import type { DashboardData } from '../types.js';
3
- interface LargeLayoutProps {
4
- data: DashboardData;
5
- }
6
- export declare function LargeLayout({ data }: LargeLayoutProps): React.ReactElement;
7
- export {};
@@ -1,13 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Box } from 'ink';
3
- import { NodePanel } from '../panels/node-panel.js';
4
- import { IndexerPanel } from '../panels/indexer-panel.js';
5
- import { ProofPanel } from '../panels/proof-panel.js';
6
- import { WalletPanel } from '../panels/wallet-panel.js';
7
- import { LogPanel } from '../panels/log-panel.js';
8
- import { ResponseGraph } from '../panels/response-graph.js';
9
- export function LargeLayout({ data }) {
10
- const halfWidth = Math.floor(data.columns / 2);
11
- return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { flexDirection: "row", children: [_jsx(Box, { width: "25%", children: _jsx(NodePanel, { data: data.node, loading: data.nodeLoading, focused: data.focusedPanel === 'node' }) }), _jsx(Box, { width: "25%", children: _jsx(IndexerPanel, { data: data.indexer, nodeBlock: data.node?.bestBlock ?? null, loading: data.indexerLoading, focused: data.focusedPanel === 'indexer' }) }), _jsx(Box, { width: "25%", children: _jsx(ProofPanel, { data: data.proofServer, loading: data.proofServerLoading, focused: data.focusedPanel === 'proof' }) }), _jsx(Box, { width: "25%", children: _jsx(WalletPanel, { wallet: data.wallet, focused: data.focusedPanel === 'wallet' }) })] }), _jsxs(Box, { flexDirection: "row", children: [_jsx(Box, { width: "50%", children: _jsx(ResponseGraph, { nodeHistory: data.healthHistory.nodeHistory, indexerHistory: data.healthHistory.indexerHistory, proofServerHistory: data.healthHistory.proofServerHistory, focused: data.focusedPanel === 'graph', width: halfWidth - 4 }) }), _jsx(Box, { width: "50%", children: _jsx(LogPanel, { lines: data.logs.lines, filter: data.logs.filter, scrollOffset: data.logs.scrollOffset, maxLines: Math.max(5, data.rows - 12), focused: data.focusedPanel === 'logs', searchMode: data.searchMode, searchText: data.searchText }) })] })] }));
12
- }
13
- //# sourceMappingURL=large.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"large.js","sourceRoot":"","sources":["../../../../src/cli/dashboard/layouts/large.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAO5D,MAAM,UAAU,WAAW,CAAC,EAAE,IAAI,EAAoB;IACpD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;IAE/C,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,MAAC,GAAG,IAAC,aAAa,EAAC,KAAK,aACtB,KAAC,GAAG,IAAC,KAAK,EAAC,KAAK,YACd,KAAC,SAAS,IAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,YAAY,KAAK,MAAM,GAAI,GAC5F,EACN,KAAC,GAAG,IAAC,KAAK,EAAC,KAAK,YACd,KAAC,YAAY,IAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,IAAI,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,OAAO,EAAE,IAAI,CAAC,YAAY,KAAK,SAAS,GAAI,GACjJ,EACN,KAAC,GAAG,IAAC,KAAK,EAAC,KAAK,YACd,KAAC,UAAU,IAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,kBAAkB,EAAE,OAAO,EAAE,IAAI,CAAC,YAAY,KAAK,OAAO,GAAI,GAC5G,EACN,KAAC,GAAG,IAAC,KAAK,EAAC,KAAK,YACd,KAAC,WAAW,IAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,YAAY,KAAK,QAAQ,GAAI,GACzE,IACF,EACN,MAAC,GAAG,IAAC,aAAa,EAAC,KAAK,aACtB,KAAC,GAAG,IAAC,KAAK,EAAC,KAAK,YACd,KAAC,aAAa,IACZ,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,WAAW,EAC3C,cAAc,EAAE,IAAI,CAAC,aAAa,CAAC,cAAc,EACjD,kBAAkB,EAAE,IAAI,CAAC,aAAa,CAAC,kBAAkB,EACzD,OAAO,EAAE,IAAI,CAAC,YAAY,KAAK,OAAO,EACtC,KAAK,EAAE,SAAS,GAAG,CAAC,GACpB,GACE,EACN,KAAC,GAAG,IAAC,KAAK,EAAC,KAAK,YACd,KAAC,QAAQ,IACP,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EACtB,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EACxB,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EACpC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,EACrC,OAAO,EAAE,IAAI,CAAC,YAAY,KAAK,MAAM,EACrC,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,UAAU,EAAE,IAAI,CAAC,UAAU,GAC3B,GACE,IACF,IACF,CACP,CAAC;AACJ,CAAC"}
@@ -1,7 +0,0 @@
1
- import React from 'react';
2
- import type { DashboardData } from '../types.js';
3
- interface MediumLayoutProps {
4
- data: DashboardData;
5
- }
6
- export declare function MediumLayout({ data }: MediumLayoutProps): React.ReactElement;
7
- export {};
@@ -1,11 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Box } from 'ink';
3
- import { NodePanel } from '../panels/node-panel.js';
4
- import { IndexerPanel } from '../panels/indexer-panel.js';
5
- import { ProofPanel } from '../panels/proof-panel.js';
6
- import { WalletPanel } from '../panels/wallet-panel.js';
7
- import { LogPanel } from '../panels/log-panel.js';
8
- export function MediumLayout({ data }) {
9
- return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { flexDirection: "row", children: [_jsx(Box, { width: "50%", children: _jsx(NodePanel, { data: data.node, loading: data.nodeLoading, focused: data.focusedPanel === 'node' }) }), _jsx(Box, { width: "50%", children: _jsx(ProofPanel, { data: data.proofServer, loading: data.proofServerLoading, focused: data.focusedPanel === 'proof' }) })] }), _jsxs(Box, { flexDirection: "row", children: [_jsx(Box, { width: "50%", children: _jsx(IndexerPanel, { data: data.indexer, nodeBlock: data.node?.bestBlock ?? null, loading: data.indexerLoading, focused: data.focusedPanel === 'indexer' }) }), _jsx(Box, { width: "50%", children: _jsx(WalletPanel, { wallet: data.wallet, focused: data.focusedPanel === 'wallet' }) })] }), _jsx(LogPanel, { lines: data.logs.lines, filter: data.logs.filter, scrollOffset: data.logs.scrollOffset, maxLines: Math.max(5, data.rows - 16), focused: data.focusedPanel === 'logs', searchMode: data.searchMode, searchText: data.searchText })] }));
10
- }
11
- //# sourceMappingURL=medium.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"medium.js","sourceRoot":"","sources":["../../../../src/cli/dashboard/layouts/medium.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAOlD,MAAM,UAAU,YAAY,CAAC,EAAE,IAAI,EAAqB;IACtD,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,MAAC,GAAG,IAAC,aAAa,EAAC,KAAK,aACtB,KAAC,GAAG,IAAC,KAAK,EAAC,KAAK,YACd,KAAC,SAAS,IAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,YAAY,KAAK,MAAM,GAAI,GAC5F,EACN,KAAC,GAAG,IAAC,KAAK,EAAC,KAAK,YACd,KAAC,UAAU,IAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,kBAAkB,EAAE,OAAO,EAAE,IAAI,CAAC,YAAY,KAAK,OAAO,GAAI,GAC5G,IACF,EACN,MAAC,GAAG,IAAC,aAAa,EAAC,KAAK,aACtB,KAAC,GAAG,IAAC,KAAK,EAAC,KAAK,YACd,KAAC,YAAY,IAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,IAAI,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,OAAO,EAAE,IAAI,CAAC,YAAY,KAAK,SAAS,GAAI,GACjJ,EACN,KAAC,GAAG,IAAC,KAAK,EAAC,KAAK,YACd,KAAC,WAAW,IAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,YAAY,KAAK,QAAQ,GAAI,GACzE,IACF,EACN,KAAC,QAAQ,IACP,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EACtB,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EACxB,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EACpC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,EACrC,OAAO,EAAE,IAAI,CAAC,YAAY,KAAK,MAAM,EACrC,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,UAAU,EAAE,IAAI,CAAC,UAAU,GAC3B,IACE,CACP,CAAC;AACJ,CAAC"}
@@ -1,7 +0,0 @@
1
- import React from 'react';
2
- import type { DashboardData } from '../types.js';
3
- interface SmallLayoutProps {
4
- data: DashboardData;
5
- }
6
- export declare function SmallLayout({ data }: SmallLayoutProps): React.ReactElement;
7
- export {};
@@ -1,11 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Box } from 'ink';
3
- import { NodePanel } from '../panels/node-panel.js';
4
- import { IndexerPanel } from '../panels/indexer-panel.js';
5
- import { ProofPanel } from '../panels/proof-panel.js';
6
- import { WalletPanel } from '../panels/wallet-panel.js';
7
- import { LogPanel } from '../panels/log-panel.js';
8
- export function SmallLayout({ data }) {
9
- return (_jsxs(Box, { flexDirection: "column", children: [_jsx(NodePanel, { data: data.node, loading: data.nodeLoading, compact: true }), _jsx(IndexerPanel, { data: data.indexer, nodeBlock: data.node?.bestBlock ?? null, loading: data.indexerLoading, compact: true }), _jsx(ProofPanel, { data: data.proofServer, loading: data.proofServerLoading, compact: true }), _jsx(WalletPanel, { wallet: data.wallet, compact: true }), _jsx(LogPanel, { lines: data.logs.lines, filter: data.logs.filter, scrollOffset: data.logs.scrollOffset, maxLines: data.rows - 10, focused: data.focusedPanel === 'logs', searchMode: data.searchMode, searchText: data.searchText })] }));
10
- }
11
- //# sourceMappingURL=small.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"small.js","sourceRoot":"","sources":["../../../../src/cli/dashboard/layouts/small.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAOlD,MAAM,UAAU,WAAW,CAAC,EAAE,IAAI,EAAoB;IACpD,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,SAAS,IAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,OAAO,SAAG,EACjE,KAAC,YAAY,IAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,IAAI,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,OAAO,SAAG,EACnH,KAAC,UAAU,IAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,kBAAkB,EAAE,OAAO,SAAG,EAChF,KAAC,WAAW,IAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,SAAG,EAC5C,KAAC,QAAQ,IACP,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EACtB,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EACxB,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EACpC,QAAQ,EAAE,IAAI,CAAC,IAAI,GAAG,EAAE,EACxB,OAAO,EAAE,IAAI,CAAC,YAAY,KAAK,MAAM,EACrC,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,UAAU,EAAE,IAAI,CAAC,UAAU,GAC3B,IACE,CACP,CAAC;AACJ,CAAC"}
@@ -1,11 +0,0 @@
1
- import React from 'react';
2
- import type { IndexerInfo } from '../hooks/use-indexer-info.js';
3
- interface IndexerPanelProps {
4
- data: IndexerInfo | null;
5
- nodeBlock: number | null;
6
- loading: boolean;
7
- focused?: boolean;
8
- compact?: boolean;
9
- }
10
- export declare function IndexerPanel({ data, nodeBlock, loading, focused, compact }: IndexerPanelProps): React.ReactElement;
11
- export {};