@actdim/utico 1.2.5 → 1.2.7

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 (59) hide show
  1. package/README.md +73 -3
  2. package/dist/arrayExtensions.es.js +64 -38
  3. package/dist/arrayExtensions.es.js.map +1 -1
  4. package/dist/asyncLock.es.js +45 -30
  5. package/dist/asyncLock.es.js.map +1 -1
  6. package/dist/cache/cacheContracts.es.js +8 -4
  7. package/dist/cache/cacheContracts.es.js.map +1 -1
  8. package/dist/cache/memoryCache.es.js +28 -13
  9. package/dist/cache/memoryCache.es.js.map +1 -1
  10. package/dist/cache/persistentCache.es.js +174 -97
  11. package/dist/cache/persistentCache.es.js.map +1 -1
  12. package/dist/dataFormats.es.js +4 -4
  13. package/dist/dataFormats.es.js.map +1 -1
  14. package/dist/dateTimeDataFormat.es.js +211 -130
  15. package/dist/dateTimeDataFormat.es.js.map +1 -1
  16. package/dist/decorators.es.js +15 -11
  17. package/dist/decorators.es.js.map +1 -1
  18. package/dist/gfx/canvasUtils.es.js +197 -114
  19. package/dist/gfx/canvasUtils.es.js.map +1 -1
  20. package/dist/gfx/color.es.js +134 -68
  21. package/dist/gfx/color.es.js.map +1 -1
  22. package/dist/i18n/cultures.es.js +8 -8
  23. package/dist/i18n/cultures.es.js.map +1 -1
  24. package/dist/i18n/enUsCulture.es.js +2 -2
  25. package/dist/i18n/enUsCulture.es.js.map +1 -1
  26. package/dist/i18n/euCulture.es.js +2 -2
  27. package/dist/i18n/euCulture.es.js.map +1 -1
  28. package/dist/i18n/invariantCulture.es.js +2 -2
  29. package/dist/i18n/invariantCulture.es.js.map +1 -1
  30. package/dist/index.es.js.map +1 -1
  31. package/dist/math.es.js +14 -8
  32. package/dist/math.es.js.map +1 -1
  33. package/dist/metadata.es.js +53 -25
  34. package/dist/metadata.es.js.map +1 -1
  35. package/dist/patterns.es.js +5 -3
  36. package/dist/patterns.es.js.map +1 -1
  37. package/dist/store/dataStore.es.js +241 -157
  38. package/dist/store/dataStore.es.js.map +1 -1
  39. package/dist/store/persistentStore.es.js +23 -17
  40. package/dist/store/persistentStore.es.js.map +1 -1
  41. package/dist/store/storeContracts.es.js +7 -3
  42. package/dist/store/storeContracts.es.js.map +1 -1
  43. package/dist/store/storeDb.es.js +87 -50
  44. package/dist/store/storeDb.es.js.map +1 -1
  45. package/dist/stringCore.es.js +60 -22
  46. package/dist/stringCore.es.js.map +1 -1
  47. package/dist/structEvent.es.js +30 -17
  48. package/dist/structEvent.es.js.map +1 -1
  49. package/dist/typeCore.es.js +25 -11
  50. package/dist/typeCore.es.js.map +1 -1
  51. package/dist/typeUtils.es.js +292 -182
  52. package/dist/typeUtils.es.js.map +1 -1
  53. package/dist/utils.d.ts +3 -3
  54. package/dist/utils.d.ts.map +1 -1
  55. package/dist/utils.es.js +138 -81
  56. package/dist/utils.es.js.map +1 -1
  57. package/dist/watchable.es.js +50 -27
  58. package/dist/watchable.es.js.map +1 -1
  59. package/package.json +2 -2
