@nymphjs/client 1.0.0-beta.13 → 1.0.0-beta.131

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 (73) hide show
  1. package/CHANGELOG.md +552 -0
  2. package/README.md +12 -8
  3. package/asyncitertest.js +53 -0
  4. package/dist/Entity.d.ts +158 -0
  5. package/dist/Entity.js +643 -0
  6. package/dist/Entity.js.map +1 -0
  7. package/dist/Entity.types.d.ts +216 -0
  8. package/dist/Entity.types.js +2 -0
  9. package/{lib → dist}/EntityWeakCache.d.ts +1 -1
  10. package/{lib → dist}/EntityWeakCache.js +5 -9
  11. package/dist/EntityWeakCache.js.map +1 -0
  12. package/{lib → dist}/HttpRequester.d.ts +18 -4
  13. package/dist/HttpRequester.js +365 -0
  14. package/dist/HttpRequester.js.map +1 -0
  15. package/{lib → dist}/Nymph.d.ts +48 -11
  16. package/{lib → dist}/Nymph.js +172 -56
  17. package/dist/Nymph.js.map +1 -0
  18. package/dist/Nymph.types.d.ts +227 -0
  19. package/dist/Nymph.types.js +45 -0
  20. package/dist/Nymph.types.js.map +1 -0
  21. package/{lib → dist}/PubSub.d.ts +16 -10
  22. package/{lib → dist}/PubSub.js +207 -135
  23. package/dist/PubSub.js.map +1 -0
  24. package/{lib → dist}/PubSub.types.d.ts +19 -6
  25. package/dist/PubSub.types.js +2 -0
  26. package/{lib → dist}/entityRefresh.d.ts +1 -1
  27. package/{lib → dist}/entityRefresh.js +21 -13
  28. package/dist/entityRefresh.js.map +1 -0
  29. package/dist/index.d.ts +13 -0
  30. package/dist/index.js +13 -2
  31. package/dist/index.js.map +1 -1
  32. package/{lib → dist}/utils.d.ts +2 -1
  33. package/dist/utils.js +145 -0
  34. package/dist/utils.js.map +1 -0
  35. package/jest.config.js +31 -5
  36. package/package.json +36 -32
  37. package/src/Entity.ts +361 -247
  38. package/src/Entity.types.ts +37 -57
  39. package/src/EntityWeakCache.ts +8 -6
  40. package/src/HttpRequester.ts +268 -31
  41. package/src/Nymph.ts +203 -96
  42. package/src/Nymph.types.ts +98 -2
  43. package/src/PubSub.ts +264 -181
  44. package/src/PubSub.types.ts +33 -19
  45. package/src/entityRefresh.ts +6 -6
  46. package/src/index.ts +10 -10
  47. package/src/utils.ts +67 -14
  48. package/tsconfig.json +7 -4
  49. package/typedoc.json +4 -0
  50. package/dist/index.js.LICENSE.txt +0 -8
  51. package/lib/Entity.d.ts +0 -51
  52. package/lib/Entity.js +0 -500
  53. package/lib/Entity.js.map +0 -1
  54. package/lib/Entity.types.d.ts +0 -65
  55. package/lib/Entity.types.js +0 -3
  56. package/lib/EntityWeakCache.js.map +0 -1
  57. package/lib/HttpRequester.js +0 -190
  58. package/lib/HttpRequester.js.map +0 -1
  59. package/lib/Nymph.js.map +0 -1
  60. package/lib/Nymph.types.d.ts +0 -98
  61. package/lib/Nymph.types.js +0 -3
  62. package/lib/Nymph.types.js.map +0 -1
  63. package/lib/PubSub.js.map +0 -1
  64. package/lib/PubSub.types.js +0 -3
  65. package/lib/entityRefresh.js.map +0 -1
  66. package/lib/index.d.ts +0 -13
  67. package/lib/index.js +0 -34
  68. package/lib/index.js.map +0 -1
  69. package/lib/utils.js +0 -86
  70. package/lib/utils.js.map +0 -1
  71. package/webpack.config.js +0 -28
  72. /package/{lib → dist}/Entity.types.js.map +0 -0
  73. /package/{lib → dist}/PubSub.types.js.map +0 -0
