@gzeoneth/gov-tracker 0.2.1-alpha.cli-preview.a5817b4 → 0.2.1-alpha.cli-preview.99d3341
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 +37 -3
- package/dist/abis.d.ts.map +1 -1
- package/dist/abis.js +22 -1
- package/dist/abis.js.map +1 -1
- package/dist/cli/cli.js +206 -12
- package/dist/cli/cli.js.map +1 -1
- package/dist/cli/lib/cli.d.ts +9 -1
- package/dist/cli/lib/cli.d.ts.map +1 -1
- package/dist/cli/lib/cli.js +80 -4
- package/dist/cli/lib/cli.js.map +1 -1
- package/dist/cli/tui/hooks/index.d.ts +4 -0
- package/dist/cli/tui/hooks/index.d.ts.map +1 -1
- package/dist/cli/tui/hooks/index.js +5 -1
- package/dist/cli/tui/hooks/index.js.map +1 -1
- package/dist/cli/tui/hooks/useElectionData.d.ts +14 -0
- package/dist/cli/tui/hooks/useElectionData.d.ts.map +1 -0
- package/dist/cli/tui/hooks/useElectionData.js +86 -0
- package/dist/cli/tui/hooks/useElectionData.js.map +1 -0
- package/dist/cli/tui/hooks/useElectionDetails.d.ts +18 -0
- package/dist/cli/tui/hooks/useElectionDetails.d.ts.map +1 -0
- package/dist/cli/tui/hooks/useElectionDetails.js +47 -0
- package/dist/cli/tui/hooks/useElectionDetails.js.map +1 -0
- package/dist/cli/tui/hooks/useNavigation.d.ts.map +1 -1
- package/dist/cli/tui/hooks/useNavigation.js +65 -119
- package/dist/cli/tui/hooks/useNavigation.js.map +1 -1
- package/dist/cli/tui/hooks/useProposals.d.ts.map +1 -1
- package/dist/cli/tui/hooks/useProposals.js +67 -82
- package/dist/cli/tui/hooks/useProposals.js.map +1 -1
- package/dist/cli/tui/hooks/useTracker.d.ts.map +1 -1
- package/dist/cli/tui/hooks/useTracker.js +36 -41
- package/dist/cli/tui/hooks/useTracker.js.map +1 -1
- package/dist/cli/tui/utils/calldata-formatter.d.ts +17 -0
- package/dist/cli/tui/utils/calldata-formatter.d.ts.map +1 -0
- package/dist/cli/tui/utils/calldata-formatter.js +91 -0
- package/dist/cli/tui/utils/calldata-formatter.js.map +1 -0
- package/dist/cli/tui/utils/help-data.d.ts +15 -0
- package/dist/cli/tui/utils/help-data.d.ts.map +1 -0
- package/dist/cli/tui/utils/help-data.js +88 -0
- package/dist/cli/tui/utils/help-data.js.map +1 -0
- package/dist/cli/tui/utils/index.d.ts +11 -0
- package/dist/cli/tui/utils/index.d.ts.map +1 -1
- package/dist/cli/tui/utils/index.js +24 -1
- package/dist/cli/tui/utils/index.js.map +1 -1
- package/dist/cli/tui/utils/markdown-parser.d.ts +11 -0
- package/dist/cli/tui/utils/markdown-parser.d.ts.map +1 -0
- package/dist/cli/tui/utils/markdown-parser.js +100 -0
- package/dist/cli/tui/utils/markdown-parser.js.map +1 -0
- package/dist/cli/tui/utils/proposal-detail-helpers.d.ts +17 -0
- package/dist/cli/tui/utils/proposal-detail-helpers.d.ts.map +1 -0
- package/dist/cli/tui/utils/proposal-detail-helpers.js +46 -0
- package/dist/cli/tui/utils/proposal-detail-helpers.js.map +1 -0
- package/dist/cli/tui/utils/settings-data.d.ts +36 -0
- package/dist/cli/tui/utils/settings-data.d.ts.map +1 -0
- package/dist/cli/tui/utils/settings-data.js +220 -0
- package/dist/cli/tui/utils/settings-data.js.map +1 -0
- package/dist/cli/tui/utils/stage-formatter.d.ts +13 -0
- package/dist/cli/tui/utils/stage-formatter.d.ts.map +1 -0
- package/dist/cli/tui/utils/stage-formatter.js +100 -0
- package/dist/cli/tui/utils/stage-formatter.js.map +1 -0
- package/dist/cli/tui/views/CalldataView.d.ts.map +1 -1
- package/dist/cli/tui/views/CalldataView.js +50 -117
- package/dist/cli/tui/views/CalldataView.js.map +1 -1
- package/dist/cli/tui/views/DescriptionView.d.ts.map +1 -1
- package/dist/cli/tui/views/DescriptionView.js +1 -85
- package/dist/cli/tui/views/DescriptionView.js.map +1 -1
- package/dist/cli/tui/views/ElectionView.d.ts.map +1 -1
- package/dist/cli/tui/views/ElectionView.js +268 -165
- package/dist/cli/tui/views/ElectionView.js.map +1 -1
- package/dist/cli/tui/views/HelpView.d.ts.map +1 -1
- package/dist/cli/tui/views/HelpView.js +1 -73
- package/dist/cli/tui/views/HelpView.js.map +1 -1
- package/dist/cli/tui/views/ProposalDetail.d.ts.map +1 -1
- package/dist/cli/tui/views/ProposalDetail.js +51 -78
- package/dist/cli/tui/views/ProposalDetail.js.map +1 -1
- package/dist/cli/tui/views/ProposalList.d.ts.map +1 -1
- package/dist/cli/tui/views/ProposalList.js +73 -64
- package/dist/cli/tui/views/ProposalList.js.map +1 -1
- package/dist/cli/tui/views/SettingsView.d.ts.map +1 -1
- package/dist/cli/tui/views/SettingsView.js +67 -122
- package/dist/cli/tui/views/SettingsView.js.map +1 -1
- package/dist/cli/tui/views/SimulationView.d.ts.map +1 -1
- package/dist/cli/tui/views/SimulationView.js +23 -20
- package/dist/cli/tui/views/SimulationView.js.map +1 -1
- package/dist/cli/tui/views/StageView.d.ts.map +1 -1
- package/dist/cli/tui/views/StageView.js +28 -114
- package/dist/cli/tui/views/StageView.js.map +1 -1
- package/dist/deduplication.d.ts +132 -0
- package/dist/deduplication.d.ts.map +1 -0
- package/dist/deduplication.js +270 -0
- package/dist/deduplication.js.map +1 -0
- package/dist/election.d.ts +141 -1
- package/dist/election.d.ts.map +1 -1
- package/dist/election.js +505 -88
- package/dist/election.js.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +27 -3
- package/dist/index.js.map +1 -1
- package/dist/stages/builder.d.ts +4 -0
- package/dist/stages/builder.d.ts.map +1 -1
- package/dist/stages/builder.js +7 -0
- package/dist/stages/builder.js.map +1 -1
- package/dist/stages/voting.d.ts.map +1 -1
- package/dist/stages/voting.js +5 -4
- package/dist/stages/voting.js.map +1 -1
- package/dist/tracker/discovery.d.ts +39 -8
- package/dist/tracker/discovery.d.ts.map +1 -1
- package/dist/tracker/discovery.js +141 -12
- package/dist/tracker/discovery.js.map +1 -1
- package/dist/tracker.d.ts +24 -4
- package/dist/tracker.d.ts.map +1 -1
- package/dist/tracker.js +57 -8
- package/dist/tracker.js.map +1 -1
- package/dist/types/core.d.ts +1 -1
- package/dist/types/core.d.ts.map +1 -1
- package/dist/types/election.d.ts +88 -0
- package/dist/types/election.d.ts.map +1 -1
- package/dist/types/index.d.ts +2 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/stages.d.ts +6 -0
- package/dist/types/stages.d.ts.map +1 -1
- package/dist/types/stages.js.map +1 -1
- package/dist/types/tracking.d.ts +27 -1
- package/dist/types/tracking.d.ts.map +1 -1
- package/dist/utils/timing.d.ts +13 -0
- package/dist/utils/timing.d.ts.map +1 -1
- package/dist/utils/timing.js +35 -0
- package/dist/utils/timing.js.map +1 -1
- package/package.json +1 -1
|
@@ -20,29 +20,40 @@ function getTxHashFromCheckpoint(checkpoint) {
|
|
|
20
20
|
}
|
|
21
21
|
throw new Error("Cannot track discovery checkpoint");
|
|
22
22
|
}
|
|
23
|
-
function
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
args.push("--start-block", config.discovery.startBlock.toString());
|
|
38
|
-
}
|
|
39
|
-
if (config.discovery.chunkSize) {
|
|
40
|
-
args.push("--l2-chunk-size", config.discovery.chunkSize.toString());
|
|
41
|
-
}
|
|
42
|
-
if (config.discovery.concurrency > 1) {
|
|
43
|
-
args.push("--concurrency", config.discovery.concurrency.toString());
|
|
23
|
+
async function prepareExecutableTransactions(tracker, result) {
|
|
24
|
+
const executableStages = result.stages.filter((s) => s.status === "READY" || s.executable);
|
|
25
|
+
const prepared = [];
|
|
26
|
+
let errorCount = 0;
|
|
27
|
+
for (const stage of executableStages) {
|
|
28
|
+
try {
|
|
29
|
+
const prep = await tracker.prepareTransaction(stage, { stages: result.stages });
|
|
30
|
+
if (prep.success) {
|
|
31
|
+
prepared.push(prep.prepared);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
errorCount++;
|
|
36
|
+
}
|
|
44
37
|
}
|
|
45
|
-
return
|
|
38
|
+
return { prepared, errorCount };
|
|
39
|
+
}
|
|
40
|
+
function buildCliArgs(config, cachePath) {
|
|
41
|
+
const { rpc, discovery } = config;
|
|
42
|
+
const optionalArgs = [
|
|
43
|
+
[!!rpc.l1Url, "--l1-rpc", rpc.l1Url ?? ""],
|
|
44
|
+
[!!rpc.l2Url, "--l2-rpc", rpc.l2Url ?? ""],
|
|
45
|
+
[!!rpc.novaUrl, "--nova-rpc", rpc.novaUrl ?? ""],
|
|
46
|
+
[!!discovery.defaultDays, "--max-age-days", String(discovery.defaultDays ?? "")],
|
|
47
|
+
[!!discovery.startBlock, "--start-block", String(discovery.startBlock ?? "")],
|
|
48
|
+
[!!discovery.chunkSize, "--l2-chunk-size", String(discovery.chunkSize ?? "")],
|
|
49
|
+
[discovery.concurrency > 1, "--concurrency", String(discovery.concurrency)],
|
|
50
|
+
];
|
|
51
|
+
return [
|
|
52
|
+
"run",
|
|
53
|
+
"--cache",
|
|
54
|
+
cachePath,
|
|
55
|
+
...optionalArgs.filter(([cond]) => cond).flatMap(([, flag, val]) => [flag, val]),
|
|
56
|
+
];
|
|
46
57
|
}
|
|
47
58
|
function useTracker(options) {
|
|
48
59
|
const [isTracking, setIsTracking] = (0, react_1.useState)(false);
|
|
@@ -114,26 +125,10 @@ function useTracker(options) {
|
|
|
114
125
|
return null;
|
|
115
126
|
setLastResult(result);
|
|
116
127
|
if (result) {
|
|
117
|
-
const prepared =
|
|
118
|
-
let prepErrors = 0;
|
|
119
|
-
for (const stage of result.stages) {
|
|
120
|
-
if (stage.status === "READY" || stage.executable) {
|
|
121
|
-
try {
|
|
122
|
-
const prep = await tracker.prepareTransaction(stage, {
|
|
123
|
-
stages: result.stages,
|
|
124
|
-
});
|
|
125
|
-
if (prep.success) {
|
|
126
|
-
prepared.push(prep.prepared);
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
catch {
|
|
130
|
-
prepErrors++;
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
}
|
|
128
|
+
const { prepared, errorCount } = await prepareExecutableTransactions(tracker, result);
|
|
134
129
|
setPreparedTxs(prepared);
|
|
135
|
-
if (
|
|
136
|
-
setError(`Failed to prepare ${
|
|
130
|
+
if (errorCount > 0 && prepared.length === 0) {
|
|
131
|
+
setError(`Failed to prepare ${errorCount} transaction(s)`);
|
|
137
132
|
}
|
|
138
133
|
}
|
|
139
134
|
return result;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTracker.js","sourceRoot":"","sources":["../../../../src/cli/tui/hooks/useTracker.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;
|
|
1
|
+
{"version":3,"file":"useTracker.js","sourceRoot":"","sources":["../../../../src/cli/tui/hooks/useTracker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calldata formatting utilities for TUI display
|
|
3
|
+
*/
|
|
4
|
+
import type { DecodedCalldata } from "../../../types/calldata.js";
|
|
5
|
+
export interface FormattedLine {
|
|
6
|
+
text: string;
|
|
7
|
+
indent: number;
|
|
8
|
+
foldable: boolean;
|
|
9
|
+
foldKey?: string;
|
|
10
|
+
foldedLineCount?: number;
|
|
11
|
+
isFoldedContent?: boolean;
|
|
12
|
+
}
|
|
13
|
+
export declare function formatDecodedCalldata(decoded: DecodedCalldata, indent?: number, keyPrefix?: string): FormattedLine[];
|
|
14
|
+
export declare function filterVisibleLines(allLines: FormattedLine[], expandedKeys: Set<string>): FormattedLine[];
|
|
15
|
+
export declare function getAllFoldableKeys(lines: FormattedLine[]): string[];
|
|
16
|
+
export declare function toggleFoldKey(expandedKeys: Set<string>, foldKey: string): Set<string>;
|
|
17
|
+
//# sourceMappingURL=calldata-formatter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calldata-formatter.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/utils/calldata-formatter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAoB,MAAM,4BAA4B,CAAC;AAEpF,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAuDD,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,eAAe,EACxB,MAAM,SAAI,EACV,SAAS,SAAS,GACjB,aAAa,EAAE,CAoBjB;AAED,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,aAAa,EAAE,EACzB,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,GACxB,aAAa,EAAE,CAKjB;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,MAAM,EAAE,CAEnE;AAED,wBAAgB,aAAa,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAQrF"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Calldata formatting utilities for TUI display
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.formatDecodedCalldata = formatDecodedCalldata;
|
|
7
|
+
exports.filterVisibleLines = filterVisibleLines;
|
|
8
|
+
exports.getAllFoldableKeys = getAllFoldableKeys;
|
|
9
|
+
exports.toggleFoldKey = toggleFoldKey;
|
|
10
|
+
const text_js_1 = require("./text.js");
|
|
11
|
+
const FOLD_THRESHOLD = 100;
|
|
12
|
+
function formatParameter(param, indent, keyPrefix) {
|
|
13
|
+
const lines = [];
|
|
14
|
+
const foldKey = `${keyPrefix}-${param.name}`;
|
|
15
|
+
let value = param.displayValue;
|
|
16
|
+
if (param.addressLabel) {
|
|
17
|
+
value = `${param.displayValue} [${param.addressLabel}]`;
|
|
18
|
+
}
|
|
19
|
+
const isFoldable = value.length > FOLD_THRESHOLD;
|
|
20
|
+
const wrappedLines = isFoldable ? (0, text_js_1.wrapText)(value, 80) : [value];
|
|
21
|
+
lines.push({
|
|
22
|
+
text: `${param.name} (${param.type}): ${wrappedLines[0]}`,
|
|
23
|
+
indent,
|
|
24
|
+
foldable: isFoldable,
|
|
25
|
+
foldKey: isFoldable ? foldKey : undefined,
|
|
26
|
+
foldedLineCount: isFoldable ? wrappedLines.length - 1 : undefined,
|
|
27
|
+
});
|
|
28
|
+
if (isFoldable && wrappedLines.length > 1) {
|
|
29
|
+
for (let i = 1; i < wrappedLines.length; i++) {
|
|
30
|
+
lines.push({
|
|
31
|
+
text: wrappedLines[i],
|
|
32
|
+
indent: indent + 1,
|
|
33
|
+
foldable: false,
|
|
34
|
+
isFoldedContent: true,
|
|
35
|
+
foldKey,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
if (param.nested) {
|
|
40
|
+
lines.push({ text: "└─ [NESTED]", indent: indent + 1, foldable: false });
|
|
41
|
+
lines.push(...formatDecodedCalldata(param.nested, indent + 2, `${foldKey}-nested`));
|
|
42
|
+
}
|
|
43
|
+
if (param.nestedArray && param.nestedArray.length > 0) {
|
|
44
|
+
param.nestedArray.forEach((nested, i) => {
|
|
45
|
+
lines.push({ text: `[${i}]:`, indent: indent + 1, foldable: false });
|
|
46
|
+
lines.push(...formatDecodedCalldata(nested, indent + 2, `${foldKey}-arr-${i}`));
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
return lines;
|
|
50
|
+
}
|
|
51
|
+
function formatDecodedCalldata(decoded, indent = 0, keyPrefix = "root") {
|
|
52
|
+
const lines = [];
|
|
53
|
+
let header;
|
|
54
|
+
if (decoded.isRetryable) {
|
|
55
|
+
header = `Retryable Ticket → ${decoded.targetChain}`;
|
|
56
|
+
}
|
|
57
|
+
else if (decoded.signature) {
|
|
58
|
+
header = decoded.signature;
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
header = `Unknown function (${decoded.selector})`;
|
|
62
|
+
}
|
|
63
|
+
lines.push({ text: header, indent, foldable: false });
|
|
64
|
+
if (decoded.parameters) {
|
|
65
|
+
decoded.parameters.forEach((param, i) => {
|
|
66
|
+
lines.push(...formatParameter(param, indent + 1, `${keyPrefix}-p${i}`));
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
return lines;
|
|
70
|
+
}
|
|
71
|
+
function filterVisibleLines(allLines, expandedKeys) {
|
|
72
|
+
return allLines.filter((line) => {
|
|
73
|
+
if (!line.isFoldedContent)
|
|
74
|
+
return true;
|
|
75
|
+
return line.foldKey && expandedKeys.has(line.foldKey);
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
function getAllFoldableKeys(lines) {
|
|
79
|
+
return lines.filter((l) => l.foldable && l.foldKey).map((l) => l.foldKey);
|
|
80
|
+
}
|
|
81
|
+
function toggleFoldKey(expandedKeys, foldKey) {
|
|
82
|
+
const next = new Set(expandedKeys);
|
|
83
|
+
if (next.has(foldKey)) {
|
|
84
|
+
next.delete(foldKey);
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
next.add(foldKey);
|
|
88
|
+
}
|
|
89
|
+
return next;
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=calldata-formatter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calldata-formatter.js","sourceRoot":"","sources":["../../../../src/cli/tui/utils/calldata-formatter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Help view section data - keyboard shortcuts reference
|
|
3
|
+
*/
|
|
4
|
+
export interface HelpShortcut {
|
|
5
|
+
key: string;
|
|
6
|
+
description: string;
|
|
7
|
+
note?: string;
|
|
8
|
+
}
|
|
9
|
+
export interface HelpSection {
|
|
10
|
+
title: string;
|
|
11
|
+
icon?: string;
|
|
12
|
+
shortcuts: HelpShortcut[];
|
|
13
|
+
}
|
|
14
|
+
export declare const HELP_SECTIONS: HelpSection[];
|
|
15
|
+
//# sourceMappingURL=help-data.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"help-data.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/utils/help-data.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,YAAY,EAAE,CAAC;CAC3B;AAED,eAAO,MAAM,aAAa,EAAE,WAAW,EAgFtC,CAAC"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Help view section data - keyboard shortcuts reference
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.HELP_SECTIONS = void 0;
|
|
7
|
+
exports.HELP_SECTIONS = [
|
|
8
|
+
{
|
|
9
|
+
title: "Navigation (Vim-style)",
|
|
10
|
+
icon: "⌨",
|
|
11
|
+
shortcuts: [
|
|
12
|
+
{ key: "j/↓", description: "Move down" },
|
|
13
|
+
{ key: "k/↑", description: "Move up" },
|
|
14
|
+
{ key: "Ctrl+d/PgDn", description: "Page down (10 items)" },
|
|
15
|
+
{ key: "Ctrl+u/PgUp", description: "Page up (10 items)" },
|
|
16
|
+
{ key: "g", description: "Jump to top" },
|
|
17
|
+
{ key: "G", description: "Jump to bottom" },
|
|
18
|
+
{ key: "Enter", description: "Select / Enter view" },
|
|
19
|
+
{ key: "b/Esc", description: "Go back" },
|
|
20
|
+
],
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
title: "List View",
|
|
24
|
+
icon: "📋",
|
|
25
|
+
shortcuts: [
|
|
26
|
+
{ key: "/", description: "Start search", note: "Enter to finish, Esc to clear" },
|
|
27
|
+
{ key: "Tab", description: "Cycle filter", note: "all → active → complete → timelocks" },
|
|
28
|
+
{ key: "o", description: "Cycle sort", note: "newest → oldest → progress → status" },
|
|
29
|
+
{ key: "R", description: "Reload cache from disk" },
|
|
30
|
+
{ key: "d", description: "Discover proposals", note: "requires RPC" },
|
|
31
|
+
{ key: "e", description: "Election status", note: "requires RPC" },
|
|
32
|
+
{ key: "S", description: "Settings" },
|
|
33
|
+
{ key: "q", description: "Quit" },
|
|
34
|
+
],
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
title: "Detail View",
|
|
38
|
+
icon: "📄",
|
|
39
|
+
shortcuts: [
|
|
40
|
+
{ key: "1-7", description: "Jump to stage number" },
|
|
41
|
+
{ key: "y", description: "Copy proposal/operation ID" },
|
|
42
|
+
{ key: "Y", description: "Copy transaction hash" },
|
|
43
|
+
{ key: "d", description: "View description" },
|
|
44
|
+
{ key: "c", description: "View calldata" },
|
|
45
|
+
{ key: "s", description: "View simulation data" },
|
|
46
|
+
{ key: "r", description: "Re-track proposal", note: "requires RPC" },
|
|
47
|
+
],
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
title: "Calldata View",
|
|
51
|
+
icon: "🔍",
|
|
52
|
+
shortcuts: [
|
|
53
|
+
{ key: "←/→", description: "Navigate between actions" },
|
|
54
|
+
{ key: "Enter", description: "Toggle fold/unfold" },
|
|
55
|
+
{ key: "e", description: "Expand all" },
|
|
56
|
+
{ key: "c", description: "Collapse all" },
|
|
57
|
+
],
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
title: "Election View",
|
|
61
|
+
icon: "🗳",
|
|
62
|
+
shortcuts: [
|
|
63
|
+
{ key: "j/k", description: "Navigate elections" },
|
|
64
|
+
{ key: "Enter/l", description: "View detailed info", note: "contenders, nominees, members" },
|
|
65
|
+
{ key: "b/Esc", description: "Go back / Close details" },
|
|
66
|
+
],
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
title: "Settings View",
|
|
70
|
+
icon: "⚙",
|
|
71
|
+
shortcuts: [
|
|
72
|
+
{ key: "j/k", description: "Navigate settings" },
|
|
73
|
+
{ key: "Enter/Space", description: "Edit or toggle setting" },
|
|
74
|
+
{ key: "r", description: "Reset all to defaults" },
|
|
75
|
+
{ key: "b/Esc", description: "Save and close" },
|
|
76
|
+
],
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
title: "Tips",
|
|
80
|
+
icon: "💡",
|
|
81
|
+
shortcuts: [
|
|
82
|
+
{ key: "?", description: "Show/hide this help (works in any view)" },
|
|
83
|
+
{ key: "Search", description: "Matches title and proposal ID" },
|
|
84
|
+
{ key: "RPC", description: "Use --l2-rpc for tracking features" },
|
|
85
|
+
],
|
|
86
|
+
},
|
|
87
|
+
];
|
|
88
|
+
//# sourceMappingURL=help-data.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"help-data.js","sourceRoot":"","sources":["../../../../src/cli/tui/utils/help-data.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,4 +2,15 @@ export { wrapText, truncate } from "./text.js";
|
|
|
2
2
|
export { getTerminalSize, getVisibleRows } from "./terminal.js";
|
|
3
3
|
export type { TerminalSize } from "./terminal.js";
|
|
4
4
|
export { copyToClipboard, formatForCopy } from "./clipboard.js";
|
|
5
|
+
export { formatDecodedCalldata, filterVisibleLines, getAllFoldableKeys, toggleFoldKey, } from "./calldata-formatter.js";
|
|
6
|
+
export type { FormattedLine } from "./calldata-formatter.js";
|
|
7
|
+
export { CHAIN_TO_CHAIN_ID, safeStringify, formatValue, formatStageData, } from "./stage-formatter.js";
|
|
8
|
+
export type { StageDataItem } from "./stage-formatter.js";
|
|
9
|
+
export { parseMarkdown } from "./markdown-parser.js";
|
|
10
|
+
export type { MarkdownLine, MarkdownLineType } from "./markdown-parser.js";
|
|
11
|
+
export { getSettingItems, updateConfigValue, groupSettingItems, SECTION_TITLES, } from "./settings-data.js";
|
|
12
|
+
export type { SettingSection, SettingItem, GroupedSettingItems } from "./settings-data.js";
|
|
13
|
+
export { HELP_SECTIONS } from "./help-data.js";
|
|
14
|
+
export type { HelpSection, HelpShortcut } from "./help-data.js";
|
|
15
|
+
export { formatDate, getTxHash, getProposalIdDisplay } from "./proposal-detail-helpers.js";
|
|
5
16
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAChE,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAChE,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,GACd,MAAM,yBAAyB,CAAC;AACjC,YAAY,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,GACf,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC3F,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.formatForCopy = exports.copyToClipboard = exports.getVisibleRows = exports.getTerminalSize = exports.truncate = exports.wrapText = void 0;
|
|
3
|
+
exports.getProposalIdDisplay = exports.getTxHash = exports.formatDate = exports.HELP_SECTIONS = exports.SECTION_TITLES = exports.groupSettingItems = exports.updateConfigValue = exports.getSettingItems = exports.parseMarkdown = exports.formatStageData = exports.formatValue = exports.safeStringify = exports.CHAIN_TO_CHAIN_ID = exports.toggleFoldKey = exports.getAllFoldableKeys = exports.filterVisibleLines = exports.formatDecodedCalldata = exports.formatForCopy = exports.copyToClipboard = exports.getVisibleRows = exports.getTerminalSize = exports.truncate = exports.wrapText = void 0;
|
|
4
4
|
var text_js_1 = require("./text.js");
|
|
5
5
|
Object.defineProperty(exports, "wrapText", { enumerable: true, get: function () { return text_js_1.wrapText; } });
|
|
6
6
|
Object.defineProperty(exports, "truncate", { enumerable: true, get: function () { return text_js_1.truncate; } });
|
|
@@ -10,4 +10,27 @@ Object.defineProperty(exports, "getVisibleRows", { enumerable: true, get: functi
|
|
|
10
10
|
var clipboard_js_1 = require("./clipboard.js");
|
|
11
11
|
Object.defineProperty(exports, "copyToClipboard", { enumerable: true, get: function () { return clipboard_js_1.copyToClipboard; } });
|
|
12
12
|
Object.defineProperty(exports, "formatForCopy", { enumerable: true, get: function () { return clipboard_js_1.formatForCopy; } });
|
|
13
|
+
var calldata_formatter_js_1 = require("./calldata-formatter.js");
|
|
14
|
+
Object.defineProperty(exports, "formatDecodedCalldata", { enumerable: true, get: function () { return calldata_formatter_js_1.formatDecodedCalldata; } });
|
|
15
|
+
Object.defineProperty(exports, "filterVisibleLines", { enumerable: true, get: function () { return calldata_formatter_js_1.filterVisibleLines; } });
|
|
16
|
+
Object.defineProperty(exports, "getAllFoldableKeys", { enumerable: true, get: function () { return calldata_formatter_js_1.getAllFoldableKeys; } });
|
|
17
|
+
Object.defineProperty(exports, "toggleFoldKey", { enumerable: true, get: function () { return calldata_formatter_js_1.toggleFoldKey; } });
|
|
18
|
+
var stage_formatter_js_1 = require("./stage-formatter.js");
|
|
19
|
+
Object.defineProperty(exports, "CHAIN_TO_CHAIN_ID", { enumerable: true, get: function () { return stage_formatter_js_1.CHAIN_TO_CHAIN_ID; } });
|
|
20
|
+
Object.defineProperty(exports, "safeStringify", { enumerable: true, get: function () { return stage_formatter_js_1.safeStringify; } });
|
|
21
|
+
Object.defineProperty(exports, "formatValue", { enumerable: true, get: function () { return stage_formatter_js_1.formatValue; } });
|
|
22
|
+
Object.defineProperty(exports, "formatStageData", { enumerable: true, get: function () { return stage_formatter_js_1.formatStageData; } });
|
|
23
|
+
var markdown_parser_js_1 = require("./markdown-parser.js");
|
|
24
|
+
Object.defineProperty(exports, "parseMarkdown", { enumerable: true, get: function () { return markdown_parser_js_1.parseMarkdown; } });
|
|
25
|
+
var settings_data_js_1 = require("./settings-data.js");
|
|
26
|
+
Object.defineProperty(exports, "getSettingItems", { enumerable: true, get: function () { return settings_data_js_1.getSettingItems; } });
|
|
27
|
+
Object.defineProperty(exports, "updateConfigValue", { enumerable: true, get: function () { return settings_data_js_1.updateConfigValue; } });
|
|
28
|
+
Object.defineProperty(exports, "groupSettingItems", { enumerable: true, get: function () { return settings_data_js_1.groupSettingItems; } });
|
|
29
|
+
Object.defineProperty(exports, "SECTION_TITLES", { enumerable: true, get: function () { return settings_data_js_1.SECTION_TITLES; } });
|
|
30
|
+
var help_data_js_1 = require("./help-data.js");
|
|
31
|
+
Object.defineProperty(exports, "HELP_SECTIONS", { enumerable: true, get: function () { return help_data_js_1.HELP_SECTIONS; } });
|
|
32
|
+
var proposal_detail_helpers_js_1 = require("./proposal-detail-helpers.js");
|
|
33
|
+
Object.defineProperty(exports, "formatDate", { enumerable: true, get: function () { return proposal_detail_helpers_js_1.formatDate; } });
|
|
34
|
+
Object.defineProperty(exports, "getTxHash", { enumerable: true, get: function () { return proposal_detail_helpers_js_1.getTxHash; } });
|
|
35
|
+
Object.defineProperty(exports, "getProposalIdDisplay", { enumerable: true, get: function () { return proposal_detail_helpers_js_1.getProposalIdDisplay; } });
|
|
13
36
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/cli/tui/utils/index.ts"],"names":[],"mappings":";;;AAAA,qCAA+C;AAAtC,mGAAA,QAAQ,OAAA;AAAE,mGAAA,QAAQ,OAAA;AAC3B,6CAAgE;AAAvD,8GAAA,eAAe,OAAA;AAAE,6GAAA,cAAc,OAAA;AAExC,+CAAgE;AAAvD,+GAAA,eAAe,OAAA;AAAE,6GAAA,aAAa,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/cli/tui/utils/index.ts"],"names":[],"mappings":";;;AAAA,qCAA+C;AAAtC,mGAAA,QAAQ,OAAA;AAAE,mGAAA,QAAQ,OAAA;AAC3B,6CAAgE;AAAvD,8GAAA,eAAe,OAAA;AAAE,6GAAA,cAAc,OAAA;AAExC,+CAAgE;AAAvD,+GAAA,eAAe,OAAA;AAAE,6GAAA,aAAa,OAAA;AACvC,iEAKiC;AAJ/B,8HAAA,qBAAqB,OAAA;AACrB,2HAAA,kBAAkB,OAAA;AAClB,2HAAA,kBAAkB,OAAA;AAClB,sHAAA,aAAa,OAAA;AAGf,2DAK8B;AAJ5B,uHAAA,iBAAiB,OAAA;AACjB,mHAAA,aAAa,OAAA;AACb,iHAAA,WAAW,OAAA;AACX,qHAAA,eAAe,OAAA;AAGjB,2DAAqD;AAA5C,mHAAA,aAAa,OAAA;AAEtB,uDAK4B;AAJ1B,mHAAA,eAAe,OAAA;AACf,qHAAA,iBAAiB,OAAA;AACjB,qHAAA,iBAAiB,OAAA;AACjB,kHAAA,cAAc,OAAA;AAGhB,+CAA+C;AAAtC,6GAAA,aAAa,OAAA;AAEtB,2EAA2F;AAAlF,wHAAA,UAAU,OAAA;AAAE,uHAAA,SAAS,OAAA;AAAE,kIAAA,oBAAoB,OAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Markdown parsing utilities for TUI display
|
|
3
|
+
*/
|
|
4
|
+
export type MarkdownLineType = "normal" | "h1" | "h2" | "h3" | "bullet" | "link" | "code" | "separator";
|
|
5
|
+
export interface MarkdownLine {
|
|
6
|
+
text: string;
|
|
7
|
+
type: MarkdownLineType;
|
|
8
|
+
indent: number;
|
|
9
|
+
}
|
|
10
|
+
export declare function parseMarkdown(text: string, width: number): MarkdownLine[];
|
|
11
|
+
//# sourceMappingURL=markdown-parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown-parser.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/utils/markdown-parser.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,gBAAgB,GACxB,QAAQ,GACR,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,QAAQ,GACR,MAAM,GACN,MAAM,GACN,WAAW,CAAC;AAEhB,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,gBAAgB,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB;AAkCD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,YAAY,EAAE,CA6EzE"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Markdown parsing utilities for TUI display
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.parseMarkdown = parseMarkdown;
|
|
7
|
+
function wrapTextToLines(text, width, type, indent, result) {
|
|
8
|
+
const safeWidth = Math.max(10, width);
|
|
9
|
+
const words = text.split(/\s+/);
|
|
10
|
+
let currentLine = "";
|
|
11
|
+
let currentIndent = indent;
|
|
12
|
+
for (const word of words) {
|
|
13
|
+
if (currentLine.length === 0) {
|
|
14
|
+
currentLine = word;
|
|
15
|
+
}
|
|
16
|
+
else if (currentLine.length + 1 + word.length <= safeWidth) {
|
|
17
|
+
currentLine += " " + word;
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
result.push({ text: currentLine, type, indent: currentIndent });
|
|
21
|
+
currentLine = word;
|
|
22
|
+
// Continuation lines of bullets get extra indent
|
|
23
|
+
if (type === "bullet" && currentIndent === 2) {
|
|
24
|
+
currentIndent = 4;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
if (currentLine.length > 0) {
|
|
29
|
+
result.push({ text: currentLine, type, indent: currentIndent });
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
function parseMarkdown(text, width) {
|
|
33
|
+
const result = [];
|
|
34
|
+
const lines = text.split("\n");
|
|
35
|
+
// Guard against very narrow terminals
|
|
36
|
+
const safeWidth = Math.max(20, width);
|
|
37
|
+
for (const rawLine of lines) {
|
|
38
|
+
const trimmed = rawLine.trim();
|
|
39
|
+
// Empty line
|
|
40
|
+
if (trimmed.length === 0) {
|
|
41
|
+
result.push({ text: "", type: "normal", indent: 0 });
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
// Horizontal rule
|
|
45
|
+
if (/^[-*_]{3,}$/.test(trimmed)) {
|
|
46
|
+
result.push({
|
|
47
|
+
text: "─".repeat(Math.min(safeWidth - 4, 60)),
|
|
48
|
+
type: "separator",
|
|
49
|
+
indent: 0,
|
|
50
|
+
});
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
// Headers
|
|
54
|
+
if (trimmed.startsWith("### ")) {
|
|
55
|
+
result.push({ text: trimmed.slice(4), type: "h3", indent: 0 });
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
if (trimmed.startsWith("## ")) {
|
|
59
|
+
result.push({ text: trimmed.slice(3), type: "h2", indent: 0 });
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
if (trimmed.startsWith("# ")) {
|
|
63
|
+
result.push({ text: trimmed.slice(2), type: "h1", indent: 0 });
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
// Bullet points
|
|
67
|
+
if (/^[-*+] /.test(trimmed)) {
|
|
68
|
+
const bulletText = trimmed.slice(2);
|
|
69
|
+
wrapTextToLines(bulletText, safeWidth - 6, "bullet", 2, result);
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
// Numbered lists
|
|
73
|
+
if (/^\d+\. /.test(trimmed)) {
|
|
74
|
+
const match = trimmed.match(/^(\d+)\. /);
|
|
75
|
+
if (match) {
|
|
76
|
+
const numText = trimmed.slice(match[0].length);
|
|
77
|
+
const textWidth = safeWidth - 6;
|
|
78
|
+
result.push({
|
|
79
|
+
text: `${match[1]}. ${numText.slice(0, textWidth)}`,
|
|
80
|
+
type: "bullet",
|
|
81
|
+
indent: 0,
|
|
82
|
+
});
|
|
83
|
+
if (numText.length > textWidth) {
|
|
84
|
+
wrapTextToLines(numText.slice(textWidth), textWidth, "normal", 3, result);
|
|
85
|
+
}
|
|
86
|
+
continue;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
// Code blocks (just show as-is with code styling)
|
|
90
|
+
if (trimmed.startsWith("```")) {
|
|
91
|
+
continue; // Skip code fence markers
|
|
92
|
+
}
|
|
93
|
+
// Links - simplify [text](url) to just text
|
|
94
|
+
const processedLine = trimmed.replace(/\[([^\]]+)\]\([^)]+\)/g, "$1");
|
|
95
|
+
// Normal paragraph
|
|
96
|
+
wrapTextToLines(processedLine, safeWidth - 4, "normal", 0, result);
|
|
97
|
+
}
|
|
98
|
+
return result;
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=markdown-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown-parser.js","sourceRoot":"","sources":["../../../../src/cli/tui/utils/markdown-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Helper functions for ProposalDetail component
|
|
3
|
+
*/
|
|
4
|
+
import type { TrackingInput } from "../../../types/index.js";
|
|
5
|
+
/**
|
|
6
|
+
* Format a Unix timestamp to locale string
|
|
7
|
+
*/
|
|
8
|
+
export declare function formatDate(timestamp: number | null): string;
|
|
9
|
+
/**
|
|
10
|
+
* Extract transaction hash from tracking input
|
|
11
|
+
*/
|
|
12
|
+
export declare function getTxHash(input: TrackingInput): string;
|
|
13
|
+
/**
|
|
14
|
+
* Get display-friendly proposal or operation ID from tracking input
|
|
15
|
+
*/
|
|
16
|
+
export declare function getProposalIdDisplay(input: TrackingInput): string;
|
|
17
|
+
//# sourceMappingURL=proposal-detail-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proposal-detail-helpers.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/utils/proposal-detail-helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D;;GAEG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAG3D;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAUtD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAWjE"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Helper functions for ProposalDetail component
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.formatDate = formatDate;
|
|
7
|
+
exports.getTxHash = getTxHash;
|
|
8
|
+
exports.getProposalIdDisplay = getProposalIdDisplay;
|
|
9
|
+
/**
|
|
10
|
+
* Format a Unix timestamp to locale string
|
|
11
|
+
*/
|
|
12
|
+
function formatDate(timestamp) {
|
|
13
|
+
if (timestamp === null)
|
|
14
|
+
return "Unknown";
|
|
15
|
+
return new Date(timestamp).toLocaleString();
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Extract transaction hash from tracking input
|
|
19
|
+
*/
|
|
20
|
+
function getTxHash(input) {
|
|
21
|
+
switch (input.type) {
|
|
22
|
+
case "governor":
|
|
23
|
+
return input.creationTxHash;
|
|
24
|
+
case "timelock":
|
|
25
|
+
return input.scheduledTxHash;
|
|
26
|
+
case "discovery":
|
|
27
|
+
case "election":
|
|
28
|
+
return "";
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Get display-friendly proposal or operation ID from tracking input
|
|
33
|
+
*/
|
|
34
|
+
function getProposalIdDisplay(input) {
|
|
35
|
+
switch (input.type) {
|
|
36
|
+
case "governor":
|
|
37
|
+
return input.proposalId;
|
|
38
|
+
case "timelock":
|
|
39
|
+
return input.operationId;
|
|
40
|
+
case "discovery":
|
|
41
|
+
return input.id;
|
|
42
|
+
case "election":
|
|
43
|
+
return `election-${input.electionIndex}`;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=proposal-detail-helpers.js.map
|