@instantdb/core 0.22.87 → 0.22.88-experimental.drewh-ssr.20248709142.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/serializeSchema.test.ts +123 -0
- package/dist/commonjs/Reactor.d.ts +13 -1
- package/dist/commonjs/Reactor.d.ts.map +1 -1
- package/dist/commonjs/Reactor.js +64 -5
- package/dist/commonjs/Reactor.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 +199 -0
- package/dist/commonjs/framework.js.map +1 -0
- package/dist/commonjs/index.d.ts +5 -1
- package/dist/commonjs/index.d.ts.map +1 -1
- package/dist/commonjs/index.js +7 -1
- package/dist/commonjs/index.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/esm/Reactor.d.ts +13 -1
- package/dist/esm/Reactor.d.ts.map +1 -1
- package/dist/esm/Reactor.js +64 -5
- package/dist/esm/Reactor.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 +159 -0
- package/dist/esm/framework.js.map +1 -0
- package/dist/esm/index.d.ts +5 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +5 -2
- package/dist/esm/index.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/standalone/index.js +1648 -1348
- package/dist/standalone/index.umd.cjs +3 -3
- package/package.json +2 -2
- package/src/Reactor.js +74 -9
- package/src/createRouteHandler.ts +44 -0
- package/src/framework.ts +281 -0
- package/src/index.ts +9 -0
- package/src/parseSchemaFromJSON.ts +176 -0
|
@@ -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
|
+
});
|
|
@@ -100,6 +100,17 @@ export default class Reactor<RoomSchema extends import("./presence.ts").RoomSche
|
|
|
100
100
|
_setStatus(status: any, err: any): void;
|
|
101
101
|
_onMergeKv: (key: any, storageV: any, inMemoryV: any) => any;
|
|
102
102
|
_flushEnqueuedRoomData(roomId: any): void;
|
|
103
|
+
/**
|
|
104
|
+
* Does the same thing as add-query-ok
|
|
105
|
+
* but called as a result of receiving query info from ssr
|
|
106
|
+
* @param {any} q
|
|
107
|
+
* @param {{ triples: any; pageInfo: any; }} result
|
|
108
|
+
* @param {boolean} enableCardinalityInference
|
|
109
|
+
*/
|
|
110
|
+
_addQueryData(q: any, result: {
|
|
111
|
+
triples: any;
|
|
112
|
+
pageInfo: any;
|
|
113
|
+
}, enableCardinalityInference: boolean): void;
|
|
103
114
|
_handleReceive(connId: any, msg: any): void;
|
|
104
115
|
_sessionId: any;
|
|
105
116
|
_pendingMutations(): any;
|
|
@@ -143,7 +154,7 @@ export default class Reactor<RoomSchema extends import("./presence.ts").RoomSche
|
|
|
143
154
|
_rewriteMutationsSorted(attrs: any, muts: any): any[];
|
|
144
155
|
optimisticAttrs(): any;
|
|
145
156
|
/** Runs instaql on a query and a store */
|
|
146
|
-
dataForQuery(hash: any): any;
|
|
157
|
+
dataForQuery(hash: any, applyOptimistic?: boolean): any;
|
|
147
158
|
_applyOptimisticUpdates(store: any, mutations: any, processedTxId: any): any;
|
|
148
159
|
/** Re-run instaql and call all callbacks with new data */
|
|
149
160
|
notifyOne: (hash: any) => void;
|
|
@@ -246,6 +257,7 @@ export default class Reactor<RoomSchema extends import("./presence.ts").RoomSche
|
|
|
246
257
|
}>;
|
|
247
258
|
_hasCurrentUser(): Promise<boolean>;
|
|
248
259
|
changeCurrentUser(newUser: any): Promise<void>;
|
|
260
|
+
syncUserToEndpoint(user: any): Promise<void>;
|
|
249
261
|
updateUser(newUser: any): void;
|
|
250
262
|
sendMagicCode({ email }: {
|
|
251
263
|
email: any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Reactor.d.ts","sourceRoot":"","sources":["../../src/Reactor.js"],"names":[],"mappings":"AA8KA;;GAEG;AACH,6BAFwD,UAAU,SAArD,OAAQ,eAAe,EAAE,eAAgB;IAkEpD,
|
|
1
|
+
{"version":3,"file":"Reactor.d.ts","sourceRoot":"","sources":["../../src/Reactor.js"],"names":[],"mappings":"AA8KA;;GAEG;AACH,6BAFwD,UAAU,SAArD,OAAQ,eAAe,EAAE,eAAgB;IAkEpD,8KA0HC;IAzLD,WAAM;IACN,mBAAiB;IACjB,qBAAoB;IACpB,eAA2B;IAE3B,8BAA8B;IAC9B,0CAAU;IAEV,8BAA8B;IAC9B,mCAAG;IAEH,wBAAwB;IACxB,YADW,SAAS,CACT;IAEX,wEAAwE;IACxE,UADW,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;QAAE,CAAC,EAAE,GAAG,CAAC;QAAC,EAAE,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,GAAG,CAAA;KAAE,CAAC,CAAC,CACtD;IACd,gFAAgF;IAChF,eADW,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;QAAE,CAAC,EAAE,GAAG,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,QAAQ,CAAA;KAAE,CAAC,CAAC,CACzD;IACnB,eAAa;IACb,gBAAc;IACd,wBAAsB;IACtB,2BAAyB;IACzB,YAAO;IACP,qCAAkC;IAClC,0BAA2B;IAC3B,4BAAwB;IACxB,yBAAyB;IACzB,YADW,UAAU,CACV;IACX,4BAA4B;IAC5B,gBADW,aAAa,CACF;IAEtB,qCAAqC;IACrC,cADW,sBAAsB,CACpB;IACb,6BAA6B;IAC7B,OADW,OAAO,GAAG,IAAI,CACZ;IACb,qBAAsB;IACtB,oBAAqB;IACrB,gEAAgE;IAChE,wBADW,OAAO,CAAC,IAAI,GAAG;QAAC,KAAK,EAAE;YAAC,OAAO,EAAE,MAAM,CAAA;SAAC,CAAA;KAAC,CAAC,GAAG,IAAI,CAC9B;IAE9B,+DAA+D;IAC/D,YADW,IAAI,GAAG,OAAO,sBAAsB,EAAE,SAAS,CACxC;IAElB,yCAAyC;IACzC,mBADU,gBAAgB,GAAG,SAAS,CACpB;IAElB,iEAAiE;IACjE,QADW,MAAM,CAAC,MAAM,EAAE;QAAC,WAAW,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,GAAG,CAAA;KAAC,CAAC,CACjD;IACZ,sCAAsC;IACtC,oBADW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CACV;IACxB,cAAe;IACf,uBAAqB;IACrB,mBAAoB;IACpB,kFAAkF;IAClF,oBADW;QAAC,SAAS,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,GAAG,GAAG,SAAS,CAAC;QAAC,IAAI,EAAE,GAAG,GAAG,SAAS,CAAA;KAAC,CACF;IAC5E,wBAAsB;IACtB,uBAAwB;IACxB,qBAAqB;IACrB,MADW,MAAM,CACZ;IACL,8BAAyB;IACzB,sCAAiC;IACjC,oCAAsC;IAYpC,qBAAwD;IAYxD,cAAmE;IAyKrE,sBAKC;IAxED,gCAOC;IAED;;;;MAMC;IAED,mCAIC;IAED,iCA0CC;IASD;;;;OAIG;IACH,2BAJW,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAI,OAAO,WACxD,MAAM,aACN;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAC,QAoC5E;IAED,wCAIC;IAED,aAAc,QAAG,EAAE,aAAQ,EAAE,cAAS,SAmBpC;IAEF,0CAgBC;IAED;;;;;;OAMG;IACH,iBAJW,GAAG,UACH;QAAE,OAAO,EAAE,GAAG,CAAC;QAAC,QAAQ,EAAE,GAAG,CAAC;KAAE,8BAChC,OAAO,QA6BjB;IAED,4CA+OC;IA7NK,gBAAmC;IA+NzC,yBAEC;IAED,sCAMC;IAED;;;;OAIG;IACH,6BAJW,SAAS,GAAG,OAAO,WACnB,MAAM,YACN;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAC,QAoB5E;IAED,oCAqEC;IAED,oEAKC;IAED,4BAOC;IAKD,oBAAqB,MAAC,SAGpB;IAEF,0CASC;IAED;wBApgBE,CAAF;kCAsgBC;IAED;;;;;;;;;OASG;IACH,uDAuBC;IAED,2CAwCC;IAED,sDAQC;IAED,8CAMC;IAED,uCAEC;IAED,uCASC;IAaD,kEA8EC;IAED,sDAEC;IAKD,uBAkCC;IAED,0CAA0C;IAC1C,wDAoCC;IAED,6EAOC;IAED,0DAA0D;IAC1D,YAAa,SAAI,UAUf;IAEF,qBAAsB,SAAI,UAQxB;IAEF,mBAAoB,SAAI,EAAE,UAAK,UAG7B;IAEF,mCAAmC;IACnC,kBAOC;IAED,wBAKC;IAED,wEAAwE;IACxE,SAAU,WAAM,kBAqBd;IAEF;;;;OAIG;IACH,UAAW,SAJA,GAIO,EAAE,QAHT,GAGc,kBAsBvB;IAEF,iBAIC;IAED;;;;;;OAMG;IACH,iDAqCC;IAKD,4DAA4D;IAC5D,8BA4BC;IAED;;OAEG;IACH,wCAeC;IAED;;;;OAIG;IACH,wCAiBC;IAED,qCAKC;IAED,kDAkBC;IAED,mBAAoB,MAAC,UA+BnB;IAEF,sBAAuB,MAAC,UAyBtB;IAEF,oBAAqB,MAAC,UAWpB;IAEF,+BAsBE;IAEF,oBAAqB,MAAC,UAgCpB;IAEF,qBAqDC;IAED;;;;;;;OAOG;IACH,oCAgBC;IAID,8BAoDC;IAED;;;OAGG;IACH;;;;cA+CC;IAED;eAlkDkC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAC;cAokDlD;IAED,+CAMC;IAED,mCAgBC;IAED,wBAMC;IAED,+CAQC;IAED,oCAUC;IAED,gCAEC;IAED,0CAEC;IAED,wBAIC;IAED,8CAEC;IAED,yCAKC;IAED;mBAvoDuB,OAAO;eAAS,GAAG,GAAG,SAAS;cAAQ,GAAG,GAAG,SAAS;MAyoD5E;IAED,gCAGC;IAED;;qBAhqD4C,MAAM;;;;;;;;;;;;OAsrDjD;IAED,oCAGC;IAED,+CAiBC;IAED,6CAgBC;IAED,+BAeC;IAED;;+CAMC;IAED;;;wCAYC;IAED,uEAQC;IAED,iDAOC;IAED,8DAoBC;IAED,kCAIC;IAED;;;;;;;OAOG;IACH,oDAJG;QAAuB,UAAU,EAAzB,MAAM;QACS,WAAW,EAA1B,MAAM;KACd,GAAU,MAAM,CAKlB;IAED;;;;OAIG;IACH,6CAHG;QAAuB,IAAI,EAAnB,MAAM;QACU,YAAY;KACtC,mCAaA;IAED,oBAGC;IAED;;;;;OAKG;IACH,kDAJG;QAAuB,UAAU,EAAzB,MAAM;QACS,OAAO,EAAtB,MAAM;QAC6B,KAAK,GAAxC,MAAM,GAAG,IAAI,GAAG,SAAS;KACnC,mCAeA;IAKD;;;;OAIG;IACH,iBAJW,MAAM,oBACN,GAAG,GAAG,IAAI,GAAG,SAAS,cA4BhC;IAED,gCAiBC;IAMD;;;;;;;;;;;aAUC;IAGD,oEAsBC;IAED,8CAMC;IAED,2CAGC;IAED,iCAEC;IAED,0DAKC;IAGD,8EAuBC;IAED,uCAIC;IAED,oDAaC;IAED,mDAyBC;IAED,gDAWC;IAKD;;;;;aAeC;IAED,uEAQC;IAED,6DAoBC;IAED,4DAWC;IAKD,oFAWC;IAED,8DAWC;IAKD,+CAaC;IAED,wCAWC;CACF;qBAl3Ea,OAAO,gBAAgB,EAAE,MAAM;;4BAE/B,OAAO,iBAAiB,EAAE,aAAa;qCACvC,OAAO,iBAAiB,EAAE,sBAAsB;gCAxB9B,4BAA4B;0BAmBlC,gBAAgB;yBApBjB,qBAAqB;yBAJrB,cAAc;4BACX,iBAAiB;6BAHhB,uBAAuB;kCAClB,4BAA4B"}
|
package/dist/commonjs/Reactor.js
CHANGED
|
@@ -466,7 +466,13 @@ class Reactor {
|
|
|
466
466
|
}, this._log, (triples) => s.createStore(this.attrs, triples, this.config.enableCardinalityInference, this._linkIndex, this.config.useDateObjects));
|
|
467
467
|
this._oauthCallbackResponse = this._oauthLoginInit();
|
|
468
468
|
// kick off a request to cache it
|
|
469
|
-
this.getCurrentUser()
|
|
469
|
+
this.getCurrentUser().then((userInfo) => {
|
|
470
|
+
this.syncUserToEndpoint(userInfo.user);
|
|
471
|
+
});
|
|
472
|
+
setInterval(() => __awaiter(this, void 0, void 0, function* () {
|
|
473
|
+
const currentUser = yield this.getCurrentUser();
|
|
474
|
+
this.syncUserToEndpoint(currentUser.user);
|
|
475
|
+
}), 1000 * 60 * 20);
|
|
470
476
|
NetworkListener.getIsOnline().then((isOnline) => {
|
|
471
477
|
this._isOnline = isOnline;
|
|
472
478
|
this._startSocket();
|
|
@@ -612,6 +618,35 @@ class Reactor {
|
|
|
612
618
|
}
|
|
613
619
|
}
|
|
614
620
|
}
|
|
621
|
+
/**
|
|
622
|
+
* Does the same thing as add-query-ok
|
|
623
|
+
* but called as a result of receiving query info from ssr
|
|
624
|
+
* @param {any} q
|
|
625
|
+
* @param {{ triples: any; pageInfo: any; }} result
|
|
626
|
+
* @param {boolean} enableCardinalityInference
|
|
627
|
+
*/
|
|
628
|
+
_addQueryData(q, result, enableCardinalityInference) {
|
|
629
|
+
if (!this.attrs) {
|
|
630
|
+
throw new Error('Attrs in reactor have not been set');
|
|
631
|
+
}
|
|
632
|
+
const queryHash = (0, weakHash_ts_1.default)(q);
|
|
633
|
+
const store = s.createStore(this.attrs, result.triples, enableCardinalityInference, this._linkIndex, this.config.useDateObjects);
|
|
634
|
+
this.querySubs.updateInPlace((prev) => {
|
|
635
|
+
prev[queryHash] = {
|
|
636
|
+
result: {
|
|
637
|
+
store,
|
|
638
|
+
pageInfo: result.pageInfo,
|
|
639
|
+
processedTxId: undefined,
|
|
640
|
+
isExternal: true,
|
|
641
|
+
},
|
|
642
|
+
q,
|
|
643
|
+
};
|
|
644
|
+
});
|
|
645
|
+
this._cleanupPendingMutationsQueries();
|
|
646
|
+
this.notifyOne(queryHash);
|
|
647
|
+
this.notifyOneQueryOnce(queryHash);
|
|
648
|
+
this._cleanupPendingMutationsTimeout();
|
|
649
|
+
}
|
|
615
650
|
_handleReceive(connId, msg) {
|
|
616
651
|
var _a, _b, _c, _d, _e, _f;
|
|
617
652
|
// opt-out, enabled by default if schema
|
|
@@ -1117,7 +1152,7 @@ class Reactor {
|
|
|
1117
1152
|
return attrsRecord;
|
|
1118
1153
|
}
|
|
1119
1154
|
/** Runs instaql on a query and a store */
|
|
1120
|
-
dataForQuery(hash) {
|
|
1155
|
+
dataForQuery(hash, applyOptimistic = true) {
|
|
1121
1156
|
const errorMessage = this._errorMessage;
|
|
1122
1157
|
if (errorMessage) {
|
|
1123
1158
|
return { error: errorMessage };
|
|
@@ -1139,10 +1174,13 @@ class Reactor {
|
|
|
1139
1174
|
pendingMutationsVersion === cached.pendingMutationsVersion) {
|
|
1140
1175
|
return cached;
|
|
1141
1176
|
}
|
|
1142
|
-
|
|
1177
|
+
let store = result.store;
|
|
1178
|
+
const { pageInfo, aggregate, processedTxId } = result;
|
|
1143
1179
|
const mutations = this._rewriteMutationsSorted(store.attrs, pendingMutations);
|
|
1144
|
-
|
|
1145
|
-
|
|
1180
|
+
if (applyOptimistic) {
|
|
1181
|
+
store = this._applyOptimisticUpdates(store, mutations, processedTxId);
|
|
1182
|
+
}
|
|
1183
|
+
const resp = (0, instaql_ts_1.default)({ store: store, pageInfo, aggregate }, q);
|
|
1146
1184
|
return { data: resp, querySubVersion, pendingMutationsVersion };
|
|
1147
1185
|
}
|
|
1148
1186
|
_applyOptimisticUpdates(store, mutations, processedTxId) {
|
|
@@ -1606,7 +1644,28 @@ class Reactor {
|
|
|
1606
1644
|
}
|
|
1607
1645
|
});
|
|
1608
1646
|
}
|
|
1647
|
+
syncUserToEndpoint(user) {
|
|
1648
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
1649
|
+
if (this.config.cookieEndpoint) {
|
|
1650
|
+
try {
|
|
1651
|
+
fetch(this.config.cookieEndpoint + '/sync-auth', {
|
|
1652
|
+
method: 'POST',
|
|
1653
|
+
body: JSON.stringify({
|
|
1654
|
+
user: user,
|
|
1655
|
+
}),
|
|
1656
|
+
headers: {
|
|
1657
|
+
'Content-Type': 'application/json',
|
|
1658
|
+
},
|
|
1659
|
+
});
|
|
1660
|
+
}
|
|
1661
|
+
catch (error) {
|
|
1662
|
+
console.error('Error syncing user with external endpoint', error);
|
|
1663
|
+
}
|
|
1664
|
+
}
|
|
1665
|
+
});
|
|
1666
|
+
}
|
|
1609
1667
|
updateUser(newUser) {
|
|
1668
|
+
this.syncUserToEndpoint(newUser);
|
|
1610
1669
|
const newV = { error: undefined, user: newUser };
|
|
1611
1670
|
this._currentUserCached = Object.assign({ isLoading: false }, newV);
|
|
1612
1671
|
this._dataForQueryCache = {};
|