particle-api-js 11.1.7 → 12.0.1

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 (85) hide show
  1. package/README.md +90 -10
  2. package/dist/particle.min.js +1 -1
  3. package/dist/particle.min.js.map +1 -1
  4. package/fs.d.ts +2 -0
  5. package/lib/fs.d.ts +2 -0
  6. package/lib/fs.js +3 -0
  7. package/lib/package.json +110 -0
  8. package/lib/src/Agent.d.ts +40 -0
  9. package/lib/src/Agent.d.ts.map +1 -0
  10. package/lib/src/Agent.js +233 -0
  11. package/lib/src/Agent.js.map +1 -0
  12. package/lib/src/Client.d.ts +80 -0
  13. package/lib/src/Client.d.ts.map +1 -0
  14. package/lib/src/Client.js +104 -0
  15. package/lib/src/Client.js.map +1 -0
  16. package/lib/src/Defaults.d.ts +6 -0
  17. package/lib/src/Defaults.d.ts.map +1 -0
  18. package/lib/src/Defaults.js +12 -0
  19. package/lib/src/Defaults.js.map +1 -0
  20. package/lib/src/EventStream.d.ts +31 -0
  21. package/lib/src/EventStream.d.ts.map +1 -0
  22. package/lib/src/EventStream.js +275 -0
  23. package/lib/src/EventStream.js.map +1 -0
  24. package/lib/src/Library.d.ts +33 -0
  25. package/lib/src/Library.d.ts.map +1 -0
  26. package/lib/src/Library.js +19 -0
  27. package/lib/src/Library.js.map +1 -0
  28. package/{src/Particle.js → lib/src/Particle.d.ts} +623 -1779
  29. package/lib/src/Particle.d.ts.map +1 -0
  30. package/lib/src/Particle.js +2578 -0
  31. package/lib/src/Particle.js.map +1 -0
  32. package/lib/src/types/common.d.ts +73 -0
  33. package/lib/src/types/common.d.ts.map +1 -0
  34. package/lib/src/types/common.js +3 -0
  35. package/lib/src/types/common.js.map +1 -0
  36. package/lib/src/types/index.d.ts +4 -0
  37. package/lib/src/types/index.d.ts.map +1 -0
  38. package/lib/src/types/index.js +20 -0
  39. package/lib/src/types/index.js.map +1 -0
  40. package/lib/src/types/requests.d.ts +568 -0
  41. package/lib/src/types/requests.d.ts.map +1 -0
  42. package/lib/src/types/requests.js +3 -0
  43. package/lib/src/types/requests.js.map +1 -0
  44. package/lib/src/types/responses.d.ts +449 -0
  45. package/lib/src/types/responses.d.ts.map +1 -0
  46. package/lib/src/types/responses.js +3 -0
  47. package/lib/src/types/responses.js.map +1 -0
  48. package/package.json +35 -14
  49. package/scripts/postprocess-docs.js +306 -0
  50. package/typedoc.json +20 -0
  51. package/.circleci/config.yml +0 -104
  52. package/.nvmrc +0 -1
  53. package/CHANGELOG.md +0 -404
  54. package/EventStream-e2e-browser.html +0 -39
  55. package/EventStream-e2e-node.js +0 -34
  56. package/RELEASE.md +0 -12
  57. package/bower.json +0 -30
  58. package/docs/api.md +0 -2594
  59. package/eslint.config.mjs +0 -7
  60. package/examples/login/login.html +0 -17
  61. package/karma.conf.js +0 -80
  62. package/src/Agent.js +0 -397
  63. package/src/Client.js +0 -171
  64. package/src/Defaults.js +0 -8
  65. package/src/EventStream.js +0 -269
  66. package/src/Library.js +0 -33
  67. package/test/Agent.integration.js +0 -23
  68. package/test/Agent.spec.js +0 -488
  69. package/test/Client.spec.js +0 -216
  70. package/test/Defaults.spec.js +0 -30
  71. package/test/EventStream.feature +0 -65
  72. package/test/EventStream.spec.js +0 -263
  73. package/test/FakeAgent.js +0 -27
  74. package/test/Library.spec.js +0 -40
  75. package/test/Particle.integration.js +0 -38
  76. package/test/Particle.spec.js +0 -3198
  77. package/test/fixtures/index.js +0 -15
  78. package/test/fixtures/libraries.json +0 -33
  79. package/test/fixtures/library.json +0 -31
  80. package/test/fixtures/libraryVersions.json +0 -211
  81. package/test/out.tmp +0 -0
  82. package/test/support/FixtureHttpServer.js +0 -28
  83. package/test/test-setup.js +0 -17
  84. package/tsconfig.json +0 -17
  85. package/webpack.config.js +0 -46