@@ -1,55 +1,66 @@
1
- import { v4 as f } from "uuid";
2
- import { keyOf as h } from "../typeUtils.es.js";
3
- import { StoreDb as w } from "./storeDb.es.js";
4
- function* l(u) {
5
- const t = [...u.keys()];
6
- for (let e = t.length - 1; e >= 0; e--)
7
- yield u.get(t[e]);
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ import { v4 } from "uuid";
4
+ import { keyOf } from "../typeUtils.es.js";
5
+ import { StoreDb } from "./storeDb.es.js";
6
+ function* reverseMapValues(map) {
7
+ const keys = [...map.keys()];
8
+ for (let i = keys.length - 1; i >= 0; i--) {
9
+ yield map.get(keys[i]);
10
+ }
8
11
  }
9
- class d {
12
+ __name(reverseMapValues, "reverseMapValues");
13
+ const _StoreCollection = class _StoreCollection {
10
14
  _metadata;
11
- constructor(t) {
12
- this._metadata = t;
15
+ constructor(metadata) {
16
+ this._metadata = metadata;
13
17
  }
14
18
  get db() {
15
19
  return this._metadata.db;
16
20
  }
17
- async toArray(t, e, r = "r") {
18
- const n = this.db;
19
- return n.exec(async () => {
20
- const a = /* @__PURE__ */ new Map();
21
- let i = this._metadata.each.bind(this._metadata);
22
- if (t && e) {
23
- const s = await this._metadata.sortBy(t);
24
- i = s.forEach.bind(s);
21
+ async toArray(orderBy, orderDirection, transactionMode = "r") {
22
+ const db = this.db;
23
+ return db.exec(async () => {
24
+ const map = /* @__PURE__ */ new Map();
25
+ let populate = this._metadata.each.bind(this._metadata);
26
+ if (orderBy && orderDirection) {
27
+ const metadataRecords = await this._metadata.sortBy(orderBy);
28
+ populate = metadataRecords.forEach.bind(metadataRecords);
25
29
  }
26
- await i((s) => {
27
- a.set(s.key, {
28
- metadata: s
30
+ await populate((metadataRecord) => {
31
+ map.set(metadataRecord.key, {
32
+ metadata: metadataRecord
29
33
  // data: undefined
30
34
  });
31
35
  });
32
- const o = [...a.keys()], c = await n.data.bulkGet(o);
33
- for (const s of c)
34
- if (s) {
35
- const y = a.get(s.key);
36
- y && (y.data = s);
36
+ const keys = [...map.keys()];
37
+ const dataRecords = await db.data.bulkGet(keys);
38
+ for (const dataRecord of dataRecords) {
39
+ if (dataRecord) {
40
+ const item = map.get(dataRecord.key);
41
+ if (item) {
42
+ item.data = dataRecord;
43
+ }
37
44
  }
38
- return e === "desc" ? [...l(a)] : [...a.values()];
39
- }, r);
45
+ }
46
+ if (orderDirection === "desc") {
47
+ return [...reverseMapValues(map)];
48
+ }
49
+ return [...map.values()];
50
+ }, transactionMode);
40
51
  }
41
- orderBy(t, e, r = "r") {
42
- return this.toArray(t, e, r);
52
+ orderBy(field, direction, transactionMode = "r") {
53
+ return this.toArray(field, direction, transactionMode);
43
54
  }
44
- filter(t) {
45
- const e = this._metadata.filter(t);
46
- return new d(e);
55
+ filter(filter) {
56
+ const metadata = this._metadata.filter(filter);
57
+ return new _StoreCollection(metadata);
47
58
  }
48
- limit(t) {
49
- return new d(this._metadata.limit(t));
59
+ limit(n) {
60
+ return new _StoreCollection(this._metadata.limit(n));
50
61
  }
51
- offset(t) {
52
- return new d(this._metadata.offset(t));
62
+ offset(n) {
63
+ return new _StoreCollection(this._metadata.offset(n));
53
64
  }
54
65
  getKeys() {
55
66
  return this._metadata.primaryKeys();
@@ -57,182 +68,255 @@ class d {
57
68
  getCount() {
58
69
  return this._metadata.count();
59
70
  }
60
- getFilterKeys(t) {
61
- return t ? this._metadata.uniqueKeys() : this._metadata.keys();
71
+ getFilterKeys(distinct) {
72
+ if (distinct) {
73
+ return this._metadata.uniqueKeys();
74
+ }
75
+ return this._metadata.keys();
62
76
  }
63
- modifyMetadata(t, e = "rw") {
64
- if (!t)
77
+ modifyMetadata(callback, transactionMode = "rw") {
78
+ if (!callback) {
65
79
  throw new Error("callback cannot be undefined.");
66
- return this.db.exec(async () => this._metadata.modify((r) => {
67
- t(r);
68
- }), e);
80
+ }
81
+ return this.db.exec(async () => {
82
+ return this._metadata.modify((r) => {
83
+ callback(r);
84
+ });
85
+ }, transactionMode);
69
86
  }
70
- modifyData(t, e = "rw") {
71
- if (!t)
87
+ modifyData(callback, transactionMode = "rw") {
88
+ if (!callback) {
72
89
  throw new Error("callback cannot be undefined.");
90
+ }
73
91
  return this.db.exec(async () => {
74
- const r = await this.getKeys();
75
- return await this.db.data.where(h("key")).anyOf(r).modify((n) => {
76
- t(n);
92
+ const keys = await this.getKeys();
93
+ return await this.db.data.where(keyOf("key")).anyOf(keys).modify((r) => {
94
+ callback(r);
77
95
  });
78
- }, e);
96
+ }, transactionMode);
79
97
  }
80
- modify(t, e, r = "rw") {
98
+ modify(metadataCallback, dataCallback, transactionMode = "rw") {
81
99
  return this.db.exec(async () => {
82
- const n = [];
83
- let a;
84
- return t && (a = await this._metadata.modify((i) => {
85
- n.push(i.key), t(i);
86
- })), e && await this.db.data.where(h("key")).anyOf(n).modify((i) => {
87
- e(i);
88
- }), a;
89
- }, r);
100
+ const keys = [];
101
+ let mc;
102
+ if (metadataCallback) {
103
+ mc = await this._metadata.modify((r) => {
104
+ keys.push(r.key);
105
+ metadataCallback(r);
106
+ });
107
+ }
108
+ if (dataCallback) {
109
+ await this.db.data.where(keyOf("key")).anyOf(keys).modify((r) => {
110
+ dataCallback(r);
111
+ });
112
+ }
113
+ return mc;
114
+ }, transactionMode);
90
115
  }
91
- }
92
- function m(u, t) {
93
- const e = /* @__PURE__ */ new WeakMap();
94
- return new Proxy(u, {
95
- get(r, n, a) {
96
- const i = Reflect.get(r, n, a);
97
- return typeof i == "function" ? (e.has(i) || e.set(i, new Proxy(i, {
98
- apply(o, c, s) {
99
- return t(Reflect.apply(o, c, s));
116
+ };
117
+ __name(_StoreCollection, "StoreCollection");
118
+ let StoreCollection = _StoreCollection;
119
+ function createWhereFilter(source, factory) {
120
+ const methodCache = /* @__PURE__ */ new WeakMap();
121
+ return new Proxy(source, {
122
+ get(target, prop, receiver) {
123
+ const value = Reflect.get(target, prop, receiver);
124
+ if (typeof value === "function") {
125
+ if (!methodCache.has(value)) {
126
+ methodCache.set(value, new Proxy(value, {
127
+ apply(targetFn, thisArg, args) {
128
+ return factory(Reflect.apply(targetFn, thisArg, args));
129
+ }
130
+ }));
100
131
  }
101
- })), e.get(i)) : i;
132
+ return methodCache.get(value);
133
+ }
134
+ return value;
102
135
  }
103
136
  });
104
137
  }
105
- class k {
138
+ __name(createWhereFilter, "createWhereFilter");
139
+ const _DataStore = class _DataStore {
106
140
  _db;
107
- constructor(t, e) {
108
- if (!t)
141
+ constructor(name, metadataFieldDefTemplate) {
142
+ if (!name) {
109
143
  throw new Error("Name cannot be empty.");
110
- this._db = new w(t, e);
144
+ }
145
+ this._db = new StoreDb(name, metadataFieldDefTemplate);
111
146
  }
112
147
  [Symbol.dispose]() {
113
- this._db?.[Symbol.dispose](), this._db = null;
148
+ this._db?.[Symbol.dispose]();
149
+ this._db = null;
114
150
  }
115
151
  open() {
116
152
  return this._db.open();
117
153
  }
118
- exec(t, e = "r!") {
119
- return this._db.exec(t, e);
154
+ exec(action, transactionMode = "r!") {
155
+ return this._db.exec(action, transactionMode);
120
156
  }
121
157
  getKeys() {
122
158
  return this._db.getKeys();
123
159
  }
124
- contains(t, e = "r") {
125
- return this._db.contains(t, e);
160
+ contains(key, transactionMode = "r") {
161
+ return this._db.contains(key, transactionMode);
126
162
  }
127
- delete(t, e = "rw") {
128
- return this._db.deleteOne(t, e);
163
+ delete(key, transactionMode = "rw") {
164
+ return this._db.deleteOne(key, transactionMode);
129
165
  }
130
166
  // deleteMany
131
- bulkDelete(t, e = "rw") {
132
- return this._db.bulkDelete(t, e);
167
+ bulkDelete(keys, transactionMode = "rw") {
168
+ return this._db.bulkDelete(keys, transactionMode);
133
169
  }
134
170
  // clearAll
135
- clear(t = "rw") {
136
- return this._db.clear(t);
171
+ clear(transactionMode = "rw") {
172
+ return this._db.clear(transactionMode);
137
173
  }
138
- async getInternal(t) {
139
- const e = await this._db.metadata.get(t);
140
- if (!e) return;
141
- const r = await this._db.data.get(t);
142
- return { metadata: e, data: r };
174
+ async getInternal(key) {
175
+ const metadataRecord = await this._db.metadata.get(key);
176
+ if (!metadataRecord) return void 0;
177
+ const dataRecord = await this._db.data.get(key);
178
+ return { metadata: metadataRecord, data: dataRecord };
143
179
  }
144
- async setInternal(t, e) {
145
- t.key || (t.key = f());
146
- const r = await this._db.metadata.put(t);
147
- return await this._db.data.put({ key: t.key, value: e }), r;
180
+ async setInternal(metadataRecord, value) {
181
+ if (!metadataRecord.key) metadataRecord.key = v4();
182
+ const result = await this._db.metadata.put(metadataRecord);
183
+ await this._db.data.put({ key: metadataRecord.key, value });
184
+ return result;
148
185
  }
149
- get(t, e = "r?") {
150
- return this.exec(() => this.getInternal(t), e);
186
+ get(key, transactionMode = "r?") {
187
+ return this.exec(() => this.getInternal(key), transactionMode);
151
188
  }
152
189
  // upsert
153
- async set(t, e, r = "rw") {
154
- if (e === void 0)
190
+ async set(metadataRecord, value, transactionMode = "rw") {
191
+ if (value === void 0) {
155
192
  throw new Error('Invalid parameter: "value".');
156
- return this.exec(() => this.setInternal(t, e), r);
193
+ }
194
+ return this.exec(() => this.setInternal(metadataRecord, value), transactionMode);
157
195
  }
158
196
  // getOrAdd
159
- async getOrSet(t, e, r = "rw") {
160
- if (!t.key)
161
- throw new Error('Key cannot be empty. Parameter: "metadataRecord".');
197
+ async getOrSet(metadataRecord, factory, transactionMode = "rw") {
198
+ if (!metadataRecord.key) {
199
+ throw new Error(`Key cannot be empty. Parameter: "metadataRecord".`);
200
+ }
162
201
  return this.exec(async () => {
163
- const n = await this.getInternal(t.key);
164
- return n || (await this.setInternal(t, e(t)), this.getInternal(t.key));
165
- }, r);
166
- }
167
- async update(t, e, r, n = "rw") {
168
- if (!t)
202
+ const existing = await this.getInternal(metadataRecord.key);
203
+ if (existing) return existing;
204
+ await this.setInternal(metadataRecord, factory(metadataRecord));
205
+ return this.getInternal(metadataRecord.key);
206
+ }, transactionMode);
207
+ }
208
+ async update(key, metadataChanges, valueChanges, transactionMode = "rw") {
209
+ if (!key) {
169
210
  throw new Error('Key cannot be empty. Parameter: "key".');
170
- if (!e && !r)
211
+ }
212
+ if (!metadataChanges && !valueChanges) {
171
213
  throw new Error("No changes provided.");
214
+ }
172
215
  return this.exec(async () => {
173
- let a;
174
- return e && (a = await this._db.metadata.update(t, e)), r && await this._db.data.update(t, r), a;
175
- }, n);
176
- }
177
- async bulkUpdate(t, e, r = "rw") {
178
- let n;
179
- if (t && (n = t.findIndex((a) => !a.key)) >= 0)
180
- throw new Error(`Key cannot be empty. Parameter: "metadataChangeSets". Invalid item index: ${n}.`);
181
- if (e && (n = e.findIndex((a) => !a.key)) >= 0)
182
- throw new Error(`Key cannot be empty. Parameter: "valueChangeSets". Invalid item index: ${n}.`);
216
+ let mc;
217
+ if (metadataChanges) {
218
+ mc = await this._db.metadata.update(key, metadataChanges);
219
+ }
220
+ if (valueChanges) {
221
+ await this._db.data.update(key, valueChanges);
222
+ }
223
+ return mc;
224
+ }, transactionMode);
225
+ }
226
+ async bulkUpdate(metadataChangeSets, dataChangeSets, transactionMode = "rw") {
227
+ let index;
228
+ if (metadataChangeSets && (index = metadataChangeSets.findIndex((x) => !x.key)) >= 0) {
229
+ throw new Error(`Key cannot be empty. Parameter: "metadataChangeSets". Invalid item index: ${index}.`);
230
+ }
231
+ if (dataChangeSets && (index = dataChangeSets.findIndex((x) => !x.key)) >= 0) {
232
+ throw new Error(`Key cannot be empty. Parameter: "valueChangeSets". Invalid item index: ${index}.`);
233
+ }
183
234
  return this.exec(async () => {
184
- let a;
185
- return t && (a = await this._db.metadata.bulkUpdate(t)), e && await this._db.data.bulkUpdate(e), a;
186
- }, r);
235
+ let cm;
236
+ if (metadataChangeSets) {
237
+ cm = await this._db.metadata.bulkUpdate(metadataChangeSets);
238
+ }
239
+ if (dataChangeSets) {
240
+ await this._db.data.bulkUpdate(dataChangeSets);
241
+ }
242
+ return cm;
243
+ }, transactionMode);
187
244
  }
188
245
  // getMany
189
- bulkGet(t, e = "r") {
246
+ bulkGet(keys, transactionMode = "r") {
190
247
  return this.exec(async () => {
191
- const r = /* @__PURE__ */ new Map(), n = await this._db.metadata.bulkGet(t);
192
- for (const i of n)
193
- i && r.set(i.key, { metadata: i });
194
- const a = await this._db.data.bulkGet(t);
195
- for (const i of a)
196
- if (i) {
197
- const o = r.get(i.key);
198
- o && (o.data = i);
248
+ const map = /* @__PURE__ */ new Map();
249
+ const metadataRecords = await this._db.metadata.bulkGet(keys);
250
+ for (const metadataRecord of metadataRecords) {
251
+ if (metadataRecord) {
252
+ map.set(metadataRecord.key, { metadata: metadataRecord });
199
253
  }
200
- return [...r.values()];
201
- }, e);
202
- }
203
- async bulkSet(t, e, r = "rw") {
204
- let n;
205
- if (t && (n = t.findIndex((a) => !a)) >= 0)
206
- throw new Error(`Invalid metadata record. Parameter: "metadataRecords". Index: ${n}.`);
207
- if (e && (n = e.findIndex((a) => !a || !a.key || a.value === void 0)) >= 0)
208
- throw new Error(`Invalid data record. Parameter: "dataRecords". Index: ${n}.`);
209
- if (!t && !e)
254
+ }
255
+ const dataRecords = await this._db.data.bulkGet(keys);
256
+ for (const dataRecord of dataRecords) {
257
+ if (dataRecord) {
258
+ const item = map.get(dataRecord.key);
259
+ if (item) {
260
+ item.data = dataRecord;
261
+ }
262
+ }
263
+ }
264
+ return [...map.values()];
265
+ }, transactionMode);
266
+ }
267
+ async bulkSet(metadataRecords, dataRecords, transactionMode = "rw") {
268
+ let index;
269
+ if (metadataRecords && (index = metadataRecords.findIndex((x) => !x)) >= 0) {
270
+ throw new Error(`Invalid metadata record. Parameter: "metadataRecords". Index: ${index}.`);
271
+ }
272
+ if (dataRecords && (index = dataRecords.findIndex((x) => !x || !x.key || x.value === void 0)) >= 0) {
273
+ throw new Error(`Invalid data record. Parameter: "dataRecords". Index: ${index}.`);
274
+ }
275
+ if (!metadataRecords && !dataRecords) {
210
276
  throw new Error("No data provided.");
211
- for (const a of t)
212
- a.key || (a.key = f());
277
+ }
278
+ for (const metadataRecord of metadataRecords) {
279
+ if (!metadataRecord.key) {
280
+ metadataRecord.key = v4();
281
+ }
282
+ }
213
283
  return this.exec(async () => {
214
- let a;
215
- return t && (a = await this._db.metadata.bulkPut(t, void 0, { allKeys: !0 })), e && await this._db.data.bulkPut(e, void 0, { allKeys: !0 }), a;
216
- }, r);
284
+ let mKeys;
285
+ if (metadataRecords) {
286
+ mKeys = await this._db.metadata.bulkPut(metadataRecords, void 0, { allKeys: true });
287
+ }
288
+ if (dataRecords) {
289
+ await this._db.data.bulkPut(dataRecords, void 0, { allKeys: true });
290
+ }
291
+ return mKeys;
292
+ }, transactionMode);
217
293
  }
218
- orderBy(t, e, r = !1) {
219
- let n = this._db.metadata.orderBy(t);
220
- return e === "desc" && (n = n.reverse()), r && (n = n.distinct()), new d(n);
294
+ orderBy(field, direction, distinct = false) {
295
+ let metadata = this._db.metadata.orderBy(field);
296
+ if (direction === "desc") {
297
+ metadata = metadata.reverse();
298
+ }
299
+ if (distinct) {
300
+ metadata = metadata.distinct();
301
+ }
302
+ return new StoreCollection(metadata);
221
303
  }
222
- distinct(t) {
223
- const e = this._db.metadata.orderBy(t).distinct();
224
- return new d(e);
304
+ distinct(field) {
305
+ const metadata = this._db.metadata.orderBy(field).distinct();
306
+ return new StoreCollection(metadata);
225
307
  }
226
308
  query() {
227
- return new d(this._db.metadata.toCollection());
309
+ return new StoreCollection(this._db.metadata.toCollection());
228
310
  }
229
311
  // filter
230
- where(t) {
231
- const e = this._db.metadata.where(t);
232
- return m(e, (r) => new d(r));
312
+ where(field) {
313
+ const source = this._db.metadata.where(field);
314
+ return createWhereFilter(source, (c) => new StoreCollection(c));
233
315
  }
234
- }
316
+ };
317
+ __name(_DataStore, "DataStore");
318
+ let DataStore = _DataStore;
235
319
  export {
236
- k as DataStore
320
+ DataStore
237
321
  };
238
322
  //# sourceMappingURL=dataStore.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dataStore.es.js","sources":["D:/Src/my/actdim/public/utico/src/store/dataStore.ts"],"sourcesContent":null,"names":["reverseMapValues","map","keys","i","StoreCollection","metadata","orderBy","orderDirection","transactionMode","db","populate","metadataRecords","metadataRecord","dataRecords","dataRecord","item","field","direction","filter","n","distinct","callback","keyOf","r","metadataCallback","dataCallback","mc","createWhereFilter","source","factory","methodCache","target","prop","receiver","value","targetFn","thisArg","args","DataStore","name","metadataFieldDefTemplate","StoreDb","action","key","uuid","result","existing","metadataChanges","valueChanges","metadataChangeSets","dataChangeSets","index","x","cm","mKeys","c"],"mappings":"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"}
1
+ {"version":3,"file":"dataStore.es.js","sources":["D:/Src/my/actdim/public/utico/src/store/dataStore.ts"],"sourcesContent":["import * as Dexie from \"dexie\";\r\nimport { v4 as uuid } from \"uuid\";\r\nimport { keyOf } from \"@/typeUtils\";\r\nimport { KeyPathValueMap } from \"@/typeCore\";\r\nimport {\r\n ChangeSet,\r\n DataRecord,\r\n FieldDefTemplate,\r\n IndexableType,\r\n IStoreCollection,\r\n WhereFilter,\r\n MetadataRecord,\r\n OrderDirection,\r\n StoreBase,\r\n StoreItem,\r\n TransactionMode\r\n} from \"./storeContracts\";\r\nimport { StoreDb } from \"@/store/storeDb\";\r\n\r\nfunction* reverseMapValues<K, V>(map: Map<K, V>) {\r\n const keys = [...map.keys()];\r\n for (let i = keys.length - 1; i >= 0; i--) {\r\n yield map.get(keys[i])!;\r\n }\r\n}\r\n\r\nclass StoreCollection<T extends MetadataRecord = MetadataRecord, TValue = unknown> implements IStoreCollection<T, TValue> {\r\n private _metadata: Dexie.Collection<T>;\r\n\r\n constructor(\r\n metadata: Dexie.Collection<T>\r\n ) {\r\n this._metadata = metadata;\r\n }\r\n\r\n private get db() {\r\n return this._metadata.db as StoreDb<T>;\r\n }\r\n\r\n async toArray(orderBy?: keyof T, orderDirection?: OrderDirection, transactionMode: TransactionMode = \"r\"): Promise<StoreItem<T, TValue>[]> {\r\n\r\n const db = this.db;\r\n\r\n // db.data.where(keyOf<DataRecord>(\"key\")).equals(key).first();\r\n\r\n return db.exec(async () => {\r\n const map = new Map<string, StoreItem<T, TValue>>();\r\n let populate: (callback: (metadataRecord: T) => void) => void | PromiseLike<void> = this._metadata.each.bind(this._metadata);\r\n if (orderBy && orderDirection) {\r\n const metadataRecords = await this._metadata.sortBy(orderBy as string);\r\n populate = metadataRecords.forEach.bind(metadataRecords);\r\n }\r\n await populate(metadataRecord => {\r\n map.set(metadataRecord.key, {\r\n metadata: metadataRecord,\r\n // data: undefined\r\n });\r\n });\r\n const keys = [...map.keys()];\r\n const dataRecords = await db.data.bulkGet(keys);\r\n for (const dataRecord of dataRecords) {\r\n if (dataRecord) {\r\n const item = map.get(dataRecord.key);\r\n if (item) {\r\n item.data = dataRecord as DataRecord<TValue>;\r\n }\r\n }\r\n }\r\n // abandoned/orphaned entries:\r\n // Object.defineProperty(storeItem, keyOf<StoreItem>(\"data\"), {\r\n // writable: false,\r\n // get: function () {\r\n // throw new Error(\"Not found\");\r\n // }\r\n // });\r\n // Array.from(map.values()) can be slower!\r\n if (orderDirection === \"desc\") {\r\n return [...reverseMapValues(map)];\r\n }\r\n return [...map.values()];\r\n }, transactionMode);\r\n }\r\n\r\n orderBy(field: keyof T, direction: OrderDirection, transactionMode: TransactionMode = \"r\") {\r\n return this.toArray(field, direction, transactionMode);\r\n }\r\n\r\n filter(filter: ((x: T) => boolean)): IStoreCollection<T, TValue> {\r\n const metadata = this._metadata.filter(filter);\r\n return new StoreCollection<T, TValue>(metadata);\r\n }\r\n\r\n limit(n: number): IStoreCollection<T, TValue> {\r\n return new StoreCollection<T, TValue>(this._metadata.limit(n));\r\n }\r\n\r\n offset(n: number) {\r\n return new StoreCollection<T, TValue>(this._metadata.offset(n));\r\n }\r\n\r\n getKeys() {\r\n return this._metadata.primaryKeys() as Promise<T[\"key\"][]>;\r\n }\r\n\r\n getCount() {\r\n return this._metadata.count();\r\n }\r\n\r\n getFilterKeys(distinct: boolean) {\r\n if (distinct) {\r\n return this._metadata.uniqueKeys();\r\n }\r\n return this._metadata.keys();\r\n }\r\n\r\n modifyMetadata(callback: (metadataRecord: T) => void, transactionMode: TransactionMode = \"rw\") {\r\n if (!callback) {\r\n throw new Error(\"callback cannot be undefined.\");\r\n }\r\n return this.db.exec(async () => {\r\n return this._metadata.modify(r => {\r\n callback(r);\r\n });\r\n }, transactionMode);\r\n }\r\n\r\n modifyData(callback: (dataRecord: DataRecord) => void, transactionMode: TransactionMode = \"rw\") {\r\n if (!callback) {\r\n throw new Error(\"callback cannot be undefined.\");\r\n }\r\n return this.db.exec(async () => {\r\n const keys = await this.getKeys();\r\n return await this.db.data.where(keyOf<DataRecord>(\"key\")).anyOf(keys).modify(r => {\r\n callback(r);\r\n });\r\n }, transactionMode);\r\n }\r\n\r\n modify(metadataCallback: (metadataRecord: T) => void, dataCallback: (dataRecord: DataRecord) => void, transactionMode: TransactionMode = \"rw\") {\r\n return this.db.exec(async () => {\r\n const keys: string[] = [];\r\n let mc: number, dc: number;\r\n if (metadataCallback) {\r\n mc = await this._metadata.modify(r => {\r\n keys.push(r.key);\r\n metadataCallback(r);\r\n });\r\n }\r\n if (dataCallback) {\r\n dc = await this.db.data.where(keyOf<DataRecord>(\"key\")).anyOf(keys).modify(r => {\r\n dataCallback(r);\r\n });\r\n }\r\n return mc;\r\n }, transactionMode);\r\n }\r\n}\r\n\r\nfunction createWhereFilter<T extends IndexableType, TResult = unknown>(source: Dexie.WhereClause<unknown, unknown>, factory: (source: Dexie.Collection) => TResult) {\r\n const methodCache = new WeakMap<Function, Function>();\r\n return new Proxy(source as any, {\r\n get(target, prop, receiver) {\r\n const value = Reflect.get(target, prop, receiver);\r\n if (typeof value === \"function\") {\r\n if (!methodCache.has(value)) {\r\n methodCache.set(value, new Proxy(value, {\r\n apply(targetFn, thisArg, args) {\r\n return factory(Reflect.apply(targetFn, thisArg, args));\r\n },\r\n }));\r\n }\r\n return methodCache.get(value);\r\n }\r\n return value;\r\n },\r\n }) as WhereFilter<T, TResult>;\r\n}\r\n\r\nexport class DataStore<T extends MetadataRecord> implements StoreBase {\r\n\r\n private _db: StoreDb<T> | undefined;\r\n\r\n constructor(name: string, metadataFieldDefTemplate: keyof T extends string ? FieldDefTemplate<keyof T> : never) {\r\n if (!name) {\r\n throw new Error(\"Name cannot be empty.\");\r\n }\r\n this._db = new StoreDb<T>(name, metadataFieldDefTemplate);\r\n }\r\n\r\n [Symbol.dispose]() {\r\n this._db?.[Symbol.dispose]();\r\n this._db = null;\r\n }\r\n\r\n open() {\r\n return this._db.open()\r\n }\r\n\r\n exec<T>(\r\n action: () => Promise<T>, // scope\r\n transactionMode: TransactionMode = \"r!\") {\r\n return this._db.exec(action, transactionMode);\r\n }\r\n\r\n getKeys() {\r\n return this._db.getKeys();\r\n // return this.query().getKeys();\r\n }\r\n\r\n contains(key: string, transactionMode: TransactionMode = \"r\") {\r\n return this._db.contains(key, transactionMode);\r\n }\r\n\r\n delete(key: string, transactionMode: TransactionMode = \"rw\") {\r\n return this._db.deleteOne(key, transactionMode);\r\n }\r\n\r\n // deleteMany\r\n bulkDelete(keys: string[], transactionMode: TransactionMode = \"rw\") {\r\n return this._db.bulkDelete(keys, transactionMode);\r\n }\r\n\r\n // clearAll\r\n clear(transactionMode: TransactionMode = \"rw\") {\r\n return this._db.clear(transactionMode);\r\n }\r\n\r\n private async getInternal<TValue>(key: string): Promise<StoreItem<T, TValue> | undefined> {\r\n const metadataRecord = await this._db.metadata.get(key);\r\n if (!metadataRecord) return undefined;\r\n const dataRecord = await this._db.data.get(key);\r\n return { metadata: metadataRecord, data: dataRecord } as StoreItem<T, TValue>;\r\n }\r\n\r\n private async setInternal<TValue>(metadataRecord: T, value: TValue): Promise<string> {\r\n if (!metadataRecord.key) metadataRecord.key = uuid();\r\n const result = await this._db.metadata.put(metadataRecord);\r\n await this._db.data.put({ key: metadataRecord.key, value });\r\n return result;\r\n }\r\n\r\n get<TValue = unknown>(key: string, transactionMode: TransactionMode = \"r?\"): Promise<StoreItem<T, TValue> | undefined> {\r\n return this.exec(() => this.getInternal<TValue>(key), transactionMode);\r\n }\r\n\r\n // upsert\r\n async set<TValue = unknown>(metadataRecord: T, value: TValue, transactionMode: TransactionMode = \"rw\") {\r\n if (value === undefined) {\r\n throw new Error('Invalid parameter: \"value\".');\r\n }\r\n return this.exec(() => this.setInternal(metadataRecord, value), transactionMode);\r\n }\r\n\r\n // getOrAdd\r\n async getOrSet<TValue = unknown>(metadataRecord: T, factory: (metadataRecord: T) => TValue, transactionMode: TransactionMode = \"rw\") {\r\n if (!metadataRecord.key) {\r\n throw new Error(`Key cannot be empty. Parameter: \"metadataRecord\".`);\r\n }\r\n return this.exec(async () => {\r\n const existing = await this.getInternal<TValue>(metadataRecord.key);\r\n if (existing) return existing;\r\n await this.setInternal(metadataRecord, factory(metadataRecord));\r\n return this.getInternal<TValue>(metadataRecord.key);\r\n }, transactionMode);\r\n }\r\n\r\n async update<TValue = unknown>(key: string, metadataChanges: KeyPathValueMap<T, false>, valueChanges?: KeyPathValueMap<TValue, false>, transactionMode: TransactionMode = \"rw\") {\r\n if (!key) {\r\n throw new Error('Key cannot be empty. Parameter: \"key\".');\r\n }\r\n if (!metadataChanges && !valueChanges) {\r\n throw new Error(\"No changes provided.\");\r\n }\r\n return this.exec(async () => {\r\n let mc: number, dc: number;\r\n if (metadataChanges) {\r\n mc = await this._db.metadata.update(key, metadataChanges as any);\r\n }\r\n if (valueChanges) {\r\n dc = await this._db.data.update(key, valueChanges);\r\n }\r\n return mc;\r\n }, transactionMode);\r\n }\r\n\r\n async bulkUpdate(metadataChangeSets: ChangeSet<T>[], dataChangeSets?: ChangeSet<DataRecord>[], transactionMode: TransactionMode = \"rw\") {\r\n let index: number;\r\n if (metadataChangeSets && (index = metadataChangeSets.findIndex((x) => !x.key)) >= 0) {\r\n throw new Error(`Key cannot be empty. Parameter: \"metadataChangeSets\". Invalid item index: ${index}.`);\r\n }\r\n if (dataChangeSets && (index = dataChangeSets.findIndex((x) => !x.key)) >= 0) {\r\n throw new Error(`Key cannot be empty. Parameter: \"valueChangeSets\". Invalid item index: ${index}.`);\r\n }\r\n return this.exec(async () => {\r\n let cm: number, dc: number;\r\n if (metadataChangeSets) {\r\n cm = await this._db.metadata.bulkUpdate(metadataChangeSets as any);\r\n }\r\n if (dataChangeSets) {\r\n dc = await this._db.data.bulkUpdate(dataChangeSets);\r\n }\r\n return cm;\r\n }, transactionMode);\r\n }\r\n\r\n // getMany\r\n bulkGet<TValue = unknown>(keys: string[], transactionMode: TransactionMode = \"r\") {\r\n return this.exec(async () => {\r\n const map = new Map<string, StoreItem<T, TValue>>();\r\n const metadataRecords = await this._db.metadata.bulkGet(keys);\r\n for (const metadataRecord of metadataRecords) {\r\n if (metadataRecord) {\r\n map.set(metadataRecord.key, { metadata: metadataRecord });\r\n }\r\n }\r\n const dataRecords = await this._db.data.bulkGet(keys);\r\n for (const dataRecord of dataRecords) {\r\n if (dataRecord) {\r\n const item = map.get(dataRecord.key);\r\n if (item) {\r\n item.data = dataRecord as DataRecord<TValue>;\r\n }\r\n }\r\n }\r\n return [...map.values()];\r\n }, transactionMode);\r\n }\r\n\r\n async bulkSet<TValue = unknown>(metadataRecords: T[], dataRecords: DataRecord<TValue>[], transactionMode: TransactionMode = \"rw\") {\r\n let index: number;\r\n if (metadataRecords && (index = metadataRecords.findIndex(x => !x)) >= 0) {\r\n throw new Error(`Invalid metadata record. Parameter: \"metadataRecords\". Index: ${index}.`);\r\n }\r\n if (dataRecords && (index = dataRecords.findIndex(x => (!x || !x.key || x.value === undefined))) >= 0) {\r\n throw new Error(`Invalid data record. Parameter: \"dataRecords\". Index: ${index}.`);\r\n }\r\n if (!metadataRecords && !dataRecords) {\r\n throw new Error(\"No data provided.\");\r\n }\r\n for (const metadataRecord of metadataRecords) {\r\n if (!metadataRecord.key) {\r\n metadataRecord.key = uuid();\r\n }\r\n }\r\n return this.exec(async () => {\r\n let mKeys: string[], dKeys: string[];\r\n if (metadataRecords) {\r\n mKeys = await this._db.metadata.bulkPut(metadataRecords, undefined, { allKeys: true });\r\n }\r\n if (dataRecords) {\r\n dKeys = await this._db.data.bulkPut(dataRecords, undefined, { allKeys: true });\r\n }\r\n return mKeys;\r\n }, transactionMode);\r\n }\r\n\r\n orderBy(field: keyof T, direction: OrderDirection, distinct = false) {\r\n let metadata = this._db.metadata.orderBy(field as string);\r\n if (direction === \"desc\") {\r\n metadata = metadata.reverse();\r\n }\r\n if (distinct) {\r\n metadata = metadata.distinct();\r\n }\r\n return new StoreCollection(metadata);\r\n }\r\n\r\n distinct(field: keyof T) {\r\n const metadata = this._db.metadata.orderBy(field as string).distinct();\r\n return new StoreCollection(metadata);\r\n }\r\n\r\n query<TValue = unknown>() {\r\n return new StoreCollection<T, TValue>(this._db.metadata.toCollection());\r\n }\r\n\r\n // filter\r\n where<K extends keyof T, TValue = unknown>(field: K extends string ? K | K[] : never) {\r\n const source = this._db.metadata.where(field);\r\n return createWhereFilter<T[K] extends IndexableType ? T[K] : never, IStoreCollection<T, TValue>>(source, c => new StoreCollection<T, TValue>(c));\r\n }\r\n}\r\n\r\n// and(filter: (x: T) => boolean): Collection<T, TKey, TInsertType>;\r\n// clone(props?: Object): Collection<T, TKey, TInsertType>;\r\n// count<R>(thenShortcut: ThenShortcut<number, R>): PromiseExtended<R>;\r\n// distinct(): Collection<T, TKey, TInsertType>;\r\n// each(callback: (obj: T, cursor: {\r\n// key: IndexableType;\r\n// primaryKey: TKey;\r\n// }) => any): PromiseExtended<void>;\r\n// eachKey(callback: (key: IndexableType, cursor: {\r\n// key: IndexableType;\r\n// primaryKey: TKey;\r\n// }) => any): PromiseExtended<void>;\r\n// eachPrimaryKey(callback: (key: TKey, cursor: {\r\n// key: IndexableType;\r\n// primaryKey: TKey;\r\n// }) => any): PromiseExtended<void>;\r\n// eachUniqueKey(callback: (key: IndexableType, cursor: {\r\n// key: IndexableType;\r\n// primaryKey: TKey;\r\n// }) => any): PromiseExtended<void>;\r\n// filter<S extends T>(filter: (x: T) => x is S): Collection<S, TKey>;\r\n// filter(filter: (x: T) => boolean): Collection<T, TKey, TInsertType>;\r\n// first(): PromiseExtended<T | undefined>;\r\n// first<R>(thenShortcut: ThenShortcut<T | undefined, R>): PromiseExtended<R>;\r\n// firstKey(): PromiseExtended<IndexableType | undefined>;\r\n// keys<R>(thenShortcut: ThenShortcut<IndexableTypeArray, R>): PromiseExtended<R>;\r\n// primaryKeys(): PromiseExtended<TKey[]>;\r\n// primaryKeys<R>(thenShortcut: ThenShortcut<TKey[], R>): PromiseExtended<R>;\r\n// last(): PromiseExtended<T | undefined>;\r\n// last<R>(thenShortcut: ThenShortcut<T | undefined, R>): PromiseExtended<R>;\r\n// lastKey(): PromiseExtended<IndexableType | undefined>;\r\n// or(indexOrPrimayKey: string): WhereClause<T, TKey, TInsertType>;\r\n// raw(): Collection<T, TKey, TInsertType>;\r\n// sortBy<R>(keyPath: string, thenShortcut: ThenShortcut<T[], R>): PromiseExtended<R>;\r\n// toArray(): PromiseExtended<Array<T>>;\r\n// toArray<R>(thenShortcut: ThenShortcut<T[], R>): PromiseExtended<R>;\r\n// uniqueKeys(): PromiseExtended<IndexableTypeArray>;\r\n// uniqueKeys<R>(thenShortcut: ThenShortcut<IndexableTypeArray, R>): PromiseExtended<R>;\r\n// until(filter: (value: T) => boolean, includeStopEntry?: boolean): Collection<T, TKey, TInsertType>;\r\n// // Mutating methods\r\n// delete(): PromiseExtended<number>;\r\n// modify(changeCallback: (obj: T, ctx: {\r\n// value: TInsertType;\r\n// }) => void | boolean): PromiseExtended<number>;\r\n// modify(changes: UpdateSpec<TInsertType>): PromiseExtended<number>;"],"names":["uuid"],"mappings":"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"}
@@ -1,26 +1,32 @@
1
- import { DataStore as a } from "./dataStore.es.js";
2
- import { StoreDb as o } from "./storeDb.es.js";
3
- const n = {
4
- useEncryption: !1
5
- }, i = ["&key", "createdAt", "updatedAt", "tags"];
6
- class r extends a {
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ import { DataStore } from "./dataStore.es.js";
4
+ import { StoreDb } from "./storeDb.es.js";
5
+ const defaultPersistentStoreOptions = {
6
+ useEncryption: false
7
+ };
8
+ const defaultMetadataFieldDefTemplate = ["&key", "createdAt", "updatedAt", "tags"];
9
+ const _PersistentStore = class _PersistentStore extends DataStore {
7
10
  _options;
8
11
  // TODO: support
9
- static delete(t) {
10
- return o.delete(t);
12
+ static delete(name) {
13
+ return StoreDb.delete(name);
11
14
  }
12
- static exists(t) {
13
- return o.exists(t);
15
+ static exists(name) {
16
+ return StoreDb.exists(name);
14
17
  }
15
- static open(t, e, s) {
16
- return o.open(t, () => new r(t, e, s));
18
+ static open(name, metadataFieldDefTemplate, options) {
19
+ return StoreDb.open(name, () => new _PersistentStore(name, metadataFieldDefTemplate, options));
17
20
  }
18
- constructor(t, e, s) {
19
- super(t, e ?? i), this._options = { ...s, ...n };
21
+ constructor(name, metadataFieldDefTemplate, options) {
22
+ super(name, metadataFieldDefTemplate ?? defaultMetadataFieldDefTemplate);
23
+ this._options = { ...options, ...defaultPersistentStoreOptions };
20
24
  }
21
- }
25
+ };
26
+ __name(_PersistentStore, "PersistentStore");
27
+ let PersistentStore = _PersistentStore;
22
28
  export {
23
- r as PersistentStore,
24
- i as defaultMetadataFieldDefTemplate
29
+ PersistentStore,
30
+ defaultMetadataFieldDefTemplate
25
31
  };
26
32
  //# sourceMappingURL=persistentStore.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"persistentStore.es.js","sources":["D:/Src/my/actdim/public/utico/src/store/persistentStore.ts"],"sourcesContent":null,"names":["defaultPersistentStoreOptions","defaultMetadataFieldDefTemplate","PersistentStore","DataStore","name","StoreDb","metadataFieldDefTemplate","options"],"mappings":";;AAWA,MAAMA,IAAgC;AAAA,EAClC,eAAe;AACnB,GAGaC,IAAkC,CAAC,QAAQ,aAAa,aAAa,MAAM;AAEjF,MAAMC,UAAiFC,EAAwE;AAAA,EAE1J;AAAA;AAAA,EAER,OAAO,OAAOC,GAAc;AACxB,WAAOC,EAAQ,OAAOD,CAAI;AAAA,EAC9B;AAAA,EAEA,OAAO,OAAOA,GAAc;AACxB,WAAOC,EAAQ,OAAOD,CAAI;AAAA,EAC9B;AAAA,EAEA,OAAO,KAA8DA,GAAcE,GAAmHC,GAAkC;AACpO,WAAOF,EAAQ,KAAKD,GAAM,MAAM,IAAIF,EAAgBE,GAAME,GAA0BC,CAAO,CAAC;AAAA,EAChG;AAAA,EAEA,YAAYH,GAAcE,GAAmHC,GAAkC;AAC3K,UAAMH,GAAOE,KAA4BL,CAA0H,GACnK,KAAK,WAAW,EAAE,GAAGM,GAAS,GAAGP,EAAA;AAAA,EACrC;AACJ;"}
1
+ {"version":3,"file":"persistentStore.es.js","sources":["D:/Src/my/actdim/public/utico/src/store/persistentStore.ts"],"sourcesContent":["import { DataStore } from \"./dataStore\";\r\nimport { FieldDef, FieldDefTemplate, IPersistentStore, MetadataRecord } from \"./storeContracts\";\r\nimport { StoreDb } from \"./storeDb\";\r\n\r\n// TODO: implement real encryption:\r\n// https://stackoverflow.com/questions/18279141/javascript-string-encryption-and-decryption\r\n\r\nexport type PersistentStoreOptions = {\r\n useEncryption: boolean;\r\n};\r\n\r\nconst defaultPersistentStoreOptions = {\r\n useEncryption: false\r\n} satisfies PersistentStoreOptions;\r\n\r\n// (registry/catalog)fieldNames\r\nexport const defaultMetadataFieldDefTemplate = [\"&key\", \"createdAt\", \"updatedAt\", \"tags\"] satisfies FieldDefTemplate<keyof MetadataRecord>;\r\n// T extends MetadataRecord\r\nexport class PersistentStore<TMetadataRecord extends MetadataRecord = MetadataRecord> extends DataStore<TMetadataRecord> implements IPersistentStore<TMetadataRecord> {\r\n\r\n private _options: PersistentStoreOptions; // TODO: support\r\n\r\n static delete(name: string) {\r\n return StoreDb.delete(name);\r\n }\r\n\r\n static exists(name: string) {\r\n return StoreDb.exists(name);\r\n }\r\n\r\n static open<TMetadataRecord extends MetadataRecord = MetadataRecord>(name: string, metadataFieldDefTemplate?: keyof TMetadataRecord extends string ? FieldDefTemplate<keyof TMetadataRecord> : never, options?: PersistentStoreOptions) {\r\n return StoreDb.open(name, () => new PersistentStore(name, metadataFieldDefTemplate, options));\r\n }\r\n\r\n constructor(name: string, metadataFieldDefTemplate?: keyof TMetadataRecord extends string ? FieldDefTemplate<keyof TMetadataRecord> : never, options?: PersistentStoreOptions) {\r\n super(name, (metadataFieldDefTemplate ?? defaultMetadataFieldDefTemplate) as keyof TMetadataRecord extends string ? FieldDefTemplate<keyof TMetadataRecord> : never);\r\n this._options = { ...options, ...defaultPersistentStoreOptions };\r\n }\r\n}\r\n"],"names":[],"mappings":";;;;AAWA,MAAM,gCAAgC;AAAA,EAClC,eAAe;AACnB;AAGO,MAAM,kCAAkC,CAAC,QAAQ,aAAa,aAAa,MAAM;AAEjF,MAAM,mBAAN,MAAM,yBAAiF,UAAwE;AAAA,EAE1J;AAAA;AAAA,EAER,OAAO,OAAO,MAAc;AACxB,WAAO,QAAQ,OAAO,IAAI;AAAA,EAC9B;AAAA,EAEA,OAAO,OAAO,MAAc;AACxB,WAAO,QAAQ,OAAO,IAAI;AAAA,EAC9B;AAAA,EAEA,OAAO,KAA8D,MAAc,0BAAmH,SAAkC;AACpO,WAAO,QAAQ,KAAK,MAAM,MAAM,IAAI,iBAAgB,MAAM,0BAA0B,OAAO,CAAC;AAAA,EAChG;AAAA,EAEA,YAAY,MAAc,0BAAmH,SAAkC;AAC3K,UAAM,MAAO,4BAA4B,+BAA0H;AACnK,SAAK,WAAW,EAAE,GAAG,SAAS,GAAG,8BAAA;AAAA,EACrC;AACJ;AApBsK;AAA/J,IAAM,kBAAN;"}