skylight-extension

Helper package for connecting to and working with the Skylight Extension API

Usage no npm install needed!

<script type="module">
  import skylightExtension from 'https://cdn.skypack.dev/skylight-extension';
</script>

README

This library is no longer maintained by Upskill.

We will be releasing a full JavaScript SDK which will be officially maintained soon.

Feel free to use this code as-is or as an example 
of how to authenticate to the Skylight API

skylight-extension-node

This package simplifies the connection process when developing a Skylight Extension in Node.js.

This first implementation is very simple and just handles connection logic. It just makes an authentication request to the appropriate API endpoint, connects to the notification system over MQTT, and subscribes to the Extension's topic.

Setup

First, install the package from npm with:

npm install skylight-extension

and include it in your extension's code by adding an appropriate require statement:

const skylight = require('skylight-extension')

Usage

Using the extension helper is simple. Just set up the API access credentials that Skylight displayed in the Domain Settings > API Credentials screen for the extension that you created and call the connect() method, passing it a callback.

Once successful you're able to access the client object which is just a reference to the underlyling MQTT client object so it can be used in exactly the same way listening to connection, message, and other MQTT events.

const skylight = require('skylight-extension')

const options = {
  realm: 'myRealm',  
  username: 'myUsername',
  password: 'myPassword',
    domain: 'myDomain' //Optional (defaults to skylight.upskill.io if unspecified)
}

skylight.connect(options, () => {
  //Handle Connection Event
  skylight.client.on('connect', () => {
    console.log('INFO: My first Skylight Extension is Online! Extension ID is: ', skylight.config.clientId)

    //Heres an example API call
    skylight.api.get('/my/route', bodyJson, (err, res, body) => {
      //Do something
      console.log(body);
    })
  })

  //Handle Messages Coming out of Skylight
  skylight.client.on('message', (topic, message, packet) => {
    console.log('INFO: Message received', message.toString())
  })
})