@instantdb/core 0.22.98 → 0.22.99-experimental.add-user-perm-rules.20792844601.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 (126) hide show
  1. package/dist/commonjs/Connection.js +51 -50
  2. package/dist/commonjs/Connection.js.map +1 -1
  3. package/dist/commonjs/InMemoryStorage.js +32 -13
  4. package/dist/commonjs/InMemoryStorage.js.map +1 -1
  5. package/dist/commonjs/IndexedDBStorage.js +217 -193
  6. package/dist/commonjs/IndexedDBStorage.js.map +1 -1
  7. package/dist/commonjs/InstantError.js +0 -1
  8. package/dist/commonjs/InstantError.js.map +1 -1
  9. package/dist/commonjs/Reactor.js +610 -566
  10. package/dist/commonjs/Reactor.js.map +1 -1
  11. package/dist/commonjs/StorageAPI.js +70 -51
  12. package/dist/commonjs/StorageAPI.js.map +1 -1
  13. package/dist/commonjs/SyncTable.js +81 -68
  14. package/dist/commonjs/SyncTable.js.map +1 -1
  15. package/dist/commonjs/WindowNetworkListener.js +13 -2
  16. package/dist/commonjs/WindowNetworkListener.js.map +1 -1
  17. package/dist/commonjs/__types__/fieldsTypeTest.js +16 -8
  18. package/dist/commonjs/__types__/fieldsTypeTest.js.map +1 -1
  19. package/dist/commonjs/__types__/useDatesTypeTest.js +6 -3
  20. package/dist/commonjs/__types__/useDatesTypeTest.js.map +1 -1
  21. package/dist/commonjs/authAPI.js +79 -62
  22. package/dist/commonjs/authAPI.js.map +1 -1
  23. package/dist/commonjs/createRouteHandler.js +15 -5
  24. package/dist/commonjs/createRouteHandler.js.map +1 -1
  25. package/dist/commonjs/datalog.js +1 -1
  26. package/dist/commonjs/datalog.js.map +1 -1
  27. package/dist/commonjs/devtool.js +8 -26
  28. package/dist/commonjs/devtool.js.map +1 -1
  29. package/dist/commonjs/framework.d.ts.map +1 -1
  30. package/dist/commonjs/framework.js +152 -142
  31. package/dist/commonjs/framework.js.map +1 -1
  32. package/dist/commonjs/index.js +190 -204
  33. package/dist/commonjs/index.js.map +1 -1
  34. package/dist/commonjs/instaml.js +30 -44
  35. package/dist/commonjs/instaml.js.map +1 -1
  36. package/dist/commonjs/instaql.js +33 -25
  37. package/dist/commonjs/instaql.js.map +1 -1
  38. package/dist/commonjs/parseSchemaFromJSON.js +7 -6
  39. package/dist/commonjs/parseSchemaFromJSON.js.map +1 -1
  40. package/dist/commonjs/presence.js +8 -7
  41. package/dist/commonjs/presence.js.map +1 -1
  42. package/dist/commonjs/queryValidation.js +2 -1
  43. package/dist/commonjs/queryValidation.js.map +1 -1
  44. package/dist/commonjs/schema.js +6 -8
  45. package/dist/commonjs/schema.js.map +1 -1
  46. package/dist/commonjs/schemaTypes.js +3 -22
  47. package/dist/commonjs/schemaTypes.js.map +1 -1
  48. package/dist/commonjs/store.js +38 -29
  49. package/dist/commonjs/store.js.map +1 -1
  50. package/dist/commonjs/transactionValidation.js +2 -1
  51. package/dist/commonjs/transactionValidation.js.map +1 -1
  52. package/dist/commonjs/utils/Deferred.js +0 -3
  53. package/dist/commonjs/utils/Deferred.js.map +1 -1
  54. package/dist/commonjs/utils/PersistedObject.js +233 -216
  55. package/dist/commonjs/utils/PersistedObject.js.map +1 -1
  56. package/dist/commonjs/utils/fetch.js +19 -9
  57. package/dist/commonjs/utils/fetch.js.map +1 -1
  58. package/dist/commonjs/utils/linkIndex.js +4 -2
  59. package/dist/commonjs/utils/linkIndex.js.map +1 -1
  60. package/dist/commonjs/utils/object.js +1 -1
  61. package/dist/commonjs/utils/object.js.map +1 -1
  62. package/dist/esm/Connection.js +51 -50
  63. package/dist/esm/Connection.js.map +1 -1
  64. package/dist/esm/InMemoryStorage.js +32 -13
  65. package/dist/esm/InMemoryStorage.js.map +1 -1
  66. package/dist/esm/IndexedDBStorage.js +217 -193
  67. package/dist/esm/IndexedDBStorage.js.map +1 -1
  68. package/dist/esm/InstantError.js +0 -1
  69. package/dist/esm/InstantError.js.map +1 -1
  70. package/dist/esm/Reactor.js +610 -566
  71. package/dist/esm/Reactor.js.map +1 -1
  72. package/dist/esm/StorageAPI.js +70 -51
  73. package/dist/esm/StorageAPI.js.map +1 -1
  74. package/dist/esm/SyncTable.js +81 -68
  75. package/dist/esm/SyncTable.js.map +1 -1
  76. package/dist/esm/WindowNetworkListener.js +13 -2
  77. package/dist/esm/WindowNetworkListener.js.map +1 -1
  78. package/dist/esm/__types__/fieldsTypeTest.js +16 -8
  79. package/dist/esm/__types__/fieldsTypeTest.js.map +1 -1
  80. package/dist/esm/__types__/useDatesTypeTest.js +6 -3
  81. package/dist/esm/__types__/useDatesTypeTest.js.map +1 -1
  82. package/dist/esm/authAPI.js +79 -62
  83. package/dist/esm/authAPI.js.map +1 -1
  84. package/dist/esm/createRouteHandler.js +15 -5
  85. package/dist/esm/createRouteHandler.js.map +1 -1
  86. package/dist/esm/datalog.js +1 -1
  87. package/dist/esm/datalog.js.map +1 -1
  88. package/dist/esm/devtool.js +8 -26
  89. package/dist/esm/devtool.js.map +1 -1
  90. package/dist/esm/framework.d.ts.map +1 -1
  91. package/dist/esm/framework.js +152 -142
  92. package/dist/esm/framework.js.map +1 -1
  93. package/dist/esm/index.js +190 -204
  94. package/dist/esm/index.js.map +1 -1
  95. package/dist/esm/instaml.js +30 -44
  96. package/dist/esm/instaml.js.map +1 -1
  97. package/dist/esm/instaql.js +33 -25
  98. package/dist/esm/instaql.js.map +1 -1
  99. package/dist/esm/parseSchemaFromJSON.js +7 -6
  100. package/dist/esm/parseSchemaFromJSON.js.map +1 -1
  101. package/dist/esm/presence.js +8 -7
  102. package/dist/esm/presence.js.map +1 -1
  103. package/dist/esm/queryValidation.js +2 -1
  104. package/dist/esm/queryValidation.js.map +1 -1
  105. package/dist/esm/schema.js +6 -8
  106. package/dist/esm/schema.js.map +1 -1
  107. package/dist/esm/schemaTypes.js +3 -22
  108. package/dist/esm/schemaTypes.js.map +1 -1
  109. package/dist/esm/store.js +38 -29
  110. package/dist/esm/store.js.map +1 -1
  111. package/dist/esm/transactionValidation.js +2 -1
  112. package/dist/esm/transactionValidation.js.map +1 -1
  113. package/dist/esm/utils/Deferred.js +0 -3
  114. package/dist/esm/utils/Deferred.js.map +1 -1
  115. package/dist/esm/utils/PersistedObject.js +233 -216
  116. package/dist/esm/utils/PersistedObject.js.map +1 -1
  117. package/dist/esm/utils/fetch.js +19 -9
  118. package/dist/esm/utils/fetch.js.map +1 -1
  119. package/dist/esm/utils/linkIndex.js +4 -2
  120. package/dist/esm/utils/linkIndex.js.map +1 -1
  121. package/dist/esm/utils/object.js +1 -1
  122. package/dist/esm/utils/object.js.map +1 -1
  123. package/dist/standalone/index.js +2367 -2610
  124. package/dist/standalone/index.umd.cjs +3 -3
  125. package/package.json +2 -2
  126. package/src/framework.ts +1 -0
