@instantdb/core 0.22.56 → 0.22.57

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 (57) hide show
  1. package/dist/commonjs/Reactor.d.ts +5 -0
  2. package/dist/commonjs/Reactor.d.ts.map +1 -1
  3. package/dist/commonjs/Reactor.js +43 -5
  4. package/dist/commonjs/Reactor.js.map +1 -1
  5. package/dist/commonjs/SyncTable.d.ts +140 -0
  6. package/dist/commonjs/SyncTable.d.ts.map +1 -0
  7. package/dist/commonjs/SyncTable.js +538 -0
  8. package/dist/commonjs/SyncTable.js.map +1 -0
  9. package/dist/commonjs/index.d.ts +21 -1
  10. package/dist/commonjs/index.d.ts.map +1 -1
  11. package/dist/commonjs/index.js +19 -1
  12. package/dist/commonjs/index.js.map +1 -1
  13. package/dist/commonjs/instaql.d.ts +1 -0
  14. package/dist/commonjs/instaql.d.ts.map +1 -1
  15. package/dist/commonjs/instaql.js +9 -5
  16. package/dist/commonjs/instaql.js.map +1 -1
  17. package/dist/commonjs/store.d.ts +5 -0
  18. package/dist/commonjs/store.d.ts.map +1 -1
  19. package/dist/commonjs/store.js +11 -0
  20. package/dist/commonjs/store.js.map +1 -1
  21. package/dist/commonjs/utils/PersistedObject.d.ts +11 -5
  22. package/dist/commonjs/utils/PersistedObject.d.ts.map +1 -1
  23. package/dist/commonjs/utils/PersistedObject.js +12 -2
  24. package/dist/commonjs/utils/PersistedObject.js.map +1 -1
  25. package/dist/esm/Reactor.d.ts +5 -0
  26. package/dist/esm/Reactor.d.ts.map +1 -1
  27. package/dist/esm/Reactor.js +43 -5
  28. package/dist/esm/Reactor.js.map +1 -1
  29. package/dist/esm/SyncTable.d.ts +140 -0
  30. package/dist/esm/SyncTable.d.ts.map +1 -0
  31. package/dist/esm/SyncTable.js +498 -0
  32. package/dist/esm/SyncTable.js.map +1 -0
  33. package/dist/esm/index.d.ts +21 -1
  34. package/dist/esm/index.d.ts.map +1 -1
  35. package/dist/esm/index.js +19 -1
  36. package/dist/esm/index.js.map +1 -1
  37. package/dist/esm/instaql.d.ts +1 -0
  38. package/dist/esm/instaql.d.ts.map +1 -1
  39. package/dist/esm/instaql.js +8 -5
  40. package/dist/esm/instaql.js.map +1 -1
  41. package/dist/esm/store.d.ts +5 -0
  42. package/dist/esm/store.d.ts.map +1 -1
  43. package/dist/esm/store.js +9 -3
  44. package/dist/esm/store.js.map +1 -1
  45. package/dist/esm/utils/PersistedObject.d.ts +11 -5
  46. package/dist/esm/utils/PersistedObject.d.ts.map +1 -1
  47. package/dist/esm/utils/PersistedObject.js +12 -2
  48. package/dist/esm/utils/PersistedObject.js.map +1 -1
  49. package/dist/standalone/index.js +1579 -1135
  50. package/dist/standalone/index.umd.cjs +3 -3
  51. package/package.json +2 -2
  52. package/src/Reactor.js +60 -4
  53. package/src/SyncTable.ts +821 -0
  54. package/src/index.ts +48 -0
  55. package/src/instaql.js +11 -5
  56. package/src/store.js +11 -3
  57. package/src/utils/PersistedObject.ts +15 -6
@@ -75,6 +75,7 @@ export default class Reactor<RoomSchema extends import("./presence.ts").RoomSche
75
75
  _inFlightMutationEventIds: Set<any>;
76
76
  queryCacheLimit: any;
