@instantdb/core 0.22.89 → 0.22.90-experimental.drewh-ssr.20286580593.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 (88) hide show
  1. package/__tests__/src/Reactor.test.js +1 -1
  2. package/__tests__/src/instaml.test.ts +1 -1
  3. package/__tests__/src/serializeSchema.test.ts +123 -0
  4. package/__tests__/src/store.test.ts +1 -1
  5. package/__tests__/src/transactionValidation.test.ts +1 -1
  6. package/dist/commonjs/Reactor.d.ts +13 -1
  7. package/dist/commonjs/Reactor.d.ts.map +1 -1
  8. package/dist/commonjs/Reactor.js +79 -15
  9. package/dist/commonjs/Reactor.js.map +1 -1
  10. package/dist/commonjs/SyncTable.js +3 -3
  11. package/dist/commonjs/SyncTable.js.map +1 -1
  12. package/dist/commonjs/createRouteHandler.d.ts +8 -0
  13. package/dist/commonjs/createRouteHandler.d.ts.map +1 -0
  14. package/dist/commonjs/createRouteHandler.js +57 -0
  15. package/dist/commonjs/createRouteHandler.js.map +1 -0
  16. package/dist/commonjs/framework.d.ts +77 -0
  17. package/dist/commonjs/framework.d.ts.map +1 -0
  18. package/dist/commonjs/framework.js +209 -0
  19. package/dist/commonjs/framework.js.map +1 -0
  20. package/dist/commonjs/index.d.ts +6 -2
  21. package/dist/commonjs/index.d.ts.map +1 -1
  22. package/dist/commonjs/index.js +9 -3
  23. package/dist/commonjs/index.js.map +1 -1
  24. package/dist/commonjs/instaml.js +8 -8
  25. package/dist/commonjs/instaml.js.map +1 -1
  26. package/dist/commonjs/instaql.js +2 -2
  27. package/dist/commonjs/instaql.js.map +1 -1
  28. package/dist/commonjs/parseSchemaFromJSON.d.ts +3 -0
  29. package/dist/commonjs/parseSchemaFromJSON.d.ts.map +1 -0
  30. package/dist/commonjs/parseSchemaFromJSON.js +148 -0
  31. package/dist/commonjs/parseSchemaFromJSON.js.map +1 -0
  32. package/dist/commonjs/reactorTypes.d.ts +5 -4
  33. package/dist/commonjs/reactorTypes.d.ts.map +1 -1
  34. package/dist/commonjs/reactorTypes.js.map +1 -1
  35. package/dist/commonjs/utils/{uuid.d.ts → id.d.ts} +1 -1
  36. package/dist/commonjs/utils/id.d.ts.map +1 -0
  37. package/dist/commonjs/utils/{uuid.js → id.js} +1 -1
  38. package/dist/commonjs/utils/id.js.map +1 -0
  39. package/dist/esm/Reactor.d.ts +13 -1
  40. package/dist/esm/Reactor.d.ts.map +1 -1
  41. package/dist/esm/Reactor.js +70 -6
  42. package/dist/esm/Reactor.js.map +1 -1
  43. package/dist/esm/SyncTable.js +1 -1
  44. package/dist/esm/SyncTable.js.map +1 -1
  45. package/dist/esm/createRouteHandler.d.ts +8 -0
  46. package/dist/esm/createRouteHandler.d.ts.map +1 -0
  47. package/dist/esm/createRouteHandler.js +53 -0
  48. package/dist/esm/createRouteHandler.js.map +1 -0
  49. package/dist/esm/framework.d.ts +77 -0
  50. package/dist/esm/framework.d.ts.map +1 -0
  51. package/dist/esm/framework.js +169 -0
  52. package/dist/esm/framework.js.map +1 -0
  53. package/dist/esm/index.d.ts +6 -2
  54. package/dist/esm/index.d.ts.map +1 -1
  55. package/dist/esm/index.js +6 -3
  56. package/dist/esm/index.js.map +1 -1
  57. package/dist/esm/instaml.js +1 -1
  58. package/dist/esm/instaml.js.map +1 -1
  59. package/dist/esm/instaql.js +1 -1
  60. package/dist/esm/instaql.js.map +1 -1
  61. package/dist/esm/parseSchemaFromJSON.d.ts +3 -0
  62. package/dist/esm/parseSchemaFromJSON.d.ts.map +1 -0
  63. package/dist/esm/parseSchemaFromJSON.js +144 -0
  64. package/dist/esm/parseSchemaFromJSON.js.map +1 -0
  65. package/dist/esm/reactorTypes.d.ts +5 -4
  66. package/dist/esm/reactorTypes.d.ts.map +1 -1
  67. package/dist/esm/reactorTypes.js.map +1 -1
  68. package/dist/esm/utils/{uuid.d.ts → id.d.ts} +1 -1
  69. package/dist/esm/utils/id.d.ts.map +1 -0
  70. package/dist/esm/utils/{uuid.js → id.js} +1 -1
  71. package/dist/esm/utils/id.js.map +1 -0
  72. package/dist/standalone/index.js +2697 -2377
  73. package/dist/standalone/index.umd.cjs +3 -3
  74. package/package.json +2 -2
  75. package/src/Reactor.js +85 -7
  76. package/src/SyncTable.ts +1 -1
  77. package/src/createRouteHandler.ts +44 -0
  78. package/src/framework.ts +294 -0
  79. package/src/index.ts +10 -1
  80. package/src/instaml.ts +1 -1
  81. package/src/instaql.ts +1 -1
  82. package/src/parseSchemaFromJSON.ts +176 -0
  83. package/src/reactorTypes.ts +5 -4
  84. package/dist/commonjs/utils/uuid.d.ts.map +0 -1
  85. package/dist/commonjs/utils/uuid.js.map +0 -1
  86. package/dist/esm/utils/uuid.d.ts.map +0 -1
  87. package/dist/esm/utils/uuid.js.map +0 -1
  88. /package/src/utils/{uuid.ts → id.ts} +0 -0
