@instantdb/core 0.22.88 → 0.22.89-experimental.drewh-ssr.20277611943.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 (102) hide show
  1. package/__tests__/src/Reactor.test.js +18 -11
  2. package/__tests__/src/{datalog.test.js → datalog.test.ts} +17 -5
  3. package/__tests__/src/{instaml.test.js → instaml.test.ts} +183 -119
  4. package/__tests__/src/instaql.bench.ts +34 -0
  5. package/__tests__/src/{instaql.test.js → instaql.test.ts} +342 -455
  6. package/__tests__/src/instaqlInference.test.js +13 -9
  7. package/__tests__/src/serializeSchema.test.ts +123 -0
  8. package/__tests__/src/{store.test.js → store.test.ts} +215 -212
  9. package/dist/commonjs/Reactor.d.ts +36 -7
  10. package/dist/commonjs/Reactor.d.ts.map +1 -1
  11. package/dist/commonjs/Reactor.js +176 -47
  12. package/dist/commonjs/Reactor.js.map +1 -1
  13. package/dist/commonjs/SyncTable.d.ts +4 -1
  14. package/dist/commonjs/SyncTable.d.ts.map +1 -1
  15. package/dist/commonjs/SyncTable.js +35 -37
  16. package/dist/commonjs/SyncTable.js.map +1 -1
  17. package/dist/commonjs/createRouteHandler.d.ts +8 -0
  18. package/dist/commonjs/createRouteHandler.d.ts.map +1 -0
  19. package/dist/commonjs/createRouteHandler.js +57 -0
  20. package/dist/commonjs/createRouteHandler.js.map +1 -0
  21. package/dist/commonjs/framework.d.ts +77 -0
  22. package/dist/commonjs/framework.d.ts.map +1 -0
  23. package/dist/commonjs/framework.js +209 -0
  24. package/dist/commonjs/framework.js.map +1 -0
  25. package/dist/commonjs/index.d.ts +5 -1
  26. package/dist/commonjs/index.d.ts.map +1 -1
  27. package/dist/commonjs/index.js +7 -1
  28. package/dist/commonjs/index.js.map +1 -1
  29. package/dist/commonjs/instaml.d.ts +17 -4
  30. package/dist/commonjs/instaml.d.ts.map +1 -1
  31. package/dist/commonjs/instaml.js +115 -82
  32. package/dist/commonjs/instaml.js.map +1 -1
  33. package/dist/commonjs/instaql.d.ts +4 -3
  34. package/dist/commonjs/instaql.d.ts.map +1 -1
  35. package/dist/commonjs/instaql.js +65 -63
  36. package/dist/commonjs/instaql.js.map +1 -1
  37. package/dist/commonjs/parseSchemaFromJSON.d.ts +3 -0
  38. package/dist/commonjs/parseSchemaFromJSON.d.ts.map +1 -0
  39. package/dist/commonjs/parseSchemaFromJSON.js +148 -0
  40. package/dist/commonjs/parseSchemaFromJSON.js.map +1 -0
  41. package/dist/commonjs/reactorTypes.d.ts +30 -0
  42. package/dist/commonjs/reactorTypes.d.ts.map +1 -0
  43. package/dist/commonjs/reactorTypes.js +3 -0
  44. package/dist/commonjs/reactorTypes.js.map +1 -0
  45. package/dist/commonjs/store.d.ts +67 -25
  46. package/dist/commonjs/store.d.ts.map +1 -1
  47. package/dist/commonjs/store.js +177 -81
  48. package/dist/commonjs/store.js.map +1 -1
  49. package/dist/esm/Reactor.d.ts +36 -7
  50. package/dist/esm/Reactor.d.ts.map +1 -1
  51. package/dist/esm/Reactor.js +177 -48
  52. package/dist/esm/Reactor.js.map +1 -1
  53. package/dist/esm/SyncTable.d.ts +4 -1
  54. package/dist/esm/SyncTable.d.ts.map +1 -1
  55. package/dist/esm/SyncTable.js +35 -37
  56. package/dist/esm/SyncTable.js.map +1 -1
  57. package/dist/esm/createRouteHandler.d.ts +8 -0
  58. package/dist/esm/createRouteHandler.d.ts.map +1 -0
  59. package/dist/esm/createRouteHandler.js +53 -0
  60. package/dist/esm/createRouteHandler.js.map +1 -0
  61. package/dist/esm/framework.d.ts +77 -0
  62. package/dist/esm/framework.d.ts.map +1 -0
  63. package/dist/esm/framework.js +169 -0
  64. package/dist/esm/framework.js.map +1 -0
  65. package/dist/esm/index.d.ts +5 -1
  66. package/dist/esm/index.d.ts.map +1 -1
  67. package/dist/esm/index.js +5 -2
  68. package/dist/esm/index.js.map +1 -1
  69. package/dist/esm/instaml.d.ts +17 -4
  70. package/dist/esm/instaml.d.ts.map +1 -1
  71. package/dist/esm/instaml.js +112 -77
  72. package/dist/esm/instaml.js.map +1 -1
  73. package/dist/esm/instaql.d.ts +4 -3
  74. package/dist/esm/instaql.d.ts.map +1 -1
  75. package/dist/esm/instaql.js +65 -63
  76. package/dist/esm/instaql.js.map +1 -1
  77. package/dist/esm/parseSchemaFromJSON.d.ts +3 -0
  78. package/dist/esm/parseSchemaFromJSON.d.ts.map +1 -0
  79. package/dist/esm/parseSchemaFromJSON.js +144 -0
  80. package/dist/esm/parseSchemaFromJSON.js.map +1 -0
  81. package/dist/esm/reactorTypes.d.ts +30 -0
  82. package/dist/esm/reactorTypes.d.ts.map +1 -0
  83. package/dist/esm/reactorTypes.js +2 -0
  84. package/dist/esm/reactorTypes.js.map +1 -0
  85. package/dist/esm/store.d.ts +67 -25
  86. package/dist/esm/store.d.ts.map +1 -1
  87. package/dist/esm/store.js +174 -81
  88. package/dist/esm/store.js.map +1 -1
  89. package/dist/standalone/index.js +2899 -2389
  90. package/dist/standalone/index.umd.cjs +3 -3
  91. package/package.json +2 -2
  92. package/src/Reactor.js +232 -77
  93. package/src/SyncTable.ts +85 -45
  94. package/src/createRouteHandler.ts +44 -0
  95. package/src/framework.ts +294 -0
  96. package/src/index.ts +9 -0
  97. package/src/{instaml.js → instaml.ts} +201 -96
  98. package/src/instaql.ts +88 -62
  99. package/src/parseSchemaFromJSON.ts +176 -0
  100. package/src/reactorTypes.ts +33 -0
  101. package/src/store.ts +257 -101
  102. package/__tests__/src/instaql.bench.js +0 -29
@@ -1,4 +1,4 @@
1
- import { allMapValues } from "./store.js";
1
+ import { allMapValues, AttrsStoreClass, getAttrByFwdIdentName, getAttrByReverseIdentName, } from "./store.js";
2
2
  import { getOps, isLookup, parseLookup } from "./instatx.js";
3
3
  import { immutableRemoveUndefined } from './utils/object.js';
4
4
  import { coerceToDate } from "./utils/dates.js";
@@ -32,21 +32,6 @@ export function rewriteStep(attrMapping, txStep) {
32
32
  }
33
33
  return rewritten;
34
34
  }
