@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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@instantdb/core",
|
|
3
|
-
"version": "v0.22.
|
|
3
|
+
"version": "v0.22.57",
|
|
4
4
|
"description": "Instant's core local abstraction",
|
|
5
5
|
"homepage": "https://github.com/instantdb/instant/tree/main/client/packages/core",
|
|
6
6
|
"repository": {
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
"dependencies": {
|
|
54
54
|
"mutative": "^1.0.10",
|
|
55
55
|
"uuid": "^11.1.0",
|
|
56
|
-
"@instantdb/version": "v0.22.
|
|
56
|
+
"@instantdb/version": "v0.22.57"
|
|
57
57
|
},
|
|
58
58
|
"scripts": {
|
|
59
59
|
"test": "vitest",
|
package/src/Reactor.js
CHANGED
|
@@ -29,6 +29,7 @@ import { InstantError } from './InstantError.ts';
|
|
|
29
29
|
import { InstantAPIError } from './utils/fetch.ts';
|
|
30
30
|
import { validate as validateUUID } from 'uuid';
|
|
31
31
|
import { WSConnection, SSEConnection } from './Connection.ts';
|
|
32
|
+
import { SyncTable } from './SyncTable.ts';
|
|
32
33
|
|
|
33
34
|
/** @typedef {import('./utils/log.ts').Logger} Logger */
|
|
34
35
|
/** @typedef {import('./Connection.ts').Connection} Connection */
|
|
@@ -272,6 +273,23 @@ export default class Reactor {
|
|
|
272
273
|
|
|
273
274
|
this._initStorage(Storage);
|
|
274
275
|
|
|
276
|
+
this._syncTable = new SyncTable(
|
|
277
|
+
this._trySendAuthed.bind(this),
|
|
278
|
+
this._persister,
|
|
279
|
+
{
|
|
280
|
+
useDateObjects: this.config.useDateObjects,
|
|
281
|
+
},
|
|
282
|
+
this._log,
|
|
283
|
+
(triples) =>
|
|
284
|
+
s.createStore(
|
|
285
|
+
this.attrs,
|
|
286
|
+
triples,
|
|
287
|
+
this.config.enableCardinalityInference,
|
|
288
|
+
this._linkIndex,
|
|
289
|
+
this.config.useDateObjects,
|
|
290
|
+
),
|
|
291
|
+
);
|
|
292
|
+
|
|
275
293
|
this._oauthCallbackResponse = this._oauthLoginInit();
|
|
276
294
|
|
|
277
295
|
// kick off a request to cache it
|
|
@@ -360,6 +378,7 @@ export default class Reactor {
|
|
|
360
378
|
for (const cb of this._beforeUnloadCbs) {
|
|
361
379
|
cb();
|
|
362
380
|
}
|
|
381
|
+
this._syncTable.beforeUnload();
|
|
363
382
|
}
|
|
364
383
|
|
|
365
384
|
/**
|
|
@@ -501,7 +520,7 @@ export default class Reactor {
|
|
|
501
520
|
this._log.info('[receive]', connId, msg.op, msg);
|
|
502
521
|
}
|
|
503
522
|
switch (msg.op) {
|
|
504
|
-
case 'init-ok':
|
|
523
|
+
case 'init-ok': {
|
|
505
524
|
this._setStatus(STATUS.AUTHENTICATED);
|
|
506
525
|
this._reconnectTimeoutMs = 0;
|
|
507
526
|
this._setAttrs(msg.attrs);
|
|
@@ -515,10 +534,12 @@ export default class Reactor {
|
|
|
515
534
|
this._tryJoinRoom(roomId, enqueuedUserPresence);
|
|
516
535
|
}
|
|
517
536
|
break;
|
|
518
|
-
|
|
537
|
+
}
|
|
538
|
+
case 'add-query-exists': {
|
|
519
539
|
this.notifyOneQueryOnce(weakHash(msg.q));
|
|
520
540
|
break;
|
|
521
|
-
|
|
541
|
+
}
|
|
542
|
+
case 'add-query-ok': {
|
|
522
543
|
const { q, result } = msg;
|
|
523
544
|
const hash = weakHash(q);
|
|
524
545
|
const pageInfo = result?.[0]?.data?.['page-info'];
|
|
@@ -545,7 +566,24 @@ export default class Reactor {
|
|
|
545
566
|
this.notifyOneQueryOnce(hash);
|
|
546
567
|
this._cleanupPendingMutationsTimeout();
|
|
547
568
|
break;
|
|
548
|
-
|
|
569
|
+
}
|
|
570
|
+
case 'start-sync-ok': {
|
|
571
|
+
this._syncTable.onStartSyncOk(msg);
|
|
572
|
+
break;
|
|
573
|
+
}
|
|
574
|
+
case 'sync-load-batch': {
|
|
575
|
+
this._syncTable.onSyncLoadBatch(msg);
|
|
576
|
+
break;
|
|
577
|
+
}
|
|
578
|
+
case 'sync-init-finish': {
|
|
579
|
+
this._syncTable.onSyncInitFinish(msg);
|
|
580
|
+
break;
|
|
581
|
+
}
|
|
582
|
+
case 'sync-update-triples': {
|
|
583
|
+
this._syncTable.onSyncUpdateTriples(msg);
|
|
584
|
+
break;
|
|
585
|
+
}
|
|
586
|
+
case 'refresh-ok': {
|
|
549
587
|
const { computations, attrs } = msg;
|
|
550
588
|
const processedTxId = msg['processed-tx-id'];
|
|
551
589
|
if (attrs) {
|
|
@@ -604,6 +642,7 @@ export default class Reactor {
|
|
|
604
642
|
this.notifyOne(hash);
|
|
605
643
|
});
|
|
606
644
|
break;
|
|
645
|
+
}
|
|
607
646
|
case 'transact-ok': {
|
|
608
647
|
const { 'client-event-id': eventId, 'tx-id': txId } = msg;
|
|
609
648
|
|
|
@@ -696,6 +735,7 @@ export default class Reactor {
|
|
|
696
735
|
this._handleReceiveError(msg);
|
|
697
736
|
break;
|
|
698
737
|
default:
|
|
738
|
+
this._log.info('Uknown op', msg.op, msg);
|
|
699
739
|
break;
|
|
700
740
|
}
|
|
701
741
|
}
|
|
@@ -772,6 +812,16 @@ export default class Reactor {
|
|
|
772
812
|
this.notifyAll();
|
|
773
813
|
return;
|
|
774
814
|
}
|
|
815
|
+
|
|
816
|
+
if (msg['original-event']?.op === 'resync-table') {
|
|
817
|
+
this._syncTable.onResyncError(msg);
|
|
818
|
+
return;
|
|
819
|
+
}
|
|
820
|
+
|
|
821
|
+
if (msg['original-event']?.op === 'start-sync') {
|
|
822
|
+
this._syncTable.onStartSyncError(msg);
|
|
823
|
+
return;
|
|
824
|
+
}
|
|
775
825
|
// We've caught some error which has no corresponding listener.
|
|
776
826
|
// Let's console.error to let the user know.
|
|
777
827
|
const errorObj = { ...msg };
|
|
@@ -822,6 +872,10 @@ export default class Reactor {
|
|
|
822
872
|
return eventId;
|
|
823
873
|
}
|
|
824
874
|
|
|
875
|
+
subscribeTable(q, cb) {
|
|
876
|
+
return this._syncTable.subscribe(q, cb);
|
|
877
|
+
}
|
|
878
|
+
|
|
825
879
|
/**
|
|
826
880
|
* When a user subscribes to a query the following side effects occur:
|
|
827
881
|
*
|
|
@@ -1294,6 +1348,8 @@ export default class Reactor {
|
|
|
1294
1348
|
this._sendMutation(eventId, mut);
|
|
1295
1349
|
}
|
|
1296
1350
|
});
|
|
1351
|
+
|
|
1352
|
+
this._syncTable.flushPending();
|
|
1297
1353
|
}
|
|
1298
1354
|
|
|
1299
1355
|
/**
|