@instantdb/core 0.22.59 → 0.22.60-experimental.drewh-ssr.19554409401.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 +1628 -1326
- 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
|
+
});
|
|
@@ -98,6 +98,17 @@ export default class Reactor<RoomSchema extends import("./presence.ts").RoomSche
|
|
|
98
98
|
_setStatus(status: any, err: any): void;
|
|
99
99
|
_onMergeKv: (key: any, storageV: any, inMemoryV: any) => any;
|
|
100
100
|
_flushEnqueuedRoomData(roomId: any): void;
|
|
101
|
+
/**
|
|
102
|
+
* Does the same thing as add-query-ok
|
|
103
|
+
* but called as a result of receiving query info from ssr
|
|
104
|
+
* @param {any} q
|
|
105
|
+
* @param {{ triples: any; pageInfo: any; }} result
|
|
106
|
+
* @param {boolean} enableCardinalityInference
|
|
107
|
+
*/
|
|
108
|
+
_addQueryData(q: any, result: {
|
|
109
|
+
triples: any;
|
|
110
|
+
pageInfo: any;
|
|
111
|
+
}, enableCardinalityInference: boolean): void;
|
|
101
112
|
_handleReceive(connId: any, msg: any): void;
|
|
102
113
|
_sessionId: any;
|
|
103
114
|
_pendingMutations(): any;
|
|
@@ -141,7 +152,7 @@ export default class Reactor<RoomSchema extends import("./presence.ts").RoomSche
|
|
|
141
152
|
_rewriteMutationsSorted(attrs: any, muts: any): any[];
|
|
142
153
|
optimisticAttrs(): any;
|
|
143
154
|
/** Runs instaql on a query and a store */
|
|
144
|
-
dataForQuery(hash: any): any;
|
|
155
|
+
dataForQuery(hash: any, applyOptimistic?: boolean): any;
|
|
145
156
|
_applyOptimisticUpdates(store: any, mutations: any, processedTxId: any): any;
|
|
146
157
|
/** Re-run instaql and call all callbacks with new data */
|
|
147
158
|
notifyOne: (hash: any) => void;
|
|
@@ -233,6 +244,7 @@ export default class Reactor<RoomSchema extends import("./presence.ts").RoomSche
|
|
|
233
244
|
}>;
|
|
234
245
|
_hasCurrentUser(): Promise<boolean>;
|
|
235
246
|
changeCurrentUser(newUser: any): Promise<void>;
|
|
247
|
+
syncUserToEndpoint(user: any): Promise<void>;
|
|
236
248
|
updateUser(newUser: any): void;
|
|
237
249
|
sendMagicCode({ email }: {
|
|
238
250
|
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;IA8DpD,
|
|
1
|
+
{"version":3,"file":"Reactor.d.ts","sourceRoot":"","sources":["../../src/Reactor.js"],"names":[],"mappings":"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"}
|
package/dist/commonjs/Reactor.js
CHANGED
|
@@ -456,7 +456,13 @@ class Reactor {
|
|
|
456
456
|
}, this._log, (triples) => s.createStore(this.attrs, triples, this.config.enableCardinalityInference, this._linkIndex, this.config.useDateObjects));
|
|
457
457
|
this._oauthCallbackResponse = this._oauthLoginInit();
|
|
458
458
|
// kick off a request to cache it
|
|
459
|
-
this.getCurrentUser()
|
|
459
|
+
this.getCurrentUser().then((userInfo) => {
|
|
460
|
+
this.syncUserToEndpoint(userInfo.user);
|
|
461
|
+
});
|
|
462
|
+
setInterval(() => __awaiter(this, void 0, void 0, function* () {
|
|
463
|
+
const currentUser = yield this.getCurrentUser();
|
|
464
|
+
this.syncUserToEndpoint(currentUser.user);
|
|
465
|
+
}), 1000 * 60 * 20);
|
|
460
466
|
NetworkListener.getIsOnline().then((isOnline) => {
|
|
461
467
|
this._isOnline = isOnline;
|
|
462
468
|
this._startSocket();
|
|
@@ -602,6 +608,35 @@ class Reactor {
|
|
|
602
608
|
}
|
|
603
609
|
}
|
|
604
610
|
}
|
|
611
|
+
/**
|
|
612
|
+
* Does the same thing as add-query-ok
|
|
613
|
+
* but called as a result of receiving query info from ssr
|
|
614
|
+
* @param {any} q
|
|
615
|
+
* @param {{ triples: any; pageInfo: any; }} result
|
|
616
|
+
* @param {boolean} enableCardinalityInference
|
|
617
|
+
*/
|
|
618
|
+
_addQueryData(q, result, enableCardinalityInference) {
|
|
619
|
+
if (!this.attrs) {
|
|
620
|
+
throw new Error('Attrs in reactor have not been set');
|
|
621
|
+
}
|
|
622
|
+
const queryHash = (0, weakHash_ts_1.default)(q);
|
|
623
|
+
const store = s.createStore(this.attrs, result.triples, enableCardinalityInference, this._linkIndex, this.config.useDateObjects);
|
|
624
|
+
this.querySubs.updateInPlace((prev) => {
|
|
625
|
+
prev[queryHash] = {
|
|
626
|
+
result: {
|
|
627
|
+
store,
|
|
628
|
+
pageInfo: result.pageInfo,
|
|
629
|
+
processedTxId: undefined,
|
|
630
|
+
isExternal: true,
|
|
631
|
+
},
|
|
632
|
+
q,
|
|
633
|
+
};
|
|
634
|
+
});
|
|
635
|
+
this._cleanupPendingMutationsQueries();
|
|
636
|
+
this.notifyOne(queryHash);
|
|
637
|
+
this.notifyOneQueryOnce(queryHash);
|
|
638
|
+
this._cleanupPendingMutationsTimeout();
|
|
639
|
+
}
|
|
605
640
|
_handleReceive(connId, msg) {
|
|
606
641
|
var _a, _b, _c, _d, _e, _f;
|
|
607
642
|
// opt-out, enabled by default if schema
|
|
@@ -1107,7 +1142,7 @@ class Reactor {
|
|
|
1107
1142
|
return attrsRecord;
|
|
1108
1143
|
}
|
|
1109
1144
|
/** Runs instaql on a query and a store */
|
|
1110
|
-
dataForQuery(hash) {
|
|
1145
|
+
dataForQuery(hash, applyOptimistic = true) {
|
|
1111
1146
|
const errorMessage = this._errorMessage;
|
|
1112
1147
|
if (errorMessage) {
|
|
1113
1148
|
return { error: errorMessage };
|
|
@@ -1129,10 +1164,13 @@ class Reactor {
|
|
|
1129
1164
|
pendingMutationsVersion === cached.pendingMutationsVersion) {
|
|
1130
1165
|
return cached.data;
|
|
1131
1166
|
}
|
|
1132
|
-
|
|
1167
|
+
let store = result.store;
|
|
1168
|
+
const { pageInfo, aggregate, processedTxId } = result;
|
|
1133
1169
|
const mutations = this._rewriteMutationsSorted(store.attrs, pendingMutations);
|
|
1134
|
-
|
|
1135
|
-
|
|
1170
|
+
if (applyOptimistic) {
|
|
1171
|
+
store = this._applyOptimisticUpdates(store, mutations, processedTxId);
|
|
1172
|
+
}
|
|
1173
|
+
const resp = (0, instaql_js_1.default)({ store: store, pageInfo, aggregate }, q);
|
|
1136
1174
|
this._dataForQueryCache[hash] = {
|
|
1137
1175
|
querySubVersion,
|
|
1138
1176
|
pendingMutationsVersion,
|
|
@@ -1601,7 +1639,28 @@ class Reactor {
|
|
|
1601
1639
|
}
|
|
1602
1640
|
});
|
|
1603
1641
|
}
|
|
1642
|
+
syncUserToEndpoint(user) {
|
|
1643
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
1644
|
+
if (this.config.cookieEndpoint) {
|
|
1645
|
+
try {
|
|
1646
|
+
fetch(this.config.cookieEndpoint + '/sync-auth', {
|
|
1647
|
+
method: 'POST',
|
|
1648
|
+
body: JSON.stringify({
|
|
1649
|
+
user: user,
|
|
1650
|
+
}),
|
|
1651
|
+
headers: {
|
|
1652
|
+
'Content-Type': 'application/json',
|
|
1653
|
+
},
|
|
1654
|
+
});
|
|
1655
|
+
}
|
|
1656
|
+
catch (error) {
|
|
1657
|
+
console.error('Error syncing user with external endpoint', error);
|
|
1658
|
+
}
|
|
1659
|
+
}
|
|
1660
|
+
});
|
|
1661
|
+
}
|
|
1604
1662
|
updateUser(newUser) {
|
|
1663
|
+
this.syncUserToEndpoint(newUser);
|
|
1605
1664
|
const newV = { error: undefined, user: newUser };
|
|
1606
1665
|
this._currentUserCached = Object.assign({ isLoading: false }, newV);
|
|
1607
1666
|
this._dataForQueryCache = {};
|