/observe-now

Now API Client in form of a vigour-observable

Primary LanguageJavaScriptISC LicenseISC

observe-now

Build Status js-standard-style npm version Coverage Status

Observable based Now client.

Installing

npm install observe-now --save

Usage

Get is a method with 3 parameters. Returns a brisky-struct.

const observeNow = require('observe-now')

const request = observeNow.get('deployments', 'API-TOKEN', 'deployments.*')

request
  .on('response', deployment => {
    /* do something with deployment */
    if (deployment.uid === whatILookFor) {
      // stop this flow
      // emits 'end'
      request.abort()
    }
  })
  .on('error', err => {
    /* handle the error */
  })
  .on('end', () => {
    /* we got all deployments move on */
    request.set(null)
  })
  .send() // request won't be sent until we call this

Deployment is a method with a single parameter. Returns a vigour-observable.

You can deploy a new package and alias it on the fly:

const observeNow = require('observe-now')

const deployment = observeNow.deployment('api-token')

deployment
  .deploy('directory', {env1: 'one', env2: 'two'})
  .on('deployed', () => {
    console.log('Deployed to now, waiting until ready...')
  })
  .on('ready', () => {
    console.log('Deployment ready, aliasing...')
    deployment.alias('some-domain.com')
  })
  .on('aliased', () => {
    console.log('Alias successful!')
    deployment.set(null)
  })
  .on('error', error => {
    console.error('Deployment failed due to error: %j, stack: %s', error, error ? error.stack : '(no stack)')
  })

Or you can load an existing deployment and alias it:

deployment
  .load('https://your-deployment-url.now.sh')
  .on('loaded', () => {
    console.log('Deployment loaded!')
    deployment.alias('some-domain.com')
  })
  .on('aliased', () => {
    console.log('Alias successful!')
    deployment.set(null)
  })
  .on('error', error => {
    console.error('Alias failed due to error: %j, stack: %s', error, error ? error.stack : '(no stack)')
  })

You can also remove any deployment any time you need:

const observeNow = require('observe-now')

const deployment = observeNow.deployment('api-token')

deployment
  .deploy('directory', {env1: 'one', env2: 'two'})
  .on('deployed', () => {
    console.log('Deployed to now, waiting until ready...')
  })
  .on('ready', () => {
    console.log('Deployment ready, removing...')
    deployment.kill()
  })
  .on('killed', () => {
    console.log('Kill successful!')
    deployment.set(null)
  })
  .on('error', error => {
    console.error('Deployment failed due to error: %j, stack: %s', error, error ? error.stack : '(no stack)')
  })