@instantdb/core 0.22.89 → 0.22.90-experimental.drewh-ssr.20286580593.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.
- package/__tests__/src/Reactor.test.js +1 -1
- package/__tests__/src/instaml.test.ts +1 -1
- package/__tests__/src/serializeSchema.test.ts +123 -0
- package/__tests__/src/store.test.ts +1 -1
- package/__tests__/src/transactionValidation.test.ts +1 -1
- package/dist/commonjs/Reactor.d.ts +13 -1
- package/dist/commonjs/Reactor.d.ts.map +1 -1
- package/dist/commonjs/Reactor.js +79 -15
- package/dist/commonjs/Reactor.js.map +1 -1
- package/dist/commonjs/SyncTable.js +3 -3
- package/dist/commonjs/SyncTable.js.map +1 -1
- package/dist/commonjs/createRouteHandler.d.ts +8 -0
- package/dist/commonjs/createRouteHandler.d.ts.map +1 -0
- package/dist/commonjs/createRouteHandler.js +57 -0
- package/dist/commonjs/createRouteHandler.js.map +1 -0
- package/dist/commonjs/framework.d.ts +77 -0
- package/dist/commonjs/framework.d.ts.map +1 -0
- package/dist/commonjs/framework.js +209 -0
- package/dist/commonjs/framework.js.map +1 -0
- package/dist/commonjs/index.d.ts +6 -2
- package/dist/commonjs/index.d.ts.map +1 -1
- package/dist/commonjs/index.js +9 -3
- package/dist/commonjs/index.js.map +1 -1
- package/dist/commonjs/instaml.js +8 -8
- package/dist/commonjs/instaml.js.map +1 -1
- package/dist/commonjs/instaql.js +2 -2
- package/dist/commonjs/instaql.js.map +1 -1
- package/dist/commonjs/parseSchemaFromJSON.d.ts +3 -0
- package/dist/commonjs/parseSchemaFromJSON.d.ts.map +1 -0
- package/dist/commonjs/parseSchemaFromJSON.js +148 -0
- package/dist/commonjs/parseSchemaFromJSON.js.map +1 -0
- package/dist/commonjs/reactorTypes.d.ts +5 -4
- package/dist/commonjs/reactorTypes.d.ts.map +1 -1
- package/dist/commonjs/reactorTypes.js.map +1 -1
- package/dist/commonjs/utils/{uuid.d.ts → id.d.ts} +1 -1
- package/dist/commonjs/utils/id.d.ts.map +1 -0
- package/dist/commonjs/utils/{uuid.js → id.js} +1 -1
- package/dist/commonjs/utils/id.js.map +1 -0
- package/dist/esm/Reactor.d.ts +13 -1
- package/dist/esm/Reactor.d.ts.map +1 -1
- package/dist/esm/Reactor.js +70 -6
- package/dist/esm/Reactor.js.map +1 -1
- package/dist/esm/SyncTable.js +1 -1
- package/dist/esm/SyncTable.js.map +1 -1
- package/dist/esm/createRouteHandler.d.ts +8 -0
- package/dist/esm/createRouteHandler.d.ts.map +1 -0
- package/dist/esm/createRouteHandler.js +53 -0
- package/dist/esm/createRouteHandler.js.map +1 -0
- package/dist/esm/framework.d.ts +77 -0
- package/dist/esm/framework.d.ts.map +1 -0
- package/dist/esm/framework.js +169 -0
- package/dist/esm/framework.js.map +1 -0
- package/dist/esm/index.d.ts +6 -2
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +6 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/instaml.js +1 -1
- package/dist/esm/instaml.js.map +1 -1
- package/dist/esm/instaql.js +1 -1
- package/dist/esm/instaql.js.map +1 -1
- package/dist/esm/parseSchemaFromJSON.d.ts +3 -0
- package/dist/esm/parseSchemaFromJSON.d.ts.map +1 -0
- package/dist/esm/parseSchemaFromJSON.js +144 -0
- package/dist/esm/parseSchemaFromJSON.js.map +1 -0
- package/dist/esm/reactorTypes.d.ts +5 -4
- package/dist/esm/reactorTypes.d.ts.map +1 -1
- package/dist/esm/reactorTypes.js.map +1 -1
- package/dist/esm/utils/{uuid.d.ts → id.d.ts} +1 -1
- package/dist/esm/utils/id.d.ts.map +1 -0
- package/dist/esm/utils/{uuid.js → id.js} +1 -1
- package/dist/esm/utils/id.js.map +1 -0
- package/dist/standalone/index.js +2697 -2377
- package/dist/standalone/index.umd.cjs +3 -3
- package/package.json +2 -2
- package/src/Reactor.js +85 -7
- package/src/SyncTable.ts +1 -1
- package/src/createRouteHandler.ts +44 -0
- package/src/framework.ts +294 -0
- package/src/index.ts +10 -1
- package/src/instaml.ts +1 -1
- package/src/instaql.ts +1 -1
- package/src/parseSchemaFromJSON.ts +176 -0
- package/src/reactorTypes.ts +5 -4
- package/dist/commonjs/utils/uuid.d.ts.map +0 -1
- package/dist/commonjs/utils/uuid.js.map +0 -1
- package/dist/esm/utils/uuid.d.ts.map +0 -1
- package/dist/esm/utils/uuid.js.map +0 -1
- /package/src/utils/{uuid.ts → id.ts} +0 -0
|
@@ -11,7 +11,7 @@ import * as instaml from '../../src/instaml';
|
|
|
11
11
|
import * as instatx from '../../src/instatx';
|
|
12
12
|
import zenecaAttrs from './data/zeneca/attrs.json';
|
|
13
13
|
import zenecaTriples from './data/zeneca/triples.json';
|
|
14
|
-
import uuid from '../../src/utils/
|
|
14
|
+
import uuid from '../../src/utils/id';
|
|
15
15
|
import { weakHash } from '../../src';
|
|
16
16
|
import { AttrsStoreClass } from '../../src/store';
|
|
17
17
|
|
|
@@ -4,7 +4,7 @@ import * as instatx from '../../src/instatx';
|
|
|
4
4
|
import zenecaAttrs from './data/zeneca/attrs.json';
|
|
5
5
|
import zenecaTriples from './data/zeneca/triples.json';
|
|
6
6
|
import { createStore, transact, AttrsStoreClass } from '../../src/store';
|
|
7
|
-
import uuid from '../../src/utils/
|
|
7
|
+
import uuid from '../../src/utils/id';
|
|
8
8
|
import { i, InstantDBAttr } from '../../src/index';
|
|
9
9
|
|
|
10
10
|
const zenecaAttrToId = zenecaAttrs.reduce((res, x) => {
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { expect, test } from 'vitest';
|
|
2
|
+
import { i } from '../../src/schema';
|
|
3
|
+
import { parseSchemaFromJSON } from '../../src/parseSchemaFromJSON';
|
|
4
|
+
import { InstantSchemaDef } from '../../src/schemaTypes';
|
|
5
|
+
|
|
6
|
+
const schema = i.schema({
|
|
7
|
+
entities: {
|
|
8
|
+
users: i.entity({
|
|
9
|
+
name: i.string(),
|
|
10
|
+
email: i.string().indexed().unique(),
|
|
11
|
+
bio: i.string().optional(),
|
|
12
|
+
// this is a convenient way to typecheck custom JSON fields
|
|
13
|
+
// though we should probably have a backend solution for this
|
|
14
|
+
stuff: i.json<{ custom: string }>(),
|
|
15
|
+
junk: i.any(),
|
|
16
|
+
}),
|
|
17
|
+
posts: i.entity({
|
|
18
|
+
title: i.string().optional(),
|
|
19
|
+
body: i.string(),
|
|
20
|
+
}),
|
|
21
|
+
comments: i.entity({
|
|
22
|
+
body: i.string().indexed(),
|
|
23
|
+
likes: i.number(),
|
|
24
|
+
}),
|
|
25
|
+
|
|
26
|
+
birthdays: i.entity({
|
|
27
|
+
date: i.date(),
|
|
28
|
+
message: i.string(),
|
|
29
|
+
prizes: i.json<string | number>(),
|
|
30
|
+
}),
|
|
31
|
+
},
|
|
32
|
+
links: {
|
|
33
|
+
usersPosts: {
|
|
34
|
+
forward: {
|
|
35
|
+
on: 'users',
|
|
36
|
+
has: 'many',
|
|
37
|
+
label: 'posts',
|
|
38
|
+
},
|
|
39
|
+
reverse: {
|
|
40
|
+
on: 'posts',
|
|
41
|
+
has: 'one',
|
|
42
|
+
label: 'author',
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
postsComments: {
|
|
46
|
+
forward: {
|
|
47
|
+
on: 'posts',
|
|
48
|
+
has: 'many',
|
|
49
|
+
label: 'comments',
|
|
50
|
+
},
|
|
51
|
+
reverse: {
|
|
52
|
+
on: 'comments',
|
|
53
|
+
has: 'one',
|
|
54
|
+
label: 'post',
|
|
55
|
+
},
|
|
56
|
+
},
|
|
57
|
+
friendships: {
|
|
58
|
+
forward: {
|
|
59
|
+
on: 'users',
|
|
60
|
+
has: 'many',
|
|
61
|
+
label: 'friends',
|
|
62
|
+
},
|
|
63
|
+
reverse: {
|
|
64
|
+
on: 'users',
|
|
65
|
+
has: 'many',
|
|
66
|
+
label: '_friends',
|
|
67
|
+
},
|
|
68
|
+
},
|
|
69
|
+
referrals: {
|
|
70
|
+
forward: {
|
|
71
|
+
on: 'users',
|
|
72
|
+
has: 'many',
|
|
73
|
+
label: 'referred',
|
|
74
|
+
},
|
|
75
|
+
reverse: {
|
|
76
|
+
on: 'users',
|
|
77
|
+
has: 'one',
|
|
78
|
+
label: 'referrer',
|
|
79
|
+
},
|
|
80
|
+
},
|
|
81
|
+
},
|
|
82
|
+
rooms: {
|
|
83
|
+
chat: {
|
|
84
|
+
presence: i.entity({
|
|
85
|
+
name: i.string(),
|
|
86
|
+
status: i.string(),
|
|
87
|
+
}),
|
|
88
|
+
topics: {
|
|
89
|
+
sendEmoji: i.entity({
|
|
90
|
+
emoji: i.string(),
|
|
91
|
+
}),
|
|
92
|
+
},
|
|
93
|
+
},
|
|
94
|
+
},
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
type AnySchema = InstantSchemaDef<any, any, any>;
|
|
98
|
+
|
|
99
|
+
// compare schemas by stringifying them with json and comparing the strings
|
|
100
|
+
const compareSchemas = (schema1: AnySchema, schema2: AnySchema) => {
|
|
101
|
+
expect(JSON.stringify(schema1, null, 2)).toBe(
|
|
102
|
+
JSON.stringify(schema2, null, 2),
|
|
103
|
+
);
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
test('ability to parse stringified schema into real schema object', () => {
|
|
107
|
+
const stringified = JSON.stringify(schema, null, 2);
|
|
108
|
+
const parsed = JSON.parse(stringified);
|
|
109
|
+
console.log(stringified);
|
|
110
|
+
|
|
111
|
+
const otherSide = parseSchemaFromJSON(parsed);
|
|
112
|
+
|
|
113
|
+
compareSchemas(schema, otherSide);
|
|
114
|
+
|
|
115
|
+
expect(schema.entities.comments.links).toEqual(
|
|
116
|
+
otherSide.entities.comments.links,
|
|
117
|
+
);
|
|
118
|
+
expect(schema.entities.comments.asType).toEqual(
|
|
119
|
+
otherSide.entities.comments.asType,
|
|
120
|
+
);
|
|
121
|
+
|
|
122
|
+
expect(schema).toStrictEqual(otherSide);
|
|
123
|
+
});
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
attrsStoreFromJSON,
|
|
15
15
|
} from '../../src/store';
|
|
16
16
|
import query from '../../src/instaql';
|
|
17
|
-
import uuid from '../../src/utils/
|
|
17
|
+
import uuid from '../../src/utils/id';
|
|
18
18
|
import { tx } from '../../src/instatx';
|
|
19
19
|
import * as instaml from '../../src/instaml';
|
|
20
20
|
import * as datalog from '../../src/datalog';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { i } from '../../src/schema';
|
|
2
2
|
import { validateTransactions } from '../../src/transactionValidation.ts';
|
|
3
3
|
import { lookup, tx as originalTx, TxChunk } from '../../src/instatx.ts';
|
|
4
|
-
import id from '../../src/utils/
|
|
4
|
+
import id from '../../src/utils/id.ts';
|
|
5
5
|
import { expect, test } from 'vitest';
|
|
6
6
|
import { InstantSchemaDef } from '../../src';
|
|
7
7
|
|
|
@@ -102,6 +102,17 @@ export default class Reactor<RoomSchema extends import("./presence.ts").RoomSche
|
|
|
102
102
|
_setStatus(status: any, err: any): void;
|
|
103
103
|
_onMergeKv: (key: any, storageV: any, inMemoryV: any) => any;
|
|
104
104
|
_flushEnqueuedRoomData(roomId: any): void;
|
|
105
|
+
/**
|
|
106
|
+
* Does the same thing as add-query-ok
|
|
107
|
+
* but called as a result of receiving query info from ssr
|
|
108
|
+
* @param {any} q
|
|
109
|
+
* @param {{ triples: any; pageInfo: any; }} result
|
|
110
|
+
* @param {boolean} enableCardinalityInference
|
|
111
|
+
*/
|
|
112
|
+
_addQueryData(q: any, result: {
|
|
113
|
+
triples: any;
|
|
114
|
+
pageInfo: any;
|
|
115
|
+
}, enableCardinalityInference: boolean): void;
|
|
105
116
|
_handleReceive(connId: any, msg: any): void;
|
|
106
117
|
_sessionId: any;
|
|
107
118
|
_pendingMutations(): any;
|
|
@@ -154,7 +165,7 @@ export default class Reactor<RoomSchema extends import("./presence.ts").RoomSche
|
|
|
154
165
|
*/
|
|
155
166
|
optimisticAttrs(): s.AttrsStore;
|
|
156
167
|
/** Runs instaql on a query and a store */
|
|
157
|
-
dataForQuery(hash: any): any;
|
|
168
|
+
dataForQuery(hash: any, applyOptimistic?: boolean): any;
|
|
158
169
|
_applyOptimisticUpdates(store: any, attrsStore: any, mutations: any, processedTxId: any): {
|
|
159
170
|
store: any;
|
|
160
171
|
attrsStore: any;
|
|
@@ -260,6 +271,7 @@ export default class Reactor<RoomSchema extends import("./presence.ts").RoomSche
|
|
|
260
271
|
}>;
|
|
261
272
|
_hasCurrentUser(): Promise<boolean>;
|
|
262
273
|
changeCurrentUser(newUser: any): Promise<void>;
|
|
274
|
+
syncUserToEndpoint(user: any): Promise<void>;
|
|
263
275
|
updateUser(newUser: any): void;
|
|
264
276
|
sendMagicCode({ email }: {
|
|
265
277
|
email: any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Reactor.d.ts","sourceRoot":"","sources":["../../src/Reactor.js"],"names":[],"mappings":"AAyMA;;GAEG;AACH,6BAFwD,UAAU,SAArD,OAAQ,eAAe,EAAE,eAAgB;IAmEpD,
|
|
1
|
+
{"version":3,"file":"Reactor.d.ts","sourceRoot":"","sources":["../../src/Reactor.js"],"names":[],"mappings":"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"}
|
package/dist/commonjs/Reactor.js
CHANGED
|
@@ -61,7 +61,7 @@ const weakHash_ts_1 = __importDefault(require("./utils/weakHash.js"));
|
|
|
61
61
|
const instaql_ts_1 = __importDefault(require("./instaql.js"));
|
|
62
62
|
const instaml = __importStar(require("./instaml.js"));
|
|
63
63
|
const s = __importStar(require("./store.js"));
|
|
64
|
-
const
|
|
64
|
+
const id_ts_1 = __importDefault(require("./utils/id.js"));
|
|
65
65
|
const IndexedDBStorage_ts_1 = __importDefault(require("./IndexedDBStorage.js"));
|
|
66
66
|
const WindowNetworkListener_js_1 = __importDefault(require("./WindowNetworkListener.js"));
|
|
67
67
|
const authAPI = __importStar(require("./authAPI.js"));
|
|
@@ -333,7 +333,7 @@ class Reactor {
|
|
|
333
333
|
* @returns
|
|
334
334
|
*/
|
|
335
335
|
this.pushOps = (txSteps, error) => {
|
|
336
|
-
const eventId = (0,
|
|
336
|
+
const eventId = (0, id_ts_1.default)();
|
|
337
337
|
const mutations = [...this._pendingMutations().values()];
|
|
338
338
|
const order = Math.max(0, ...mutations.map((mut) => mut.order || 0)) + 1;
|
|
339
339
|
const mutation = {
|
|
@@ -363,7 +363,7 @@ class Reactor {
|
|
|
363
363
|
this.getCurrentUser()
|
|
364
364
|
.then((resp) => {
|
|
365
365
|
var _a;
|
|
366
|
-
this._trySend((0,
|
|
366
|
+
this._trySend((0, id_ts_1.default)(), {
|
|
367
367
|
op: 'init',
|
|
368
368
|
'app-id': this.config.appId,
|
|
369
369
|
'refresh-token': (_a = resp.user) === null || _a === void 0 ? void 0 : _a['refresh_token'],
|
|
@@ -487,7 +487,13 @@ class Reactor {
|
|
|
487
487
|
}, () => this.ensureAttrs());
|
|
488
488
|
this._oauthCallbackResponse = this._oauthLoginInit();
|
|
489
489
|
// kick off a request to cache it
|
|
490
|
-
this.getCurrentUser()
|
|
490
|
+
this.getCurrentUser().then((userInfo) => {
|
|
491
|
+
this.syncUserToEndpoint(userInfo.user);
|
|
492
|
+
});
|
|
493
|
+
setInterval(() => __awaiter(this, void 0, void 0, function* () {
|
|
494
|
+
const currentUser = yield this.getCurrentUser();
|
|
495
|
+
this.syncUserToEndpoint(currentUser.user);
|
|
496
|
+
}), 1000 * 60 * 20);
|
|
491
497
|
NetworkListener.getIsOnline().then((isOnline) => {
|
|
492
498
|
this._isOnline = isOnline;
|
|
493
499
|
this._startSocket();
|
|
@@ -639,6 +645,37 @@ class Reactor {
|
|
|
639
645
|
}
|
|
640
646
|
}
|
|
641
647
|
}
|
|
648
|
+
/**
|
|
649
|
+
* Does the same thing as add-query-ok
|
|
650
|
+
* but called as a result of receiving query info from ssr
|
|
651
|
+
* @param {any} q
|
|
652
|
+
* @param {{ triples: any; pageInfo: any; }} result
|
|
653
|
+
* @param {boolean} enableCardinalityInference
|
|
654
|
+
*/
|
|
655
|
+
_addQueryData(q, result, enableCardinalityInference) {
|
|
656
|
+
if (!this.attrs) {
|
|
657
|
+
throw new Error('Attrs in reactor have not been set');
|
|
658
|
+
}
|
|
659
|
+
const queryHash = (0, weakHash_ts_1.default)(q);
|
|
660
|
+
const attrsStore = this.ensureAttrs();
|
|
661
|
+
const store = s.createStore(this.attrs, result.triples, enableCardinalityInference, this.config.useDateObjects);
|
|
662
|
+
this.querySubs.updateInPlace((prev) => {
|
|
663
|
+
prev[queryHash] = {
|
|
664
|
+
result: {
|
|
665
|
+
store,
|
|
666
|
+
attrsStore,
|
|
667
|
+
pageInfo: result.pageInfo,
|
|
668
|
+
processedTxId: undefined,
|
|
669
|
+
isExternal: true,
|
|
670
|
+
},
|
|
671
|
+
q,
|
|
672
|
+
};
|
|
673
|
+
});
|
|
674
|
+
this._cleanupPendingMutationsQueries();
|
|
675
|
+
this.notifyOne(queryHash);
|
|
676
|
+
this.notifyOneQueryOnce(queryHash);
|
|
677
|
+
this._cleanupPendingMutationsTimeout();
|
|
678
|
+
}
|
|
642
679
|
_handleReceive(connId, msg) {
|
|
643
680
|
var _a, _b, _c, _d, _e, _f;
|
|
644
681
|
// opt-out, enabled by default if schema
|
|
@@ -962,7 +999,7 @@ class Reactor {
|
|
|
962
999
|
this.notifyAttrsSubs();
|
|
963
1000
|
}
|
|
964
1001
|
_startQuerySub(q, hash) {
|
|
965
|
-
const eventId = (0,
|
|
1002
|
+
const eventId = (0, id_ts_1.default)();
|
|
966
1003
|
this.querySubs.updateInPlace((prev) => {
|
|
967
1004
|
prev[hash] = prev[hash] || { q, result: null, eventId };
|
|
968
1005
|
prev[hash].lastAccessed = Date.now();
|
|
@@ -1051,7 +1088,7 @@ class Reactor {
|
|
|
1051
1088
|
delete this.queryOnceDfds[hash];
|
|
1052
1089
|
delete this._dataForQueryCache[hash];
|
|
1053
1090
|
this.querySubs.unloadKey(hash);
|
|
1054
|
-
this._trySendAuthed((0,
|
|
1091
|
+
this._trySendAuthed((0, id_ts_1.default)(), { op: 'remove-query', q });
|
|
1055
1092
|
}
|
|
1056
1093
|
// When we `pushTx`, it's possible that we don't yet have `this.attrs`
|
|
1057
1094
|
// This means that `tx-steps` in `pendingMutations` will include `add-attr`
|
|
@@ -1180,7 +1217,7 @@ class Reactor {
|
|
|
1180
1217
|
return new s.AttrsStoreClass(attrs, this._linkIndex);
|
|
1181
1218
|
}
|
|
1182
1219
|
/** Runs instaql on a query and a store */
|
|
1183
|
-
dataForQuery(hash) {
|
|
1220
|
+
dataForQuery(hash, applyOptimistic = true) {
|
|
1184
1221
|
const errorMessage = this._errorMessage;
|
|
1185
1222
|
if (errorMessage) {
|
|
1186
1223
|
return { error: errorMessage };
|
|
@@ -1202,10 +1239,16 @@ class Reactor {
|
|
|
1202
1239
|
pendingMutationsVersion === cached.pendingMutationsVersion) {
|
|
1203
1240
|
return cached;
|
|
1204
1241
|
}
|
|
1205
|
-
|
|
1242
|
+
let store = result.store;
|
|
1243
|
+
let attrsStore = result.attrsStore;
|
|
1244
|
+
const { pageInfo, aggregate, processedTxId } = result;
|
|
1206
1245
|
const mutations = this._rewriteMutationsSorted(attrsStore, pendingMutations);
|
|
1207
|
-
|
|
1208
|
-
|
|
1246
|
+
if (applyOptimistic) {
|
|
1247
|
+
const optimisticResult = this._applyOptimisticUpdates(store, attrsStore, mutations, processedTxId);
|
|
1248
|
+
store = optimisticResult.store;
|
|
1249
|
+
attrsStore = optimisticResult.attrsStore;
|
|
1250
|
+
}
|
|
1251
|
+
const resp = (0, instaql_ts_1.default)({ store: store, attrsStore: attrsStore, pageInfo, aggregate }, q);
|
|
1209
1252
|
return { data: resp, querySubVersion, pendingMutationsVersion };
|
|
1210
1253
|
}
|
|
1211
1254
|
_applyOptimisticUpdates(store, attrsStore, mutations, processedTxId) {
|
|
@@ -1425,7 +1468,7 @@ class Reactor {
|
|
|
1425
1468
|
if (current) {
|
|
1426
1469
|
return current;
|
|
1427
1470
|
}
|
|
1428
|
-
const newId = (0,
|
|
1471
|
+
const newId = (0, id_ts_1.default)();
|
|
1429
1472
|
this.kv.updateInPlace((prev) => {
|
|
1430
1473
|
if (prev[k])
|
|
1431
1474
|
return;
|
|
@@ -1671,7 +1714,28 @@ class Reactor {
|
|
|
1671
1714
|
}
|
|
1672
1715
|
});
|
|
1673
1716
|
}
|
|
1717
|
+
syncUserToEndpoint(user) {
|
|
1718
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
1719
|
+
if (this.config.cookieEndpoint) {
|
|
1720
|
+
try {
|
|
1721
|
+
fetch(this.config.cookieEndpoint + '/sync-auth', {
|
|
1722
|
+
method: 'POST',
|
|
1723
|
+
body: JSON.stringify({
|
|
1724
|
+
user: user,
|
|
1725
|
+
}),
|
|
1726
|
+
headers: {
|
|
1727
|
+
'Content-Type': 'application/json',
|
|
1728
|
+
},
|
|
1729
|
+
});
|
|
1730
|
+
}
|
|
1731
|
+
catch (error) {
|
|
1732
|
+
console.error('Error syncing user with external endpoint', error);
|
|
1733
|
+
}
|
|
1734
|
+
}
|
|
1735
|
+
});
|
|
1736
|
+
}
|
|
1674
1737
|
updateUser(newUser) {
|
|
1738
|
+
this.syncUserToEndpoint(newUser);
|
|
1675
1739
|
const newV = { error: undefined, user: newUser };
|
|
1676
1740
|
this._currentUserCached = Object.assign({ isLoading: false }, newV);
|
|
1677
1741
|
this._dataForQueryCache = {};
|
|
@@ -1891,18 +1955,18 @@ class Reactor {
|
|
|
1891
1955
|
this._notifyPresenceSubs(roomId);
|
|
1892
1956
|
}
|
|
1893
1957
|
_trySetPresence(roomId, data) {
|
|
1894
|
-
this._trySendAuthed((0,
|
|
1958
|
+
this._trySendAuthed((0, id_ts_1.default)(), {
|
|
1895
1959
|
op: 'set-presence',
|
|
1896
1960
|
'room-id': roomId,
|
|
1897
1961
|
data,
|
|
1898
1962
|
});
|
|
1899
1963
|
}
|
|
1900
1964
|
_tryJoinRoom(roomId, data) {
|
|
1901
|
-
this._trySendAuthed((0,
|
|
1965
|
+
this._trySendAuthed((0, id_ts_1.default)(), { op: 'join-room', 'room-id': roomId, data });
|
|
1902
1966
|
delete this._roomsPendingLeave[roomId];
|
|
1903
1967
|
}
|
|
1904
1968
|
_tryLeaveRoom(roomId) {
|
|
1905
|
-
this._trySendAuthed((0,
|
|
1969
|
+
this._trySendAuthed((0, id_ts_1.default)(), { op: 'leave-room', 'room-id': roomId });
|
|
1906
1970
|
}
|
|
1907
1971
|
_trySetRoomConnected(roomId, isConnected) {
|
|
1908
1972
|
const room = this._rooms[roomId];
|
|
@@ -1995,7 +2059,7 @@ class Reactor {
|
|
|
1995
2059
|
this._tryBroadcast(roomId, roomType, topic, data);
|
|
1996
2060
|
}
|
|
1997
2061
|
_tryBroadcast(roomId, roomType, topic, data) {
|
|
1998
|
-
this._trySendAuthed((0,
|
|
2062
|
+
this._trySendAuthed((0, id_ts_1.default)(), {
|
|
1999
2063
|
op: 'client-broadcast',
|
|
2000
2064
|
'room-id': roomId,
|
|
2001
2065
|
roomType,
|