particle-api-js 9.4.1 → 10.1.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.
Files changed (51) hide show
  1. package/.circleci/config.yml +7 -5
  2. package/CHANGELOG.md +11 -0
  3. package/{test/EventStream-e2e-browser.html → EventStream-e2e-browser.html} +0 -1
  4. package/{test/EventStream-e2e-node.js → EventStream-e2e-node.js} +2 -3
  5. package/README.md +2 -2
  6. package/RELEASE.md +1 -1
  7. package/dist/particle.min.js +1 -399
  8. package/dist/particle.min.js.map +1 -1
  9. package/docs/api.md +5223 -115
  10. package/fs.js +2 -0
  11. package/karma.conf.js +18 -6
  12. package/package.json +23 -26
  13. package/src/Agent.js +407 -0
  14. package/src/Client.js +170 -0
  15. package/src/Defaults.js +7 -0
  16. package/src/EventStream.js +263 -0
  17. package/src/Library.js +33 -0
  18. package/src/Particle.js +2644 -0
  19. package/test/Agent.integration.js +5 -4
  20. package/test/Agent.spec.js +174 -291
  21. package/test/Client.spec.js +7 -7
  22. package/test/Defaults.spec.js +2 -2
  23. package/test/EventStream.spec.js +6 -4
  24. package/test/FakeAgent.js +2 -2
  25. package/test/Library.spec.js +2 -2
  26. package/test/Particle.integration.js +7 -7
  27. package/test/Particle.spec.js +332 -18
  28. package/test/fixtures/index.js +4 -18
  29. package/test/support/FixtureHttpServer.js +5 -3
  30. package/test/test-setup.js +5 -5
  31. package/tsconfig.json +14 -0
  32. package/webpack.config.js +45 -0
  33. package/.babelrc +0 -4
  34. package/lib/Agent.js +0 -516
  35. package/lib/Agent.js.map +0 -1
  36. package/lib/Client.js +0 -312
  37. package/lib/Client.js.map +0 -1
  38. package/lib/Defaults.js +0 -14
  39. package/lib/Defaults.js.map +0 -1
  40. package/lib/EventStream.js +0 -335
  41. package/lib/EventStream.js.map +0 -1
  42. package/lib/Library.js +0 -67
  43. package/lib/Library.js.map +0 -1
  44. package/lib/Particle.js +0 -3248
  45. package/lib/Particle.js.map +0 -1
  46. package/lib/superagent-binary-parser.js +0 -20
  47. package/lib/superagent-binary-parser.js.map +0 -1
  48. package/test/Client.integration.js +0 -69
  49. package/test/fixtures/tarball.tar.gz +0 -0
  50. package/test/fixtures/test-library-publish-0.0.1.tar.gz +0 -0
  51. package/test/fixtures/test-library-publish-0.0.2.tar.gz +0 -0
@@ -1 +0,0 @@
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/lib/Library.js DELETED
@@ -1,67 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
-
7
- var _promise = require('babel-runtime/core-js/promise');
8
-
9
- var _promise2 = _interopRequireDefault(_promise);
10
-
11
- var _assign = require('babel-runtime/core-js/object/assign');
12
-
13
- var _assign2 = _interopRequireDefault(_assign);
14
-
15
- var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
16
-
17
- var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
18
-
19
- var _createClass2 = require('babel-runtime/helpers/createClass');
20
-
21
- var _createClass3 = _interopRequireDefault(_createClass2);
22
-
23
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
24
-
25
- /* Library
26
- * Represents a version of a library contributed in the cloud.
27
- */
28
-
29
- var Library = function () {
30
- function Library(client, data) {
31
- (0, _classCallCheck3.default)(this, Library);
32
-
33
- // Make client non-enumerable so it doesn't show up in Object.keys, JSON.stringify, etc
34
- Object.defineProperty(this, 'client', { value: client });
35
- this._assignAttributes(data);
36
- this.downloadUrl = data.links && data.links.download;
37
- }
38
-
39
- (0, _createClass3.default)(Library, [{
40
- key: '_assignAttributes',
41
- value: function _assignAttributes(data) {
42
- (0, _assign2.default)(this, data.attributes);
43
- }
44
-
45
- /**
46
- * Download the compressed file containing the source code for this library version.
47
- * @return {Promise} Resolves to the .tar.gz compressed source code
48
- */
49
-
50
- }, {
51
- key: 'download',
52
- value: function download() {
53
- if (!this.downloadUrl) {
54
- return _promise2.default.reject(new Error('No download URL for this library'));
55
- }
56
- return this.client.downloadFile(this.downloadUrl);
57
- }
58
-
59
- /* TODO: add a versions() method to fetch an array of library objects */
60
-
61
- }]);
62
- return Library;
63
- }();
64
-
65
- exports.default = Library;
66
- module.exports = exports['default'];
67
- //# sourceMappingURL=Library.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/Library.js"],"names":["Library","client","data","Object","defineProperty","value","_assignAttributes","downloadUrl","links","download","attributes","reject","Error","downloadFile"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;IAIqBA,O;AACpB,kBAAYC,MAAZ,EAAoBC,IAApB,EAA0B;AAAA;;AACzB;AACAC,SAAOC,cAAP,CAAsB,IAAtB,EAA4B,QAA5B,EAAsC,EAAEC,OAAOJ,MAAT,EAAtC;AACA,OAAKK,iBAAL,CAAuBJ,IAAvB;AACA,OAAKK,WAAL,GAAmBL,KAAKM,KAAL,IAAcN,KAAKM,KAAL,CAAWC,QAA5C;AACA;;;;oCAEiBP,I,EAAM;AACvB,yBAAc,IAAd,EAAoBA,KAAKQ,UAAzB;AACA;;AAGD;;;;;;;6BAIW;AACV,OAAI,CAAC,KAAKH,WAAV,EAAuB;AACtB,WAAO,kBAAQI,MAAR,CAAe,IAAIC,KAAJ,CAAU,kCAAV,CAAf,CAAP;AACA;AACD,UAAO,KAAKX,MAAL,CAAYY,YAAZ,CAAyB,KAAKN,WAA9B,CAAP;AACA;;AAED;;;;;;kBAxBoBP,O","file":"Library.js","sourcesContent":["/* Library\n * Represents a version of a library contributed in the cloud.\n */\n\nexport default class Library {\n\tconstructor(client, data) {\n\t\t// Make client non-enumerable so it doesn't show up in Object.keys, JSON.stringify, etc\n\t\tObject.defineProperty(this, 'client', { value: client });\n\t\tthis._assignAttributes(data);\n\t\tthis.downloadUrl = data.links && data.links.download;\n\t}\n\n\t_assignAttributes(data) {\n\t\tObject.assign(this, data.attributes);\n\t}\n\n\n\t/**\n\t * Download the compressed file containing the source code for this library version.\n\t * @return {Promise} Resolves to the .tar.gz compressed source code\n\t */\n\tdownload() {\n\t\tif (!this.downloadUrl) {\n\t\t\treturn Promise.reject(new Error('No download URL for this library'));\n\t\t}\n\t\treturn this.client.downloadFile(this.downloadUrl);\n\t}\n\n\t/* TODO: add a versions() method to fetch an array of library objects */\n}\n"]}