@instantdb/core 0.22.65 → 0.22.66-experimental.drewh-ssr.19584095734.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/clientTypes.d.ts.map +1 -1
- package/dist/commonjs/clientTypes.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 +75 -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/clientTypes.d.ts.map +1 -1
- package/dist/esm/clientTypes.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 +75 -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 +1504 -1202
- package/dist/standalone/index.umd.cjs +3 -3
- package/package.json +2 -2
- package/src/Reactor.js +74 -9
- package/src/clientTypes.ts +5 -1
- 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;
|
|
@@ -235,6 +246,7 @@ export default class Reactor<RoomSchema extends import("./presence.ts").RoomSche
|
|
|
235
246
|
}>;
|
|
236
247
|
_hasCurrentUser(): Promise<boolean>;
|
|
237
248
|
changeCurrentUser(newUser: any): Promise<void>;
|
|
249
|
+
syncUserToEndpoint(user: any): Promise<void>;
|
|
238
250
|
updateUser(newUser: any): void;
|
|
239
251
|
sendMagicCode({ email }: {
|
|
240
252
|
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":"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"}
|
package/dist/commonjs/Reactor.js
CHANGED
|
@@ -457,7 +457,13 @@ class Reactor {
|
|
|
457
457
|
}, this._log, (triples) => s.createStore(this.attrs, triples, this.config.enableCardinalityInference, this._linkIndex, this.config.useDateObjects));
|
|
458
458
|
this._oauthCallbackResponse = this._oauthLoginInit();
|
|
459
459
|
// kick off a request to cache it
|
|
460
|
-
this.getCurrentUser()
|
|
460
|
+
this.getCurrentUser().then((userInfo) => {
|
|
461
|
+
this.syncUserToEndpoint(userInfo.user);
|
|
462
|
+
});
|
|
463
|
+
setInterval(() => __awaiter(this, void 0, void 0, function* () {
|
|
464
|
+
const currentUser = yield this.getCurrentUser();
|
|
465
|
+
this.syncUserToEndpoint(currentUser.user);
|
|
466
|
+
}), 1000 * 60 * 20);
|
|
461
467
|
NetworkListener.getIsOnline().then((isOnline) => {
|
|
462
468
|
this._isOnline = isOnline;
|
|
463
469
|
this._startSocket();
|
|
@@ -603,6 +609,35 @@ class Reactor {
|
|
|
603
609
|
}
|
|
604
610
|
}
|
|
605
611
|
}
|
|
612
|
+
/**
|
|
613
|
+
* Does the same thing as add-query-ok
|
|
614
|
+
* but called as a result of receiving query info from ssr
|
|
615
|
+
* @param {any} q
|
|
616
|
+
* @param {{ triples: any; pageInfo: any; }} result
|
|
617
|
+
* @param {boolean} enableCardinalityInference
|
|
618
|
+
*/
|
|
619
|
+
_addQueryData(q, result, enableCardinalityInference) {
|
|
620
|
+
if (!this.attrs) {
|
|
621
|
+
throw new Error('Attrs in reactor have not been set');
|
|
622
|
+
}
|
|
623
|
+
const queryHash = (0, weakHash_ts_1.default)(q);
|
|
624
|
+
const store = s.createStore(this.attrs, result.triples, enableCardinalityInference, this._linkIndex, this.config.useDateObjects);
|
|
625
|
+
this.querySubs.updateInPlace((prev) => {
|
|
626
|
+
prev[queryHash] = {
|
|
627
|
+
result: {
|
|
628
|
+
store,
|
|
629
|
+
pageInfo: result.pageInfo,
|
|
630
|
+
processedTxId: undefined,
|
|
631
|
+
isExternal: true,
|
|
632
|
+
},
|
|
633
|
+
q,
|
|
634
|
+
};
|
|
635
|
+
});
|
|
636
|
+
this._cleanupPendingMutationsQueries();
|
|
637
|
+
this.notifyOne(queryHash);
|
|
638
|
+
this.notifyOneQueryOnce(queryHash);
|
|
639
|
+
this._cleanupPendingMutationsTimeout();
|
|
640
|
+
}
|
|
606
641
|
_handleReceive(connId, msg) {
|
|
607
642
|
var _a, _b, _c, _d, _e, _f;
|
|
608
643
|
// opt-out, enabled by default if schema
|
|
@@ -1108,7 +1143,7 @@ class Reactor {
|
|
|
1108
1143
|
return attrsRecord;
|
|
1109
1144
|
}
|
|
1110
1145
|
/** Runs instaql on a query and a store */
|
|
1111
|
-
dataForQuery(hash) {
|
|
1146
|
+
dataForQuery(hash, applyOptimistic = true) {
|
|
1112
1147
|
const errorMessage = this._errorMessage;
|
|
1113
1148
|
if (errorMessage) {
|
|
1114
1149
|
return { error: errorMessage };
|
|
@@ -1130,10 +1165,13 @@ class Reactor {
|
|
|
1130
1165
|
pendingMutationsVersion === cached.pendingMutationsVersion) {
|
|
1131
1166
|
return cached.data;
|
|
1132
1167
|
}
|
|
1133
|
-
|
|
1168
|
+
let store = result.store;
|
|
1169
|
+
const { pageInfo, aggregate, processedTxId } = result;
|
|
1134
1170
|
const mutations = this._rewriteMutationsSorted(store.attrs, pendingMutations);
|
|
1135
|
-
|
|
1136
|
-
|
|
1171
|
+
if (applyOptimistic) {
|
|
1172
|
+
store = this._applyOptimisticUpdates(store, mutations, processedTxId);
|
|
1173
|
+
}
|
|
1174
|
+
const resp = (0, instaql_js_1.default)({ store: store, pageInfo, aggregate }, q);
|
|
1137
1175
|
this._dataForQueryCache[hash] = {
|
|
1138
1176
|
querySubVersion,
|
|
1139
1177
|
pendingMutationsVersion,
|
|
@@ -1602,7 +1640,28 @@ class Reactor {
|
|
|
1602
1640
|
}
|
|
1603
1641
|
});
|
|
1604
1642
|
}
|
|
1643
|
+
syncUserToEndpoint(user) {
|
|
1644
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
1645
|
+
if (this.config.cookieEndpoint) {
|
|
1646
|
+
try {
|
|
1647
|
+
fetch(this.config.cookieEndpoint + '/sync-auth', {
|
|
1648
|
+
method: 'POST',
|
|
1649
|
+
body: JSON.stringify({
|
|
1650
|
+
user: user,
|
|
1651
|
+
}),
|
|
1652
|
+
headers: {
|
|
1653
|
+
'Content-Type': 'application/json',
|
|
1654
|
+
},
|
|
1655
|
+
});
|
|
1656
|
+
}
|
|
1657
|
+
catch (error) {
|
|
1658
|
+
console.error('Error syncing user with external endpoint', error);
|
|
1659
|
+
}
|
|
1660
|
+
}
|
|
1661
|
+
});
|
|
1662
|
+
}
|
|
1605
1663
|
updateUser(newUser) {
|
|
1664
|
+
this.syncUserToEndpoint(newUser);
|
|
1606
1665
|
const newV = { error: undefined, user: newUser };
|
|
1607
1666
|
this._currentUserCached = Object.assign({ isLoading: false }, newV);
|
|
1608
1667
|
this._dataForQueryCache = {};
|