35
- export function getAttrByFwdIdentName(attrs, inputEtype, inputIdentName) {
36
- return Object.values(attrs).find((attr) => {
37
- const [_id, etype, label] = attr['forward-identity'];
38
- return etype === inputEtype && label === inputIdentName;
39
- });
40
- }
41
- export function getAttrByReverseIdentName(attrs, inputEtype, inputIdentName) {
42
- return Object.values(attrs).find((attr) => {
43
- const revIdent = attr['reverse-identity'];
44
- if (!revIdent)
45
- return false;
46
- const [_id, etype, label] = revIdent;
47
- return etype === inputEtype && label === inputIdentName;
48
- });
49
- }
50
35
  function explodeLookupRef(eid) {
51
36
  if (Array.isArray(eid)) {
52
37
  return eid;
@@ -105,6 +90,7 @@ function extractLookup(attrs, etype, eid) {
105
90
  return [attr.id, value];
106
91
  }
107
92
  function withIdAttrForLookup(attrs, etype, eidA, txSteps) {
93
+ var _b;
108
94
  const lookup = extractLookup(attrs, etype, eidA);
109
95
  if (!Array.isArray(lookup)) {
110
96
  return txSteps;
@@ -112,60 +98,69 @@ function withIdAttrForLookup(attrs, etype, eidA, txSteps) {
112
98
  const idTuple = [
113
99
  'add-triple',
114
100
  lookup,
115
- getAttrByFwdIdentName(attrs, etype, 'id').id,
101
+ (_b = getAttrByFwdIdentName(attrs, etype, 'id')) === null || _b === void 0 ? void 0 : _b.id,
116
102
  lookup,
117
103
  ];
118
104
  return [idTuple].concat(txSteps);
119
105
  }
120
- function expandLink({ attrs }, [etype, eidA, obj]) {
106
+ function expandLink({ attrsStore }, [etype, eidA, obj]) {
121
107
  const addTriples = Object.entries(obj).flatMap(([label, eidOrEids]) => {
122
108
  const eids = Array.isArray(eidOrEids) ? eidOrEids : [eidOrEids];
123
- const fwdAttr = getAttrByFwdIdentName(attrs, etype, label);
124
- const revAttr = getAttrByReverseIdentName(attrs, etype, label);
109
+ const fwdAttr = getAttrByFwdIdentName(attrsStore, etype, label);
110
+ const revAttr = getAttrByReverseIdentName(attrsStore, etype, label);
125
111
  return eids.map((eidB) => {
126
112
  const txStep = fwdAttr
127
113
  ? [
128
114
  'add-triple',
129
- extractLookup(attrs, etype, eidA),
115
+ extractLookup(attrsStore, etype, eidA),
130
116
  fwdAttr.id,
131
- extractLookup(attrs, fwdAttr['reverse-identity'][1], eidB),
117
+ // Uses `!` because if we get here, we should have created the attr if it doesn't
118
+ // already exist
119
+ extractLookup(attrsStore, fwdAttr['reverse-identity'][1], eidB),
132
120
  ]
133
121
  : [
134
122
  'add-triple',
135
- extractLookup(attrs, revAttr['forward-identity'][1], eidB),
136
- revAttr.id,
137
- extractLookup(attrs, etype, eidA),
123
+ // Uses `!` because if we get here, we should have created the attr if it doesn't
124
+ // already exist
125
+ extractLookup(attrsStore, revAttr['forward-identity'][1], eidB),
126
+ revAttr === null || revAttr === void 0 ? void 0 : revAttr.id,
127
+ extractLookup(attrsStore, etype, eidA),
138
128
  ];
139
129
  return txStep;
140
130
  });
141
131
  });
142
- return withIdAttrForLookup(attrs, etype, eidA, addTriples);
132
+ return withIdAttrForLookup(attrsStore, etype, eidA, addTriples);
143
133
  }
144
- function expandUnlink({ attrs }, [etype, eidA, obj]) {
134
+ function expandUnlink({ attrsStore }, [etype, eidA, obj]) {
145
135
  const retractTriples = Object.entries(obj).flatMap(([label, eidOrEids]) => {
146
136
  const eids = Array.isArray(eidOrEids) ? eidOrEids : [eidOrEids];
147
- const fwdAttr = getAttrByFwdIdentName(attrs, etype, label);
148
- const revAttr = getAttrByReverseIdentName(attrs, etype, label);
137
+ const fwdAttr = getAttrByFwdIdentName(attrsStore, etype, label);
138
+ const revAttr = getAttrByReverseIdentName(attrsStore, etype, label);
149
139
  return eids.map((eidB) => {
150
140
  const txStep = fwdAttr
151
141
  ? [
152
142
  'retract-triple',
153
- extractLookup(attrs, etype, eidA),
143
+ extractLookup(attrsStore, etype, eidA),
154
144
  fwdAttr.id,
155
- extractLookup(attrs, fwdAttr['reverse-identity'][1], eidB),
145
+ // Uses `!` because if we get here, we should have created the attr if it doesn't
146
+ // already exist
147
+ extractLookup(attrsStore, fwdAttr['reverse-identity'][1], eidB),
156
148
  ]
157
149
  : [
158
150
  'retract-triple',
159
- extractLookup(attrs, revAttr['forward-identity'][1], eidB),
151
+ // Uses `!` because if we get here, we should have created the attr if it doesn't
152
+ // already exist
153
+ extractLookup(attrsStore, revAttr['forward-identity'][1], eidB),
160
154
  revAttr.id,
161
- extractLookup(attrs, etype, eidA),
155
+ extractLookup(attrsStore, etype, eidA),
162
156
  ];
163
157
  return txStep;
164
158
  });
165
159
  });
166
- return withIdAttrForLookup(attrs, etype, eidA, retractTriples);
160
+ return withIdAttrForLookup(attrsStore, etype, eidA, retractTriples);
167
161
  }
168
- function checkEntityExists(stores, etype, eid) {
162
+ function checkEntityExists(stores, attrsStore, etype, eid) {
163
+ var _b;
169
164
  if (Array.isArray(eid)) {
170
165
  // lookup ref
171
166
  const [entity_a, entity_v] = eid;
@@ -173,7 +168,7 @@ function checkEntityExists(stores, etype, eid) {
173
168
  const ev = store === null || store === void 0 ? void 0 : store.aev.get(entity_a);
174
169
  if (ev) {
175
170
  // This would be a lot more efficient with a ave index
176
- for (const [e_, a_, v] of allMapValues(ev, 2)) {
171
+ for (const [_e, _a, v] of allMapValues(ev, 2)) {
177
172
  if (v === entity_v) {
178
173
  return true;
179
174
  }
@@ -187,7 +182,7 @@ function checkEntityExists(stores, etype, eid) {
187
182
  const av = store === null || store === void 0 ? void 0 : store.eav.get(eid);
188
183
  if (av) {
189
184
  for (const attr_id of av.keys()) {
190
- if (store.attrs[attr_id]['forward-identity'][1] == etype) {
185
+ if (((_b = attrsStore.getAttr(attr_id)) === null || _b === void 0 ? void 0 : _b['forward-identity'][1]) == etype) {
191
186
  return true;
192
187
  }
193
188
  }
@@ -196,25 +191,26 @@ function checkEntityExists(stores, etype, eid) {
196
191
  }
197
192
  return false;
198
193
  }
199
- function convertOpts({ stores, attrs }, [etype, eid, obj_, opts]) {
194
+ function convertOpts({ stores, attrsStore }, [etype, eid, obj_, opts]) {
200
195
  return (opts === null || opts === void 0 ? void 0 : opts.upsert) === false
201
196
  ? { mode: 'update' }
202
197
  : (opts === null || opts === void 0 ? void 0 : opts.upsert) === true
203
198
  ? null
204
- : checkEntityExists(stores, etype, eid)
199
+ : checkEntityExists(stores, attrsStore, etype, eid)
205
200
  ? { mode: 'update' }
206
201
  : null; // auto mode chooses between update and upsert, not update and create, just in case
207
202
  }
208
203
  function expandCreate(ctx, step) {
209
- const { stores, attrs } = ctx;
204
+ const { attrsStore } = ctx;
210
205
  const [etype, eid, obj_, opts] = step;
211
206
  const obj = immutableRemoveUndefined(obj_);
212
- const lookup = extractLookup(attrs, etype, eid);
207
+ const lookup = extractLookup(attrsStore, etype, eid);
213
208
  // id first so that we don't clobber updates on the lookup field
214
209
  const attrTuples = [['id', lookup]]
215
210
  .concat(Object.entries(obj))
216
211
  .map(([identName, value]) => {
217
- const attr = getAttrByFwdIdentName(attrs, etype, identName);
212
+ // Uses `!` because we should have optimistically created the attr if it doesn't exist
213
+ const attr = getAttrByFwdIdentName(attrsStore, etype, identName);
218
214
  if (attr['checked-data-type'] === 'date' && ctx.useDateObjects) {
219
215
  value = coerceToDate(value);
220
216
  }
@@ -223,16 +219,16 @@ function expandCreate(ctx, step) {
223
219
  return attrTuples;
224
220
  }
225
221
  function expandUpdate(ctx, step) {
226
- const { stores, attrs } = ctx;
222
+ const { attrsStore } = ctx;
227
223
  const [etype, eid, obj_, opts] = step;
228
224
  const obj = immutableRemoveUndefined(obj_);
229
- const lookup = extractLookup(attrs, etype, eid);
225
+ const lookup = extractLookup(attrsStore, etype, eid);
230
226
  const serverOpts = convertOpts(ctx, [etype, lookup, obj_, opts]);
231
227
  // id first so that we don't clobber updates on the lookup field
232
228
  const attrTuples = [['id', lookup]]
233
229
  .concat(Object.entries(obj))
234
230
  .map(([identName, value]) => {
235
- const attr = getAttrByFwdIdentName(attrs, etype, identName);
231
+ const attr = getAttrByFwdIdentName(attrsStore, etype, identName);
236
232
  if (attr['checked-data-type'] === 'date' && ctx.useDateObjects) {
237
233
  value = coerceToDate(value);
238
234
  }
@@ -246,18 +242,18 @@ function expandUpdate(ctx, step) {
246
242
  });
247
243
  return attrTuples;
248
244
  }
249
- function expandDelete({ attrs }, [etype, eid]) {
250
- const lookup = extractLookup(attrs, etype, eid);
245
+ function expandDelete({ attrsStore }, [etype, eid]) {
246
+ const lookup = extractLookup(attrsStore, etype, eid);
251
247
  return [['delete-entity', lookup, etype]];
252
248
  }
253
249
  function expandDeepMerge(ctx, step) {
254
- const { stores, attrs } = ctx;
250
+ const { attrsStore } = ctx;
255
251
  const [etype, eid, obj_, opts] = step;
256
252
  const obj = immutableRemoveUndefined(obj_);
257
- const lookup = extractLookup(attrs, etype, eid);
253
+ const lookup = extractLookup(attrsStore, etype, eid);
258
254
  const serverOpts = convertOpts(ctx, [etype, lookup, obj_, opts]);
259
255
  const attrTuples = Object.entries(obj).map(([identName, value]) => {
260
- const attr = getAttrByFwdIdentName(attrs, etype, identName);
256
+ const attr = getAttrByFwdIdentName(attrsStore, etype, identName);
261
257
  return [
262
258
  'deep-merge-triple',
263
259
  lookup,
@@ -269,15 +265,15 @@ function expandDeepMerge(ctx, step) {
269
265
  const idTuple = [
270
266
  'add-triple',
271
267
  lookup,
272
- getAttrByFwdIdentName(attrs, etype, 'id').id,
268
+ getAttrByFwdIdentName(attrsStore, etype, 'id').id,
273
269
  lookup,
274
270
  ...(serverOpts ? [serverOpts] : []),
275
271
  ];
276
272
  // id first so that we don't clobber updates on the lookup field
277
273
  return [idTuple].concat(attrTuples);
278
274
  }
279
- function expandRuleParams({ attrs }, [etype, eid, ruleParams]) {
280
- const lookup = extractLookup(attrs, etype, eid);
275
+ function expandRuleParams({ attrsStore }, [etype, eid, ruleParams]) {
276
+ const lookup = extractLookup(attrsStore, etype, eid);
281
277
  return [['rule-params', lookup, etype, ruleParams]];
282
278
  }
283
279
  function removeIdFromArgs(step) {
@@ -324,8 +320,8 @@ function checkedDataTypeOfValueType(valueType) {
324
320
  }
325
321
  }
326
322
  function objectPropsFromSchema(schema, etype, label) {
327
- var _a, _b;
328
- const attr = (_b = (_a = schema.entities[etype]) === null || _a === void 0 ? void 0 : _a.attrs) === null || _b === void 0 ? void 0 : _b[label];
323
+ var _b, _c;
324
+ const attr = (_c = (_b = schema.entities[etype]) === null || _b === void 0 ? void 0 : _b.attrs) === null || _c === void 0 ? void 0 : _c[label];
329
325
  if (label === 'id')
330
326
  return null;
331
327
  if (!attr) {
@@ -349,7 +345,8 @@ function createObjectAttr(schema, etype, label, props) {
349
345
  return Object.assign(Object.assign({ id: attrId, 'forward-identity': fwdIdent, 'value-type': 'blob', cardinality: 'one', 'unique?': false, 'index?': false, isUnsynced: true }, (schemaObjectProps || {})), (props || {}));
350
346
  }
351
347
  function findSchemaLink(schema, etype, label) {
352
- const found = Object.values(schema.links).find((x) => {
348
+ const links = Object.values(schema.links);
349
+ const found = links.find((x) => {
353
350
  return ((x.forward.on === etype && x.forward.label === label) ||
354
351
  (x.reverse.on === etype && x.reverse.label === label));
355
352
  });
@@ -377,7 +374,13 @@ function createRefAttr(schema, etype, label, props) {
377
374
  const attrId = uuid();
378
375
  const fwdIdent = [uuid(), etype, label];
379
376
  const revIdent = [uuid(), label, etype];
380
- return Object.assign(Object.assign({ id: attrId, 'forward-identity': fwdIdent, 'reverse-identity': revIdent, 'value-type': 'ref', cardinality: 'many', 'unique?': false, 'index?': false, isUnsynced: true }, (schemaRefProps || {})), (props || {}));
377
+ return Object.assign(Object.assign({ id: attrId,
378
+ // @ts-ignore: ts thinks it's any[]
379
+ 'forward-identity': fwdIdent,
380
+ // @ts-ignore: ts thinks it's any[]
381
+ 'reverse-identity': revIdent, 'value-type': 'ref',
382
+ // @ts-ignore: ts thinks it's type string
383
+ cardinality: 'many', 'unique?': false, 'index?': false, isUnsynced: true }, (schemaRefProps || {})), (props || {}));
381
384
  }
382
385
  // Actions that have an object, e.g. not delete
383
386
  const OBJ_ACTIONS = new Set(['create', 'update', 'merge', 'link', 'unlink']);
@@ -421,24 +424,49 @@ function lookupPairsOfOp(op) {
421
424
  }
422
425
  return res;
423
426
  }
424
- function createMissingAttrs({ attrs: existingAttrs, schema }, ops) {
425
- var _a, _b;
426
- const [addedIds, attrs, addOps] = [new Set(), Object.assign({}, existingAttrs), []];
427
+ function createMissingAttrs({ attrsStore, schema }, ops) {
428
+ var _b, _c;
429
+ const addedIds = new Set();
430
+ const localAttrs = [];
431
+ const addOps = [];
432
+ function attrByFwdIdent(etype, label) {
433
+ return (getAttrByFwdIdentName(attrsStore, etype, label) ||
434
+ localAttrs.find((x) => x['forward-identity'][1] === etype &&
435
+ x['forward-identity'][2] === label));
436
+ }
437
+ function attrByRevIdent(etype, label) {
438
+ return (getAttrByReverseIdentName(attrsStore, etype, label) ||
439
+ localAttrs.find((x) => {
440
+ var _b, _c;
441
+ return ((_b = x['reverse-identity']) === null || _b === void 0 ? void 0 : _b[1]) === etype &&
442
+ ((_c = x['reverse-identity']) === null || _c === void 0 ? void 0 : _c[2]) === label;
443
+ }));
444
+ }
427
445
  function addAttr(attr) {
428
- attrs[attr.id] = attr;
446
+ localAttrs.push(attr);
429
447
  addOps.push(['add-attr', attr]);
430
448
  addedIds.add(attr.id);
431
449
  }
432
450
  function addUnsynced(attr) {
433
- if ((attr === null || attr === void 0 ? void 0 : attr.isUnsynced) && !addedIds.has(attr.id)) {
451
+ if (attr &&
452
+ 'isUnsynced' in attr &&
453
+ attr.isUnsynced &&
454
+ !addedIds.has(attr.id)) {
455
+ localAttrs.push(attr);
434
456
  addOps.push(['add-attr', attr]);
435
457
  addedIds.add(attr.id);
436
458
  }
437
459
  }
460
+ function isRefLookupIdentLocal(etype, identName) {
461
+ return (identName.indexOf('.') !== -1 &&
462
+ // attr names can have `.` in them, so use the attr we find with a `.`
463
+ // before assuming it's a ref lookup.
464
+ !attrByFwdIdent(etype, identName));
465
+ }
438
466
  // Adds attrs needed for a ref lookup
439
467
  function addForRef(etype, label) {
440
- const fwdAttr = getAttrByFwdIdentName(attrs, etype, label);
441
- const revAttr = getAttrByReverseIdentName(attrs, etype, label);
468
+ const fwdAttr = attrByFwdIdent(etype, label);
469
+ const revAttr = attrByRevIdent(etype, label);
442
470
  addUnsynced(fwdAttr);
443
471
  addUnsynced(revAttr);
444
472
  if (!fwdAttr && !revAttr) {
@@ -458,29 +486,29 @@ function createMissingAttrs({ attrs: existingAttrs, schema }, ops) {
458
486
  addForRef(etype, linkLabel);
459
487
  // Figure out the link etype so we can make sure we have the attrs
460
488
  // for the link lookup
461
- const fwdAttr = getAttrByFwdIdentName(attrs, etype, linkLabel);
462
- const revAttr = getAttrByReverseIdentName(attrs, etype, linkLabel);
489
+ const fwdAttr = attrByFwdIdent(etype, linkLabel);
490
+ const revAttr = attrByRevIdent(etype, linkLabel);
463
491
  addUnsynced(fwdAttr);
464
492
  addUnsynced(revAttr);
465
- const linkEtype = ((_a = fwdAttr === null || fwdAttr === void 0 ? void 0 : fwdAttr['reverse-identity']) === null || _a === void 0 ? void 0 : _a[1]) ||
466
- ((_b = revAttr === null || revAttr === void 0 ? void 0 : revAttr['forward-identity']) === null || _b === void 0 ? void 0 : _b[1]) ||
493
+ const linkEtype = ((_b = fwdAttr === null || fwdAttr === void 0 ? void 0 : fwdAttr['reverse-identity']) === null || _b === void 0 ? void 0 : _b[1]) ||
494
+ ((_c = revAttr === null || revAttr === void 0 ? void 0 : revAttr['forward-identity']) === null || _c === void 0 ? void 0 : _c[1]) ||
467
495
  linkLabel;
468
- if (isRefLookupIdent(attrs, linkEtype, identName)) {
496
+ if (isRefLookupIdentLocal(linkEtype, identName)) {
469
497
  addForRef(linkEtype, extractRefLookupFwdName(identName));
470
498
  }
471
499
  else {
472
- const attr = getAttrByFwdIdentName(attrs, linkEtype, identName);
500
+ const attr = attrByFwdIdent(linkEtype, identName);
473
501
  if (!attr) {
474
502
  addAttr(createObjectAttr(schema, linkEtype, identName, lookupProps));
475
503
  }
476
504
  addUnsynced(attr);
477
505
  }
478
506
  }
479
- else if (isRefLookupIdent(attrs, etype, identName)) {
507
+ else if (isRefLookupIdentLocal(etype, identName)) {
480
508
  addForRef(etype, extractRefLookupFwdName(identName));
481
509
  }
482
510
  else {
483
- const attr = getAttrByFwdIdentName(attrs, etype, identName);
511
+ const attr = attrByFwdIdent(etype, identName);
484
512
  if (!attr) {
485
513
  addAttr(createObjectAttr(schema, etype, identName, lookupProps));
486
514
  }
@@ -492,13 +520,13 @@ function createMissingAttrs({ attrs: existingAttrs, schema }, ops) {
492
520
  for (const op of ops) {
493
521
  const [action, etype, eid, obj] = op;
494
522
  if (OBJ_ACTIONS.has(action)) {
495
- const idAttr = getAttrByFwdIdentName(attrs, etype, 'id');
523
+ const idAttr = attrByFwdIdent(etype, 'id');
496
524
  addUnsynced(idAttr);
497
525
  if (!idAttr) {
498
526
  addAttr(createObjectAttr(schema, etype, 'id', { 'unique?': true }));
499
527
  }
500
528
  for (const label of Object.keys(obj)) {
501
- const fwdAttr = getAttrByFwdIdentName(attrs, etype, label);
529
+ const fwdAttr = attrByFwdIdent(etype, label);
502
530
  addUnsynced(fwdAttr);
503
531
  if (UPDATE_ACTIONS.has(action)) {
504
532
  if (!fwdAttr) {
@@ -506,7 +534,7 @@ function createMissingAttrs({ attrs: existingAttrs, schema }, ops) {
506
534
  }
507
535
  }
508
536
  if (REF_ACTIONS.has(action)) {
509
- const revAttr = getAttrByReverseIdentName(attrs, etype, label);
537
+ const revAttr = attrByRevIdent(etype, label);
510
538
  if (!fwdAttr && !revAttr) {
511
539
  addAttr(createRefAttr(schema, etype, label));
512
540
  }
@@ -515,13 +543,20 @@ function createMissingAttrs({ attrs: existingAttrs, schema }, ops) {
515
543
  }
516
544
  }
517
545
  }
518
- return [attrs, addOps];
546
+ if (localAttrs.length) {
547
+ const nextAttrs = Object.assign({}, attrsStore.attrs);
548
+ for (const attr of localAttrs) {
549
+ nextAttrs[attr.id] = attr;
550
+ }
551
+ return [new AttrsStoreClass(nextAttrs, attrsStore.linkIndex), addOps];
552
+ }
553
+ return [attrsStore, addOps];
519
554
  }
520
555
  export function transform(ctx, inputChunks) {
521
556
  const chunks = Array.isArray(inputChunks) ? inputChunks : [inputChunks];
522
557
  const ops = chunks.flatMap((tx) => getOps(tx));
523
558
  const [newAttrs, addAttrTxSteps] = createMissingAttrs(ctx, ops);
524
- const newCtx = Object.assign(Object.assign({}, ctx), { attrs: newAttrs });
559
+ const newCtx = Object.assign(Object.assign({}, ctx), { attrsStore: newAttrs });
525
560
  const txSteps = ops.flatMap((op) => toTxSteps(newCtx, op));
526
561
  return [...addAttrTxSteps, ...txSteps];
527
562
  }
@@ -1 +1 @@
1
- {"version":3,"file":"instaml.js","sourceRoot":"","sources":["../../src/instaml.js"],"names":[],"mappings":"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","sourcesContent":["import { allMapValues } from './store.ts';\nimport { getOps, isLookup, parseLookup } from './instatx.ts';\nimport { immutableRemoveUndefined } from './utils/object.js';\nimport { coerceToDate } from './utils/dates.ts';\nimport uuid from './utils/uuid.ts';\n\n// Rewrites optimistic attrs with the attrs we get back from the server.\nexport function rewriteStep(attrMapping, txStep) {\n const { attrIdMap, refSwapAttrIds } = attrMapping;\n const rewritten = [];\n for (const part of txStep) {\n const newValue = attrIdMap[part];\n\n if (newValue) {\n // Rewrites attr id\n rewritten.push(newValue);\n } else if (Array.isArray(part) && part.length == 2 && attrIdMap[part[0]]) {\n // Rewrites attr id in lookups\n const [aid, value] = part;\n rewritten.push([attrIdMap[aid], value]);\n } else {\n rewritten.push(part);\n }\n }\n const [action] = txStep;\n if (\n (action === 'add-triple' || action === 'retract-triple') &&\n refSwapAttrIds.has(txStep[2])\n ) {\n // Reverse links if the optimistic link attr is backwards\n const tmp = rewritten[1];\n rewritten[1] = rewritten[3];\n rewritten[3] = tmp;\n }\n return rewritten;\n}\n\nexport function getAttrByFwdIdentName(attrs, inputEtype, inputIdentName) {\n return Object.values(attrs).find((attr) => {\n const [_id, etype, label] = attr['forward-identity'];\n return etype === inputEtype && label === inputIdentName;\n });\n}\n\nexport function getAttrByReverseIdentName(attrs, inputEtype, inputIdentName) {\n return Object.values(attrs).find((attr) => {\n const revIdent = attr['reverse-identity'];\n if (!revIdent) return false;\n const [_id, etype, label] = revIdent;\n return etype === inputEtype && label === inputIdentName;\n });\n}\n\nfunction explodeLookupRef(eid) {\n if (Array.isArray(eid)) {\n return eid;\n }\n const entries = Object.entries(eid);\n if (entries.length !== 1) {\n throw new Error(\n 'lookup must be an object with a single unique attr and value.',\n );\n }\n return entries[0];\n}\n\nfunction isRefLookupIdent(attrs, etype, identName) {\n return (\n identName.indexOf('.') !== -1 &&\n // attr names can have `.` in them, so use the attr we find with a `.`\n // before assuming it's a ref lookup.\n !getAttrByFwdIdentName(attrs, etype, identName)\n );\n}\n\nfunction extractRefLookupFwdName(identName) {\n const [fwdName, idIdent, ...rest] = identName.split('.');\n if (rest.length > 0 || idIdent !== 'id') {\n throw new Error(`${identName} is not a valid lookup attribute.`);\n }\n\n return fwdName;\n}\n\nfunction lookupIdentToAttr(attrs, etype, identName) {\n if (!isRefLookupIdent(attrs, etype, identName)) {\n return getAttrByFwdIdentName(attrs, etype, identName);\n }\n\n const fwdName = extractRefLookupFwdName(identName);\n\n const refAttr =\n getAttrByFwdIdentName(attrs, etype, fwdName) ||\n getAttrByReverseIdentName(attrs, etype, fwdName);\n if (refAttr && refAttr['value-type'] !== 'ref') {\n throw new Error(`${identName} does not reference a valid link attribute.`);\n }\n return refAttr;\n}\n\n// Returns [attr, value] for the eid if the eid is a lookup.\n// If it's a regular eid, returns null\nfunction lookupPairOfEid(eid) {\n if (typeof eid === 'string' && !isLookup(eid)) {\n return null;\n }\n return typeof eid === 'string' && isLookup(eid)\n ? parseLookup(eid)\n : explodeLookupRef(eid);\n}\n\nfunction extractLookup(attrs, etype, eid) {\n const lookupPair = lookupPairOfEid(eid);\n\n if (lookupPair === null) {\n return eid;\n }\n\n const [identName, value] = lookupPair;\n const attr = lookupIdentToAttr(attrs, etype, identName);\n if (!attr || !attr['unique?']) {\n throw new Error(`${identName} is not a unique attribute.`);\n }\n return [attr.id, value];\n}\n\nfunction withIdAttrForLookup(attrs, etype, eidA, txSteps) {\n const lookup = extractLookup(attrs, etype, eidA);\n if (!Array.isArray(lookup)) {\n return txSteps;\n }\n const idTuple = [\n 'add-triple',\n lookup,\n getAttrByFwdIdentName(attrs, etype, 'id').id,\n lookup,\n ];\n return [idTuple].concat(txSteps);\n}\n\nfunction expandLink({ attrs }, [etype, eidA, obj]) {\n const addTriples = Object.entries(obj).flatMap(([label, eidOrEids]) => {\n const eids = Array.isArray(eidOrEids) ? eidOrEids : [eidOrEids];\n const fwdAttr = getAttrByFwdIdentName(attrs, etype, label);\n const revAttr = getAttrByReverseIdentName(attrs, etype, label);\n return eids.map((eidB) => {\n const txStep = fwdAttr\n ? [\n 'add-triple',\n extractLookup(attrs, etype, eidA),\n fwdAttr.id,\n extractLookup(attrs, fwdAttr['reverse-identity'][1], eidB),\n ]\n : [\n 'add-triple',\n extractLookup(attrs, revAttr['forward-identity'][1], eidB),\n revAttr.id,\n extractLookup(attrs, etype, eidA),\n ];\n return txStep;\n });\n });\n return withIdAttrForLookup(attrs, etype, eidA, addTriples);\n}\n\nfunction expandUnlink({ attrs }, [etype, eidA, obj]) {\n const retractTriples = Object.entries(obj).flatMap(([label, eidOrEids]) => {\n const eids = Array.isArray(eidOrEids) ? eidOrEids : [eidOrEids];\n const fwdAttr = getAttrByFwdIdentName(attrs, etype, label);\n const revAttr = getAttrByReverseIdentName(attrs, etype, label);\n return eids.map((eidB) => {\n const txStep = fwdAttr\n ? [\n 'retract-triple',\n extractLookup(attrs, etype, eidA),\n fwdAttr.id,\n extractLookup(attrs, fwdAttr['reverse-identity'][1], eidB),\n ]\n : [\n 'retract-triple',\n extractLookup(attrs, revAttr['forward-identity'][1], eidB),\n revAttr.id,\n extractLookup(attrs, etype, eidA),\n ];\n return txStep;\n });\n });\n return withIdAttrForLookup(attrs, etype, eidA, retractTriples);\n}\n\nfunction checkEntityExists(stores, etype, eid) {\n if (Array.isArray(eid)) {\n // lookup ref\n const [entity_a, entity_v] = eid;\n for (const store of stores || []) {\n const ev = store?.aev.get(entity_a);\n if (ev) {\n // This would be a lot more efficient with a ave index\n for (const [e_, a_, v] of allMapValues(ev, 2)) {\n if (v === entity_v) {\n return true;\n }\n }\n }\n }\n } else {\n // eid\n for (const store of stores || []) {\n const av = store?.eav.get(eid);\n if (av) {\n for (const attr_id of av.keys()) {\n if (store.attrs[attr_id]['forward-identity'][1] == etype) {\n return true;\n }\n }\n }\n }\n }\n return false;\n}\n\nfunction convertOpts({ stores, attrs }, [etype, eid, obj_, opts]) {\n return opts?.upsert === false\n ? { mode: 'update' }\n : opts?.upsert === true\n ? null\n : checkEntityExists(stores, etype, eid)\n ? { mode: 'update' }\n : null; // auto mode chooses between update and upsert, not update and create, just in case\n}\n\nfunction expandCreate(ctx, step) {\n const { stores, attrs } = ctx;\n const [etype, eid, obj_, opts] = step;\n const obj = immutableRemoveUndefined(obj_);\n const lookup = extractLookup(attrs, etype, eid);\n // id first so that we don't clobber updates on the lookup field\n const attrTuples = [['id', lookup]]\n .concat(Object.entries(obj))\n .map(([identName, value]) => {\n const attr = getAttrByFwdIdentName(attrs, etype, identName);\n\n if (attr['checked-data-type'] === 'date' && ctx.useDateObjects) {\n value = coerceToDate(value);\n }\n\n return ['add-triple', lookup, attr.id, value, { mode: 'create' }];\n });\n return attrTuples;\n}\n\nfunction expandUpdate(ctx, step) {\n const { stores, attrs } = ctx;\n const [etype, eid, obj_, opts] = step;\n const obj = immutableRemoveUndefined(obj_);\n const lookup = extractLookup(attrs, etype, eid);\n const serverOpts = convertOpts(ctx, [etype, lookup, obj_, opts]);\n // id first so that we don't clobber updates on the lookup field\n const attrTuples = [['id', lookup]]\n .concat(Object.entries(obj))\n .map(([identName, value]) => {\n const attr = getAttrByFwdIdentName(attrs, etype, identName);\n\n if (attr['checked-data-type'] === 'date' && ctx.useDateObjects) {\n value = coerceToDate(value);\n }\n\n return [\n 'add-triple',\n lookup,\n attr.id,\n value,\n ...(serverOpts ? [serverOpts] : []),\n ];\n });\n return attrTuples;\n}\n\nfunction expandDelete({ attrs }, [etype, eid]) {\n const lookup = extractLookup(attrs, etype, eid);\n return [['delete-entity', lookup, etype]];\n}\n\nfunction expandDeepMerge(ctx, step) {\n const { stores, attrs } = ctx;\n const [etype, eid, obj_, opts] = step;\n const obj = immutableRemoveUndefined(obj_);\n const lookup = extractLookup(attrs, etype, eid);\n const serverOpts = convertOpts(ctx, [etype, lookup, obj_, opts]);\n const attrTuples = Object.entries(obj).map(([identName, value]) => {\n const attr = getAttrByFwdIdentName(attrs, etype, identName);\n return [\n 'deep-merge-triple',\n lookup,\n attr.id,\n value,\n ...(serverOpts ? [serverOpts] : []),\n ];\n });\n\n const idTuple = [\n 'add-triple',\n lookup,\n getAttrByFwdIdentName(attrs, etype, 'id').id,\n lookup,\n ...(serverOpts ? [serverOpts] : []),\n ];\n\n // id first so that we don't clobber updates on the lookup field\n return [idTuple].concat(attrTuples);\n}\n\nfunction expandRuleParams({ attrs }, [etype, eid, ruleParams]) {\n const lookup = extractLookup(attrs, etype, eid);\n return [['rule-params', lookup, etype, ruleParams]];\n}\n\nfunction removeIdFromArgs(step) {\n const [op, etype, eid, obj, opts] = step;\n if (!obj) {\n return step;\n }\n const newObj = { ...obj };\n delete newObj.id;\n return [op, etype, eid, newObj, ...(opts ? [opts] : [])];\n}\n\nfunction toTxSteps(ctx, step) {\n const [action, ...args] = removeIdFromArgs(step);\n switch (action) {\n case 'merge':\n return expandDeepMerge(ctx, args);\n case 'create':\n return expandCreate(ctx, args);\n case 'update':\n return expandUpdate(ctx, args);\n case 'link':\n return expandLink(ctx, args);\n case 'unlink':\n return expandUnlink(ctx, args);\n case 'delete':\n return expandDelete(ctx, args);\n case 'ruleParams':\n return expandRuleParams(ctx, args);\n default:\n throw new Error(`unsupported action ${action}`);\n }\n}\n\n// ---------\n// transform\n\nfunction checkedDataTypeOfValueType(valueType) {\n switch (valueType) {\n case 'string':\n case 'date':\n case 'boolean':\n case 'number':\n return valueType;\n default:\n return undefined;\n }\n}\n\nfunction objectPropsFromSchema(schema, etype, label) {\n const attr = schema.entities[etype]?.attrs?.[label];\n if (label === 'id') return null;\n if (!attr) {\n throw new Error(`${etype}.${label} does not exist in your schema`);\n }\n const { unique, indexed } = attr?.config;\n const checkedDataType = checkedDataTypeOfValueType(attr?.valueType);\n\n return {\n 'index?': indexed,\n 'unique?': unique,\n 'checked-data-type': checkedDataType,\n };\n}\n\nfunction createObjectAttr(schema, etype, label, props) {\n const schemaObjectProps = schema\n ? objectPropsFromSchema(schema, etype, label)\n : null;\n const attrId = uuid();\n const fwdIdentId = uuid();\n const fwdIdent = [fwdIdentId, etype, label];\n return {\n id: attrId,\n 'forward-identity': fwdIdent,\n 'value-type': 'blob',\n cardinality: 'one',\n 'unique?': false,\n 'index?': false,\n isUnsynced: true,\n ...(schemaObjectProps || {}),\n ...(props || {}),\n };\n}\n\nfunction findSchemaLink(schema, etype, label) {\n const found = Object.values(schema.links).find((x) => {\n return (\n (x.forward.on === etype && x.forward.label === label) ||\n (x.reverse.on === etype && x.reverse.label === label)\n );\n });\n return found;\n}\n\nfunction refPropsFromSchema(schema, etype, label) {\n const found = findSchemaLink(schema, etype, label);\n if (!found) {\n throw new Error(`Couldn't find the link ${etype}.${label} in your schema`);\n }\n const { forward, reverse } = found;\n return {\n 'forward-identity': [uuid(), forward.on, forward.label],\n 'reverse-identity': [uuid(), reverse.on, reverse.label],\n cardinality: forward.has === 'one' ? 'one' : 'many',\n 'unique?': reverse.has === 'one',\n 'on-delete': forward.onDelete,\n 'on-delete-reverse': reverse.onDelete,\n };\n}\n\nfunction createRefAttr(schema, etype, label, props) {\n const schemaRefProps = schema\n ? refPropsFromSchema(schema, etype, label)\n : null;\n const attrId = uuid();\n const fwdIdent = [uuid(), etype, label];\n const revIdent = [uuid(), label, etype];\n return {\n id: attrId,\n 'forward-identity': fwdIdent,\n 'reverse-identity': revIdent,\n 'value-type': 'ref',\n cardinality: 'many',\n 'unique?': false,\n 'index?': false,\n isUnsynced: true,\n ...(schemaRefProps || {}),\n ...(props || {}),\n };\n}\n\n// Actions that have an object, e.g. not delete\nconst OBJ_ACTIONS = new Set(['create', 'update', 'merge', 'link', 'unlink']);\nconst REF_ACTIONS = new Set(['link', 'unlink']);\nconst UPDATE_ACTIONS = new Set(['create', 'update', 'merge']);\nconst SUPPORTS_LOOKUP_ACTIONS = new Set([\n 'link',\n 'unlink',\n 'create',\n 'update',\n 'merge',\n 'delete',\n 'ruleParams',\n]);\n\nconst lookupProps = { 'unique?': true, 'index?': true };\nconst refLookupProps = { ...lookupProps, cardinality: 'one' };\n\nfunction lookupPairsOfOp(op) {\n const res = [];\n const [action, etype, eid, obj] = op;\n if (!SUPPORTS_LOOKUP_ACTIONS.has(action)) {\n return res;\n }\n\n const eidLookupPair = lookupPairOfEid(eid);\n if (eidLookupPair) {\n res.push({ etype: etype, lookupPair: eidLookupPair });\n }\n if (action === 'link') {\n for (const [label, eidOrEids] of Object.entries(obj)) {\n const eids = Array.isArray(eidOrEids) ? eidOrEids : [eidOrEids];\n for (const linkEid of eids) {\n const linkEidLookupPair = lookupPairOfEid(linkEid);\n if (linkEidLookupPair) {\n res.push({\n etype: etype,\n lookupPair: linkEidLookupPair,\n linkLabel: label,\n });\n }\n }\n }\n }\n return res;\n}\n\nfunction createMissingAttrs({ attrs: existingAttrs, schema }, ops) {\n const [addedIds, attrs, addOps] = [new Set(), { ...existingAttrs }, []];\n function addAttr(attr) {\n attrs[attr.id] = attr;\n addOps.push(['add-attr', attr]);\n addedIds.add(attr.id);\n }\n function addUnsynced(attr) {\n if (attr?.isUnsynced && !addedIds.has(attr.id)) {\n addOps.push(['add-attr', attr]);\n addedIds.add(attr.id);\n }\n }\n\n // Adds attrs needed for a ref lookup\n function addForRef(etype, label) {\n const fwdAttr = getAttrByFwdIdentName(attrs, etype, label);\n const revAttr = getAttrByReverseIdentName(attrs, etype, label);\n addUnsynced(fwdAttr);\n addUnsynced(revAttr);\n if (!fwdAttr && !revAttr) {\n addAttr(createRefAttr(schema, etype, label, refLookupProps));\n }\n }\n\n // Create attrs for lookups if we need to\n // Do these first because otherwise we might add a non-unique attr\n // before we get to it\n for (const op of ops) {\n for (const { etype, lookupPair, linkLabel } of lookupPairsOfOp(op)) {\n const identName = lookupPair[0];\n // We got a link eid that's a lookup, linkLabel is the label of the ident,\n // e.g. `posts` in `link({posts: postIds})`\n if (linkLabel) {\n // Add our ref attr, e.g. users.posts\n addForRef(etype, linkLabel);\n\n // Figure out the link etype so we can make sure we have the attrs\n // for the link lookup\n const fwdAttr = getAttrByFwdIdentName(attrs, etype, linkLabel);\n const revAttr = getAttrByReverseIdentName(attrs, etype, linkLabel);\n addUnsynced(fwdAttr);\n addUnsynced(revAttr);\n const linkEtype =\n fwdAttr?.['reverse-identity']?.[1] ||\n revAttr?.['forward-identity']?.[1] ||\n linkLabel;\n if (isRefLookupIdent(attrs, linkEtype, identName)) {\n addForRef(linkEtype, extractRefLookupFwdName(identName));\n } else {\n const attr = getAttrByFwdIdentName(attrs, linkEtype, identName);\n if (!attr) {\n addAttr(\n createObjectAttr(schema, linkEtype, identName, lookupProps),\n );\n }\n addUnsynced(attr);\n }\n } else if (isRefLookupIdent(attrs, etype, identName)) {\n addForRef(etype, extractRefLookupFwdName(identName));\n } else {\n const attr = getAttrByFwdIdentName(attrs, etype, identName);\n if (!attr) {\n addAttr(createObjectAttr(schema, etype, identName, lookupProps));\n }\n addUnsynced(attr);\n }\n }\n }\n\n // Create object and ref attrs\n for (const op of ops) {\n const [action, etype, eid, obj] = op;\n if (OBJ_ACTIONS.has(action)) {\n const idAttr = getAttrByFwdIdentName(attrs, etype, 'id');\n addUnsynced(idAttr);\n if (!idAttr) {\n addAttr(createObjectAttr(schema, etype, 'id', { 'unique?': true }));\n }\n\n for (const label of Object.keys(obj)) {\n const fwdAttr = getAttrByFwdIdentName(attrs, etype, label);\n addUnsynced(fwdAttr);\n if (UPDATE_ACTIONS.has(action)) {\n if (!fwdAttr) {\n addAttr(\n createObjectAttr(\n schema,\n etype,\n label,\n label === 'id' ? { 'unique?': true } : null,\n ),\n );\n }\n }\n if (REF_ACTIONS.has(action)) {\n const revAttr = getAttrByReverseIdentName(attrs, etype, label);\n if (!fwdAttr && !revAttr) {\n addAttr(createRefAttr(schema, etype, label));\n }\n addUnsynced(revAttr);\n }\n }\n }\n }\n return [attrs, addOps];\n}\n\nexport function transform(ctx, inputChunks) {\n const chunks = Array.isArray(inputChunks) ? inputChunks : [inputChunks];\n const ops = chunks.flatMap((tx) => getOps(tx));\n const [newAttrs, addAttrTxSteps] = createMissingAttrs(ctx, ops);\n const newCtx = { ...ctx, attrs: newAttrs };\n const txSteps = ops.flatMap((op) => toTxSteps(newCtx, op));\n return [...addAttrTxSteps, ...txSteps];\n}\n"]}
1
+ {"version":3,"file":"instaml.js","sourceRoot":"","sources":["../../src/instaml.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n allMapValues,\n AttrsStore,\n AttrsStoreClass,\n getAttrByFwdIdentName,\n getAttrByReverseIdentName,\n Store,\n} from './store.ts';\nimport { getOps, isLookup, parseLookup } from './instatx.ts';\nimport { immutableRemoveUndefined } from './utils/object.js';\nimport { coerceToDate } from './utils/dates.ts';\nimport uuid from './utils/uuid.ts';\nimport {\n EntitiesWithLinks,\n IContainEntitiesAndLinks,\n LinkDef,\n} from './schemaTypes.ts';\nimport { InstantDBAttr, InstantDBIdent } from './attrTypes.ts';\n\nexport type AttrMapping = {\n attrIdMap: Record<string, string>;\n refSwapAttrIds: Set<string>;\n};\n\ntype TXStep = any[];\n\n// Rewrites optimistic attrs with the attrs we get back from the server.\nexport function rewriteStep(attrMapping: AttrMapping, txStep: TXStep): TXStep {\n const { attrIdMap, refSwapAttrIds } = attrMapping;\n const rewritten: TXStep = [];\n for (const part of txStep) {\n const newValue = attrIdMap[part];\n\n if (newValue) {\n // Rewrites attr id\n rewritten.push(newValue);\n } else if (Array.isArray(part) && part.length == 2 && attrIdMap[part[0]]) {\n // Rewrites attr id in lookups\n const [aid, value] = part;\n rewritten.push([attrIdMap[aid], value]);\n } else {\n rewritten.push(part);\n }\n }\n const [action] = txStep;\n if (\n (action === 'add-triple' || action === 'retract-triple') &&\n refSwapAttrIds.has(txStep[2])\n ) {\n // Reverse links if the optimistic link attr is backwards\n const tmp = rewritten[1];\n rewritten[1] = rewritten[3];\n rewritten[3] = tmp;\n }\n return rewritten;\n}\n\nfunction explodeLookupRef(eid) {\n if (Array.isArray(eid)) {\n return eid;\n }\n const entries = Object.entries(eid);\n if (entries.length !== 1) {\n throw new Error(\n 'lookup must be an object with a single unique attr and value.',\n );\n }\n return entries[0];\n}\n\nfunction isRefLookupIdent(attrs: AttrsStore, etype: string, identName: string) {\n return (\n identName.indexOf('.') !== -1 &&\n // attr names can have `.` in them, so use the attr we find with a `.`\n // before assuming it's a ref lookup.\n !getAttrByFwdIdentName(attrs, etype, identName)\n );\n}\n\nfunction extractRefLookupFwdName(identName) {\n const [fwdName, idIdent, ...rest] = identName.split('.');\n if (rest.length > 0 || idIdent !== 'id') {\n throw new Error(`${identName} is not a valid lookup attribute.`);\n }\n\n return fwdName;\n}\n\nfunction lookupIdentToAttr(\n attrs: AttrsStore,\n etype: string,\n identName: string,\n) {\n if (!isRefLookupIdent(attrs, etype, identName)) {\n return getAttrByFwdIdentName(attrs, etype, identName);\n }\n\n const fwdName = extractRefLookupFwdName(identName);\n\n const refAttr =\n getAttrByFwdIdentName(attrs, etype, fwdName) ||\n getAttrByReverseIdentName(attrs, etype, fwdName);\n if (refAttr && refAttr['value-type'] !== 'ref') {\n throw new Error(`${identName} does not reference a valid link attribute.`);\n }\n return refAttr;\n}\n\n// Returns [attr, value] for the eid if the eid is a lookup.\n// If it's a regular eid, returns null\nfunction lookupPairOfEid(eid) {\n if (typeof eid === 'string' && !isLookup(eid)) {\n return null;\n }\n return typeof eid === 'string' && isLookup(eid)\n ? parseLookup(eid)\n : explodeLookupRef(eid);\n}\n\nfunction extractLookup(attrs: AttrsStore, etype: string, eid: string) {\n const lookupPair = lookupPairOfEid(eid);\n\n if (lookupPair === null) {\n return eid;\n }\n\n const [identName, value] = lookupPair;\n const attr = lookupIdentToAttr(attrs, etype, identName);\n if (!attr || !attr['unique?']) {\n throw new Error(`${identName} is not a unique attribute.`);\n }\n return [attr.id, value];\n}\n\nfunction withIdAttrForLookup(\n attrs: AttrsStore,\n etype: string,\n eidA: string,\n txSteps: TXStep[],\n) {\n const lookup = extractLookup(attrs, etype, eidA);\n if (!Array.isArray(lookup)) {\n return txSteps;\n }\n const idTuple = [\n 'add-triple',\n lookup,\n getAttrByFwdIdentName(attrs, etype, 'id')?.id,\n lookup,\n ];\n return [idTuple].concat(txSteps);\n}\n\nfunction expandLink({ attrsStore }: Ctx, [etype, eidA, obj]) {\n const addTriples = Object.entries(obj).flatMap(([label, eidOrEids]) => {\n const eids = Array.isArray(eidOrEids) ? eidOrEids : [eidOrEids];\n const fwdAttr = getAttrByFwdIdentName(attrsStore, etype, label);\n const revAttr = getAttrByReverseIdentName(attrsStore, etype, label);\n return eids.map((eidB) => {\n const txStep = fwdAttr\n ? [\n 'add-triple',\n extractLookup(attrsStore, etype, eidA),\n fwdAttr.id,\n // Uses `!` because if we get here, we should have created the attr if it doesn't\n // already exist\n extractLookup(attrsStore, fwdAttr['reverse-identity']![1], eidB),\n ]\n : [\n 'add-triple',\n // Uses `!` because if we get here, we should have created the attr if it doesn't\n // already exist\n extractLookup(attrsStore, revAttr!['forward-identity']![1], eidB),\n revAttr?.id,\n extractLookup(attrsStore, etype, eidA),\n ];\n return txStep;\n });\n });\n return withIdAttrForLookup(attrsStore, etype, eidA, addTriples);\n}\n\nfunction expandUnlink({ attrsStore }: Ctx, [etype, eidA, obj]) {\n const retractTriples = Object.entries(obj).flatMap(([label, eidOrEids]) => {\n const eids = Array.isArray(eidOrEids) ? eidOrEids : [eidOrEids];\n const fwdAttr = getAttrByFwdIdentName(attrsStore, etype, label);\n const revAttr = getAttrByReverseIdentName(attrsStore, etype, label);\n return eids.map((eidB) => {\n const txStep = fwdAttr\n ? [\n 'retract-triple',\n extractLookup(attrsStore, etype, eidA),\n fwdAttr.id,\n // Uses `!` because if we get here, we should have created the attr if it doesn't\n // already exist\n extractLookup(attrsStore, fwdAttr!['reverse-identity']![1], eidB),\n ]\n : [\n 'retract-triple',\n // Uses `!` because if we get here, we should have created the attr if it doesn't\n // already exist\n extractLookup(attrsStore, revAttr!['forward-identity'][1], eidB),\n revAttr!.id,\n extractLookup(attrsStore, etype, eidA),\n ];\n return txStep;\n });\n });\n return withIdAttrForLookup(attrsStore, etype, eidA, retractTriples);\n}\n\nfunction checkEntityExists(\n stores: (Store | undefined)[] | undefined,\n attrsStore: AttrsStore,\n etype: string,\n eid: string,\n) {\n if (Array.isArray(eid)) {\n // lookup ref\n const [entity_a, entity_v] = eid;\n for (const store of stores || []) {\n const ev = store?.aev.get(entity_a);\n if (ev) {\n // This would be a lot more efficient with a ave index\n for (const [_e, _a, v] of allMapValues(ev, 2)) {\n if (v === entity_v) {\n return true;\n }\n }\n }\n }\n } else {\n // eid\n for (const store of stores || []) {\n const av = store?.eav.get(eid);\n if (av) {\n for (const attr_id of av.keys()) {\n if (attrsStore.getAttr(attr_id)?.['forward-identity'][1] == etype) {\n return true;\n }\n }\n }\n }\n }\n return false;\n}\n\ntype Ctx = {\n stores?: (Store | undefined)[];\n attrsStore: AttrsStore;\n schema?: Schema;\n useDateObjects?: boolean | null;\n};\n\nfunction convertOpts({ stores, attrsStore }: Ctx, [etype, eid, obj_, opts]) {\n return opts?.upsert === false\n ? { mode: 'update' }\n : opts?.upsert === true\n ? null\n : checkEntityExists(stores, attrsStore, etype, eid)\n ? { mode: 'update' }\n : null; // auto mode chooses between update and upsert, not update and create, just in case\n}\n\nfunction expandCreate(ctx: Ctx, step) {\n const { attrsStore } = ctx;\n const [etype, eid, obj_, opts] = step;\n const obj = immutableRemoveUndefined(obj_);\n const lookup = extractLookup(attrsStore, etype, eid);\n // id first so that we don't clobber updates on the lookup field\n const attrTuples = [['id', lookup]]\n .concat(Object.entries(obj))\n .map(([identName, value]: [string, any]) => {\n // Uses `!` because we should have optimistically created the attr if it doesn't exist\n const attr = getAttrByFwdIdentName(attrsStore, etype, identName)!;\n\n if (attr['checked-data-type'] === 'date' && ctx.useDateObjects) {\n value = coerceToDate(value);\n }\n\n return ['add-triple', lookup, attr.id, value, { mode: 'create' }];\n });\n return attrTuples;\n}\n\nfunction expandUpdate(ctx: Ctx, step) {\n const { attrsStore } = ctx;\n const [etype, eid, obj_, opts] = step;\n const obj = immutableRemoveUndefined(obj_);\n const lookup = extractLookup(attrsStore, etype, eid);\n const serverOpts = convertOpts(ctx, [etype, lookup, obj_, opts]);\n // id first so that we don't clobber updates on the lookup field\n const attrTuples = [['id', lookup]]\n .concat(Object.entries(obj))\n .map(([identName, value]: [string, any]) => {\n const attr = getAttrByFwdIdentName(attrsStore, etype, identName)!;\n\n if (attr['checked-data-type'] === 'date' && ctx.useDateObjects) {\n value = coerceToDate(value);\n }\n\n return [\n 'add-triple',\n lookup,\n attr.id,\n value,\n ...(serverOpts ? [serverOpts] : []),\n ];\n });\n return attrTuples;\n}\n\nfunction expandDelete({ attrsStore }: Ctx, [etype, eid]) {\n const lookup = extractLookup(attrsStore, etype, eid);\n return [['delete-entity', lookup, etype]];\n}\n\nfunction expandDeepMerge(ctx: Ctx, step) {\n const { attrsStore } = ctx;\n const [etype, eid, obj_, opts] = step;\n const obj = immutableRemoveUndefined(obj_);\n const lookup = extractLookup(attrsStore, etype, eid);\n const serverOpts = convertOpts(ctx, [etype, lookup, obj_, opts]);\n const attrTuples = Object.entries(obj).map(([identName, value]) => {\n const attr = getAttrByFwdIdentName(attrsStore, etype, identName)!;\n return [\n 'deep-merge-triple',\n lookup,\n attr.id,\n value,\n ...(serverOpts ? [serverOpts] : []),\n ];\n });\n\n const idTuple = [\n 'add-triple',\n lookup,\n getAttrByFwdIdentName(attrsStore, etype, 'id')!.id,\n lookup,\n ...(serverOpts ? [serverOpts] : []),\n ];\n\n // id first so that we don't clobber updates on the lookup field\n return [idTuple].concat(attrTuples);\n}\n\nfunction expandRuleParams({ attrsStore }: Ctx, [etype, eid, ruleParams]) {\n const lookup = extractLookup(attrsStore, etype, eid);\n return [['rule-params', lookup, etype, ruleParams]];\n}\n\nfunction removeIdFromArgs(step) {\n const [op, etype, eid, obj, opts] = step;\n if (!obj) {\n return step;\n }\n const newObj = { ...obj };\n delete newObj.id;\n return [op, etype, eid, newObj, ...(opts ? [opts] : [])];\n}\n\nfunction toTxSteps(ctx: Ctx, step) {\n const [action, ...args] = removeIdFromArgs(step);\n switch (action) {\n case 'merge':\n return expandDeepMerge(ctx, args);\n case 'create':\n return expandCreate(ctx, args);\n case 'update':\n return expandUpdate(ctx, args);\n case 'link':\n return expandLink(ctx, args);\n case 'unlink':\n return expandUnlink(ctx, args);\n case 'delete':\n return expandDelete(ctx, args);\n case 'ruleParams':\n return expandRuleParams(ctx, args);\n default:\n throw new Error(`unsupported action ${action}`);\n }\n}\n\n// ---------\n// transform\n\nfunction checkedDataTypeOfValueType(valueType) {\n switch (valueType) {\n case 'string':\n case 'date':\n case 'boolean':\n case 'number':\n return valueType;\n default:\n return undefined;\n }\n}\n\nfunction objectPropsFromSchema(schema, etype, label) {\n const attr = schema.entities[etype]?.attrs?.[label];\n if (label === 'id') return null;\n if (!attr) {\n throw new Error(`${etype}.${label} does not exist in your schema`);\n }\n const { unique, indexed } = attr?.config;\n const checkedDataType = checkedDataTypeOfValueType(attr?.valueType);\n\n return {\n 'index?': indexed,\n 'unique?': unique,\n 'checked-data-type': checkedDataType,\n };\n}\n\nfunction createObjectAttr(schema, etype, label, props) {\n const schemaObjectProps = schema\n ? objectPropsFromSchema(schema, etype, label)\n : null;\n const attrId = uuid();\n const fwdIdentId = uuid();\n const fwdIdent = [fwdIdentId, etype, label];\n return {\n id: attrId,\n 'forward-identity': fwdIdent,\n 'value-type': 'blob',\n cardinality: 'one',\n 'unique?': false,\n 'index?': false,\n isUnsynced: true,\n ...(schemaObjectProps || {}),\n ...(props || {}),\n };\n}\n\ntype Link = LinkDef<any, any, any, any, any, any, any>;\ntype Schema = IContainEntitiesAndLinks<any, any>;\n\nfunction findSchemaLink(schema: Schema, etype, label): Link | undefined {\n const links: Link[] = Object.values(schema.links);\n const found = links.find((x: Link) => {\n return (\n (x.forward.on === etype && x.forward.label === label) ||\n (x.reverse.on === etype && x.reverse.label === label)\n );\n });\n return found;\n}\n\nfunction refPropsFromSchema(schema: Schema, etype, label) {\n const found = findSchemaLink(schema, etype, label);\n if (!found) {\n throw new Error(`Couldn't find the link ${etype}.${label} in your schema`);\n }\n const { forward, reverse } = found;\n return {\n 'forward-identity': [uuid(), forward.on, forward.label],\n 'reverse-identity': [uuid(), reverse.on, reverse.label],\n cardinality: forward.has === 'one' ? 'one' : 'many',\n 'unique?': reverse.has === 'one',\n 'on-delete': forward.onDelete,\n 'on-delete-reverse': reverse.onDelete,\n };\n}\n\nfunction createRefAttr(\n schema: Schema | undefined,\n etype: string,\n label: string,\n props?: Partial<InstantDBAttr> | undefined,\n): InstantDBAttr {\n const schemaRefProps = schema\n ? refPropsFromSchema(schema, etype, label)\n : null;\n const attrId = uuid();\n const fwdIdent: InstantDBIdent = [uuid(), etype, label];\n const revIdent: InstantDBIdent = [uuid(), label, etype];\n return {\n id: attrId,\n // @ts-ignore: ts thinks it's any[]\n 'forward-identity': fwdIdent,\n // @ts-ignore: ts thinks it's any[]\n 'reverse-identity': revIdent,\n 'value-type': 'ref',\n // @ts-ignore: ts thinks it's type string\n cardinality: 'many',\n 'unique?': false,\n 'index?': false,\n isUnsynced: true,\n ...(schemaRefProps || {}),\n ...(props || {}),\n };\n}\n\n// Actions that have an object, e.g. not delete\nconst OBJ_ACTIONS = new Set(['create', 'update', 'merge', 'link', 'unlink']);\nconst REF_ACTIONS = new Set(['link', 'unlink']);\nconst UPDATE_ACTIONS = new Set(['create', 'update', 'merge']);\nconst SUPPORTS_LOOKUP_ACTIONS = new Set([\n 'link',\n 'unlink',\n 'create',\n 'update',\n 'merge',\n 'delete',\n 'ruleParams',\n]);\n\nconst lookupProps: Partial<InstantDBAttr> = { 'unique?': true, 'index?': true };\nconst refLookupProps: Partial<InstantDBAttr> = {\n ...lookupProps,\n cardinality: 'one',\n};\n\nfunction lookupPairsOfOp(op) {\n const res: { etype: string; lookupPair: any; linkLabel?: string }[] = [];\n const [action, etype, eid, obj] = op;\n if (!SUPPORTS_LOOKUP_ACTIONS.has(action)) {\n return res;\n }\n\n const eidLookupPair = lookupPairOfEid(eid);\n if (eidLookupPair) {\n res.push({ etype: etype, lookupPair: eidLookupPair });\n }\n if (action === 'link') {\n for (const [label, eidOrEids] of Object.entries(obj)) {\n const eids = Array.isArray(eidOrEids) ? eidOrEids : [eidOrEids];\n for (const linkEid of eids) {\n const linkEidLookupPair = lookupPairOfEid(linkEid);\n if (linkEidLookupPair) {\n res.push({\n etype: etype,\n lookupPair: linkEidLookupPair,\n linkLabel: label,\n });\n }\n }\n }\n }\n return res;\n}\n\nfunction createMissingAttrs(\n { attrsStore, schema }: Ctx,\n ops,\n): [AttrsStore, TXStep[]] {\n const addedIds = new Set();\n const localAttrs: InstantDBAttr[] = [];\n const addOps: TXStep[] = [];\n\n function attrByFwdIdent(etype, label): InstantDBAttr | undefined {\n return (\n getAttrByFwdIdentName(attrsStore, etype, label) ||\n localAttrs.find(\n (x) =>\n x['forward-identity'][1] === etype &&\n x['forward-identity'][2] === label,\n )\n );\n }\n\n function attrByRevIdent(etype, label): InstantDBAttr | undefined {\n return (\n getAttrByReverseIdentName(attrsStore, etype, label) ||\n localAttrs.find(\n (x) =>\n x['reverse-identity']?.[1] === etype &&\n x['reverse-identity']?.[2] === label,\n )\n );\n }\n\n function addAttr(attr: InstantDBAttr) {\n localAttrs.push(attr);\n addOps.push(['add-attr', attr]);\n addedIds.add(attr.id);\n }\n function addUnsynced(\n attr:\n | (InstantDBAttr & { isUnsynced?: boolean })\n | InstantDBAttr\n | undefined,\n ) {\n if (\n attr &&\n 'isUnsynced' in attr &&\n attr.isUnsynced &&\n !addedIds.has(attr.id)\n ) {\n localAttrs.push(attr);\n addOps.push(['add-attr', attr]);\n addedIds.add(attr.id);\n }\n }\n\n function isRefLookupIdentLocal(etype: string, identName: string) {\n return (\n identName.indexOf('.') !== -1 &&\n // attr names can have `.` in them, so use the attr we find with a `.`\n // before assuming it's a ref lookup.\n !attrByFwdIdent(etype, identName)\n );\n }\n\n // Adds attrs needed for a ref lookup\n function addForRef(etype, label) {\n const fwdAttr = attrByFwdIdent(etype, label);\n const revAttr = attrByRevIdent(etype, label);\n addUnsynced(fwdAttr);\n addUnsynced(revAttr);\n if (!fwdAttr && !revAttr) {\n addAttr(createRefAttr(schema, etype, label, refLookupProps));\n }\n }\n\n // Create attrs for lookups if we need to\n // Do these first because otherwise we might add a non-unique attr\n // before we get to it\n for (const op of ops) {\n for (const { etype, lookupPair, linkLabel } of lookupPairsOfOp(op)) {\n const identName = lookupPair[0];\n // We got a link eid that's a lookup, linkLabel is the label of the ident,\n // e.g. `posts` in `link({posts: postIds})`\n if (linkLabel) {\n // Add our ref attr, e.g. users.posts\n addForRef(etype, linkLabel);\n\n // Figure out the link etype so we can make sure we have the attrs\n // for the link lookup\n const fwdAttr = attrByFwdIdent(etype, linkLabel);\n const revAttr = attrByRevIdent(etype, linkLabel);\n addUnsynced(fwdAttr);\n addUnsynced(revAttr);\n const linkEtype =\n fwdAttr?.['reverse-identity']?.[1] ||\n revAttr?.['forward-identity']?.[1] ||\n linkLabel;\n if (isRefLookupIdentLocal(linkEtype, identName)) {\n addForRef(linkEtype, extractRefLookupFwdName(identName));\n } else {\n const attr = attrByFwdIdent(linkEtype, identName);\n if (!attr) {\n addAttr(\n createObjectAttr(schema, linkEtype, identName, lookupProps),\n );\n }\n addUnsynced(attr);\n }\n } else if (isRefLookupIdentLocal(etype, identName)) {\n addForRef(etype, extractRefLookupFwdName(identName));\n } else {\n const attr = attrByFwdIdent(etype, identName);\n if (!attr) {\n addAttr(createObjectAttr(schema, etype, identName, lookupProps));\n }\n addUnsynced(attr);\n }\n }\n }\n\n // Create object and ref attrs\n for (const op of ops) {\n const [action, etype, eid, obj] = op;\n if (OBJ_ACTIONS.has(action)) {\n const idAttr = attrByFwdIdent(etype, 'id');\n addUnsynced(idAttr);\n if (!idAttr) {\n addAttr(createObjectAttr(schema, etype, 'id', { 'unique?': true }));\n }\n\n for (const label of Object.keys(obj)) {\n const fwdAttr = attrByFwdIdent(etype, label);\n addUnsynced(fwdAttr);\n if (UPDATE_ACTIONS.has(action)) {\n if (!fwdAttr) {\n addAttr(\n createObjectAttr(\n schema,\n etype,\n label,\n label === 'id' ? { 'unique?': true } : null,\n ),\n );\n }\n }\n if (REF_ACTIONS.has(action)) {\n const revAttr = attrByRevIdent(etype, label);\n if (!fwdAttr && !revAttr) {\n addAttr(createRefAttr(schema, etype, label));\n }\n addUnsynced(revAttr);\n }\n }\n }\n }\n\n if (localAttrs.length) {\n const nextAttrs = { ...attrsStore.attrs };\n for (const attr of localAttrs) {\n nextAttrs[attr.id] = attr;\n }\n return [new AttrsStoreClass(nextAttrs, attrsStore.linkIndex), addOps];\n }\n return [attrsStore, addOps];\n}\n\nexport function transform(ctx: Ctx, inputChunks) {\n const chunks = Array.isArray(inputChunks) ? inputChunks : [inputChunks];\n const ops = chunks.flatMap((tx) => getOps(tx));\n const [newAttrs, addAttrTxSteps] = createMissingAttrs(ctx, ops);\n const newCtx = { ...ctx, attrsStore: newAttrs };\n const txSteps = ops.flatMap((op) => toTxSteps(newCtx, op));\n return [...addAttrTxSteps, ...txSteps];\n}\n"]}
@@ -1,9 +1,10 @@
1
1
  import * as s from './store.ts';
2
2
  export declare function compareOrder(id_a: string, v_a: any, id_b: string, v_b: any, dataType: any): number;
3
- export default function query({ store, pageInfo, aggregate, }: {
3
+ export default function query({ store, attrsStore, pageInfo, aggregate, }: {
4
4
  store: s.Store;
5
- pageInfo: any;
6
- aggregate: any;
5
+ attrsStore: s.AttrsStore;
6
+ pageInfo?: any;
7
+ aggregate?: any;
7
8
  }, q: any): {
8
9
  data: any;
9
10
  pageInfo?: any;
@@ -1 +1 @@
1
- {"version":3,"file":"instaql.d.ts","sourceRoot":"","sources":["../../src/instaql.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,CAAC,MAAM,YAAY,CAAC;AAikBhC,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,KAAA,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,KAAA,EAAE,QAAQ,KAAA,UAa1E;AAoRD,MAAM,CAAC,OAAO,UAAU,KAAK,CAC3B,EACE,KAAK,EACL,QAAQ,EACR,SAAS,GACV,EAAE;IACD,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC;IACf,QAAQ,EAAE,GAAG,CAAC;IACd,SAAS,EAAE,GAAG,CAAC;CAChB,EACD,CAAC,KAAA;UAiBqB,GAAG;eAAa,GAAG;gBAAc,GAAG;EAU3D"}
1
+ {"version":3,"file":"instaql.d.ts","sourceRoot":"","sources":["../../src/instaql.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,CAAC,MAAM,YAAY,CAAC;AAolBhC,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,KAAA,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,KAAA,EAAE,QAAQ,KAAA,UAa1E;AAyRD,MAAM,CAAC,OAAO,UAAU,KAAK,CAC3B,EACE,KAAK,EACL,UAAU,EACV,QAAQ,EACR,SAAS,GACV,EAAE;IACD,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC;IACf,UAAU,EAAE,CAAC,CAAC,UAAU,CAAC;IACzB,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,SAAS,CAAC,EAAE,GAAG,CAAC;CACjB,EACD,CAAC,KAAA;UAiBqB,GAAG;eAAa,GAAG;gBAAc,GAAG;EAU3D"}