@instantdb/core 0.22.86-experimental.split-store.20178922132.1 → 0.22.87-experimental.drewh-explorer-component.20180358679.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 (57) hide show
  1. package/dist/commonjs/Reactor.d.ts +6 -20
  2. package/dist/commonjs/Reactor.d.ts.map +1 -1
  3. package/dist/commonjs/Reactor.js +42 -97
  4. package/dist/commonjs/Reactor.js.map +1 -1
  5. package/dist/commonjs/SyncTable.d.ts +1 -4
  6. package/dist/commonjs/SyncTable.d.ts.map +1 -1
  7. package/dist/commonjs/SyncTable.js +37 -35
  8. package/dist/commonjs/SyncTable.js.map +1 -1
  9. package/dist/commonjs/instaml.d.ts +4 -17
  10. package/dist/commonjs/instaml.d.ts.map +1 -1
  11. package/dist/commonjs/instaml.js +76 -105
  12. package/dist/commonjs/instaml.js.map +1 -1
  13. package/dist/commonjs/instaql.d.ts +1 -2
  14. package/dist/commonjs/instaql.d.ts.map +1 -1
  15. package/dist/commonjs/instaql.js +63 -65
  16. package/dist/commonjs/instaql.js.map +1 -1
  17. package/dist/commonjs/store.d.ts +21 -44
  18. package/dist/commonjs/store.d.ts.map +1 -1
  19. package/dist/commonjs/store.js +69 -164
  20. package/dist/commonjs/store.js.map +1 -1
  21. package/dist/esm/Reactor.d.ts +6 -20
  22. package/dist/esm/Reactor.d.ts.map +1 -1
  23. package/dist/esm/Reactor.js +43 -98
  24. package/dist/esm/Reactor.js.map +1 -1
  25. package/dist/esm/SyncTable.d.ts +1 -4
  26. package/dist/esm/SyncTable.d.ts.map +1 -1
  27. package/dist/esm/SyncTable.js +37 -35
  28. package/dist/esm/SyncTable.js.map +1 -1
  29. package/dist/esm/instaml.d.ts +4 -17
  30. package/dist/esm/instaml.d.ts.map +1 -1
  31. package/dist/esm/instaml.js +71 -102
  32. package/dist/esm/instaml.js.map +1 -1
  33. package/dist/esm/instaql.d.ts +1 -2
  34. package/dist/esm/instaql.d.ts.map +1 -1
  35. package/dist/esm/instaql.js +63 -65
  36. package/dist/esm/instaql.js.map +1 -1
  37. package/dist/esm/store.d.ts +21 -44
  38. package/dist/esm/store.d.ts.map +1 -1
  39. package/dist/esm/store.js +69 -161
  40. package/dist/esm/store.js.map +1 -1
  41. package/dist/standalone/index.js +1364 -1536
  42. package/dist/standalone/index.umd.cjs +3 -3
  43. package/package.json +2 -2
  44. package/src/Reactor.js +58 -126
  45. package/src/SyncTable.ts +45 -85
  46. package/src/{instaml.ts → instaml.js} +95 -195
  47. package/src/instaql.ts +60 -86
  48. package/src/store.ts +79 -209
  49. package/dist/commonjs/reactorTypes.d.ts +0 -29
  50. package/dist/commonjs/reactorTypes.d.ts.map +0 -1
  51. package/dist/commonjs/reactorTypes.js +0 -3
  52. package/dist/commonjs/reactorTypes.js.map +0 -1
  53. package/dist/esm/reactorTypes.d.ts +0 -29
  54. package/dist/esm/reactorTypes.d.ts.map +0 -1
  55. package/dist/esm/reactorTypes.js +0 -2
  56. package/dist/esm/reactorTypes.js.map +0 -1
  57. package/src/reactorTypes.ts +0 -32