@@ -0,0 +1,31 @@
1
+ import * as http from 'http';
2
+ import { EventEmitter } from 'events';
3
+ type HttpAgent = http.Agent;
4
+ declare class EventStream extends EventEmitter {
5
+ uri: string;
6
+ token: string;
7
+ reconnectInterval: number;
8
+ timeout: number;
9
+ data: string;
10
+ buf: string;
11
+ origin?: string;
12
+ req?: http.ClientRequest;
13
+ idleTimeout?: ReturnType<typeof setTimeout> | null;
14
+ event?: boolean;
15
+ eventName?: string;
16
+ httpAgent?: HttpAgent;
17
+ constructor(uri?: string, token?: string, httpAgent?: HttpAgent);
18
+ connect(): Promise<EventStream>;
19
+ abort(): void;
20
+ private emitSafe;
21
+ private end;
22
+ private reconnect;
23
+ private isOffline;
24
+ private startIdleTimeout;
25
+ private stopIdleTimeout;
26
+ private idleTimeoutExpired;
27
+ parse(chunk: Buffer | string): void;
28
+ parseEventStreamLine(pos: number, fieldLength: number, lineLength: number): void;
29
+ }
30
+ export = EventStream;
31
+ //# sourceMappingURL=EventStream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventStream.d.ts","sourceRoot":"","sources":["../../src/EventStream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAG7B,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAGtC,KAAK,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;AAE5B,cAAM,WAAY,SAAQ,YAAY;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC;IACzB,WAAW,CAAC,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,GAAG,IAAI,CAAC;IACnD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,SAAS,CAAC;gBAEV,GAAG,SAAK,EAAE,KAAK,SAAK,EAAE,SAAS,CAAC,EAAE,SAAS;IAevD,OAAO,IAAI,OAAO,CAAC,WAAW,CAAC;IAkF/B,KAAK,IAAI,IAAI;IAQb,OAAO,CAAC,QAAQ;IAUhB,OAAO,CAAC,GAAG;IAYX,OAAO,CAAC,SAAS;IAiBjB,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,kBAAkB;IAO1B,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAiDnC,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;CAoChF;AAED,SAAS,WAAW,CAAC"}
@@ -0,0 +1,275 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ const http = __importStar(require("http"));
36
+ const https = __importStar(require("https"));
37
+ const url = __importStar(require("url"));
38
+ const events_1 = require("events");
39
+ class EventStream extends events_1.EventEmitter {
40
+ constructor(uri = '', token = '', httpAgent) {
41
+ super();
42
+ this.uri = uri;
43
+ this.token = token;
44
+ this.httpAgent = httpAgent;
45
+ this.reconnectInterval = 2000;
46
+ this.timeout = 13000;
47
+ this.data = '';
48
+ this.buf = '';
49
+ this.parse = this.parse.bind(this);
50
+ this.end = this.end.bind(this);
51
+ this.idleTimeoutExpired = this.idleTimeoutExpired.bind(this);
52
+ }
53
+ connect() {
54
+ return new Promise((resolve, reject) => {
55
+ const parsed = url.parse(this.uri);
56
+ const { hostname, protocol, port, path } = parsed;
57
+ this.origin = `${protocol}//${hostname}${port ? (':' + port) : ''}`;
58
+ const isSecure = protocol === 'https:';
59
+ const requestor = isSecure ? https : http;
60
+ const nonce = typeof performance !== 'undefined' ? performance.now() : 0;
61
+ const requestOptions = {
62
+ hostname,
63
+ protocol,
64
+ path: `${path}?nonce=${nonce}`,
65
+ headers: {
66
+ 'Authorization': `Bearer ${this.token}`
67
+ },
68
+ method: 'get',
69
+ port: parseInt(port !== null && port !== void 0 ? port : '', 10) || (isSecure ? 443 : 80),
70
+ mode: 'prefer-streaming'
71
+ };
72
+ if (this.httpAgent) {
73
+ requestOptions.agent = this.httpAgent;
74
+ }
75
+ const req = requestor.request(requestOptions);
76
+ this.req = req;
77
+ let connected = false;
78
+ const connectionTimeout = setTimeout(() => {
79
+ if (this.req) {
80
+ this.req.destroy();
81
+ }
82
+ reject({ error: new Error('Timeout'), errorDescription: `Timeout connecting to ${this.uri}` });
83
+ }, this.timeout);
84
+ req.on('error', (e) => {
85
+ clearTimeout(connectionTimeout);
86
+ if (connected) {
87
+ this.end();
88
+ }
89
+ else {
90
+ reject({ error: e, errorDescription: `Network error from ${this.uri}` });
91
+ }
92
+ });
93
+ req.on('response', (res) => {
94
+ clearTimeout(connectionTimeout);
95
+ const statusCode = res.statusCode;
96
+ if (statusCode !== 200) {
97
+ let body = '';
98
+ res.on('data', (chunk) => body += chunk.toString());
99
+ res.on('end', () => {
100
+ try {
101
+ body = JSON.parse(body);
102
+ }
103
+ catch (_err) {
104
+ // ignore
105
+ }
106
+ finally {
107
+ let errorDescription = `HTTP error ${statusCode} from ${this.uri}`;
108
+ if (body && typeof body === 'object' && 'error_description' in body) {
109
+ errorDescription += ' - ' + body.error_description;
110
+ }
111
+ reject({ statusCode, errorDescription, body });
112
+ this.req = undefined;
113
+ }
114
+ });
115
+ return;
116
+ }
117
+ this.data = '';
118
+ this.buf = '';
119
+ connected = true;
120
+ res.on('data', this.parse);
121
+ res.once('end', this.end);
122
+ this.startIdleTimeout();
123
+ resolve(this);
124
+ });
125
+ req.end();
126
+ });
127
+ }
128
+ abort() {
129
+ if (this.req) {
130
+ this.req.destroy();
131
+ this.req = undefined;
132
+ }
133
+ this.removeAllListeners();
134
+ }
135
+ emitSafe(event, param) {
136
+ try {
137
+ this.emit(event, param);
138
+ }
139
+ catch (error) {
140
+ if (event !== 'error') {
141
+ this.emitSafe('error', error);
142
+ }
143
+ }
144
+ }
145
+ end() {
146
+ this.stopIdleTimeout();
147
+ if (!this.req) {
148
+ return;
149
+ }
150
+ this.req = undefined;
151
+ this.emitSafe('disconnect');
152
+ this.reconnect();
153
+ }
154
+ reconnect() {
155
+ setTimeout(() => {
156
+ if (this.isOffline()) {
157
+ this.reconnect();
158
+ return;
159
+ }
160
+ this.emitSafe('reconnect');
161
+ this.connect().then(() => {
162
+ this.emitSafe('reconnect-success');
163
+ }).catch((err) => {
164
+ this.emitSafe('reconnect-error', err);
165
+ this.reconnect();
166
+ });
167
+ }, this.reconnectInterval);
168
+ }
169
+ isOffline() {
170
+ if (typeof navigator === 'undefined' || Object.hasOwnProperty.call(navigator, 'onLine')) {
171
+ return false;
172
+ }
173
+ return !navigator.onLine;
174
+ }
175
+ startIdleTimeout() {
176
+ this.stopIdleTimeout();
177
+ this.idleTimeout = setTimeout(this.idleTimeoutExpired, this.timeout);
178
+ }
179
+ stopIdleTimeout() {
180
+ if (this.idleTimeout) {
181
+ clearTimeout(this.idleTimeout);
182
+ this.idleTimeout = null;
183
+ }
184
+ }
185
+ idleTimeoutExpired() {
186
+ if (this.req) {
187
+ this.req.destroy();
188
+ this.end();
189
+ }
190
+ }
191
+ parse(chunk) {
192
+ this.startIdleTimeout();
193
+ this.buf += chunk.toString();
194
+ let pos = 0;
195
+ const length = this.buf.length;
196
+ let discardTrailingNewline = false;
197
+ while (pos < length) {
198
+ if (discardTrailingNewline) {
199
+ if (this.buf[pos] === '\n') {
200
+ ++pos;
201
+ }
202
+ discardTrailingNewline = false;
203
+ }
204
+ let lineLength = -1;
205
+ let fieldLength = -1;
206
+ for (let i = pos; lineLength < 0 && i < length; ++i) {
207
+ const c = this.buf[i];
208
+ if (c === ':') {
209
+ if (fieldLength < 0) {
210
+ fieldLength = i - pos;
211
+ }
212
+ }
213
+ else if (c === '\r') {
214
+ discardTrailingNewline = true;
215
+ lineLength = i - pos;
216
+ }
217
+ else if (c === '\n') {
218
+ lineLength = i - pos;
219
+ }
220
+ }
221
+ if (lineLength < 0) {
222
+ break;
223
+ }
224
+ this.parseEventStreamLine(pos, fieldLength, lineLength);
225
+ pos += lineLength + 1;
226
+ }
227
+ if (pos === length) {
228
+ this.buf = '';
229
+ }
230
+ else if (pos > 0) {
231
+ this.buf = this.buf.slice(pos);
232
+ }
233
+ }
234
+ parseEventStreamLine(pos, fieldLength, lineLength) {
235
+ if (lineLength === 0) {
236
+ try {
237
+ if (this.data.length > 0 && this.event) {
238
+ const event = JSON.parse(this.data);
239
+ event.name = this.eventName || '';
240
+ this.emitSafe('event', event);
241
+ }
242
+ }
243
+ catch (_err) {
244
+ // ignore
245
+ }
246
+ finally {
247
+ this.data = '';
248
+ this.eventName = undefined;
249
+ this.event = false;
250
+ }
251
+ }
252
+ else if (fieldLength > 0) {
253
+ const field = this.buf.slice(pos, pos + fieldLength);
254
+ let step = 0;
255
+ if (this.buf[pos + fieldLength + 1] !== ' ') {
256
+ step = fieldLength + 1;
257
+ }
258
+ else {
259
+ step = fieldLength + 2;
260
+ }
261
+ pos += step;
262
+ const valueLength = lineLength - step;
263
+ const value = this.buf.slice(pos, pos + valueLength);
264
+ if (field === 'data') {
265
+ this.data += value + '\n';
266
+ }
267
+ else if (field === 'event') {
268
+ this.eventName = value;
269
+ this.event = true;
270
+ }
271
+ }
272
+ }
273
+ }
274
+ module.exports = EventStream;
275
+ //# sourceMappingURL=EventStream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventStream.js","sourceRoot":"","sources":["../../src/EventStream.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import type { LibraryAttributes } from './types';
2
+ interface LibraryApiData {
3
+ attributes: LibraryAttributes;
4
+ links?: {
5
+ download?: string;
6
+ };
7
+ }
8
+ interface LibraryClientInterface {
9
+ downloadFile(uri: string): Promise<Buffer>;
10
+ }
11
+ declare class Library {
12
+ client: LibraryClientInterface;
13
+ downloadUrl: string | undefined;
14
+ name?: string;
15
+ version?: string;
16
+ author?: string;
17
+ sentence?: string;
18
+ paragraph?: string;
19
+ url?: string;
20
+ repository?: string;
21
+ architectures?: string[];
22
+ visibility?: string;
23
+ mine?: boolean;
24
+ constructor(client: LibraryClientInterface, data: LibraryApiData);
25
+ _assignAttributes(data: LibraryApiData): void;
26
+ download(): Promise<Buffer>;
27
+ }
28
+ declare namespace Library {
29
+ type ApiData = LibraryApiData;
30
+ type ClientInterface = LibraryClientInterface;
31
+ }
32
+ export = Library;
33
+ //# sourceMappingURL=Library.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Library.d.ts","sourceRoot":"","sources":["../../src/Library.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEjD,UAAU,cAAc;IACvB,UAAU,EAAE,iBAAiB,CAAC;IAC9B,KAAK,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC9B;AAED,UAAU,sBAAsB;IAC/B,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC3C;AAED,cAAM,OAAO;IACZ,MAAM,EAAG,sBAAsB,CAAC;IAChC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;gBAEH,MAAM,EAAE,sBAAsB,EAAE,IAAI,EAAE,cAAc;IAMhE,iBAAiB,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;IAI7C,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC;CAM3B;AAED,kBAAU,OAAO,CAAC;IACjB,KAAY,OAAO,GAAG,cAAc,CAAC;IACrC,KAAY,eAAe,GAAG,sBAAsB,CAAC;CACrD;AAED,SAAS,OAAO,CAAC"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ class Library {
3
+ constructor(client, data) {
4
+ Object.defineProperty(this, 'client', { value: client });
5
+ this._assignAttributes(data);
6
+ this.downloadUrl = data.links && data.links.download;
7
+ }
8
+ _assignAttributes(data) {
9
+ Object.assign(this, data.attributes);
10
+ }
11
+ download() {
12
+ if (!this.downloadUrl) {
13
+ return Promise.reject(new Error('No download URL for this library'));
14
+ }
15
+ return this.client.downloadFile(this.downloadUrl);
16
+ }
17
+ }
18
+ module.exports = Library;
19
+ //# sourceMappingURL=Library.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Library.js","sourceRoot":"","sources":["../../src/Library.ts"],"names":[],"mappings":";AAWA,MAAM,OAAO;IAcZ,YAAY,MAA8B,EAAE,IAAoB;QAC/D,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QACzD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;IACtD,CAAC;IAED,iBAAiB,CAAC,IAAoB;QACrC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACtC,CAAC;IAED,QAAQ;QACP,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACvB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC,CAAC;QACtE,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACnD,CAAC;CACD;AAOD,iBAAS,OAAO,CAAC"}