@instantdb/core 0.22.55 → 0.22.56-experimental.drewh-ssr.19476173664.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 +65 -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 +65 -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 +1495 -1195
  47. package/dist/standalone/index.umd.cjs +3 -3
  48. package/package.json +2 -2
  49. package/src/Reactor.js +75 -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 +8 -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
+ });
@@ -107,6 +107,17 @@ export default class Reactor<RoomSchema extends import("./presence.ts").RoomSche
107
107
  */
108
108
  _onMergePendingMutations: (storageMuts: any, inMemoryMuts: any) => void;
109
109
  _flushEnqueuedRoomData(roomId: any): void;
110
+ /**
111
+ * Does the same thing as add-query-ok
112
+ * but called as a result of receiving query info from ssr
113
+ * @param {any} q
114
+ * @param {{ triples: any; pageInfo: any; }} result
115
+ * @param {boolean} enableCardinalityInference
116
+ */
117
+ _addQueryData(q: any, result: {
118
+ triples: any;
119
+ pageInfo: any;
120
+ }, enableCardinalityInference: boolean): void;
110
121
  _handleReceive(connId: any, msg: any): void;
111
122
  _sessionId: any;
112
123
  /**
@@ -144,7 +155,7 @@ export default class Reactor<RoomSchema extends import("./presence.ts").RoomSche
144
155
  _rewriteMutationsSorted(attrs: any, muts: any): any[];
145
156
  optimisticAttrs(): any;
146
157
  /** Runs instaql on a query and a store */
147
- dataForQuery(hash: any): any;
158
+ dataForQuery(hash: any, applyOptimistic?: boolean): any;
148
159
  _applyOptimisticUpdates(store: any, mutations: any, processedTxId: any): any;
149
160
  /** Re-run instaql and call all callbacks with new data */
150
161
  notifyOne: (hash: any) => void;
@@ -238,6 +249,7 @@ export default class Reactor<RoomSchema extends import("./presence.ts").RoomSche
238
249
  }>;
239
250
  _hasCurrentUser(): Promise<boolean>;
240
251
  changeCurrentUser(newUser: any): Promise<void>;
252
+ syncUserToEndpoint(user: any): Promise<void>;
241
253
  updateUser(newUser: any): void;
