{"version":3,"sources":["jsdelivr-header.js","/npm/netbeast@1.1.0/index.js"],"names":[],"mappings":"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","file":"/npm/netbeast@1.1.0/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/netbeast@1.1.0/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","var Promise = require('bluebird')\nvar request = require('superagent-bluebird-promise')\nvar chalk = require('chalk')\nvar mqtt = require('mqtt')\n\nvar scan = require('./lib/scan')\n\nvar NETBEAST = require('./lib/init')() // load env variables if needed or crash program\nconst HTTP_API = 'http://' + NETBEAST + '/api/resources'\nconst HTTP_SCENES = 'http://' + NETBEAST + '/api/scenes'\nconst APP_PROXY = 'http://' + NETBEAST + '/i/'\n\nfunction netbeast (topic) {\n  var self = {}\n  self.props = {}\n  self.props.topic = topic\n  self.props.location = null\n  self.props.alias = null\n  self.props.group = null\n  // definiciones\n\n  // Add a device to a given scene\n  self.addDeviceScene = function (deviceid) {\n    return request.get(HTTP_API).query({ id: deviceid })\n    .then(function (res) {\n      if (!res.body.length) return Promise.reject('These resources doesn´t exists!')\n      return request.get(APP_PROXY + res.body[0].app + res.body[0].hook)\n      .then(function (res) {\n        //  Registra dispositivo en la escena\n        var device = {\n          id: deviceid,\n          sceneid: self.props.topic,\n          location: self.props.location,\n          state: JSON.stringify(res.body)\n        }\n        return request.post(HTTP_SCENES).send(device).promise()\n      })\n    })\n  }\n\n  //  Specified the alias of the objects\n  self.alias = function (alias) {\n    self.props.alias = alias\n    return self\n  }\n\n  // Apply the values saved on a Scene\n  self.applyScene = function () {\n    if (!self.props.topic) return Promise.reject('There isn´t any scene selected')\n    return self.getScene()\n    .then(function (res) {\n      res.body.forEach(function (device) {\n        return self.setById(device.id, JSON.parse(device.state))\n      })\n    })\n  }\n\n  //  Specified the location of the objects\n  self.at = function (location) {\n    self.props.location = location\n    return self\n  }\n\n  self.changeAlias = function (alias) {\n    if (!alias) return Promise.reject(new Error('Alias required --> netbeast(<id>).changeAlias(<alias>)'))\n    if (!self.props.topic) return Promise.reject(new Error('Id required --> netbeast(<id>).changeAlias(<alias>)'))\n\n    return request.patch(HTTP_API + '?id=' + self.props.topic).send({alias: alias}).promise()\n  }\n\n  self.changeLocation = function (location) {\n    if (!location) return Promise.reject(new Error('Location required --> netbeast(<id>).changeLocation(<location>)'))\n    if (!self.props.topic) return Promise.reject(new Error('Id required --> netbeast(<id>).changeLocation(<location>)'))\n\n    return request.patch(HTTP_API + '?id=' + self.props.topic).send({location: location}).promise()\n  }\n\n  self.create = function (args) {\n    if (!self.props.topic && !args.topic) return Promise.reject(new Error('Topic required'))\n    if (!args.hook) return Promise.reject(new Error('Hook required'))\n    if (!args.app) return Promise.reject(new Error('App name required'))\n\n    return request.post(HTTP_API).send(queryCustom(args)).promise()\n  }\n\n  //  Create a Scene with the given sates of the devices\n  self.createCustomScene = function (states) {\n    return Promise.map(states, function (device, done) {\n      //  Registra dispositivo en la escena\n      device.sceneid = self.props.topic\n      device.state = JSON.stringify(device.status)\n      for (var key in device) {\n        if (['id', 'sceneid', 'state'].indexOf(key) < 0) delete device[key]\n      }\n      return request.post(HTTP_SCENES).send(device).promise()\n    })\n  }\n\n  // Create a Scene with the current sates of the devices\n  self.createScene = function (devicesid) {\n    return Promise.map(devicesid, function (id) {\n      self.addDeviceScene(id)\n    })\n  }\n\n  //  Method that performs the delete request\n  self.delete = function (args) {\n    const queryString = queryCustom(normalizeArguments(args))\n    return request.del(HTTP_API).query(queryString).promise()\n  }\n\n  //  Method that performs the delete request for a specific device\n  self.deleteById = function (id) {\n    return request.del(HTTP_API).query({ id: id }).promise()\n  }\n\n  //  Method that performs the delete request for a specific device\n  self.deleteByAlias = function (alias) {\n    return request.del(HTTP_API).query({ alias: alias }).promise()\n  }\n\n  //  Delete a device from a Scene\n  self.deleteDeviceScene = function (deviceid) {\n    return request.del(HTTP_SCENES).query({sceneid: self.props.topic, id: deviceid}).promise()\n  }\n\n  //  Delete a Scene\n  self.deleteScene = function () {\n    return request.del(HTTP_SCENES).query({sceneid: self.props.topic}).promise()\n  }\n\n  //  Method that performs the get request\n  self.get = function (args) {\n    if (self.props.topic === undefined) return Promise.reject(new Error('Topic required'))\n    return request.get(HTTP_API + '/topic/' + self.props.topic).query(self.props).promise()\n  }\n\n  //  Obtain all the Scene´s name already declared\n  self.getAllScenes = function () {\n    return request.get(HTTP_SCENES).promise()\n  }\n\n  //  Method that performs the get request for a specific device\n  self.getById = function (id) {\n    return request.get(HTTP_API + '/id/' + id).promise()\n  }\n\n  //  Method that performs the get request for a specific device\n  self.getByAlias = function (alias) {\n    return request.get(HTTP_API + '/alias/' + alias).promise()\n  }\n\n  //  Obtain all the details of a given Scene\n  self.getScene = function () {\n    return request.get(HTTP_SCENES).query(queryCustomScene()).promise()\n  }\n\n  //  Specified if the resource belongs to a certain group\n  self.groupBy = function (group) {\n    self.props.group = group\n    return self\n  }\n\n  self.groupDevices = function (name, devices) {\n    return Promise.map(devices, function (item) {\n      request.patch(HTTP_API).query({id: item}).send({groupname: name}).promise()\n    })\n  }\n\n  self.publish = function (message) {\n    var client = mqtt.connect('ws://' + process.env.NETBEAST)\n\n    client.on('connect', function () {\n      client.publish('netbeast/' + self.props.topic, JSON.stringify({message}))\n    })\n  }\n\n  //  Method that performs the set request\n  self.set = function (args) {\n    return request.post(HTTP_API + '/topic/' + self.props.topic).query(queryCustom()).send(args).promise()\n  }\n\n  //  Method that performs the set request  for a specific device\n  self.setById = function (id, args) {\n    return request.post(HTTP_API + '/id/' + id).send(args).promise()\n  }\n\n  //  Method that performs the set request  for a specific device\n  self.setByAlias = function (alias, args) {\n    return request.post(HTTP_API + '/alias/' + alias).send(args).promise()\n  }\n\n  //  Specified the location of the objects\n  self.topic = function (topic) {\n    self.props.topic = topic\n    return self\n  }\n\n  self.updateDB = function (args) {\n    if (!self.props.topic && !args.topic) return Promise.reject(new Error('Topic required'))\n    if (!args.hook) return Promise.reject(new Error('Hook required'))\n    if (!args.app) return Promise.reject(new Error('App name required'))\n\n    console.log(HTTP_API + '/update')\n    return request.post(HTTP_API + '/update').send(queryCustom(args)).promise()\n  }\n\n  function queryCustom (args) {\n    var queryString = args || {}\n    if (self.props.topic) queryString.topic = self.props.topic\n    if (self.props.alias) queryString.alias = self.props.alias\n    if (self.props.location) queryString.location = self.props.location\n    if (self.props.group) queryString.groupname = self.props.group\n    return queryString\n  }\n\n  function queryCustomScene (args) {\n    var queryString = args || {}\n    if (self.props.location) queryString.location = self.props.location\n    if (self.props.topic) queryString.sceneid = self.props.topic\n    return queryString\n  }\n\n  function normalizeArguments (args) {\n    //  Prepare query to be an object out of args unless it is undefined\n    var query = typeof args === 'undefined' ? undefined : {}\n    // if it is an string turn it into an array\n    args = typeof args === 'string' ? [args] : args\n    // and normalize it into an object again\n    if (args instanceof Array) {\n      args.forEach(function (param) { query[param] = '' })\n    } else if (typeof args === 'object') {\n      query = args\n    }\n\n    return query\n  }\n\n  return self\n}\n\nnetbeast.scan = function () {\n  return new Promise(function (resolve, reject) {\n    scan(function (beast) {\n      if (beast && beast[0]) {\n        netbeast.set(beast[0]) // set environment variable\n        return resolve(beast)\n      }\n\n      return reject(new Error('No netbeasts found in subnet'))\n    })\n  })\n}\n\nnetbeast.find = function () {\n  if (process.env.NETBEAST) return Promise.resolve(process.env.NETBEAST)\n  return netbeast.scan()\n}\n\nnetbeast.set = function (networkObject) {\n  process.env.NETBEAST = networkObject.address + ':' + networkObject.port\n  return netbeast\n}\n\nnetbeast.emit = function (msg) {\n  // Log notification through console\n  var str = chalk.bgCyan('ws') +\n  chalk.bold.bgCyan(msg.title || '::')\n\n  switch (msg.emphasis) {\n    case 'error':\n    str = str + chalk.bgRed(msg.body)\n    break\n    case 'warning':\n    str = str + chalk.bgYellow(msg.body)\n    break\n    case 'info':\n    str = str + chalk.bgBlue(msg.body)\n    break\n    case 'success':\n    str = str + chalk.bgGreen(msg.body)\n    break\n  }\n\n  var client = mqtt.connect('ws://' + process.env.NETBEAST)\n  console.log(str)\n  client.publish('netbeast/push', JSON.stringify(msg))\n  client.end()\n}\n\nnetbeast.error = function (body, title) {\n  netbeast.emit({ emphasis: 'error', body: body, title: title })\n}\n\nnetbeast.info = function (body, title) {\n  netbeast.emit({ emphasis: 'info', body: body, title: title })\n}\n\nnetbeast.success = function (body, title) {\n  netbeast.emit({ emphasis: 'success', body: body, title: title })\n}\n\nnetbeast.warning = function (body, title) {\n  netbeast.emit({ emphasis: 'warning', body: body, title: title })\n}\n\nnetbeast.on = function (topic, callback) {\n  var client = mqtt.connect('ws://' + process.env.NETBEAST)\n\n  client.on('connect', function () {\n    console.log('connected')\n    client.subscribe('netbeast/' + topic)\n  })\n\n  if (!topic) return Promise.reject(new Error('Topic required'))\n\n  client.on('message', function (topic, message) {\n    console.log(message)\n    if (message) {\n      message = JSON.parse(message.toString())\n      callback(null, message)\n    }\n  })\n}\n\n// Search for devices of a given brand (or all)\nnetbeast.discoverDevices = function (app) {\n  var apps = []\n  var promise = new Promise(function (resolve, reject) {\n    request.get(process.env.NETBEAST + '/plugins')\n    .then(function (res) {\n      for (var aplication in res.body) {\n        if (apps.indexOf(res.body[aplication].name) < 0) apps.push(res.body[aplication].name)\n      }\n\n      if (!app || app === 'all') {\n        return Promise.each(apps, function (item) {\n          request.get(APP_PROXY + item + '/discover').promise()\n        })\n      } else if (apps.indexOf(app) >= 0) {\n        return request.get(APP_PROXY + app + '/discover')\n      } else {\n        return reject(new Error('App not supported yet'))\n      }\n    })\n  })\n  return promise\n}\n\nmodule.exports = netbeast\n"]}