0.1.0 • Published 6 years ago

hyperspace.js v0.1.0

Weekly downloads
4
License
MIT
Repository
github
Last release
6 years ago

Hyperspace Logo Nodejs Wrapper

Build Status js-standard-style devDependency Status dependencies Status license:mit

A Highly Efficient Decentralized Storage Network

This is a Nodejs wrapper for Hyperspace. Use it in your apps to easily interact with the Hyperspace storage network via function calls instead of manual http requests.

Prerequisites

Installation

npm install hyperspace.js

Example Usage

import { connect } from 'hyperspace.js'

// Using promises...
// connect to an already running Hyperspace daemon on localhost:5580 and print its version
connect('localhost:5580')
  .then((hsd) => {
    hsd.call('/daemon/version').then((version) => console.log(version))
  })
  .catch((err) => {
    console.error(err)
  })

// Or ES7 async/await
async function getVersion() {
  try {
    const hsd = await connect('localhost:5580')
    const version = await hsd.call('/daemon/version')
    console.log('Hsd has version: ' + version)
  } catch (e) {
    console.error(e)
  }
}

You can also forgo using connect and use call directly by providing an API address as the first parameter:

import { call } from 'hyperspace.js'

async function getVersion(address) {
  try {
    const version = await call(address, '/daemon/version')
    return version
  } catch (e) {
    console.error('error getting ' + address + ' version: ' + e.toString())
  }
}

console.log(getVersion('10.0.0.1:5580'))

hyperspace.js can also launch a hsd instance given a path on disk to the hsd binary. launch takes an object defining the flags to use as its second argument, and returns the child_process object. You are responsible for keeping track of the state of this child_process object, and catching any errors launch may throw.

import { launch } from 'hyperspace.js'

try {
  // Flags are passed in as an object in the second argument to `launch`.
  // if no flags are passed, the default flags will be used.
  const hsdProcess = launch('/path/to/your/hsd', {
    'modules': 'cghmrtw',
    'profile': true,
  })
  // hsdProcess is a ChildProcess class.  See https://nodejs.org/api/child_process.html#child_process_class_childprocess for more information on what you can do with it.
  hsdProcess.on('error', (err) => console.log('hsd encountered an error ' + err))
} catch (e) {
  console.error('error launching hsd: ' + e.toString())
}

The call object passed as the first argument into call() are funneled directly into the request library, so checkout their options to see how to access the full functionality of Hyperspace's API

Hsd.call({
  url: '/consensus/block',
  method: 'GET',
  qs: {
    height: 0
  }
})

Should log something like:

null { block:
 { parentid: '0000000000000000000000000000000000000000000000000000000000000000',
   nonce: [ 0, 0, 0, 0, 0, 0, 0, 0 ],
   timestamp: 1433600000,
   minerpayouts: null,
   transactions: [ [Object] ] } }