-
-
Notifications
You must be signed in to change notification settings - Fork 52
Expand file tree
/
Copy pathgetChainId.tsx
More file actions
87 lines (74 loc) · 1.89 KB
/
getChainId.tsx
File metadata and controls
87 lines (74 loc) · 1.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
import { option } from 'pastel'
import { z } from 'zod'
import CliAction from '../components/CliAction.js'
import { useAction } from '../hooks/useAction.js'
// Add command description for help output
export const description = 'Get the chain ID of the connected blockchain network'
// Options definitions and descriptions
const optionDescriptions = {
rpc: 'RPC endpoint (env: TEVM_RPC)',
}
// Empty args tuple
export const args = z.tuple([])
export const options = z.object({
// Interactive mode flag
run: z
.boolean()
.default(false)
.describe(
option({
description: 'Run directly without interactive parameter editing (env: TEVM_RUN)',
alias: 'r',
}),
),
// Transport options
rpc: z
.string()
.optional()
.describe(
option({
description: optionDescriptions.rpc,
defaultValueDescription: 'http://localhost:8545',
}),
),
// Output formatting
formatJson: z
.boolean()
.optional()
.describe(
option({
description: 'Format output as JSON (env: TEVM_FORMAT_JSON)',
defaultValueDescription: 'true',
}),
),
})
type Props = {
args: z.infer<typeof args>
options: z.infer<typeof options>
}
// COMPREHENSIVE DEFAULTS
const defaultValues: Record<string, any> = {
rpc: 'http://localhost:8545',
}
export default function GetChainId({ options }: Props) {
// Use the action hook
const actionResult = useAction({
actionName: 'getChainId',
options,
defaultValues,
optionDescriptions,
// Create params - getChainId takes no parameters
createParams: (_enhancedOptions: Record<string, any>) => {
return {}
},
// Execute the action
executeAction: async (client: any, _params: any): Promise<any> => {
return await client.getChainId()
},
})
// If editor is active, render nothing
if (actionResult.editorActive) {
return null
}
return <CliAction {...actionResult} targetName="chain" successMessage="Chain ID retrieved successfully!" />
}