UNPKG

pear-electron

Version:

Pear User-Interface Library for Electron

37 lines (33 loc) 1.43 kB
'use strict' const IPC = require('pear-ipc') const { PLATFORM_LOCK, SOCKET_PATH, CONNECT_TIMEOUT } = require('pear-api/constants') const tryboot = require('pear-api/tryboot') const { outputter, ansi, byteSize } = require('pear-api/terminal') const transforms = { dumping: ({ link, dir, list }) => list > -1 ? '' : `\n${ansi.pear} Bootstrapping pear-electron runtimes from peers\n\nfrom: ${link}\ninto: ${dir}\n`, file: ({ key, value }) => `${key}${value ? '\n' + value : ''}`, complete: () => '\x1b[1A\nBootstrap complete\n', stats ({ upload, download, peers }) { const dl = download.total + download.speed === 0 ? '' : `[${ansi.down} ${byteSize(download.total)} - ${byteSize(download.speed)}/s ] ` const ul = upload.total + upload.speed === 0 ? '' : `[${ansi.up} ${byteSize(upload.total)} - ${byteSize(upload.speed)}/s ] ` return { output: 'status', message: `[ Peers: ${peers} ] ${dl}${ul}` } }, error: (err) => `Bootstrap Failure (code: ${err.code || 'none'}) ${err.stack}` } async function bootstrap (opts, outs = transforms) { const output = outputter('dump', outs) const ipc = new IPC.Client({ lock: PLATFORM_LOCK, socketPath: SOCKET_PATH, connectTimeout: CONNECT_TIMEOUT, connect: tryboot }) const { json = false, log, ...options } = opts await ipc.ready() await output({ json, log }, ipc.dump(options)) await ipc.close() } module.exports = bootstrap