@@ -1,18 +1,23 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PubSubSubscription = void 0;
4
- const Nymph_1 = require("./Nymph");
5
- const utils_1 = require("./utils");
6
- let authToken = null;
7
- class PubSub {
1
+ import { InvalidRequestError } from './Nymph.js';
2
+ import { entityConstructorsToClassNames, entitiesToReferences, } from './utils.js';
3
+ import { ClientError } from './HttpRequester.js';
4
+ export default class PubSub {
5
+ nymph;
6
+ authToken = null;
7
+ switchToken = null;
8
+ connection;
9
+ waitForConnectionTimeout;
10
+ pubsubUrl;
11
+ WebSocket;
12
+ subscriptions = {
13
+ queries: {},
14
+ uids: {},
15
+ };
16
+ connectCallbacks = [];
17
+ disconnectCallbacks = [];
18
+ errorCallbacks = [];
19
+ noConsole = false;
8
20
  constructor(nymphOptions, nymph) {
9
- this.subscriptions = {
10
- queries: {},
11
- uids: {},
12
- };
13
- this.connectCallbacks = [];
14
- this.disconnectCallbacks = [];
15
- this.noConsole = false;
16
21
  this.nymph = nymph;
17
22
  this.nymph.pubsub = this;
18
23
  this.pubsubUrl = nymphOptions.pubsubUrl;
@@ -30,15 +35,17 @@ class PubSub {
30
35
  }
31
36
  }
32
37
  subscribeEntities(options, ...selectors) {
33
- const promise = this.nymph.getEntities(options, ...selectors);
34
38
  const query = [
35
- (0, utils_1.entityConstructorsToClassNames)(options),
36
- ...(0, utils_1.entityConstructorsToClassNames)(selectors),
39
+ entityConstructorsToClassNames(options),
40
+ ...entityConstructorsToClassNames(entitiesToReferences(selectors)),
37
41
  ];
38
42
  const jsonQuery = JSON.stringify(query);
39
43
  const subscribe = (resolve, reject, count) => {
40
44
  const callbacks = [resolve, reject, count];
41
- promise.then(resolve, reject);
45
+ if (!this.isConnection()) {
46
+ // Fall back to a regular query if we're not connected.
47
+ this.nymph.getEntities(options, ...selectors).then(resolve, reject);
48
+ }
42
49
  this._subscribeQuery(jsonQuery, callbacks);
43
50
  return new PubSubSubscription(jsonQuery, callbacks, () => {
44
51
  this._unsubscribeQuery(jsonQuery, callbacks);
@@ -47,10 +54,9 @@ class PubSub {
47
54
  return subscribe;
48
55
  }
49
56
  subscribeEntity(options, ...selectors) {
50
- const promise = this.nymph.getEntity(options, ...selectors);
51
57
  const query = [
52
- { ...(0, utils_1.entityConstructorsToClassNames)(options), limit: 1 },
53
- ...(0, utils_1.entityConstructorsToClassNames)(selectors),
58
+ { ...entityConstructorsToClassNames(options), limit: 1 },
59
+ ...entityConstructorsToClassNames(entitiesToReferences(selectors)),
54
60
  ];
55
61
  const jsonQuery = JSON.stringify(query);
56
62
  const subscribe = (resolve, reject, count) => {
@@ -67,7 +73,10 @@ class PubSub {
67
73
  }
68
74
  };
69
75
  const callbacks = [newResolve, reject, count];
70
- promise.then(resolve, reject);
76
+ if (!this.isConnection()) {
77
+ // Fall back to a regular query if we're not connected.
78
+ this.nymph.getEntity(options, ...selectors).then(resolve, reject);
79
+ }
71
80
  this._subscribeQuery(jsonQuery, callbacks);
72
81
  return new PubSubSubscription(jsonQuery, callbacks, () => {
73
82
  this._unsubscribeQuery(jsonQuery, callbacks);
@@ -76,10 +85,12 @@ class PubSub {
76
85
  return subscribe;
77
86
  }
78
87
  subscribeUID(name) {
79
- const promise = this.nymph.getUID(name);
80
88
  const subscribe = (resolve, reject, count) => {
81
89
  const callbacks = [resolve, reject, count];
82
- promise.then(resolve, reject);
90
+ if (!this.isConnection()) {
91
+ // Fall back to a regular query if we're not connected.
92
+ this.nymph.getUID(name).then(resolve, reject);
93
+ }
83
94
  this._subscribeUID(name, callbacks);
84
95
  return {
85
96
  unsubscribe: () => {
@@ -91,27 +102,33 @@ class PubSub {
91
102
  }
92
103
  subscribeWith(entity, resolve, reject, count) {
93
104
  if (!entity.guid) {
94
- throw new Nymph_1.InvalidRequestError("You can't subscribe to an entity with no GUID.");
105
+ throw new InvalidRequestError("You can't subscribe to an entity with no GUID.");
95
106
  }
96
107
  const query = [
97
- { class: entity.constructor.class, limit: 1 },
108
+ { class: entityConstructorsToClassNames(entity.constructor), limit: 1 },
98
109
  { type: '&', guid: entity.guid },
99
110
  ];
100
111
  const jsonQuery = JSON.stringify(query);
101
112
  const newResolve = (args) => {
102
113
  if (Array.isArray(args)) {
103
- if (args[0].length) {
104
- entity.$init(args[0]);
114
+ if (args.length) {
115
+ entity.$init(args[0].toJSON());
105
116
  }
106
117
  else {
107
118
  entity.guid = null;
108
119
  }
109
120
  }
110
- else if ('removed' in args) {
111
- entity.guid = null;
112
- }
113
121
  else {
114
- entity.$init(args.data);
122
+ let update = args;
123
+ if ('multiple' in args && args.multiple) {
124
+ update = args.messages.pop();
125
+ }
126
+ if ('removed' in update) {
127
+ entity.guid = null;
128
+ }
129
+ else {
130
+ entity.$init(update.data);
131
+ }
115
132
  }
116
133
  if (resolve) {
117
134
  resolve(entity);
@@ -124,6 +141,7 @@ class PubSub {
124
141
  });
125
142
  }
126
143
  connect() {
144
+ // Are we already connected?
127
145
  if (this.connection &&
128
146
  (this.connection.readyState === this.WebSocket.OPEN ||
129
147
  this.connection.readyState === this.WebSocket.CONNECTING)) {
@@ -139,28 +157,32 @@ class PubSub {
139
157
  if (!this.connection) {
140
158
  return;
141
159
  }
142
- this.connection.close(4200, 'Closure requested by application.');
160
+ this.connection.close(1000, 'Closure requested by application.');
143
161
  }
144
- _waitForConnection(attempts = 0) {
162
+ _waitForConnection(attempts = 1) {
163
+ // Wait 5 seconds, then check and attempt connection again if unsuccessful.
164
+ // Keep repeating, adding attempts^2*5 seconds each time to a max of ten
165
+ // minutes, until successful.
145
166
  this.waitForConnectionTimeout = setTimeout(() => {
146
- if (this.connection &&
147
- this.connection.readyState !== this.WebSocket.OPEN) {
148
- if (this.connection.readyState !== this.WebSocket.CONNECTING ||
149
- attempts >= 5) {
150
- this.connection.close();
151
- this._waitForConnection();
152
- this._attemptConnect();
153
- }
154
- else {
155
- this._waitForConnection(attempts + 1);
167
+ if (this.connection) {
168
+ if (this.connection.readyState !== this.WebSocket.OPEN) {
169
+ if (this.connection.readyState !== this.WebSocket.CONNECTING) {
170
+ this.connection.close();
171
+ this._waitForConnection(attempts + 1);
172
+ this._attemptConnect();
173
+ }
174
+ else {
175
+ this._waitForConnection(attempts + 1);
176
+ }
156
177
  }
157
178
  }
158
179
  else {
159
180
  this._attemptConnect();
160
181
  }
161
- }, 5000);
182
+ }, Math.max(Math.pow(attempts, 2) * 5000, 1000 * 60 * 10));
162
183
  }
163
184
  _attemptConnect() {
185
+ // Attempt to connect.
164
186
  if (this.pubsubUrl != null) {
165
187
  this.connection = new this.WebSocket(this.pubsubUrl, 'nymph');
166
188
  this.connection.onopen = this._onopen.bind(this);
@@ -171,16 +193,20 @@ class PubSub {
171
193
  if (typeof console !== 'undefined' && !this.noConsole) {
172
194
  console.log('Nymph-PubSub connection established!');
173
195
  }
196
+ if (this.waitForConnectionTimeout) {
197
+ clearTimeout(this.waitForConnectionTimeout);
198
+ }
174
199
  for (let i = 0; i < this.connectCallbacks.length; i++) {
175
200
  const callback = this.connectCallbacks[i];
176
201
  if (callback) {
177
202
  callback();
178
203
  }
179
204
  }
180
- if (authToken != null) {
205
+ if (this.authToken != null) {
181
206
  this._send({
182
207
  action: 'authenticate',
183
- token: authToken,
208
+ authToken: this.authToken,
209
+ switchToken: this.switchToken,
184
210
  });
185
211
  }
186
212
  for (let query in this.subscriptions.queries) {
@@ -216,15 +242,19 @@ class PubSub {
216
242
  _onmessage(e) {
217
243
  let data = JSON.parse(e.data);
218
244
  let subs = [];
245
+ let set = 'set' in data && data.set;
219
246
  let count = 'count' in data;
247
+ let error = 'error' in data;
220
248
  if (data.hasOwnProperty('query') &&
221
249
  this.subscriptions.queries.hasOwnProperty(data.query)) {
222
250
  subs = [...this.subscriptions.queries[data.query]];
223
- if (!count) {
251
+ if (!count && !error) {
224
252
  for (let i = 0; i < subs.length; i++) {
225
253
  const callback = subs[i][0];
226
254
  if (typeof callback === 'function') {
227
- callback(data);
255
+ callback(set
256
+ ? data.data.map((e) => this.nymph.initEntity(e))
257
+ : data);
228
258
  }
229
259
  }
230
260
  }
@@ -232,15 +262,35 @@ class PubSub {
232
262
  else if (data.hasOwnProperty('uid') &&
233
263
  this.subscriptions.uids.hasOwnProperty(data.uid)) {
234
264
  subs = [...this.subscriptions.uids[data.uid]];
235
- if (!count) {
265
+ if (!count && !error) {
236
266
  for (let i = 0; i < subs.length; i++) {
237
267
  const callback = subs[i][0];
238
- if (typeof callback === 'function') {
239
- callback(data.value ?? null, data.event);
268
+ const errCallback = subs[i][1];
269
+ if (set && data.data == null) {
270
+ if (typeof errCallback === 'function') {
271
+ errCallback(new ClientError({ status: 404, statusText: 'Not Found' }, { textStatus: 'Not Found' }));
272
+ }
273
+ }
274
+ else if (typeof callback === 'function') {
275
+ if (set) {
276
+ callback(data.data);
277
+ }
278
+ else {
279
+ callback(data.value ?? null, data.event);
280
+ }
240
281
  }
241
282
  }
242
283
  }
243
284
  }
285
+ else if (error) {
286
+ for (let i = 0; i < this.errorCallbacks.length; i++) {
287
+ const callback = this.errorCallbacks[i];
288
+ if (callback) {
289
+ callback(data.error);
290
+ }
291
+ }
292
+ return;
293
+ }
244
294
  if (count) {
245
295
  for (let i = 0; i < subs.length; i++) {
246
296
  const callback = subs[i][2];
@@ -249,6 +299,14 @@ class PubSub {
249
299
  }
250
300
  }
251
301
  }
302
+ if (error) {
303
+ for (let i = 0; i < subs.length; i++) {
304
+ const callback = subs[i][1];
305
+ if (typeof callback === 'function') {
306
+ callback(data.error);
307
+ }
308
+ }
309
+ }
252
310
  }
253
311
  _onclose(e) {
254
312
  if (typeof console !== 'undefined' && !this.noConsole) {
@@ -260,7 +318,7 @@ class PubSub {
260
318
  callback();
261
319
  }
262
320
  }
263
- if (e.code !== 4200 &&
321
+ if (e.code !== 1000 &&
264
322
  (typeof navigator === 'undefined' || navigator.onLine)) {
265
323
  if (this.connection) {
266
324
  this.connection.close();
@@ -277,6 +335,13 @@ class PubSub {
277
335
  isConnectionOpen() {
278
336
  return !!(this.connection && this.connection.readyState === this.WebSocket.OPEN);
279
337
  }
338
+ isConnectionConnecting() {
339
+ return !!(this.connection &&
340
+ this.connection.readyState === this.WebSocket.CONNECTING);
341
+ }
342
+ isConnection() {
343
+ return this.isConnectionOpen() || this.isConnectionConnecting();
344
+ }
280
345
  _subscribeQuery(query, callbacks) {
281
346
  let isNewSubscription = false;
282
347
  if (!this.subscriptions.queries.hasOwnProperty(query)) {
@@ -397,101 +462,103 @@ class PubSub {
397
462
  uid: name,
398
463
  });
399
464
  }
400
- updateArray(oldArr, update) {
465
+ updateArray(current, update) {
401
466
  if (Array.isArray(update)) {
402
467
  const newArr = [...update];
403
- if (oldArr.length === 0) {
404
- oldArr.splice(0, 0, ...newArr);
468
+ if (current.length === 0) {
469
+ // This will happen on the first update from a subscribe.
470
+ current.splice(0, 0, ...newArr);
405
471
  return;
406
472
  }
407
473
  const idMap = {};
408
- const Entity = this.nymph.getEntityClass('Entity');
474
+ const newEntities = [];
475
+ while (current.length) {
476
+ const first = current.shift();
477
+ if (!first) {
478
+ continue;
479
+ }
480
+ const guid = first.guid;
481
+ if (!guid) {
482
+ newEntities.push(first);
483
+ continue;
484
+ }
485
+ idMap[guid] = first;
486
+ }
409
487
  for (let i = 0; i < newArr.length; i++) {
410
488
  const entity = newArr[i];
411
- if (entity instanceof Entity && entity.guid != null) {
412
- idMap[entity.guid] = i;
489
+ const guid = entity.guid;
490
+ if (guid == null) {
491
+ continue;
413
492
  }
414
- }
415
- const remove = [];
416
- for (let k in oldArr) {
417
- if (typeof k === 'number' &&
418
- k <= 4294967294 &&
419
- /^0$|^[1-9]\d*$/.test(k) &&
420
- oldArr.hasOwnProperty(k)) {
421
- const guid = oldArr[k].guid;
422
- if (guid != null) {
423
- if (!idMap.hasOwnProperty(guid)) {
424
- remove.push(k);
425
- }
426
- else if (newArr[idMap[guid]].mdate !== oldArr[k].mdate) {
427
- oldArr[k].$init(newArr[idMap[guid]].toJSON());
428
- delete idMap[guid];
429
- }
430
- else {
431
- delete idMap[guid];
432
- }
433
- }
493
+ if (!idMap.hasOwnProperty(guid)) {
494
+ // It was added.
495
+ current.push(entity);
496
+ }
497
+ else if (idMap[guid].mdate !== entity.mdate) {
498
+ // It was modified.
499
+ idMap[guid].$init(entity.toJSON());
500
+ current.push(idMap[guid]);
501
+ }
502
+ else {
503
+ // Item wasn't modified.
504
+ current.push(idMap[guid]);
434
505
  }
435
506
  }
436
- remove.sort(function (a, b) {
437
- if (a > b)
438
- return -1;
439
- if (a < b)
440
- return 1;
441
- return 0;
442
- });
443
- for (let n = 0; n < remove.length; n++) {
444
- oldArr.splice(remove[n], 1);
445
- }
446
- for (let value of Object.values(idMap)) {
447
- oldArr.splice(oldArr.length, 0, newArr[value]);
448
- }
507
+ current.splice(current.length, 0, ...newEntities);
449
508
  }
450
509
  else if (update != null && update.hasOwnProperty('query')) {
451
- if ('removed' in update) {
452
- for (let i = 0; i < oldArr.length; i++) {
453
- if (oldArr[i] != null && oldArr[i].guid === update.removed) {
454
- oldArr.splice(i, 1);
455
- return;
510
+ const updates = 'multiple' in update && update.multiple ? update.messages : [update];
511
+ for (let curUpdate of updates) {
512
+ if ('removed' in curUpdate) {
513
+ for (let i = 0; i < current.length; i++) {
514
+ if (current[i] != null && current[i].guid === curUpdate.removed) {
515
+ current.splice(i, 1);
516
+ continue;
517
+ }
456
518
  }
457
519
  }
458
- }
459
- let entity = null;
460
- if ('added' in update) {
461
- for (let i = 0; i < oldArr.length; i++) {
462
- if (oldArr[i] != null && oldArr[i].guid === update.added) {
463
- entity = oldArr.splice(i, 1)[0].$init(update.data);
520
+ // Get the entity.
521
+ let entity = null;
522
+ if ('added' in curUpdate) {
523
+ // Check for it in the array already.
524
+ for (let i = 0; i < current.length; i++) {
525
+ if (current[i] != null && current[i].guid === curUpdate.added) {
526
+ entity = current.splice(i, 1)[0].$init(curUpdate.data);
527
+ }
464
528
  }
465
- }
466
- if (entity == null) {
467
- entity = this.nymph.initEntity(update.data);
468
- }
469
- }
470
- if ('updated' in update) {
471
- for (let i = 0; i < oldArr.length; i++) {
472
- if (oldArr[i] != null && oldArr[i].guid === update.updated) {
473
- entity = oldArr.splice(i, 1)[0].$init(update.data);
529
+ if (entity == null) {
530
+ // A new entity.
531
+ entity = this.nymph.initEntity(curUpdate.data);
474
532
  }
475
533
  }
476
- }
477
- const query = JSON.parse(update.query);
478
- if (entity != null) {
479
- const sort = 'sort' in query[0] ? query[0].sort : 'cdate';
480
- const reverse = query[0].hasOwnProperty('reverse')
481
- ? query[0].reverse
482
- : false;
483
- let i;
484
- if (reverse) {
485
- for (i = 0; ((oldArr[i] ?? {})[sort] ?? 0) >= (entity[sort] ?? 0) &&
486
- i < oldArr.length; i++)
487
- ;
534
+ if ('updated' in curUpdate) {
535
+ // Extract it from the array.
536
+ for (let i = 0; i < current.length; i++) {
537
+ if (current[i] != null && current[i].guid === curUpdate.updated) {
538
+ entity = current.splice(i, 1)[0].$init(curUpdate.data);
539
+ }
540
+ }
488
541
  }
489
- else {
490
- for (i = 0; ((oldArr[i] ?? {})[sort] ?? 0) < (entity[sort] ?? 0) &&
491
- i < oldArr.length; i++)
492
- ;
542
+ if (entity != null) {
543
+ const query = JSON.parse(curUpdate.query);
544
+ // Insert the entity in order.
545
+ const sort = 'sort' in query[0] ? query[0].sort : 'cdate';
546
+ const reverse = query[0].hasOwnProperty('reverse')
547
+ ? query[0].reverse
548
+ : false;
549
+ let i;
550
+ if (reverse) {
551
+ for (i = 0; ((current[i] ?? {})[sort] ?? 0) >= (entity[sort] ?? 0) &&
552
+ i < current.length; i++)
553
+ ;
554
+ }
555
+ else {
556
+ for (i = 0; ((current[i] ?? {})[sort] ?? 0) < (entity[sort] ?? 0) &&
557
+ i < current.length; i++)
558
+ ;
559
+ }
560
+ current.splice(i, 0, entity);
493
561
  }
494
- oldArr.splice(i, 0, entity);
495
562
  }
496
563
  }
497
564
  }
@@ -500,6 +567,7 @@ class PubSub {
500
567
  if (!(prop in this)) {
501
568
  throw new Error('Invalid event type.');
502
569
  }
570
+ // @ts-ignore: The callback should always be the right type here.
503
571
  this[prop].push(callback);
504
572
  return () => this.off(event, callback);
505
573
  }
@@ -508,29 +576,33 @@ class PubSub {
508
576
  if (!(prop in this)) {
509
577
  return false;
510
578
  }
579
+ // @ts-ignore: The callback should always be the right type here.
511
580
  const i = this[prop].indexOf(callback);
512
581
  if (i > -1) {
513
582
  this[prop].splice(i, 1);
514
583
  }
515
584
  return true;
516
585
  }
517
- setToken(token) {
518
- authToken = token;
586
+ authenticate(authToken, switchToken = null) {
587
+ this.authToken = authToken;
588
+ this.switchToken = switchToken;
519
589
  if (this.isConnectionOpen()) {
520
590
  this._send({
521
591
  action: 'authenticate',
522
- token: authToken,
592
+ authToken: this.authToken,
593
+ switchToken: this.switchToken,
523
594
  });
524
595
  }
525
596
  }
526
597
  }
527
- exports.default = PubSub;
528
- class PubSubSubscription {
598
+ export class PubSubSubscription {
599
+ query;
600
+ callbacks;
601
+ unsubscribe;
529
602
  constructor(query, callbacks, unsubscribe) {
530
603
  this.query = query;
531
604
  this.callbacks = callbacks;
532
605
  this.unsubscribe = unsubscribe;
533
606
  }
534
607
  }
535
- exports.PubSubSubscription = PubSubSubscription;
536
608
  //# sourceMappingURL=PubSub.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PubSub.js","sourceRoot":"","sources":["../src/PubSub.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { EntityJson } from './Entity.types';
2
- import { PubSubSubscription } from './PubSub';
1
+ import { EntityJson } from './Entity.types.js';
2
+ import { PubSubSubscription } from './PubSub.js';
3
3
  export type PubSubResolveCallback<T> = (arg: T, event?: string) => void;
4
4
  export type PubSubRejectCallback = (err: any) => void;
5
5
  export type PubSubCountCallback = (count: number) => void;
@@ -8,19 +8,32 @@ export type PubSubCallbacks<T> = [
8
8
  PubSubRejectCallback | undefined,
9
9
  PubSubCountCallback | undefined
10
10
  ];
11
- export type PubSubEventType = 'connect' | 'disconnect';
11
+ export type PubSubEventType = 'connect' | 'disconnect' | 'error';
12
12
  export type PubSubConnectCallback = () => void;
13
13
  export type PubSubDisconnectCallback = () => void;
14
- export type PubSubUpdate<T> = T | {
14
+ /**
15
+ * The error event is for unknown errors. Query errors fire their own reject
16
+ * callbacks.
17
+ */
18
+ export type PubSubErrorCallback = (err: any) => void;
19
+ export type PubSubUpdateRemoved = {
15
20
  query: string;
16
21
  removed: string;
17
- } | {
22
+ };
23
+ export type PubSubUpdateAdded = {
18
24
  query: string;
19
25
  added: string;
20
26
  data: EntityJson;
21
- } | {
27
+ };
28
+ export type PubSubUpdateUpdated = {
22
29
  query: string;
23
30
  updated: string;
24
31
  data: EntityJson;
25
32
  };
33
+ export type PubSubUpdateMultiple = {
34
+ query: string;
35
+ multiple: true;
36
+ messages: (PubSubUpdateRemoved | PubSubUpdateAdded | PubSubUpdateUpdated)[];
37
+ };
38
+ export type PubSubUpdate<T> = T | PubSubUpdateRemoved | PubSubUpdateAdded | PubSubUpdateUpdated | PubSubUpdateMultiple;
26
39
  export type PubSubSubscribable<T> = (resolve?: PubSubResolveCallback<T> | undefined, reject?: PubSubRejectCallback | undefined, count?: PubSubCountCallback | undefined) => PubSubSubscription<T>;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=PubSub.types.js.map
@@ -1,4 +1,4 @@
1
- import Entity from './Entity';
1
+ import Entity from './Entity.js';
2
2
  export declare function saveEntities(entity: Entity): {};
3
3
  export declare function restoreEntities(entity: Entity, savedEntities: {
4
4
  [k: string]: Entity;