Copy
Ask AI
import * as NodeInfo from 'voltaire-effect/NodeInfo'
import * as Schema from 'effect/Schema'
import { Effect } from 'effect'
// Schema validation
const info = Schema.decodeSync(NodeInfo.JSON)({
enode: 'enode://[email protected]:30303',
id: 'abc123',
ip: '127.0.0.1',
name: 'Geth/v1.10.0',
ports: { discovery: 30303, listener: 30303 },
protocols: { eth: { network: 1, difficulty: 1000 } }
})
// Effect constructor
const program = NodeInfo.from({
enode: 'enode://[email protected]:30303',
id: 'abc123',
ip: '127.0.0.1',
name: 'Geth/v1.10.0',
ports: { discovery: 30303, listener: 30303 },
protocols: { eth: { network: 1 } }
})
const nodeInfo = Effect.runSync(program)
console.log(nodeInfo.name) // 'Geth/v1.10.0'
Error Handling
Copy
Ask AI
const result = await Effect.runPromiseExit(NodeInfo.from({}))
// result._tag === 'Failure' → NodeInfoError