242
254
  sendMagicCode({ email }: {
243
255
  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":"AAuJA;;GAEG;AACH,6BAFwD,UAAU,SAArD,OAAQ,eAAe,EAAE,eAAgB;IA8DpD,sJAyGC;IApKD,WAAM;IACN,mBAAiB;IACjB,qBAAoB;IACpB,eAA2B;IAE3B,8BAA8B;IAC9B,gCAAU;IACV,8BAA8B;IAC9B,uCAAiB;IAEjB,wEAAwE;IACxE,UADW,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;QAAE,CAAC,EAAE,GAAG,CAAC;QAAC,EAAE,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,GAAG,CAAA;KAAE,CAAC,CAAC,CACtD;IACd,gFAAgF;IAChF,eADW,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;QAAE,CAAC,EAAE,GAAG,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,QAAQ,CAAA;KAAE,CAAC,CAAC,CACzD;IACnB,eAAa;IACb,gBAAc;IACd,wBAAsB;IACtB,2BAAyB;IACzB,YAAO;IACP,gBAAW;IACX,qCAAkC;IAClC,yBAA2B;IAC3B,4BAAwB;IACxB,yBAAyB;IACzB,YADW,UAAU,CACV;IACX,4BAA4B;IAC5B,gBADW,aAAa,CACF;IAEtB,qCAAqC;IACrC,cADW,sBAAsB,CACpB;IACb,6BAA6B;IAC7B,OADW,OAAO,GAAG,IAAI,CACZ;IACb,qBAAsB;IACtB,mBAAqB;IACrB,yDAAyD;IACzD,wBADW,OAAO,CAAC,IAAI,GAAG;QAAC,KAAK,EAAE;YAAC,OAAO,EAAE,MAAM,CAAA;SAAC,CAAA;KAAC,CAAC,CACvB;IAE9B,+DAA+D;IAC/D,YADW,IAAI,GAAG,OAAO,sBAAsB,EAAE,SAAS,CACxC;IAElB,yCAAyC;IACzC,mBADU,gBAAgB,GAAG,SAAS,CACpB;IAElB,iEAAiE;IACjE,QADW,MAAM,CAAC,MAAM,EAAE;QAAC,WAAW,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,GAAG,CAAA;KAAC,CAAC,CACjD;IACZ,sCAAsC;IACtC,oBADW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CACV;IACxB,cAAe;IACf,uBAAqB;IACrB,mBAAoB;IACpB;;;;MAA4E;IAC5E,wBAAsB;IACtB,uBAAwB;IACxB,qBAAqB;IACrB,MADW,MAAM,CACZ;IACL,8BAAyB;IACzB,sCAAiC;IACjC,oCAAsC;IAYpC,qBAAwD;IAYxD,cAAmE;IAoIrE,sBAIC;IAnDD,gCAOC;IAED;;;;MAMC;IAED,iCA4BC;IAQD;;;;OAIG;IACH,2BAJW,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAI,OAAO,WACxD,MAAM,aACN;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAC,QA+B5E;IAED,wCAIC;IAED;;;;OAIG;IACH,oBAAqB,iBAAY,EAAE,iBAAY,UA0C7C;IAEF;;;OAGG;IACH,2BAA4B,gBAAW,EAAE,iBAAY,UAanD;IAEF,0CAgBC;IAED;;;;;;OAMG;IACH,iBAJW,GAAG,UACH;QAAE,OAAO,EAAE,GAAG,CAAC;QAAC,QAAQ,EAAE,GAAG,CAAC;KAAE,8BAChC,OAAO,QA8BjB;IAED,4CAgNC;IA9LK,gBAAmC;IAgMzC;;;;OAIG;IACH,6BAJW,SAAS,GAAG,OAAO,WACnB,MAAM,YACN;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAC,QAoB3E;IAED,oCA2DC;IAED,oEAKC;IAED,4BAOC;IAKD,oBAAqB,MAAC,SAGpB;IAEF,0CAUC;IAED;;;;;;;;;OASG;IACH,uDAuBC;IAED,2CAwCC;IAED,sDAQC;IAED,8CAMC;IAED,uCAUC;IAaD,kEA6EC;IAED,sDAEC;IAKD,uBAoCC;IAED,0CAA0C;IAC1C,wDA0CC;IAED,6EAOC;IAED,0DAA0D;IAC1D,YAAa,SAAI,UASf;IAEF,qBAAsB,SAAI,UAQxB;IAEF,mBAAoB,SAAI,EAAE,UAAK,UAG7B;IAEF,mCAAmC;IACnC,kBAIC;IAED,wBAGC;IAED,wEAAwE;IACxE,SAAU,WAAM,kBAqBd;IAEF;;;;OAIG;IACH,UAAW,SAJA,GAIO,EAAE,QAHT,GAGc,kBAuBvB;IAEF,iBAIC;IAED;;;;;;OAMG;IACH,iDAqCC;IAKD,4DAA4D;IAC5D,8BA0BC;IAED;;OAEG;IACH,wCAgBC;IAED;;;;OAIG;IACH,wCAsBC;IAED,qCAKC;IAED,kDAkBC;IAED,mBAAoB,MAAC,UA+BnB;IAEF,sBAAuB,MAAC,UAmBtB;IAEF,oBAAqB,MAAC,UAWpB;IAEF,+BAsBE;IAEF,oBAAqB,MAAC,UAgCpB;IAEF,qBAqDC;IAED;;;;;;;;;OASG;IACH,oCAYC;IAID,8BAoDC;IAED;;;OAGG;IACH;;;;OA+CC;IAED;eAzgDkC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAC;OA2gDlD;IAED,+CAMC;IAED,mCAgBC;IAED,wBAMC;IAED,+CAQC;IAED,oCAUC;IAED,gCAEC;IAED,0CAEC;IAED,wBAIC;IAED,8CAEC;IAED,yCAEC;IAED;;;;MAEC;IAED,gCAGC;IAED;;;OAcC;IAED,oCAGC;IAED,+CAiBC;IAED,6CAgBC;IAED,+BAgBC;IAED;;+CAMC;IAED;;;wCAYC;IAED,uEAQC;IAED,iDAOC;IAED,8DAoBC;IAED,kCAIC;IAED;;;;;;;OAOG;IACH,oDAJG;QAAuB,UAAU,EAAzB,MAAM;QACS,WAAW,EAA1B,MAAM;KACd,GAAU,MAAM,CAKlB;IAED;;;;OAIG;IACH,6CAHG;QAAuB,IAAI,EAAnB,MAAM;QACU,YAAY,GAA5B,MAAM;KAChB,mCAaA;IAED,oBAGC;IAED;;;;;OAKG;IACH,kDAJG;QAAuB,UAAU,EAAzB,MAAM;QACS,OAAO,EAAtB,MAAM;QAC6B,KAAK,GAAxC,MAAM,GAAG,IAAI,GAAG,SAAS;KACnC,mCAeA;IAKD;;;;OAIG;IACH,iBAJW,MAAM,oBACN,GAAG,GAAG,IAAI,GAAG,SAAS,cA4BhC;IAED,gCAiBC;IAMD;;;;;;;;;;;MAUC;IAGD,oEAsBC;IAED,8CAMC;IAED,2CAGC;IAED,iCAEC;IAED,0DAKC;IAGD,8EAuBC;IAED,uCAIC;IAED,oDAaC;IAED,mDAyBC;IAED,gDAWC;IAKD;;;;;aAeC;IAED,uEAQC;IAED,6DAoBC;IAED,4DAWC;IAKD,oFAWC;IAED,8DAWC;IAKD,+CAaC;IAED,wCAWC;CACF;qBAvxEa,OAAO,gBAAgB,EAAE,MAAM;;4BAE/B,OAAO,iBAAiB,EAAE,aAAa;qCACvC,OAAO,iBAAiB,EAAE,sBAAsB;gCAtB9B,4BAA4B;yBADnC,qBAAqB;yBAJrB,cAAc;4BACX,iBAAiB;6BAHhB,uBAAuB;kCAClB,4BAA4B"}
@@ -475,7 +475,13 @@ class Reactor {
475
475
  this._initStorage(Storage);
476
476
  this._oauthCallbackResponse = this._oauthLoginInit();
477
477
  // kick off a request to cache it
478
- this.getCurrentUser();
478
+ this.getCurrentUser().then((userInfo) => {
479
+ this.syncUserToEndpoint(userInfo.user);
480
+ });
481
+ setInterval(() => __awaiter(this, void 0, void 0, function* () {
482
+ const currentUser = yield this.getCurrentUser();
483
+ this.syncUserToEndpoint(currentUser.user);
484
+ }), 1000 * 60 * 20);
479
485
  NetworkListener.getIsOnline().then((isOnline) => {
480
486
  this._isOnline = isOnline;
481
487
  this._startSocket();
@@ -586,6 +592,36 @@ class Reactor {
586
592
  }
587
593
  }
588
594
  }
595
+ /**
596
+ * Does the same thing as add-query-ok
597
+ * but called as a result of receiving query info from ssr
598
+ * @param {any} q
599
+ * @param {{ triples: any; pageInfo: any; }} result
600
+ * @param {boolean} enableCardinalityInference
601
+ */
602
+ _addQueryData(q, result, enableCardinalityInference) {
603
+ if (!this.attrs) {
604
+ throw new Error('Attrs in reactor have not been set');
605
+ }
606
+ const queryHash = (0, weakHash_ts_1.default)(q);
607
+ const store = s.createStore(this.attrs, result.triples, enableCardinalityInference, this._linkIndex, this.config.useDateObjects);
608
+ this.querySubs.set((prev) => {
609
+ prev[queryHash] = {
610
+ result: {
611
+ store,
612
+ pageInfo: result.pageInfo,
613
+ processedTxId: undefined,
614
+ isExternal: true,
615
+ },
616
+ q,
617
+ };
618
+ return prev;
619
+ });
620
+ this._cleanupPendingMutationsQueries();
621
+ this.notifyOne(queryHash);
622
+ this.notifyOneQueryOnce(queryHash);
623
+ this._cleanupPendingMutationsTimeout();
624
+ }
589
625
  _handleReceive(connId, msg) {
590
626
  var _a, _b, _c, _d, _e, _f;
591
627
  // opt-out, enabled by default if schema
@@ -1033,7 +1069,7 @@ class Reactor {
1033
1069
  return attrsRecord;
1034
1070
  }
1035
1071
  /** Runs instaql on a query and a store */
1036
- dataForQuery(hash) {
1072
+ dataForQuery(hash, applyOptimistic = true) {
1037
1073
  const errorMessage = this._errorMessage;
1038
1074
  if (errorMessage) {
1039
1075
  return { error: errorMessage };
@@ -1055,10 +1091,13 @@ class Reactor {
1055
1091
  pendingMutationsVersion === cached.pendingMutationsVersion) {
1056
1092
  return cached.data;
1057
1093
  }
1058
- const { store, pageInfo, aggregate, processedTxId } = result;
1094
+ let store = result.store;
1095
+ const { pageInfo, aggregate, processedTxId } = result;
1059
1096
  const mutations = this._rewriteMutationsSorted(store.attrs, pendingMutations);
1060
- const newStore = this._applyOptimisticUpdates(store, mutations, processedTxId);
1061
- const resp = (0, instaql_js_1.default)({ store: newStore, pageInfo, aggregate }, q);
1097
+ if (applyOptimistic) {
1098
+ store = this._applyOptimisticUpdates(store, mutations, processedTxId);
1099
+ }
1100
+ const resp = (0, instaql_js_1.default)({ store: store, pageInfo, aggregate }, q);
1062
1101
  this._dataForQueryCache[hash] = {
1063
1102
  querySubVersion,
1064
1103
  pendingMutationsVersion,
@@ -1512,7 +1551,28 @@ class Reactor {
1512
1551
  }
1513
1552
  });
1514
1553
  }
1554
+ syncUserToEndpoint(user) {
1555
+ return __awaiter(this, void 0, void 0, function* () {
1556
+ if (this.config.cookieEndpoint) {
1557
+ try {
1558
+ fetch(this.config.cookieEndpoint + '/sync-auth', {
1559
+ method: 'POST',
1560
+ body: JSON.stringify({
1561
+ user: user,
1562
+ }),
1563
+ headers: {
1564
+ 'Content-Type': 'application/json',
1565
+ },
1566
+ });
1567
+ }
1568
+ catch (error) {
1569
+ console.error('Error syncing user with external endpoint', error);
1570
+ }
1571
+ }
1572
+ });
1573
+ }
1515
1574
  updateUser(newUser) {
1575
+ this.syncUserToEndpoint(newUser);
1516
1576
  const newV = { error: undefined, user: newUser };
1517
1577
  this._currentUserCached = Object.assign({ isLoading: false }, newV);
1518
1578
  this._dataForQueryCache = {};