77
77
  versions: any;
78
+ _syncTable: SyncTable;
78
79
  _beforeUnload(): void;
79
80
  updateSchema(schema: any): void;
80
81
  _reactorStats(): {
@@ -125,6 +126,9 @@ export default class Reactor<RoomSchema extends import("./presence.ts").RoomSche
125
126
  _setAttrs(attrs: any): void;
126
127
  getPreviousResult: (q: any) => any;
127
128
  _startQuerySub(q: any, hash: any): string;
129
+ subscribeTable(q: any, cb: any): (opts?: {
130
+ keepSubscription?: boolean | null | undefined;
131
+ } | null | undefined) => void;
128
132
  /**
129
133
  * When a user subscribes to a query the following side effects occur:
130
134
  *
@@ -332,6 +336,7 @@ export type TransportType = import("./Connection.ts").TransportType;
332
336
  export type EventSourceConstructor = import("./Connection.ts").EventSourceConstructor;
333
337
  import { PersistedObject } from './utils/PersistedObject.ts';
334
338
  import { Deferred } from './utils/Deferred.js';
339
+ import { SyncTable } from './SyncTable.ts';
335
340
  import * as authAPI from './authAPI.ts';
336
341
  import * as StorageApi from './StorageAPI.ts';
337
342
  import IndexedDBStorage from './IndexedDBStorage.ts';
@@ -1 +1 @@
1
- {"version":3,"file":"Reactor.d.ts","sourceRoot":"","sources":["../../src/Reactor.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Reactor.d.ts","sourceRoot":"","sources":["../../src/Reactor.js"],"names":[],"mappings":"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"}
@@ -44,6 +44,7 @@ import { InstantError } from "./InstantError.js";
44
44
  import { InstantAPIError } from "./utils/fetch.js";
45
45
  import { validate as validateUUID } from 'uuid';
46
46
  import { WSConnection, SSEConnection } from "./Connection.js";
47
+ import { SyncTable } from "./SyncTable.js";
47
48
  /** @typedef {import('./utils/log.ts').Logger} Logger */
48
49
  /** @typedef {import('./Connection.ts').Connection} Connection */
49
50
  /** @typedef {import('./Connection.ts').TransportType} TransportType */
@@ -435,6 +436,9 @@ export default class Reactor {
435
436
  }));
436
437
  }
437
438
  this._initStorage(Storage);
439
+ this._syncTable = new SyncTable(this._trySendAuthed.bind(this), this._persister, {
440
+ useDateObjects: this.config.useDateObjects,
441
+ }, this._log, (triples) => s.createStore(this.attrs, triples, this.config.enableCardinalityInference, this._linkIndex, this.config.useDateObjects));
438
442
  this._oauthCallbackResponse = this._oauthLoginInit();
439
443
  // kick off a request to cache it
440
444
  this.getCurrentUser();
@@ -493,6 +497,7 @@ export default class Reactor {
493
497
  for (const cb of this._beforeUnloadCbs) {
494
498
  cb();
495
499
  }
500
+ this._syncTable.beforeUnload();
496
501
  }