@@ -1,4 +1,4 @@
1
- import { allMapValues, AttrsStore, getAttrByFwdIdentName, getAttrByReverseIdentName, } from "./store.js";
1
+ import { allMapValues } 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,6 +32,21 @@ 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
+ }
35
50
  function explodeLookupRef(eid) {
36
51
  if (Array.isArray(eid)) {
37
52
  return eid;
@@ -90,7 +105,6 @@ function extractLookup(attrs, etype, eid) {
90
105
  return [attr.id, value];
91
106
  }
92
107
  function withIdAttrForLookup(attrs, etype, eidA, txSteps) {
93
- var _a;
94
108
  const lookup = extractLookup(attrs, etype, eidA);
95
109
  if (!Array.isArray(lookup)) {
96
110
  return txSteps;
@@ -98,65 +112,60 @@ function withIdAttrForLookup(attrs, etype, eidA, txSteps) {
98
112
  const idTuple = [
99
113
  'add-triple',
100
114
  lookup,
101
- (_a = getAttrByFwdIdentName(attrs, etype, 'id')) === null || _a === void 0 ? void 0 : _a.id,
115
+ getAttrByFwdIdentName(attrs, etype, 'id').id,
102
116
  lookup,
103
117
  ];
104
118
  return [idTuple].concat(txSteps);
105
119
  }
106
- function expandLink({ attrsStore }, [etype, eidA, obj]) {
120
+ function expandLink({ attrs }, [etype, eidA, obj]) {
107
121
  const addTriples = Object.entries(obj).flatMap(([label, eidOrEids]) => {
108
122
  const eids = Array.isArray(eidOrEids) ? eidOrEids : [eidOrEids];
109
- const fwdAttr = getAttrByFwdIdentName(attrsStore, etype, label);
110
- const revAttr = getAttrByReverseIdentName(attrsStore, etype, label);
123
+ const fwdAttr = getAttrByFwdIdentName(attrs, etype, label);
124
+ const revAttr = getAttrByReverseIdentName(attrs, etype, label);
111
125
  return eids.map((eidB) => {
112
126
  const txStep = fwdAttr
113
127
  ? [
114
128
  'add-triple',
115
- extractLookup(attrsStore, etype, eidA),
129
+ extractLookup(attrs, etype, eidA),
116
130
  fwdAttr.id,
117
- // XXX: Better error here
118
- extractLookup(attrsStore, fwdAttr['reverse-identity'][1], eidB),
131
+ extractLookup(attrs, fwdAttr['reverse-identity'][1], eidB),
119
132
  ]
120
133
  : [
121
134
  'add-triple',
122
- // XXX: Better error here
123
- extractLookup(attrsStore, revAttr['forward-identity'][1], eidB),
124
- revAttr === null || revAttr === void 0 ? void 0 : revAttr.id,
125
- extractLookup(attrsStore, etype, eidA),
135
+ extractLookup(attrs, revAttr['forward-identity'][1], eidB),
136
+ revAttr.id,
137
+ extractLookup(attrs, etype, eidA),
126
138
  ];
127
139
  return txStep;
128
140
  });
129
141
  });
130
- return withIdAttrForLookup(attrsStore, etype, eidA, addTriples);
142
+ return withIdAttrForLookup(attrs, etype, eidA, addTriples);
131
143
  }
132
- function expandUnlink({ attrsStore }, [etype, eidA, obj]) {
144
+ function expandUnlink({ attrs }, [etype, eidA, obj]) {
133
145
  const retractTriples = Object.entries(obj).flatMap(([label, eidOrEids]) => {
134
146
  const eids = Array.isArray(eidOrEids) ? eidOrEids : [eidOrEids];
135
- const fwdAttr = getAttrByFwdIdentName(attrsStore, etype, label);
136
- const revAttr = getAttrByReverseIdentName(attrsStore, etype, label);
147
+ const fwdAttr = getAttrByFwdIdentName(attrs, etype, label);
148
+ const revAttr = getAttrByReverseIdentName(attrs, etype, label);
137
149
  return eids.map((eidB) => {
138
150
  const txStep = fwdAttr
139
151
  ? [
140
152
  'retract-triple',
141
- extractLookup(attrsStore, etype, eidA),
153
+ extractLookup(attrs, etype, eidA),
142
154
  fwdAttr.id,
143
- // XXX: Better error here
144
- extractLookup(attrsStore, fwdAttr['reverse-identity'][1], eidB),
155
+ extractLookup(attrs, fwdAttr['reverse-identity'][1], eidB),
145
156
  ]
146
157
  : [
147
158
  'retract-triple',
148
- // XXX: Better error here
149
- extractLookup(attrsStore, revAttr['forward-identity'][1], eidB),
159
+ extractLookup(attrs, revAttr['forward-identity'][1], eidB),
150
160
  revAttr.id,
151
- extractLookup(attrsStore, etype, eidA),
161
+ extractLookup(attrs, etype, eidA),
152
162
  ];
153
163
  return txStep;
154
164
  });
155
165
  });
156
- return withIdAttrForLookup(attrsStore, etype, eidA, retractTriples);
166
+ return withIdAttrForLookup(attrs, etype, eidA, retractTriples);
157
167
  }
158
- function checkEntityExists(stores, attrsStore, etype, eid) {
159
- var _a;
168
+ function checkEntityExists(stores, etype, eid) {
160
169
  if (Array.isArray(eid)) {
161
170
  // lookup ref
162
171
  const [entity_a, entity_v] = eid;
@@ -178,7 +187,7 @@ function checkEntityExists(stores, attrsStore, etype, eid) {
178
187
  const av = store === null || store === void 0 ? void 0 : store.eav.get(eid);
179
188
  if (av) {
180
189
  for (const attr_id of av.keys()) {
181
- if (((_a = attrsStore.getAttr(attr_id)) === null || _a === void 0 ? void 0 : _a['forward-identity'][1]) == etype) {
190
+ if (store.attrs[attr_id]['forward-identity'][1] == etype) {
182
191
  return true;
183
192
  }
184
193
  }
@@ -187,26 +196,25 @@ function checkEntityExists(stores, attrsStore, etype, eid) {
187
196
  }
188
197
  return false;
189
198
  }
190
- function convertOpts({ stores, attrsStore }, [etype, eid, obj_, opts]) {
199
+ function convertOpts({ stores, attrs }, [etype, eid, obj_, opts]) {
191
200
  return (opts === null || opts === void 0 ? void 0 : opts.upsert) === false
192
201
  ? { mode: 'update' }
193
202
  : (opts === null || opts === void 0 ? void 0 : opts.upsert) === true
194
203
  ? null
195
- : checkEntityExists(stores, attrsStore, etype, eid)
204
+ : checkEntityExists(stores, etype, eid)
196
205
  ? { mode: 'update' }
197
206
  : null; // auto mode chooses between update and upsert, not update and create, just in case
198
207
  }
199
208
  function expandCreate(ctx, step) {
200
- const { attrsStore } = ctx;
209
+ const { stores, attrs } = ctx;
201
210
  const [etype, eid, obj_, opts] = step;
202
211
  const obj = immutableRemoveUndefined(obj_);
203
- const lookup = extractLookup(attrsStore, etype, eid);
212
+ const lookup = extractLookup(attrs, etype, eid);
204
213
  // id first so that we don't clobber updates on the lookup field
205
214
  const attrTuples = [['id', lookup]]
206
215
  .concat(Object.entries(obj))
207
216
  .map(([identName, value]) => {
208
- // XXX: missing attr?
209
- const attr = getAttrByFwdIdentName(attrsStore, etype, identName);
217
+ const attr = getAttrByFwdIdentName(attrs, etype, identName);
210
218
  if (attr['checked-data-type'] === 'date' && ctx.useDateObjects) {
211
219
  value = coerceToDate(value);
212
220
  }
@@ -215,16 +223,16 @@ function expandCreate(ctx, step) {
215
223
  return attrTuples;
216
224
  }
217
225
  function expandUpdate(ctx, step) {
218
- const { attrsStore } = ctx;
226
+ const { stores, attrs } = ctx;
219
227
  const [etype, eid, obj_, opts] = step;
220
228
  const obj = immutableRemoveUndefined(obj_);
221
- const lookup = extractLookup(attrsStore, etype, eid);
229
+ const lookup = extractLookup(attrs, etype, eid);
222
230
  const serverOpts = convertOpts(ctx, [etype, lookup, obj_, opts]);
223
231
  // id first so that we don't clobber updates on the lookup field
224
232
  const attrTuples = [['id', lookup]]
225
233
  .concat(Object.entries(obj))
226
234
  .map(([identName, value]) => {
227
- const attr = getAttrByFwdIdentName(attrsStore, etype, identName);
235
+ const attr = getAttrByFwdIdentName(attrs, etype, identName);
228
236
  if (attr['checked-data-type'] === 'date' && ctx.useDateObjects) {
229
237
  value = coerceToDate(value);
230
238
  }
@@ -238,18 +246,18 @@ function expandUpdate(ctx, step) {
238
246
  });
239
247
  return attrTuples;
240
248
  }
241
- function expandDelete({ attrsStore }, [etype, eid]) {
242
- const lookup = extractLookup(attrsStore, etype, eid);
249
+ function expandDelete({ attrs }, [etype, eid]) {
250
+ const lookup = extractLookup(attrs, etype, eid);
243
251
  return [['delete-entity', lookup, etype]];
244
252
  }
245
253
  function expandDeepMerge(ctx, step) {
246
- const { attrsStore } = ctx;
254
+ const { stores, attrs } = ctx;
247
255
  const [etype, eid, obj_, opts] = step;
248
256
  const obj = immutableRemoveUndefined(obj_);
249
- const lookup = extractLookup(attrsStore, etype, eid);
257
+ const lookup = extractLookup(attrs, etype, eid);
250
258
  const serverOpts = convertOpts(ctx, [etype, lookup, obj_, opts]);
251
259
  const attrTuples = Object.entries(obj).map(([identName, value]) => {
252
- const attr = getAttrByFwdIdentName(attrsStore, etype, identName);
260
+ const attr = getAttrByFwdIdentName(attrs, etype, identName);
253
261
  return [
254
262
  'deep-merge-triple',
255
263
  lookup,
@@ -261,15 +269,15 @@ function expandDeepMerge(ctx, step) {
261
269
  const idTuple = [
262
270
  'add-triple',
263
271
  lookup,
264
- getAttrByFwdIdentName(attrsStore, etype, 'id').id,
272
+ getAttrByFwdIdentName(attrs, etype, 'id').id,
265
273
  lookup,
266
274
  ...(serverOpts ? [serverOpts] : []),
267
275
  ];
268
276
  // id first so that we don't clobber updates on the lookup field
269
277
  return [idTuple].concat(attrTuples);
270
278
  }
271
- function expandRuleParams({ attrsStore }, [etype, eid, ruleParams]) {
272
- const lookup = extractLookup(attrsStore, etype, eid);
279
+ function expandRuleParams({ attrs }, [etype, eid, ruleParams]) {
280
+ const lookup = extractLookup(attrs, etype, eid);
273
281
  return [['rule-params', lookup, etype, ruleParams]];
274
282
  }
275
283
  function removeIdFromArgs(step) {
@@ -341,8 +349,7 @@ function createObjectAttr(schema, etype, label, props) {
341
349
  return Object.assign(Object.assign({ id: attrId, 'forward-identity': fwdIdent, 'value-type': 'blob', cardinality: 'one', 'unique?': false, 'index?': false, isUnsynced: true }, (schemaObjectProps || {})), (props || {}));
342
350
  }
343
351
  function findSchemaLink(schema, etype, label) {
344
- const links = Object.values(schema.links);
345
- const found = links.find((x) => {
352
+ const found = Object.values(schema.links).find((x) => {
346
353
  return ((x.forward.on === etype && x.forward.label === label) ||
347
354
  (x.reverse.on === etype && x.reverse.label === label));
348
355
  });
@@ -370,13 +377,7 @@ function createRefAttr(schema, etype, label, props) {
370
377
  const attrId = uuid();
371
378
  const fwdIdent = [uuid(), etype, label];
372
379
  const revIdent = [uuid(), label, etype];
373
- return Object.assign(Object.assign({ id: attrId,
374
- // @ts-ignore: ts thinks it's any[]
375
- 'forward-identity': fwdIdent,
376
- // @ts-ignore: ts thinks it's any[]
377
- 'reverse-identity': revIdent, 'value-type': 'ref',
378
- // @ts-ignore: ts thinks it's type string
379
- cardinality: 'many', 'unique?': false, 'index?': false, isUnsynced: true }, (schemaRefProps || {})), (props || {}));
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 || {}));
380
381
  }
381
382
  // Actions that have an object, e.g. not delete
382
383
  const OBJ_ACTIONS = new Set(['create', 'update', 'merge', 'link', 'unlink']);
@@ -420,49 +421,24 @@ function lookupPairsOfOp(op) {
420
421
  }
421
422
  return res;
422
423
  }
423
- function createMissingAttrs({ attrsStore, schema }, ops) {
424
+ function createMissingAttrs({ attrs: existingAttrs, schema }, ops) {
424
425
  var _a, _b;
425
- const addedIds = new Set();
426
- const localAttrs = [];
427
- const addOps = [];
428
- function attrByFwdIdent(etype, label) {
429
- return (getAttrByFwdIdentName(attrsStore, etype, label) ||
430
- localAttrs.find((x) => x['forward-identity'][1] === etype &&
431
- x['forward-identity'][2] === label));
432
- }
433
- function attrByRevIdent(etype, label) {
434
- return (getAttrByReverseIdentName(attrsStore, etype, label) ||
435
- localAttrs.find((x) => {
436
- var _a, _b;
437
- return ((_a = x['reverse-identity']) === null || _a === void 0 ? void 0 : _a[1]) === etype &&
438
- ((_b = x['reverse-identity']) === null || _b === void 0 ? void 0 : _b[2]) === label;
439
- }));
440
- }
426
+ const [addedIds, attrs, addOps] = [new Set(), Object.assign({}, existingAttrs), []];
441
427
  function addAttr(attr) {
442
- localAttrs.push(attr);
428
+ attrs[attr.id] = attr;
443
429
  addOps.push(['add-attr', attr]);
444
430
  addedIds.add(attr.id);
445
431
  }
446
432
  function addUnsynced(attr) {
447
- if (attr &&
448
- 'isUnsynced' in attr &&
449
- attr.isUnsynced &&
450
- !addedIds.has(attr.id)) {
451
- localAttrs.push(attr);
433
+ if ((attr === null || attr === void 0 ? void 0 : attr.isUnsynced) && !addedIds.has(attr.id)) {
452
434
  addOps.push(['add-attr', attr]);
453
435
  addedIds.add(attr.id);
454
436
  }
455
437
  }
456
- function isRefLookupIdentLocal(etype, identName) {
457
- return (identName.indexOf('.') !== -1 &&
458
- // attr names can have `.` in them, so use the attr we find with a `.`
459
- // before assuming it's a ref lookup.
460
- !attrByRevIdent(etype, identName));
461
- }
462
438
  // Adds attrs needed for a ref lookup
463
439
  function addForRef(etype, label) {
464
- const fwdAttr = attrByFwdIdent(etype, label);
465
- const revAttr = attrByRevIdent(etype, label);
440
+ const fwdAttr = getAttrByFwdIdentName(attrs, etype, label);
441
+ const revAttr = getAttrByReverseIdentName(attrs, etype, label);
466
442
  addUnsynced(fwdAttr);
467
443
  addUnsynced(revAttr);
468
444
  if (!fwdAttr && !revAttr) {
@@ -482,29 +458,29 @@ function createMissingAttrs({ attrsStore, schema }, ops) {
482
458
  addForRef(etype, linkLabel);
483
459
  // Figure out the link etype so we can make sure we have the attrs
484
460
  // for the link lookup
485
- const fwdAttr = attrByFwdIdent(etype, linkLabel);
486
- const revAttr = attrByRevIdent(etype, linkLabel);
461
+ const fwdAttr = getAttrByFwdIdentName(attrs, etype, linkLabel);
462
+ const revAttr = getAttrByReverseIdentName(attrs, etype, linkLabel);
487
463
  addUnsynced(fwdAttr);
488
464
  addUnsynced(revAttr);
489
465
  const linkEtype = ((_a = fwdAttr === null || fwdAttr === void 0 ? void 0 : fwdAttr['reverse-identity']) === null || _a === void 0 ? void 0 : _a[1]) ||
490
466
  ((_b = revAttr === null || revAttr === void 0 ? void 0 : revAttr['forward-identity']) === null || _b === void 0 ? void 0 : _b[1]) ||
491
467
  linkLabel;
492
- if (isRefLookupIdentLocal(linkEtype, identName)) {
468
+ if (isRefLookupIdent(attrs, linkEtype, identName)) {
493
469
  addForRef(linkEtype, extractRefLookupFwdName(identName));
494
470
  }
495
471
  else {
496
- const attr = attrByFwdIdent(linkEtype, identName);
472
+ const attr = getAttrByFwdIdentName(attrs, linkEtype, identName);
497
473
  if (!attr) {
498
474
  addAttr(createObjectAttr(schema, linkEtype, identName, lookupProps));
499
475
  }
500
476
  addUnsynced(attr);
501
477
  }
502
478
  }
503
- else if (isRefLookupIdentLocal(etype, identName)) {
479
+ else if (isRefLookupIdent(attrs, etype, identName)) {
504
480
  addForRef(etype, extractRefLookupFwdName(identName));
505
481
  }
506
482
  else {
507
- const attr = attrByFwdIdent(etype, identName);
483
+ const attr = getAttrByFwdIdentName(attrs, etype, identName);
508
484
  if (!attr) {
509
485
  addAttr(createObjectAttr(schema, etype, identName, lookupProps));
510
486
  }
@@ -516,13 +492,13 @@ function createMissingAttrs({ attrsStore, schema }, ops) {
516
492
  for (const op of ops) {
517
493
  const [action, etype, eid, obj] = op;
518
494
  if (OBJ_ACTIONS.has(action)) {
519
- const idAttr = attrByFwdIdent(etype, 'id');
495
+ const idAttr = getAttrByFwdIdentName(attrs, etype, 'id');
520
496
  addUnsynced(idAttr);
521
497
  if (!idAttr) {
522
498
  addAttr(createObjectAttr(schema, etype, 'id', { 'unique?': true }));
523
499
  }
524
500
  for (const label of Object.keys(obj)) {
525
- const fwdAttr = attrByFwdIdent(etype, label);
501
+ const fwdAttr = getAttrByFwdIdentName(attrs, etype, label);
526
502
  addUnsynced(fwdAttr);
527
503
  if (UPDATE_ACTIONS.has(action)) {
528
504
  if (!fwdAttr) {
@@ -530,7 +506,7 @@ function createMissingAttrs({ attrsStore, schema }, ops) {
530
506
  }
531
507
  }
532
508
  if (REF_ACTIONS.has(action)) {
533
- const revAttr = attrByRevIdent(etype, label);
509
+ const revAttr = getAttrByReverseIdentName(attrs, etype, label);
534
510
  if (!fwdAttr && !revAttr) {
535
511
  addAttr(createRefAttr(schema, etype, label));
536
512
  }
@@ -539,20 +515,13 @@ function createMissingAttrs({ attrsStore, schema }, ops) {
539
515
  }
540
516
  }
541
517
  }
542
- if (localAttrs.length) {
543
- const nextAttrs = Object.assign({}, attrsStore.attrs);
544
- for (const attr of localAttrs) {
545
- nextAttrs[attr.id] = attr;
546
- }
547
- return [new AttrsStore(nextAttrs, attrsStore.linkIndex), addOps];
548
- }
549
- return [attrsStore, addOps];
518
+ return [attrs, addOps];
550
519
  }
551
520
  export function transform(ctx, inputChunks) {
552
521
  const chunks = Array.isArray(inputChunks) ? inputChunks : [inputChunks];
553
522
  const ops = chunks.flatMap((tx) => getOps(tx));
554
523
  const [newAttrs, addAttrTxSteps] = createMissingAttrs(ctx, ops);
555
- const newCtx = Object.assign(Object.assign({}, ctx), { attrsStore: newAttrs });
524
+ const newCtx = Object.assign(Object.assign({}, ctx), { attrs: newAttrs });
556
525
  const txSteps = ops.flatMap((op) => toTxSteps(newCtx, op));
557
526
  return [...addAttrTxSteps, ...txSteps];
558
527
  }
@@ -1 +1 @@
1
- {"version":3,"file":"instaml.js","sourceRoot":"","sources":["../../src/instaml.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n allMapValues,\n AttrsStore,\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 // XXX: Better error here\n extractLookup(attrsStore, fwdAttr!['reverse-identity']![1], eidB),\n ]\n : [\n 'add-triple',\n // XXX: Better error here\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 // XXX: Better error here\n extractLookup(attrsStore, fwdAttr!['reverse-identity']![1], eidB),\n ]\n : [\n 'retract-triple',\n // XXX: Better error here\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)[],\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 // XXX: missing attr?\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,\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 !attrByRevIdent(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 AttrsStore(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
+ {"version":3,"file":"instaml.js","sourceRoot":"","sources":["../../src/instaml.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,IAAI,MAAM,iBAAiB,CAAC;AAEnC,wEAAwE;AACxE,MAAM,UAAU,WAAW,CAAC,WAAW,EAAE,MAAM;IAC7C,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,WAAW,CAAC;IAClD,MAAM,SAAS,GAAG,EAAE,CAAC;IACrB,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;QAC1B,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAEjC,IAAI,QAAQ,EAAE,CAAC;YACb,mBAAmB;YACnB,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3B,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACzE,8BAA8B;YAC9B,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC;YAC1B,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;QAC1C,CAAC;aAAM,CAAC;YACN,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IACD,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;IACxB,IACE,CAAC,MAAM,KAAK,YAAY,IAAI,MAAM,KAAK,gBAAgB,CAAC;QACxD,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAC7B,CAAC;QACD,yDAAyD;QACzD,MAAM,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QACzB,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAC5B,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IACrB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAK,EAAE,UAAU,EAAE,cAAc;IACrE,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;QACxC,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACrD,OAAO,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,cAAc,CAAC;IAC1D,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,KAAK,EAAE,UAAU,EAAE,cAAc;IACzE,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;QACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC5B,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,QAAQ,CAAC;QACrC,OAAO,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,cAAc,CAAC;IAC1D,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAG;IAC3B,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,GAAG,CAAC;IACb,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACpC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACb,+DAA+D,CAChE,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS;IAC/C,OAAO,CACL,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC7B,sEAAsE;QACtE,qCAAqC;QACrC,CAAC,qBAAqB,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,CAChD,CAAC;AACJ,CAAC;AAED,SAAS,uBAAuB,CAAC,SAAS;IACxC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,mCAAmC,CAAC,CAAC;IACnE,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS;IAChD,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;QAC/C,OAAO,qBAAqB,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,OAAO,GAAG,uBAAuB,CAAC,SAAS,CAAC,CAAC;IAEnD,MAAM,OAAO,GACX,qBAAqB,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC;QAC5C,yBAAyB,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IACnD,IAAI,OAAO,IAAI,OAAO,CAAC,YAAY,CAAC,KAAK,KAAK,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,6CAA6C,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,4DAA4D;AAC5D,sCAAsC;AACtC,SAAS,eAAe,CAAC,GAAG;IAC1B,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,QAAQ,CAAC,GAAG,CAAC;QAC7C,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC;QAClB,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG;IACtC,MAAM,UAAU,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IAExC,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;QACxB,OAAO,GAAG,CAAC;IACb,CAAC;IAED,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,GAAG,UAAU,CAAC;IACtC,MAAM,IAAI,GAAG,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;IACxD,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,6BAA6B,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO;IACtD,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IACjD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,MAAM,OAAO,GAAG;QACd,YAAY;QACZ,MAAM;QACN,qBAAqB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE;QAC5C,MAAM;KACP,CAAC;IACF,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC;IAC/C,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,EAAE;QACpE,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAChE,MAAM,OAAO,GAAG,qBAAqB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAC3D,MAAM,OAAO,GAAG,yBAAyB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACvB,MAAM,MAAM,GAAG,OAAO;gBACpB,CAAC,CAAC;oBACE,YAAY;oBACZ,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC;oBACjC,OAAO,CAAC,EAAE;oBACV,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;iBAC3D;gBACH,CAAC,CAAC;oBACE,YAAY;oBACZ,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;oBAC1D,OAAO,CAAC,EAAE;oBACV,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC;iBAClC,CAAC;YACN,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,OAAO,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;AAC7D,CAAC;AAED,SAAS,YAAY,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC;IACjD,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,EAAE;QACxE,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAChE,MAAM,OAAO,GAAG,qBAAqB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAC3D,MAAM,OAAO,GAAG,yBAAyB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACvB,MAAM,MAAM,GAAG,OAAO;gBACpB,CAAC,CAAC;oBACE,gBAAgB;oBAChB,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC;oBACjC,OAAO,CAAC,EAAE;oBACV,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;iBAC3D;gBACH,CAAC,CAAC;oBACE,gBAAgB;oBAChB,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;oBAC1D,OAAO,CAAC,EAAE;oBACV,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC;iBAClC,CAAC;YACN,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,OAAO,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;AACjE,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG;IAC3C,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,aAAa;QACb,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,GAAG,CAAC;QACjC,KAAK,MAAM,KAAK,IAAI,MAAM,IAAI,EAAE,EAAE,CAAC;YACjC,MAAM,EAAE,GAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACpC,IAAI,EAAE,EAAE,CAAC;gBACP,sDAAsD;gBACtD,KAAK,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC;oBAC9C,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC;wBACnB,OAAO,IAAI,CAAC;oBACd,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM;QACN,KAAK,MAAM,KAAK,IAAI,MAAM,IAAI,EAAE,EAAE,CAAC;YACjC,MAAM,EAAE,GAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC/B,IAAI,EAAE,EAAE,CAAC;gBACP,KAAK,MAAM,OAAO,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;oBAChC,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC;wBACzD,OAAO,IAAI,CAAC;oBACd,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,WAAW,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC;IAC9D,OAAO,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,MAAK,KAAK;QAC3B,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE;QACpB,CAAC,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,MAAK,IAAI;YACrB,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,iBAAiB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC;gBACrC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACpB,CAAC,CAAC,IAAI,CAAC,CAAC,mFAAmF;AACnG,CAAC;AAED,SAAS,YAAY,CAAC,GAAG,EAAE,IAAI;IAC7B,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;IAC9B,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC;IACtC,MAAM,GAAG,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IAChD,gEAAgE;IAChE,MAAM,UAAU,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;SAChC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;SAC3B,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,EAAE;QAC1B,MAAM,IAAI,GAAG,qBAAqB,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;QAE5D,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,MAAM,IAAI,GAAG,CAAC,cAAc,EAAE,CAAC;YAC/D,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;QAED,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IACL,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,YAAY,CAAC,GAAG,EAAE,IAAI;IAC7B,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;IAC9B,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC;IACtC,MAAM,GAAG,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IAChD,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IACjE,gEAAgE;IAChE,MAAM,UAAU,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;SAChC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;SAC3B,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,EAAE;QAC1B,MAAM,IAAI,GAAG,qBAAqB,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;QAE5D,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,MAAM,IAAI,GAAG,CAAC,cAAc,EAAE,CAAC;YAC/D,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;QAED,OAAO;YACL,YAAY;YACZ,MAAM;YACN,IAAI,CAAC,EAAE;YACP,KAAK;YACL,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SACpC,CAAC;IACJ,CAAC,CAAC,CAAC;IACL,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,YAAY,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC;IAC3C,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IAChD,OAAO,CAAC,CAAC,eAAe,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,eAAe,CAAC,GAAG,EAAE,IAAI;IAChC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;IAC9B,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC;IACtC,MAAM,GAAG,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IAChD,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IACjE,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,EAAE;QAChE,MAAM,IAAI,GAAG,qBAAqB,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;QAC5D,OAAO;YACL,mBAAmB;YACnB,MAAM;YACN,IAAI,CAAC,EAAE;YACP,KAAK;YACL,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SACpC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG;QACd,YAAY;QACZ,MAAM;QACN,qBAAqB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE;QAC5C,MAAM;QACN,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KACpC,CAAC;IAEF,gEAAgE;IAChE,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,gBAAgB,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,UAAU,CAAC;IAC3D,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IAChD,OAAO,CAAC,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAI;IAC5B,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC;IACzC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,MAAM,qBAAQ,GAAG,CAAE,CAAC;IAC1B,OAAO,MAAM,CAAC,EAAE,CAAC;IACjB,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,SAAS,CAAC,GAAG,EAAE,IAAI;IAC1B,MAAM,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACjD,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,OAAO;YACV,OAAO,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACpC,KAAK,QAAQ;YACX,OAAO,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACjC,KAAK,QAAQ;YACX,OAAO,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACjC,KAAK,MAAM;YACT,OAAO,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC/B,KAAK,QAAQ;YACX,OAAO,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACjC,KAAK,QAAQ;YACX,OAAO,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACjC,KAAK,YAAY;YACf,OAAO,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACrC;YACE,MAAM,IAAI,KAAK,CAAC,sBAAsB,MAAM,EAAE,CAAC,CAAC;IACpD,CAAC;AACH,CAAC;AAED,YAAY;AACZ,YAAY;AAEZ,SAAS,0BAA0B,CAAC,SAAS;IAC3C,QAAQ,SAAS,EAAE,CAAC;QAClB,KAAK,QAAQ,CAAC;QACd,KAAK,MAAM,CAAC;QACZ,KAAK,SAAS,CAAC;QACf,KAAK,QAAQ;YACX,OAAO,SAAS,CAAC;QACnB;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK;;IACjD,MAAM,IAAI,GAAG,MAAA,MAAA,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,0CAAE,KAAK,0CAAG,KAAK,CAAC,CAAC;IACpD,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAChC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,KAAK,gCAAgC,CAAC,CAAC;IACrE,CAAC;IACD,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,CAAC;IACzC,MAAM,eAAe,GAAG,0BAA0B,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,SAAS,CAAC,CAAC;IAEpE,OAAO;QACL,QAAQ,EAAE,OAAO;QACjB,SAAS,EAAE,MAAM;QACjB,mBAAmB,EAAE,eAAe;KACrC,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;IACnD,MAAM,iBAAiB,GAAG,MAAM;QAC9B,CAAC,CAAC,qBAAqB,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC;QAC7C,CAAC,CAAC,IAAI,CAAC;IACT,MAAM,MAAM,GAAG,IAAI,EAAE,CAAC;IACtB,MAAM,UAAU,GAAG,IAAI,EAAE,CAAC;IAC1B,MAAM,QAAQ,GAAG,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAC5C,qCACE,EAAE,EAAE,MAAM,EACV,kBAAkB,EAAE,QAAQ,EAC5B,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,KAAK,EAClB,SAAS,EAAE,KAAK,EAChB,QAAQ,EAAE,KAAK,EACf,UAAU,EAAE,IAAI,IACb,CAAC,iBAAiB,IAAI,EAAE,CAAC,GACzB,CAAC,KAAK,IAAI,EAAE,CAAC,EAChB;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK;IAC1C,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;QACnD,OAAO,CACL,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC;YACrD,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC,CACtD,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK;IAC9C,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACnD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,0BAA0B,KAAK,IAAI,KAAK,iBAAiB,CAAC,CAAC;IAC7E,CAAC;IACD,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IACnC,OAAO;QACL,kBAAkB,EAAE,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC;QACvD,kBAAkB,EAAE,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC;QACvD,WAAW,EAAE,OAAO,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM;QACnD,SAAS,EAAE,OAAO,CAAC,GAAG,KAAK,KAAK;QAChC,WAAW,EAAE,OAAO,CAAC,QAAQ;QAC7B,mBAAmB,EAAE,OAAO,CAAC,QAAQ;KACtC,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;IAChD,MAAM,cAAc,GAAG,MAAM;QAC3B,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC;QAC1C,CAAC,CAAC,IAAI,CAAC;IACT,MAAM,MAAM,GAAG,IAAI,EAAE,CAAC;IACtB,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACxC,qCACE,EAAE,EAAE,MAAM,EACV,kBAAkB,EAAE,QAAQ,EAC5B,kBAAkB,EAAE,QAAQ,EAC5B,YAAY,EAAE,KAAK,EACnB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,KAAK,EAChB,QAAQ,EAAE,KAAK,EACf,UAAU,EAAE,IAAI,IACb,CAAC,cAAc,IAAI,EAAE,CAAC,GACtB,CAAC,KAAK,IAAI,EAAE,CAAC,EAChB;AACJ,CAAC;AAED,+CAA+C;AAC/C,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC7E,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;AAChD,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;AAC9D,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC;IACtC,MAAM;IACN,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,YAAY;CACb,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACxD,MAAM,cAAc,mCAAQ,WAAW,KAAE,WAAW,EAAE,KAAK,GAAE,CAAC;AAE9D,SAAS,eAAe,CAAC,EAAE;IACzB,MAAM,GAAG,GAAG,EAAE,CAAC;IACf,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;IACrC,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QACzC,OAAO,GAAG,CAAC;IACb,CAAC;IAED,MAAM,aAAa,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IAC3C,IAAI,aAAa,EAAE,CAAC;QAClB,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,KAAK,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACrD,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YAChE,KAAK,MAAM,OAAO,IAAI,IAAI,EAAE,CAAC;gBAC3B,MAAM,iBAAiB,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;gBACnD,IAAI,iBAAiB,EAAE,CAAC;oBACtB,GAAG,CAAC,IAAI,CAAC;wBACP,KAAK,EAAE,KAAK;wBACZ,UAAU,EAAE,iBAAiB;wBAC7B,SAAS,EAAE,KAAK;qBACjB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,kBAAkB,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,GAAG;;IAC/D,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,oBAAO,aAAa,GAAI,EAAE,CAAC,CAAC;IACxE,SAAS,OAAO,CAAC,IAAI;QACnB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;QACtB,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;QAChC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACxB,CAAC;IACD,SAAS,WAAW,CAAC,IAAI;QACvB,IAAI,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,UAAU,KAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YAC/C,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;YAChC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAED,qCAAqC;IACrC,SAAS,SAAS,CAAC,KAAK,EAAE,KAAK;QAC7B,MAAM,OAAO,GAAG,qBAAqB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAC3D,MAAM,OAAO,GAAG,yBAAyB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAC/D,WAAW,CAAC,OAAO,CAAC,CAAC;QACrB,WAAW,CAAC,OAAO,CAAC,CAAC;QACrB,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;YACzB,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAED,yCAAyC;IACzC,kEAAkE;IAClE,sBAAsB;IACtB,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;QACrB,KAAK,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,eAAe,CAAC,EAAE,CAAC,EAAE,CAAC;YACnE,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YAChC,0EAA0E;YAC1E,2CAA2C;YAC3C,IAAI,SAAS,EAAE,CAAC;gBACd,qCAAqC;gBACrC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;gBAE5B,kEAAkE;gBAClE,sBAAsB;gBACtB,MAAM,OAAO,GAAG,qBAAqB,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;gBAC/D,MAAM,OAAO,GAAG,yBAAyB,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;gBACnE,WAAW,CAAC,OAAO,CAAC,CAAC;gBACrB,WAAW,CAAC,OAAO,CAAC,CAAC;gBACrB,MAAM,SAAS,GACb,CAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,kBAAkB,CAAC,0CAAG,CAAC,CAAC;qBAClC,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,kBAAkB,CAAC,0CAAG,CAAC,CAAC,CAAA;oBAClC,SAAS,CAAC;gBACZ,IAAI,gBAAgB,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC;oBAClD,SAAS,CAAC,SAAS,EAAE,uBAAuB,CAAC,SAAS,CAAC,CAAC,CAAC;gBAC3D,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,GAAG,qBAAqB,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;oBAChE,IAAI,CAAC,IAAI,EAAE,CAAC;wBACV,OAAO,CACL,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,CAAC,CAC5D,CAAC;oBACJ,CAAC;oBACD,WAAW,CAAC,IAAI,CAAC,CAAC;gBACpB,CAAC;YACH,CAAC;iBAAM,IAAI,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;gBACrD,SAAS,CAAC,KAAK,EAAE,uBAAuB,CAAC,SAAS,CAAC,CAAC,CAAC;YACvD,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,GAAG,qBAAqB,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;gBAC5D,IAAI,CAAC,IAAI,EAAE,CAAC;oBACV,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;gBACnE,CAAC;gBACD,WAAW,CAAC,IAAI,CAAC,CAAC;YACpB,CAAC;QACH,CAAC;IACH,CAAC;IAED,8BAA8B;IAC9B,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;QACrB,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;QACrC,IAAI,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAG,qBAAqB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YACzD,WAAW,CAAC,MAAM,CAAC,CAAC;YACpB,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YACtE,CAAC;YAED,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACrC,MAAM,OAAO,GAAG,qBAAqB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;gBAC3D,WAAW,CAAC,OAAO,CAAC,CAAC;gBACrB,IAAI,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC/B,IAAI,CAAC,OAAO,EAAE,CAAC;wBACb,OAAO,CACL,gBAAgB,CACd,MAAM,EACN,KAAK,EACL,KAAK,EACL,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAC5C,CACF,CAAC;oBACJ,CAAC;gBACH,CAAC;gBACD,IAAI,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC5B,MAAM,OAAO,GAAG,yBAAyB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;oBAC/D,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;wBACzB,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;oBAC/C,CAAC;oBACD,WAAW,CAAC,OAAO,CAAC,CAAC;gBACvB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,GAAG,EAAE,WAAW;IACxC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IACxE,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/C,MAAM,CAAC,QAAQ,EAAE,cAAc,CAAC,GAAG,kBAAkB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAChE,MAAM,MAAM,mCAAQ,GAAG,KAAE,KAAK,EAAE,QAAQ,GAAE,CAAC;IAC3C,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,cAAc,EAAE,GAAG,OAAO,CAAC,CAAC;AACzC,CAAC","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,8 +1,7 @@
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, attrsStore, pageInfo, aggregate, }: {
3
+ export default function query({ store, pageInfo, aggregate, }: {
4
4
  store: s.Store;
5
- attrsStore: s.AttrsStore;
6
5
  pageInfo: any;
7
6
  aggregate: any;
8
7
  }, q: any): {
@@ -1 +1 @@
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,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;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"}