Skip to main content
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

const result = await Effect.runPromiseExit(NodeInfo.from({}))
// result._tag === 'Failure' → NodeInfoError