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
package/lib/Client.js DELETED
@@ -1,312 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
-
7
- var _getIterator2 = require('babel-runtime/core-js/get-iterator');
8
-
9
- var _getIterator3 = _interopRequireDefault(_getIterator2);
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
- var _Particle = require('./Particle');
24
-
25
- var _Particle2 = _interopRequireDefault(_Particle);
26
-
27
- var _Library = require('./Library');
28
-
29
- var _Library2 = _interopRequireDefault(_Library);
30
-
31
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
32
-
33
- var Client = function () {
34
- function Client(_ref) {
35
- var auth = _ref.auth,
36
- _ref$api = _ref.api,
37
- api = _ref$api === undefined ? new _Particle2.default() : _ref$api;
38
- (0, _classCallCheck3.default)(this, Client);
39
-
40
- (0, _assign2.default)(this, { auth: auth, api: api });
41
- }
42
-
43
- (0, _createClass3.default)(Client, [{
44
- key: 'ready',
45
- value: function ready() {
46
- return Boolean(this.auth);
47
- }
48
-
49
- /**
50
- * Get firmware library objects
51
- * @param {Object} query The query parameters for libraries. See Particle.listLibraries
52
- * @returns {Promise} A promise
53
- */
54
-
55
- }, {
56
- key: 'libraries',
57
- value: function libraries() {
58
- var _this = this;
59
-
60
- var query = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
61
-
62
- return this.api.listLibraries((0, _assign2.default)({}, query, { auth: this.auth })).then(function (payload) {
63
- var libraries = payload.body.data || [];
64
- return libraries.map(function (l) {
65
- return new _Library2.default(_this, l);
66
- });
67
- });
68
- }
69
-
70
- /**
71
- * Get one firmware library object
72
- * @param {String} name Name of the library to fetch
73
- * @param {Object} query The query parameters for libraries. See Particle.getLibrary
74
- * @returns {Promise} A promise
75
- */
76
-
77
- }, {
78
- key: 'library',
79
- value: function library(name) {
80
- var _this2 = this;
81
-
82
- var query = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
83
-
84
- return this.api.getLibrary((0, _assign2.default)({}, query, { name: name, auth: this.auth })).then(function (payload) {
85
- var library = payload.body.data || {};
86
- return new _Library2.default(_this2, library);
87
- });
88
- }
89
-
90
- /**
91
- * Get list of library versions
92
- * @param {String} name Name of the library to fetch
93
- * @param {Object} query The query parameters for versions. See Particle.getLibraryVersions
94
- * @returns {Promise} A promise
95
- */
96
-
97
- }, {
98
- key: 'libraryVersions',
99
- value: function libraryVersions(name) {
100
- var _this3 = this;
101
-
102
- var query = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
103
-
104
- return this.api.getLibraryVersions((0, _assign2.default)({}, query, { name: name, auth: this.auth })).then(function (payload) {
105
- var libraries = payload.body.data || [];
106
- return libraries.map(function (l) {
107
- return new _Library2.default(_this3, l);
108
- });
109
- });
110
- }
111
-
112
- /**
113
- * Contribute a new library version
114
- * @param {Buffer} archive The compressed archive with the library source
115
- * @returns {Promise} A promise
116
- */
117
-
118
- }, {
119
- key: 'contributeLibrary',
120
- value: function contributeLibrary(archive) {
121
- var _this4 = this;
122
-
123
- return this.api.contributeLibrary({ archive: archive, auth: this.auth }).then(function (payload) {
124
- var library = payload.body.data || {};
125
- return new _Library2.default(_this4, library);
126
- }, function (error) {
127
- _this4._throwError(error);
128
- });
129
- }
130
-
131
- /**
132
- * Make the the most recent private library version public
133
- * @param {string} name The name of the library to publish
134
- * @return {Promise} To publish the library
135
- */
136
-
137
- }, {
138
- key: 'publishLibrary',
139
- value: function publishLibrary(name) {
140
- var _this5 = this;
141
-
142
- return this.api.publishLibrary({ name: name, auth: this.auth }).then(function (payload) {
143
- var library = payload.body.data || {};
144
- return new _Library2.default(_this5, library);
145
- }, function (error) {
146
- _this5._throwError(error);
147
- });
148
- }
149
-
150
- /**
151
- * Delete an entire published library
152
- * @param {String} $0.name Name of the library to delete
153
- * @param {String} $0.force Key to force deleting a public library
154
- * @returns {Promise} A promise
155
- */
156
-
157
- }, {
158
- key: 'deleteLibrary',
159
- value: function deleteLibrary(_ref2) {
160
- var _this6 = this;
161
-
162
- var name = _ref2.name,
163
- force = _ref2.force;
164
-
165
- return this.api.deleteLibrary({ name: name, force: force, auth: this.auth }).then(function () {
166
- return true;
167
- }, function (error) {
168
- return _this6._throwError(error);
169
- });
170
- }
171
- }, {
172
- key: '_throwError',
173
- value: function _throwError(error) {
174
- if (error.body && error.body.errors) {
175
- var errorMessages = error.body.errors.map(function (e) {
176
- return e.message;
177
- }).join('\n');
178
- throw new Error(errorMessages);
179
- }
180
- throw error;
181
- }
182
- }, {
183
- key: 'downloadFile',
184
- value: function downloadFile(uri) {
185
- return this.api.downloadFile({ uri: uri });
186
- }
187
-
188
- /**
189
- * @param {Object} files Object containing files to be compiled
190
- * @param {Number} platformId Platform id number of the device you are compiling for
191
- * @param {String} targetVersion System firmware version to compile against
192
- * @returns {Promise} A promise
193
- * @deprecated Will be removed in 6.5
194
- */
195
-
196
- }, {
197
- key: 'compileCode',
198
- value: function compileCode(files, platformId, targetVersion) {
199
- return this.api.compileCode({ files: files, platformId: platformId, targetVersion: targetVersion, auth: this.auth });
200
- }
201
-
202
- /**
203
- * @param {String} $0.deviceId Device ID or Name
204
- * @param {Boolean} $0.signal Signal on or off
205
- * @returns {Promise} A promise
206
- * @deprecated Will be removed in 6.5
207
- */
208
-
209
- }, {
210
- key: 'signalDevice',
211
- value: function signalDevice(_ref3) {
212
- var signal = _ref3.signal,
213
- deviceId = _ref3.deviceId;
214
-
215
- return this.api.signalDevice({ signal: signal, deviceId: deviceId, auth: this.auth });
216
- }
217
-
218
- /**
219
- * @returns {Promise} A promise
220
- * @deprecated Will be removed in 6.5
221
- */
222
-
223
- }, {
224
- key: 'listDevices',
225
- value: function listDevices() {
226
- return this.api.listDevices({ auth: this.auth });
227
- }
228
-
229
- /**
230
- * @returns {Promise} A promise
231
- * @deprecated Will be removed in 6.5
232
- */
233
-
234
- }, {
235
- key: 'listBuildTargets',
236
- value: function listBuildTargets() {
237
- return this.api.listBuildTargets({ onlyFeatured: true, auth: this.auth }).then(function (payload) {
238
- var targets = [];
239
- var _iteratorNormalCompletion = true;
240
- var _didIteratorError = false;
241
- var _iteratorError = undefined;
242
-
243
- try {
244
- for (var _iterator = (0, _getIterator3.default)(payload.body.targets), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
245
- var target = _step.value;
246
- var _iteratorNormalCompletion2 = true;
247
- var _didIteratorError2 = false;
248
- var _iteratorError2 = undefined;
249
-
250
- try {
251
- for (var _iterator2 = (0, _getIterator3.default)(target.platforms), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
252
- var platform = _step2.value;
253
-
254
- targets.push({
255
- version: target.version,
256
- platform: platform,
257
- prerelease: target.prereleases.indexOf(platform) > -1,
258
- firmware_vendor: target.firmware_vendor
259
- });
260
- }
261
- } catch (err) {
262
- _didIteratorError2 = true;
263
- _iteratorError2 = err;
264
- } finally {
265
- try {
266
- if (!_iteratorNormalCompletion2 && _iterator2.return) {
267
- _iterator2.return();
268
- }
269
- } finally {
270
- if (_didIteratorError2) {
271
- throw _iteratorError2;
272
- }
273
- }
274
- }
275
- }
276
- } catch (err) {
277
- _didIteratorError = true;
278
- _iteratorError = err;
279
- } finally {
280
- try {
281
- if (!_iteratorNormalCompletion && _iterator.return) {
282
- _iterator.return();
283
- }
284
- } finally {
285
- if (_didIteratorError) {
286
- throw _iteratorError;
287
- }
288
- }
289
- }
290
-
291
- return targets;
292
- }, function () {});
293
- }
294
- }, {
295
- key: 'trackingIdentity',
296
- value: function trackingIdentity() {
297
- var _ref4 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
298
- _ref4$full = _ref4.full,
299
- full = _ref4$full === undefined ? false : _ref4$full,
300
- context = _ref4.context;
301
-
302
- return this.api.trackingIdentity({ full: full, context: context, auth: this.auth }).then(function (payload) {
303
- return payload.body;
304
- });
305
- }
306
- }]);
307
- return Client;
308
- }();
309
-
310
- exports.default = Client;
311
- module.exports = exports['default'];
312
- //# sourceMappingURL=Client.js.map
package/lib/Client.js.map DELETED
@@ -1 +0,0 @@
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"]}
package/lib/Defaults.js DELETED
@@ -1,14 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = {
7
- baseUrl: 'https://api.particle.io',
8
- clientSecret: 'particle-api',
9
- clientId: 'particle-api',
10
- tokenDuration: 7776000, // 90 days
11
- auth: undefined
12
- };
13
- module.exports = exports['default'];
14
- //# sourceMappingURL=Defaults.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/Defaults.js"],"names":["baseUrl","clientSecret","clientId","tokenDuration","auth","undefined"],"mappings":";;;;;kBAAe;AACdA,UAAS,yBADK;AAEdC,eAAc,cAFA;AAGdC,WAAU,cAHI;AAIdC,gBAAe,OAJD,EAIU;AACxBC,OAAMC;AALQ,C","file":"Defaults.js","sourcesContent":["export default {\n\tbaseUrl: 'https://api.particle.io',\n\tclientSecret: 'particle-api',\n\tclientId: 'particle-api',\n\ttokenDuration: 7776000, // 90 days\n\tauth: undefined\n};\n"]}
@@ -1,335 +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 _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');
12
-
13
- var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);
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
- var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
24
-
25
- var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
26
-
27
- var _inherits2 = require('babel-runtime/helpers/inherits');
28
-
29
- var _inherits3 = _interopRequireDefault(_inherits2);
30
-
31
- var _http = require('http');
32
-
33
- var _http2 = _interopRequireDefault(_http);
34
-
35
- var _https = require('https');
36
-
37
- var _https2 = _interopRequireDefault(_https);
38
-
39
- var _url = require('url');
40
-
41
- var _url2 = _interopRequireDefault(_url);
42
-
43
- var _events = require('events');
44
-
45
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
46
-
47
- /* eslint max-depth: 0 */
48
- var EventStream = function (_EventEmitter) {
49
- (0, _inherits3.default)(EventStream, _EventEmitter);
50
-
51
- function EventStream(uri, token) {
52
- (0, _classCallCheck3.default)(this, EventStream);
53
-
54
- var _this = (0, _possibleConstructorReturn3.default)(this, (EventStream.__proto__ || (0, _getPrototypeOf2.default)(EventStream)).call(this));
55
-
56
- _this.uri = uri;
57
- _this.token = token;
58
- _this.reconnectInterval = 2000;
59
- _this.timeout = 13000; // keep alive can be sent up to 12 seconds after last event
60
- _this.data = '';
61
- _this.buf = '';
62
-
63
- _this.parse = _this.parse.bind(_this);
64
- _this.end = _this.end.bind(_this);
65
- _this.idleTimeoutExpired = _this.idleTimeoutExpired.bind(_this);
66
- return _this;
67
- }
68
-
69
- (0, _createClass3.default)(EventStream, [{
70
- key: 'connect',
71
- value: function connect() {
72
- var _this2 = this;
73
-
74
- return new _promise2.default(function (resolve, reject) {
75
- var _url$parse = _url2.default.parse(_this2.uri),
76
- hostname = _url$parse.hostname,
77
- protocol = _url$parse.protocol,
78
- port = _url$parse.port,
79
- path = _url$parse.path;
80
-
81
- _this2.origin = protocol + '//' + hostname + (port ? ':' + port : '');
82
-
83
- var isSecure = protocol === 'https:';
84
- var requestor = isSecure ? _https2.default : _http2.default;
85
- var req = requestor.request({
86
- hostname: hostname,
87
- protocol: protocol,
88
- path: path + '?access_token=' + _this2.token,
89
- method: 'get',
90
- port: parseInt(port, 10) || (isSecure ? 443 : 80),
91
- mode: 'prefer-streaming'
92
- });
93
-
94
- _this2.req = req;
95
-
96
- var connected = false;
97
- var connectionTimeout = setTimeout(function () {
98
- if (_this2.req) {
99
- _this2.req.abort();
100
- }
101
- reject({ error: new Error('Timeout'), errorDescription: 'Timeout connecting to ' + _this2.uri });
102
- }, _this2.timeout);
103
-
104
- req.on('error', function (e) {
105
- clearTimeout(connectionTimeout);
106
-
107
- if (connected) {
108
- _this2.end();
109
- } else {
110
- reject({ error: e, errorDescription: 'Network error from ' + _this2.uri });
111
- }
112
- });
113
-
114
- req.on('response', function (res) {
115
- clearTimeout(connectionTimeout);
116
-
117
- var statusCode = res.statusCode;
118
- if (statusCode !== 200) {
119
- var body = '';
120
- res.on('data', function (chunk) {
121
- return body += chunk;
122
- });
123
- res.on('end', function () {
124
- try {
125
- body = JSON.parse(body);
126
- } catch (e) {
127
- // don't bother doing anything special if the JSON.parse fails
128
- // since we are already about to reject the promise anyway
129
- } finally {
130
- var errorDescription = 'HTTP error ' + statusCode + ' from ' + _this2.uri;
131
- if (body && body.error_description) {
132
- errorDescription += ' - ' + body.error_description;
133
- }
134
- reject({ statusCode: statusCode, errorDescription: errorDescription, body: body });
135
- _this2.req = undefined;
136
- }
137
- });
138
- return;
139
- }
140
-
141
- _this2.data = '';
142
- _this2.buf = '';
143
-
144
- connected = true;
145
- res.on('data', _this2.parse);
146
- res.once('end', _this2.end);
147
- _this2.startIdleTimeout();
148
- resolve(_this2);
149
- });
150
- req.end();
151
- });
152
- }
153
- }, {
154
- key: 'abort',
155
- value: function abort() {
156
- if (this.req) {
157
- this.req.abort();
158
- this.req = undefined;
159
- }
160
- this.removeAllListeners();
161
- }
162
-
163
- /* Private methods */
164
-
165
- }, {
166
- key: 'emitSafe',
167
- value: function emitSafe(event, param) {
168
- try {
169
- this.emit(event, param);
170
- } catch (error) {
171
- if (event !== 'error') {
172
- this.emitSafe('error', error);
173
- }
174
- }
175
- }
176
- }, {
177
- key: 'end',
178
- value: function end() {
179
- this.stopIdleTimeout();
180
-
181
- if (!this.req) {
182
- // request was ended intentionally by abort
183
- // do not auto reconnect.
184
- return;
185
- }
186
-
187
- this.req = undefined;
188
- this.emitSafe('disconnect');
189
- this.reconnect();
190
- }
191
- }, {
192
- key: 'reconnect',
193
- value: function reconnect() {
194
- var _this3 = this;
195
-
196
- setTimeout(function () {
197
- if (_this3.isOffline()) {
198
- _this3.reconnect();
199
- return;
200
- }
201
-
202
- _this3.emitSafe('reconnect');
203
- _this3.connect().then(function () {
204
- _this3.emitSafe('reconnect-success');
205
- }).catch(function (err) {
206
- _this3.emitSafe('reconnect-error', err);
207
- _this3.reconnect();
208
- });
209
- }, this.reconnectInterval);
210
- }
211
- }, {
212
- key: 'isOffline',
213
- value: function isOffline() {
214
- if (typeof navigator === 'undefined' || navigator.hasOwnProperty('onLine')) {
215
- return false;
216
- }
217
- return !navigator.onLine;
218
- }
219
- }, {
220
- key: 'startIdleTimeout',
221
- value: function startIdleTimeout() {
222
- this.stopIdleTimeout();
223
- this.idleTimeout = setTimeout(this.idleTimeoutExpired, this.timeout);
224
- }
225
- }, {
226
- key: 'stopIdleTimeout',
227
- value: function stopIdleTimeout() {
228
- if (this.idleTimeout) {
229
- clearTimeout(this.idleTimeout);
230
- this.idleTimeout = null;
231
- }
232
- }
233
- }, {
234
- key: 'idleTimeoutExpired',
235
- value: function idleTimeoutExpired() {
236
- if (this.req) {
237
- this.req.abort();
238
- this.end();
239
- }
240
- }
241
- }, {
242
- key: 'parse',
243
- value: function parse(chunk) {
244
- this.startIdleTimeout();
245
-
246
- this.buf += chunk;
247
- var pos = 0;
248
- var length = this.buf.length;
249
- var discardTrailingNewline = false;
250
-
251
- while (pos < length) {
252
- if (discardTrailingNewline) {
253
- if (this.buf[pos] === '\n') {
254
- ++pos;
255
- }
256
- discardTrailingNewline = false;
257
- }
258
-
259
- var lineLength = -1;
260
- var fieldLength = -1;
261
-
262
- for (var i = pos; lineLength < 0 && i < length; ++i) {
263
- var c = this.buf[i];
264
- if (c === ':') {
265
- if (fieldLength < 0) {
266
- fieldLength = i - pos;
267
- }
268
- } else if (c === '\r') {
269
- discardTrailingNewline = true;
270
- lineLength = i - pos;
271
- } else if (c === '\n') {
272
- lineLength = i - pos;
273
- }
274
- }
275
-
276
- if (lineLength < 0) {
277
- break;
278
- }
279
-
280
- this.parseEventStreamLine(pos, fieldLength, lineLength);
281
-
282
- pos += lineLength + 1;
283
- }
284
-
285
- if (pos === length) {
286
- this.buf = '';
287
- } else if (pos > 0) {
288
- this.buf = this.buf.slice(pos);
289
- }
290
- }
291
- }, {
292
- key: 'parseEventStreamLine',
293
- value: function parseEventStreamLine(pos, fieldLength, lineLength) {
294
- if (lineLength === 0) {
295
- try {
296
- if (this.data.length > 0 && this.event) {
297
- var event = JSON.parse(this.data);
298
- event.name = this.eventName || '';
299
- this.emitSafe('event', event);
300
- }
301
- } catch (e) {
302
- // do nothing if JSON.parse fails
303
- } finally {
304
- this.data = '';
305
- this.eventName = undefined;
306
- this.event = false;
307
- }
308
- } else if (fieldLength > 0) {
309
- var field = this.buf.slice(pos, pos + fieldLength);
310
- var step = 0;
311
-
312
- if (this.buf[pos + fieldLength + 1] !== ' ') {
313
- step = fieldLength + 1;
314
- } else {
315
- step = fieldLength + 2;
316
- }
317
- pos += step;
318
- var valueLength = lineLength - step;
319
- var value = this.buf.slice(pos, pos + valueLength);
320
-
321
- if (field === 'data') {
322
- this.data += value + '\n';
323
- } else if (field === 'event') {
324
- this.eventName = value;
325
- this.event = true;
326
- }
327
- }
328
- }
329
- }]);
330
- return EventStream;
331
- }(_events.EventEmitter);
332
-
333
- exports.default = EventStream;
334
- module.exports = exports['default'];
335
- //# sourceMappingURL=EventStream.js.map