@gzeoneth/gov-tracker 0.2.1-1 → 0.2.1-alpha.cli-preview.375ef6c
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 +91 -68
- package/dist/calldata/index.d.ts +1 -1
- package/dist/calldata/index.d.ts.map +1 -1
- package/dist/calldata/index.js.map +1 -1
- package/dist/calldata/parameter-decoder.d.ts.map +1 -1
- package/dist/calldata/parameter-decoder.js +8 -1
- package/dist/calldata/parameter-decoder.js.map +1 -1
- package/dist/calldata/signature-lookup.d.ts +17 -2
- package/dist/calldata/signature-lookup.d.ts.map +1 -1
- package/dist/calldata/signature-lookup.js +20 -2
- package/dist/calldata/signature-lookup.js.map +1 -1
- package/dist/cli/cli.d.ts +21 -0
- package/dist/cli/cli.d.ts.map +1 -0
- package/dist/cli/{monitor.js → cli.js} +148 -74
- package/dist/cli/cli.js.map +1 -0
- package/dist/cli/lib/cli.d.ts +6 -1
- package/dist/cli/lib/cli.d.ts.map +1 -1
- package/dist/cli/lib/cli.js +58 -20
- package/dist/cli/lib/cli.js.map +1 -1
- package/dist/cli/lib/concurrency.d.ts +20 -0
- package/dist/cli/lib/concurrency.d.ts.map +1 -0
- package/dist/cli/lib/concurrency.js +32 -0
- package/dist/cli/lib/concurrency.js.map +1 -0
- package/dist/cli/tui/App.d.ts +13 -0
- package/dist/cli/tui/App.d.ts.map +1 -0
- package/dist/cli/tui/App.js +146 -0
- package/dist/cli/tui/App.js.map +1 -0
- package/dist/cli/tui/components/CollapsibleSection.d.ts +20 -0
- package/dist/cli/tui/components/CollapsibleSection.d.ts.map +1 -0
- package/dist/cli/tui/components/CollapsibleSection.js +29 -0
- package/dist/cli/tui/components/CollapsibleSection.js.map +1 -0
- package/dist/cli/tui/components/ConfirmDialog.d.ts +14 -0
- package/dist/cli/tui/components/ConfirmDialog.d.ts.map +1 -0
- package/dist/cli/tui/components/ConfirmDialog.js +29 -0
- package/dist/cli/tui/components/ConfirmDialog.js.map +1 -0
- package/dist/cli/tui/components/CopyableText.d.ts +23 -0
- package/dist/cli/tui/components/CopyableText.d.ts.map +1 -0
- package/dist/cli/tui/components/CopyableText.js +49 -0
- package/dist/cli/tui/components/CopyableText.js.map +1 -0
- package/dist/cli/tui/components/EmptyState.d.ts +11 -0
- package/dist/cli/tui/components/EmptyState.d.ts.map +1 -0
- package/dist/cli/tui/components/EmptyState.js +34 -0
- package/dist/cli/tui/components/EmptyState.js.map +1 -0
- package/dist/cli/tui/components/ErrorDisplay.d.ts +17 -0
- package/dist/cli/tui/components/ErrorDisplay.d.ts.map +1 -0
- package/dist/cli/tui/components/ErrorDisplay.js +66 -0
- package/dist/cli/tui/components/ErrorDisplay.js.map +1 -0
- package/dist/cli/tui/components/Header.d.ts +22 -0
- package/dist/cli/tui/components/Header.d.ts.map +1 -0
- package/dist/cli/tui/components/Header.js +73 -0
- package/dist/cli/tui/components/Header.js.map +1 -0
- package/dist/cli/tui/components/KeyHelp.d.ts +20 -0
- package/dist/cli/tui/components/KeyHelp.d.ts.map +1 -0
- package/dist/cli/tui/components/KeyHelp.js +136 -0
- package/dist/cli/tui/components/KeyHelp.js.map +1 -0
- package/dist/cli/tui/components/ProposalRow.d.ts +11 -0
- package/dist/cli/tui/components/ProposalRow.d.ts.map +1 -0
- package/dist/cli/tui/components/ProposalRow.js +106 -0
- package/dist/cli/tui/components/ProposalRow.js.map +1 -0
- package/dist/cli/tui/components/ScrollIndicator.d.ts +26 -0
- package/dist/cli/tui/components/ScrollIndicator.d.ts.map +1 -0
- package/dist/cli/tui/components/ScrollIndicator.js +59 -0
- package/dist/cli/tui/components/ScrollIndicator.js.map +1 -0
- package/dist/cli/tui/components/SearchBar.d.ts +12 -0
- package/dist/cli/tui/components/SearchBar.d.ts.map +1 -0
- package/dist/cli/tui/components/SearchBar.js +36 -0
- package/dist/cli/tui/components/SearchBar.js.map +1 -0
- package/dist/cli/tui/components/Skeleton.d.ts +22 -0
- package/dist/cli/tui/components/Skeleton.d.ts.map +1 -0
- package/dist/cli/tui/components/Skeleton.js +35 -0
- package/dist/cli/tui/components/Skeleton.js.map +1 -0
- package/dist/cli/tui/components/Spinner.d.ts +10 -0
- package/dist/cli/tui/components/Spinner.d.ts.map +1 -0
- package/dist/cli/tui/components/Spinner.js +24 -0
- package/dist/cli/tui/components/Spinner.js.map +1 -0
- package/dist/cli/tui/components/StageProgress.d.ts +12 -0
- package/dist/cli/tui/components/StageProgress.d.ts.map +1 -0
- package/dist/cli/tui/components/StageProgress.js +72 -0
- package/dist/cli/tui/components/StageProgress.js.map +1 -0
- package/dist/cli/tui/components/StageRow.d.ts +12 -0
- package/dist/cli/tui/components/StageRow.d.ts.map +1 -0
- package/dist/cli/tui/components/StageRow.js +106 -0
- package/dist/cli/tui/components/StageRow.js.map +1 -0
- package/dist/cli/tui/components/StatusBadge.d.ts +12 -0
- package/dist/cli/tui/components/StatusBadge.d.ts.map +1 -0
- package/dist/cli/tui/components/StatusBadge.js +27 -0
- package/dist/cli/tui/components/StatusBadge.js.map +1 -0
- package/dist/cli/tui/components/StatusBar.d.ts +12 -0
- package/dist/cli/tui/components/StatusBar.d.ts.map +1 -0
- package/dist/cli/tui/components/StatusBar.js +14 -0
- package/dist/cli/tui/components/StatusBar.js.map +1 -0
- package/dist/cli/tui/components/Timeline.d.ts +12 -0
- package/dist/cli/tui/components/Timeline.d.ts.map +1 -0
- package/dist/cli/tui/components/Timeline.js +91 -0
- package/dist/cli/tui/components/Timeline.js.map +1 -0
- package/dist/cli/tui/components/Toast.d.ts +13 -0
- package/dist/cli/tui/components/Toast.d.ts.map +1 -0
- package/dist/cli/tui/components/Toast.js +35 -0
- package/dist/cli/tui/components/Toast.js.map +1 -0
- package/dist/cli/tui/components/TrackingProgress.d.ts +24 -0
- package/dist/cli/tui/components/TrackingProgress.d.ts.map +1 -0
- package/dist/cli/tui/components/TrackingProgress.js +82 -0
- package/dist/cli/tui/components/TrackingProgress.js.map +1 -0
- package/dist/cli/tui/components/ViewLayout.d.ts +26 -0
- package/dist/cli/tui/components/ViewLayout.d.ts.map +1 -0
- package/dist/cli/tui/components/ViewLayout.js +57 -0
- package/dist/cli/tui/components/ViewLayout.js.map +1 -0
- package/dist/cli/tui/components/VotingStats.d.ts +11 -0
- package/dist/cli/tui/components/VotingStats.d.ts.map +1 -0
- package/dist/cli/tui/components/VotingStats.js +87 -0
- package/dist/cli/tui/components/VotingStats.js.map +1 -0
- package/dist/cli/tui/config.d.ts +42 -0
- package/dist/cli/tui/config.d.ts.map +1 -0
- package/dist/cli/tui/config.js +144 -0
- package/dist/cli/tui/config.js.map +1 -0
- package/dist/cli/tui/hooks/index.d.ts +12 -0
- package/dist/cli/tui/hooks/index.d.ts.map +1 -0
- package/dist/cli/tui/hooks/index.js +18 -0
- package/dist/cli/tui/hooks/index.js.map +1 -0
- package/dist/cli/tui/hooks/useCache.d.ts +12 -0
- package/dist/cli/tui/hooks/useCache.d.ts.map +1 -0
- package/dist/cli/tui/hooks/useCache.js +110 -0
- package/dist/cli/tui/hooks/useCache.js.map +1 -0
- package/dist/cli/tui/hooks/useCliProcess.d.ts +19 -0
- package/dist/cli/tui/hooks/useCliProcess.d.ts.map +1 -0
- package/dist/cli/tui/hooks/useCliProcess.js +135 -0
- package/dist/cli/tui/hooks/useCliProcess.js.map +1 -0
- package/dist/cli/tui/hooks/useNavigation.d.ts +40 -0
- package/dist/cli/tui/hooks/useNavigation.d.ts.map +1 -0
- package/dist/cli/tui/hooks/useNavigation.js +283 -0
- package/dist/cli/tui/hooks/useNavigation.js.map +1 -0
- package/dist/cli/tui/hooks/useProposals.d.ts +10 -0
- package/dist/cli/tui/hooks/useProposals.d.ts.map +1 -0
- package/dist/cli/tui/hooks/useProposals.js +215 -0
- package/dist/cli/tui/hooks/useProposals.js.map +1 -0
- package/dist/cli/tui/hooks/useStageCalldata.d.ts +17 -0
- package/dist/cli/tui/hooks/useStageCalldata.d.ts.map +1 -0
- package/dist/cli/tui/hooks/useStageCalldata.js +77 -0
- package/dist/cli/tui/hooks/useStageCalldata.js.map +1 -0
- package/dist/cli/tui/hooks/useTracker.d.ts +27 -0
- package/dist/cli/tui/hooks/useTracker.d.ts.map +1 -0
- package/dist/cli/tui/hooks/useTracker.js +205 -0
- package/dist/cli/tui/hooks/useTracker.js.map +1 -0
- package/dist/cli/tui/index.d.ts +15 -0
- package/dist/cli/tui/index.d.ts.map +1 -0
- package/dist/cli/tui/index.js +100 -0
- package/dist/cli/tui/index.js.map +1 -0
- package/dist/cli/tui/ink-wrapper.d.ts +43 -0
- package/dist/cli/tui/ink-wrapper.d.ts.map +1 -0
- package/dist/cli/tui/ink-wrapper.js +41 -0
- package/dist/cli/tui/ink-wrapper.js.map +1 -0
- package/dist/cli/tui/types.d.ts +37 -0
- package/dist/cli/tui/types.d.ts.map +1 -0
- package/dist/cli/tui/types.js +6 -0
- package/dist/cli/tui/types.js.map +1 -0
- package/dist/cli/tui/utils/clipboard.d.ts +7 -0
- package/dist/cli/tui/utils/clipboard.d.ts.map +1 -0
- package/dist/cli/tui/utils/clipboard.js +46 -0
- package/dist/cli/tui/utils/clipboard.js.map +1 -0
- package/dist/cli/tui/utils/index.d.ts +5 -0
- package/dist/cli/tui/utils/index.d.ts.map +1 -0
- package/dist/cli/tui/utils/index.js +13 -0
- package/dist/cli/tui/utils/index.js.map +1 -0
- package/dist/cli/tui/utils/terminal.d.ts +18 -0
- package/dist/cli/tui/utils/terminal.d.ts.map +1 -0
- package/dist/cli/tui/utils/terminal.js +26 -0
- package/dist/cli/tui/utils/terminal.js.map +1 -0
- package/dist/cli/tui/utils/text.d.ts +12 -0
- package/dist/cli/tui/utils/text.d.ts.map +1 -0
- package/dist/cli/tui/utils/text.js +30 -0
- package/dist/cli/tui/utils/text.js.map +1 -0
- package/dist/cli/tui/views/CalldataView.d.ts +12 -0
- package/dist/cli/tui/views/CalldataView.d.ts.map +1 -0
- package/dist/cli/tui/views/CalldataView.js +194 -0
- package/dist/cli/tui/views/CalldataView.js.map +1 -0
- package/dist/cli/tui/views/DescriptionView.d.ts +12 -0
- package/dist/cli/tui/views/DescriptionView.d.ts.map +1 -0
- package/dist/cli/tui/views/DescriptionView.js +182 -0
- package/dist/cli/tui/views/DescriptionView.js.map +1 -0
- package/dist/cli/tui/views/ElectionView.d.ts +12 -0
- package/dist/cli/tui/views/ElectionView.d.ts.map +1 -0
- package/dist/cli/tui/views/ElectionView.js +197 -0
- package/dist/cli/tui/views/ElectionView.js.map +1 -0
- package/dist/cli/tui/views/HelpView.d.ts +10 -0
- package/dist/cli/tui/views/HelpView.d.ts.map +1 -0
- package/dist/cli/tui/views/HelpView.js +159 -0
- package/dist/cli/tui/views/HelpView.js.map +1 -0
- package/dist/cli/tui/views/ProposalDetail.d.ts +14 -0
- package/dist/cli/tui/views/ProposalDetail.d.ts.map +1 -0
- package/dist/cli/tui/views/ProposalDetail.js +167 -0
- package/dist/cli/tui/views/ProposalDetail.js.map +1 -0
- package/dist/cli/tui/views/ProposalList.d.ts +17 -0
- package/dist/cli/tui/views/ProposalList.d.ts.map +1 -0
- package/dist/cli/tui/views/ProposalList.js +126 -0
- package/dist/cli/tui/views/ProposalList.js.map +1 -0
- package/dist/cli/tui/views/SettingsView.d.ts +12 -0
- package/dist/cli/tui/views/SettingsView.d.ts.map +1 -0
- package/dist/cli/tui/views/SettingsView.js +203 -0
- package/dist/cli/tui/views/SettingsView.js.map +1 -0
- package/dist/cli/tui/views/SimulationView.d.ts +12 -0
- package/dist/cli/tui/views/SimulationView.d.ts.map +1 -0
- package/dist/cli/tui/views/SimulationView.js +112 -0
- package/dist/cli/tui/views/SimulationView.js.map +1 -0
- package/dist/cli/tui/views/StageView.d.ts +12 -0
- package/dist/cli/tui/views/StageView.d.ts.map +1 -0
- package/dist/cli/tui/views/StageView.js +215 -0
- package/dist/cli/tui/views/StageView.js.map +1 -0
- package/dist/constants.d.ts +1 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +1 -0
- package/dist/constants.js.map +1 -1
- package/dist/data/bundled-cache.json +6651 -2485
- package/dist/discovery/governor-discovery.d.ts.map +1 -1
- package/dist/discovery/governor-discovery.js +2 -1
- package/dist/discovery/governor-discovery.js.map +1 -1
- package/dist/index.d.ts +22 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +28 -3
- package/dist/index.js.map +1 -1
- package/dist/stages/l2-to-l1-message.d.ts +5 -0
- package/dist/stages/l2-to-l1-message.d.ts.map +1 -1
- package/dist/stages/l2-to-l1-message.js +73 -7
- package/dist/stages/l2-to-l1-message.js.map +1 -1
- package/dist/stages/timelock.d.ts.map +1 -1
- package/dist/stages/timelock.js +10 -3
- package/dist/stages/timelock.js.map +1 -1
- package/dist/stages/utils.d.ts +5 -2
- package/dist/stages/utils.d.ts.map +1 -1
- package/dist/stages/utils.js +14 -6
- package/dist/stages/utils.js.map +1 -1
- package/dist/tracker/cache.d.ts +27 -0
- package/dist/tracker/cache.d.ts.map +1 -1
- package/dist/tracker/cache.js +50 -2
- package/dist/tracker/cache.js.map +1 -1
- package/dist/tracker/execute.d.ts.map +1 -1
- package/dist/tracker/execute.js +25 -1
- package/dist/tracker/execute.js.map +1 -1
- package/dist/types/stages.d.ts +15 -2
- package/dist/types/stages.d.ts.map +1 -1
- package/dist/types/stages.js.map +1 -1
- package/dist/types/tracking.d.ts +4 -0
- package/dist/types/tracking.d.ts.map +1 -1
- package/dist/utils/sanitize.d.ts +28 -0
- package/dist/utils/sanitize.d.ts.map +1 -0
- package/dist/utils/sanitize.js +52 -0
- package/dist/utils/sanitize.js.map +1 -0
- package/package.json +28 -16
- package/dist/cli/monitor.d.ts +0 -3
- package/dist/cli/monitor.d.ts.map +0 -1
- package/dist/cli/monitor.js.map +0 -1
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Toast notification component
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.Toast = Toast;
|
|
7
|
+
const ink_wrapper_js_1 = require("../ink-wrapper.js");
|
|
8
|
+
const TOAST_CONFIG = {
|
|
9
|
+
success: { icon: "✓", color: "green", borderColor: "green" },
|
|
10
|
+
error: { icon: "✗", color: "red", borderColor: "red" },
|
|
11
|
+
info: { icon: "ℹ", color: "cyan", borderColor: "cyan" },
|
|
12
|
+
warning: { icon: "⚠", color: "yellow", borderColor: "yellow" },
|
|
13
|
+
};
|
|
14
|
+
function Toast({ message, type = "info", duration = 3000, onDismiss, }) {
|
|
15
|
+
const [visible, setVisible] = (0, ink_wrapper_js_1.useState)(true);
|
|
16
|
+
const config = TOAST_CONFIG[type] ?? TOAST_CONFIG.info;
|
|
17
|
+
(0, ink_wrapper_js_1.useEffect)(() => {
|
|
18
|
+
if (duration > 0) {
|
|
19
|
+
const timer = setTimeout(() => {
|
|
20
|
+
setVisible(false);
|
|
21
|
+
onDismiss?.();
|
|
22
|
+
}, duration);
|
|
23
|
+
return () => clearTimeout(timer);
|
|
24
|
+
}
|
|
25
|
+
return undefined;
|
|
26
|
+
}, [duration, onDismiss]);
|
|
27
|
+
if (!visible)
|
|
28
|
+
return null;
|
|
29
|
+
return (ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Box, { borderStyle: "round", borderColor: config.borderColor, paddingX: 1, marginY: 1 },
|
|
30
|
+
ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: config.color, bold: true },
|
|
31
|
+
config.icon,
|
|
32
|
+
" "),
|
|
33
|
+
ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, null, message)));
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=Toast.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Toast.js","sourceRoot":"","sources":["../../../../src/cli/tui/components/Toast.tsx"],"names":[],"mappings":";AAAA;;GAEG;;AAoBH,sBAiCC;AAnDD,sDAA0E;AAW1E,MAAM,YAAY,GAA4E;IAC5F,OAAO,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE;IAC5D,KAAK,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE;IACtD,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE;IACvD,OAAO,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE;CAC/D,CAAC;AAEF,SAAgB,KAAK,CAAC,EACpB,OAAO,EACP,IAAI,GAAG,MAAM,EACb,QAAQ,GAAG,IAAI,EACf,SAAS,GACE;IACX,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,IAAA,yBAAQ,EAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC;IAEvD,IAAA,0BAAS,EAAC,GAAG,EAAE;QACb,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;YACjB,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC5B,UAAU,CAAC,KAAK,CAAC,CAAC;gBAClB,SAAS,EAAE,EAAE,CAAC;YAChB,CAAC,EAAE,QAAQ,CAAC,CAAC;YACb,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;IAE1B,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAE1B,OAAO,CACL,qCAAC,oBAAG,IACF,WAAW,EAAC,OAAO,EACnB,WAAW,EAAE,MAAM,CAAC,WAAW,EAC/B,QAAQ,EAAE,CAAC,EACX,OAAO,EAAE,CAAC;QAEV,qCAAC,qBAAI,IAAC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI;YAAE,MAAM,CAAC,IAAI;gBAAS;QACrD,qCAAC,qBAAI,QAAE,OAAO,CAAQ,CAClB,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Animated tracking progress indicator
|
|
3
|
+
*/
|
|
4
|
+
interface TrackingProgressProps {
|
|
5
|
+
message: string;
|
|
6
|
+
stage?: string;
|
|
7
|
+
elapsed?: number;
|
|
8
|
+
}
|
|
9
|
+
export declare function TrackingProgress({ message, stage, elapsed, }: TrackingProgressProps): React.ReactElement;
|
|
10
|
+
interface ProgressBarProps {
|
|
11
|
+
current: number;
|
|
12
|
+
total: number;
|
|
13
|
+
width?: number;
|
|
14
|
+
showPercentage?: boolean;
|
|
15
|
+
label?: string;
|
|
16
|
+
}
|
|
17
|
+
export declare function ProgressBar({ current, total, width, showPercentage, label, }: ProgressBarProps): React.ReactElement;
|
|
18
|
+
interface PulsingTextProps {
|
|
19
|
+
text: string;
|
|
20
|
+
color?: string;
|
|
21
|
+
}
|
|
22
|
+
export declare function PulsingText({ text, color }: PulsingTextProps): React.ReactElement;
|
|
23
|
+
export {};
|
|
24
|
+
//# sourceMappingURL=TrackingProgress.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TrackingProgress.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/components/TrackingProgress.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAIH,UAAU,qBAAqB;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAaD,wBAAgB,gBAAgB,CAAC,EAC/B,OAAO,EACP,KAAK,EACL,OAAO,GACR,EAAE,qBAAqB,GAAG,KAAK,CAAC,YAAY,CAoC5C;AAED,UAAU,gBAAgB;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,WAAW,CAAC,EAC1B,OAAO,EACP,KAAK,EACL,KAA0B,EAC1B,cAAqB,EACrB,KAAK,GACN,EAAE,gBAAgB,GAAG,KAAK,CAAC,YAAY,CAiBvC;AAED,UAAU,gBAAgB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,WAAW,CAAC,EAAE,IAAI,EAAE,KAAgB,EAAE,EAAE,gBAAgB,GAAG,KAAK,CAAC,YAAY,CAc5F"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Animated tracking progress indicator
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.TrackingProgress = TrackingProgress;
|
|
7
|
+
exports.ProgressBar = ProgressBar;
|
|
8
|
+
exports.PulsingText = PulsingText;
|
|
9
|
+
const ink_wrapper_js_1 = require("../ink-wrapper.js");
|
|
10
|
+
const SPINNER_FRAMES = ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"];
|
|
11
|
+
const PROGRESS_BAR_WIDTH = 20;
|
|
12
|
+
function formatElapsed(ms) {
|
|
13
|
+
const seconds = Math.floor(ms / 1000);
|
|
14
|
+
if (seconds < 60)
|
|
15
|
+
return `${seconds}s`;
|
|
16
|
+
const minutes = Math.floor(seconds / 60);
|
|
17
|
+
const remainingSeconds = seconds % 60;
|
|
18
|
+
return `${minutes}m ${remainingSeconds}s`;
|
|
19
|
+
}
|
|
20
|
+
function TrackingProgress({ message, stage, elapsed, }) {
|
|
21
|
+
const [frameIndex, setFrameIndex] = (0, ink_wrapper_js_1.useState)(0);
|
|
22
|
+
const [dots, setDots] = (0, ink_wrapper_js_1.useState)(0);
|
|
23
|
+
(0, ink_wrapper_js_1.useEffect)(() => {
|
|
24
|
+
const timer = setInterval(() => {
|
|
25
|
+
setFrameIndex((prev) => (prev + 1) % SPINNER_FRAMES.length);
|
|
26
|
+
setDots((prev) => (prev + 1) % 4);
|
|
27
|
+
}, 100);
|
|
28
|
+
return () => clearInterval(timer);
|
|
29
|
+
}, []);
|
|
30
|
+
const dotString = ".".repeat(dots);
|
|
31
|
+
return (ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Box, { flexDirection: "column", borderStyle: "round", borderColor: "yellow", paddingX: 1 },
|
|
32
|
+
ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Box, null,
|
|
33
|
+
ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "yellow" },
|
|
34
|
+
SPINNER_FRAMES[frameIndex],
|
|
35
|
+
" "),
|
|
36
|
+
ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "white", bold: true }, "Tracking"),
|
|
37
|
+
ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "gray" }, dotString.padEnd(3)),
|
|
38
|
+
elapsed !== undefined && (ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "gray" },
|
|
39
|
+
" (",
|
|
40
|
+
formatElapsed(elapsed),
|
|
41
|
+
")"))),
|
|
42
|
+
stage && (ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Box, { marginLeft: 2 },
|
|
43
|
+
ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "cyan" }, "Stage: "),
|
|
44
|
+
ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, null, stage))),
|
|
45
|
+
ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Box, { marginLeft: 2 },
|
|
46
|
+
ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "gray" }, message))));
|
|
47
|
+
}
|
|
48
|
+
function ProgressBar({ current, total, width = PROGRESS_BAR_WIDTH, showPercentage = true, label, }) {
|
|
49
|
+
const percentage = total > 0 ? Math.min(100, Math.round((current / total) * 100)) : 0;
|
|
50
|
+
const filled = Math.min(width, Math.round((percentage / 100) * width));
|
|
51
|
+
const empty = Math.max(0, width - filled);
|
|
52
|
+
const filledBar = "█".repeat(filled);
|
|
53
|
+
const emptyBar = "░".repeat(empty);
|
|
54
|
+
return (ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Box, null,
|
|
55
|
+
label && ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "gray" },
|
|
56
|
+
label,
|
|
57
|
+
": "),
|
|
58
|
+
ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "green" }, filledBar),
|
|
59
|
+
ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "gray" }, emptyBar),
|
|
60
|
+
showPercentage && ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "gray" },
|
|
61
|
+
" ",
|
|
62
|
+
percentage,
|
|
63
|
+
"%"),
|
|
64
|
+
ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "gray" },
|
|
65
|
+
" (",
|
|
66
|
+
current,
|
|
67
|
+
"/",
|
|
68
|
+
total,
|
|
69
|
+
")")));
|
|
70
|
+
}
|
|
71
|
+
function PulsingText({ text, color = "yellow" }) {
|
|
72
|
+
const [intensity, setIntensity] = (0, ink_wrapper_js_1.useState)(0);
|
|
73
|
+
(0, ink_wrapper_js_1.useEffect)(() => {
|
|
74
|
+
const timer = setInterval(() => {
|
|
75
|
+
setIntensity((prev) => (prev + 1) % 3);
|
|
76
|
+
}, 500);
|
|
77
|
+
return () => clearInterval(timer);
|
|
78
|
+
}, []);
|
|
79
|
+
const colors = [color, "white", color];
|
|
80
|
+
return ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: colors[intensity], bold: intensity === 1 }, text);
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=TrackingProgress.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TrackingProgress.js","sourceRoot":"","sources":["../../../../src/cli/tui/components/TrackingProgress.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared view layout component
|
|
3
|
+
*/
|
|
4
|
+
import type { ViewType, FilterType } from "../types.js";
|
|
5
|
+
type SkeletonType = "list" | "detail" | "text" | "none";
|
|
6
|
+
interface KeyHelpContext {
|
|
7
|
+
calldataActionCount?: number;
|
|
8
|
+
currentActionIndex?: number;
|
|
9
|
+
}
|
|
10
|
+
interface ViewLayoutProps {
|
|
11
|
+
view: ViewType;
|
|
12
|
+
filter?: FilterType;
|
|
13
|
+
title?: string;
|
|
14
|
+
hasProviders?: boolean;
|
|
15
|
+
isTracking?: boolean;
|
|
16
|
+
loading?: boolean;
|
|
17
|
+
loadingText?: string;
|
|
18
|
+
skeletonType?: SkeletonType;
|
|
19
|
+
error?: string | null;
|
|
20
|
+
breadcrumb?: string[];
|
|
21
|
+
keyHelpContext?: KeyHelpContext;
|
|
22
|
+
children: React.ReactNode;
|
|
23
|
+
}
|
|
24
|
+
export declare function ViewLayout({ view, filter, title, hasProviders, isTracking, loading, loadingText, skeletonType, error, breadcrumb, keyHelpContext, children, }: ViewLayoutProps): React.ReactElement;
|
|
25
|
+
export {};
|
|
26
|
+
//# sourceMappingURL=ViewLayout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ViewLayout.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/components/ViewLayout.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAMxD,KAAK,YAAY,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;AAExD,UAAU,cAAc;IACtB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,UAAU,eAAe;IACvB,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAqDD,wBAAgB,UAAU,CAAC,EACzB,IAAI,EACJ,MAAc,EACd,KAAK,EACL,YAAoB,EACpB,UAAkB,EAClB,OAAe,EACf,WAA0B,EAC1B,YAAqB,EACrB,KAAY,EACZ,UAAU,EACV,cAAc,EACd,QAAQ,GACT,EAAE,eAAe,GAAG,KAAK,CAAC,YAAY,CA2BtC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Shared view layout component
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ViewLayout = ViewLayout;
|
|
7
|
+
const ink_wrapper_js_1 = require("../ink-wrapper.js");
|
|
8
|
+
const Header_js_1 = require("./Header.js");
|
|
9
|
+
const KeyHelp_js_1 = require("./KeyHelp.js");
|
|
10
|
+
const Spinner_js_1 = require("./Spinner.js");
|
|
11
|
+
const Skeleton_js_1 = require("./Skeleton.js");
|
|
12
|
+
function LoadingSkeleton({ type, text }) {
|
|
13
|
+
if (type === "none") {
|
|
14
|
+
return ink_wrapper_js_1.React.createElement(Spinner_js_1.Spinner, { text: text });
|
|
15
|
+
}
|
|
16
|
+
if (type === "list") {
|
|
17
|
+
return (ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Box, { flexDirection: "column" },
|
|
18
|
+
ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Box, { marginBottom: 1 },
|
|
19
|
+
ink_wrapper_js_1.React.createElement(Spinner_js_1.Spinner, { text: text })),
|
|
20
|
+
ink_wrapper_js_1.React.createElement(Skeleton_js_1.SkeletonList, { rows: 8, columns: [3, 45, 12, 10] })));
|
|
21
|
+
}
|
|
22
|
+
if (type === "detail") {
|
|
23
|
+
return (ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Box, { flexDirection: "column" },
|
|
24
|
+
ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Box, { marginBottom: 1 },
|
|
25
|
+
ink_wrapper_js_1.React.createElement(Spinner_js_1.Spinner, { text: text })),
|
|
26
|
+
ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Box, { flexDirection: "column", gap: 1 },
|
|
27
|
+
ink_wrapper_js_1.React.createElement(Skeleton_js_1.Skeleton, { width: 60 }),
|
|
28
|
+
ink_wrapper_js_1.React.createElement(Skeleton_js_1.Skeleton, { width: 40 }),
|
|
29
|
+
ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Box, { marginTop: 1, flexDirection: "column" },
|
|
30
|
+
ink_wrapper_js_1.React.createElement(Skeleton_js_1.Skeleton, { width: 70 }),
|
|
31
|
+
ink_wrapper_js_1.React.createElement(Skeleton_js_1.Skeleton, { width: 55 }),
|
|
32
|
+
ink_wrapper_js_1.React.createElement(Skeleton_js_1.Skeleton, { width: 65 })))));
|
|
33
|
+
}
|
|
34
|
+
return (ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Box, { flexDirection: "column" },
|
|
35
|
+
ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Box, { marginBottom: 1 },
|
|
36
|
+
ink_wrapper_js_1.React.createElement(Spinner_js_1.Spinner, { text: text })),
|
|
37
|
+
ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Box, { flexDirection: "column" },
|
|
38
|
+
ink_wrapper_js_1.React.createElement(Skeleton_js_1.Skeleton, { width: 80 }),
|
|
39
|
+
ink_wrapper_js_1.React.createElement(Skeleton_js_1.Skeleton, { width: 75 }),
|
|
40
|
+
ink_wrapper_js_1.React.createElement(Skeleton_js_1.Skeleton, { width: 70 }),
|
|
41
|
+
ink_wrapper_js_1.React.createElement(Skeleton_js_1.Skeleton, { width: 78 }),
|
|
42
|
+
ink_wrapper_js_1.React.createElement(Skeleton_js_1.Skeleton, { width: 60 }))));
|
|
43
|
+
}
|
|
44
|
+
function ViewLayout({ view, filter = "all", title, hasProviders = false, isTracking = false, loading = false, loadingText = "Loading...", skeletonType = "none", error = null, breadcrumb, keyHelpContext, children, }) {
|
|
45
|
+
return (ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Box, { flexDirection: "column", height: "100%" },
|
|
46
|
+
ink_wrapper_js_1.React.createElement(Header_js_1.Header, { view: view, filter: filter, stats: null, hasProviders: hasProviders, isTracking: isTracking, title: title, breadcrumb: breadcrumb }),
|
|
47
|
+
ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Box, { flexDirection: "column", paddingX: 1, flexGrow: 1 },
|
|
48
|
+
loading && ink_wrapper_js_1.React.createElement(LoadingSkeleton, { type: skeletonType, text: loadingText }),
|
|
49
|
+
error && (ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Box, { flexDirection: "column" },
|
|
50
|
+
ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "red" },
|
|
51
|
+
"Error: ",
|
|
52
|
+
error),
|
|
53
|
+
ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "gray" }, "Press b to go back"))),
|
|
54
|
+
!loading && !error && children),
|
|
55
|
+
ink_wrapper_js_1.React.createElement(KeyHelp_js_1.KeyHelp, { view: view, hasProviders: hasProviders, context: keyHelpContext })));
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=ViewLayout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ViewLayout.js","sourceRoot":"","sources":["../../../../src/cli/tui/components/ViewLayout.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enhanced voting statistics visualization
|
|
3
|
+
*/
|
|
4
|
+
import type { VotingActiveData } from "../../../types/stages.js";
|
|
5
|
+
interface VotingStatsProps {
|
|
6
|
+
data: VotingActiveData;
|
|
7
|
+
compact?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare function VotingStats({ data, compact }: VotingStatsProps): React.ReactElement;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=VotingStats.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VotingStats.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/components/VotingStats.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,UAAU,gBAAgB;IACxB,IAAI,EAAE,gBAAgB,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAiBD,wBAAgB,WAAW,CAAC,EAAE,IAAI,EAAE,OAAe,EAAE,EAAE,gBAAgB,GAAG,KAAK,CAAC,YAAY,CAoE3F"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Enhanced voting statistics visualization
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.VotingStats = VotingStats;
|
|
7
|
+
const ink_wrapper_js_1 = require("../ink-wrapper.js");
|
|
8
|
+
const BAR_WIDTH = 30;
|
|
9
|
+
function formatVoteCount(value) {
|
|
10
|
+
const num = parseFloat(value);
|
|
11
|
+
if (isNaN(num))
|
|
12
|
+
return value;
|
|
13
|
+
if (num >= 1000000)
|
|
14
|
+
return `${(num / 1000000).toFixed(1)}M`;
|
|
15
|
+
if (num >= 1000)
|
|
16
|
+
return `${(num / 1000).toFixed(1)}K`;
|
|
17
|
+
return value;
|
|
18
|
+
}
|
|
19
|
+
function calculatePercentage(value, total) {
|
|
20
|
+
const num = parseFloat(value) || 0;
|
|
21
|
+
return total > 0 ? (num / total) * 100 : 0;
|
|
22
|
+
}
|
|
23
|
+
function VotingStats({ data, compact = false }) {
|
|
24
|
+
const forVotes = parseFloat(data.forVotes) || 0;
|
|
25
|
+
const againstVotes = parseFloat(data.againstVotes) || 0;
|
|
26
|
+
const abstainVotes = parseFloat(data.abstainVotes) || 0;
|
|
27
|
+
const total = forVotes + againstVotes + abstainVotes;
|
|
28
|
+
const forPct = calculatePercentage(data.forVotes, total);
|
|
29
|
+
const againstPct = calculatePercentage(data.againstVotes, total);
|
|
30
|
+
const abstainPct = calculatePercentage(data.abstainVotes, total);
|
|
31
|
+
const forBarWidth = Math.min(BAR_WIDTH, Math.max(0, Math.round((forPct / 100) * BAR_WIDTH)));
|
|
32
|
+
const againstBarWidth = Math.min(BAR_WIDTH, Math.max(0, Math.round((againstPct / 100) * BAR_WIDTH)));
|
|
33
|
+
if (compact) {
|
|
34
|
+
return (ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Box, null,
|
|
35
|
+
ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "green" },
|
|
36
|
+
"\u2713",
|
|
37
|
+
formatVoteCount(data.forVotes)),
|
|
38
|
+
ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "gray" }, " / "),
|
|
39
|
+
ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "red" },
|
|
40
|
+
"\u2717",
|
|
41
|
+
formatVoteCount(data.againstVotes)),
|
|
42
|
+
data.quorumReached && ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "cyan" }, " [Q]")));
|
|
43
|
+
}
|
|
44
|
+
return (ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Box, { flexDirection: "column", borderStyle: "round", borderColor: "gray", paddingX: 1 },
|
|
45
|
+
ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { bold: true, color: "cyan" }, "Voting Results"),
|
|
46
|
+
ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Box, { marginTop: 1 },
|
|
47
|
+
ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "green" }, "For "),
|
|
48
|
+
ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "green" }, "█".repeat(forBarWidth)),
|
|
49
|
+
ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "gray" }, "░".repeat(BAR_WIDTH - forBarWidth)),
|
|
50
|
+
ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "green" },
|
|
51
|
+
" ",
|
|
52
|
+
forPct.toFixed(1),
|
|
53
|
+
"%"),
|
|
54
|
+
ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "gray" },
|
|
55
|
+
" (",
|
|
56
|
+
formatVoteCount(data.forVotes),
|
|
57
|
+
")")),
|
|
58
|
+
ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Box, null,
|
|
59
|
+
ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "red" }, "Against "),
|
|
60
|
+
ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "red" }, "█".repeat(againstBarWidth)),
|
|
61
|
+
ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "gray" }, "░".repeat(BAR_WIDTH - againstBarWidth)),
|
|
62
|
+
ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "red" },
|
|
63
|
+
" ",
|
|
64
|
+
againstPct.toFixed(1),
|
|
65
|
+
"%"),
|
|
66
|
+
ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "gray" },
|
|
67
|
+
" (",
|
|
68
|
+
formatVoteCount(data.againstVotes),
|
|
69
|
+
")")),
|
|
70
|
+
ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Box, null,
|
|
71
|
+
ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "gray" }, "Abstain "),
|
|
72
|
+
ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "gray" },
|
|
73
|
+
abstainPct.toFixed(1),
|
|
74
|
+
"% (",
|
|
75
|
+
formatVoteCount(data.abstainVotes),
|
|
76
|
+
")")),
|
|
77
|
+
ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Box, { marginTop: 1, borderStyle: "single", borderColor: "gray", borderTop: false, borderLeft: false, borderRight: false },
|
|
78
|
+
ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "cyan" },
|
|
79
|
+
"Quorum: ",
|
|
80
|
+
formatVoteCount(data.quorum),
|
|
81
|
+
" "),
|
|
82
|
+
data.quorumReached ? (ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "green", bold: true }, "\u2713 REACHED")) : (ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "yellow" }, "\u25CB Not yet reached"))),
|
|
83
|
+
data.proposalState && (ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Box, { marginTop: 1 },
|
|
84
|
+
ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "gray" }, "State: "),
|
|
85
|
+
ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { bold: true, color: data.proposalState === "Succeeded" ? "green" : data.proposalState === "Defeated" ? "red" : "yellow" }, data.proposalState)))));
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=VotingStats.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VotingStats.js","sourceRoot":"","sources":["../../../../src/cli/tui/components/VotingStats.tsx"],"names":[],"mappings":";AAAA;;GAEG;;AAyBH,kCAoEC;AA3FD,sDAAqD;AAQrD,MAAM,SAAS,GAAG,EAAE,CAAC;AAErB,SAAS,eAAe,CAAC,KAAa;IACpC,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IAC9B,IAAI,KAAK,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAC7B,IAAI,GAAG,IAAI,OAAS;QAAE,OAAO,GAAG,CAAC,GAAG,GAAG,OAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IAChE,IAAI,GAAG,IAAI,IAAK;QAAE,OAAO,GAAG,CAAC,GAAG,GAAG,IAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IACxD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAa,EAAE,KAAa;IACvD,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnC,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED,SAAgB,WAAW,CAAC,EAAE,IAAI,EAAE,OAAO,GAAG,KAAK,EAAoB;IACrE,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,YAAY,GAAG,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACxD,MAAM,YAAY,GAAG,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,QAAQ,GAAG,YAAY,GAAG,YAAY,CAAC;IAErD,MAAM,MAAM,GAAG,mBAAmB,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACzD,MAAM,UAAU,GAAG,mBAAmB,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IACjE,MAAM,UAAU,GAAG,mBAAmB,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IAEjE,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IAC7F,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IAErG,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CACL,qCAAC,oBAAG;YACF,qCAAC,qBAAI,IAAC,KAAK,EAAC,OAAO;;gBAAG,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAQ;YAC5D,qCAAC,qBAAI,IAAC,KAAK,EAAC,MAAM,UAAW;YAC7B,qCAAC,qBAAI,IAAC,KAAK,EAAC,KAAK;;gBAAG,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,CAAQ;YAC7D,IAAI,CAAC,aAAa,IAAI,qCAAC,qBAAI,IAAC,KAAK,EAAC,MAAM,WAAY,CACjD,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,qCAAC,oBAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,WAAW,EAAC,OAAO,EAAC,WAAW,EAAC,MAAM,EAAC,QAAQ,EAAE,CAAC;QAC5E,qCAAC,qBAAI,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM,qBAAsB;QAE7C,qCAAC,oBAAG,IAAC,SAAS,EAAE,CAAC;YACf,qCAAC,qBAAI,IAAC,KAAK,EAAC,OAAO,eAAgB;YACnC,qCAAC,qBAAI,IAAC,KAAK,EAAC,OAAO,IAAE,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAQ;YACpD,qCAAC,qBAAI,IAAC,KAAK,EAAC,MAAM,IAAE,GAAG,CAAC,MAAM,CAAC,SAAS,GAAG,WAAW,CAAC,CAAQ;YAC/D,qCAAC,qBAAI,IAAC,KAAK,EAAC,OAAO;;gBAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;oBAAS;YAChD,qCAAC,qBAAI,IAAC,KAAK,EAAC,MAAM;;gBAAI,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC;oBAAS,CACzD;QAEN,qCAAC,oBAAG;YACF,qCAAC,qBAAI,IAAC,KAAK,EAAC,KAAK,eAAgB;YACjC,qCAAC,qBAAI,IAAC,KAAK,EAAC,KAAK,IAAE,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,CAAQ;YACtD,qCAAC,qBAAI,IAAC,KAAK,EAAC,MAAM,IAAE,GAAG,CAAC,MAAM,CAAC,SAAS,GAAG,eAAe,CAAC,CAAQ;YACnE,qCAAC,qBAAI,IAAC,KAAK,EAAC,KAAK;;gBAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;oBAAS;YAClD,qCAAC,qBAAI,IAAC,KAAK,EAAC,MAAM;;gBAAI,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC;oBAAS,CAC7D;QAEN,qCAAC,oBAAG;YACF,qCAAC,qBAAI,IAAC,KAAK,EAAC,MAAM,eAAgB;YAClC,qCAAC,qBAAI,IAAC,KAAK,EAAC,MAAM;gBAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;;gBAAK,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC;oBAAS,CACrF;QAEN,qCAAC,oBAAG,IAAC,SAAS,EAAE,CAAC,EAAE,WAAW,EAAC,QAAQ,EAAC,WAAW,EAAC,MAAM,EAAC,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK;YAChH,qCAAC,qBAAI,IAAC,KAAK,EAAC,MAAM;;gBAAU,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;oBAAS;YAChE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CACpB,qCAAC,qBAAI,IAAC,KAAK,EAAC,OAAO,EAAC,IAAI,2BAAiB,CAC1C,CAAC,CAAC,CAAC,CACF,qCAAC,qBAAI,IAAC,KAAK,EAAC,QAAQ,6BAAyB,CAC9C,CACG;QAEL,IAAI,CAAC,aAAa,IAAI,CACrB,qCAAC,oBAAG,IAAC,SAAS,EAAE,CAAC;YACf,qCAAC,qBAAI,IAAC,KAAK,EAAC,MAAM,cAAe;YACjC,qCAAC,qBAAI,IAAC,IAAI,QAAC,KAAK,EAAE,IAAI,CAAC,aAAa,KAAK,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,IAClH,IAAI,CAAC,aAAa,CACd,CACH,CACP,CACG,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TUI Configuration - persistent settings stored alongside cache file
|
|
3
|
+
*/
|
|
4
|
+
export interface TuiConfig {
|
|
5
|
+
rpc: {
|
|
6
|
+
l1Url: string;
|
|
7
|
+
l2Url: string;
|
|
8
|
+
novaUrl: string;
|
|
9
|
+
};
|
|
10
|
+
cache: {
|
|
11
|
+
path: string;
|
|
12
|
+
};
|
|
13
|
+
display: {
|
|
14
|
+
theme: "dark" | "light";
|
|
15
|
+
showProgressBar: boolean;
|
|
16
|
+
compactMode: boolean;
|
|
17
|
+
};
|
|
18
|
+
discovery: {
|
|
19
|
+
defaultDays: number;
|
|
20
|
+
startBlock: number | null;
|
|
21
|
+
chunkSize: number;
|
|
22
|
+
concurrency: number;
|
|
23
|
+
};
|
|
24
|
+
debug: {
|
|
25
|
+
logFile: string;
|
|
26
|
+
namespaces: string;
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Set the base path for config storage (same directory as cache)
|
|
31
|
+
* Call this before using loadConfig/saveConfig in TUI context
|
|
32
|
+
*/
|
|
33
|
+
export declare function setConfigBasePath(cachePath: string): void;
|
|
34
|
+
export interface ConfigLoadResult {
|
|
35
|
+
config: TuiConfig;
|
|
36
|
+
warning?: string;
|
|
37
|
+
}
|
|
38
|
+
export declare function loadConfigWithStatus(): ConfigLoadResult;
|
|
39
|
+
export declare function loadConfig(): TuiConfig;
|
|
40
|
+
export declare function saveConfig(config: TuiConfig): boolean;
|
|
41
|
+
export declare function getDefaultConfig(): TuiConfig;
|
|
42
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/cli/tui/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE;QACH,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;QACxB,eAAe,EAAE,OAAO,CAAC;QACzB,WAAW,EAAE,OAAO,CAAC;KACtB,CAAC;IACF,SAAS,EAAE;QACT,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,KAAK,EAAE;QACL,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AA+BD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CASzD;AAaD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,SAAS,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,oBAAoB,IAAI,gBAAgB,CAwBvD;AAED,wBAAgB,UAAU,IAAI,SAAS,CAEtC;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAYrD;AAED,wBAAgB,gBAAgB,IAAI,SAAS,CAE5C"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* TUI Configuration - persistent settings stored alongside cache file
|
|
4
|
+
*/
|
|
5
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
+
}
|
|
11
|
+
Object.defineProperty(o, k2, desc);
|
|
12
|
+
}) : (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
o[k2] = m[k];
|
|
15
|
+
}));
|
|
16
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
17
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
18
|
+
}) : function(o, v) {
|
|
19
|
+
o["default"] = v;
|
|
20
|
+
});
|
|
21
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
22
|
+
var ownKeys = function(o) {
|
|
23
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
24
|
+
var ar = [];
|
|
25
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
26
|
+
return ar;
|
|
27
|
+
};
|
|
28
|
+
return ownKeys(o);
|
|
29
|
+
};
|
|
30
|
+
return function (mod) {
|
|
31
|
+
if (mod && mod.__esModule) return mod;
|
|
32
|
+
var result = {};
|
|
33
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
34
|
+
__setModuleDefault(result, mod);
|
|
35
|
+
return result;
|
|
36
|
+
};
|
|
37
|
+
})();
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.setConfigBasePath = setConfigBasePath;
|
|
40
|
+
exports.loadConfigWithStatus = loadConfigWithStatus;
|
|
41
|
+
exports.loadConfig = loadConfig;
|
|
42
|
+
exports.saveConfig = saveConfig;
|
|
43
|
+
exports.getDefaultConfig = getDefaultConfig;
|
|
44
|
+
const fs = __importStar(require("fs"));
|
|
45
|
+
const path = __importStar(require("path"));
|
|
46
|
+
const os = __importStar(require("os"));
|
|
47
|
+
const DEFAULT_CONFIG = {
|
|
48
|
+
rpc: {
|
|
49
|
+
l1Url: "",
|
|
50
|
+
l2Url: "",
|
|
51
|
+
novaUrl: "",
|
|
52
|
+
},
|
|
53
|
+
cache: {
|
|
54
|
+
path: "",
|
|
55
|
+
},
|
|
56
|
+
display: {
|
|
57
|
+
theme: "dark",
|
|
58
|
+
showProgressBar: true,
|
|
59
|
+
compactMode: false,
|
|
60
|
+
},
|
|
61
|
+
discovery: {
|
|
62
|
+
defaultDays: 60,
|
|
63
|
+
startBlock: null,
|
|
64
|
+
chunkSize: 10000000, // Match gov-tracker default (10M blocks for L2)
|
|
65
|
+
concurrency: 1,
|
|
66
|
+
},
|
|
67
|
+
debug: {
|
|
68
|
+
logFile: "",
|
|
69
|
+
namespaces: "gov-tracker:*",
|
|
70
|
+
},
|
|
71
|
+
};
|
|
72
|
+
// Module-level cache path for config location
|
|
73
|
+
let configBasePath = null;
|
|
74
|
+
/**
|
|
75
|
+
* Set the base path for config storage (same directory as cache)
|
|
76
|
+
* Call this before using loadConfig/saveConfig in TUI context
|
|
77
|
+
*/
|
|
78
|
+
function setConfigBasePath(cachePath) {
|
|
79
|
+
// If cachePath is a file, use its directory; if a directory, use it directly
|
|
80
|
+
try {
|
|
81
|
+
const stats = fs.existsSync(cachePath) && fs.statSync(cachePath);
|
|
82
|
+
configBasePath = stats && stats.isDirectory() ? cachePath : path.dirname(cachePath);
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
// Fall back to parent directory if stat fails (permissions, race condition, etc.)
|
|
86
|
+
configBasePath = path.dirname(cachePath);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
function getConfigDir() {
|
|
90
|
+
if (configBasePath) {
|
|
91
|
+
return configBasePath;
|
|
92
|
+
}
|
|
93
|
+
return path.join(os.homedir(), ".gov-tracker");
|
|
94
|
+
}
|
|
95
|
+
function getConfigPath() {
|
|
96
|
+
return path.join(getConfigDir(), "tui-config.json");
|
|
97
|
+
}
|
|
98
|
+
function loadConfigWithStatus() {
|
|
99
|
+
try {
|
|
100
|
+
const configPath = getConfigPath();
|
|
101
|
+
if (!fs.existsSync(configPath)) {
|
|
102
|
+
return { config: { ...DEFAULT_CONFIG } };
|
|
103
|
+
}
|
|
104
|
+
const raw = fs.readFileSync(configPath, "utf-8");
|
|
105
|
+
const parsed = JSON.parse(raw);
|
|
106
|
+
return {
|
|
107
|
+
config: {
|
|
108
|
+
rpc: { ...DEFAULT_CONFIG.rpc, ...parsed.rpc },
|
|
109
|
+
cache: { ...DEFAULT_CONFIG.cache, ...parsed.cache },
|
|
110
|
+
display: { ...DEFAULT_CONFIG.display, ...parsed.display },
|
|
111
|
+
discovery: { ...DEFAULT_CONFIG.discovery, ...parsed.discovery },
|
|
112
|
+
debug: { ...DEFAULT_CONFIG.debug, ...parsed.debug },
|
|
113
|
+
},
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
catch (err) {
|
|
117
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
118
|
+
return {
|
|
119
|
+
config: { ...DEFAULT_CONFIG },
|
|
120
|
+
warning: `Config file corrupted, using defaults: ${message}`,
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
function loadConfig() {
|
|
125
|
+
return loadConfigWithStatus().config;
|
|
126
|
+
}
|
|
127
|
+
function saveConfig(config) {
|
|
128
|
+
try {
|
|
129
|
+
const configDir = getConfigDir();
|
|
130
|
+
if (!fs.existsSync(configDir)) {
|
|
131
|
+
fs.mkdirSync(configDir, { recursive: true });
|
|
132
|
+
}
|
|
133
|
+
const configPath = getConfigPath();
|
|
134
|
+
fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
|
|
135
|
+
return true;
|
|
136
|
+
}
|
|
137
|
+
catch {
|
|
138
|
+
return false;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
function getDefaultConfig() {
|
|
142
|
+
return { ...DEFAULT_CONFIG };
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/cli/tui/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export { useCache } from "./useCache.js";
|
|
2
|
+
export type { UseCacheResult } from "./useCache.js";
|
|
3
|
+
export { useProposals } from "./useProposals.js";
|
|
4
|
+
export { useNavigation, MAX_STAGE_INDEX, STAGE_COUNT } from "./useNavigation.js";
|
|
5
|
+
export type { UseNavigationResult } from "./useNavigation.js";
|
|
6
|
+
export { useTracker } from "./useTracker.js";
|
|
7
|
+
export type { UseTrackerResult, UseTrackerOptions } from "./useTracker.js";
|
|
8
|
+
export { useStageCalldata } from "./useStageCalldata.js";
|
|
9
|
+
export type { UseStageCalldataResult, DecodedAction } from "./useStageCalldata.js";
|
|
10
|
+
export { useCliProcess } from "./useCliProcess.js";
|
|
11
|
+
export type { UseCliProcessResult, CliProcessResult } from "./useCliProcess.js";
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjF,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAE3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,YAAY,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEnF,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useCliProcess = exports.useStageCalldata = exports.useTracker = exports.STAGE_COUNT = exports.MAX_STAGE_INDEX = exports.useNavigation = exports.useProposals = exports.useCache = void 0;
|
|
4
|
+
var useCache_js_1 = require("./useCache.js");
|
|
5
|
+
Object.defineProperty(exports, "useCache", { enumerable: true, get: function () { return useCache_js_1.useCache; } });
|
|
6
|
+
var useProposals_js_1 = require("./useProposals.js");
|
|
7
|
+
Object.defineProperty(exports, "useProposals", { enumerable: true, get: function () { return useProposals_js_1.useProposals; } });
|
|
8
|
+
var useNavigation_js_1 = require("./useNavigation.js");
|
|
9
|
+
Object.defineProperty(exports, "useNavigation", { enumerable: true, get: function () { return useNavigation_js_1.useNavigation; } });
|
|
10
|
+
Object.defineProperty(exports, "MAX_STAGE_INDEX", { enumerable: true, get: function () { return useNavigation_js_1.MAX_STAGE_INDEX; } });
|
|
11
|
+
Object.defineProperty(exports, "STAGE_COUNT", { enumerable: true, get: function () { return useNavigation_js_1.STAGE_COUNT; } });
|
|
12
|
+
var useTracker_js_1 = require("./useTracker.js");
|
|
13
|
+
Object.defineProperty(exports, "useTracker", { enumerable: true, get: function () { return useTracker_js_1.useTracker; } });
|
|
14
|
+
var useStageCalldata_js_1 = require("./useStageCalldata.js");
|
|
15
|
+
Object.defineProperty(exports, "useStageCalldata", { enumerable: true, get: function () { return useStageCalldata_js_1.useStageCalldata; } });
|
|
16
|
+
var useCliProcess_js_1 = require("./useCliProcess.js");
|
|
17
|
+
Object.defineProperty(exports, "useCliProcess", { enumerable: true, get: function () { return useCliProcess_js_1.useCliProcess; } });
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/cli/tui/hooks/index.ts"],"names":[],"mappings":";;;AAAA,6CAAyC;AAAhC,uGAAA,QAAQ,OAAA;AAGjB,qDAAiD;AAAxC,+GAAA,YAAY,OAAA;AAErB,uDAAiF;AAAxE,iHAAA,aAAa,OAAA;AAAE,mHAAA,eAAe,OAAA;AAAE,+GAAA,WAAW,OAAA;AAGpD,iDAA6C;AAApC,2GAAA,UAAU,OAAA;AAGnB,6DAAyD;AAAhD,uHAAA,gBAAgB,OAAA;AAGzB,uDAAmD;AAA1C,iHAAA,aAAa,OAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cache loading hook for TUI
|
|
3
|
+
*/
|
|
4
|
+
import type { CacheData } from "../types.js";
|
|
5
|
+
export interface UseCacheResult {
|
|
6
|
+
data: CacheData | null;
|
|
7
|
+
loading: boolean;
|
|
8
|
+
error: string | null;
|
|
9
|
+
reload: () => Promise<void>;
|
|
10
|
+
}
|
|
11
|
+
export declare function useCache(cachePath?: string): UseCacheResult;
|
|
12
|
+
//# sourceMappingURL=useCache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useCache.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/hooks/useCache.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AA8D7C,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,SAAS,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7B;AAED,wBAAgB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,cAAc,CA6C3D"}
|