@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.
- package/dist/commonjs/Reactor.d.ts +5 -0
- package/dist/commonjs/Reactor.d.ts.map +1 -1
- package/dist/commonjs/Reactor.js +43 -5
- package/dist/commonjs/Reactor.js.map +1 -1
- package/dist/commonjs/SyncTable.d.ts +140 -0
- package/dist/commonjs/SyncTable.d.ts.map +1 -0
- package/dist/commonjs/SyncTable.js +538 -0
- package/dist/commonjs/SyncTable.js.map +1 -0
- package/dist/commonjs/index.d.ts +21 -1
- package/dist/commonjs/index.d.ts.map +1 -1
- package/dist/commonjs/index.js +19 -1
- package/dist/commonjs/index.js.map +1 -1
- package/dist/commonjs/instaql.d.ts +1 -0
- package/dist/commonjs/instaql.d.ts.map +1 -1
- package/dist/commonjs/instaql.js +9 -5
- package/dist/commonjs/instaql.js.map +1 -1
- package/dist/commonjs/store.d.ts +5 -0
- package/dist/commonjs/store.d.ts.map +1 -1
- package/dist/commonjs/store.js +11 -0
- package/dist/commonjs/store.js.map +1 -1
- package/dist/commonjs/utils/PersistedObject.d.ts +11 -5
- package/dist/commonjs/utils/PersistedObject.d.ts.map +1 -1
- package/dist/commonjs/utils/PersistedObject.js +12 -2
- package/dist/commonjs/utils/PersistedObject.js.map +1 -1
- package/dist/esm/Reactor.d.ts +5 -0
- package/dist/esm/Reactor.d.ts.map +1 -1
- package/dist/esm/Reactor.js +43 -5
- package/dist/esm/Reactor.js.map +1 -1
- package/dist/esm/SyncTable.d.ts +140 -0
- package/dist/esm/SyncTable.d.ts.map +1 -0
- package/dist/esm/SyncTable.js +498 -0
- package/dist/esm/SyncTable.js.map +1 -0
- package/dist/esm/index.d.ts +21 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +19 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/instaql.d.ts +1 -0
- package/dist/esm/instaql.d.ts.map +1 -1
- package/dist/esm/instaql.js +8 -5
- package/dist/esm/instaql.js.map +1 -1
- package/dist/esm/store.d.ts +5 -0
- package/dist/esm/store.d.ts.map +1 -1
- package/dist/esm/store.js +9 -3
- package/dist/esm/store.js.map +1 -1
- package/dist/esm/utils/PersistedObject.d.ts +11 -5
- package/dist/esm/utils/PersistedObject.d.ts.map +1 -1
- package/dist/esm/utils/PersistedObject.js +12 -2
- package/dist/esm/utils/PersistedObject.js.map +1 -1
- package/dist/standalone/index.js +1579 -1135
- package/dist/standalone/index.umd.cjs +3 -3
- package/package.json +2 -2
- package/src/Reactor.js +60 -4
- package/src/SyncTable.ts +821 -0
- package/src/index.ts +48 -0
- package/src/instaql.js +11 -5
- package/src/store.js +11 -3
- package/src/utils/PersistedObject.ts +15 -6
package/dist/esm/Reactor.d.ts
CHANGED
|
@@ -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":"
|
|
1
|
+
{"version":3,"file":"Reactor.d.ts","sourceRoot":"","sources":["../../src/Reactor.js"],"names":[],"mappings":"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"}
|
package/dist/esm/Reactor.js
CHANGED
|
@@ -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
|
-
|
|
580
|
+
}
|
|
581
|
+
case 'add-query-exists': {
|
|
576
582
|
this.notifyOneQueryOnce(weakHash(msg.q));
|
|
577
583
|
break;
|
|
578
|
-
|
|
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
|
-
|
|
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
|