@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.
Files changed (54) hide show
  1. package/__tests__/src/serializeSchema.test.ts +123 -0
  2. package/dist/commonjs/Reactor.d.ts +13 -1
  3. package/dist/commonjs/Reactor.d.ts.map +1 -1
  4. package/dist/commonjs/Reactor.js +64 -5
  5. package/dist/commonjs/Reactor.js.map +1 -1
  6. package/dist/commonjs/clientTypes.d.ts.map +1 -1
  7. package/dist/commonjs/clientTypes.js.map +1 -1
  8. package/dist/commonjs/createRouteHandler.d.ts +8 -0
  9. package/dist/commonjs/createRouteHandler.d.ts.map +1 -0
  10. package/dist/commonjs/createRouteHandler.js +57 -0
  11. package/dist/commonjs/createRouteHandler.js.map +1 -0
  12. package/dist/commonjs/framework.d.ts +75 -0
  13. package/dist/commonjs/framework.d.ts.map +1 -0
  14. package/dist/commonjs/framework.js +199 -0
  15. package/dist/commonjs/framework.js.map +1 -0
  16. package/dist/commonjs/index.d.ts +5 -1
  17. package/dist/commonjs/index.d.ts.map +1 -1
  18. package/dist/commonjs/index.js +7 -1
  19. package/dist/commonjs/index.js.map +1 -1
  20. package/dist/commonjs/parseSchemaFromJSON.d.ts +3 -0
  21. package/dist/commonjs/parseSchemaFromJSON.d.ts.map +1 -0
  22. package/dist/commonjs/parseSchemaFromJSON.js +148 -0
  23. package/dist/commonjs/parseSchemaFromJSON.js.map +1 -0
  24. package/dist/esm/Reactor.d.ts +13 -1
  25. package/dist/esm/Reactor.d.ts.map +1 -1
  26. package/dist/esm/Reactor.js +64 -5
  27. package/dist/esm/Reactor.js.map +1 -1
  28. package/dist/esm/clientTypes.d.ts.map +1 -1
  29. package/dist/esm/clientTypes.js.map +1 -1
  30. package/dist/esm/createRouteHandler.d.ts +8 -0
  31. package/dist/esm/createRouteHandler.d.ts.map +1 -0
  32. package/dist/esm/createRouteHandler.js +53 -0
  33. package/dist/esm/createRouteHandler.js.map +1 -0
  34. package/dist/esm/framework.d.ts +75 -0
  35. package/dist/esm/framework.d.ts.map +1 -0
  36. package/dist/esm/framework.js +159 -0
  37. package/dist/esm/framework.js.map +1 -0
  38. package/dist/esm/index.d.ts +5 -1
  39. package/dist/esm/index.d.ts.map +1 -1
  40. package/dist/esm/index.js +5 -2
  41. package/dist/esm/index.js.map +1 -1
  42. package/dist/esm/parseSchemaFromJSON.d.ts +3 -0
  43. package/dist/esm/parseSchemaFromJSON.d.ts.map +1 -0
  44. package/dist/esm/parseSchemaFromJSON.js +144 -0
  45. package/dist/esm/parseSchemaFromJSON.js.map +1 -0
  46. package/dist/standalone/index.js +1628 -1326
  47. package/dist/standalone/index.umd.cjs +3 -3
  48. package/package.json +2 -2
  49. package/src/Reactor.js +74 -9
  50. package/src/clientTypes.ts +5 -1
  51. package/src/createRouteHandler.ts +44 -0
  52. package/src/framework.ts +281 -0
  53. package/src/index.ts +9 -0
  54. 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":"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"}
1
+ {"version":3,"file":"Reactor.d.ts","sourceRoot":"","sources":["../../src/Reactor.js"],"names":[],"mappings":"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"}
@@ -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
- const { store, pageInfo, aggregate, processedTxId } = result;
1167
+ let store = result.store;
1168
+ const { pageInfo, aggregate, processedTxId } = result;
1133
1169
  const mutations = this._rewriteMutationsSorted(store.attrs, pendingMutations);
1134
- const newStore = this._applyOptimisticUpdates(store, mutations, processedTxId);
1135
- const resp = (0, instaql_js_1.default)({ store: newStore, pageInfo, aggregate }, q);
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 = {};