@instantdb/core 0.22.89-experimental.drewh-fix-export.20277749804.1 → 0.22.89-experimental.drewh-ssr.20278660220.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 (56) 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 +69 -5
  5. package/dist/commonjs/Reactor.js.map +1 -1
  6. package/dist/commonjs/createRouteHandler.d.ts +8 -0
  7. package/dist/commonjs/createRouteHandler.d.ts.map +1 -0
  8. package/dist/commonjs/createRouteHandler.js +57 -0
  9. package/dist/commonjs/createRouteHandler.js.map +1 -0
  10. package/dist/commonjs/framework.d.ts +77 -0
  11. package/dist/commonjs/framework.d.ts.map +1 -0
  12. package/dist/commonjs/framework.js +209 -0
  13. package/dist/commonjs/framework.js.map +1 -0
  14. package/dist/commonjs/index.d.ts +5 -1
  15. package/dist/commonjs/index.d.ts.map +1 -1
  16. package/dist/commonjs/index.js +7 -1
  17. package/dist/commonjs/index.js.map +1 -1
  18. package/dist/commonjs/parseSchemaFromJSON.d.ts +3 -0
  19. package/dist/commonjs/parseSchemaFromJSON.d.ts.map +1 -0
  20. package/dist/commonjs/parseSchemaFromJSON.js +148 -0
  21. package/dist/commonjs/parseSchemaFromJSON.js.map +1 -0
  22. package/dist/commonjs/reactorTypes.d.ts +5 -4
  23. package/dist/commonjs/reactorTypes.d.ts.map +1 -1
  24. package/dist/commonjs/reactorTypes.js.map +1 -1
  25. package/dist/esm/Reactor.d.ts +13 -1
  26. package/dist/esm/Reactor.d.ts.map +1 -1
  27. package/dist/esm/Reactor.js +69 -5
  28. package/dist/esm/Reactor.js.map +1 -1
  29. package/dist/esm/createRouteHandler.d.ts +8 -0
  30. package/dist/esm/createRouteHandler.d.ts.map +1 -0
  31. package/dist/esm/createRouteHandler.js +53 -0
  32. package/dist/esm/createRouteHandler.js.map +1 -0
  33. package/dist/esm/framework.d.ts +77 -0
  34. package/dist/esm/framework.d.ts.map +1 -0
  35. package/dist/esm/framework.js +169 -0
  36. package/dist/esm/framework.js.map +1 -0
  37. package/dist/esm/index.d.ts +5 -1
  38. package/dist/esm/index.d.ts.map +1 -1
  39. package/dist/esm/index.js +5 -2
  40. package/dist/esm/index.js.map +1 -1
  41. package/dist/esm/parseSchemaFromJSON.d.ts +3 -0
  42. package/dist/esm/parseSchemaFromJSON.d.ts.map +1 -0
  43. package/dist/esm/parseSchemaFromJSON.js +144 -0
  44. package/dist/esm/parseSchemaFromJSON.js.map +1 -0
  45. package/dist/esm/reactorTypes.d.ts +5 -4
  46. package/dist/esm/reactorTypes.d.ts.map +1 -1
  47. package/dist/esm/reactorTypes.js.map +1 -1
  48. package/dist/standalone/index.js +2697 -2377
  49. package/dist/standalone/index.umd.cjs +3 -3
  50. package/package.json +2 -2
  51. package/src/Reactor.js +84 -6
  52. package/src/createRouteHandler.ts +44 -0
  53. package/src/framework.ts +294 -0
  54. package/src/index.ts +9 -0
  55. package/src/parseSchemaFromJSON.ts +176 -0
  56. package/src/reactorTypes.ts +5 -4
@@ -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
+ });
@@ -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":"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"}
1
+ {"version":3,"file":"Reactor.d.ts","sourceRoot":"","sources":["../../src/Reactor.js"],"names":[],"mappings":"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"}
@@ -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
@@ -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
- const { store, attrsStore, pageInfo, aggregate, processedTxId } = result;
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
- const { store: newStore, attrsStore: newAttrsStore } = this._applyOptimisticUpdates(store, attrsStore, mutations, processedTxId);
1208
- const resp = (0, instaql_ts_1.default)({ store: newStore, attrsStore: newAttrsStore, pageInfo, aggregate }, q);
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) {
@@ -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 = {};