OverviewFilesCommitsIssuesDocsReleasesPeers

hyper-proto-peer / .probe-get-state.mjs

40 lines · javascript ref:
import './lib/bare-globals.js'
import os from 'bare-os'
import { Client } from 'hyper-svc'

const sockPath = os.homedir() + '/.config/hyper-proto-peer/data/control.sock'

function timeout (ms) {
  return new Promise((_, reject) => setTimeout(() => reject(new Error('TIMEOUT ' + ms + 'ms')), ms))
}

async function main () {
  let client
  try {
    client = await Promise.race([Client.connectUds(sockPath), timeout(6000)])
  } catch (err) {
    console.log('CONNECT_ERROR:', err.message)
    process.exit(1)
  }
  try {
    const state = await Promise.race([client.call('get-state', {}), timeout(6000)])
    console.log('GET_STATE_OK:')
    console.log(JSON.stringify(state, null, 2))
    const keys = ['did', 'self', 'writable', 'holdsLease', 'indexers', 'indexer', 'head', 'recordCount', 'records']
    console.log('---SUMMARY---')
    for (const k of keys) {
      if (state && Object.prototype.hasOwnProperty.call(state, k)) {
        const v = state[k]
        if (Array.isArray(v)) console.log(k + ': [' + v.length + '] ' + JSON.stringify(v))
        else if (v && typeof v === 'object') console.log(k + ': ' + JSON.stringify(v))
        else console.log(k + ': ' + v)
      }
    }
  } catch (err) {
    console.log('GET_STATE_ERROR:', err.message)
  }
  process.exit(0)
}

main()