@@ -11,7 +11,7 @@ import * as instaml from '../../src/instaml';
11
11
  import * as instatx from '../../src/instatx';
12
12
  import zenecaAttrs from './data/zeneca/attrs.json';
13
13
  import zenecaTriples from './data/zeneca/triples.json';
14
- import uuid from '../../src/utils/uuid';
14
+ import uuid from '../../src/utils/id';
15
15
  import { weakHash } from '../../src';
16
16
  import { AttrsStoreClass } from '../../src/store';
17
17
 
@@ -4,7 +4,7 @@ import * as instatx from '../../src/instatx';
4
4
  import zenecaAttrs from './data/zeneca/attrs.json';
5
5
  import zenecaTriples from './data/zeneca/triples.json';
6
6
  import { createStore, transact, AttrsStoreClass } from '../../src/store';
7
- import uuid from '../../src/utils/uuid';
7
+ import uuid from '../../src/utils/id';
8
8
  import { i, InstantDBAttr } from '../../src/index';
9
9
 
10
10
  const zenecaAttrToId = zenecaAttrs.reduce((res, x) => {
@@ -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
+ });
@@ -14,7 +14,7 @@ import {
14
14
  attrsStoreFromJSON,
15
15
  } from '../../src/store';
16
16
  import query from '../../src/instaql';
17
- import uuid from '../../src/utils/uuid';
17
+ import uuid from '../../src/utils/id';
18
18
  import { tx } from '../../src/instatx';
19
19
  import * as instaml from '../../src/instaml';
20
20
  import * as datalog from '../../src/datalog';
@@ -1,7 +1,7 @@
1
1
  import { i } from '../../src/schema';
2
2
  import { validateTransactions } from '../../src/transactionValidation.ts';
3
3
  import { lookup, tx as originalTx, TxChunk } from '../../src/instatx.ts';
4
- import id from '../../src/utils/uuid.ts';
4
+ import id from '../../src/utils/id.ts';
5
5
  import { expect, test } from 'vitest';
6
6
  import { InstantSchemaDef } from '../../src';
7
7
 
@@ -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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"}
@@ -61,7 +61,7 @@ const weakHash_ts_1 = __importDefault(require("./utils/weakHash.js"));
61
61
  const instaql_ts_1 = __importDefault(require("./instaql.js"));
62
62
  const instaml = __importStar(require("./instaml.js"));
63
63
  const s = __importStar(require("./store.js"));
64
- const uuid_ts_1 = __importDefault(require("./utils/uuid.js"));
64
+ const id_ts_1 = __importDefault(require("./utils/id.js"));
65
65
  const IndexedDBStorage_ts_1 = __importDefault(require("./IndexedDBStorage.js"));
66
66
  const WindowNetworkListener_js_1 = __importDefault(require("./WindowNetworkListener.js"));
67
67
  const authAPI = __importStar(require("./authAPI.js"));
