@actdim/utico 1.1.1 → 1.1.2
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.
- package/dist/cache/cacheContracts.d.ts +11 -11
- package/dist/cache/cacheContracts.d.ts.map +1 -1
- package/dist/cache/cacheContracts.es.js.map +1 -1
- package/dist/cache/persistentCache.d.ts +17 -17
- package/dist/cache/persistentCache.d.ts.map +1 -1
- package/dist/cache/persistentCache.es.js +48 -48
- package/dist/cache/persistentCache.es.js.map +1 -1
- package/dist/gfx/canvasUtils.d.ts +4 -5
- package/dist/gfx/canvasUtils.d.ts.map +1 -1
- package/dist/gfx/canvasUtils.es.js +77 -84
- package/dist/gfx/canvasUtils.es.js.map +1 -1
- package/dist/metadata.d.ts +1 -0
- package/dist/metadata.d.ts.map +1 -1
- package/dist/metadata.es.js +20 -14
- package/dist/metadata.es.js.map +1 -1
- package/dist/store/dataStore.d.ts +23 -23
- package/dist/store/dataStore.d.ts.map +1 -1
- package/dist/store/dataStore.es.js +120 -120
- package/dist/store/dataStore.es.js.map +1 -1
- package/dist/store/persistentStore.d.ts +3 -3
- package/dist/store/persistentStore.d.ts.map +1 -1
- package/dist/store/persistentStore.es.js +12 -12
- package/dist/store/persistentStore.es.js.map +1 -1
- package/dist/store/storeContracts.d.ts +20 -20
- package/dist/store/storeContracts.d.ts.map +1 -1
- package/dist/store/storeContracts.es.js.map +1 -1
- package/dist/store/storeDb.es.js +33 -33
- package/dist/store/storeDb.es.js.map +1 -1
- package/dist/utils.d.ts +4 -3
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.es.js +70 -61
- package/dist/utils.es.js.map +1 -1
- package/package.json +6 -4
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { v4 as
|
|
1
|
+
import { v4 as y } from "uuid";
|
|
2
2
|
import { keyOf as h } from "../typeUtils.es.js";
|
|
3
3
|
import { StoreDb as f } from "./storeDb.es.js";
|
|
4
|
-
function* w(
|
|
5
|
-
const t = [...
|
|
4
|
+
function* w(o) {
|
|
5
|
+
const t = [...o.keys()];
|
|
6
6
|
for (let e = t.length - 1; e >= 0; e--)
|
|
7
|
-
yield
|
|
7
|
+
yield o.get(t[e]);
|
|
8
8
|
}
|
|
9
|
-
class
|
|
9
|
+
class d {
|
|
10
10
|
_metadata;
|
|
11
11
|
constructor(t) {
|
|
12
12
|
this._metadata = t;
|
|
@@ -14,219 +14,219 @@ class c {
|
|
|
14
14
|
get db() {
|
|
15
15
|
return this._metadata.db;
|
|
16
16
|
}
|
|
17
|
-
async
|
|
17
|
+
async toArray(t, e, i = "r") {
|
|
18
18
|
const r = this.db;
|
|
19
|
-
return r.
|
|
20
|
-
const
|
|
21
|
-
let
|
|
22
|
-
t && e && (
|
|
23
|
-
|
|
24
|
-
metadata:
|
|
19
|
+
return r.exec(async () => {
|
|
20
|
+
const a = /* @__PURE__ */ new Map();
|
|
21
|
+
let n = this._metadata.each;
|
|
22
|
+
t && e && (n = (await this._metadata.sortBy(t)).forEach), n((s) => {
|
|
23
|
+
a.set(s.key, {
|
|
24
|
+
metadata: s
|
|
25
25
|
// data: undefined
|
|
26
26
|
});
|
|
27
27
|
});
|
|
28
|
-
const
|
|
29
|
-
for (const
|
|
30
|
-
|
|
31
|
-
return e === "desc" ? [...w(
|
|
32
|
-
},
|
|
28
|
+
const u = [...a.keys()], c = await r.data.bulkGet(u);
|
|
29
|
+
for (const s of c)
|
|
30
|
+
a.get(s.key).data = s;
|
|
31
|
+
return e === "desc" ? [...w(a)] : [...a.values()];
|
|
32
|
+
}, i);
|
|
33
33
|
}
|
|
34
|
-
|
|
35
|
-
return this.
|
|
34
|
+
orderBy(t, e, i = "r") {
|
|
35
|
+
return this.toArray(t, e, i);
|
|
36
36
|
}
|
|
37
37
|
filter(t) {
|
|
38
38
|
const e = this._metadata.filter(t);
|
|
39
|
-
return new
|
|
39
|
+
return new d(e);
|
|
40
40
|
}
|
|
41
41
|
limit(t) {
|
|
42
|
-
return new
|
|
42
|
+
return new d(this._metadata.limit(t));
|
|
43
43
|
}
|
|
44
44
|
offset(t) {
|
|
45
|
-
return new
|
|
45
|
+
return new d(this._metadata.offset(t));
|
|
46
46
|
}
|
|
47
|
-
|
|
47
|
+
getKeys() {
|
|
48
48
|
return this._metadata.primaryKeys();
|
|
49
49
|
}
|
|
50
|
-
|
|
50
|
+
getCount() {
|
|
51
51
|
return this._metadata.count();
|
|
52
52
|
}
|
|
53
|
-
|
|
53
|
+
getFilterKeys(t) {
|
|
54
54
|
return t ? this._metadata.uniqueKeys : this._metadata.keys;
|
|
55
55
|
}
|
|
56
|
-
|
|
56
|
+
modifyMetadata(t, e = "rw") {
|
|
57
57
|
if (!t)
|
|
58
58
|
throw new Error("callback cannot be undefined.");
|
|
59
|
-
return this.db.
|
|
60
|
-
t(
|
|
59
|
+
return this.db.exec(async () => this._metadata.modify((i) => {
|
|
60
|
+
t(i);
|
|
61
61
|
}), e);
|
|
62
62
|
}
|
|
63
|
-
|
|
63
|
+
modifyData(t, e = "rw") {
|
|
64
64
|
if (!t)
|
|
65
65
|
throw new Error("callback cannot be undefined.");
|
|
66
|
-
return this.db.
|
|
67
|
-
const
|
|
68
|
-
return await this.db.data.where(h("key")).anyOf(
|
|
66
|
+
return this.db.exec(async () => {
|
|
67
|
+
const i = await this.getKeys();
|
|
68
|
+
return await this.db.data.where(h("key")).anyOf(i).modify((r) => {
|
|
69
69
|
t(r.value);
|
|
70
70
|
});
|
|
71
71
|
}, e);
|
|
72
72
|
}
|
|
73
|
-
|
|
74
|
-
return this.db.
|
|
73
|
+
modify(t, e, i = "rw") {
|
|
74
|
+
return this.db.exec(async () => {
|
|
75
75
|
const r = [];
|
|
76
|
-
let
|
|
77
|
-
return t && (
|
|
78
|
-
r.push(
|
|
79
|
-
})), e && await this.db.data.where(h("key")).anyOf(r).modify((
|
|
80
|
-
e(
|
|
81
|
-
}),
|
|
82
|
-
},
|
|
76
|
+
let a;
|
|
77
|
+
return t && (a = await this._metadata.modify((n) => {
|
|
78
|
+
r.push(n.key), t(n);
|
|
79
|
+
})), e && await this.db.data.where(h("key")).anyOf(r).modify((n) => {
|
|
80
|
+
e(n.value);
|
|
81
|
+
}), a;
|
|
82
|
+
}, i);
|
|
83
83
|
}
|
|
84
84
|
}
|
|
85
|
-
function m(
|
|
85
|
+
function m(o, t) {
|
|
86
86
|
const e = /* @__PURE__ */ new WeakMap();
|
|
87
|
-
return new Proxy(
|
|
88
|
-
get(
|
|
89
|
-
const
|
|
90
|
-
return typeof
|
|
91
|
-
apply(
|
|
92
|
-
return t(Reflect.apply(
|
|
87
|
+
return new Proxy(o, {
|
|
88
|
+
get(i, r, a) {
|
|
89
|
+
const n = Reflect.get(i, r, a);
|
|
90
|
+
return typeof n == "function" ? (e.has(n) || e.set(n, new Proxy(n, {
|
|
91
|
+
apply(u, c, s) {
|
|
92
|
+
return t(Reflect.apply(u, c, s));
|
|
93
93
|
}
|
|
94
|
-
})), e.get(
|
|
94
|
+
})), e.get(n)) : n;
|
|
95
95
|
}
|
|
96
96
|
});
|
|
97
97
|
}
|
|
98
|
-
class
|
|
98
|
+
class _ {
|
|
99
99
|
_db;
|
|
100
100
|
constructor(t, e) {
|
|
101
101
|
if (!t)
|
|
102
102
|
throw new Error("Name cannot be empty.");
|
|
103
103
|
this._db = new f(t, e);
|
|
104
104
|
}
|
|
105
|
-
dispose() {
|
|
106
|
-
this._db?.dispose(), this._db = null;
|
|
105
|
+
[Symbol.dispose]() {
|
|
106
|
+
this._db?.[Symbol.dispose](), this._db = null;
|
|
107
107
|
}
|
|
108
|
-
|
|
109
|
-
return this._db.
|
|
108
|
+
open() {
|
|
109
|
+
return this._db.open();
|
|
110
110
|
}
|
|
111
|
-
|
|
112
|
-
return this._db.
|
|
111
|
+
exec(t, e = "r!") {
|
|
112
|
+
return this._db.exec(t, e);
|
|
113
113
|
}
|
|
114
|
-
|
|
115
|
-
return this._db.
|
|
114
|
+
getKeys() {
|
|
115
|
+
return this._db.getKeys();
|
|
116
116
|
}
|
|
117
|
-
|
|
118
|
-
return this._db.
|
|
117
|
+
contains(t, e = "r") {
|
|
118
|
+
return this._db.contains(t, e);
|
|
119
119
|
}
|
|
120
|
-
|
|
121
|
-
return this._db.
|
|
120
|
+
delete(t, e = "rw") {
|
|
121
|
+
return this._db.deleteOne(t, e);
|
|
122
122
|
}
|
|
123
|
-
//
|
|
124
|
-
|
|
125
|
-
return this._db.
|
|
123
|
+
// deleteMany
|
|
124
|
+
bulkDelete(t, e = "rw") {
|
|
125
|
+
return this._db.bulkDelete(t, e);
|
|
126
126
|
}
|
|
127
|
-
//
|
|
128
|
-
|
|
129
|
-
return this._db.
|
|
127
|
+
// clearAll
|
|
128
|
+
clear(t = "rw") {
|
|
129
|
+
return this._db.clear(t);
|
|
130
130
|
}
|
|
131
|
-
|
|
132
|
-
return this.
|
|
133
|
-
const
|
|
131
|
+
get(t, e = "r?") {
|
|
132
|
+
return this.exec(async () => {
|
|
133
|
+
const i = await this._db.metadata.get(t), r = await this._db.data.get(t);
|
|
134
134
|
return {
|
|
135
|
-
metadata:
|
|
135
|
+
metadata: i,
|
|
136
136
|
data: r
|
|
137
137
|
};
|
|
138
138
|
}, e);
|
|
139
139
|
}
|
|
140
|
-
//
|
|
141
|
-
|
|
140
|
+
// upsert
|
|
141
|
+
set(t, e, i = "rw") {
|
|
142
142
|
if (e === void 0)
|
|
143
143
|
throw new Error('Invalid parameter: "value".');
|
|
144
|
-
return t.key || (t.key =
|
|
144
|
+
return t.key || (t.key = y()), this.exec(async () => {
|
|
145
145
|
const r = await this._db.metadata.put(t);
|
|
146
146
|
return await this._db.data.put({
|
|
147
147
|
key: t.key,
|
|
148
148
|
value: e
|
|
149
149
|
}), r;
|
|
150
|
-
},
|
|
150
|
+
}, i);
|
|
151
151
|
}
|
|
152
|
-
//
|
|
153
|
-
|
|
152
|
+
// getOrAdd
|
|
153
|
+
getOrSet(t, e, i = "rw") {
|
|
154
154
|
if (!t.key)
|
|
155
155
|
throw new Error('Key cannot be empty. Parameter: "metadataRecord".');
|
|
156
|
-
return this.
|
|
157
|
-
const r = await this.
|
|
158
|
-
return r || (await this.
|
|
159
|
-
},
|
|
156
|
+
return this.exec(async () => {
|
|
157
|
+
const r = await this.get(t.key);
|
|
158
|
+
return r || (await this.set(t, e(t)), this.get(t.key));
|
|
159
|
+
}, i);
|
|
160
160
|
}
|
|
161
|
-
|
|
161
|
+
update(t, e, i, r = "rw") {
|
|
162
162
|
if (!t)
|
|
163
163
|
throw new Error('Key cannot be empty. Parameter: "key".');
|
|
164
|
-
if (!e && !
|
|
164
|
+
if (!e && !i)
|
|
165
165
|
throw new Error("No changes provided.");
|
|
166
|
-
return this.
|
|
167
|
-
let
|
|
168
|
-
return e && (
|
|
166
|
+
return this.exec(async () => {
|
|
167
|
+
let a;
|
|
168
|
+
return e && (a = await this._db.metadata.update(t, e)), i && await this._db.data.update(t, i), a;
|
|
169
169
|
}, r);
|
|
170
170
|
}
|
|
171
|
-
|
|
171
|
+
bulkUpdate(t, e, i = "rw") {
|
|
172
172
|
let r;
|
|
173
|
-
if (t && (r = t.findIndex((
|
|
173
|
+
if (t && (r = t.findIndex((a) => !a.key)) >= 0)
|
|
174
174
|
throw new Error(`Key cannot be empty. Parameter: "metadataChangeSets". Invalid item index: ${r}.`);
|
|
175
|
-
if (e && (r = e.findIndex((
|
|
175
|
+
if (e && (r = e.findIndex((a) => !a.key)) >= 0)
|
|
176
176
|
throw new Error(`Key cannot be empty. Parameter: "valueChangeSets". Invalid item index: ${r}.`);
|
|
177
|
-
return this.
|
|
178
|
-
let
|
|
179
|
-
return t && (
|
|
180
|
-
},
|
|
177
|
+
return this.exec(async () => {
|
|
178
|
+
let a;
|
|
179
|
+
return t && (a = await this._db.metadata.bulkUpdate(t)), e && await this._db.data.bulkUpdate(e), a;
|
|
180
|
+
}, i);
|
|
181
181
|
}
|
|
182
182
|
// getMany
|
|
183
|
-
|
|
184
|
-
return this.
|
|
185
|
-
const
|
|
186
|
-
for (const
|
|
187
|
-
|
|
188
|
-
metadata:
|
|
183
|
+
bulkGet(t, e = "r") {
|
|
184
|
+
return this.exec(async () => {
|
|
185
|
+
const i = /* @__PURE__ */ new Map(), r = await this._db.metadata.bulkGet(t);
|
|
186
|
+
for (const n of r)
|
|
187
|
+
i.set(n.key, {
|
|
188
|
+
metadata: n
|
|
189
189
|
// data: undefined
|
|
190
190
|
});
|
|
191
|
-
const
|
|
192
|
-
for (const
|
|
193
|
-
|
|
194
|
-
return [...
|
|
191
|
+
const a = await this._db.data.bulkGet(t);
|
|
192
|
+
for (const n of a)
|
|
193
|
+
i.get(n.key).data = n;
|
|
194
|
+
return [...i.values()];
|
|
195
195
|
}, e);
|
|
196
196
|
}
|
|
197
|
-
|
|
197
|
+
bulkSet(t, e, i = "rw") {
|
|
198
198
|
let r;
|
|
199
|
-
if (t && (r = t.findIndex((
|
|
199
|
+
if (t && (r = t.findIndex((a) => !a)) >= 0)
|
|
200
200
|
throw new Error(`Invalid metadata record. Parameter: "metadataRecords". Index: ${r}.`);
|
|
201
|
-
if (e && (r = e.findIndex((
|
|
201
|
+
if (e && (r = e.findIndex((a) => !a || !a.key || a.value === void 0)) >= 0)
|
|
202
202
|
throw new Error(`Invalid data record. Parameter: "dataRecords". Index: ${r}.`);
|
|
203
203
|
if (!t && !e)
|
|
204
204
|
throw new Error("No data provided.");
|
|
205
|
-
for (const
|
|
206
|
-
|
|
207
|
-
return this.
|
|
208
|
-
let
|
|
209
|
-
return t && (
|
|
210
|
-
},
|
|
211
|
-
}
|
|
212
|
-
orderBy(t, e,
|
|
205
|
+
for (const a of t)
|
|
206
|
+
a.key || (a.key = y());
|
|
207
|
+
return this.exec(async () => {
|
|
208
|
+
let a;
|
|
209
|
+
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;
|
|
210
|
+
}, i);
|
|
211
|
+
}
|
|
212
|
+
orderBy(t, e, i = !1) {
|
|
213
213
|
let r = this._db.metadata.orderBy(t);
|
|
214
|
-
return e === "desc" && (r = r.reverse()),
|
|
214
|
+
return e === "desc" && (r = r.reverse()), i && (r = r.distinct()), new d(r);
|
|
215
215
|
}
|
|
216
216
|
distinct(t) {
|
|
217
217
|
const e = this._db.metadata.orderBy(t).distinct();
|
|
218
|
-
return new
|
|
218
|
+
return new d(e);
|
|
219
219
|
}
|
|
220
220
|
query() {
|
|
221
|
-
return new
|
|
221
|
+
return new d(this._db.metadata.toCollection());
|
|
222
222
|
}
|
|
223
223
|
// filter
|
|
224
224
|
where(t) {
|
|
225
225
|
const e = this._db.metadata.where(t);
|
|
226
|
-
return m(e, (
|
|
226
|
+
return m(e, (i) => new d(i));
|
|
227
227
|
}
|
|
228
228
|
}
|
|
229
229
|
export {
|
|
230
|
-
|
|
230
|
+
_ as DataStore
|
|
231
231
|
};
|
|
232
232
|
//# 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":["import * as Dexie from \"dexie\";\r\nimport { v4 as uuid } from \"uuid\";\r\nimport { keyOf } from \"@/typeUtils\";\r\nimport { KeyPathValueMap } from \"@/typeCore\";\r\nimport { ChangeSet, DataRecord, FieldDefTemplate, IndexableType, IStoreCollection, MetadataRecord, OrderDirection, StoreBase, StoreItem, TransactionMode } 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 = any> 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 toArrayAsync(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.execAsync(async () => {\r\n const map = new Map<string, StoreItem<T, TValue>>();\r\n let populate: (callback: (metadataRecord: T) => void) => void = this._metadata.each;\r\n if (orderBy && orderDirection) {\r\n const metadataRecords = await this._metadata.sortBy(orderBy as string);\r\n populate = metadataRecords.forEach;\r\n }\r\n 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 map.get(dataRecord.key).data = dataRecord;\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 orderByAsync(field: keyof T, direction: OrderDirection, transactionMode: TransactionMode = \"r\") {\r\n return this.toArrayAsync(field, direction, transactionMode);\r\n }\r\n\r\n filter<S extends T>(filter: (x: T) => x is S) {\r\n const metadata = this._metadata.filter(filter);\r\n return new StoreCollection<S, TValue>(metadata);\r\n }\r\n\r\n limit(n: number) {\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 getKeysAsync() {\r\n return this._metadata.primaryKeys() as Promise<T[\"key\"][]>;\r\n }\r\n\r\n getCountAsync() {\r\n return this._metadata.count();\r\n }\r\n\r\n getFilterKeysAsync(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 modifyMetadataAsync(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.execAsync(async () => {\r\n return this._metadata.modify(r => {\r\n callback(r);\r\n });\r\n }, transactionMode);\r\n }\r\n\r\n modifyDataAsync(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.execAsync(async () => {\r\n const keys = await this.getKeysAsync();\r\n return await this.db.data.where(keyOf<DataRecord>(\"key\")).anyOf(keys).modify(r => {\r\n callback(r.value);\r\n });\r\n }, transactionMode);\r\n }\r\n\r\n modifyAsync(metadataCallback: (metadataRecord: T) => void, dataCallback: (dataRecord: DataRecord) => void, transactionMode: TransactionMode = \"rw\") {\r\n return this.db.execAsync(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.value);\r\n });\r\n }\r\n return mc;\r\n }, transactionMode);\r\n }\r\n}\r\n\r\ninterface IWhereFilter<T extends IndexableType, TResult = any> {\r\n constructor(source: Dexie.WhereClause<any, any>)\r\n above(value: T): TResult;\r\n aboveOrEqual(value: T): TResult;\r\n anyOf(values: ReadonlyArray<T>): TResult;\r\n anyOfIgnoreCase(keys: T extends string ? T[] : never): T extends string ? TResult : never;\r\n below(value: T): TResult;\r\n belowOrEqual(value: T): TResult;\r\n between(lower: any, upper: any, includeLower?: boolean, includeUpper?: boolean): TResult;\r\n equals(value: T): TResult;\r\n equalsIgnoreCase(value: string): TResult;\r\n inAnyRange(ranges: ReadonlyArray<{\r\n 0: T;\r\n 1: T;\r\n }>, options?: {\r\n includeLowers?: boolean;\r\n includeUppers?: boolean;\r\n }): TResult;\r\n startsWith(prefix: T extends string ? T : never): T extends string ? TResult : never;\r\n startsWithAnyOf(prefixes: T extends string ? T[] : never): T extends string ? TResult : never;\r\n startsWithIgnoreCase(prefix: T extends string ? T : never): T extends string ? TResult : never;\r\n startsWithAnyOfIgnoreCase(prefixes: T extends string ? T[] : never): T extends string ? TResult : never;\r\n noneOf(values: ReadonlyArray<T>): TResult;\r\n notEqual(value: T): TResult;\r\n}\r\n\r\nfunction createWhereFilter<T extends IndexableType, TResult>(source: Dexie.WhereClause<any, any>, 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 IWhereFilter<T, TResult>;\r\n}\r\n\r\nexport class DataStore<T extends MetadataRecord> implements StoreBase {\r\n\r\n private _db: StoreDb<T>;\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 dispose() {\r\n this._db?.dispose();\r\n this._db = null;\r\n }\r\n\r\n openAsync() {\r\n return this._db.openAsync()\r\n }\r\n\r\n execAsync<T>(\r\n action: () => Promise<T>, // scope\r\n transactionMode: TransactionMode = \"r!\") {\r\n return this._db.execAsync(action, transactionMode);\r\n }\r\n\r\n getKeysAsync() {\r\n return this._db.getKeysAsync();\r\n // return this.query().keysAsync();\r\n }\r\n\r\n containsAsync(key: string, transactionMode: TransactionMode = \"r\") {\r\n return this._db.containsAsync(key, transactionMode);\r\n }\r\n\r\n deleteAsync(key: string, transactionMode: TransactionMode = \"rw\") {\r\n return this._db.deleteAsync(key, transactionMode);\r\n }\r\n\r\n // deleteManyAsync\r\n bulkDeleteAsync(keys: string[], transactionMode: TransactionMode = \"rw\") {\r\n return this._db.bulkDeleteAsync(keys, transactionMode);\r\n }\r\n\r\n // clearAllAsync\r\n clearAsync(transactionMode: TransactionMode = \"rw\") {\r\n return this._db.clearAsync(transactionMode);\r\n }\r\n\r\n getAsync<TValue = any>(key: string, transactionMode: TransactionMode = \"r?\"): Promise<StoreItem<T, TValue>> {\r\n return this.execAsync(async () => {\r\n const metadataRecord = await this._db.metadata.get(key);\r\n const dataRecord = await this._db.data.get(key);\r\n return {\r\n metadata: metadataRecord,\r\n data: dataRecord\r\n } as StoreItem<T, TValue>;\r\n }, transactionMode);\r\n }\r\n\r\n // upsertAsync\r\n setAsync<TValue = any>(metadataRecord: T, value: TValue, transactionMode: TransactionMode = \"rw\") {\r\n if (value === undefined) {\r\n throw new Error('Invalid parameter: \"value\".');\r\n }\r\n if (!metadataRecord.key) {\r\n metadataRecord.key = uuid();\r\n }\r\n return this.execAsync(async () => {\r\n const result = await this._db.metadata.put(metadataRecord);\r\n await this._db.data.put({\r\n key: metadataRecord.key,\r\n value: value\r\n });\r\n return result;\r\n }, transactionMode);\r\n }\r\n\r\n // getOrAddAsync\r\n getOrSetAsync<TValue = any>(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.execAsync(async () => {\r\n const existingStoreItem = await this.getAsync(metadataRecord.key);\r\n if (existingStoreItem) {\r\n return existingStoreItem;\r\n }\r\n await this.setAsync(metadataRecord, factory(metadataRecord));\r\n return this.getAsync(metadataRecord.key);\r\n }, transactionMode);\r\n }\r\n\r\n updateAsync<TValue = any>(key: string, metadataChanges: KeyPathValueMap<T>, valueChanges?: KeyPathValueMap<TValue>, 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.execAsync(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 bulkUpdateAsync(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.execAsync(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 bulkGetAsync<TValue = any>(keys: string[], transactionMode: TransactionMode = \"r\") {\r\n return this.execAsync(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 map.set(metadataRecord.key, {\r\n metadata: metadataRecord,\r\n // data: undefined\r\n });\r\n }\r\n const dataRecords = await this._db.data.bulkGet(keys);\r\n for (const dataRecord of dataRecords) {\r\n map.get(dataRecord.key).data = dataRecord;\r\n }\r\n return [...map.values()];\r\n }, transactionMode);\r\n }\r\n\r\n bulkSetAsync<TValue = any>(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.execAsync(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 = any>() {\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 = any>(field: K extends string ? K : never) {\r\n const source = this._db.metadata.where(field as string);\r\n return createWhereFilter<T[K] extends IndexableType ? T[K] : never, StoreCollection<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":["reverseMapValues","map","keys","i","StoreCollection","metadata","orderBy","orderDirection","transactionMode","db","populate","metadataRecord","dataRecords","dataRecord","field","direction","filter","n","distinct","callback","r","keyOf","metadataCallback","dataCallback","mc","createWhereFilter","source","factory","methodCache","target","prop","receiver","value","targetFn","thisArg","args","DataStore","name","metadataFieldDefTemplate","StoreDb","action","key","uuid","result","existingStoreItem","metadataChanges","valueChanges","metadataChangeSets","dataChangeSets","index","x","cm","metadataRecords","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 { ChangeSet, DataRecord, FieldDefTemplate, IndexableType, IStoreCollection, MetadataRecord, OrderDirection, StoreBase, StoreItem, TransactionMode } 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 = any> 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 = this._metadata.each;\r\n if (orderBy && orderDirection) {\r\n const metadataRecords = await this._metadata.sortBy(orderBy as string);\r\n populate = metadataRecords.forEach;\r\n }\r\n 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 map.get(dataRecord.key).data = dataRecord;\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<S extends T>(filter: (x: T) => x is S) {\r\n const metadata = this._metadata.filter(filter);\r\n return new StoreCollection<S, TValue>(metadata);\r\n }\r\n\r\n limit(n: number) {\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.value);\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.value);\r\n });\r\n }\r\n return mc;\r\n }, transactionMode);\r\n }\r\n}\r\n\r\ninterface IWhereFilter<T extends IndexableType, TResult = any> {\r\n constructor(source: Dexie.WhereClause<any, any>)\r\n above(value: T): TResult;\r\n aboveOrEqual(value: T): TResult;\r\n anyOf(values: ReadonlyArray<T>): TResult;\r\n anyOfIgnoreCase(keys: T extends string ? T[] : never): T extends string ? TResult : never;\r\n below(value: T): TResult;\r\n belowOrEqual(value: T): TResult;\r\n between(lower: any, upper: any, includeLower?: boolean, includeUpper?: boolean): TResult;\r\n equals(value: T): TResult;\r\n equalsIgnoreCase(value: string): TResult;\r\n inAnyRange(ranges: ReadonlyArray<{\r\n 0: T;\r\n 1: T;\r\n }>, options?: {\r\n includeLowers?: boolean;\r\n includeUppers?: boolean;\r\n }): TResult;\r\n startsWith(prefix: T extends string ? T : never): T extends string ? TResult : never;\r\n startsWithAnyOf(prefixes: T extends string ? T[] : never): T extends string ? TResult : never;\r\n startsWithIgnoreCase(prefix: T extends string ? T : never): T extends string ? TResult : never;\r\n startsWithAnyOfIgnoreCase(prefixes: T extends string ? T[] : never): T extends string ? TResult : never;\r\n noneOf(values: ReadonlyArray<T>): TResult;\r\n notEqual(value: T): TResult;\r\n}\r\n\r\nfunction createWhereFilter<T extends IndexableType, TResult>(source: Dexie.WhereClause<any, any>, 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 IWhereFilter<T, TResult>;\r\n}\r\n\r\nexport class DataStore<T extends MetadataRecord> implements StoreBase {\r\n\r\n private _db: StoreDb<T>;\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 get<TValue = any>(key: string, transactionMode: TransactionMode = \"r?\"): Promise<StoreItem<T, TValue>> {\r\n return this.exec(async () => {\r\n const metadataRecord = await this._db.metadata.get(key);\r\n const dataRecord = await this._db.data.get(key);\r\n return {\r\n metadata: metadataRecord,\r\n data: dataRecord\r\n } as StoreItem<T, TValue>;\r\n }, transactionMode);\r\n }\r\n\r\n // upsert\r\n set<TValue = any>(metadataRecord: T, value: TValue, transactionMode: TransactionMode = \"rw\") {\r\n if (value === undefined) {\r\n throw new Error('Invalid parameter: \"value\".');\r\n }\r\n if (!metadataRecord.key) {\r\n metadataRecord.key = uuid();\r\n }\r\n return this.exec(async () => {\r\n const result = await this._db.metadata.put(metadataRecord);\r\n await this._db.data.put({\r\n key: metadataRecord.key,\r\n value: value\r\n });\r\n return result;\r\n }, transactionMode);\r\n }\r\n\r\n // getOrAdd\r\n getOrSet<TValue = any>(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 existingStoreItem = await this.get(metadataRecord.key);\r\n if (existingStoreItem) {\r\n return existingStoreItem;\r\n }\r\n await this.set(metadataRecord, factory(metadataRecord));\r\n return this.get(metadataRecord.key);\r\n }, transactionMode);\r\n }\r\n\r\n update<TValue = any>(key: string, metadataChanges: KeyPathValueMap<T>, valueChanges?: KeyPathValueMap<TValue>, 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 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 = any>(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 map.set(metadataRecord.key, {\r\n metadata: metadataRecord,\r\n // data: undefined\r\n });\r\n }\r\n const dataRecords = await this._db.data.bulkGet(keys);\r\n for (const dataRecord of dataRecords) {\r\n map.get(dataRecord.key).data = dataRecord;\r\n }\r\n return [...map.values()];\r\n }, transactionMode);\r\n }\r\n\r\n bulkSet<TValue = any>(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 = any>() {\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 = any>(field: K extends string ? K : never) {\r\n const source = this._db.metadata.where(field as string);\r\n return createWhereFilter<T[K] extends IndexableType ? T[K] : never, StoreCollection<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":["reverseMapValues","map","keys","i","StoreCollection","metadata","orderBy","orderDirection","transactionMode","db","populate","metadataRecord","dataRecords","dataRecord","field","direction","filter","n","distinct","callback","r","keyOf","metadataCallback","dataCallback","mc","createWhereFilter","source","factory","methodCache","target","prop","receiver","value","targetFn","thisArg","args","DataStore","name","metadataFieldDefTemplate","StoreDb","action","key","uuid","result","existingStoreItem","metadataChanges","valueChanges","metadataChangeSets","dataChangeSets","index","x","cm","metadataRecords","mKeys","c"],"mappings":"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"}
|
|
@@ -5,9 +5,9 @@ export type PersistentStoreOptions = {
|
|
|
5
5
|
};
|
|
6
6
|
export declare class PersistentStore extends DataStore<MetadataRecord> implements IPersistentStore<MetadataRecord> {
|
|
7
7
|
private _options;
|
|
8
|
-
static
|
|
9
|
-
static
|
|
10
|
-
static
|
|
8
|
+
static delete(name: string): Promise<void>;
|
|
9
|
+
static exists(name: string): Promise<boolean>;
|
|
10
|
+
static open(name: string, options?: PersistentStoreOptions): Promise<PersistentStore>;
|
|
11
11
|
constructor(name: string, options?: PersistentStoreOptions);
|
|
12
12
|
}
|
|
13
13
|
//# sourceMappingURL=persistentStore.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persistentStore.d.ts","sourceRoot":"","sources":["../../src/store/persistentStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAY,gBAAgB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAM9E,MAAM,MAAM,sBAAsB,GAAG;IACjC,aAAa,EAAE,OAAO,CAAC;CAC1B,CAAC;AASF,qBAAa,eAAgB,SAAQ,SAAS,CAAC,cAAc,CAAE,YAAW,gBAAgB,CAAC,cAAc,CAAC;IAEtG,OAAO,CAAC,QAAQ,CAAyB;IAEzC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"persistentStore.d.ts","sourceRoot":"","sources":["../../src/store/persistentStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAY,gBAAgB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAM9E,MAAM,MAAM,sBAAsB,GAAG;IACjC,aAAa,EAAE,OAAO,CAAC;CAC1B,CAAC;AASF,qBAAa,eAAgB,SAAQ,SAAS,CAAC,cAAc,CAAE,YAAW,gBAAgB,CAAC,cAAc,CAAC;IAEtG,OAAO,CAAC,QAAQ,CAAyB;IAEzC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM;IAI1B,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM;IAI1B,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,sBAAsB;gBAI9C,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,sBAAsB;CAI7D"}
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
import { DataStore as
|
|
1
|
+
import { DataStore as r } from "./dataStore.es.js";
|
|
2
2
|
import { StoreDb as s } from "./storeDb.es.js";
|
|
3
|
-
const
|
|
3
|
+
const n = {
|
|
4
4
|
useEncryption: !1
|
|
5
|
-
},
|
|
6
|
-
class
|
|
5
|
+
}, a = ["&key", "createdAt", "updatedAt", "tags"];
|
|
6
|
+
class o extends r {
|
|
7
7
|
_options;
|
|
8
8
|
// TODO: support
|
|
9
|
-
static
|
|
10
|
-
return s.
|
|
9
|
+
static delete(t) {
|
|
10
|
+
return s.delete(t);
|
|
11
11
|
}
|
|
12
|
-
static
|
|
13
|
-
return s.
|
|
12
|
+
static exists(t) {
|
|
13
|
+
return s.exists(t);
|
|
14
14
|
}
|
|
15
|
-
static
|
|
16
|
-
return s.
|
|
15
|
+
static open(t, e) {
|
|
16
|
+
return s.open(t, () => new o(t, e));
|
|
17
17
|
}
|
|
18
18
|
constructor(t, e) {
|
|
19
|
-
super(t,
|
|
19
|
+
super(t, a), this._options = { ...e, ...n };
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
22
|
export {
|
|
23
|
-
|
|
23
|
+
o as PersistentStore
|
|
24
24
|
};
|
|
25
25
|
//# 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":["import { DataStore } from \"./dataStore\";\r\nimport { FieldDef, 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\nconst metadataFieldDefTemplate = [\"&key\", \"createdAt\", \"updatedAt\", \"tags\"] satisfies (FieldDef<keyof MetadataRecord>)[];\r\n// T extends MetadataRecord\r\nexport class PersistentStore extends DataStore<MetadataRecord> implements IPersistentStore<MetadataRecord> {\r\n\r\n private _options: PersistentStoreOptions; // TODO: support\r\n\r\n static
|
|
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, 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\nconst metadataFieldDefTemplate = [\"&key\", \"createdAt\", \"updatedAt\", \"tags\"] satisfies (FieldDef<keyof MetadataRecord>)[];\r\n// T extends MetadataRecord\r\nexport class PersistentStore extends DataStore<MetadataRecord> implements IPersistentStore<MetadataRecord> {\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(name: string, options?: PersistentStoreOptions) {\r\n return StoreDb.open(name, () => new PersistentStore(name, options));\r\n }\r\n\r\n constructor(name: string, options?: PersistentStoreOptions) {\r\n super(name, metadataFieldDefTemplate);\r\n this._options = { ...options, ...defaultPersistentStoreOptions };\r\n }\r\n}\r\n"],"names":["defaultPersistentStoreOptions","metadataFieldDefTemplate","PersistentStore","DataStore","name","StoreDb","options"],"mappings":";;AAWA,MAAMA,IAAgC;AAAA,EAClC,eAAe;AACnB,GAGMC,IAA2B,CAAC,QAAQ,aAAa,aAAa,MAAM;AAEnE,MAAMC,UAAwBC,EAAsE;AAAA,EAE/F;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,KAAKA,GAAcE,GAAkC;AACxD,WAAOD,EAAQ,KAAKD,GAAM,MAAM,IAAIF,EAAgBE,GAAME,CAAO,CAAC;AAAA,EACtE;AAAA,EAEA,YAAYF,GAAcE,GAAkC;AACxD,UAAMF,GAAMH,CAAwB,GACpC,KAAK,WAAW,EAAE,GAAGK,GAAS,GAAGN,EAAA;AAAA,EACrC;AACJ;"}
|
|
@@ -27,32 +27,32 @@ export type IndexableTypeArray = Dexie.IndexableTypeArray;
|
|
|
27
27
|
export type TransactionMode = Dexie.TransactionMode;
|
|
28
28
|
export type OrderDirection = "asc" | "desc";
|
|
29
29
|
export type StoreBase = {
|
|
30
|
-
|
|
30
|
+
open(): PromiseLike<void>;
|
|
31
31
|
};
|
|
32
32
|
export interface IStoreCollection<T extends MetadataRecord = MetadataRecord, TValue = any> {
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
toArray(orderBy?: keyof T, orderDirection?: OrderDirection, transactionMode?: TransactionMode): Promise<StoreItem<T, TValue>[]>;
|
|
34
|
+
orderBy(field: keyof T, direction: OrderDirection, transactionMode?: TransactionMode): Promise<StoreItem<T, TValue>[]>;
|
|
35
35
|
filter<S extends T>(filter: (x: T) => x is S): IStoreCollection<S, TValue>;
|
|
36
36
|
limit(n: number): IStoreCollection<T, TValue>;
|
|
37
37
|
offset(n: number): IStoreCollection<T, TValue>;
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
38
|
+
getKeys(): Promise<T["key"][]>;
|
|
39
|
+
getCount(): Promise<number>;
|
|
40
|
+
modifyMetadata(callback: (metadataRecord: T) => void, transactionMode?: TransactionMode): Promise<number>;
|
|
41
|
+
modifyData(callback: (dataRecord: DataRecord) => void, transactionMode?: TransactionMode): Promise<number>;
|
|
42
|
+
modify(metadataCallback: (metadataRecord: T) => void, dataCallback: (dataRecord: DataRecord) => void, transactionMode?: TransactionMode): Promise<number>;
|
|
43
43
|
}
|
|
44
44
|
export interface IPersistentStore<T extends MetadataRecord = MetadataRecord> {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
dispose()
|
|
45
|
+
open(): Promise<void>;
|
|
46
|
+
getKeys(): Promise<string[]>;
|
|
47
|
+
contains(key: string): Promise<boolean>;
|
|
48
|
+
delete(key: string): Promise<void>;
|
|
49
|
+
bulkDelete(keys: string[]): Promise<void>;
|
|
50
|
+
clear(): Promise<void>;
|
|
51
|
+
get<TValue = any>(key: string): Promise<StoreItem<T, TValue>>;
|
|
52
|
+
set<TValue = any>(metadataRecord: T, value: TValue): Promise<string>;
|
|
53
|
+
getOrSet<TValue = any>(metadataRecord: MetadataRecord, factory: (metadataRecord: MetadataRecord) => TValue): Promise<StoreItem<T, TValue>>;
|
|
54
|
+
bulkGet<TValue = any>(keys: string[]): Promise<StoreItem<T, TValue>[]>;
|
|
55
|
+
bulkSet<TValue = any>(metadataRecords: MetadataRecord[], dataRecords: DataRecord<TValue>[]): Promise<string[]>;
|
|
56
|
+
[Symbol.dispose]: () => void;
|
|
57
57
|
}
|
|
58
58
|
//# sourceMappingURL=storeContracts.d.ts.map
|