@evolu/common 8.0.0-next.3 → 8.0.0-next.5
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/src/Assert.d.ts +10 -5
- package/dist/src/Assert.d.ts.map +1 -1
- package/dist/src/Assert.js +10 -5
- package/dist/src/Error.d.ts +5 -3
- package/dist/src/Error.d.ts.map +1 -1
- package/dist/src/Error.js +16 -0
- package/dist/src/Identicon.js +4 -4
- package/dist/src/LockManager.d.ts +74 -0
- package/dist/src/LockManager.d.ts.map +1 -0
- package/dist/src/LockManager.js +103 -0
- package/dist/src/Microtask.d.ts.map +1 -1
- package/dist/src/Microtask.js +90 -26
- package/dist/src/Object.d.ts.map +1 -1
- package/dist/src/RefCount.d.ts.map +1 -1
- package/dist/src/RefCount.js +153 -68
- package/dist/src/Resource.d.ts +6 -6
- package/dist/src/Resource.d.ts.map +1 -1
- package/dist/src/Resource.js +211 -162
- package/dist/src/Schedule.d.ts +5 -5
- package/dist/src/Schedule.d.ts.map +1 -1
- package/dist/src/Schedule.js +53 -44
- package/dist/src/Sqlite.d.ts +2 -0
- package/dist/src/Sqlite.d.ts.map +1 -1
- package/dist/src/Sqlite.js +66 -41
- package/dist/src/Task.d.ts +99 -123
- package/dist/src/Task.d.ts.map +1 -1
- package/dist/src/Task.js +273 -256
- package/dist/src/Test.d.ts +14 -15
- package/dist/src/Test.d.ts.map +1 -1
- package/dist/src/Time.d.ts +5 -0
- package/dist/src/Time.d.ts.map +1 -1
- package/dist/src/Time.js +5 -0
- package/dist/src/Type.d.ts +7 -0
- package/dist/src/Type.d.ts.map +1 -1
- package/dist/src/Type.js +7 -0
- package/dist/src/Types.d.ts +0 -8
- package/dist/src/Types.d.ts.map +1 -1
- package/dist/src/WebSocket.d.ts.map +1 -1
- package/dist/src/WebSocket.js +7 -6
- package/dist/src/Worker.d.ts +42 -8
- package/dist/src/Worker.d.ts.map +1 -1
- package/dist/src/Worker.js +292 -112
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -0
- package/dist/src/local-first/Db.d.ts +5 -4
- package/dist/src/local-first/Db.d.ts.map +1 -1
- package/dist/src/local-first/Db.js +43 -37
- package/dist/src/local-first/Evolu.d.ts +3 -2
- package/dist/src/local-first/Evolu.d.ts.map +1 -1
- package/dist/src/local-first/Evolu.js +90 -80
- package/dist/src/local-first/Owner.d.ts.map +1 -1
- package/dist/src/local-first/Shared.d.ts +65 -54
- package/dist/src/local-first/Shared.d.ts.map +1 -1
- package/dist/src/local-first/Shared.js +390 -376
- package/package.json +1 -1
- package/src/Array.ts +8 -8
- package/src/Assert.ts +11 -6
- package/src/Error.ts +5 -4
- package/src/Identicon.ts +4 -4
- package/src/LockManager.ts +181 -0
- package/src/Microtask.ts +17 -11
- package/src/Object.ts +3 -3
- package/src/RefCount.ts +25 -21
- package/src/Resource.ts +63 -56
- package/src/Schedule.ts +70 -48
- package/src/Set.ts +4 -4
- package/src/Sqlite.ts +43 -31
- package/src/Task.ts +392 -430
- package/src/Test.ts +14 -15
- package/src/Time.ts +7 -0
- package/src/Type.ts +9 -0
- package/src/Types.ts +0 -9
- package/src/WebSocket.ts +7 -6
- package/src/Worker.ts +195 -53
- package/src/index.ts +1 -0
- package/src/local-first/Db.ts +86 -61
- package/src/local-first/Evolu.ts +74 -68
- package/src/local-first/Owner.ts +1 -1
- package/src/local-first/Query.ts +1 -1
- package/src/local-first/Shared.ts +485 -476
package/dist/src/RefCount.js
CHANGED
|
@@ -3,81 +3,166 @@
|
|
|
3
3
|
*
|
|
4
4
|
* @module
|
|
5
5
|
*/
|
|
6
|
+
var __addDisposableResource = (this && this.__addDisposableResource) || function (env, value, async) {
|
|
7
|
+
if (value !== null && value !== void 0) {
|
|
8
|
+
if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
|
|
9
|
+
var dispose, inner;
|
|
10
|
+
if (async) {
|
|
11
|
+
if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined.");
|
|
12
|
+
dispose = value[Symbol.asyncDispose];
|
|
13
|
+
}
|
|
14
|
+
if (dispose === void 0) {
|
|
15
|
+
if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined.");
|
|
16
|
+
dispose = value[Symbol.dispose];
|
|
17
|
+
if (async) inner = dispose;
|
|
18
|
+
}
|
|
19
|
+
if (typeof dispose !== "function") throw new TypeError("Object not disposable.");
|
|
20
|
+
if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };
|
|
21
|
+
env.stack.push({ value: value, dispose: dispose, async: async });
|
|
22
|
+
}
|
|
23
|
+
else if (async) {
|
|
24
|
+
env.stack.push({ async: true });
|
|
25
|
+
}
|
|
26
|
+
return value;
|
|
27
|
+
};
|
|
28
|
+
var __disposeResources = (this && this.__disposeResources) || (function (SuppressedError) {
|
|
29
|
+
return function (env) {
|
|
30
|
+
function fail(e) {
|
|
31
|
+
env.error = env.hasError ? new SuppressedError(e, env.error, "An error was suppressed during disposal.") : e;
|
|
32
|
+
env.hasError = true;
|
|
33
|
+
}
|
|
34
|
+
var r, s = 0;
|
|
35
|
+
function next() {
|
|
36
|
+
while (r = env.stack.pop()) {
|
|
37
|
+
try {
|
|
38
|
+
if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);
|
|
39
|
+
if (r.dispose) {
|
|
40
|
+
var result = r.dispose.call(r.value);
|
|
41
|
+
if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });
|
|
42
|
+
}
|
|
43
|
+
else s |= 1;
|
|
44
|
+
}
|
|
45
|
+
catch (e) {
|
|
46
|
+
fail(e);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();
|
|
50
|
+
if (env.hasError) throw env.error;
|
|
51
|
+
}
|
|
52
|
+
return next();
|
|
53
|
+
};
|
|
54
|
+
})(typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
|
|
55
|
+
var e = new Error(message);
|
|
56
|
+
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
57
|
+
});
|
|
6
58
|
import { assert, assertNotDisposed } from "./Assert.js";
|
|
7
59
|
import { identity } from "./Function.js";
|
|
8
60
|
import { createLookupMap } from "./Lookup.js";
|
|
9
61
|
import { NonNegativeInt, PositiveInt, zeroNonNegativeInt } from "./Type.js";
|
|
10
62
|
/** Creates {@link RefCount}. */
|
|
11
63
|
export const createRefCount = () => {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
64
|
+
const env_1 = { stack: [], error: void 0, hasError: false };
|
|
65
|
+
try {
|
|
66
|
+
// We use DisposableStack only because of assertNotDisposed.
|
|
67
|
+
const disposer = __addDisposableResource(env_1, new DisposableStack(), false);
|
|
68
|
+
let count = zeroNonNegativeInt;
|
|
69
|
+
const disposables = disposer.move();
|
|
70
|
+
return {
|
|
71
|
+
increment: () => {
|
|
72
|
+
assertNotDisposed(disposables);
|
|
73
|
+
const nextCount = PositiveInt.orThrow(count + 1);
|
|
74
|
+
count = nextCount;
|
|
75
|
+
return nextCount;
|
|
76
|
+
},
|
|
77
|
+
decrement: () => {
|
|
78
|
+
assertNotDisposed(disposables);
|
|
79
|
+
assert(count > 0, "RefCount must not be decremented below zero.");
|
|
80
|
+
count = NonNegativeInt.orThrow(count - 1);
|
|
81
|
+
return count;
|
|
82
|
+
},
|
|
83
|
+
getCount: () => {
|
|
84
|
+
assertNotDisposed(disposables);
|
|
85
|
+
return count;
|
|
86
|
+
},
|
|
87
|
+
[Symbol.dispose]: () => disposables.dispose(),
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
catch (e_1) {
|
|
91
|
+
env_1.error = e_1;
|
|
92
|
+
env_1.hasError = true;
|
|
93
|
+
}
|
|
94
|
+
finally {
|
|
95
|
+
__disposeResources(env_1);
|
|
96
|
+
}
|
|
37
97
|
};
|
|
38
98
|
export function createRefCountByKey({ lookup = identity, } = {}) {
|
|
39
|
-
const
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
refCountByKey.
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
};
|
|
54
|
-
return {
|
|
55
|
-
increment: (key) => {
|
|
56
|
-
assertNotDisposed(moved);
|
|
57
|
-
return getRefCount(key).increment();
|
|
58
|
-
},
|
|
59
|
-
decrement: (key) => {
|
|
60
|
-
assertNotDisposed(moved);
|
|
61
|
-
const refCount = getRefCount(key);
|
|
62
|
-
const nextCount = refCount.decrement();
|
|
63
|
-
if (nextCount === 0) {
|
|
64
|
-
refCount[Symbol.dispose]();
|
|
65
|
-
refCountByKey.delete(key);
|
|
99
|
+
const env_2 = { stack: [], error: void 0, hasError: false };
|
|
100
|
+
try {
|
|
101
|
+
// We use DisposableStack only because of assertNotDisposed.
|
|
102
|
+
const disposer = __addDisposableResource(env_2, new DisposableStack(), false);
|
|
103
|
+
const refCountByKey = disposer.adopt(createLookupMap({ lookup }), (refCountByKey) => {
|
|
104
|
+
const env_3 = { stack: [], error: void 0, hasError: false };
|
|
105
|
+
try {
|
|
106
|
+
const disposer = __addDisposableResource(env_3, new DisposableStack(), false);
|
|
107
|
+
disposer.defer(() => {
|
|
108
|
+
refCountByKey.clear();
|
|
109
|
+
});
|
|
110
|
+
for (const refCount of refCountByKey.values()) {
|
|
111
|
+
disposer.use(refCount);
|
|
112
|
+
}
|
|
66
113
|
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
114
|
+
catch (e_3) {
|
|
115
|
+
env_3.error = e_3;
|
|
116
|
+
env_3.hasError = true;
|
|
117
|
+
}
|
|
118
|
+
finally {
|
|
119
|
+
__disposeResources(env_3);
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
const disposables = disposer.move();
|
|
123
|
+
const getRefCount = (key) => {
|
|
124
|
+
let refCount = refCountByKey.get(key);
|
|
125
|
+
if (!refCount) {
|
|
126
|
+
refCount = createRefCount();
|
|
127
|
+
refCountByKey.set(key, refCount);
|
|
128
|
+
}
|
|
129
|
+
return refCount;
|
|
130
|
+
};
|
|
131
|
+
return {
|
|
132
|
+
increment: (key) => {
|
|
133
|
+
assertNotDisposed(disposables);
|
|
134
|
+
return getRefCount(key).increment();
|
|
135
|
+
},
|
|
136
|
+
decrement: (key) => {
|
|
137
|
+
assertNotDisposed(disposables);
|
|
138
|
+
const refCount = getRefCount(key);
|
|
139
|
+
const nextCount = refCount.decrement();
|
|
140
|
+
if (nextCount === 0) {
|
|
141
|
+
refCountByKey.delete(key);
|
|
142
|
+
refCount[Symbol.dispose]();
|
|
143
|
+
}
|
|
144
|
+
return nextCount;
|
|
145
|
+
},
|
|
146
|
+
getCount: (key) => {
|
|
147
|
+
assertNotDisposed(disposables);
|
|
148
|
+
return refCountByKey.get(key)?.getCount() ?? zeroNonNegativeInt;
|
|
149
|
+
},
|
|
150
|
+
has: (key) => {
|
|
151
|
+
assertNotDisposed(disposables);
|
|
152
|
+
return refCountByKey.has(key);
|
|
153
|
+
},
|
|
154
|
+
keys: () => {
|
|
155
|
+
assertNotDisposed(disposables);
|
|
156
|
+
return new Set(refCountByKey.keys());
|
|
157
|
+
},
|
|
158
|
+
[Symbol.dispose]: () => disposables.dispose(),
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
catch (e_2) {
|
|
162
|
+
env_2.error = e_2;
|
|
163
|
+
env_2.hasError = true;
|
|
164
|
+
}
|
|
165
|
+
finally {
|
|
166
|
+
__disposeResources(env_2);
|
|
167
|
+
}
|
|
83
168
|
}
|
package/dist/src/Resource.d.ts
CHANGED
|
@@ -78,10 +78,6 @@ export declare const createResourceRef: <T extends Resource, D>(create: Task<T,
|
|
|
78
78
|
* times than acquired is a programmer error checked with {@link assert}.
|
|
79
79
|
*/
|
|
80
80
|
export interface SharedResource<T extends Resource, D = unknown> extends AsyncDisposable {
|
|
81
|
-
/** Returns the current shared-resource state for monitoring/debugging. */
|
|
82
|
-
readonly snapshot: () => SharedResourceSnapshot;
|
|
83
|
-
/** Returns the current resource, or `undefined` if absent. */
|
|
84
|
-
readonly get: () => BorrowedResource<T> | undefined;
|
|
85
81
|
/**
|
|
86
82
|
* Acquires a shared reference.
|
|
87
83
|
*
|
|
@@ -112,6 +108,10 @@ export interface SharedResource<T extends Resource, D = unknown> extends AsyncDi
|
|
|
112
108
|
readonly release: Task<void, never, D>;
|
|
113
109
|
/** Returns the current acquire count. */
|
|
114
110
|
readonly getCount: Task<NonNegativeInt, never, D>;
|
|
111
|
+
/** Returns the current resource, or `undefined` if absent. */
|
|
112
|
+
readonly get: () => BorrowedResource<T> | undefined;
|
|
113
|
+
/** Returns the current shared-resource state for monitoring/debugging. */
|
|
114
|
+
readonly snapshot: () => SharedResourceSnapshot;
|
|
115
115
|
}
|
|
116
116
|
/** Snapshot returned by {@link SharedResource.snapshot}. */
|
|
117
117
|
export interface SharedResourceSnapshot {
|
|
@@ -166,8 +166,6 @@ export declare const createSharedResource: <T extends Resource, D>(create: Task<
|
|
|
166
166
|
* lookup} so logical equality is based on a derived stable key.
|
|
167
167
|
*/
|
|
168
168
|
export interface SharedResourceByKey<K, T extends Resource, D = unknown> extends AsyncDisposable {
|
|
169
|
-
/** Returns the current resource for `key`, or `undefined` if absent. */
|
|
170
|
-
readonly get: (key: K) => BorrowedResource<T> | undefined;
|
|
171
169
|
/**
|
|
172
170
|
* Acquires the shared resource for `key`, creating it on first use.
|
|
173
171
|
*
|
|
@@ -192,6 +190,8 @@ export interface SharedResourceByKey<K, T extends Resource, D = unknown> extends
|
|
|
192
190
|
readonly release: (key: K) => Task<void, never, D>;
|
|
193
191
|
/** Returns the current acquire count for `key`. Missing keys return `0`. */
|
|
194
192
|
readonly getCount: (key: K) => Task<NonNegativeInt, never, D>;
|
|
193
|
+
/** Returns the current resource for `key`, or `undefined` if absent. */
|
|
194
|
+
readonly get: (key: K) => BorrowedResource<T> | undefined;
|
|
195
195
|
/** Returns current keyed resources and their per-key mutex state. */
|
|
196
196
|
readonly snapshot: () => SharedResourceByKeySnapshot<K, T>;
|
|
197
197
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Resource.d.ts","sourceRoot":"","sources":["../../src/Resource.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAGL,KAAK,MAAM,EACX,KAAK,YAAY,EAClB,MAAM,aAAa,CAAC;AAQrB,OAAO,EAQL,KAAK,iBAAiB,EACtB,KAAK,IAAI,EACV,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAsB,MAAM,WAAW,CAAC;AAE/D,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,KAAK,0BAA0B,EAC/B,KAAK,QAAQ,EACb,KAAK,aAAa,GACnB,MAAM,eAAe,CAAC;AAEvB;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,MAAM,QAAQ,GAAG,UAAU,GAAG,eAAe,CAAC;AAEpD;;;;;;;;GAQG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,QAAQ,IAAI,IAAI,CACrD,CAAC,EACD,OAAO,MAAM,CAAC,OAAO,GAAG,OAAO,MAAM,CAAC,YAAY,CACnD,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,WAAW,CAC1B,CAAC,SAAS,QAAQ,EAClB,CAAC,GAAG,OAAO,CACX,SAAQ,eAAe;IACvB,oCAAoC;IACpC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IAElD;;;;;OAKG;IACH,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;CACnE;AAED,mCAAmC;AACnC,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,EACrD,QAAQ,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KACxB,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAsC/B,CAAC;AAEL;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,cAAc,CAC7B,CAAC,SAAS,QAAQ,EAClB,CAAC,GAAG,OAAO,CACX,SAAQ,eAAe;IACvB
|
|
1
|
+
{"version":3,"file":"Resource.d.ts","sourceRoot":"","sources":["../../src/Resource.ts"],"names":[],"mappings":"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"}
|