tinybase 4.0.3 → 4.0.4
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/lib/cjs/persisters/persister-automerge.cjs +1 -1
- package/lib/cjs/persisters/persister-automerge.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-browser.cjs +1 -1
- package/lib/cjs/persisters/persister-browser.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs +1 -1
- package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-expo-sqlite.cjs +1 -1
- package/lib/cjs/persisters/persister-expo-sqlite.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-file.cjs +1 -1
- package/lib/cjs/persisters/persister-file.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-remote.cjs +1 -1
- package/lib/cjs/persisters/persister-remote.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-sqlite-wasm.cjs +1 -1
- package/lib/cjs/persisters/persister-sqlite-wasm.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-sqlite3.cjs +1 -1
- package/lib/cjs/persisters/persister-sqlite3.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-yjs.cjs +1 -1
- package/lib/cjs/persisters/persister-yjs.cjs.gz +0 -0
- package/lib/cjs/persisters.cjs +1 -1
- package/lib/cjs/persisters.cjs.gz +0 -0
- package/lib/cjs/tinybase.cjs +1 -1
- package/lib/cjs/tinybase.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-automerge.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-automerge.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-browser.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-browser.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-file.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-file.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-remote.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-remote.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-sqlite3.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-sqlite3.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-yjs.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-yjs.cjs.gz +0 -0
- package/lib/cjs-es6/persisters.cjs +1 -1
- package/lib/cjs-es6/persisters.cjs.gz +0 -0
- package/lib/cjs-es6/tinybase.cjs +1 -1
- package/lib/cjs-es6/tinybase.cjs.gz +0 -0
- package/lib/debug/persisters/persister-automerge.js +56 -18
- package/lib/debug/persisters/persister-browser.js +55 -22
- package/lib/debug/persisters/persister-cr-sqlite-wasm.js +106 -62
- package/lib/debug/persisters/persister-expo-sqlite.js +111 -62
- package/lib/debug/persisters/persister-file.js +51 -18
- package/lib/debug/persisters/persister-remote.js +51 -17
- package/lib/debug/persisters/persister-sqlite-wasm.js +106 -62
- package/lib/debug/persisters/persister-sqlite3.js +111 -62
- package/lib/debug/persisters/persister-yjs.js +63 -27
- package/lib/debug/persisters.js +49 -17
- package/lib/debug/tinybase.js +35 -17
- package/lib/es6/persisters/persister-automerge.js +1 -1
- package/lib/es6/persisters/persister-automerge.js.gz +0 -0
- package/lib/es6/persisters/persister-browser.js +1 -1
- package/lib/es6/persisters/persister-browser.js.gz +0 -0
- package/lib/es6/persisters/persister-cr-sqlite-wasm.js +1 -1
- package/lib/es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
- package/lib/es6/persisters/persister-expo-sqlite.js +1 -1
- package/lib/es6/persisters/persister-expo-sqlite.js.gz +0 -0
- package/lib/es6/persisters/persister-file.js +1 -1
- package/lib/es6/persisters/persister-file.js.gz +0 -0
- package/lib/es6/persisters/persister-remote.js +1 -1
- package/lib/es6/persisters/persister-remote.js.gz +0 -0
- package/lib/es6/persisters/persister-sqlite-wasm.js +1 -1
- package/lib/es6/persisters/persister-sqlite-wasm.js.gz +0 -0
- package/lib/es6/persisters/persister-sqlite3.js +1 -1
- package/lib/es6/persisters/persister-sqlite3.js.gz +0 -0
- package/lib/es6/persisters/persister-yjs.js +1 -1
- package/lib/es6/persisters/persister-yjs.js.gz +0 -0
- package/lib/es6/persisters.js +1 -1
- package/lib/es6/persisters.js.gz +0 -0
- package/lib/es6/tinybase.js +1 -1
- package/lib/es6/tinybase.js.gz +0 -0
- package/lib/persisters/persister-automerge.js +1 -1
- package/lib/persisters/persister-automerge.js.gz +0 -0
- package/lib/persisters/persister-browser.js +1 -1
- package/lib/persisters/persister-browser.js.gz +0 -0
- package/lib/persisters/persister-cr-sqlite-wasm.js +1 -1
- package/lib/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
- package/lib/persisters/persister-expo-sqlite.js +1 -1
- package/lib/persisters/persister-expo-sqlite.js.gz +0 -0
- package/lib/persisters/persister-file.js +1 -1
- package/lib/persisters/persister-file.js.gz +0 -0
- package/lib/persisters/persister-remote.js +1 -1
- package/lib/persisters/persister-remote.js.gz +0 -0
- package/lib/persisters/persister-sqlite-wasm.js +1 -1
- package/lib/persisters/persister-sqlite-wasm.js.gz +0 -0
- package/lib/persisters/persister-sqlite3.js +1 -1
- package/lib/persisters/persister-sqlite3.js.gz +0 -0
- package/lib/persisters/persister-yjs.js +1 -1
- package/lib/persisters/persister-yjs.js.gz +0 -0
- package/lib/persisters.js +1 -1
- package/lib/persisters.js.gz +0 -0
- package/lib/tinybase.js +1 -1
- package/lib/tinybase.js.gz +0 -0
- package/lib/types/persisters/persister-automerge.d.ts +4 -0
- package/lib/types/persisters/persister-browser.d.ts +8 -0
- package/lib/types/persisters/persister-cr-sqlite-wasm.d.ts +10 -2
- package/lib/types/persisters/persister-expo-sqlite.d.ts +8 -0
- package/lib/types/persisters/persister-file.d.ts +8 -1
- package/lib/types/persisters/persister-remote.d.ts +4 -0
- package/lib/types/persisters/persister-sqlite-wasm.d.ts +8 -0
- package/lib/types/persisters/persister-sqlite3.d.ts +8 -0
- package/lib/types/persisters/persister-yjs.d.ts +4 -0
- package/lib/types/persisters.d.ts +16 -3
- package/lib/types/with-schemas/persisters/persister-automerge.d.ts +5 -0
- package/lib/types/with-schemas/persisters/persister-browser.d.ts +10 -0
- package/lib/types/with-schemas/persisters/persister-cr-sqlite-wasm.d.ts +12 -2
- package/lib/types/with-schemas/persisters/persister-expo-sqlite.d.ts +10 -0
- package/lib/types/with-schemas/persisters/persister-file.d.ts +9 -1
- package/lib/types/with-schemas/persisters/persister-remote.d.ts +5 -0
- package/lib/types/with-schemas/persisters/persister-sqlite-wasm.d.ts +10 -0
- package/lib/types/with-schemas/persisters/persister-sqlite3.d.ts +10 -0
- package/lib/types/with-schemas/persisters/persister-yjs.d.ts +5 -0
- package/lib/types/with-schemas/persisters.d.ts +17 -3
- package/lib/umd/persisters/persister-automerge.js +1 -1
- package/lib/umd/persisters/persister-automerge.js.gz +0 -0
- package/lib/umd/persisters/persister-browser.js +1 -1
- package/lib/umd/persisters/persister-browser.js.gz +0 -0
- package/lib/umd/persisters/persister-cr-sqlite-wasm.js +1 -1
- package/lib/umd/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
- package/lib/umd/persisters/persister-expo-sqlite.js +1 -1
- package/lib/umd/persisters/persister-expo-sqlite.js.gz +0 -0
- package/lib/umd/persisters/persister-file.js +1 -1
- package/lib/umd/persisters/persister-file.js.gz +0 -0
- package/lib/umd/persisters/persister-remote.js +1 -1
- package/lib/umd/persisters/persister-remote.js.gz +0 -0
- package/lib/umd/persisters/persister-sqlite-wasm.js +1 -1
- package/lib/umd/persisters/persister-sqlite-wasm.js.gz +0 -0
- package/lib/umd/persisters/persister-sqlite3.js +1 -1
- package/lib/umd/persisters/persister-sqlite3.js.gz +0 -0
- package/lib/umd/persisters/persister-yjs.js +1 -1
- package/lib/umd/persisters/persister-yjs.js.gz +0 -0
- package/lib/umd/persisters.js +1 -1
- package/lib/umd/persisters.js.gz +0 -0
- package/lib/umd/tinybase.js +1 -1
- package/lib/umd/tinybase.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-automerge.js +1 -1
- package/lib/umd-es6/persisters/persister-automerge.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-browser.js +1 -1
- package/lib/umd-es6/persisters/persister-browser.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js +1 -1
- package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-expo-sqlite.js +1 -1
- package/lib/umd-es6/persisters/persister-expo-sqlite.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-file.js +1 -1
- package/lib/umd-es6/persisters/persister-file.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-remote.js +1 -1
- package/lib/umd-es6/persisters/persister-remote.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-sqlite-wasm.js +1 -1
- package/lib/umd-es6/persisters/persister-sqlite-wasm.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-sqlite3.js +1 -1
- package/lib/umd-es6/persisters/persister-sqlite3.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-yjs.js +1 -1
- package/lib/umd-es6/persisters/persister-yjs.js.gz +0 -0
- package/lib/umd-es6/persisters.js +1 -1
- package/lib/umd-es6/persisters.js.gz +0 -0
- package/lib/umd-es6/tinybase.js +1 -1
- package/lib/umd-es6/tinybase.js.gz +0 -0
- package/package.json +5 -5
- package/readme.md +2 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {Map} from 'yjs';
|
|
1
|
+
import {Map as Map$1} from 'yjs';
|
|
2
2
|
|
|
3
3
|
const TINYBASE = 'tinybase';
|
|
4
4
|
|
|
@@ -33,32 +33,58 @@ const objEnsure = (obj, id, getDefaultValue) => {
|
|
|
33
33
|
return obj[id];
|
|
34
34
|
};
|
|
35
35
|
|
|
36
|
+
const collHas = (coll, keyOrValue) => coll?.has(keyOrValue) ?? false;
|
|
37
|
+
const collForEach = (coll, cb) => coll?.forEach(cb);
|
|
38
|
+
const collDel = (coll, keyOrValue) => coll?.delete(keyOrValue);
|
|
39
|
+
|
|
40
|
+
const mapNew = (entries) => new Map(entries);
|
|
41
|
+
const mapGet = (map, key) => map?.get(key);
|
|
42
|
+
const mapForEach = (map, cb) =>
|
|
43
|
+
collForEach(map, (value, key) => cb(key, value));
|
|
44
|
+
const mapSet = (map, key, value) =>
|
|
45
|
+
isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
|
|
46
|
+
const mapEnsure = (map, key, getDefaultValue) => {
|
|
47
|
+
if (!collHas(map, key)) {
|
|
48
|
+
mapSet(map, key, getDefaultValue());
|
|
49
|
+
}
|
|
50
|
+
return mapGet(map, key);
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
const scheduleRunning = mapNew();
|
|
54
|
+
const scheduleActions = mapNew();
|
|
36
55
|
const createCustomPersister = (
|
|
37
56
|
store,
|
|
38
57
|
getPersisted,
|
|
39
58
|
setPersisted,
|
|
40
59
|
addPersisterListener,
|
|
41
60
|
delPersisterListener,
|
|
61
|
+
onIgnoredError,
|
|
62
|
+
scheduleId = [],
|
|
42
63
|
) => {
|
|
43
64
|
let listenerId;
|
|
44
65
|
let loadSave = 0;
|
|
45
66
|
let loads = 0;
|
|
46
67
|
let saves = 0;
|
|
47
|
-
let running = 0;
|
|
48
68
|
let listening = 0;
|
|
49
69
|
let action;
|
|
50
70
|
let listeningHandle;
|
|
51
|
-
|
|
71
|
+
mapEnsure(scheduleRunning, scheduleId, () => 0);
|
|
72
|
+
mapEnsure(scheduleActions, scheduleId, () => []);
|
|
52
73
|
const run = async () => {
|
|
53
74
|
/* istanbul ignore else */
|
|
54
|
-
if (!
|
|
55
|
-
|
|
56
|
-
while (
|
|
75
|
+
if (!mapGet(scheduleRunning, scheduleId)) {
|
|
76
|
+
mapSet(scheduleRunning, scheduleId, 1);
|
|
77
|
+
while (
|
|
78
|
+
!isUndefined((action = arrayShift(mapGet(scheduleActions, scheduleId))))
|
|
79
|
+
) {
|
|
57
80
|
try {
|
|
58
81
|
await action();
|
|
59
|
-
} catch {
|
|
82
|
+
} catch (error) {
|
|
83
|
+
/* istanbul ignore next */
|
|
84
|
+
onIgnoredError?.(error);
|
|
85
|
+
}
|
|
60
86
|
}
|
|
61
|
-
|
|
87
|
+
mapSet(scheduleRunning, scheduleId, 0);
|
|
62
88
|
}
|
|
63
89
|
};
|
|
64
90
|
const loadLock = async (actions) => {
|
|
@@ -89,16 +115,22 @@ const createCustomPersister = (
|
|
|
89
115
|
await persister.load(initialTables, initialValues);
|
|
90
116
|
listening = 1;
|
|
91
117
|
listeningHandle = addPersisterListener(
|
|
92
|
-
async (getContent, getTransactionChanges) =>
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
118
|
+
async (getContent, getTransactionChanges) => {
|
|
119
|
+
if (getTransactionChanges) {
|
|
120
|
+
const transactionChanges = getTransactionChanges();
|
|
121
|
+
await loadLock(async () =>
|
|
122
|
+
store.setTransactionChanges(transactionChanges),
|
|
123
|
+
);
|
|
124
|
+
} else {
|
|
125
|
+
await loadLock(async () => {
|
|
97
126
|
try {
|
|
98
127
|
store.setContent(getContent?.() ?? (await getPersisted()));
|
|
99
|
-
} catch {
|
|
100
|
-
|
|
101
|
-
|
|
128
|
+
} catch (error) {
|
|
129
|
+
onIgnoredError?.(error);
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
},
|
|
102
134
|
);
|
|
103
135
|
return persister;
|
|
104
136
|
},
|
|
@@ -120,7 +152,10 @@ const createCustomPersister = (
|
|
|
120
152
|
await persister.schedule(async () => {
|
|
121
153
|
try {
|
|
122
154
|
await setPersisted(store.getContent, getTransactionChanges);
|
|
123
|
-
} catch {
|
|
155
|
+
} catch (error) {
|
|
156
|
+
/* istanbul ignore next */
|
|
157
|
+
onIgnoredError?.(error);
|
|
158
|
+
}
|
|
124
159
|
loadSave = 0;
|
|
125
160
|
});
|
|
126
161
|
}
|
|
@@ -143,7 +178,7 @@ const createCustomPersister = (
|
|
|
143
178
|
return persister;
|
|
144
179
|
},
|
|
145
180
|
schedule: async (...actions) => {
|
|
146
|
-
arrayPush(
|
|
181
|
+
arrayPush(mapGet(scheduleActions, scheduleId), ...actions);
|
|
147
182
|
await run();
|
|
148
183
|
return persister;
|
|
149
184
|
},
|
|
@@ -154,18 +189,13 @@ const createCustomPersister = (
|
|
|
154
189
|
return objFreeze(persister);
|
|
155
190
|
};
|
|
156
191
|
|
|
157
|
-
const collForEach = (coll, cb) => coll?.forEach(cb);
|
|
158
|
-
|
|
159
|
-
const mapForEach = (map, cb) =>
|
|
160
|
-
collForEach(map, (value, key) => cb(key, value));
|
|
161
|
-
|
|
162
192
|
const tablesKey = 't';
|
|
163
193
|
const valuesKey = 'v';
|
|
164
194
|
const DELETE = 'delete';
|
|
165
195
|
const ensureYContent = (yContent) => {
|
|
166
196
|
if (!yContent.size) {
|
|
167
|
-
yContent.set(tablesKey, new Map());
|
|
168
|
-
yContent.set(valuesKey, new Map());
|
|
197
|
+
yContent.set(tablesKey, new Map$1());
|
|
198
|
+
yContent.set(valuesKey, new Map$1());
|
|
169
199
|
}
|
|
170
200
|
};
|
|
171
201
|
const getYContent = (yContent) => [
|
|
@@ -292,7 +322,7 @@ const setTransactionChangesToYDoc = (
|
|
|
292
322
|
const yMapMatch = (yMapOrParent, idInParent, obj, set) => {
|
|
293
323
|
const yMap = isUndefined(idInParent)
|
|
294
324
|
? yMapOrParent
|
|
295
|
-
: yMapOrParent.get(idInParent) ?? yMapOrParent.set(idInParent, new Map());
|
|
325
|
+
: yMapOrParent.get(idInParent) ?? yMapOrParent.set(idInParent, new Map$1());
|
|
296
326
|
let changed;
|
|
297
327
|
objMap(obj, (value, id) => {
|
|
298
328
|
if (set(yMap, id, value)) {
|
|
@@ -310,7 +340,12 @@ const yMapMatch = (yMapOrParent, idInParent, obj, set) => {
|
|
|
310
340
|
}
|
|
311
341
|
return changed;
|
|
312
342
|
};
|
|
313
|
-
const createYjsPersister = (
|
|
343
|
+
const createYjsPersister = (
|
|
344
|
+
store,
|
|
345
|
+
yDoc,
|
|
346
|
+
yMapName = TINYBASE,
|
|
347
|
+
onIgnoredError,
|
|
348
|
+
) => {
|
|
314
349
|
const yContent = yDoc.getMap(yMapName);
|
|
315
350
|
const getPersisted = async () =>
|
|
316
351
|
yContent.size
|
|
@@ -335,6 +370,7 @@ const createYjsPersister = (store, yDoc, yMapName = TINYBASE) => {
|
|
|
335
370
|
setPersisted,
|
|
336
371
|
addPersisterListener,
|
|
337
372
|
delPersisterListener,
|
|
373
|
+
onIgnoredError,
|
|
338
374
|
);
|
|
339
375
|
};
|
|
340
376
|
|
package/lib/debug/persisters.js
CHANGED
|
@@ -15,32 +15,55 @@ const isObject = (obj) =>
|
|
|
15
15
|
const objSize = (obj) => arrayLength(objIds(obj));
|
|
16
16
|
const objIsEmpty = (obj) => isObject(obj) && objSize(obj) == 0;
|
|
17
17
|
|
|
18
|
+
const collHas = (coll, keyOrValue) => coll?.has(keyOrValue) ?? false;
|
|
19
|
+
const collDel = (coll, keyOrValue) => coll?.delete(keyOrValue);
|
|
20
|
+
|
|
21
|
+
const mapNew = (entries) => new Map(entries);
|
|
22
|
+
const mapGet = (map, key) => map?.get(key);
|
|
23
|
+
const mapSet = (map, key, value) =>
|
|
24
|
+
isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
|
|
25
|
+
const mapEnsure = (map, key, getDefaultValue) => {
|
|
26
|
+
if (!collHas(map, key)) {
|
|
27
|
+
mapSet(map, key, getDefaultValue());
|
|
28
|
+
}
|
|
29
|
+
return mapGet(map, key);
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
const scheduleRunning = mapNew();
|
|
33
|
+
const scheduleActions = mapNew();
|
|
18
34
|
const createCustomPersister = (
|
|
19
35
|
store,
|
|
20
36
|
getPersisted,
|
|
21
37
|
setPersisted,
|
|
22
38
|
addPersisterListener,
|
|
23
39
|
delPersisterListener,
|
|
40
|
+
onIgnoredError,
|
|
41
|
+
scheduleId = [],
|
|
24
42
|
) => {
|
|
25
43
|
let listenerId;
|
|
26
44
|
let loadSave = 0;
|
|
27
45
|
let loads = 0;
|
|
28
46
|
let saves = 0;
|
|
29
|
-
let running = 0;
|
|
30
47
|
let listening = 0;
|
|
31
48
|
let action;
|
|
32
49
|
let listeningHandle;
|
|
33
|
-
|
|
50
|
+
mapEnsure(scheduleRunning, scheduleId, () => 0);
|
|
51
|
+
mapEnsure(scheduleActions, scheduleId, () => []);
|
|
34
52
|
const run = async () => {
|
|
35
53
|
/* istanbul ignore else */
|
|
36
|
-
if (!
|
|
37
|
-
|
|
38
|
-
while (
|
|
54
|
+
if (!mapGet(scheduleRunning, scheduleId)) {
|
|
55
|
+
mapSet(scheduleRunning, scheduleId, 1);
|
|
56
|
+
while (
|
|
57
|
+
!isUndefined((action = arrayShift(mapGet(scheduleActions, scheduleId))))
|
|
58
|
+
) {
|
|
39
59
|
try {
|
|
40
60
|
await action();
|
|
41
|
-
} catch {
|
|
61
|
+
} catch (error) {
|
|
62
|
+
/* istanbul ignore next */
|
|
63
|
+
onIgnoredError?.(error);
|
|
64
|
+
}
|
|
42
65
|
}
|
|
43
|
-
|
|
66
|
+
mapSet(scheduleRunning, scheduleId, 0);
|
|
44
67
|
}
|
|
45
68
|
};
|
|
46
69
|
const loadLock = async (actions) => {
|
|
@@ -71,16 +94,22 @@ const createCustomPersister = (
|
|
|
71
94
|
await persister.load(initialTables, initialValues);
|
|
72
95
|
listening = 1;
|
|
73
96
|
listeningHandle = addPersisterListener(
|
|
74
|
-
async (getContent, getTransactionChanges) =>
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
97
|
+
async (getContent, getTransactionChanges) => {
|
|
98
|
+
if (getTransactionChanges) {
|
|
99
|
+
const transactionChanges = getTransactionChanges();
|
|
100
|
+
await loadLock(async () =>
|
|
101
|
+
store.setTransactionChanges(transactionChanges),
|
|
102
|
+
);
|
|
103
|
+
} else {
|
|
104
|
+
await loadLock(async () => {
|
|
79
105
|
try {
|
|
80
106
|
store.setContent(getContent?.() ?? (await getPersisted()));
|
|
81
|
-
} catch {
|
|
82
|
-
|
|
83
|
-
|
|
107
|
+
} catch (error) {
|
|
108
|
+
onIgnoredError?.(error);
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
},
|
|
84
113
|
);
|
|
85
114
|
return persister;
|
|
86
115
|
},
|
|
@@ -102,7 +131,10 @@ const createCustomPersister = (
|
|
|
102
131
|
await persister.schedule(async () => {
|
|
103
132
|
try {
|
|
104
133
|
await setPersisted(store.getContent, getTransactionChanges);
|
|
105
|
-
} catch {
|
|
134
|
+
} catch (error) {
|
|
135
|
+
/* istanbul ignore next */
|
|
136
|
+
onIgnoredError?.(error);
|
|
137
|
+
}
|
|
106
138
|
loadSave = 0;
|
|
107
139
|
});
|
|
108
140
|
}
|
|
@@ -125,7 +157,7 @@ const createCustomPersister = (
|
|
|
125
157
|
return persister;
|
|
126
158
|
},
|
|
127
159
|
schedule: async (...actions) => {
|
|
128
|
-
arrayPush(
|
|
160
|
+
arrayPush(mapGet(scheduleActions, scheduleId), ...actions);
|
|
129
161
|
await run();
|
|
130
162
|
return persister;
|
|
131
163
|
},
|
package/lib/debug/tinybase.js
CHANGED
|
@@ -1013,32 +1013,41 @@ const createMetrics = getCreateFunction((store) => {
|
|
|
1013
1013
|
return objFreeze(metrics);
|
|
1014
1014
|
});
|
|
1015
1015
|
|
|
1016
|
+
const scheduleRunning = mapNew();
|
|
1017
|
+
const scheduleActions = mapNew();
|
|
1016
1018
|
const createCustomPersister = (
|
|
1017
1019
|
store,
|
|
1018
1020
|
getPersisted,
|
|
1019
1021
|
setPersisted,
|
|
1020
1022
|
addPersisterListener,
|
|
1021
1023
|
delPersisterListener,
|
|
1024
|
+
onIgnoredError,
|
|
1025
|
+
scheduleId = [],
|
|
1022
1026
|
) => {
|
|
1023
1027
|
let listenerId;
|
|
1024
1028
|
let loadSave = 0;
|
|
1025
1029
|
let loads = 0;
|
|
1026
1030
|
let saves = 0;
|
|
1027
|
-
let running = 0;
|
|
1028
1031
|
let listening = 0;
|
|
1029
1032
|
let action;
|
|
1030
1033
|
let listeningHandle;
|
|
1031
|
-
|
|
1034
|
+
mapEnsure(scheduleRunning, scheduleId, () => 0);
|
|
1035
|
+
mapEnsure(scheduleActions, scheduleId, () => []);
|
|
1032
1036
|
const run = async () => {
|
|
1033
1037
|
/* istanbul ignore else */
|
|
1034
|
-
if (!
|
|
1035
|
-
|
|
1036
|
-
while (
|
|
1038
|
+
if (!mapGet(scheduleRunning, scheduleId)) {
|
|
1039
|
+
mapSet(scheduleRunning, scheduleId, 1);
|
|
1040
|
+
while (
|
|
1041
|
+
!isUndefined((action = arrayShift(mapGet(scheduleActions, scheduleId))))
|
|
1042
|
+
) {
|
|
1037
1043
|
try {
|
|
1038
1044
|
await action();
|
|
1039
|
-
} catch {
|
|
1045
|
+
} catch (error) {
|
|
1046
|
+
/* istanbul ignore next */
|
|
1047
|
+
onIgnoredError?.(error);
|
|
1048
|
+
}
|
|
1040
1049
|
}
|
|
1041
|
-
|
|
1050
|
+
mapSet(scheduleRunning, scheduleId, 0);
|
|
1042
1051
|
}
|
|
1043
1052
|
};
|
|
1044
1053
|
const loadLock = async (actions) => {
|
|
@@ -1069,16 +1078,22 @@ const createCustomPersister = (
|
|
|
1069
1078
|
await persister.load(initialTables, initialValues);
|
|
1070
1079
|
listening = 1;
|
|
1071
1080
|
listeningHandle = addPersisterListener(
|
|
1072
|
-
async (getContent, getTransactionChanges) =>
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1081
|
+
async (getContent, getTransactionChanges) => {
|
|
1082
|
+
if (getTransactionChanges) {
|
|
1083
|
+
const transactionChanges = getTransactionChanges();
|
|
1084
|
+
await loadLock(async () =>
|
|
1085
|
+
store.setTransactionChanges(transactionChanges),
|
|
1086
|
+
);
|
|
1087
|
+
} else {
|
|
1088
|
+
await loadLock(async () => {
|
|
1077
1089
|
try {
|
|
1078
1090
|
store.setContent(getContent?.() ?? (await getPersisted()));
|
|
1079
|
-
} catch {
|
|
1080
|
-
|
|
1081
|
-
|
|
1091
|
+
} catch (error) {
|
|
1092
|
+
onIgnoredError?.(error);
|
|
1093
|
+
}
|
|
1094
|
+
});
|
|
1095
|
+
}
|
|
1096
|
+
},
|
|
1082
1097
|
);
|
|
1083
1098
|
return persister;
|
|
1084
1099
|
},
|
|
@@ -1100,7 +1115,10 @@ const createCustomPersister = (
|
|
|
1100
1115
|
await persister.schedule(async () => {
|
|
1101
1116
|
try {
|
|
1102
1117
|
await setPersisted(store.getContent, getTransactionChanges);
|
|
1103
|
-
} catch {
|
|
1118
|
+
} catch (error) {
|
|
1119
|
+
/* istanbul ignore next */
|
|
1120
|
+
onIgnoredError?.(error);
|
|
1121
|
+
}
|
|
1104
1122
|
loadSave = 0;
|
|
1105
1123
|
});
|
|
1106
1124
|
}
|
|
@@ -1123,7 +1141,7 @@ const createCustomPersister = (
|
|
|
1123
1141
|
return persister;
|
|
1124
1142
|
},
|
|
1125
1143
|
schedule: async (...actions) => {
|
|
1126
|
-
arrayPush(
|
|
1144
|
+
arrayPush(mapGet(scheduleActions, scheduleId), ...actions);
|
|
1127
1145
|
await run();
|
|
1128
1146
|
return persister;
|
|
1129
1147
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const t=t=>null==t,
|
|
1
|
+
const t=t=>null==t,n=(n,e,o)=>t(n)?null==o?void 0:o():e(n),e=Object,o=e.keys,l=e.freeze,u=(t,e)=>n(t,(t=>t[e])),i=(n,e)=>!t(u(n,e)),r=(t,n)=>(delete t[n],t),d=(t,n)=>((t,n)=>t.map(n))(e.entries(t),(([t,e])=>n(e,t))),c=t=>o(t).length,a=t=>(t=>t instanceof e&&t.constructor==e)(t)&&0==c(t),s=t=>new Map(t),v=(t,n)=>null==t?void 0:t.get(n),y=(n,e,o)=>{return t(o)?(u=e,null==(l=n)||l.delete(u),n):null==n?void 0:n.set(e,o);var l,u},h=(t,n,e)=>{var o,l,u;return l=n,null!=(u=null==(o=t)?void 0:o.has(l))&&u||y(t,n,e()),v(t,n)};var f=(t,n,e)=>new Promise(((o,l)=>{var u=t=>{try{r(e.next(t))}catch(t){l(t)}},i=t=>{try{r(e.throw(t))}catch(t){l(t)}},r=t=>t.done?o(t.value):Promise.resolve(t.value).then(u,i);r((e=e.apply(t,n)).next())}));const p=s(),g=s();var A=(t,n,e)=>new Promise(((o,l)=>{var u=t=>{try{r(e.next(t))}catch(t){l(t)}},i=t=>{try{r(e.throw(t))}catch(t){l(t)}},r=t=>t.done?o(t.value):Promise.resolve(t.value).then(u,i);r((e=e.apply(t,n)).next())}));const L=(t,n)=>[t[n].t,t[n].v],m=(n,e,o,l)=>{const u=t(e)?n:((t,n,e)=>(i(t,n)||(t[n]={}),t[n]))(n,e);let c;return d(o,((t,n)=>{l(u,n,t)&&(c=1)})),d(u,((t,n)=>{i(o,n)||(r(u,n),c=1)})),!t(e)&&a(u)&&r(n,e),c},S=(e,o,i="tinybase",s)=>(o.change((t=>t[i]={})),((e,o,u,i,r,d,c=[])=>{let s,A,L,m=0,S=0;h(p,c,(()=>0)),h(g,c,(()=>[]));const w=t=>f(void 0,null,(function*(){return 2!=m&&(m=1,yield x.schedule((()=>f(void 0,null,(function*(){yield t(),m=0}))))),x})),x={load:(t,n)=>f(void 0,null,(function*(){return yield w((()=>f(void 0,null,(function*(){try{e.setContent(yield o())}catch(o){e.setContent([t,n])}}))))})),startAutoLoad:(...t)=>f(void 0,[...t],(function*(t={},n={}){return x.stopAutoLoad(),yield x.load(t,n),S=1,L=i(((t,n)=>f(void 0,null,(function*(){if(n){const t=n();yield w((()=>f(void 0,null,(function*(){return e.setTransactionChanges(t)}))))}else yield w((()=>f(void 0,null,(function*(){var n;try{e.setContent(null!=(n=null==t?void 0:t())?n:yield o())}catch(t){null==d||d(t)}}))))})))),x})),stopAutoLoad:()=>(S&&(r(L),L=void 0,S=0),x),save:t=>f(void 0,null,(function*(){return 1!=m&&(m=2,yield x.schedule((()=>f(void 0,null,(function*(){try{yield u(e.getContent,t)}catch(t){null==d||d(t)}m=0}))))),x})),startAutoSave:()=>f(void 0,null,(function*(){return yield x.stopAutoSave().save(),s=e.addDidFinishTransactionListener(((t,n)=>{const[e,o]=n();a(e)&&a(o)||x.save((()=>[e,o]))})),x})),stopAutoSave:()=>(n(s,e.delListener),x),schedule:(...n)=>f(void 0,null,(function*(){return((t,...n)=>{t.push(...n)})(v(g,c),...n),yield f(void 0,null,(function*(){if(!v(p,c)){for(y(p,c,1);!t((n=v(g,c),A=n.shift()));)try{yield A()}catch(t){null==d||d(t)}y(p,c,0)}var n})),x})),getStore:()=>e,destroy:()=>x.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return l(x)})(e,(()=>A(void 0,null,(function*(){return 2==c(o.doc[i])?L(o.doc,i):void 0}))),((e,l)=>A(void 0,null,(function*(){return o.change((o=>((e,o,l,i)=>{((t,n)=>{a(t[n])&&(t[n]={t:{},v:{}})})(e,o);const[c,s]=L(e,o),v=()=>{y=1};let y=1;if(n(null==i?void 0:i(),(([e,o])=>{y=0,d(e,((e,o)=>y?0:t(e)?r(c,o):n(c[o],(o=>d(e,((e,l)=>y?0:t(e)?r(o,l):n(u(o,l),(n=>d(e,((e,o)=>t(e)?r(n,o):n[o]=e))),v)))),v))),d(o,((n,e)=>y?0:t(n)?r(s,e):s[e]=n))})),y){const[t,n]=l();m(c,void 0,t,((t,n,e)=>m(c,n,e,((t,n,e)=>m(t,n,e,((t,n,e)=>{if(u(t,n)!==e)return t[n]=e,1})))))),m(s,void 0,n,((t,n,e)=>{u(s,n)!==e&&(s[n]=e)}))}})(o,i,e,l)))}))),(t=>{const n=({doc:n})=>t((()=>L(n,i)));return o.on("change",n),n}),(t=>{o.removeListener("change",t)}),s));export{S as createAutomergePersister};
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const t=(t,e)=>t instanceof e,e=t=>null==t,n=Object,o=n.keys,
|
|
1
|
+
const t=(t,e)=>t instanceof e,e=t=>null==t,n=Object,o=n.keys,l=n.freeze,r=e=>(e=>t(e,n)&&e.constructor==n)(e)&&0==(t=>o(t).length)(e),u=JSON.parse,i=t=>new Map(t),a=(t,e)=>null==t?void 0:t.get(e),s=(t,n,o)=>{return e(o)?(r=n,null==(l=t)||l.delete(r),t):null==t?void 0:t.set(n,o);var l,r},d=(t,e,n)=>{var o,l,r;return l=e,null!=(r=null==(o=t)?void 0:o.has(l))&&r||s(t,e,n()),a(t,e)};var c=(t,e,n)=>new Promise(((o,l)=>{var r=t=>{try{i(n.next(t))}catch(t){l(t)}},u=t=>{try{i(n.throw(t))}catch(t){l(t)}},i=t=>t.done?o(t.value):Promise.resolve(t.value).then(r,u);i((n=n.apply(t,e)).next())}));const v=i(),y=i();var f=(t,e,n)=>new Promise(((o,l)=>{var r=t=>{try{i(n.next(t))}catch(t){l(t)}},u=t=>{try{i(n.throw(t))}catch(t){l(t)}},i=t=>t.done?o(t.value):Promise.resolve(t.value).then(r,u);i((n=n.apply(t,e)).next())}));const h="storage",p=globalThis.window,g=(o,i,g,S)=>((t,n,o,u,i,f,h=[])=>{let p,g,S,A=0,m=0;d(v,h,(()=>0)),d(y,h,(()=>[]));const w=t=>c(void 0,null,(function*(){return 2!=A&&(A=1,yield L.schedule((()=>c(void 0,null,(function*(){yield t(),A=0}))))),L})),L={load:(e,o)=>c(void 0,null,(function*(){return yield w((()=>c(void 0,null,(function*(){try{t.setContent(yield n())}catch(n){t.setContent([e,o])}}))))})),startAutoLoad:(...e)=>c(void 0,[...e],(function*(e={},o={}){return L.stopAutoLoad(),yield L.load(e,o),m=1,S=u(((e,o)=>c(void 0,null,(function*(){if(o){const e=o();yield w((()=>c(void 0,null,(function*(){return t.setTransactionChanges(e)}))))}else yield w((()=>c(void 0,null,(function*(){var o;try{t.setContent(null!=(o=null==e?void 0:e())?o:yield n())}catch(t){null==f||f(t)}}))))})))),L})),stopAutoLoad:()=>(m&&(i(S),S=void 0,m=0),L),save:e=>c(void 0,null,(function*(){return 1!=A&&(A=2,yield L.schedule((()=>c(void 0,null,(function*(){try{yield o(t.getContent,e)}catch(t){null==f||f(t)}A=0}))))),L})),startAutoSave:()=>c(void 0,null,(function*(){return yield L.stopAutoSave().save(),p=t.addDidFinishTransactionListener(((t,e)=>{const[n,o]=e();r(n)&&r(o)||L.save((()=>[n,o]))})),L})),stopAutoSave:()=>{var n,o;return n=p,o=t.delListener,!!e(n)||o(n),L},schedule:(...t)=>c(void 0,null,(function*(){return((t,...e)=>{t.push(...e)})(a(y,h),...t),yield c(void 0,null,(function*(){if(!a(v,h)){for(s(v,h,1);!e((t=a(y,h),g=t.shift()));)try{yield g()}catch(t){null==f||f(t)}s(v,h,0)}var t})),L})),getStore:()=>t,destroy:()=>L.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return l(L)})(o,(()=>f(void 0,null,(function*(){return u(g.getItem(i))}))),(e=>f(void 0,null,(function*(){return g.setItem(i,(o=e(),JSON.stringify(o,((e,o)=>t(o,Map)?n.fromEntries([...o]):o))));var o}))),(t=>{const e=e=>{e.storageArea===g&&e.key===i&&t((()=>u(e.newValue)))};return p.addEventListener(h,e),e}),(t=>p.removeEventListener(h,t)),S),S=(t,e,n)=>g(t,e,localStorage,n),A=(t,e,n)=>g(t,e,sessionStorage,n);export{S as createLocalPersister,A as createSessionPersister};
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=e=>typeof e,n="tinybase",
|
|
1
|
+
const e=e=>typeof e,n="tinybase",l=",",t=e(""),o=(e,n)=>e.repeat(n),r=(e,n="")=>e.join(n),i=(e,n)=>e.map(n),u=e=>e.length,d=e=>0==u(e),a=(e,n)=>e.filter(n),c=(e,n,l)=>e.slice(n,l),s=(e,...n)=>e.push(...n),v=Promise,y=(e,n)=>e instanceof n,f=e=>null==e,E=(e,n,l)=>f(e)?null==l?void 0:l():n(e),h=n=>e(n)==t,p=e=>{return n=function*(){return v.all(e)},new Promise(((e,l)=>{var t=e=>{try{r(n.next(e))}catch(e){l(e)}},o=e=>{try{r(n.throw(e))}catch(e){l(e)}},r=n=>n.done?e(n.value):Promise.resolve(n.value).then(t,o);r((n=n.apply(void 0,null)).next())}));var n},m=(e,n)=>{var l;return null!=(l=null==e?void 0:e.has(n))&&l},T=e=>{var n;return[...null!=(n=null==e?void 0:e.values())?n:[]]},O=(e,n)=>null==e?void 0:e.delete(n),A=Object,L=A.keys,P=A.freeze,b=(e=[])=>A.fromEntries(e),w=(...e)=>A.assign({},...e),N=(e,n)=>i(A.entries(e),(([e,l])=>n(l,e))),R=e=>A.values(e),x=e=>u(L(e)),S=e=>(e=>y(e,A)&&e.constructor==A)(e)&&0==x(e),C=e=>new Map(e),g=e=>{var n;return[...null!=(n=null==e?void 0:e.keys())?n:[]]},D=(e,n)=>null==e?void 0:e.get(n),I=(e,n)=>{var l;return i([...null!=(l=null==e?void 0:e.entries())?l:[]],(([e,l])=>n(l,e)))},F=(e,n,l)=>f(l)?(O(e,n),e):null==e?void 0:e.set(n,l),M=(e,n,l)=>(m(e,n)||F(e,n,l()),D(e,n)),$=(e,n,l,t=F)=>(N(n,((n,t)=>l(e,t,n))),((e,n)=>{((e,n)=>{null==e||e.forEach(n)})(e,((e,l)=>n(l)))})(e,(l=>((e,n)=>!f(((e,n)=>E(e,(e=>e[n])))(e,n)))(n,l)?0:t(e,l))),e),j=e=>new Set(Array.isArray(e)||f(e)?e:[e]),_=(e,n)=>null==e?void 0:e.add(n),B="_",H="_id",W=e=>`"${e.replace(/"/g,'""')}"`;var U=Object.defineProperty,k=Object.getOwnPropertySymbols,J=Object.prototype.hasOwnProperty,Y=Object.prototype.propertyIsEnumerable,z=(e,n,l)=>n in e?U(e,n,{enumerable:!0,configurable:!0,writable:!0,value:l}):e[n]=l,G=(e,n)=>{for(var l in n||(n={}))J.call(n,l)&&z(e,l,n[l]);if(k)for(var l of k(n))Y.call(n,l)&&z(e,l,n[l]);return e},K=(e,n,l)=>new Promise(((t,o)=>{var r=e=>{try{u(l.next(e))}catch(e){o(e)}},i=e=>{try{u(l.throw(e))}catch(e){o(e)}},u=e=>e.done?t(e.value):Promise.resolve(e.value).then(r,i);u((l=l.apply(e,n)).next())}));const V="FROM pragma_table_",q="WHERE",Q=(e,n,t)=>{const o=C();return[()=>K(void 0,null,(function*(){return $(o,b(yield p(i(yield e("SELECT name "+V+"list WHERE schema='main'AND type='table'AND name IN("+Z(n)+")",n),(n=>K(void 0,[n],(function*({name:n}){return[n,b(i(yield e("SELECT name,type "+V+"info(?)",[n]),(({name:e,type:n})=>[e,n])))]})))))),((e,n,l)=>F(o,n,$(M(o,n,C),l,((e,n,l)=>{l!=D(e,n)&&F(e,n,l)}),((e,n)=>F(e,n))))),((e,n)=>F(o,n)))})),(n,l)=>K(void 0,null,(function*(){return((e,n)=>!f(D(D(o,e),n)))(n,l)?b(a(i(yield e("SELECT*FROM"+W(n)),(e=>{return[e[l],(n=G({},e),t=l,delete n[t],n)];var n,t})),(([e,n])=>!f(e)&&!S(n)))):{}})),(n,t,u,c,v,y=!1)=>K(void 0,null,(function*(){const E=j();N(null!=u?u:{},(e=>i(L(null!=e?e:{}),(e=>_(E,e)))));const h=T(E);if(!y&&v&&d(h)&&m(o,n))return yield e("DROP TABLE"+W(n)),void F(o,n);if(d(h)||m(o,n)){const l=D(o,n),r=j(g(l));yield p([...i(h,(t=>K(void 0,null,(function*(){O(r,t)||(yield e(`ALTER TABLE${W(n)}ADD${W(t)}`),F(l,t,""))})))),...!y&&c?i(T(r),(o=>K(void 0,null,(function*(){o!=t&&(yield e(`ALTER TABLE${W(n)}DROP${W(o)}`),F(l,o))})))):[]])}else yield e(`CREATE TABLE${W(n)}(${W(t)} PRIMARY KEY ON CONFLICT REPLACE${r(i(h,(e=>l+W(e))))});`),F(o,n,C([[t,""],...i(h,(e=>[e,""]))]));if(y)f(u)?yield e("DELETE FROM"+W(n)+"WHERE 1"):yield p(N(u,((l,o)=>K(void 0,null,(function*(){f(l)?yield e("DELETE FROM"+W(n)+q+W(t)+"=?",[o]):d(h)||(yield X(e,n,t,L(l),[o,...R(l)]))})))));else if(d(h))m(o,n)&&(yield e("DELETE FROM"+W(n)+"WHERE 1"));else{const l=a(g(D(o,n)),(e=>e!=t)),r=[],d=[];N(null!=u?u:{},((e,n)=>{s(r,n,...i(l,(n=>null==e?void 0:e[n]))),s(d,n)})),yield X(e,n,t,l,r),yield e("DELETE FROM"+W(n)+q+W(t)+"NOT IN("+Z(d)+")",d)}})),n=>K(void 0,null,(function*(){let l;yield e("BEGIN");try{l=yield n()}catch(e){null==t||t(e)}return yield e("END"),l}))]},X=(e,n,t,d,a)=>K(void 0,null,(function*(){return yield e("INSERT INTO"+W(n)+"("+W(t)+r(i(d,(e=>l+W(e))))+")VALUES"+o(`,(?${o(",?",u(d))})`,u(a)/(u(d)+1)).substring(1)+"ON CONFLICT("+W(t)+")DO UPDATE SET"+r(i(d,(e=>W(e)+"=excluded."+W(e))),l),a)})),Z=e=>r(i(e,(()=>"?")),l),ee=JSON.parse;var ne=(e,n,l)=>new Promise(((t,o)=>{var r=e=>{try{u(l.next(e))}catch(e){o(e)}},i=e=>{try{u(l.throw(e))}catch(e){o(e)}},u=e=>e.done?t(e.value):Promise.resolve(e.value).then(r,i);u((l=l.apply(e,n)).next())}));const le=C(),te=C(),oe=(e,n,l,t,o,r,i=[])=>{let u,d,a,c=0,v=0;M(le,i,(()=>0)),M(te,i,(()=>[]));const y=e=>ne(void 0,null,(function*(){return 2!=c&&(c=1,yield h.schedule((()=>ne(void 0,null,(function*(){yield e(),c=0}))))),h})),h={load:(l,t)=>ne(void 0,null,(function*(){return yield y((()=>ne(void 0,null,(function*(){try{e.setContent(yield n())}catch(n){e.setContent([l,t])}}))))})),startAutoLoad:(...l)=>ne(void 0,[...l],(function*(l={},o={}){return h.stopAutoLoad(),yield h.load(l,o),v=1,a=t(((l,t)=>ne(void 0,null,(function*(){if(t){const n=t();yield y((()=>ne(void 0,null,(function*(){return e.setTransactionChanges(n)}))))}else yield y((()=>ne(void 0,null,(function*(){var t;try{e.setContent(null!=(t=null==l?void 0:l())?t:yield n())}catch(e){null==r||r(e)}}))))})))),h})),stopAutoLoad:()=>(v&&(o(a),a=void 0,v=0),h),save:n=>ne(void 0,null,(function*(){return 1!=c&&(c=2,yield h.schedule((()=>ne(void 0,null,(function*(){try{yield l(e.getContent,n)}catch(e){null==r||r(e)}c=0}))))),h})),startAutoSave:()=>ne(void 0,null,(function*(){return yield h.stopAutoSave().save(),u=e.addDidFinishTransactionListener(((e,n)=>{const[l,t]=n();S(l)&&S(t)||h.save((()=>[l,t]))})),h})),stopAutoSave:()=>(E(u,e.delListener),h),schedule:(...e)=>ne(void 0,null,(function*(){return s(D(te,i),...e),yield ne(void 0,null,(function*(){if(!D(le,i)){for(F(le,i,1);!f((e=D(te,i),d=e.shift()));)try{yield d()}catch(e){null==r||r(e)}F(le,i,0)}var e})),h})),getStore:()=>e,destroy:()=>h.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return P(h)};var re=(e,n,l)=>new Promise(((t,o)=>{var r=e=>{try{u(l.next(e))}catch(e){o(e)}},i=e=>{try{u(l.throw(e))}catch(e){o(e)}},u=e=>e.done?t(e.value):Promise.resolve(e.value).then(r,i);u((l=l.apply(e,n)).next())}));const ie="store",ue=(e,n,l,t,o,[r],i,u)=>{const[d,a,c,s]=Q(n,i,o);return oe(e,(()=>re(void 0,null,(function*(){return yield s((()=>re(void 0,null,(function*(){var e,n;return yield d(),ee(null!=(n=null==(e=(yield a(r,H))[B])?void 0:e[ie])?n:"null")}))))}))),(e=>re(void 0,null,(function*(){return yield s((()=>re(void 0,null,(function*(){var n,l;yield d(),yield c(r,H,{[B]:{[ie]:(l=null!=(n=e())?n:null,JSON.stringify(l,((e,n)=>y(n,Map)?A.fromEntries([...n]):n)))}},!0,!0)}))))}))),l,t,o,u)};var de=(e,n,l)=>new Promise(((t,o)=>{var r=e=>{try{u(l.next(e))}catch(e){o(e)}},i=e=>{try{u(l.throw(e))}catch(e){o(e)}},u=e=>e.done?t(e.value):Promise.resolve(e.value).then(r,i);u((l=l.apply(e,n)).next())}));const ae=(e,n,l,t,o,[r,i,[u,d,c]],s,v)=>{const[y,E,h,m]=Q(n,s,o),T=(e,n)=>de(void 0,null,(function*(){return yield p(I(i,((l,t)=>de(void 0,[l,t],(function*([l,t,o,r],i){const u=e[i];n&&void 0===u||(yield h(l,t,u,o,r,n))})))))})),O=(e,n)=>de(void 0,null,(function*(){return d?yield h(c,H,{[B]:e},!0,!0,n):null}));return oe(e,(()=>de(void 0,null,(function*(){return yield m((()=>de(void 0,null,(function*(){yield y();const e=yield de(void 0,null,(function*(){return b(a(yield p(I(r,((e,n)=>de(void 0,[e,n],(function*([e,n],l){return[e,yield E(l,n)]}))))),(e=>!S(e[1]))))})),n=yield de(void 0,null,(function*(){return u?(yield E(c,H))[B]:{}}));return S(e)&&f(n)?void 0:[e,n]}))))}))),((e,n)=>de(void 0,null,(function*(){return yield m((()=>de(void 0,null,(function*(){if(yield y(),f(n)){const[n,l]=e();yield T(n),yield O(l)}else{const[e,l]=n();yield T(e,!0),yield O(l,!0)}}))))}))),l,t,o,v)},ce="json",se="autoLoadIntervalSeconds",ve="rowIdColumnName",ye="tableId",fe="tableName",Ee={mode:ce,[se]:1},he={load:0,save:0,[fe]:n+"_values"},pe=(e,n,l,t)=>{const o=C();return N(e,((e,r)=>{const i=c(R(w(n,h(e)?{[l]:e}:e)),0,x(n));f(i[0])||t(r,i[0])||F(o,r,i)})),o};var me=(e,n,l)=>new Promise(((t,o)=>{var r=e=>{try{u(l.next(e))}catch(e){o(e)}},i=e=>{try{u(l.throw(e))}catch(e){o(e)}},u=e=>e.done?t(e.value):Promise.resolve(e.value).then(r,i);u((l=l.apply(e,n)).next())}));const Te="pragma ",Oe="data_version",Ae="schema_version",Le=(e,l,t,o,r,i,u,d)=>{let a,s;const[v,y,f,E]=(e=>{const l=(e=>w(Ee,h(e)?{storeTableName:e}:null!=e?e:{}))(e),t=l[se];if(l.mode==ce){const{storeTableName:e=n}=l;return[1,t,[e],j(e)]}const{tables:{load:o={},save:r={}}={},values:i={}}=l,u=c(R(w(he,i)),0,x(he)),d=u[2],a=j(d);return[0,t,[pe(o,{[ye]:null,[ve]:H},ye,(e=>_(a,e)&&e==d)),pe(r,{[fe]:null,[ve]:H,deleteEmptyColumns:0,deleteEmptyTable:0},fe,((e,n)=>_(a,n)&&n==d)),u],a]})(l);return(v?ue:ae)(e,i?(e,n)=>me(void 0,null,(function*(){return i(e,n),yield t(e,n)})):t,(e=>[setInterval((()=>me(void 0,null,(function*(){try{const n=(yield t(Te+Oe))[0][Oe],l=(yield t(Te+Ae))[0][Ae];n==(null!=a?a:a=n)&&l==(null!=s?s:s=l)||(e(),a=n,s=l)}catch(e){}}))),1e3*y),o((n=>E.has(n)?e():0))]),(([e,n])=>{clearInterval(e),a=s=null,r(n)}),u,f,T(E),d)},Pe=(e,n,l,t,o)=>Le(e,l,((e,...l)=>{return t=[e,...l],o=function*(e,l=[]){return yield n.execO(e,l)},new Promise(((e,n)=>{var l=e=>{try{i(o.next(e))}catch(e){n(e)}},r=e=>{try{i(o.throw(e))}catch(e){n(e)}},i=n=>n.done?e(n.value):Promise.resolve(n.value).then(l,r);i((o=o.apply(void 0,t)).next())}));var t,o}),(e=>n.onUpdate(((n,l,t)=>e(t)))),(e=>e()),t,o,n);export{Pe as createCrSqliteWasmPersister};
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=e=>typeof e,n="tinybase",
|
|
1
|
+
const e=e=>typeof e,n="tinybase",l=",",t=e(""),o=(e,n)=>e.repeat(n),r=(e,n="")=>e.join(n),i=(e,n)=>e.map(n),u=e=>e.length,a=e=>0==u(e),d=(e,n)=>e.filter(n),c=(e,n,l)=>e.slice(n,l),s=(e,...n)=>e.push(...n),v=Promise,y=(e,n)=>e instanceof n,f=e=>null==e,h=(e,n,l)=>f(e)?null==l?void 0:l():n(e),E=n=>e(n)==t,p=e=>{return n=function*(){return v.all(e)},new Promise(((e,l)=>{var t=e=>{try{r(n.next(e))}catch(e){l(e)}},o=e=>{try{r(n.throw(e))}catch(e){l(e)}},r=n=>n.done?e(n.value):Promise.resolve(n.value).then(t,o);r((n=n.apply(void 0,null)).next())}));var n},m=(e,n)=>{var l;return null!=(l=null==e?void 0:e.has(n))&&l},T=e=>{var n;return[...null!=(n=null==e?void 0:e.values())?n:[]]},A=(e,n)=>null==e?void 0:e.delete(n),L=Object,O=L.keys,P=L.freeze,b=(e=[])=>L.fromEntries(e),w=(...e)=>L.assign({},...e),N=(e,n)=>i(L.entries(e),(([e,l])=>n(l,e))),R=e=>L.values(e),x=e=>u(O(e)),C=e=>(e=>y(e,L)&&e.constructor==L)(e)&&0==x(e),S=e=>new Map(e),g=e=>{var n;return[...null!=(n=null==e?void 0:e.keys())?n:[]]},D=(e,n)=>null==e?void 0:e.get(n),I=(e,n)=>{var l;return i([...null!=(l=null==e?void 0:e.entries())?l:[]],(([e,l])=>n(l,e)))},F=(e,n,l)=>f(l)?(A(e,n),e):null==e?void 0:e.set(n,l),M=(e,n,l)=>(m(e,n)||F(e,n,l()),D(e,n)),$=(e,n,l,t=F)=>(N(n,((n,t)=>l(e,t,n))),((e,n)=>{((e,n)=>{null==e||e.forEach(n)})(e,((e,l)=>n(l)))})(e,(l=>((e,n)=>!f(((e,n)=>h(e,(e=>e[n])))(e,n)))(n,l)?0:t(e,l))),e),j=e=>new Set(Array.isArray(e)||f(e)?e:[e]),_=(e,n)=>null==e?void 0:e.add(n),B="_",H="_id",W=e=>`"${e.replace(/"/g,'""')}"`;var k=Object.defineProperty,J=Object.getOwnPropertySymbols,U=Object.prototype.hasOwnProperty,Y=Object.prototype.propertyIsEnumerable,q=(e,n,l)=>n in e?k(e,n,{enumerable:!0,configurable:!0,writable:!0,value:l}):e[n]=l,z=(e,n)=>{for(var l in n||(n={}))U.call(n,l)&&q(e,l,n[l]);if(J)for(var l of J(n))Y.call(n,l)&&q(e,l,n[l]);return e},G=(e,n,l)=>new Promise(((t,o)=>{var r=e=>{try{u(l.next(e))}catch(e){o(e)}},i=e=>{try{u(l.throw(e))}catch(e){o(e)}},u=e=>e.done?t(e.value):Promise.resolve(e.value).then(r,i);u((l=l.apply(e,n)).next())}));const K="FROM pragma_table_",V="WHERE",Q=(e,n,t)=>{const o=S();return[()=>G(void 0,null,(function*(){return $(o,b(yield p(i(yield e("SELECT name "+K+"list WHERE schema='main'AND type='table'AND name IN("+Z(n)+")",n),(n=>G(void 0,[n],(function*({name:n}){return[n,b(i(yield e("SELECT name,type "+K+"info(?)",[n]),(({name:e,type:n})=>[e,n])))]})))))),((e,n,l)=>F(o,n,$(M(o,n,S),l,((e,n,l)=>{l!=D(e,n)&&F(e,n,l)}),((e,n)=>F(e,n))))),((e,n)=>F(o,n)))})),(n,l)=>G(void 0,null,(function*(){return((e,n)=>!f(D(D(o,e),n)))(n,l)?b(d(i(yield e("SELECT*FROM"+W(n)),(e=>{return[e[l],(n=z({},e),t=l,delete n[t],n)];var n,t})),(([e,n])=>!f(e)&&!C(n)))):{}})),(n,t,u,c,v,y=!1)=>G(void 0,null,(function*(){const h=j();N(null!=u?u:{},(e=>i(O(null!=e?e:{}),(e=>_(h,e)))));const E=T(h);if(!y&&v&&a(E)&&m(o,n))return yield e("DROP TABLE"+W(n)),void F(o,n);if(a(E)||m(o,n)){const l=D(o,n),r=j(g(l));yield p([...i(E,(t=>G(void 0,null,(function*(){A(r,t)||(yield e(`ALTER TABLE${W(n)}ADD${W(t)}`),F(l,t,""))})))),...!y&&c?i(T(r),(o=>G(void 0,null,(function*(){o!=t&&(yield e(`ALTER TABLE${W(n)}DROP${W(o)}`),F(l,o))})))):[]])}else yield e(`CREATE TABLE${W(n)}(${W(t)} PRIMARY KEY ON CONFLICT REPLACE${r(i(E,(e=>l+W(e))))});`),F(o,n,S([[t,""],...i(E,(e=>[e,""]))]));if(y)f(u)?yield e("DELETE FROM"+W(n)+"WHERE 1"):yield p(N(u,((l,o)=>G(void 0,null,(function*(){f(l)?yield e("DELETE FROM"+W(n)+V+W(t)+"=?",[o]):a(E)||(yield X(e,n,t,O(l),[o,...R(l)]))})))));else if(a(E))m(o,n)&&(yield e("DELETE FROM"+W(n)+"WHERE 1"));else{const l=d(g(D(o,n)),(e=>e!=t)),r=[],a=[];N(null!=u?u:{},((e,n)=>{s(r,n,...i(l,(n=>null==e?void 0:e[n]))),s(a,n)})),yield X(e,n,t,l,r),yield e("DELETE FROM"+W(n)+V+W(t)+"NOT IN("+Z(a)+")",a)}})),n=>G(void 0,null,(function*(){let l;yield e("BEGIN");try{l=yield n()}catch(e){null==t||t(e)}return yield e("END"),l}))]},X=(e,n,t,a,d)=>G(void 0,null,(function*(){return yield e("INSERT INTO"+W(n)+"("+W(t)+r(i(a,(e=>l+W(e))))+")VALUES"+o(`,(?${o(",?",u(a))})`,u(d)/(u(a)+1)).substring(1)+"ON CONFLICT("+W(t)+")DO UPDATE SET"+r(i(a,(e=>W(e)+"=excluded."+W(e))),l),d)})),Z=e=>r(i(e,(()=>"?")),l),ee=JSON.parse;var ne=(e,n,l)=>new Promise(((t,o)=>{var r=e=>{try{u(l.next(e))}catch(e){o(e)}},i=e=>{try{u(l.throw(e))}catch(e){o(e)}},u=e=>e.done?t(e.value):Promise.resolve(e.value).then(r,i);u((l=l.apply(e,n)).next())}));const le=S(),te=S(),oe=(e,n,l,t,o,r,i=[])=>{let u,a,d,c=0,v=0;M(le,i,(()=>0)),M(te,i,(()=>[]));const y=e=>ne(void 0,null,(function*(){return 2!=c&&(c=1,yield E.schedule((()=>ne(void 0,null,(function*(){yield e(),c=0}))))),E})),E={load:(l,t)=>ne(void 0,null,(function*(){return yield y((()=>ne(void 0,null,(function*(){try{e.setContent(yield n())}catch(n){e.setContent([l,t])}}))))})),startAutoLoad:(...l)=>ne(void 0,[...l],(function*(l={},o={}){return E.stopAutoLoad(),yield E.load(l,o),v=1,d=t(((l,t)=>ne(void 0,null,(function*(){if(t){const n=t();yield y((()=>ne(void 0,null,(function*(){return e.setTransactionChanges(n)}))))}else yield y((()=>ne(void 0,null,(function*(){var t;try{e.setContent(null!=(t=null==l?void 0:l())?t:yield n())}catch(e){null==r||r(e)}}))))})))),E})),stopAutoLoad:()=>(v&&(o(d),d=void 0,v=0),E),save:n=>ne(void 0,null,(function*(){return 1!=c&&(c=2,yield E.schedule((()=>ne(void 0,null,(function*(){try{yield l(e.getContent,n)}catch(e){null==r||r(e)}c=0}))))),E})),startAutoSave:()=>ne(void 0,null,(function*(){return yield E.stopAutoSave().save(),u=e.addDidFinishTransactionListener(((e,n)=>{const[l,t]=n();C(l)&&C(t)||E.save((()=>[l,t]))})),E})),stopAutoSave:()=>(h(u,e.delListener),E),schedule:(...e)=>ne(void 0,null,(function*(){return s(D(te,i),...e),yield ne(void 0,null,(function*(){if(!D(le,i)){for(F(le,i,1);!f((e=D(te,i),a=e.shift()));)try{yield a()}catch(e){null==r||r(e)}F(le,i,0)}var e})),E})),getStore:()=>e,destroy:()=>E.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return P(E)};var re=(e,n,l)=>new Promise(((t,o)=>{var r=e=>{try{u(l.next(e))}catch(e){o(e)}},i=e=>{try{u(l.throw(e))}catch(e){o(e)}},u=e=>e.done?t(e.value):Promise.resolve(e.value).then(r,i);u((l=l.apply(e,n)).next())}));const ie="store",ue=(e,n,l,t,o,[r],i,u)=>{const[a,d,c,s]=Q(n,i,o);return oe(e,(()=>re(void 0,null,(function*(){return yield s((()=>re(void 0,null,(function*(){var e,n;return yield a(),ee(null!=(n=null==(e=(yield d(r,H))[B])?void 0:e[ie])?n:"null")}))))}))),(e=>re(void 0,null,(function*(){return yield s((()=>re(void 0,null,(function*(){var n,l;yield a(),yield c(r,H,{[B]:{[ie]:(l=null!=(n=e())?n:null,JSON.stringify(l,((e,n)=>y(n,Map)?L.fromEntries([...n]):n)))}},!0,!0)}))))}))),l,t,o,u)};var ae=(e,n,l)=>new Promise(((t,o)=>{var r=e=>{try{u(l.next(e))}catch(e){o(e)}},i=e=>{try{u(l.throw(e))}catch(e){o(e)}},u=e=>e.done?t(e.value):Promise.resolve(e.value).then(r,i);u((l=l.apply(e,n)).next())}));const de=(e,n,l,t,o,[r,i,[u,a,c]],s,v)=>{const[y,h,E,m]=Q(n,s,o),T=(e,n)=>ae(void 0,null,(function*(){return yield p(I(i,((l,t)=>ae(void 0,[l,t],(function*([l,t,o,r],i){const u=e[i];n&&void 0===u||(yield E(l,t,u,o,r,n))})))))})),A=(e,n)=>ae(void 0,null,(function*(){return a?yield E(c,H,{[B]:e},!0,!0,n):null}));return oe(e,(()=>ae(void 0,null,(function*(){return yield m((()=>ae(void 0,null,(function*(){yield y();const e=yield ae(void 0,null,(function*(){return b(d(yield p(I(r,((e,n)=>ae(void 0,[e,n],(function*([e,n],l){return[e,yield h(l,n)]}))))),(e=>!C(e[1]))))})),n=yield ae(void 0,null,(function*(){return u?(yield h(c,H))[B]:{}}));return C(e)&&f(n)?void 0:[e,n]}))))}))),((e,n)=>ae(void 0,null,(function*(){return yield m((()=>ae(void 0,null,(function*(){if(yield y(),f(n)){const[n,l]=e();yield T(n),yield A(l)}else{const[e,l]=n();yield T(e,!0),yield A(l,!0)}}))))}))),l,t,o,v)},ce="json",se="autoLoadIntervalSeconds",ve="rowIdColumnName",ye="tableId",fe="tableName",he={mode:ce,[se]:1},Ee={load:0,save:0,[fe]:n+"_values"},pe=(e,n,l,t)=>{const o=S();return N(e,((e,r)=>{const i=c(R(w(n,E(e)?{[l]:e}:e)),0,x(n));f(i[0])||t(r,i[0])||F(o,r,i)})),o};var me=(e,n,l)=>new Promise(((t,o)=>{var r=e=>{try{u(l.next(e))}catch(e){o(e)}},i=e=>{try{u(l.throw(e))}catch(e){o(e)}},u=e=>e.done?t(e.value):Promise.resolve(e.value).then(r,i);u((l=l.apply(e,n)).next())}));const Te="pragma ",Ae="data_version",Le="schema_version",Oe=(e,l,t,o,r,i,u,a)=>{let d,s;const[v,y,f,h]=(e=>{const l=(e=>w(he,E(e)?{storeTableName:e}:null!=e?e:{}))(e),t=l[se];if(l.mode==ce){const{storeTableName:e=n}=l;return[1,t,[e],j(e)]}const{tables:{load:o={},save:r={}}={},values:i={}}=l,u=c(R(w(Ee,i)),0,x(Ee)),a=u[2],d=j(a);return[0,t,[pe(o,{[ye]:null,[ve]:H},ye,(e=>_(d,e)&&e==a)),pe(r,{[fe]:null,[ve]:H,deleteEmptyColumns:0,deleteEmptyTable:0},fe,((e,n)=>_(d,n)&&n==a)),u],d]})(l);return(v?ue:de)(e,i?(e,n)=>me(void 0,null,(function*(){return i(e,n),yield t(e,n)})):t,(e=>[setInterval((()=>me(void 0,null,(function*(){try{const n=(yield t(Te+Ae))[0][Ae],l=(yield t(Te+Le))[0][Le];n==(null!=d?d:d=n)&&l==(null!=s?s:s=l)||(e(),d=n,s=l)}catch(e){}}))),1e3*y),o((n=>h.has(n)?e():0))]),(([e,n])=>{clearInterval(e),d=s=null,r(n)}),u,f,T(h),a)},Pe=(e,n,l,t,o)=>Oe(e,l,((e,...l)=>{return t=[e,...l],o=function*(e,l=[]){return(yield n.execAsync([{sql:e,args:l}],!1))[0].rows},new Promise(((e,n)=>{var l=e=>{try{i(o.next(e))}catch(e){n(e)}},r=e=>{try{i(o.throw(e))}catch(e){n(e)}},i=n=>n.done?e(n.value):Promise.resolve(n.value).then(l,r);i((o=o.apply(void 0,t)).next())}));var t,o}),(e=>n.onDatabaseChange((({tableName:n})=>e(n)))),(e=>e.remove()),t,o,n);export{Pe as createExpoSqlitePersister};
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{watch as t}from"fs";import{readFile as
|
|
1
|
+
import{watch as t}from"fs";import{readFile as n,writeFile as e}from"fs/promises";const o="utf8",l=(t,n)=>t instanceof n,r=t=>null==t,i=Object,u=i.keys,s=i.freeze,d=t=>(t=>l(t,i)&&t.constructor==i)(t)&&0==(t=>u(t).length)(t),a=JSON.parse,c=t=>new Map(t),v=(t,n)=>null==t?void 0:t.get(n),f=(t,n,e)=>{return r(e)?(l=n,null==(o=t)||o.delete(l),t):null==t?void 0:t.set(n,e);var o,l},y=(t,n,e)=>{var o,l,r;return l=n,null!=(r=null==(o=t)?void 0:o.has(l))&&r||f(t,n,e()),v(t,n)};var h=(t,n,e)=>new Promise(((o,l)=>{var r=t=>{try{u(e.next(t))}catch(t){l(t)}},i=t=>{try{u(e.throw(t))}catch(t){l(t)}},u=t=>t.done?o(t.value):Promise.resolve(t.value).then(r,i);u((e=e.apply(t,n)).next())}));const p=c(),m=c();var A=(t,n,e)=>new Promise(((o,l)=>{var r=t=>{try{u(e.next(t))}catch(t){l(t)}},i=t=>{try{u(e.throw(t))}catch(t){l(t)}},u=t=>t.done?o(t.value):Promise.resolve(t.value).then(r,i);u((e=e.apply(t,n)).next())}));const S=(u,c,S)=>((t,n,e,o,l,i,u=[])=>{let a,c,A,S=0,g=0;y(p,u,(()=>0)),y(m,u,(()=>[]));const L=t=>h(void 0,null,(function*(){return 2!=S&&(S=1,yield w.schedule((()=>h(void 0,null,(function*(){yield t(),S=0}))))),w})),w={load:(e,o)=>h(void 0,null,(function*(){return yield L((()=>h(void 0,null,(function*(){try{t.setContent(yield n())}catch(n){t.setContent([e,o])}}))))})),startAutoLoad:(...e)=>h(void 0,[...e],(function*(e={},l={}){return w.stopAutoLoad(),yield w.load(e,l),g=1,A=o(((e,o)=>h(void 0,null,(function*(){if(o){const n=o();yield L((()=>h(void 0,null,(function*(){return t.setTransactionChanges(n)}))))}else yield L((()=>h(void 0,null,(function*(){var o;try{t.setContent(null!=(o=null==e?void 0:e())?o:yield n())}catch(t){null==i||i(t)}}))))})))),w})),stopAutoLoad:()=>(g&&(l(A),A=void 0,g=0),w),save:n=>h(void 0,null,(function*(){return 1!=S&&(S=2,yield w.schedule((()=>h(void 0,null,(function*(){try{yield e(t.getContent,n)}catch(t){null==i||i(t)}S=0}))))),w})),startAutoSave:()=>h(void 0,null,(function*(){return yield w.stopAutoSave().save(),a=t.addDidFinishTransactionListener(((t,n)=>{const[e,o]=n();d(e)&&d(o)||w.save((()=>[e,o]))})),w})),stopAutoSave:()=>{var n,e;return n=a,e=t.delListener,!!r(n)||e(n),w},schedule:(...t)=>h(void 0,null,(function*(){return((t,...n)=>{t.push(...n)})(v(m,u),...t),yield h(void 0,null,(function*(){if(!v(p,u)){for(f(p,u,1);!r((t=v(m,u),c=t.shift()));)try{yield c()}catch(t){null==i||i(t)}f(p,u,0)}var t})),w})),getStore:()=>t,destroy:()=>w.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return s(w)})(u,(()=>A(void 0,null,(function*(){return a(yield n(c,o))}))),(t=>A(void 0,null,(function*(){return yield e(c,(n=t(),JSON.stringify(n,((t,n)=>l(n,Map)?i.fromEntries([...n]):n))),o);var n}))),(n=>t(c,(()=>n()))),(t=>null==t?void 0:t.close()),S);export{S as createFilePersister};
|
|
Binary file
|