@gzeoneth/gov-tracker 0.2.1-1 → 0.2.1-alpha.cli-preview.f8c3a87
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} +130 -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 +31 -15
- 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 +92 -0
- package/dist/cli/tui/App.js.map +1 -0
- package/dist/cli/tui/components/Header.d.ts +20 -0
- package/dist/cli/tui/components/Header.d.ts.map +1 -0
- package/dist/cli/tui/components/Header.js +57 -0
- package/dist/cli/tui/components/Header.js.map +1 -0
- package/dist/cli/tui/components/KeyHelp.d.ts +11 -0
- package/dist/cli/tui/components/KeyHelp.d.ts.map +1 -0
- package/dist/cli/tui/components/KeyHelp.js +82 -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 +66 -0
- package/dist/cli/tui/components/ProposalRow.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 +83 -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/ViewLayout.d.ts +18 -0
- package/dist/cli/tui/components/ViewLayout.d.ts.map +1 -0
- package/dist/cli/tui/components/ViewLayout.js +21 -0
- package/dist/cli/tui/components/ViewLayout.js.map +1 -0
- package/dist/cli/tui/hooks/index.d.ts +10 -0
- package/dist/cli/tui/hooks/index.d.ts.map +1 -0
- package/dist/cli/tui/hooks/index.js +14 -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 +86 -0
- package/dist/cli/tui/hooks/useCache.js.map +1 -0
- package/dist/cli/tui/hooks/useNavigation.d.ts +34 -0
- package/dist/cli/tui/hooks/useNavigation.d.ts.map +1 -0
- package/dist/cli/tui/hooks/useNavigation.js +219 -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 +159 -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 +50 -0
- package/dist/cli/tui/hooks/useStageCalldata.js.map +1 -0
- package/dist/cli/tui/hooks/useTracker.d.ts +28 -0
- package/dist/cli/tui/hooks/useTracker.d.ts.map +1 -0
- package/dist/cli/tui/hooks/useTracker.js +165 -0
- package/dist/cli/tui/hooks/useTracker.js.map +1 -0
- package/dist/cli/tui/index.d.ts +14 -0
- package/dist/cli/tui/index.d.ts.map +1 -0
- package/dist/cli/tui/index.js +68 -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 +34 -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/index.d.ts +4 -0
- package/dist/cli/tui/utils/index.d.ts.map +1 -0
- package/dist/cli/tui/utils/index.js +10 -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 +28 -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 +180 -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 +174 -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 +159 -0
- package/dist/cli/tui/views/ElectionView.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 +172 -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 +111 -0
- package/dist/cli/tui/views/ProposalList.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 +93 -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 +199 -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 +9 -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 +46 -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 @@
|
|
|
1
|
+
{"version":3,"file":"concurrency.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/concurrency.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;AAEtE,wBAAgB,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAyBnD"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.pLimit = pLimit;
|
|
4
|
+
function pLimit(concurrency) {
|
|
5
|
+
const queue = [];
|
|
6
|
+
let active = 0;
|
|
7
|
+
const next = () => {
|
|
8
|
+
active--;
|
|
9
|
+
const nextTask = queue.shift();
|
|
10
|
+
if (nextTask)
|
|
11
|
+
nextTask();
|
|
12
|
+
};
|
|
13
|
+
return (fn) => new Promise((resolve, reject) => {
|
|
14
|
+
const run = async () => {
|
|
15
|
+
active++;
|
|
16
|
+
try {
|
|
17
|
+
resolve(await fn());
|
|
18
|
+
}
|
|
19
|
+
catch (err) {
|
|
20
|
+
reject(err);
|
|
21
|
+
}
|
|
22
|
+
finally {
|
|
23
|
+
next();
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
if (active < concurrency)
|
|
27
|
+
run();
|
|
28
|
+
else
|
|
29
|
+
queue.push(run);
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=concurrency.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"concurrency.js","sourceRoot":"","sources":["../../../src/cli/lib/concurrency.ts"],"names":[],"mappings":";;AAmBA,wBAyBC;AAzBD,SAAgB,MAAM,CAAC,WAAmB;IACxC,MAAM,KAAK,GAAmB,EAAE,CAAC;IACjC,IAAI,MAAM,GAAG,CAAC,CAAC;IAEf,MAAM,IAAI,GAAG,GAAG,EAAE;QAChB,MAAM,EAAE,CAAC;QACT,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;QAC/B,IAAI,QAAQ;YAAE,QAAQ,EAAE,CAAC;IAC3B,CAAC,CAAC;IAEF,OAAO,CAAI,EAA4B,EAAc,EAAE,CACrD,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC9B,MAAM,GAAG,GAAG,KAAK,IAAI,EAAE;YACrB,MAAM,EAAE,CAAC;YACT,IAAI,CAAC;gBACH,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YACtB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,GAAG,CAAC,CAAC;YACd,CAAC;oBAAS,CAAC;gBACT,IAAI,EAAE,CAAC;YACT,CAAC;QACH,CAAC,CAAC;QACF,IAAI,MAAM,GAAG,WAAW;YAAE,GAAG,EAAE,CAAC;;YAC3B,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Main TUI Application Component
|
|
3
|
+
*
|
|
4
|
+
* Routes between views and manages global state.
|
|
5
|
+
*/
|
|
6
|
+
import type { ProviderBundle } from "../lib/cli.js";
|
|
7
|
+
export interface AppProps {
|
|
8
|
+
cachePath: string;
|
|
9
|
+
providers?: ProviderBundle;
|
|
10
|
+
verbose?: boolean;
|
|
11
|
+
}
|
|
12
|
+
export declare function App({ cachePath, providers: providerBundle, verbose }: AppProps): React.ReactElement;
|
|
13
|
+
//# sourceMappingURL=App.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../../src/cli/tui/App.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAUpD,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAgBD,wBAAgB,GAAG,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,OAAO,EAAE,EAAE,QAAQ,GAAG,KAAK,CAAC,YAAY,CAsGnG"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Main TUI Application Component
|
|
4
|
+
*
|
|
5
|
+
* Routes between views and manages global state.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.App = App;
|
|
9
|
+
const ink_wrapper_js_1 = require("./ink-wrapper.js");
|
|
10
|
+
const react_1 = require("react");
|
|
11
|
+
const index_js_1 = require("./hooks/index.js");
|
|
12
|
+
const ProposalList_js_1 = require("./views/ProposalList.js");
|
|
13
|
+
const ProposalDetail_js_1 = require("./views/ProposalDetail.js");
|
|
14
|
+
const CalldataView_js_1 = require("./views/CalldataView.js");
|
|
15
|
+
const StageView_js_1 = require("./views/StageView.js");
|
|
16
|
+
const SimulationView_js_1 = require("./views/SimulationView.js");
|
|
17
|
+
const DescriptionView_js_1 = require("./views/DescriptionView.js");
|
|
18
|
+
const ElectionView_js_1 = require("./views/ElectionView.js");
|
|
19
|
+
function useTerminalHeight() {
|
|
20
|
+
const [height, setHeight] = (0, react_1.useState)(process.stdout.rows || 24);
|
|
21
|
+
(0, react_1.useEffect)(() => {
|
|
22
|
+
const handleResize = () => setHeight(process.stdout.rows || 24);
|
|
23
|
+
process.stdout.on("resize", handleResize);
|
|
24
|
+
return () => {
|
|
25
|
+
process.stdout.off("resize", handleResize);
|
|
26
|
+
};
|
|
27
|
+
}, []);
|
|
28
|
+
return height;
|
|
29
|
+
}
|
|
30
|
+
function App({ cachePath, providers: providerBundle, verbose }) {
|
|
31
|
+
const { exit } = (0, ink_wrapper_js_1.useApp)();
|
|
32
|
+
const cache = (0, index_js_1.useCache)(cachePath);
|
|
33
|
+
const navigation = (0, index_js_1.useNavigation)();
|
|
34
|
+
const { items } = (0, index_js_1.useProposals)(cache.data, navigation.state.filter, navigation.state.searchQuery);
|
|
35
|
+
const tracker = (0, index_js_1.useTracker)({ providers: providerBundle, cachePath });
|
|
36
|
+
const terminalHeight = useTerminalHeight();
|
|
37
|
+
(0, react_1.useEffect)(() => {
|
|
38
|
+
if (verbose && cache.error) {
|
|
39
|
+
console.error("Cache error:", cache.error);
|
|
40
|
+
}
|
|
41
|
+
}, [verbose, cache.error]);
|
|
42
|
+
(0, react_1.useEffect)(() => {
|
|
43
|
+
if (tracker.lastResult && navigation.state.view === "detail") {
|
|
44
|
+
cache.reload();
|
|
45
|
+
}
|
|
46
|
+
}, [tracker.lastResult]);
|
|
47
|
+
const handleQuit = () => {
|
|
48
|
+
exit();
|
|
49
|
+
};
|
|
50
|
+
if (cache.loading) {
|
|
51
|
+
return (ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Box, { flexDirection: "column", height: terminalHeight, padding: 1 },
|
|
52
|
+
ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "yellow" }, "Loading cache..."),
|
|
53
|
+
ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "gray" }, cachePath)));
|
|
54
|
+
}
|
|
55
|
+
if (cache.error) {
|
|
56
|
+
return (ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Box, { flexDirection: "column", height: terminalHeight, padding: 1 },
|
|
57
|
+
ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "red" }, "Error loading cache:"),
|
|
58
|
+
ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "gray" }, cache.error),
|
|
59
|
+
ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "gray", marginTop: 1 }, "Press q to quit")));
|
|
60
|
+
}
|
|
61
|
+
const { view, selectedProposal } = navigation.state;
|
|
62
|
+
const renderView = () => {
|
|
63
|
+
if (view === "list") {
|
|
64
|
+
return (ink_wrapper_js_1.React.createElement(ProposalList_js_1.ProposalList, { items: items, data: cache.data, navigation: navigation, tracker: tracker, onQuit: handleQuit, onReload: cache.reload }));
|
|
65
|
+
}
|
|
66
|
+
if (view === "election") {
|
|
67
|
+
return ink_wrapper_js_1.React.createElement(ElectionView_js_1.ElectionView, { navigation: navigation, providers: providerBundle });
|
|
68
|
+
}
|
|
69
|
+
if (!selectedProposal) {
|
|
70
|
+
navigation.back();
|
|
71
|
+
return ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, null, "Returning to list...");
|
|
72
|
+
}
|
|
73
|
+
switch (view) {
|
|
74
|
+
case "detail":
|
|
75
|
+
return (ink_wrapper_js_1.React.createElement(ProposalDetail_js_1.ProposalDetail, { proposal: selectedProposal, navigation: navigation, tracker: tracker }));
|
|
76
|
+
case "calldata":
|
|
77
|
+
return ink_wrapper_js_1.React.createElement(CalldataView_js_1.CalldataView, { proposal: selectedProposal, navigation: navigation });
|
|
78
|
+
case "stage":
|
|
79
|
+
return ink_wrapper_js_1.React.createElement(StageView_js_1.StageView, { proposal: selectedProposal, navigation: navigation });
|
|
80
|
+
case "simulation":
|
|
81
|
+
return ink_wrapper_js_1.React.createElement(SimulationView_js_1.SimulationView, { proposal: selectedProposal, navigation: navigation });
|
|
82
|
+
case "description":
|
|
83
|
+
return ink_wrapper_js_1.React.createElement(DescriptionView_js_1.DescriptionView, { proposal: selectedProposal, navigation: navigation });
|
|
84
|
+
default:
|
|
85
|
+
return ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, null,
|
|
86
|
+
"Unknown view: ",
|
|
87
|
+
view);
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
return (ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Box, { flexDirection: "column", height: terminalHeight }, renderView()));
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=App.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"App.js","sourceRoot":"","sources":["../../../src/cli/tui/App.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Header component showing title and stats
|
|
3
|
+
*/
|
|
4
|
+
import type { TrackerStats } from "../../../types/index.js";
|
|
5
|
+
import type { ViewType, FilterType } from "../types.js";
|
|
6
|
+
interface HeaderProps {
|
|
7
|
+
view: ViewType;
|
|
8
|
+
filter: FilterType;
|
|
9
|
+
stats: TrackerStats | null;
|
|
10
|
+
hasProviders: boolean;
|
|
11
|
+
isTracking: boolean;
|
|
12
|
+
title?: string;
|
|
13
|
+
position?: {
|
|
14
|
+
current: number;
|
|
15
|
+
total: number;
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
export declare function Header({ view, filter, stats, hasProviders, isTracking, title, position, }: HeaderProps): React.ReactElement;
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=Header.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Header.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/components/Header.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAExD,UAAU,WAAW;IACnB,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;IAC3B,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CAC/C;AAED,wBAAgB,MAAM,CAAC,EACrB,IAAI,EACJ,MAAM,EACN,KAAK,EACL,YAAY,EACZ,UAAU,EACV,KAAK,EACL,QAAQ,GACT,EAAE,WAAW,GAAG,KAAK,CAAC,YAAY,CAiElC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Header component showing title and stats
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.Header = Header;
|
|
7
|
+
const ink_wrapper_js_1 = require("../ink-wrapper.js");
|
|
8
|
+
function Header({ view, filter, stats, hasProviders, isTracking, title, position, }) {
|
|
9
|
+
const getViewTitle = () => {
|
|
10
|
+
switch (view) {
|
|
11
|
+
case "list":
|
|
12
|
+
return "Gov-Tracker TUI [PREVIEW]";
|
|
13
|
+
case "detail":
|
|
14
|
+
return title ?? "Proposal Detail";
|
|
15
|
+
case "calldata":
|
|
16
|
+
return "Decoded Calldata";
|
|
17
|
+
case "stage":
|
|
18
|
+
return "Stage Details";
|
|
19
|
+
case "simulation":
|
|
20
|
+
return title ?? "Simulation Data";
|
|
21
|
+
case "description":
|
|
22
|
+
return title ?? "Proposal Description";
|
|
23
|
+
default:
|
|
24
|
+
return "Gov-Tracker";
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
const getRightSide = () => {
|
|
28
|
+
if (view === "list" && stats) {
|
|
29
|
+
return (ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "gray" },
|
|
30
|
+
stats.total,
|
|
31
|
+
" proposals | ",
|
|
32
|
+
stats.proposals.active,
|
|
33
|
+
" active",
|
|
34
|
+
hasProviders && ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "green" }, " [RPC]"),
|
|
35
|
+
isTracking && ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "yellow" }, " [Tracking...]")));
|
|
36
|
+
}
|
|
37
|
+
if (view === "detail" && hasProviders) {
|
|
38
|
+
return (ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "gray" }, isTracking ? (ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "yellow" }, "Tracking...")) : (ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "green" }, "[r] to re-track"))));
|
|
39
|
+
}
|
|
40
|
+
return null;
|
|
41
|
+
};
|
|
42
|
+
return (ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Box, { borderStyle: "single", borderColor: "cyan", paddingX: 1 },
|
|
43
|
+
ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Box, { flexGrow: 1 },
|
|
44
|
+
ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { bold: true, color: "cyan" }, getViewTitle()),
|
|
45
|
+
view === "list" && (ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "gray" },
|
|
46
|
+
" ",
|
|
47
|
+
"[",
|
|
48
|
+
filter.toUpperCase(),
|
|
49
|
+
"]")),
|
|
50
|
+
position && position.total > 0 && (ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "yellow" },
|
|
51
|
+
" ",
|
|
52
|
+
position.current,
|
|
53
|
+
"/",
|
|
54
|
+
position.total))),
|
|
55
|
+
getRightSide()));
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=Header.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Header.js","sourceRoot":"","sources":["../../../../src/cli/tui/components/Header.tsx"],"names":[],"mappings":";AAAA;;GAEG;;AAgBH,wBAyEC;AAvFD,sDAAqD;AAcrD,SAAgB,MAAM,CAAC,EACrB,IAAI,EACJ,MAAM,EACN,KAAK,EACL,YAAY,EACZ,UAAU,EACV,KAAK,EACL,QAAQ,GACI;IACZ,MAAM,YAAY,GAAG,GAAW,EAAE;QAChC,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,MAAM;gBACT,OAAO,2BAA2B,CAAC;YACrC,KAAK,QAAQ;gBACX,OAAO,KAAK,IAAI,iBAAiB,CAAC;YACpC,KAAK,UAAU;gBACb,OAAO,kBAAkB,CAAC;YAC5B,KAAK,OAAO;gBACV,OAAO,eAAe,CAAC;YACzB,KAAK,YAAY;gBACf,OAAO,KAAK,IAAI,iBAAiB,CAAC;YACpC,KAAK,aAAa;gBAChB,OAAO,KAAK,IAAI,sBAAsB,CAAC;YACzC;gBACE,OAAO,aAAa,CAAC;QACzB,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,GAA8B,EAAE;QACnD,IAAI,IAAI,KAAK,MAAM,IAAI,KAAK,EAAE,CAAC;YAC7B,OAAO,CACL,qCAAC,qBAAI,IAAC,KAAK,EAAC,MAAM;gBACf,KAAK,CAAC,KAAK;;gBAAe,KAAK,CAAC,SAAS,CAAC,MAAM;;gBAChD,YAAY,IAAI,qCAAC,qBAAI,IAAC,KAAK,EAAC,OAAO,aAAc;gBACjD,UAAU,IAAI,qCAAC,qBAAI,IAAC,KAAK,EAAC,QAAQ,qBAAsB,CACpD,CACR,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,KAAK,QAAQ,IAAI,YAAY,EAAE,CAAC;YACtC,OAAO,CACL,qCAAC,qBAAI,IAAC,KAAK,EAAC,MAAM,IACf,UAAU,CAAC,CAAC,CAAC,CACZ,qCAAC,qBAAI,IAAC,KAAK,EAAC,QAAQ,kBAAmB,CACxC,CAAC,CAAC,CAAC,CACF,qCAAC,qBAAI,IAAC,KAAK,EAAC,OAAO,sBAAuB,CAC3C,CACI,CACR,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,OAAO,CACL,qCAAC,oBAAG,IAAC,WAAW,EAAC,QAAQ,EAAC,WAAW,EAAC,MAAM,EAAC,QAAQ,EAAE,CAAC;QACtD,qCAAC,oBAAG,IAAC,QAAQ,EAAE,CAAC;YACd,qCAAC,qBAAI,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM,IACpB,YAAY,EAAE,CACV;YACN,IAAI,KAAK,MAAM,IAAI,CAClB,qCAAC,qBAAI,IAAC,KAAK,EAAC,MAAM;gBACf,GAAG;;gBACF,MAAM,CAAC,WAAW,EAAE;oBACjB,CACR;YACA,QAAQ,IAAI,QAAQ,CAAC,KAAK,GAAG,CAAC,IAAI,CACjC,qCAAC,qBAAI,IAAC,KAAK,EAAC,QAAQ;;gBAAG,QAAQ,CAAC,OAAO;;gBAAG,QAAQ,CAAC,KAAK,CAAQ,CACjE,CACG;QACL,YAAY,EAAE,CACX,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Keyboard shortcuts help footer
|
|
3
|
+
*/
|
|
4
|
+
import type { ViewType } from "../types.js";
|
|
5
|
+
interface KeyHelpProps {
|
|
6
|
+
view: ViewType;
|
|
7
|
+
hasProviders: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare function KeyHelp({ view, hasProviders }: KeyHelpProps): React.ReactElement;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=KeyHelp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KeyHelp.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/components/KeyHelp.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,UAAU,YAAY;IACpB,IAAI,EAAE,QAAQ,CAAC;IACf,YAAY,EAAE,OAAO,CAAC;CACvB;AAkFD,wBAAgB,OAAO,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,YAAY,GAAG,KAAK,CAAC,YAAY,CAahF"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Keyboard shortcuts help footer
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.KeyHelp = KeyHelp;
|
|
7
|
+
const ink_wrapper_js_1 = require("../ink-wrapper.js");
|
|
8
|
+
const LIST_KEYS = [
|
|
9
|
+
{ key: "↑↓/PgUp/Dn", action: "Navigate" },
|
|
10
|
+
{ key: "g/G", action: "Top/Bottom" },
|
|
11
|
+
{ key: "/", action: "Search" },
|
|
12
|
+
{ key: "Enter", action: "View" },
|
|
13
|
+
{ key: "Tab", action: "Filter" },
|
|
14
|
+
{ key: "R", action: "Reload" },
|
|
15
|
+
{ key: "e", action: "Elections" },
|
|
16
|
+
{ key: "d", action: "Discover" },
|
|
17
|
+
{ key: "q", action: "Quit" },
|
|
18
|
+
];
|
|
19
|
+
const DETAIL_KEYS_BASE = [
|
|
20
|
+
{ key: "↑↓", action: "Stage" },
|
|
21
|
+
{ key: "1-7", action: "Jump" },
|
|
22
|
+
{ key: "Enter", action: "Details" },
|
|
23
|
+
{ key: "d", action: "Description" },
|
|
24
|
+
{ key: "c", action: "Calldata" },
|
|
25
|
+
{ key: "s", action: "Simulate" },
|
|
26
|
+
];
|
|
27
|
+
const DETAIL_RETRACK = { key: "r", action: "Re-track" };
|
|
28
|
+
const DETAIL_BACK = { key: "b", action: "Back" };
|
|
29
|
+
const CALLDATA_KEYS = [
|
|
30
|
+
{ key: "←→", action: "Actions" },
|
|
31
|
+
{ key: "↑↓/PgUp/Dn", action: "Scroll" },
|
|
32
|
+
{ key: "g/G", action: "Top/Bottom" },
|
|
33
|
+
{ key: "e/c", action: "Expand/Collapse" },
|
|
34
|
+
{ key: "b", action: "Back" },
|
|
35
|
+
];
|
|
36
|
+
const STAGE_KEYS = [
|
|
37
|
+
{ key: "↑↓/PgUp/Dn", action: "Scroll" },
|
|
38
|
+
{ key: "b", action: "Back" },
|
|
39
|
+
];
|
|
40
|
+
const SIMULATION_KEYS = [
|
|
41
|
+
{ key: "↑↓", action: "Navigate" },
|
|
42
|
+
{ key: "b", action: "Back" },
|
|
43
|
+
];
|
|
44
|
+
const DESCRIPTION_KEYS = [
|
|
45
|
+
{ key: "↑↓/PgUp/Dn", action: "Scroll" },
|
|
46
|
+
{ key: "b", action: "Back" },
|
|
47
|
+
];
|
|
48
|
+
const ELECTION_KEYS = [
|
|
49
|
+
{ key: "↑↓", action: "Navigate" },
|
|
50
|
+
{ key: "b", action: "Back" },
|
|
51
|
+
];
|
|
52
|
+
function getKeysForView(view, hasProviders) {
|
|
53
|
+
switch (view) {
|
|
54
|
+
case "list":
|
|
55
|
+
return hasProviders ? LIST_KEYS : LIST_KEYS.filter((k) => k.key !== "d" && k.key !== "e");
|
|
56
|
+
case "detail":
|
|
57
|
+
return hasProviders
|
|
58
|
+
? [...DETAIL_KEYS_BASE, DETAIL_RETRACK, DETAIL_BACK]
|
|
59
|
+
: [...DETAIL_KEYS_BASE, DETAIL_BACK];
|
|
60
|
+
case "calldata":
|
|
61
|
+
return CALLDATA_KEYS;
|
|
62
|
+
case "stage":
|
|
63
|
+
return STAGE_KEYS;
|
|
64
|
+
case "simulation":
|
|
65
|
+
return SIMULATION_KEYS;
|
|
66
|
+
case "description":
|
|
67
|
+
return DESCRIPTION_KEYS;
|
|
68
|
+
case "election":
|
|
69
|
+
return ELECTION_KEYS;
|
|
70
|
+
default:
|
|
71
|
+
return [];
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
function KeyHelp({ view, hasProviders }) {
|
|
75
|
+
const keys = getKeysForView(view, hasProviders);
|
|
76
|
+
return (ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Box, { borderStyle: "single", borderColor: "gray", paddingX: 1 }, keys.map((binding) => (ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Box, { key: binding.key, marginRight: 2 },
|
|
77
|
+
ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "cyan" }, binding.key),
|
|
78
|
+
ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "gray" },
|
|
79
|
+
": ",
|
|
80
|
+
binding.action))))));
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=KeyHelp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KeyHelp.js","sourceRoot":"","sources":["../../../../src/cli/tui/components/KeyHelp.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Single proposal row in the list view
|
|
3
|
+
*/
|
|
4
|
+
import type { ProposalListItem } from "../types.js";
|
|
5
|
+
interface ProposalRowProps {
|
|
6
|
+
item: ProposalListItem;
|
|
7
|
+
isSelected: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare function ProposalRow({ item, isSelected }: ProposalRowProps): React.ReactElement;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=ProposalRow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProposalRow.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/components/ProposalRow.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAGpD,UAAU,gBAAgB;IACxB,IAAI,EAAE,gBAAgB,CAAC;IACvB,UAAU,EAAE,OAAO,CAAC;CACrB;AAoCD,wBAAgB,WAAW,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,gBAAgB,GAAG,KAAK,CAAC,YAAY,CAqBtF"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Single proposal row in the list view
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ProposalRow = ProposalRow;
|
|
7
|
+
const ink_wrapper_js_1 = require("../ink-wrapper.js");
|
|
8
|
+
const StatusBadge_js_1 = require("./StatusBadge.js");
|
|
9
|
+
function getTypeLabel(item) {
|
|
10
|
+
if (item.type === "election")
|
|
11
|
+
return "EL";
|
|
12
|
+
if (item.type === "timelock")
|
|
13
|
+
return "TL";
|
|
14
|
+
if (item.proposalType === "CONSTITUTIONAL")
|
|
15
|
+
return "CO";
|
|
16
|
+
if (item.proposalType === "NON_CONSTITUTIONAL")
|
|
17
|
+
return "TR";
|
|
18
|
+
return "PR";
|
|
19
|
+
}
|
|
20
|
+
function getTypeColor(item) {
|
|
21
|
+
if (item.type === "election")
|
|
22
|
+
return "magenta";
|
|
23
|
+
if (item.type === "timelock")
|
|
24
|
+
return "blue";
|
|
25
|
+
if (item.proposalType === "CONSTITUTIONAL")
|
|
26
|
+
return "cyan";
|
|
27
|
+
return "green";
|
|
28
|
+
}
|
|
29
|
+
function formatAge(timestamp) {
|
|
30
|
+
if (timestamp === null)
|
|
31
|
+
return "--";
|
|
32
|
+
const now = Date.now();
|
|
33
|
+
const diffMs = now - timestamp;
|
|
34
|
+
const diffDays = Math.floor(diffMs / (1000 * 60 * 60 * 24));
|
|
35
|
+
if (diffDays < 0)
|
|
36
|
+
return "future";
|
|
37
|
+
if (diffDays === 0)
|
|
38
|
+
return "today";
|
|
39
|
+
if (diffDays === 1)
|
|
40
|
+
return "1d ago";
|
|
41
|
+
if (diffDays < 30)
|
|
42
|
+
return `${diffDays}d ago`;
|
|
43
|
+
if (diffDays < 365) {
|
|
44
|
+
const months = Math.floor(diffDays / 30);
|
|
45
|
+
return `${months}mo ago`;
|
|
46
|
+
}
|
|
47
|
+
const years = Math.floor(diffDays / 365);
|
|
48
|
+
return `${years}y ago`;
|
|
49
|
+
}
|
|
50
|
+
function ProposalRow({ item, isSelected }) {
|
|
51
|
+
const typeLabel = getTypeLabel(item);
|
|
52
|
+
const typeColor = getTypeColor(item);
|
|
53
|
+
const age = formatAge(item.createdAt);
|
|
54
|
+
return (ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Box, null,
|
|
55
|
+
ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: isSelected ? "cyan" : undefined, bold: isSelected }, isSelected ? ">" : " "),
|
|
56
|
+
ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: typeColor }, typeLabel),
|
|
57
|
+
ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, null, " "),
|
|
58
|
+
ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: isSelected ? "cyan" : undefined }, item.title),
|
|
59
|
+
ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "gray" }, " "),
|
|
60
|
+
ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "gray" }, age.padStart(8)),
|
|
61
|
+
ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, null, " "),
|
|
62
|
+
ink_wrapper_js_1.React.createElement(StatusBadge_js_1.StatusBadge, { status: item.status, compact: true }),
|
|
63
|
+
ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "gray" }, item.stageProgress),
|
|
64
|
+
item.hasExecutable && ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "green" }, "\u25B6")));
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=ProposalRow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProposalRow.js","sourceRoot":"","sources":["../../../../src/cli/tui/components/ProposalRow.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Single stage row component for proposal detail view
|
|
3
|
+
*/
|
|
4
|
+
import type { TrackedStage } from "../../../types/index.js";
|
|
5
|
+
interface StageRowProps {
|
|
6
|
+
stage: TrackedStage;
|
|
7
|
+
index: number;
|
|
8
|
+
isSelected: boolean;
|
|
9
|
+
}
|
|
10
|
+
export declare function StageRow({ stage, index, isSelected }: StageRowProps): React.ReactElement;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=StageRow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StageRow.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/components/StageRow.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAI5D,UAAU,aAAa;IACrB,KAAK,EAAE,YAAY,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,OAAO,CAAC;CACrB;AAuED,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,aAAa,GAAG,KAAK,CAAC,YAAY,CAiBxF"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Single stage row component for proposal detail view
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.StageRow = StageRow;
|
|
7
|
+
const ink_wrapper_js_1 = require("../ink-wrapper.js");
|
|
8
|
+
const stage_metadata_js_1 = require("../../../utils/stage-metadata.js");
|
|
9
|
+
const StatusBadge_js_1 = require("./StatusBadge.js");
|
|
10
|
+
function formatTiming(stage) {
|
|
11
|
+
if (stage.timing?.eta) {
|
|
12
|
+
const date = new Date(stage.timing.eta * 1000);
|
|
13
|
+
const now = Date.now();
|
|
14
|
+
const diff = stage.timing.eta * 1000 - now;
|
|
15
|
+
if (diff > 0) {
|
|
16
|
+
const hours = Math.floor(diff / (1000 * 60 * 60));
|
|
17
|
+
const mins = Math.floor((diff % (1000 * 60 * 60)) / (1000 * 60));
|
|
18
|
+
if (hours > 24) {
|
|
19
|
+
const days = Math.floor(hours / 24);
|
|
20
|
+
return `~${days}d ${hours % 24}h`;
|
|
21
|
+
}
|
|
22
|
+
return `~${hours}h ${mins}m`;
|
|
23
|
+
}
|
|
24
|
+
return date.toLocaleDateString();
|
|
25
|
+
}
|
|
26
|
+
if (stage.transactions.length > 0) {
|
|
27
|
+
const tx = stage.transactions[0];
|
|
28
|
+
if (tx.timestamp) {
|
|
29
|
+
return new Date(tx.timestamp * 1000).toLocaleDateString();
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
function getStageExtra(stage) {
|
|
35
|
+
if (stage.type === "VOTING_ACTIVE" && stage.data) {
|
|
36
|
+
const data = stage.data;
|
|
37
|
+
if (data.proposalState) {
|
|
38
|
+
return data.proposalState;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
if (stage.type === "RETRYABLE_EXECUTED" && stage.data) {
|
|
42
|
+
const data = stage.data;
|
|
43
|
+
if (data.ticketCount !== undefined) {
|
|
44
|
+
const redeemed = data.redeemedCount ?? 0;
|
|
45
|
+
return `${redeemed}/${data.ticketCount} tickets`;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
if ((stage.type === "L2_TIMELOCK" || stage.type === "L1_TIMELOCK") &&
|
|
49
|
+
stage.data) {
|
|
50
|
+
const data = stage.data;
|
|
51
|
+
if (data.state)
|
|
52
|
+
return data.state;
|
|
53
|
+
}
|
|
54
|
+
if (stage.type === "L2_TO_L1_MESSAGE" && stage.data) {
|
|
55
|
+
const data = stage.data;
|
|
56
|
+
if (data.messageCount) {
|
|
57
|
+
const status = data.status ?? "pending";
|
|
58
|
+
return `${data.messageCount} msg${data.messageCount > 1 ? "s" : ""} (${status})`;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
function StageRow({ stage, index, isSelected }) {
|
|
64
|
+
const title = (0, stage_metadata_js_1.formatStageTitle)(stage.type);
|
|
65
|
+
const timing = formatTiming(stage);
|
|
66
|
+
const extra = getStageExtra(stage);
|
|
67
|
+
return (ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Box, null,
|
|
68
|
+
ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: isSelected ? "cyan" : undefined },
|
|
69
|
+
isSelected ? ">" : " ",
|
|
70
|
+
" ",
|
|
71
|
+
index + 1,
|
|
72
|
+
".",
|
|
73
|
+
" "),
|
|
74
|
+
ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: isSelected ? "cyan" : undefined }, title.padEnd(18)),
|
|
75
|
+
ink_wrapper_js_1.React.createElement(StatusBadge_js_1.StatusBadge, { status: stage.status, padded: true }),
|
|
76
|
+
ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "gray" }, stage.chain.padEnd(10)),
|
|
77
|
+
ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "gray" }, (timing ?? "").padEnd(12)),
|
|
78
|
+
extra && ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "gray" },
|
|
79
|
+
"[",
|
|
80
|
+
extra,
|
|
81
|
+
"]")));
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=StageRow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StageRow.js","sourceRoot":"","sources":["../../../../src/cli/tui/components/StageRow.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Status badge component for displaying stage/proposal status
|
|
3
|
+
*/
|
|
4
|
+
import type { StageStatus } from "../../../types/index.js";
|
|
5
|
+
interface StatusBadgeProps {
|
|
6
|
+
status: StageStatus | "active" | "complete" | "failed";
|
|
7
|
+
compact?: boolean;
|
|
8
|
+
padded?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export declare function StatusBadge({ status, compact, padded }: StatusBadgeProps): React.ReactElement;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=StatusBadge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StatusBadge.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/components/StatusBadge.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3D,UAAU,gBAAgB;IACxB,MAAM,EAAE,WAAW,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ,CAAC;IACvD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAcD,wBAAgB,WAAW,CAAC,EAAE,MAAM,EAAE,OAAe,EAAE,MAAc,EAAE,EAAE,gBAAgB,GAAG,KAAK,CAAC,YAAY,CAa7G"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Status badge component for displaying stage/proposal status
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.StatusBadge = StatusBadge;
|
|
7
|
+
const ink_wrapper_js_1 = require("../ink-wrapper.js");
|
|
8
|
+
const STATUS_CONFIG = {
|
|
9
|
+
NOT_STARTED: { icon: "·", color: "gray", label: "Not Started" },
|
|
10
|
+
PENDING: { icon: "◐", color: "yellow", label: "Pending" },
|
|
11
|
+
READY: { icon: "▶", color: "green", label: "Ready" },
|
|
12
|
+
COMPLETED: { icon: "✓", color: "green", label: "Complete" },
|
|
13
|
+
FAILED: { icon: "✗", color: "red", label: "Failed" },
|
|
14
|
+
SKIPPED: { icon: "○", color: "gray", label: "Skipped" },
|
|
15
|
+
active: { icon: "●", color: "yellow", label: "Active" },
|
|
16
|
+
complete: { icon: "✓", color: "green", label: "Complete" },
|
|
17
|
+
failed: { icon: "✗", color: "red", label: "Failed" },
|
|
18
|
+
};
|
|
19
|
+
function StatusBadge({ status, compact = false, padded = false }) {
|
|
20
|
+
const config = STATUS_CONFIG[status] ?? STATUS_CONFIG.NOT_STARTED;
|
|
21
|
+
if (compact) {
|
|
22
|
+
return ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: config.color }, config.icon);
|
|
23
|
+
}
|
|
24
|
+
const text = `${config.icon} ${config.label}`;
|
|
25
|
+
return (ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: config.color }, padded ? text.padEnd(14) : text));
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=StatusBadge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StatusBadge.js","sourceRoot":"","sources":["../../../../src/cli/tui/components/StatusBadge.tsx"],"names":[],"mappings":";AAAA;;GAEG;;AAuBH,kCAaC;AAlCD,sDAAgD;AAShD,MAAM,aAAa,GAAmE;IACpF,WAAW,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE;IAC/D,OAAO,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE;IACzD,KAAK,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;IACpD,SAAS,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IAC3D,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE;IACpD,OAAO,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE;IACvD,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;IACvD,QAAQ,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IAC1D,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE;CACrD,CAAC;AAEF,SAAgB,WAAW,CAAC,EAAE,MAAM,EAAE,OAAO,GAAG,KAAK,EAAE,MAAM,GAAG,KAAK,EAAoB;IACvF,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,aAAa,CAAC,WAAW,CAAC;IAElE,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,qCAAC,qBAAI,IAAC,KAAK,EAAE,MAAM,CAAC,KAAK,IAAG,MAAM,CAAC,IAAI,CAAQ,CAAC;IACzD,CAAC;IAED,MAAM,IAAI,GAAG,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;IAC9C,OAAO,CACL,qCAAC,qBAAI,IAAC,KAAK,EAAE,MAAM,CAAC,KAAK,IACtB,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAC3B,CACR,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared view layout component
|
|
3
|
+
*/
|
|
4
|
+
import type { ViewType, FilterType } from "../types.js";
|
|
5
|
+
interface ViewLayoutProps {
|
|
6
|
+
view: ViewType;
|
|
7
|
+
filter?: FilterType;
|
|
8
|
+
title?: string;
|
|
9
|
+
hasProviders?: boolean;
|
|
10
|
+
isTracking?: boolean;
|
|
11
|
+
loading?: boolean;
|
|
12
|
+
loadingText?: string;
|
|
13
|
+
error?: string | null;
|
|
14
|
+
children: React.ReactNode;
|
|
15
|
+
}
|
|
16
|
+
export declare function ViewLayout({ view, filter, title, hasProviders, isTracking, loading, loadingText, error, children, }: ViewLayoutProps): React.ReactElement;
|
|
17
|
+
export {};
|
|
18
|
+
//# 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;AAIxD,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,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,wBAAgB,UAAU,CAAC,EACzB,IAAI,EACJ,MAAc,EACd,KAAK,EACL,YAAoB,EACpB,UAAkB,EAClB,OAAe,EACf,WAA0B,EAC1B,KAAY,EACZ,QAAQ,GACT,EAAE,eAAe,GAAG,KAAK,CAAC,YAAY,CAqBtC"}
|