particle-api-js 9.1.0 → 9.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/Client.js CHANGED
@@ -181,8 +181,8 @@ var Client = function () {
181
181
  }
182
182
  }, {
183
183
  key: 'downloadFile',
184
- value: function downloadFile(url) {
185
- return this.api.downloadFile({ url: url });
184
+ value: function downloadFile(uri) {
185
+ return this.api.downloadFile({ uri: uri });
186
186
  }
187
187
 
188
188
  /**
package/lib/Client.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/Client.js"],"names":["Client","auth","api","Boolean","query","listLibraries","then","libraries","payload","body","data","map","l","name","getLibrary","library","getLibraryVersions","archive","contributeLibrary","_throwError","error","publishLibrary","force","deleteLibrary","errors","errorMessages","e","message","join","Error","url","downloadFile","files","platformId","targetVersion","compileCode","signal","deviceId","signalDevice","listDevices","listBuildTargets","onlyFeatured","targets","target","platforms","platform","push","version","prerelease","prereleases","indexOf","firmware_vendor","full","context","trackingIdentity"],"mappings":"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","file":"Client.js","sourcesContent":["import Particle from './Particle';\nimport Library from './Library';\n\n\nexport default class Client {\n\tconstructor({ auth, api = new Particle() }){\n\t\tObject.assign(this, { auth, api });\n\t}\n\n\tready(){\n\t\treturn Boolean(this.auth);\n\t}\n\n\t/**\n\t * Get firmware library objects\n\t * @param {Object} query The query parameters for libraries. See Particle.listLibraries\n\t * @returns {Promise} A promise\n\t */\n\tlibraries(query = {}){\n\t\treturn this.api.listLibraries(Object.assign({}, query, { auth: this.auth }))\n\t\t\t.then(payload => {\n\t\t\t\tconst libraries = payload.body.data || [];\n\t\t\t\treturn libraries.map(l => new Library(this, l));\n\t\t\t});\n\t}\n\n\t/**\n\t * Get one firmware library object\n\t * @param {String} name Name of the library to fetch\n\t * @param {Object} query The query parameters for libraries. See Particle.getLibrary\n\t * @returns {Promise} A promise\n\t */\n\tlibrary(name, query = {}){\n\t\treturn this.api.getLibrary(Object.assign({}, query, { name, auth: this.auth }))\n\t\t\t.then(payload => {\n\t\t\t\tconst library = payload.body.data || {};\n\t\t\t\treturn new Library(this, library);\n\t\t\t});\n\t}\n\n\t/**\n\t * Get list of library versions\n\t * @param {String} name Name of the library to fetch\n\t * @param {Object} query The query parameters for versions. See Particle.getLibraryVersions\n\t * @returns {Promise} A promise\n\t */\n\tlibraryVersions(name, query = {}){\n\t\treturn this.api.getLibraryVersions(Object.assign({}, query, { name, auth: this.auth }))\n\t\t\t.then(payload => {\n\t\t\t\tconst libraries = payload.body.data || [];\n\t\t\t\treturn libraries.map(l => new Library(this, l));\n\t\t\t});\n\t}\n\n\t/**\n\t * Contribute a new library version\n\t * @param {Buffer} archive The compressed archive with the library source\n\t * @returns {Promise} A promise\n\t */\n\tcontributeLibrary(archive){\n\t\treturn this.api.contributeLibrary({ archive, auth: this.auth })\n\t\t\t.then(payload => {\n\t\t\t\tconst library = payload.body.data || {};\n\t\t\t\treturn new Library(this, library);\n\t\t\t}, error => {\n\t\t\t\tthis._throwError(error);\n\t\t\t});\n\t}\n\n\t/**\n\t * Make the the most recent private library version public\n\t * @param {string} name The name of the library to publish\n\t * @return {Promise} To publish the library\n\t */\n\tpublishLibrary(name){\n\t\treturn this.api.publishLibrary({ name, auth: this.auth })\n\t\t\t.then(payload => {\n\t\t\t\tconst library = payload.body.data || {};\n\t\t\t\treturn new Library(this, library);\n\t\t\t}, error => {\n\t\t\t\tthis._throwError(error);\n\t\t\t});\n\t}\n\n\t/**\n\t * Delete an entire published library\n\t * @param {String} $0.name Name of the library to delete\n\t * @param {String} $0.force Key to force deleting a public library\n\t * @returns {Promise} A promise\n\t */\n\tdeleteLibrary({ name, force }){\n\t\treturn this.api.deleteLibrary({ name, force, auth: this.auth })\n\t\t\t.then(() => true, error => this._throwError(error));\n\t}\n\n\t_throwError(error){\n\t\tif (error.body && error.body.errors){\n\t\t\tconst errorMessages = error.body.errors.map((e) => e.message).join('\\n');\n\t\t\tthrow new Error(errorMessages);\n\t\t}\n\t\tthrow error;\n\t}\n\n\tdownloadFile(url){\n\t\treturn this.api.downloadFile({ url });\n\t}\n\n\t/**\n\t * @param {Object} files Object containing files to be compiled\n\t * @param {Number} platformId Platform id number of the device you are compiling for\n\t * @param {String} targetVersion System firmware version to compile against\n\t * @returns {Promise} A promise\n\t * @deprecated Will be removed in 6.5\n\t */\n\tcompileCode(files, platformId, targetVersion){\n\t\treturn this.api.compileCode({ files, platformId, targetVersion, auth: this.auth });\n\t}\n\n\t/**\n\t * @param {String} $0.deviceId Device ID or Name\n\t * @param {Boolean} $0.signal Signal on or off\n\t * @returns {Promise} A promise\n\t * @deprecated Will be removed in 6.5\n\t */\n\tsignalDevice({ signal, deviceId }){\n\t\treturn this.api.signalDevice({ signal, deviceId, auth: this.auth });\n\t}\n\n\t/**\n\t * @returns {Promise} A promise\n\t * @deprecated Will be removed in 6.5\n\t */\n\tlistDevices(){\n\t\treturn this.api.listDevices({ auth: this.auth });\n\t}\n\n\t/**\n\t * @returns {Promise} A promise\n\t * @deprecated Will be removed in 6.5\n\t */\n\tlistBuildTargets(){\n\t\treturn this.api.listBuildTargets({ onlyFeatured: true, auth: this.auth })\n\t\t\t.then(payload => {\n\t\t\t\tlet targets = [];\n\t\t\t\tfor (let target of payload.body.targets){\n\t\t\t\t\tfor (let platform of target.platforms){\n\t\t\t\t\t\ttargets.push({\n\t\t\t\t\t\t\tversion: target.version,\n\t\t\t\t\t\t\tplatform: platform,\n\t\t\t\t\t\t\tprerelease: target.prereleases.indexOf(platform) > -1,\n\t\t\t\t\t\t\tfirmware_vendor: target.firmware_vendor\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn targets;\n\t\t\t}, () => {});\n\t}\n\n\ttrackingIdentity({ full=false, context }={}){\n\t\treturn this.api.trackingIdentity({ full, context, auth: this.auth })\n\t\t\t.then(payload => {\n\t\t\t\treturn payload.body;\n\t\t\t});\n\t}\n}\n"]}
1
+ {"version":3,"sources":["../src/Client.js"],"names":["Client","auth","api","Boolean","query","listLibraries","then","libraries","payload","body","data","map","l","name","getLibrary","library","getLibraryVersions","archive","contributeLibrary","_throwError","error","publishLibrary","force","deleteLibrary","errors","errorMessages","e","message","join","Error","uri","downloadFile","files","platformId","targetVersion","compileCode","signal","deviceId","signalDevice","listDevices","listBuildTargets","onlyFeatured","targets","target","platforms","platform","push","version","prerelease","prereleases","indexOf","firmware_vendor","full","context","trackingIdentity"],"mappings":"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","file":"Client.js","sourcesContent":["import Particle from './Particle';\nimport Library from './Library';\n\n\nexport default class Client {\n\tconstructor({ auth, api = new Particle() }){\n\t\tObject.assign(this, { auth, api });\n\t}\n\n\tready(){\n\t\treturn Boolean(this.auth);\n\t}\n\n\t/**\n\t * Get firmware library objects\n\t * @param {Object} query The query parameters for libraries. See Particle.listLibraries\n\t * @returns {Promise} A promise\n\t */\n\tlibraries(query = {}){\n\t\treturn this.api.listLibraries(Object.assign({}, query, { auth: this.auth }))\n\t\t\t.then(payload => {\n\t\t\t\tconst libraries = payload.body.data || [];\n\t\t\t\treturn libraries.map(l => new Library(this, l));\n\t\t\t});\n\t}\n\n\t/**\n\t * Get one firmware library object\n\t * @param {String} name Name of the library to fetch\n\t * @param {Object} query The query parameters for libraries. See Particle.getLibrary\n\t * @returns {Promise} A promise\n\t */\n\tlibrary(name, query = {}){\n\t\treturn this.api.getLibrary(Object.assign({}, query, { name, auth: this.auth }))\n\t\t\t.then(payload => {\n\t\t\t\tconst library = payload.body.data || {};\n\t\t\t\treturn new Library(this, library);\n\t\t\t});\n\t}\n\n\t/**\n\t * Get list of library versions\n\t * @param {String} name Name of the library to fetch\n\t * @param {Object} query The query parameters for versions. See Particle.getLibraryVersions\n\t * @returns {Promise} A promise\n\t */\n\tlibraryVersions(name, query = {}){\n\t\treturn this.api.getLibraryVersions(Object.assign({}, query, { name, auth: this.auth }))\n\t\t\t.then(payload => {\n\t\t\t\tconst libraries = payload.body.data || [];\n\t\t\t\treturn libraries.map(l => new Library(this, l));\n\t\t\t});\n\t}\n\n\t/**\n\t * Contribute a new library version\n\t * @param {Buffer} archive The compressed archive with the library source\n\t * @returns {Promise} A promise\n\t */\n\tcontributeLibrary(archive){\n\t\treturn this.api.contributeLibrary({ archive, auth: this.auth })\n\t\t\t.then(payload => {\n\t\t\t\tconst library = payload.body.data || {};\n\t\t\t\treturn new Library(this, library);\n\t\t\t}, error => {\n\t\t\t\tthis._throwError(error);\n\t\t\t});\n\t}\n\n\t/**\n\t * Make the the most recent private library version public\n\t * @param {string} name The name of the library to publish\n\t * @return {Promise} To publish the library\n\t */\n\tpublishLibrary(name){\n\t\treturn this.api.publishLibrary({ name, auth: this.auth })\n\t\t\t.then(payload => {\n\t\t\t\tconst library = payload.body.data || {};\n\t\t\t\treturn new Library(this, library);\n\t\t\t}, error => {\n\t\t\t\tthis._throwError(error);\n\t\t\t});\n\t}\n\n\t/**\n\t * Delete an entire published library\n\t * @param {String} $0.name Name of the library to delete\n\t * @param {String} $0.force Key to force deleting a public library\n\t * @returns {Promise} A promise\n\t */\n\tdeleteLibrary({ name, force }){\n\t\treturn this.api.deleteLibrary({ name, force, auth: this.auth })\n\t\t\t.then(() => true, error => this._throwError(error));\n\t}\n\n\t_throwError(error){\n\t\tif (error.body && error.body.errors){\n\t\t\tconst errorMessages = error.body.errors.map((e) => e.message).join('\\n');\n\t\t\tthrow new Error(errorMessages);\n\t\t}\n\t\tthrow error;\n\t}\n\n\tdownloadFile(uri){\n\t\treturn this.api.downloadFile({ uri });\n\t}\n\n\t/**\n\t * @param {Object} files Object containing files to be compiled\n\t * @param {Number} platformId Platform id number of the device you are compiling for\n\t * @param {String} targetVersion System firmware version to compile against\n\t * @returns {Promise} A promise\n\t * @deprecated Will be removed in 6.5\n\t */\n\tcompileCode(files, platformId, targetVersion){\n\t\treturn this.api.compileCode({ files, platformId, targetVersion, auth: this.auth });\n\t}\n\n\t/**\n\t * @param {String} $0.deviceId Device ID or Name\n\t * @param {Boolean} $0.signal Signal on or off\n\t * @returns {Promise} A promise\n\t * @deprecated Will be removed in 6.5\n\t */\n\tsignalDevice({ signal, deviceId }){\n\t\treturn this.api.signalDevice({ signal, deviceId, auth: this.auth });\n\t}\n\n\t/**\n\t * @returns {Promise} A promise\n\t * @deprecated Will be removed in 6.5\n\t */\n\tlistDevices(){\n\t\treturn this.api.listDevices({ auth: this.auth });\n\t}\n\n\t/**\n\t * @returns {Promise} A promise\n\t * @deprecated Will be removed in 6.5\n\t */\n\tlistBuildTargets(){\n\t\treturn this.api.listBuildTargets({ onlyFeatured: true, auth: this.auth })\n\t\t\t.then(payload => {\n\t\t\t\tlet targets = [];\n\t\t\t\tfor (let target of payload.body.targets){\n\t\t\t\t\tfor (let platform of target.platforms){\n\t\t\t\t\t\ttargets.push({\n\t\t\t\t\t\t\tversion: target.version,\n\t\t\t\t\t\t\tplatform: platform,\n\t\t\t\t\t\t\tprerelease: target.prereleases.indexOf(platform) > -1,\n\t\t\t\t\t\t\tfirmware_vendor: target.firmware_vendor\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn targets;\n\t\t\t}, () => {});\n\t}\n\n\ttrackingIdentity({ full=false, context }={}){\n\t\treturn this.api.trackingIdentity({ full, context, auth: this.auth })\n\t\t\t.then(payload => {\n\t\t\t\treturn payload.body;\n\t\t\t});\n\t}\n}\n"]}
@@ -88,7 +88,6 @@ var EventStream = function (_EventEmitter) {
88
88
  path: path + '?access_token=' + _this2.token,
89
89
  method: 'get',
90
90
  port: parseInt(port, 10) || (isSecure ? 443 : 80),
91
- avoidFetch: true,
92
91
  mode: 'prefer-streaming'
93
92
  });
94
93
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/EventStream.js"],"names":["EventStream","uri","token","reconnectInterval","timeout","data","buf","parse","bind","end","idleTimeoutExpired","resolve","reject","hostname","protocol","port","path","origin","isSecure","requestor","req","request","method","parseInt","avoidFetch","mode","connected","connectionTimeout","setTimeout","abort","error","Error","errorDescription","on","clearTimeout","e","statusCode","res","body","chunk","JSON","error_description","undefined","once","startIdleTimeout","removeAllListeners","event","param","emit","emitSafe","stopIdleTimeout","reconnect","isOffline","connect","then","catch","err","navigator","hasOwnProperty","onLine","idleTimeout","pos","length","discardTrailingNewline","lineLength","fieldLength","i","c","parseEventStreamLine","slice","name","eventName","field","step","valueLength","value"],"mappings":"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","file":"EventStream.js","sourcesContent":["/* eslint max-depth: 0 */\nimport http from 'http';\nimport https from 'https';\nimport url from 'url';\nimport { EventEmitter } from 'events';\n\nclass EventStream extends EventEmitter {\n\tconstructor(uri, token) {\n\t\tsuper();\n\t\tthis.uri = uri;\n\t\tthis.token = token;\n\t\tthis.reconnectInterval = 2000;\n\t\tthis.timeout = 13000; // keep alive can be sent up to 12 seconds after last event\n\t\tthis.data = '';\n\t\tthis.buf = '';\n\n\t\tthis.parse = this.parse.bind(this);\n\t\tthis.end = this.end.bind(this);\n\t\tthis.idleTimeoutExpired = this.idleTimeoutExpired.bind(this);\n\t}\n\n\tconnect() {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tconst { hostname, protocol, port, path } = url.parse(this.uri);\n\t\t\tthis.origin = `${protocol}//${hostname}${port ? (':' + port) : ''}`;\n\n\t\t\tconst isSecure = protocol === 'https:';\n\t\t\tconst requestor = isSecure ? https : http;\n\t\t\tconst req = requestor.request({\n\t\t\t\thostname,\n\t\t\t\tprotocol,\n\t\t\t\tpath: `${path}?access_token=${this.token}`,\n\t\t\t\tmethod: 'get',\n\t\t\t\tport: parseInt(port, 10) || (isSecure ? 443 : 80),\n\t\t\t\tavoidFetch: true,\n\t\t\t\tmode: 'prefer-streaming'\n\t\t\t});\n\n\t\t\tthis.req = req;\n\n\t\t\tlet connected = false;\n\t\t\tlet connectionTimeout = setTimeout(() => {\n\t\t\t\tif (this.req) {\n\t\t\t\t\tthis.req.abort();\n\t\t\t\t}\n\t\t\t\treject({ error: new Error('Timeout'), errorDescription: `Timeout connecting to ${this.uri}` });\n\t\t\t}, this.timeout);\n\n\t\t\treq.on('error', e => {\n\t\t\t\tclearTimeout(connectionTimeout);\n\n\t\t\t\tif (connected) {\n\t\t\t\t\tthis.end();\n\t\t\t\t} else {\n\t\t\t\t\treject({ error: e, errorDescription: `Network error from ${this.uri}` });\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treq.on('response', res => {\n\t\t\t\tclearTimeout(connectionTimeout);\n\n\t\t\t\tconst statusCode = res.statusCode;\n\t\t\t\tif (statusCode !== 200) {\n\t\t\t\t\tlet body = '';\n\t\t\t\t\tres.on('data', chunk => body += chunk);\n\t\t\t\t\tres.on('end', () => {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tbody = JSON.parse(body);\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t// don't bother doing anything special if the JSON.parse fails\n\t\t\t\t\t\t\t// since we are already about to reject the promise anyway\n\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\tlet errorDescription = `HTTP error ${statusCode} from ${this.uri}`;\n\t\t\t\t\t\t\tif (body && body.error_description) {\n\t\t\t\t\t\t\t\terrorDescription += ' - ' + body.error_description;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treject({ statusCode, errorDescription, body });\n\t\t\t\t\t\t\tthis.req = undefined;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis.data = '';\n\t\t\t\tthis.buf = '';\n\n\t\t\t\tconnected = true;\n\t\t\t\tres.on('data', this.parse);\n\t\t\t\tres.once('end', this.end);\n\t\t\t\tthis.startIdleTimeout();\n\t\t\t\tresolve(this);\n\t\t\t});\n\t\t\treq.end();\n\t\t});\n\t}\n\n\tabort() {\n\t\tif (this.req) {\n\t\t\tthis.req.abort();\n\t\t\tthis.req = undefined;\n\t\t}\n\t\tthis.removeAllListeners();\n\t}\n\n\t/* Private methods */\n\n\temitSafe(event, param) {\n\t\ttry {\n\t\t\tthis.emit(event, param);\n\t\t} catch (error) {\n\t\t\tif (event !== 'error') {\n\t\t\t\tthis.emitSafe('error', error);\n\t\t\t}\n\t\t}\n\t}\n\n\tend() {\n\t\tthis.stopIdleTimeout();\n\n\t\tif (!this.req) {\n\t\t\t// request was ended intentionally by abort\n\t\t\t// do not auto reconnect.\n\t\t\treturn;\n\t\t}\n\n\t\tthis.req = undefined;\n\t\tthis.emitSafe('disconnect');\n\t\tthis.reconnect();\n\t}\n\n\treconnect() {\n\t\tsetTimeout(() => {\n\t\t\tif (this.isOffline()) {\n\t\t\t\tthis.reconnect();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.emitSafe('reconnect');\n\t\t\tthis.connect().then(() => {\n\t\t\t\tthis.emitSafe('reconnect-success');\n\t\t\t}).catch(err => {\n\t\t\t\tthis.emitSafe('reconnect-error', err);\n\t\t\t\tthis.reconnect();\n\t\t\t});\n\t\t}, this.reconnectInterval);\n\t}\n\n\tisOffline() {\n\t\tif (typeof navigator === 'undefined' || navigator.hasOwnProperty('onLine')) {\n\t\t\treturn false;\n\t\t}\n\t\treturn !navigator.onLine;\n\t}\n\n\tstartIdleTimeout() {\n\t\tthis.stopIdleTimeout();\n\t\tthis.idleTimeout = setTimeout(this.idleTimeoutExpired, this.timeout);\n\t}\n\n\tstopIdleTimeout() {\n\t\tif (this.idleTimeout) {\n\t\t\tclearTimeout(this.idleTimeout);\n\t\t\tthis.idleTimeout = null;\n\t\t}\n\t}\n\n\tidleTimeoutExpired() {\n\t\tif (this.req) {\n\t\t\tthis.req.abort();\n\t\t\tthis.end();\n\t\t}\n\t}\n\n\tparse(chunk) {\n\t\tthis.startIdleTimeout();\n\n\t\tthis.buf += chunk;\n\t\tlet pos = 0;\n\t\tlet length = this.buf.length;\n\t\tlet discardTrailingNewline = false;\n\n\t\twhile (pos < length) {\n\t\t\tif (discardTrailingNewline) {\n\t\t\t\tif (this.buf[pos] === '\\n') {\n\t\t\t\t\t++pos;\n\t\t\t\t}\n\t\t\t\tdiscardTrailingNewline = false;\n\t\t\t}\n\n\t\t\tlet lineLength = -1;\n\t\t\tlet fieldLength = -1;\n\n\t\t\tfor (let i = pos; lineLength < 0 && i < length; ++i) {\n\t\t\t\tconst c = this.buf[i];\n\t\t\t\tif (c === ':') {\n\t\t\t\t\tif (fieldLength < 0) {\n\t\t\t\t\t\tfieldLength = i - pos;\n\t\t\t\t\t}\n\t\t\t\t} else if (c === '\\r') {\n\t\t\t\t\tdiscardTrailingNewline = true;\n\t\t\t\t\tlineLength = i - pos;\n\t\t\t\t} else if (c === '\\n') {\n\t\t\t\t\tlineLength = i - pos;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (lineLength < 0) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tthis.parseEventStreamLine(pos, fieldLength, lineLength);\n\n\t\t\tpos += lineLength + 1;\n\t\t}\n\n\t\tif (pos === length) {\n\t\t\tthis.buf = '';\n\t\t} else if (pos > 0) {\n\t\t\tthis.buf = this.buf.slice(pos);\n\t\t}\n\t}\n\n\tparseEventStreamLine(pos, fieldLength, lineLength) {\n\t\tif (lineLength === 0) {\n\t\t\ttry {\n\t\t\t\tif (this.data.length > 0 && this.event) {\n\t\t\t\t\tconst event = JSON.parse(this.data);\n\t\t\t\t\tevent.name = this.eventName || '';\n\t\t\t\t\tthis.emitSafe('event', event);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t// do nothing if JSON.parse fails\n\t\t\t} finally {\n\t\t\t\tthis.data = '';\n\t\t\t\tthis.eventName = undefined;\n\t\t\t\tthis.event = false;\n\t\t\t}\n\t\t} else if (fieldLength > 0) {\n\t\t\tconst field = this.buf.slice(pos, pos + fieldLength);\n\t\t\tlet step = 0;\n\n\t\t\tif (this.buf[pos + fieldLength + 1] !== ' ') {\n\t\t\t\tstep = fieldLength + 1;\n\t\t\t} else {\n\t\t\t\tstep = fieldLength + 2;\n\t\t\t}\n\t\t\tpos += step;\n\t\t\tconst valueLength = lineLength - step;\n\t\t\tconst value = this.buf.slice(pos, pos + valueLength);\n\n\t\t\tif (field === 'data') {\n\t\t\t\tthis.data += value + '\\n';\n\t\t\t} else if (field === 'event') {\n\t\t\t\tthis.eventName = value;\n\t\t\t\tthis.event = true;\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport default EventStream;\n"]}
1
+ {"version":3,"sources":["../src/EventStream.js"],"names":["EventStream","uri","token","reconnectInterval","timeout","data","buf","parse","bind","end","idleTimeoutExpired","resolve","reject","hostname","protocol","port","path","origin","isSecure","requestor","req","request","method","parseInt","mode","connected","connectionTimeout","setTimeout","abort","error","Error","errorDescription","on","clearTimeout","e","statusCode","res","body","chunk","JSON","error_description","undefined","once","startIdleTimeout","removeAllListeners","event","param","emit","emitSafe","stopIdleTimeout","reconnect","isOffline","connect","then","catch","err","navigator","hasOwnProperty","onLine","idleTimeout","pos","length","discardTrailingNewline","lineLength","fieldLength","i","c","parseEventStreamLine","slice","name","eventName","field","step","valueLength","value"],"mappings":"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","file":"EventStream.js","sourcesContent":["/* eslint max-depth: 0 */\nimport http from 'http';\nimport https from 'https';\nimport url from 'url';\nimport { EventEmitter } from 'events';\n\nclass EventStream extends EventEmitter {\n\tconstructor(uri, token) {\n\t\tsuper();\n\t\tthis.uri = uri;\n\t\tthis.token = token;\n\t\tthis.reconnectInterval = 2000;\n\t\tthis.timeout = 13000; // keep alive can be sent up to 12 seconds after last event\n\t\tthis.data = '';\n\t\tthis.buf = '';\n\n\t\tthis.parse = this.parse.bind(this);\n\t\tthis.end = this.end.bind(this);\n\t\tthis.idleTimeoutExpired = this.idleTimeoutExpired.bind(this);\n\t}\n\n\tconnect() {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tconst { hostname, protocol, port, path } = url.parse(this.uri);\n\t\t\tthis.origin = `${protocol}//${hostname}${port ? (':' + port) : ''}`;\n\n\t\t\tconst isSecure = protocol === 'https:';\n\t\t\tconst requestor = isSecure ? https : http;\n\t\t\tconst req = requestor.request({\n\t\t\t\thostname,\n\t\t\t\tprotocol,\n\t\t\t\tpath: `${path}?access_token=${this.token}`,\n\t\t\t\tmethod: 'get',\n\t\t\t\tport: parseInt(port, 10) || (isSecure ? 443 : 80),\n\t\t\t\tmode: 'prefer-streaming'\n\t\t\t});\n\n\t\t\tthis.req = req;\n\n\t\t\tlet connected = false;\n\t\t\tlet connectionTimeout = setTimeout(() => {\n\t\t\t\tif (this.req) {\n\t\t\t\t\tthis.req.abort();\n\t\t\t\t}\n\t\t\t\treject({ error: new Error('Timeout'), errorDescription: `Timeout connecting to ${this.uri}` });\n\t\t\t}, this.timeout);\n\n\t\t\treq.on('error', e => {\n\t\t\t\tclearTimeout(connectionTimeout);\n\n\t\t\t\tif (connected) {\n\t\t\t\t\tthis.end();\n\t\t\t\t} else {\n\t\t\t\t\treject({ error: e, errorDescription: `Network error from ${this.uri}` });\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treq.on('response', res => {\n\t\t\t\tclearTimeout(connectionTimeout);\n\n\t\t\t\tconst statusCode = res.statusCode;\n\t\t\t\tif (statusCode !== 200) {\n\t\t\t\t\tlet body = '';\n\t\t\t\t\tres.on('data', chunk => body += chunk);\n\t\t\t\t\tres.on('end', () => {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tbody = JSON.parse(body);\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t// don't bother doing anything special if the JSON.parse fails\n\t\t\t\t\t\t\t// since we are already about to reject the promise anyway\n\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\tlet errorDescription = `HTTP error ${statusCode} from ${this.uri}`;\n\t\t\t\t\t\t\tif (body && body.error_description) {\n\t\t\t\t\t\t\t\terrorDescription += ' - ' + body.error_description;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treject({ statusCode, errorDescription, body });\n\t\t\t\t\t\t\tthis.req = undefined;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis.data = '';\n\t\t\t\tthis.buf = '';\n\n\t\t\t\tconnected = true;\n\t\t\t\tres.on('data', this.parse);\n\t\t\t\tres.once('end', this.end);\n\t\t\t\tthis.startIdleTimeout();\n\t\t\t\tresolve(this);\n\t\t\t});\n\t\t\treq.end();\n\t\t});\n\t}\n\n\tabort() {\n\t\tif (this.req) {\n\t\t\tthis.req.abort();\n\t\t\tthis.req = undefined;\n\t\t}\n\t\tthis.removeAllListeners();\n\t}\n\n\t/* Private methods */\n\n\temitSafe(event, param) {\n\t\ttry {\n\t\t\tthis.emit(event, param);\n\t\t} catch (error) {\n\t\t\tif (event !== 'error') {\n\t\t\t\tthis.emitSafe('error', error);\n\t\t\t}\n\t\t}\n\t}\n\n\tend() {\n\t\tthis.stopIdleTimeout();\n\n\t\tif (!this.req) {\n\t\t\t// request was ended intentionally by abort\n\t\t\t// do not auto reconnect.\n\t\t\treturn;\n\t\t}\n\n\t\tthis.req = undefined;\n\t\tthis.emitSafe('disconnect');\n\t\tthis.reconnect();\n\t}\n\n\treconnect() {\n\t\tsetTimeout(() => {\n\t\t\tif (this.isOffline()) {\n\t\t\t\tthis.reconnect();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.emitSafe('reconnect');\n\t\t\tthis.connect().then(() => {\n\t\t\t\tthis.emitSafe('reconnect-success');\n\t\t\t}).catch(err => {\n\t\t\t\tthis.emitSafe('reconnect-error', err);\n\t\t\t\tthis.reconnect();\n\t\t\t});\n\t\t}, this.reconnectInterval);\n\t}\n\n\tisOffline() {\n\t\tif (typeof navigator === 'undefined' || navigator.hasOwnProperty('onLine')) {\n\t\t\treturn false;\n\t\t}\n\t\treturn !navigator.onLine;\n\t}\n\n\tstartIdleTimeout() {\n\t\tthis.stopIdleTimeout();\n\t\tthis.idleTimeout = setTimeout(this.idleTimeoutExpired, this.timeout);\n\t}\n\n\tstopIdleTimeout() {\n\t\tif (this.idleTimeout) {\n\t\t\tclearTimeout(this.idleTimeout);\n\t\t\tthis.idleTimeout = null;\n\t\t}\n\t}\n\n\tidleTimeoutExpired() {\n\t\tif (this.req) {\n\t\t\tthis.req.abort();\n\t\t\tthis.end();\n\t\t}\n\t}\n\n\tparse(chunk) {\n\t\tthis.startIdleTimeout();\n\n\t\tthis.buf += chunk;\n\t\tlet pos = 0;\n\t\tlet length = this.buf.length;\n\t\tlet discardTrailingNewline = false;\n\n\t\twhile (pos < length) {\n\t\t\tif (discardTrailingNewline) {\n\t\t\t\tif (this.buf[pos] === '\\n') {\n\t\t\t\t\t++pos;\n\t\t\t\t}\n\t\t\t\tdiscardTrailingNewline = false;\n\t\t\t}\n\n\t\t\tlet lineLength = -1;\n\t\t\tlet fieldLength = -1;\n\n\t\t\tfor (let i = pos; lineLength < 0 && i < length; ++i) {\n\t\t\t\tconst c = this.buf[i];\n\t\t\t\tif (c === ':') {\n\t\t\t\t\tif (fieldLength < 0) {\n\t\t\t\t\t\tfieldLength = i - pos;\n\t\t\t\t\t}\n\t\t\t\t} else if (c === '\\r') {\n\t\t\t\t\tdiscardTrailingNewline = true;\n\t\t\t\t\tlineLength = i - pos;\n\t\t\t\t} else if (c === '\\n') {\n\t\t\t\t\tlineLength = i - pos;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (lineLength < 0) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tthis.parseEventStreamLine(pos, fieldLength, lineLength);\n\n\t\t\tpos += lineLength + 1;\n\t\t}\n\n\t\tif (pos === length) {\n\t\t\tthis.buf = '';\n\t\t} else if (pos > 0) {\n\t\t\tthis.buf = this.buf.slice(pos);\n\t\t}\n\t}\n\n\tparseEventStreamLine(pos, fieldLength, lineLength) {\n\t\tif (lineLength === 0) {\n\t\t\ttry {\n\t\t\t\tif (this.data.length > 0 && this.event) {\n\t\t\t\t\tconst event = JSON.parse(this.data);\n\t\t\t\t\tevent.name = this.eventName || '';\n\t\t\t\t\tthis.emitSafe('event', event);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t// do nothing if JSON.parse fails\n\t\t\t} finally {\n\t\t\t\tthis.data = '';\n\t\t\t\tthis.eventName = undefined;\n\t\t\t\tthis.event = false;\n\t\t\t}\n\t\t} else if (fieldLength > 0) {\n\t\t\tconst field = this.buf.slice(pos, pos + fieldLength);\n\t\t\tlet step = 0;\n\n\t\t\tif (this.buf[pos + fieldLength + 1] !== ' ') {\n\t\t\t\tstep = fieldLength + 1;\n\t\t\t} else {\n\t\t\t\tstep = fieldLength + 2;\n\t\t\t}\n\t\t\tpos += step;\n\t\t\tconst valueLength = lineLength - step;\n\t\t\tconst value = this.buf.slice(pos, pos + valueLength);\n\n\t\t\tif (field === 'data') {\n\t\t\t\tthis.data += value + '\\n';\n\t\t\t} else if (field === 'event') {\n\t\t\t\tthis.eventName = value;\n\t\t\t\tthis.event = true;\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport default EventStream;\n"]}
package/package.json CHANGED
@@ -1,18 +1,19 @@
1
1
  {
2
2
  "name": "particle-api-js",
3
- "version": "9.1.0",
3
+ "version": "9.2.0",
4
4
  "description": "Particle API Client",
5
5
  "main": "lib/Particle.js",
6
6
  "scripts": {
7
7
  "babel-watch": "babel src -d lib --watch --source-maps",
8
8
  "prepublish": "npm run lint && npm run compile",
9
9
  "compile": "babel src -sd lib",
10
- "test": "npm run lint && npm run test:node",
11
- "test:node": "mocha test/ -R spec --compilers js:babel-register",
10
+ "test": "npm run lint && npm run test:unit",
11
+ "test:ci": "npm run lint && npm run test:unit -- --forbid-only && npm run coverage",
12
+ "test:unit": "mocha test/ -R spec --compilers js:babel-register",
13
+ "test:unit:silent": "npm run test:unit > tmp/test-unit-log.txt 2>&1",
12
14
  "test:browser": "karma start --single-run",
13
- "test:watch": "npm run test:node -- --watch",
14
- "cover": "istanbul cover ./node_modules/.bin/_mocha test/ -- -R spec --compilers js:babel-register",
15
- "coveralls": "istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec --compilers js:babel-register test/ && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js && rm -rf ./coverage",
15
+ "test:watch": "npm run test:unit -- --watch",
16
+ "coverage": "nyc --reporter=text --include='src/**/*.js' --temp-dir=./tmp/ --check-coverage --lines 50 npm run test:unit:silent",
16
17
  "lint": "eslint . --ext .js --format unix --ignore-path .gitignore --ignore-pattern \"dist/*\"",
17
18
  "lint:fix": "npm run lint -- --fix",
18
19
  "docs": "documentation build src/Particle.js --shallow -g -f md -o docs/api.md",
@@ -56,11 +57,9 @@
56
57
  "browserify": "^13.0.0",
57
58
  "chai": "^3.5.0",
58
59
  "chai-as-promised": "^5.3.0",
59
- "coveralls": "^2.11.4",
60
60
  "documentation": "^4.0.0-rc.1",
61
61
  "eslint": "^5.16.0",
62
62
  "eslint-config-particle": "^2.2.1",
63
- "istanbul": "1.0.0-alpha.2",
64
63
  "karma": "^1.1.1",
65
64
  "karma-browserify": "^5.1.0",
66
65
  "karma-chai": "^0.1.0",
@@ -70,6 +69,7 @@
70
69
  "karma-mocha": "^1.1.1",
71
70
  "minifyify": "^7.3.1",
72
71
  "mocha": "^2.5.1",
72
+ "nyc": "^15.1.0",
73
73
  "should": "^9.0.0",
74
74
  "sinon": "^7.2.5",
75
75
  "sinon-as-promised": "^4.0.3",
@@ -79,12 +79,16 @@
79
79
  "dependencies": {
80
80
  "babel-runtime": "^6.9.2",
81
81
  "form-data": ">2.2.0",
82
- "stream-http": "https://github.com/particle-iot/stream-http/archive/v2.2.1.tar.gz",
82
+ "stream-http": "^3.2.0",
83
83
  "superagent": "^5.1.2",
84
84
  "superagent-prefix": "0.0.2"
85
85
  },
86
86
  "browser": {
87
87
  "http": "stream-http",
88
88
  "https": "stream-http"
89
+ },
90
+ "engines": {
91
+ "node": ">=12.x",
92
+ "npm": "8.x"
89
93
  }
90
94
  }
@@ -56,8 +56,8 @@ describe('Client', () => {
56
56
 
57
57
  describe('downloadFile', () => {
58
58
  it('delegates to api', () => {
59
- api.downloadFile = () => Promise.resolve('delegated');
60
- return expect(client.downloadFile('url')).to.eventually.equal('delegated');
59
+ api.downloadFile = ({ uri }) => Promise.resolve(`${uri} delegated`);
60
+ return expect(client.downloadFile('uri')).to.eventually.equal('uri delegated');
61
61
  });
62
62
  });
63
63
 
@@ -29,6 +29,7 @@ particle.getEventStream({ deviceId: 'mine', auth })
29
29
  })
30
30
  .catch((err) => {
31
31
  console.error(err);
32
+ process.exit(1);
32
33
  });
33
34
  /* eslint-enable no-console */
34
35
 
@@ -51,7 +51,6 @@ describe('EventStream', () => {
51
51
  path: '/path?access_token=token',
52
52
  method: 'get',
53
53
  port: 8080,
54
- avoidFetch: true,
55
54
  mode: 'prefer-streaming'
56
55
  });
57
56
  });
package/.travis.yml DELETED
@@ -1,34 +0,0 @@
1
- language: node_js
2
- node_js:
3
- - 6
4
- - 8
5
- - 10
6
- cache:
7
- directories:
8
- - node_modules
9
- sudo: false
10
- services:
11
- - xvfb
12
- install:
13
- - npm -g install npm@5.10
14
- - npm install
15
- - npm prune
16
- script: "./travis_tests.sh"
17
- after_success:
18
- - npm run coveralls
19
- jobs:
20
- include:
21
- - node_js: 8
22
- env: TEST_SUITE=browser
23
- - stage: npm release
24
- script: echo "Publishing to npm..."
25
- node_js: 8
26
- if: tag =~ ^v\d+\.\d+\.\d+$
27
- deploy:
28
- provider: npm
29
- email: engineering+npm@particle.io
30
- api_key:
31
- secure: JzhJNTYb5bZmETc+MN7ivqeXTSUPMJ+ImGtiSXMFPNGnZc8PSwp82Q9Yx+cvno/8sSGaisleIcWDJ/4d9Vq6fNVchftu2tjCIauRUaQUf07tvO2bXW9HWmTaYCpySmvHsZD+v3FFOPEyWwkHWBGO0pQnlWOlPeJrzrpyp006uoh7shefK147zKwwUmZKJC0/VDbGOyWXeDXe1C0AapwxFovTaINir4OROmPCrmUX0ZzWQqWn6edyYZHMDDLLrAIywqiuj1f7MU5M4y+0lILVm0SC79x7fIm6ZnIk+V1KxbNYN1zrKAFLkGSRpVXbNPUULT/jxVFn+ThcSNidQf3cI5kX6sXfQLN8ue7MfMAYCcL3JZ4W0LkrsYn4RqC5t8D4VATTqsNMUn+oUDzgDm8NL8hW+RaE9hLkXEGz9NjMpXie4JThcJt/To6NEGDMd0hvzBcvKTG34xgsitM1XBnOe6uk/L4lx058hRshnIxHkctyvVQ/dZfHrRfTz6CkfC3UhSaw7ufKxBCceDId/DM2WDL2eUyy+ruJTbWhjbJv/GUBhR69atYriEqGmRmZSiA5nvj2+vTT6yrD0RbHi/CqhiEMFcZf3DI+mIrjXjmbvdKdt0cDUHazxxGSmU3S0EV+Qdvbv1pZxU/049WAnJWiwxwXHdpl9T6jZLw2e8d/xYs=
32
- skip_cleanup: true
33
- on:
34
- tags: true
package/travis_tests.sh DELETED
@@ -1,11 +0,0 @@
1
- #!/bin/bash
2
- # Run different test suites on Travis depending on environment variables
3
- set -ev
4
- if [ "${TEST_SUITE}" = "browser" ]; then
5
- # Load display for browser tests
6
- export DISPLAY=:99.0
7
- npm run build
8
- npm run test:browser
9
- else
10
- npm run test
11
- fi