@@ -333,7 +333,7 @@ class Reactor {
333
333
  * @returns
334
334
  */
335
335
  this.pushOps = (txSteps, error) => {
336
- const eventId = (0, uuid_ts_1.default)();
336
+ const eventId = (0, id_ts_1.default)();
337
337
  const mutations = [...this._pendingMutations().values()];
338
338
  const order = Math.max(0, ...mutations.map((mut) => mut.order || 0)) + 1;
339
339
  const mutation = {
@@ -363,7 +363,7 @@ class Reactor {
363
363
  this.getCurrentUser()
364
364
  .then((resp) => {
365
365
  var _a;
366
- this._trySend((0, uuid_ts_1.default)(), {
366
+ this._trySend((0, id_ts_1.default)(), {
367
367
  op: 'init',
368
368
  'app-id': this.config.appId,
369
369
  'refresh-token': (_a = resp.user) === null || _a === void 0 ? void 0 : _a['refresh_token'],
@@ -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
@@ -962,7 +999,7 @@ class Reactor {
962
999
  this.notifyAttrsSubs();
963
1000
  }
964
1001
  _startQuerySub(q, hash) {
965
- const eventId = (0, uuid_ts_1.default)();
1002
+ const eventId = (0, id_ts_1.default)();
966
1003
  this.querySubs.updateInPlace((prev) => {
967
1004
  prev[hash] = prev[hash] || { q, result: null, eventId };
968
1005
  prev[hash].lastAccessed = Date.now();
@@ -1051,7 +1088,7 @@ class Reactor {
1051
1088
  delete this.queryOnceDfds[hash];
1052
1089
  delete this._dataForQueryCache[hash];
1053
1090
  this.querySubs.unloadKey(hash);
1054
- this._trySendAuthed((0, uuid_ts_1.default)(), { op: 'remove-query', q });
1091
+ this._trySendAuthed((0, id_ts_1.default)(), { op: 'remove-query', q });
1055
1092
  }
1056
1093
  // When we `pushTx`, it's possible that we don't yet have `this.attrs`
1057
1094
  // This means that `tx-steps` in `pendingMutations` will include `add-attr`
@@ -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) {
@@ -1425,7 +1468,7 @@ class Reactor {
1425
1468
  if (current) {
1426
1469
  return current;
1427
1470
  }
1428
- const newId = (0, uuid_ts_1.default)();
1471
+ const newId = (0, id_ts_1.default)();
1429
1472
  this.kv.updateInPlace((prev) => {
1430
1473
  if (prev[k])
1431
1474
  return;
@@ -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 = {};
@@ -1891,18 +1955,18 @@ class Reactor {
1891
1955
  this._notifyPresenceSubs(roomId);
1892
1956
  }
1893
1957
  _trySetPresence(roomId, data) {
1894
- this._trySendAuthed((0, uuid_ts_1.default)(), {
1958
+ this._trySendAuthed((0, id_ts_1.default)(), {
1895
1959
  op: 'set-presence',
1896
1960
  'room-id': roomId,
1897
1961
  data,
1898
1962
  });
1899
1963
  }
1900
1964
  _tryJoinRoom(roomId, data) {
1901
- this._trySendAuthed((0, uuid_ts_1.default)(), { op: 'join-room', 'room-id': roomId, data });
1965
+ this._trySendAuthed((0, id_ts_1.default)(), { op: 'join-room', 'room-id': roomId, data });
1902
1966
  delete this._roomsPendingLeave[roomId];
1903
1967
  }
1904
1968
  _tryLeaveRoom(roomId) {
1905
- this._trySendAuthed((0, uuid_ts_1.default)(), { op: 'leave-room', 'room-id': roomId });
1969
+ this._trySendAuthed((0, id_ts_1.default)(), { op: 'leave-room', 'room-id': roomId });
1906
1970
  }
1907
1971
  _trySetRoomConnected(roomId, isConnected) {
1908
1972
  const room = this._rooms[roomId];
@@ -1995,7 +2059,7 @@ class Reactor {
1995
2059
  this._tryBroadcast(roomId, roomType, topic, data);
1996
2060
  }
1997
2061
  _tryBroadcast(roomId, roomType, topic, data) {
1998
- this._trySendAuthed((0, uuid_ts_1.default)(), {
2062
+ this._trySendAuthed((0, id_ts_1.default)(), {
1999
2063
  op: 'client-broadcast',
2000
2064
  'room-id': roomId,
2001
2065
  roomType,