497
502
  /**
498
503
  * @param {'enqueued' | 'pending' | 'synced' | 'timeout' | 'error' } status
@@ -559,7 +564,7 @@ export default class Reactor {
559
564
  this._log.info('[receive]', connId, msg.op, msg);
560
565
  }
561
566
  switch (msg.op) {
562
- case 'init-ok':
567
+ case 'init-ok': {
563
568
  this._setStatus(STATUS.AUTHENTICATED);
564
569
  this._reconnectTimeoutMs = 0;
565
570
  this._setAttrs(msg.attrs);
@@ -572,10 +577,12 @@ export default class Reactor {
572
577
  this._tryJoinRoom(roomId, enqueuedUserPresence);
573
578
  }
574
579
  break;
575
- case 'add-query-exists':
580
+ }
581
+ case 'add-query-exists': {
576
582
  this.notifyOneQueryOnce(weakHash(msg.q));
577
583
  break;
578
- case 'add-query-ok':
584
+ }
585
+ case 'add-query-ok': {
579
586
  const { q, result } = msg;
580
587
  const hash = weakHash(q);
581
588
  const pageInfo = (_d = (_c = result === null || result === void 0 ? void 0 : result[0]) === null || _c === void 0 ? void 0 : _c.data) === null || _d === void 0 ? void 0 : _d['page-info'];
@@ -596,7 +603,24 @@ export default class Reactor {
596
603
  this.notifyOneQueryOnce(hash);
597
604
  this._cleanupPendingMutationsTimeout();
598
605
  break;
599
- case 'refresh-ok':
606
+ }
607
+ case 'start-sync-ok': {
608
+ this._syncTable.onStartSyncOk(msg);
609
+ break;
610
+ }
611
+ case 'sync-load-batch': {
612
+ this._syncTable.onSyncLoadBatch(msg);
613
+ break;
614
+ }
615
+ case 'sync-init-finish': {
616
+ this._syncTable.onSyncInitFinish(msg);
617
+ break;
618
+ }
619
+ case 'sync-update-triples': {
620
+ this._syncTable.onSyncUpdateTriples(msg);
621
+ break;
622
+ }
623
+ case 'refresh-ok': {
600
624
  const { computations, attrs } = msg;
601
625
  const processedTxId = msg['processed-tx-id'];
602
626
  if (attrs) {
@@ -634,6 +658,7 @@ export default class Reactor {
634
658
  this.notifyOne(hash);
635
659
  });
636
660
  break;
661
+ }
637
662
  case 'transact-ok': {
638
663
  const { 'client-event-id': eventId, 'tx-id': txId } = msg;
639
664
  this._inFlightMutationEventIds.delete(eventId);
@@ -708,6 +733,7 @@ export default class Reactor {
708
733
  this._handleReceiveError(msg);
709
734
  break;
710
735
  default:
736
+ this._log.info('Uknown op', msg.op, msg);
711
737
  break;
712
738
  }
713
739
  }
@@ -735,7 +761,7 @@ export default class Reactor {
735
761
  }
736
762
  }
737
763
  _handleReceiveError(msg) {
738
- var _a, _b, _c, _d, _e;
764
+ var _a, _b, _c, _d, _e, _f, _g;
739
765
  console.log('error', msg);
740
766
  const eventId = msg['client-event-id'];
741
767
  // This might not be a mutation, but it can't hurt to delete it
@@ -772,6 +798,14 @@ export default class Reactor {
772
798
  this.notifyAll();
773
799
  return;
774
800
  }
801
+ if (((_f = msg['original-event']) === null || _f === void 0 ? void 0 : _f.op) === 'resync-table') {
802
+ this._syncTable.onResyncError(msg);
803
+ return;
804
+ }
805
+ if (((_g = msg['original-event']) === null || _g === void 0 ? void 0 : _g.op) === 'start-sync') {
806
+ this._syncTable.onStartSyncError(msg);
807
+ return;
808
+ }
775
809
  // We've caught some error which has no corresponding listener.
776
810
  // Let's console.error to let the user know.
777
811
  const errorObj = Object.assign({}, msg);
@@ -807,6 +841,9 @@ export default class Reactor {
807
841
  this._trySendAuthed(eventId, { op: 'add-query', q });
808
842
  return eventId;
809
843
  }
844
+ subscribeTable(q, cb) {
845
+ return this._syncTable.subscribe(q, cb);
846
+ }
810
847
  /**
811
848
  * When a user subscribes to a query the following side effects occur:
812
849
  *
@@ -1116,6 +1153,7 @@ export default class Reactor {
1116
1153
  this._sendMutation(eventId, mut);
1117
1154
  }
1118
1155
  });
1156
+ this._syncTable.flushPending();
1119
1157
  }
1120
1158
  /**
1121
1159
  * Clean up pendingMutations that all queries have seen