@@ -1,4 +1,13 @@
1
1
  "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
2
11
  Object.defineProperty(exports, "__esModule", { value: true });
3
12
  exports.createInstantRouteHandler = void 0;
4
13
  function createUserSyncResponse(config, user) {
@@ -29,12 +38,13 @@ function errorResponse(status, message) {
29
38
  }
30
39
  const createInstantRouteHandler = (config) => {
31
40
  return {
32
- POST: async (req) => {
41
+ POST: (req) => __awaiter(void 0, void 0, void 0, function* () {
42
+ var _a;
33
43
  let body;
34
44
  try {
35
- body = await req.json();
45
+ body = yield req.json();
36
46
  }
37
- catch {
47
+ catch (_b) {
38
48
  return errorResponse(400, 'Invalid JSON body');
39
49
  }
40
50
  if (!body.type) {
@@ -45,11 +55,11 @@ const createInstantRouteHandler = (config) => {
45
55
  }
46
56
  switch (body.type) {
47
57
  case 'sync-user':
48
- return createUserSyncResponse(config, body.user ?? null);
58
+ return createUserSyncResponse(config, (_a = body.user) !== null && _a !== void 0 ? _a : null);
49
59
  default:
50
60
  return errorResponse(400, `Unknown type: ${body.type}`);
51
61
  }
52
- },
62
+ }),
53
63
  };
54
64
  };
55
65
  exports.createInstantRouteHandler = createInstantRouteHandler;
@@ -1 +1 @@
1
- {"version":3,"file":"createRouteHandler.js","sourceRoot":"","sources":["../../src/createRouteHandler.ts"],"names":[],"mappings":";;;AAMA,SAAS,sBAAsB,CAC7B,MAAgC,EAChC,IAAiB;IAEjB,IAAI,IAAI,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;QAC/B,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;YAChD,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,eAAe;gBACf,YAAY,EAAE,gBAAgB,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,6DAA6D;aAChI;SACF,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;YAChD,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,oCAAoC;gBACpC,YAAY,EAAE,gBAAgB,MAAM,CAAC,KAAK,0DAA0D;aACrG;SACF,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,MAAc,EAAE,OAAe;IACpD,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE;QACjE,MAAM;QACN,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;KAChD,CAAC,CAAC;AACL,CAAC;AAEM,MAAM,yBAAyB,GAAG,CAAC,MAAgC,EAAE,EAAE;IAC5E,OAAO;QACL,IAAI,EAAE,KAAK,EAAE,GAAY,EAAE,EAAE;YAC3B,IAAI,IAA2D,CAAC;YAChE,IAAI,CAAC;gBACH,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAC1B,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,aAAa,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;YACjD,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACf,OAAO,aAAa,CAAC,GAAG,EAAE,sBAAsB,CAAC,CAAC;YACpD,CAAC;YAED,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC;gBAChC,OAAO,aAAa,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;YAC/C,CAAC;YAED,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;gBAClB,KAAK,WAAW;oBACd,OAAO,sBAAsB,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;gBAC3D;oBACE,OAAO,aAAa,CAAC,GAAG,EAAE,iBAAiB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC,CAAC;AA1BW,QAAA,yBAAyB,6BA0BpC","sourcesContent":["import type { User } from './clientTypes.js';\n\ntype CreateRouteHandlerConfig = {\n appId: string;\n};\n\nfunction createUserSyncResponse(\n config: CreateRouteHandlerConfig,\n user: User | null,\n) {\n if (user && user.refresh_token) {\n return new Response(JSON.stringify({ ok: true }), {\n headers: {\n 'Content-Type': 'application/json',\n // 7 day expiry\n 'Set-Cookie': `instant_user_${config.appId}=${JSON.stringify(user)}; Path=/; HttpOnly; Secure; SameSite=Strict; Max-Age=604800`,\n },\n });\n } else {\n return new Response(JSON.stringify({ ok: true }), {\n headers: {\n 'Content-Type': 'application/json',\n // remove the cookie (some browsers)\n 'Set-Cookie': `instant_user_${config.appId}=; Path=/; HttpOnly; Secure; SameSite=Strict; Max-Age=-1`,\n },\n });\n }\n}\n\nfunction errorResponse(status: number, message: string) {\n return new Response(JSON.stringify({ ok: false, error: message }), {\n status,\n headers: { 'Content-Type': 'application/json' },\n });\n}\n\nexport const createInstantRouteHandler = (config: CreateRouteHandlerConfig) => {\n return {\n POST: async (req: Request) => {\n let body: { type?: string; appId?: string; user?: User | null };\n try {\n body = await req.json();\n } catch {\n return errorResponse(400, 'Invalid JSON body');\n }\n\n if (!body.type) {\n return errorResponse(400, 'Missing \"type\" field');\n }\n\n if (body.appId !== config.appId) {\n return errorResponse(403, 'App ID mismatch');\n }\n\n switch (body.type) {\n case 'sync-user':\n return createUserSyncResponse(config, body.user ?? null);\n default:\n return errorResponse(400, `Unknown type: ${body.type}`);\n }\n },\n };\n};\n"]}
1
+ {"version":3,"file":"createRouteHandler.js","sourceRoot":"","sources":["../../src/createRouteHandler.ts"],"names":[],"mappings":";;;;;;;;;;;;AAMA,SAAS,sBAAsB,CAC7B,MAAgC,EAChC,IAAiB;IAEjB,IAAI,IAAI,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;QAC/B,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;YAChD,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,eAAe;gBACf,YAAY,EAAE,gBAAgB,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,6DAA6D;aAChI;SACF,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;YAChD,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,oCAAoC;gBACpC,YAAY,EAAE,gBAAgB,MAAM,CAAC,KAAK,0DAA0D;aACrG;SACF,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,MAAc,EAAE,OAAe;IACpD,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE;QACjE,MAAM;QACN,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;KAChD,CAAC,CAAC;AACL,CAAC;AAEM,MAAM,yBAAyB,GAAG,CAAC,MAAgC,EAAE,EAAE;IAC5E,OAAO;QACL,IAAI,EAAE,CAAO,GAAY,EAAE,EAAE;;YAC3B,IAAI,IAA2D,CAAC;YAChE,IAAI,CAAC;gBACH,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAC1B,CAAC;YAAC,WAAM,CAAC;gBACP,OAAO,aAAa,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;YACjD,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACf,OAAO,aAAa,CAAC,GAAG,EAAE,sBAAsB,CAAC,CAAC;YACpD,CAAC;YAED,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC;gBAChC,OAAO,aAAa,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;YAC/C,CAAC;YAED,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;gBAClB,KAAK,WAAW;oBACd,OAAO,sBAAsB,CAAC,MAAM,EAAE,MAAA,IAAI,CAAC,IAAI,mCAAI,IAAI,CAAC,CAAC;gBAC3D;oBACE,OAAO,aAAa,CAAC,GAAG,EAAE,iBAAiB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC,CAAA;KACF,CAAC;AACJ,CAAC,CAAC;AA1BW,QAAA,yBAAyB,6BA0BpC","sourcesContent":["import type { User } from './clientTypes.js';\n\ntype CreateRouteHandlerConfig = {\n appId: string;\n};\n\nfunction createUserSyncResponse(\n config: CreateRouteHandlerConfig,\n user: User | null,\n) {\n if (user && user.refresh_token) {\n return new Response(JSON.stringify({ ok: true }), {\n headers: {\n 'Content-Type': 'application/json',\n // 7 day expiry\n 'Set-Cookie': `instant_user_${config.appId}=${JSON.stringify(user)}; Path=/; HttpOnly; Secure; SameSite=Strict; Max-Age=604800`,\n },\n });\n } else {\n return new Response(JSON.stringify({ ok: true }), {\n headers: {\n 'Content-Type': 'application/json',\n // remove the cookie (some browsers)\n 'Set-Cookie': `instant_user_${config.appId}=; Path=/; HttpOnly; Secure; SameSite=Strict; Max-Age=-1`,\n },\n });\n }\n}\n\nfunction errorResponse(status: number, message: string) {\n return new Response(JSON.stringify({ ok: false, error: message }), {\n status,\n headers: { 'Content-Type': 'application/json' },\n });\n}\n\nexport const createInstantRouteHandler = (config: CreateRouteHandlerConfig) => {\n return {\n POST: async (req: Request) => {\n let body: { type?: string; appId?: string; user?: User | null };\n try {\n body = await req.json();\n } catch {\n return errorResponse(400, 'Invalid JSON body');\n }\n\n if (!body.type) {\n return errorResponse(400, 'Missing \"type\" field');\n }\n\n if (body.appId !== config.appId) {\n return errorResponse(403, 'App ID mismatch');\n }\n\n switch (body.type) {\n case 'sync-user':\n return createUserSyncResponse(config, body.user ?? null);\n default:\n return errorResponse(400, `Unknown type: ${body.type}`);\n }\n },\n };\n};\n"]}
@@ -14,7 +14,7 @@ function matchVariable(variable, triplePart, context) {
14
14
  const bound = context[variable];
15
15
  return matchPart(bound, triplePart, context);
16
16
  }
17
- return { ...context, [variable]: triplePart };
17
+ return Object.assign(Object.assign({}, context), { [variable]: triplePart });
18
18
  }
19
19
  function matchExact(patternPart, triplePart, context) {
20
20
  return patternPart === triplePart ? context : null;
@@ -1 +1 @@
1
- {"version":3,"file":"datalog.js","sourceRoot":"","sources":["../../src/datalog.js"],"names":[],"mappings":"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","sourcesContent":["// 1. patternMatch\nimport { getTriples } from './store.ts';\n\nfunction isVariable(x) {\n return typeof x === 'string' && x.startsWith('?');\n}\n\nfunction matchVariable(variable, triplePart, context) {\n if (context.hasOwnProperty(variable)) {\n const bound = context[variable];\n return matchPart(bound, triplePart, context);\n }\n return { ...context, [variable]: triplePart };\n}\n\nfunction matchExact(patternPart, triplePart, context) {\n return patternPart === triplePart ? context : null;\n}\n\nfunction matcherForPatternPart(patternPart) {\n switch (typeof patternPart) {\n case 'string':\n return patternPart.startsWith('?') ? matchVariable : matchExact;\n default:\n return matchExact;\n }\n}\n\nconst validArgMapProps = [\n 'in',\n '$in',\n '$not',\n '$isNull',\n '$comparator', // covers all of $gt, $lt, etc.\n];\n\n// Checks if an object is an args map\nfunction isArgsMap(patternPart) {\n for (const prop of validArgMapProps) {\n if (patternPart.hasOwnProperty(prop)) {\n return true;\n }\n }\n return false;\n}\n\nfunction matchPart(patternPart, triplePart, context) {\n if (!context) return null;\n if (typeof patternPart === 'object') {\n // This is an args map, so we'll have already fitered the triples\n // in `getRelevantTriples`\n if (isArgsMap(patternPart)) {\n return context;\n }\n return null;\n }\n const matcher = matcherForPatternPart(patternPart);\n return matcher(patternPart, triplePart, context);\n}\n\nexport function matchPattern(pattern, triple, context) {\n return pattern.reduce((context, patternPart, idx) => {\n const triplePart = triple[idx];\n return matchPart(patternPart, triplePart, context);\n }, context);\n}\n\n// 2. querySingle\n\nexport function querySingle(store, pattern, context) {\n return relevantTriples(store, pattern, context)\n .map((triple) => matchPattern(pattern, triple, context))\n .filter((x) => x);\n}\n\n// 3. queryWhere\n\nfunction queryPattern(store, pattern, contexts) {\n if (pattern.or) {\n return pattern.or.patterns.flatMap((patterns) => {\n return queryWhere(store, patterns, contexts);\n });\n }\n if (pattern.and) {\n return pattern.and.patterns.reduce((contexts, patterns) => {\n return queryWhere(store, patterns, contexts);\n }, contexts);\n }\n return contexts.flatMap((context) => querySingle(store, pattern, context));\n}\n\nexport function queryWhere(store, patterns, contexts = [{}]) {\n return patterns.reduce((contexts, pattern) => {\n return queryPattern(store, pattern, contexts);\n }, contexts);\n}\n\n// 4. query\n\nfunction actualize(context, find) {\n if (Array.isArray(find)) {\n return find.map((findPart) => actualize(context, findPart));\n }\n return isVariable(find) ? context[find] : find;\n}\n\nexport function query(store, { find, where }) {\n const contexts = queryWhere(store, where);\n return contexts.map((context) => actualize(context, find));\n}\n\n// 5. Index\n\nfunction relevantTriples(store, pattern, context) {\n return getTriples(store, actualize(context, pattern));\n}\n"]}
1
+ {"version":3,"file":"datalog.js","sourceRoot":"","sources":["../../src/datalog.js"],"names":[],"mappings":"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","sourcesContent":["// 1. patternMatch\nimport { getTriples } from './store.ts';\n\nfunction isVariable(x) {\n return typeof x === 'string' && x.startsWith('?');\n}\n\nfunction matchVariable(variable, triplePart, context) {\n if (context.hasOwnProperty(variable)) {\n const bound = context[variable];\n return matchPart(bound, triplePart, context);\n }\n return { ...context, [variable]: triplePart };\n}\n\nfunction matchExact(patternPart, triplePart, context) {\n return patternPart === triplePart ? context : null;\n}\n\nfunction matcherForPatternPart(patternPart) {\n switch (typeof patternPart) {\n case 'string':\n return patternPart.startsWith('?') ? matchVariable : matchExact;\n default:\n return matchExact;\n }\n}\n\nconst validArgMapProps = [\n 'in',\n '$in',\n '$not',\n '$isNull',\n '$comparator', // covers all of $gt, $lt, etc.\n];\n\n// Checks if an object is an args map\nfunction isArgsMap(patternPart) {\n for (const prop of validArgMapProps) {\n if (patternPart.hasOwnProperty(prop)) {\n return true;\n }\n }\n return false;\n}\n\nfunction matchPart(patternPart, triplePart, context) {\n if (!context) return null;\n if (typeof patternPart === 'object') {\n // This is an args map, so we'll have already fitered the triples\n // in `getRelevantTriples`\n if (isArgsMap(patternPart)) {\n return context;\n }\n return null;\n }\n const matcher = matcherForPatternPart(patternPart);\n return matcher(patternPart, triplePart, context);\n}\n\nexport function matchPattern(pattern, triple, context) {\n return pattern.reduce((context, patternPart, idx) => {\n const triplePart = triple[idx];\n return matchPart(patternPart, triplePart, context);\n }, context);\n}\n\n// 2. querySingle\n\nexport function querySingle(store, pattern, context) {\n return relevantTriples(store, pattern, context)\n .map((triple) => matchPattern(pattern, triple, context))\n .filter((x) => x);\n}\n\n// 3. queryWhere\n\nfunction queryPattern(store, pattern, contexts) {\n if (pattern.or) {\n return pattern.or.patterns.flatMap((patterns) => {\n return queryWhere(store, patterns, contexts);\n });\n }\n if (pattern.and) {\n return pattern.and.patterns.reduce((contexts, patterns) => {\n return queryWhere(store, patterns, contexts);\n }, contexts);\n }\n return contexts.flatMap((context) => querySingle(store, pattern, context));\n}\n\nexport function queryWhere(store, patterns, contexts = [{}]) {\n return patterns.reduce((contexts, pattern) => {\n return queryPattern(store, pattern, contexts);\n }, contexts);\n}\n\n// 4. query\n\nfunction actualize(context, find) {\n if (Array.isArray(find)) {\n return find.map((findPart) => actualize(context, findPart));\n }\n return isVariable(find) ? context[find] : find;\n}\n\nexport function query(store, { find, where }) {\n const contexts = queryWhere(store, where);\n return contexts.map((context) => actualize(context, find));\n}\n\n// 5. Index\n\nfunction relevantTriples(store, pattern, context) {\n return getTriples(store, actualize(context, pattern));\n}\n"]}
@@ -37,14 +37,15 @@ exports.createDevtool = createDevtool;
37
37
  const flags = __importStar(require("./utils/flags.js"));
38
38
  let currentDevtool;
39
39
  function createDevtool(appId, config) {
40
- currentDevtool?.dispose();
40
+ currentDevtool === null || currentDevtool === void 0 ? void 0 : currentDevtool.dispose();
41
41
  const iframeContrainer = createIframeContainer(config);
42
42
  const toggler = createToggler(config, toggleView);
43
43
  const iframe = createIframe(getSrc(appId));
44
44
  function onPostMessage(event) {
45
+ var _a;
45
46
  if (event.source !== iframe.element.contentWindow)
46
47
  return;
47
- if (event.data?.type === 'close' && iframeContrainer.isVisible()) {
48
+ if (((_a = event.data) === null || _a === void 0 ? void 0 : _a.type) === 'close' && iframeContrainer.isVisible()) {
48
49
  toggleView();
49
50
  }
50
51
  }
@@ -114,23 +115,13 @@ function createToggler(config, onClick) {
114
115
  const element = document.createElement('button');
115
116
  element.innerHTML = logoSVG;
116
117
  element.className = 'instant-devtool-toggler';
117
- Object.assign(element.style, {
118
+ Object.assign(element.style, Object.assign(Object.assign({
118
119
  // pos
119
- position: 'fixed',
120
- ...cssPositionForToggler(config.position),
121
- height: '32px',
122
- width: '32px',
120
+ position: 'fixed' }, cssPositionForToggler(config.position)), { height: '32px', width: '32px',
123
121
  // layout
124
- display: 'flex',
125
- alignItems: 'center',
126
- justifyContent: 'center',
127
- zIndex: '9010',
122
+ display: 'flex', alignItems: 'center', justifyContent: 'center', zIndex: '9010',
128
123
  // look
129
- padding: '0',
130
- margin: '0',
131
- border: 'none',
132
- cursor: 'pointer',
133
- });
124
+ padding: '0', margin: '0', border: 'none', cursor: 'pointer' }));
134
125
  element.addEventListener('click', onClick);
135
126
  return { element };
136
127
  }
@@ -160,16 +151,7 @@ function cssPositionForIframeContainer(position) {
160
151
  }
161
152
  function createIframeContainer(config) {
162
153
  const element = document.createElement('div');
163
- Object.assign(element.style, {
164
- position: 'fixed',
165
- ...cssPositionForIframeContainer(config.position),
166
- display: 'block',
167
- borderRadius: '4px',
168
- border: '1px #ccc solid',
169
- boxShadow: '0px 0px 8px #00000044',
170
- backgroundColor: '#eee',
171
- zIndex: '999990',
172
- });
154
+ Object.assign(element.style, Object.assign(Object.assign({ position: 'fixed' }, cssPositionForIframeContainer(config.position)), { display: 'block', borderRadius: '4px', border: '1px #ccc solid', boxShadow: '0px 0px 8px #00000044', backgroundColor: '#eee', zIndex: '999990' }));
173
155
  element.style.display = 'none';
174
156
  element.className = 'instant-devtool-container';
175
157
  function isVisible() {
@@ -1 +1 @@
1
- {"version":3,"file":"devtool.js","sourceRoot":"","sources":["../../src/devtool.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n DevtoolConfig,\n DevtoolPosition,\n StrictDevtoolConfig,\n} from './coreTypes.ts';\nimport * as flags from './utils/flags.ts';\n\ntype Devtool = { dispose: () => void };\n\nlet currentDevtool: Devtool | undefined;\n\nexport function createDevtool(appId: string, config: StrictDevtoolConfig) {\n currentDevtool?.dispose();\n\n const iframeContrainer = createIframeContainer(config);\n const toggler = createToggler(config, toggleView);\n const iframe = createIframe(getSrc(appId));\n\n function onPostMessage(event: MessageEvent) {\n if (event.source !== iframe.element.contentWindow) return;\n\n if (event.data?.type === 'close' && iframeContrainer.isVisible()) {\n toggleView();\n }\n }\n\n function onKeyDown(event: KeyboardEvent) {\n const isToggleShortcut =\n event.shiftKey && event.ctrlKey && event.key === '0';\n const isEsc = event.key === 'Escape' || event.key === 'Esc';\n\n if (isToggleShortcut) {\n toggleView();\n } else if (isEsc && iframeContrainer.isVisible()) {\n toggleView();\n }\n }\n\n function toggleView() {\n if (iframeContrainer.isVisible()) {\n iframeContrainer.element.style.display = 'none';\n } else {\n iframeContrainer.element.style.display = 'block';\n\n // lazily render iframe on first open\n if (!iframeContrainer.element.contains(iframe.element)) {\n iframeContrainer.element.appendChild(iframe.element);\n }\n }\n }\n\n function dispose() {\n iframeContrainer.element.remove();\n toggler.element.remove();\n removeEventListener('keydown', onKeyDown);\n removeEventListener('message', onPostMessage);\n }\n\n function create() {\n document.body.appendChild(iframeContrainer.element);\n document.body.appendChild(toggler.element);\n addEventListener('keydown', onKeyDown);\n addEventListener('message', onPostMessage);\n\n currentDevtool = {\n dispose,\n };\n }\n\n return create();\n}\n\nfunction getSrc(appId: string) {\n const useLocalDashboard = flags.devBackend || flags.devtoolLocalDashboard;\n const src = `${useLocalDashboard ? 'http://localhost:3000' : 'https://instantdb.com'}/_devtool?appId=${appId}`;\n return src;\n}\n\nfunction createIframe(src: string) {\n const element = document.createElement('iframe');\n\n element.src = src;\n element.className = 'instant-devtool-iframe';\n Object.assign(element.style, {\n width: '100%',\n height: '100%',\n backgroundColor: 'white',\n border: 'none',\n } as Partial<CSSStyleDeclaration>);\n return { element };\n}\n\nfunction createToggler(\n config: StrictDevtoolConfig,\n onClick: (this: HTMLButtonElement, ev: MouseEvent) => any,\n) {\n const logoSVG = `\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 512 512\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect width=\"512\" height=\"512\" fill=\"black\"/>\n <rect x=\"97.0973\" y=\"91.3297\" width=\"140\" height=\"330\" fill=\"white\"/>\n </svg>\n `;\n const element = document.createElement('button');\n element.innerHTML = logoSVG;\n element.className = 'instant-devtool-toggler';\n Object.assign(element.style, {\n // pos\n position: 'fixed',\n ...cssPositionForToggler(config.position),\n height: '32px',\n width: '32px',\n // layout\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n zIndex: '9010',\n // look\n padding: '0',\n margin: '0',\n border: 'none',\n cursor: 'pointer',\n } as Partial<CSSStyleDeclaration>);\n element.addEventListener('click', onClick);\n return { element };\n}\n\nfunction cssPositionForToggler(position: DevtoolPosition) {\n switch (position) {\n case 'bottom-left':\n return { bottom: '24px', left: '24px' };\n case 'bottom-right':\n return { bottom: '24px', right: '24px' };\n case 'top-right':\n return { top: '24px', right: '24px' };\n case 'top-left':\n return { top: '24px', left: '24px' };\n }\n}\n\nfunction cssPositionForIframeContainer(position: DevtoolPosition) {\n switch (position) {\n case 'bottom-left':\n return { bottom: '24px', right: '24px', left: '60px', top: '72px' };\n case 'bottom-right':\n return { bottom: '24px', left: '24px', right: '60px', top: '72px' };\n case 'top-right':\n return { top: '24px', left: '24px', right: '60px', bottom: '72px' };\n case 'top-left':\n return { top: '24px', right: '24px', left: '60px', bottom: '72px' };\n }\n}\n\nfunction createIframeContainer(config: StrictDevtoolConfig) {\n const element = document.createElement('div');\n Object.assign(element.style, {\n position: 'fixed',\n ...cssPositionForIframeContainer(config.position),\n display: 'block',\n borderRadius: '4px',\n border: '1px #ccc solid',\n boxShadow: '0px 0px 8px #00000044',\n backgroundColor: '#eee',\n zIndex: '999990',\n } as Partial<CSSStyleDeclaration>);\n element.style.display = 'none';\n element.className = 'instant-devtool-container';\n function isVisible() {\n return element.style.display !== 'none';\n }\n return { element, isVisible };\n}\n"]}
1
+ {"version":3,"file":"devtool.js","sourceRoot":"","sources":["../../src/devtool.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n DevtoolConfig,\n DevtoolPosition,\n StrictDevtoolConfig,\n} from './coreTypes.ts';\nimport * as flags from './utils/flags.ts';\n\ntype Devtool = { dispose: () => void };\n\nlet currentDevtool: Devtool | undefined;\n\nexport function createDevtool(appId: string, config: StrictDevtoolConfig) {\n currentDevtool?.dispose();\n\n const iframeContrainer = createIframeContainer(config);\n const toggler = createToggler(config, toggleView);\n const iframe = createIframe(getSrc(appId));\n\n function onPostMessage(event: MessageEvent) {\n if (event.source !== iframe.element.contentWindow) return;\n\n if (event.data?.type === 'close' && iframeContrainer.isVisible()) {\n toggleView();\n }\n }\n\n function onKeyDown(event: KeyboardEvent) {\n const isToggleShortcut =\n event.shiftKey && event.ctrlKey && event.key === '0';\n const isEsc = event.key === 'Escape' || event.key === 'Esc';\n\n if (isToggleShortcut) {\n toggleView();\n } else if (isEsc && iframeContrainer.isVisible()) {\n toggleView();\n }\n }\n\n function toggleView() {\n if (iframeContrainer.isVisible()) {\n iframeContrainer.element.style.display = 'none';\n } else {\n iframeContrainer.element.style.display = 'block';\n\n // lazily render iframe on first open\n if (!iframeContrainer.element.contains(iframe.element)) {\n iframeContrainer.element.appendChild(iframe.element);\n }\n }\n }\n\n function dispose() {\n iframeContrainer.element.remove();\n toggler.element.remove();\n removeEventListener('keydown', onKeyDown);\n removeEventListener('message', onPostMessage);\n }\n\n function create() {\n document.body.appendChild(iframeContrainer.element);\n document.body.appendChild(toggler.element);\n addEventListener('keydown', onKeyDown);\n addEventListener('message', onPostMessage);\n\n currentDevtool = {\n dispose,\n };\n }\n\n return create();\n}\n\nfunction getSrc(appId: string) {\n const useLocalDashboard = flags.devBackend || flags.devtoolLocalDashboard;\n const src = `${useLocalDashboard ? 'http://localhost:3000' : 'https://instantdb.com'}/_devtool?appId=${appId}`;\n return src;\n}\n\nfunction createIframe(src: string) {\n const element = document.createElement('iframe');\n\n element.src = src;\n element.className = 'instant-devtool-iframe';\n Object.assign(element.style, {\n width: '100%',\n height: '100%',\n backgroundColor: 'white',\n border: 'none',\n } as Partial<CSSStyleDeclaration>);\n return { element };\n}\n\nfunction createToggler(\n config: StrictDevtoolConfig,\n onClick: (this: HTMLButtonElement, ev: MouseEvent) => any,\n) {\n const logoSVG = `\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 512 512\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect width=\"512\" height=\"512\" fill=\"black\"/>\n <rect x=\"97.0973\" y=\"91.3297\" width=\"140\" height=\"330\" fill=\"white\"/>\n </svg>\n `;\n const element = document.createElement('button');\n element.innerHTML = logoSVG;\n element.className = 'instant-devtool-toggler';\n Object.assign(element.style, {\n // pos\n position: 'fixed',\n ...cssPositionForToggler(config.position),\n height: '32px',\n width: '32px',\n // layout\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n zIndex: '9010',\n // look\n padding: '0',\n margin: '0',\n border: 'none',\n cursor: 'pointer',\n } as Partial<CSSStyleDeclaration>);\n element.addEventListener('click', onClick);\n return { element };\n}\n\nfunction cssPositionForToggler(position: DevtoolPosition) {\n switch (position) {\n case 'bottom-left':\n return { bottom: '24px', left: '24px' };\n case 'bottom-right':\n return { bottom: '24px', right: '24px' };\n case 'top-right':\n return { top: '24px', right: '24px' };\n case 'top-left':\n return { top: '24px', left: '24px' };\n }\n}\n\nfunction cssPositionForIframeContainer(position: DevtoolPosition) {\n switch (position) {\n case 'bottom-left':\n return { bottom: '24px', right: '24px', left: '60px', top: '72px' };\n case 'bottom-right':\n return { bottom: '24px', left: '24px', right: '60px', top: '72px' };\n case 'top-right':\n return { top: '24px', left: '24px', right: '60px', bottom: '72px' };\n case 'top-left':\n return { top: '24px', right: '24px', left: '60px', bottom: '72px' };\n }\n}\n\nfunction createIframeContainer(config: StrictDevtoolConfig) {\n const element = document.createElement('div');\n Object.assign(element.style, {\n position: 'fixed',\n ...cssPositionForIframeContainer(config.position),\n display: 'block',\n borderRadius: '4px',\n border: '1px #ccc solid',\n boxShadow: '0px 0px 8px #00000044',\n backgroundColor: '#eee',\n zIndex: '999990',\n } as Partial<CSSStyleDeclaration>);\n element.style.display = 'none';\n element.className = 'instant-devtool-container';\n function isVisible() {\n return element.style.display !== 'none';\n }\n return { element, isVisible };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"framework.d.ts","sourceRoot":"","sources":["../../src/framework.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,mBAAmB,EACnB,aAAa,EAEd,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,eAAO,MAAM,QAAQ,SAAwD,CAAC;AAE9E,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,EAAE,EAAE,mBAAmB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CACnC,CAAC;AAIF,KAAK,YAAY,GACb;IACE,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,GAAG,CAAC;IACb,KAAK,EAAE,GAAG,CAAC;IACX,SAAS,EAAE,GAAG,CAAC;IACf,KAAK,EAAE,GAAG,CAAC;IACX,QAAQ,CAAC,EAAE,GAAG,CAAC;CAChB,GACD;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,WAAW,EAAE,GAAG,CAAC;CAClB,CAAC;AAEN,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,EAAE,CAAgC;IAInC,SAAS,EAAE,GAAG,CACnB,MAAM,EACN;QACE,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;QACxC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;QACzB,OAAO,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC;QACvC,IAAI,CAAC,EAAE,GAAG,CAAC;QACX,KAAK,CAAC,EAAE,GAAG,CAAC;KACb,CACF,CAAa;IAEd,OAAO,CAAC,sBAAsB,CAMX;gBAEP,MAAM,EAAE,eAAe;IAe5B,SAAS,GACd,UAAU,CAAC,MAAM,EAAE;QACjB,OAAO,EAAE,GAAG,CAAC;QACb,KAAK,EAAE,GAAG,CAAC;QACX,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,GAAG,CAAC;KAChB,KAAK,IAAI,UAGV;IAGK,cAAc,GAAI,UAAU,MAAM,EAAE,OAAO,GAAG,UAoBnD;IAIK,KAAK,GACV,QAAQ,GAAG,EACX,OAAO;QACL,UAAU,EAAE,UAAU,CAAC;KACxB,KACA;QACD,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;QACzB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;QACxC,OAAO,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;QAChC,IAAI,CAAC,EAAE,GAAG,CAAC;QACX,KAAK,CAAC,EAAE,GAAG,CAAC;KACb,CA4DC;IAEK,yBAAyB,GAC9B,QAAQ,GAAG,EACX,OAAO;QACL,UAAU,EAAE,UAAU,CAAC;KACxB;gBAhJS,SAAS,GAAG,SAAS,GAAG,OAAO;cACjC,MAAM,GAAG,SAAS;kBACd,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI;eAC/B,GAAG;gBACF,GAAG;kBAgJb;IAIK,kBAAkB,GACvB,OAAO,GAAG,EACV,SAAS,GAAG,EAAE,EACd,OAAO,aAAa,EAAE,EACtB,WAAW,GAAG;;;;MAqCd;IAEK,SAAS,GACd,QAAQ,GAAG,EACX,OAAO;QACL,UAAU,EAAE,UAAU,CAAC;KACxB,KACA;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,GAAG,CAAA;KAAE,CAM7B;IAGK,0BAA0B,GAC/B,OAAO,GAAG,KACT,OAAO,CAAC;QACT,OAAO,EAAE,GAAG,EAAE,CAAC;QACf,KAAK,EAAE,aAAa,EAAE,CAAC;QACvB,KAAK,EAAE,GAAG,CAAC;QACX,SAAS,EAAE,MAAM,CAAC;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,CAAC,EAAE,GAAG,CAAC;KAChB,CAAC,CAmDA;CACH"}
1
+ {"version":3,"file":"framework.d.ts","sourceRoot":"","sources":["../../src/framework.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,mBAAmB,EACnB,aAAa,EAEd,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,eAAO,MAAM,QAAQ,SAAwD,CAAC;AAE9E,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,EAAE,EAAE,mBAAmB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CACnC,CAAC;AAIF,KAAK,YAAY,GACb;IACE,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,GAAG,CAAC;IACb,KAAK,EAAE,GAAG,CAAC;IACX,SAAS,EAAE,GAAG,CAAC;IACf,KAAK,EAAE,GAAG,CAAC;IACX,QAAQ,CAAC,EAAE,GAAG,CAAC;CAChB,GACD;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,WAAW,EAAE,GAAG,CAAC;CAClB,CAAC;AAEN,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,EAAE,CAAgC;IAInC,SAAS,EAAE,GAAG,CACnB,MAAM,EACN;QACE,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;QACxC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;QACzB,OAAO,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC;QACvC,IAAI,CAAC,EAAE,GAAG,CAAC;QACX,KAAK,CAAC,EAAE,GAAG,CAAC;KACb,CACF,CAAa;IAEd,OAAO,CAAC,sBAAsB,CAMX;gBAEP,MAAM,EAAE,eAAe;IAe5B,SAAS,GACd,UAAU,CAAC,MAAM,EAAE;QACjB,OAAO,EAAE,GAAG,CAAC;QACb,KAAK,EAAE,GAAG,CAAC;QACX,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,GAAG,CAAC;KAChB,KAAK,IAAI,UAGV;IAGK,cAAc,GAAI,UAAU,MAAM,EAAE,OAAO,GAAG,UAoBnD;IAIK,KAAK,GACV,QAAQ,GAAG,EACX,OAAO;QACL,UAAU,EAAE,UAAU,CAAC;KACxB,KACA;QACD,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;QACzB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;QACxC,OAAO,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;QAChC,IAAI,CAAC,EAAE,GAAG,CAAC;QACX,KAAK,CAAC,EAAE,GAAG,CAAC;KACb,CA4DC;IAEK,yBAAyB,GAC9B,QAAQ,GAAG,EACX,OAAO;QACL,UAAU,EAAE,UAAU,CAAC;KACxB;gBAhJS,SAAS,GAAG,SAAS,GAAG,OAAO;cACjC,MAAM,GAAG,SAAS;kBACd,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI;eAC/B,GAAG;gBACF,GAAG;kBAgJb;IAIK,kBAAkB,GACvB,OAAO,GAAG,EACV,SAAS,GAAG,EAAE,EACd,OAAO,aAAa,EAAE,EACtB,WAAW,GAAG;;;;MAqCd;IAEK,SAAS,GACd,QAAQ,GAAG,EACX,OAAO;QACL,UAAU,EAAE,UAAU,CAAC;KACxB,KACA;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,GAAG,CAAA;KAAE,CAM7B;IAGK,0BAA0B,GAC/B,OAAO,GAAG,KACT,OAAO,CAAC;QACT,OAAO,EAAE,GAAG,EAAE,CAAC;QACf,KAAK,EAAE,aAAa,EAAE,CAAC;QACvB,KAAK,EAAE,GAAG,CAAC;QACX,SAAS,EAAE,MAAM,CAAC;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,CAAC,EAAE,GAAG,CAAC;KAChB,CAAC,CAoDA;CACH"}
@@ -32,6 +32,15 @@ var __importStar = (this && this.__importStar) || (function () {
32
32
  return result;
33
33
  };
34
34
  })();
35
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
36
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
37
+ return new (P || (P = Promise))(function (resolve, reject) {
38
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
39
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
40
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
41
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
42
+ });
43
+ };
35
44
  var __importDefault = (this && this.__importDefault) || function (mod) {
36
45
  return (mod && mod.__esModule) ? mod : { "default": mod };
37
46
  };
@@ -46,47 +55,62 @@ const instaql_js_1 = __importDefault(require("./instaql.js"));
46
55
  const linkIndex_ts_1 = require("./utils/linkIndex.js");
47
56
  exports.isServer = typeof window === 'undefined' || 'Deno' in globalThis;
48
57
  class FrameworkClient {
49
- params;
50
- db;
51
- // stores all of the query promises so that ssr can read them
52
- // and send the relevant results alongside the html that resulted in the query resolving
53
- resultMap = new Map();
54
- queryResolvedCallbacks = [];
55
58
  constructor(params) {
56
- this.params = params;
57
- this.db = params.db;
59
+ // stores all of the query promises so that ssr can read them
60
+ // and send the relevant results alongside the html that resulted in the query resolving
58
61
  this.resultMap = new Map();
59
- }
60
- subscribe = (callback) => {
61
- this.queryResolvedCallbacks.push(callback);
62
- };
63
- // Runs on the client when ssr gets html script tags
64
- addQueryResult = (queryKey, value) => {
65
- this.resultMap.set(queryKey, {
66
- type: value.type,
67
- status: 'success',
68
- data: value,
69
- promise: null,
70
- error: null,
71
- });
72
- // send the result to the client
73
- if (!exports.isServer) {
74
- // make sure the attrs are there to create stores
75
- if (!this.db._reactor.attrs) {
76
- this.db._reactor._setAttrs(value.attrs);
62
+ this.queryResolvedCallbacks = [];
63
+ this.subscribe = (callback) => {
64
+ this.queryResolvedCallbacks.push(callback);
65
+ };
66
+ // Runs on the client when ssr gets html script tags
67
+ this.addQueryResult = (queryKey, value) => {
68
+ this.resultMap.set(queryKey, {
69
+ type: value.type,
70
+ status: 'success',
71
+ data: value,
72
+ promise: null,
73
+ error: null,
74
+ });
75
+ // send the result to the client
76
+ if (!exports.isServer) {
77
+ // make sure the attrs are there to create stores
78
+ if (!this.db._reactor.attrs) {
79
+ this.db._reactor._setAttrs(value.attrs);
80
+ }
81
+ this.db._reactor._addQueryData(value.query, value, !!this.db._reactor.config.schema);
77
82
  }
78
- this.db._reactor._addQueryData(value.query, value, !!this.db._reactor.config.schema);
79
- }
80
- };
81
- // creates an entry in the results map
82
- // and returns the same thing added to the map
83
- query = (_query, opts) => {
84
- const { hash, query } = this.hashQuery(_query, opts);
85
- if (this.db._reactor.status === 'authenticated') {
86
- const promise = this.db.queryOnce(_query, opts);
83
+ };
84
+ // creates an entry in the results map
85
+ // and returns the same thing added to the map
86
+ this.query = (_query, opts) => {
87
+ const { hash, query } = this.hashQuery(_query, opts);
88
+ if (this.db._reactor.status === 'authenticated') {
89
+ const promise = this.db.queryOnce(_query, opts);
90
+ let entry = {
91
+ status: 'pending',
92
+ type: 'session',
93
+ data: undefined,
94
+ error: undefined,
95
+ promise: promise,
96
+ };
97
+ promise.then((result) => {
98
+ entry.status = 'success';
99
+ entry.data = result;
100
+ entry.promise = null;
101
+ });
102
+ promise.catch((error) => {
103
+ entry.status = 'error';
104
+ entry.error = error;
105
+ entry.promise = null;
106
+ });
107
+ this.resultMap.set(hash, entry);
108
+ return entry;
109
+ }
110
+ const promise = this.getTriplesAndAttrsForQuery(query);
87
111
  let entry = {
88
112
  status: 'pending',
89
- type: 'session',
113
+ type: 'http',
90
114
  data: undefined,
91
115
  error: undefined,
92
116
  promise: promise,
@@ -101,118 +125,104 @@ class FrameworkClient {
101
125
  entry.error = error;
102
126
  entry.promise = null;
103
127
  });
128
+ promise.then((result) => {
129
+ this.queryResolvedCallbacks.forEach((callback) => {
130
+ callback({
131
+ queryHash: hash,
132
+ query: query,
133
+ attrs: result.attrs,
134
+ triples: result.triples,
135
+ pageInfo: result.pageInfo,
136
+ });
137
+ });
138
+ });
104
139
  this.resultMap.set(hash, entry);
105
140
  return entry;
106
- }
107
- const promise = this.getTriplesAndAttrsForQuery(query);
108
- let entry = {
109
- status: 'pending',
110
- type: 'http',
111
- data: undefined,
112
- error: undefined,
113
- promise: promise,
114
141
  };
115
- promise.then((result) => {
116
- entry.status = 'success';
117
- entry.data = result;
118
- entry.promise = null;
119
- });
120
- promise.catch((error) => {
121
- entry.status = 'error';
122
- entry.error = error;
123
- entry.promise = null;
124
- });
125
- promise.then((result) => {
126
- this.queryResolvedCallbacks.forEach((callback) => {
127
- callback({
128
- queryHash: hash,
129
- query: query,
130
- attrs: result.attrs,
131
- triples: result.triples,
132
- pageInfo: result.pageInfo,
133
- });
134
- });
135
- });
136
- this.resultMap.set(hash, entry);
137
- return entry;
138
- };
139
- getExistingResultForQuery = (_query, opts) => {
140
- const { hash } = this.hashQuery(_query, opts);
141
- return this.resultMap.get(hash);
142
- };
143
- // creates a query result from a set of triples, query, and attrs
144
- // can be run server side or client side
145
- completeIsomorphic = (query, triples, attrs, pageInfo) => {
146
- const attrMap = {};
147
- attrs.forEach((attr) => {
148
- attrMap[attr.id] = attr;
149
- });
150
- const enableCardinalityInference = Boolean(this.db?._reactor?.config?.schema) &&
151
- ('cardinalityInference' in this.db?._reactor?.config
152
- ? Boolean(this.db?._reactor.config?.cardinalityInference)
153
- : true);
154
- const attrsStore = new s.AttrsStoreClass(attrs.reduce((acc, attr) => {
155
- acc[attr.id] = attr;
156
- return acc;
157
- }, {}), (0, linkIndex_ts_1.createLinkIndex)(this.db?._reactor.config.schema));
158
- const store = s.createStore(attrsStore, triples, enableCardinalityInference, this.params.db._reactor.config.useDateObjects || false);
159
- const resp = (0, instaql_js_1.default)({
160
- store: store,
161
- attrsStore: attrsStore,
162
- pageInfo: pageInfo,
163
- aggregate: undefined,
164
- }, query);
165
- return resp;
166
- };
167
- hashQuery = (_query, opts) => {
168
- if (_query && opts && 'ruleParams' in opts) {
169
- _query = { $$ruleParams: opts['ruleParams'], ..._query };
170
- }
171
- const query = _query ? (0, index_ts_1.coerceQuery)(_query) : null;
172
- return { hash: (0, index_ts_1.weakHash)(query), query: query };
173
- };
174
- // Run by the server to get triples and attrs
175
- getTriplesAndAttrsForQuery = async (query) => {
176
- try {
177
- const response = await fetch(`${this.db._reactor.config.apiURI}/runtime/framework/query`, {
178
- method: 'POST',
179
- headers: {
180
- 'app-id': this.params.db._reactor.config.appId,
181
- 'Content-Type': 'application/json',
182
- Authorization: this.params.token
183
- ? `Bearer ${this.params.token}`
184
- : undefined,
185
- },
186
- body: JSON.stringify({
187
- query: query,
188
- }),
142
+ this.getExistingResultForQuery = (_query, opts) => {
143
+ const { hash } = this.hashQuery(_query, opts);
144
+ return this.resultMap.get(hash);
145
+ };
146
+ // creates a query result from a set of triples, query, and attrs
147
+ // can be run server side or client side
148
+ this.completeIsomorphic = (query, triples, attrs, pageInfo) => {
149
+ var _a, _b, _c, _d, _e, _f, _g, _h;
150
+ const attrMap = {};
151
+ attrs.forEach((attr) => {
152
+ attrMap[attr.id] = attr;
189
153
  });
190
- if (!response.ok) {
191
- throw new Error('Error getting triples from server');
154
+ const enableCardinalityInference = Boolean((_c = (_b = (_a = this.db) === null || _a === void 0 ? void 0 : _a._reactor) === null || _b === void 0 ? void 0 : _b.config) === null || _c === void 0 ? void 0 : _c.schema) &&
155
+ ('cardinalityInference' in ((_e = (_d = this.db) === null || _d === void 0 ? void 0 : _d._reactor) === null || _e === void 0 ? void 0 : _e.config)
156
+ ? Boolean((_g = (_f = this.db) === null || _f === void 0 ? void 0 : _f._reactor.config) === null || _g === void 0 ? void 0 : _g.cardinalityInference)
157
+ : true);
158
+ const attrsStore = new s.AttrsStoreClass(attrs.reduce((acc, attr) => {
159
+ acc[attr.id] = attr;
160
+ return acc;
161
+ }, {}), (0, linkIndex_ts_1.createLinkIndex)((_h = this.db) === null || _h === void 0 ? void 0 : _h._reactor.config.schema));
162
+ const store = s.createStore(attrsStore, triples, enableCardinalityInference, this.params.db._reactor.config.useDateObjects || false);
163
+ const resp = (0, instaql_js_1.default)({
164
+ store: store,
165
+ attrsStore: attrsStore,
166
+ pageInfo: pageInfo,
167
+ aggregate: undefined,
168
+ }, query);
169
+ return resp;
170
+ };
171
+ this.hashQuery = (_query, opts) => {
172
+ if (_query && opts && 'ruleParams' in opts) {
173
+ _query = Object.assign({ $$ruleParams: opts['ruleParams'] }, _query);
174
+ }
175
+ const query = _query ? (0, index_ts_1.coerceQuery)(_query) : null;
176
+ return { hash: (0, index_ts_1.weakHash)(query), query: query };
177
+ };
178
+ // Run by the server to get triples and attrs
179
+ this.getTriplesAndAttrsForQuery = (query) => __awaiter(this, void 0, void 0, function* () {
180
+ var _a, _b, _c, _d, _e, _f;
181
+ try {
182
+ const response = yield fetch(`${this.db._reactor.config.apiURI}/runtime/framework/query`, {
183
+ method: 'POST',
184
+ headers: {
185
+ 'app-id': this.params.db._reactor.config.appId,
186
+ 'Content-Type': 'application/json',
187
+ Authorization: this.params.token
188
+ ? `Bearer ${this.params.token}`
189
+ : undefined,
190
+ },
191
+ body: JSON.stringify({
192
+ query: query,
193
+ }),
194
+ });
195
+ if (!response.ok) {
196
+ throw new Error('Error getting triples from server');
197
+ }
198
+ const data = yield response.json();
199
+ const attrs = data === null || data === void 0 ? void 0 : data.attrs;
200
+ if (!attrs) {
201
+ throw new Error('No attrs');
202
+ }
203
+ // TODO: make safer
204
+ const triples = (_c = (_b = (_a = data.result) === null || _a === void 0 ? void 0 : _a[0].data) === null || _b === void 0 ? void 0 : _b['datalog-result']) === null || _c === void 0 ? void 0 : _c['join-rows'][0];
205
+ const pageInfo = (_f = (_e = (_d = data.result) === null || _d === void 0 ? void 0 : _d[0]) === null || _e === void 0 ? void 0 : _e.data) === null || _f === void 0 ? void 0 : _f['page-info'];
206
+ return {
207
+ attrs,
208
+ triples,
209
+ type: 'http',
210
+ queryHash: this.hashQuery(query).hash,
211
+ query,
212
+ pageInfo,
213
+ };
192
214
  }
193
- const data = await response.json();
194
- const attrs = data?.attrs;
195
- if (!attrs) {
196
- throw new Error('No attrs');
215
+ catch (err) {
216
+ const errWithMessage = new Error('Error getting triples from framework client');
217
+ // @ts-expect-error pre es2022
218
+ errWithMessage.cause = err;
219
+ throw errWithMessage;
197
220
  }
198
- // TODO: make safer
199
- const triples = data.result?.[0].data?.['datalog-result']?.['join-rows'][0];
200
- const pageInfo = data.result?.[0]?.data?.['page-info'];
201
- return {
202
- attrs,
203
- triples,
204
- type: 'http',
205
- queryHash: this.hashQuery(query).hash,
206
- query,
207
- pageInfo,
208
- };
209
- }
210
- catch (err) {
211
- const errWithMessage = new Error('Error getting triples from framework client');
212
- errWithMessage.cause = err;
213
- throw errWithMessage;
214
- }
215
- };
221
+ });
222
+ this.params = params;
223
+ this.db = params.db;
224
+ this.resultMap = new Map();
225
+ }
216
226
  }
217
227
  exports.FrameworkClient = FrameworkClient;
218
228
  //# sourceMappingURL=framework.js.map