@evolu/common 8.12.0 → 8.13.0
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/Callbacks.d.ts +12 -1
- package/dist/src/Callbacks.d.ts.map +1 -1
- package/dist/src/Callbacks.js +3 -0
- package/dist/src/Error.d.ts +10 -4
- package/dist/src/Error.d.ts.map +1 -1
- package/dist/src/Error.js +10 -4
- package/dist/src/Object.d.ts +65 -0
- package/dist/src/Object.d.ts.map +1 -1
- package/dist/src/Object.js +142 -0
- package/dist/src/Resource.d.ts +0 -5
- package/dist/src/Resource.d.ts.map +1 -1
- package/dist/src/Resource.js +6 -13
- package/dist/src/Sqlite.d.ts.map +1 -1
- package/dist/src/Sqlite.js +7 -0
- package/dist/src/Task.d.ts +10 -8
- package/dist/src/Task.d.ts.map +1 -1
- package/dist/src/Task.js +41 -5
- package/dist/src/Worker.d.ts +3 -3
- package/dist/src/local-first/Db.d.ts +8 -3
- package/dist/src/local-first/Db.d.ts.map +1 -1
- package/dist/src/local-first/Db.js +56 -19
- package/dist/src/local-first/Evolu.d.ts +81 -37
- package/dist/src/local-first/Evolu.d.ts.map +1 -1
- package/dist/src/local-first/Evolu.js +31 -6
- package/dist/src/local-first/Owner.d.ts +9 -0
- package/dist/src/local-first/Owner.d.ts.map +1 -1
- package/dist/src/local-first/Owner.js +9 -0
- package/dist/src/local-first/Protocol.d.ts +6 -4
- package/dist/src/local-first/Protocol.d.ts.map +1 -1
- package/dist/src/local-first/Protocol.js +1 -6
- package/dist/src/local-first/Schema.d.ts +7 -1
- package/dist/src/local-first/Schema.d.ts.map +1 -1
- package/dist/src/local-first/Shared.d.ts +523 -133
- package/dist/src/local-first/Shared.d.ts.map +1 -1
- package/dist/src/local-first/Shared.js +696 -256
- package/dist/src/local-first/Storage.d.ts +16 -12
- package/dist/src/local-first/Storage.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/Callbacks.test.ts +20 -0
- package/src/Callbacks.ts +17 -1
- package/src/Error.ts +10 -4
- package/src/Object.test.ts +296 -0
- package/src/Object.ts +163 -0
- package/src/Resource.test.ts +20 -16
- package/src/Resource.ts +6 -20
- package/src/Sqlite.ts +7 -0
- package/src/Task.test.ts +233 -62
- package/src/Task.ts +47 -13
- package/src/Worker.ts +3 -3
- package/src/local-first/Db.ts +88 -18
- package/src/local-first/Evolu.test.ts +281 -1
- package/src/local-first/Evolu.ts +124 -46
- package/src/local-first/Owner.ts +9 -0
- package/src/local-first/Protocol.test.ts +42 -60
- package/src/local-first/Protocol.ts +7 -9
- package/src/local-first/Schema.ts +8 -2
- package/src/local-first/Shared.test.ts +2633 -646
- package/src/local-first/Shared.ts +1192 -364
- package/src/local-first/Storage.ts +18 -19
package/dist/src/Callbacks.d.ts
CHANGED
|
@@ -10,7 +10,8 @@ import type { Callback } from "./Types.ts";
|
|
|
10
10
|
* Request-response correlation for callbacks across boundaries.
|
|
11
11
|
*
|
|
12
12
|
* Stores callbacks with unique IDs and executes them once with an optional
|
|
13
|
-
* argument. Executed callbacks are automatically removed.
|
|
13
|
+
* argument. Executed callbacks are automatically removed. A callback whose
|
|
14
|
+
* response will never come is removed with `unregister`.
|
|
14
15
|
*
|
|
15
16
|
* This is useful for correlating asynchronous request-response operations
|
|
16
17
|
* across boundaries where callback functions cannot be passed directly (e.g.,
|
|
@@ -40,6 +41,14 @@ import type { Callback } from "./Types.ts";
|
|
|
40
41
|
* callbacks.execute(noArgumentId);
|
|
41
42
|
* assertEqual(noArgumentCalls, 1);
|
|
42
43
|
*
|
|
44
|
+
* // A callback whose response will never come
|
|
45
|
+
* const failedId = callbacks.register(() => {
|
|
46
|
+
* noArgumentCalls++;
|
|
47
|
+
* });
|
|
48
|
+
* callbacks.unregister(failedId);
|
|
49
|
+
* callbacks.execute(failedId);
|
|
50
|
+
* assertEqual(noArgumentCalls, 1);
|
|
51
|
+
*
|
|
43
52
|
* // Typed callback
|
|
44
53
|
* using stringCallbacks = createCallbacks<string>(deps);
|
|
45
54
|
* let received = "";
|
|
@@ -65,6 +74,8 @@ export interface Callbacks<T = undefined> extends Disposable {
|
|
|
65
74
|
readonly register: (callback: Callback<T>) => Id;
|
|
66
75
|
/** Executes and removes a callback associated with the given ID. */
|
|
67
76
|
readonly execute: T extends undefined ? (id: Id) => undefined : (id: Id, arg: T) => undefined;
|
|
77
|
+
/** Removes a callback associated with the given ID without executing it. */
|
|
78
|
+
readonly unregister: (id: Id) => void;
|
|
68
79
|
}
|
|
69
80
|
/** Creates a {@link Callbacks} registry for managing callbacks. */
|
|
70
81
|
export declare const createCallbacks: <T = undefined>(deps: RandomBytesDep) => Callbacks<T>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Callbacks.d.ts","sourceRoot":"","sources":["../../src/Callbacks.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,EAAY,EAAE,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C
|
|
1
|
+
{"version":3,"file":"Callbacks.d.ts","sourceRoot":"","sources":["../../src/Callbacks.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,EAAY,EAAE,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8DG;AACH,MAAM,WAAW,SAAS,CAAC,CAAC,GAAG,SAAS,CAAE,SAAQ,UAAU;IAC1D,6DAA6D;IAC7D,QAAQ,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;IAEjD,oEAAoE;IACpE,QAAQ,CAAC,OAAO,EAAE,CAAC,SAAS,SAAS,GACjC,CAAC,EAAE,EAAE,EAAE,KAAK,SAAS,GACrB,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,KAAK,SAAS,CAAC;IAElC,4EAA4E;IAC5E,QAAQ,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,IAAI,CAAC;CACvC;AAED,mEAAmE;AACnE,eAAO,MAAM,eAAe,GAAI,CAAC,GAAG,SAAS,QACrC,cAAc,KACnB,SAAS,CAAC,CAAC,CAiCb,CAAC"}
|
package/dist/src/Callbacks.js
CHANGED
package/dist/src/Error.d.ts
CHANGED
|
@@ -14,7 +14,9 @@ import { type InferType, type TypedType, Unknown } from "./Type.ts";
|
|
|
14
14
|
* The `error` property contains error details (including `message`, `stack`,
|
|
15
15
|
* and `cause` if available), a string, or a fallback value.
|
|
16
16
|
*
|
|
17
|
-
* Use {@link createUnknownError} to create instances.
|
|
17
|
+
* Use {@link createUnknownError} to create instances. It turns an `Error` into a
|
|
18
|
+
* plain object, so the error can be posted between workers, for example in sync
|
|
19
|
+
* state, with its message and stack.
|
|
18
20
|
*/
|
|
19
21
|
export declare const UnknownError: TypedType<"UnknownError", {
|
|
20
22
|
readonly error: typeof Unknown;
|
|
@@ -24,9 +26,13 @@ export interface UnknownError extends InferType<typeof UnknownError> {
|
|
|
24
26
|
/**
|
|
25
27
|
* Creates an {@link UnknownError} from an unknown error.
|
|
26
28
|
*
|
|
27
|
-
* Error
|
|
28
|
-
*
|
|
29
|
-
*
|
|
29
|
+
* An `Error` becomes a plain object of its own properties, such as `message`
|
|
30
|
+
* and `stack`. A `cause` that is an `Error` is converted the same way, a
|
|
31
|
+
* function is dropped, and any other property is kept as it is. An `Error`'s
|
|
32
|
+
* properties are not enumerable, so JSON and comparisons by content miss them,
|
|
33
|
+
* and a structured clone creates a new `Error`. Any other value is
|
|
34
|
+
* structured-cloned, or described by `String` when it cannot be, or as
|
|
35
|
+
* `"[Unserializable Object]"` when even that throws.
|
|
30
36
|
*/
|
|
31
37
|
export declare const createUnknownError: (error: unknown) => UnknownError;
|
|
32
38
|
/**
|
package/dist/src/Error.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Error.d.ts","sourceRoot":"","sources":["../../src/Error.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,KAAK,SAAS,EAAS,KAAK,SAAS,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE3E
|
|
1
|
+
{"version":3,"file":"Error.d.ts","sourceRoot":"","sources":["../../src/Error.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,KAAK,SAAS,EAAS,KAAK,SAAS,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE3E;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,YAAY,EAAE,SAAS,CAClC,cAAc,EACd;IAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,OAAO,CAAA;CAAE,CAGlC,CAAC;AACH,MAAM,WAAW,YAAa,SAAQ,SAAS,CAAC,OAAO,YAAY,CAAC;CAAG;AAEvE;;;;;;;;;;GAUG;AACH,eAAO,MAAM,kBAAkB,UAAW,OAAO,KAAG,YAkDnD,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,eAAO,MAAM,aAAa,aAAc,OAAO,KAAG,KAuBjD,CAAC"}
|
package/dist/src/Error.js
CHANGED
|
@@ -16,7 +16,9 @@ import { typed, Unknown } from "./Type.js";
|
|
|
16
16
|
* The `error` property contains error details (including `message`, `stack`,
|
|
17
17
|
* and `cause` if available), a string, or a fallback value.
|
|
18
18
|
*
|
|
19
|
-
* Use {@link createUnknownError} to create instances.
|
|
19
|
+
* Use {@link createUnknownError} to create instances. It turns an `Error` into a
|
|
20
|
+
* plain object, so the error can be posted between workers, for example in sync
|
|
21
|
+
* state, with its message and stack.
|
|
20
22
|
*/
|
|
21
23
|
export const UnknownError = /*#__PURE__*/ typed("UnknownError", {
|
|
22
24
|
error: Unknown,
|
|
@@ -24,9 +26,13 @@ export const UnknownError = /*#__PURE__*/ typed("UnknownError", {
|
|
|
24
26
|
/**
|
|
25
27
|
* Creates an {@link UnknownError} from an unknown error.
|
|
26
28
|
*
|
|
27
|
-
* Error
|
|
28
|
-
*
|
|
29
|
-
*
|
|
29
|
+
* An `Error` becomes a plain object of its own properties, such as `message`
|
|
30
|
+
* and `stack`. A `cause` that is an `Error` is converted the same way, a
|
|
31
|
+
* function is dropped, and any other property is kept as it is. An `Error`'s
|
|
32
|
+
* properties are not enumerable, so JSON and comparisons by content miss them,
|
|
33
|
+
* and a structured clone creates a new `Error`. Any other value is
|
|
34
|
+
* structured-cloned, or described by `String` when it cannot be, or as
|
|
35
|
+
* `"[Unserializable Object]"` when even that throws.
|
|
30
36
|
*/
|
|
31
37
|
export const createUnknownError = (error) => {
|
|
32
38
|
const convertError = (err) => {
|
package/dist/src/Object.d.ts
CHANGED
|
@@ -209,6 +209,71 @@ export declare const mapObject: <K extends string, V, U>(record: ReadonlyRecord<
|
|
|
209
209
|
export declare const filterObjectKeys: <T extends object>(source: T, predicate: (key: string) => boolean) => Readonly<Partial<Pick<T, Exclude<keyof T, symbol>>>>;
|
|
210
210
|
/** Conditionally excludes a property from an object. */
|
|
211
211
|
export declare const excludeProp: <T extends object, K extends keyof T>(obj: T, prop: K, condition?: boolean) => typeof condition extends true ? T : Omit<T, K>;
|
|
212
|
+
/**
|
|
213
|
+
* Returns `next` with every part deep-equal to the same part of `previous`
|
|
214
|
+
* replaced by that part, or `previous` itself when the two are deep-equal.
|
|
215
|
+
*
|
|
216
|
+
* It keeps the identity of data that arrives as a new copy, such as a
|
|
217
|
+
* structured clone posted between workers, so unchanged parts can be compared
|
|
218
|
+
* with `===`, and a UI updates only what changed. Plain objects, arrays, and
|
|
219
|
+
* `Uint8Array`s are compared by their contents, and any other value by
|
|
220
|
+
* identity. The contents of a plain object are the properties an object spread
|
|
221
|
+
* copies. A changed object or array is returned as a new ordinary one. It walks
|
|
222
|
+
* the data as a tree, so a part referenced from several places is compared at
|
|
223
|
+
* each place, and a part that a cycle leads back to is returned as it is in
|
|
224
|
+
* `next`.
|
|
225
|
+
*
|
|
226
|
+
* An array item is compared with the previous item at its index, so removing or
|
|
227
|
+
* inserting an item compares every item after it with a different one. When
|
|
228
|
+
* `itemToKey` returns a key for an item, such as its ID, the item is compared
|
|
229
|
+
* with the previous item of the same key instead. Keys are compared as `Map`
|
|
230
|
+
* keys are, so each should be unique in its array; an item whose key several
|
|
231
|
+
* previous items share is compared with the last of them.
|
|
232
|
+
*
|
|
233
|
+
* ### Example
|
|
234
|
+
*
|
|
235
|
+
* ```ts
|
|
236
|
+
* import {
|
|
237
|
+
* assertNotSame,
|
|
238
|
+
* assertSame,
|
|
239
|
+
* isPlainObject,
|
|
240
|
+
* shareStructure,
|
|
241
|
+
* } from "@evolu/common";
|
|
242
|
+
*
|
|
243
|
+
* const previous = {
|
|
244
|
+
* user: { name: "Alice" },
|
|
245
|
+
* todos: [{ title: "Buy milk" }],
|
|
246
|
+
* };
|
|
247
|
+
*
|
|
248
|
+
* // An equal copy gives the previous value back.
|
|
249
|
+
* assertSame(
|
|
250
|
+
* shareStructure(previous, structuredClone(previous)),
|
|
251
|
+
* previous,
|
|
252
|
+
* );
|
|
253
|
+
*
|
|
254
|
+
* // A change keeps every unchanged part.
|
|
255
|
+
* const next = shareStructure(previous, {
|
|
256
|
+
* user: { name: "Alice" },
|
|
257
|
+
* todos: [{ title: "Buy bread" }],
|
|
258
|
+
* });
|
|
259
|
+
* assertNotSame(next, previous);
|
|
260
|
+
* assertSame(next.user, previous.user);
|
|
261
|
+
* assertNotSame(next.todos, previous.todos);
|
|
262
|
+
*
|
|
263
|
+
* // A key compares each todo with the previous todo of the same ID.
|
|
264
|
+
* const todos = [
|
|
265
|
+
* { id: 1, title: "Buy milk" },
|
|
266
|
+
* { id: 2, title: "Walk the dog" },
|
|
267
|
+
* ];
|
|
268
|
+
* const remaining = shareStructure(
|
|
269
|
+
* todos,
|
|
270
|
+
* [{ id: 2, title: "Walk the dog" }],
|
|
271
|
+
* (todo) => (isPlainObject(todo) ? todo.id : undefined),
|
|
272
|
+
* );
|
|
273
|
+
* assertSame(remaining[0], todos[1]);
|
|
274
|
+
* ```
|
|
275
|
+
*/
|
|
276
|
+
export declare const shareStructure: <T>(previous: T, next: T, itemToKey?: (item: unknown) => unknown) => T;
|
|
212
277
|
/**
|
|
213
278
|
* Creates a mutable Record.
|
|
214
279
|
*
|
package/dist/src/Object.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Object.d.ts","sourceRoot":"","sources":["../../src/Object.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Object.d.ts","sourceRoot":"","sources":["../../src/Object.ts"],"names":[],"mappings":"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"}
|
package/dist/src/Object.js
CHANGED
|
@@ -256,6 +256,148 @@ export const excludeProp = (obj, prop, condition) => {
|
|
|
256
256
|
const { [prop]: _, ...rest } = obj;
|
|
257
257
|
return rest;
|
|
258
258
|
};
|
|
259
|
+
/**
|
|
260
|
+
* Returns `next` with every part deep-equal to the same part of `previous`
|
|
261
|
+
* replaced by that part, or `previous` itself when the two are deep-equal.
|
|
262
|
+
*
|
|
263
|
+
* It keeps the identity of data that arrives as a new copy, such as a
|
|
264
|
+
* structured clone posted between workers, so unchanged parts can be compared
|
|
265
|
+
* with `===`, and a UI updates only what changed. Plain objects, arrays, and
|
|
266
|
+
* `Uint8Array`s are compared by their contents, and any other value by
|
|
267
|
+
* identity. The contents of a plain object are the properties an object spread
|
|
268
|
+
* copies. A changed object or array is returned as a new ordinary one. It walks
|
|
269
|
+
* the data as a tree, so a part referenced from several places is compared at
|
|
270
|
+
* each place, and a part that a cycle leads back to is returned as it is in
|
|
271
|
+
* `next`.
|
|
272
|
+
*
|
|
273
|
+
* An array item is compared with the previous item at its index, so removing or
|
|
274
|
+
* inserting an item compares every item after it with a different one. When
|
|
275
|
+
* `itemToKey` returns a key for an item, such as its ID, the item is compared
|
|
276
|
+
* with the previous item of the same key instead. Keys are compared as `Map`
|
|
277
|
+
* keys are, so each should be unique in its array; an item whose key several
|
|
278
|
+
* previous items share is compared with the last of them.
|
|
279
|
+
*
|
|
280
|
+
* ### Example
|
|
281
|
+
*
|
|
282
|
+
* ```ts
|
|
283
|
+
* import {
|
|
284
|
+
* assertNotSame,
|
|
285
|
+
* assertSame,
|
|
286
|
+
* isPlainObject,
|
|
287
|
+
* shareStructure,
|
|
288
|
+
* } from "@evolu/common";
|
|
289
|
+
*
|
|
290
|
+
* const previous = {
|
|
291
|
+
* user: { name: "Alice" },
|
|
292
|
+
* todos: [{ title: "Buy milk" }],
|
|
293
|
+
* };
|
|
294
|
+
*
|
|
295
|
+
* // An equal copy gives the previous value back.
|
|
296
|
+
* assertSame(
|
|
297
|
+
* shareStructure(previous, structuredClone(previous)),
|
|
298
|
+
* previous,
|
|
299
|
+
* );
|
|
300
|
+
*
|
|
301
|
+
* // A change keeps every unchanged part.
|
|
302
|
+
* const next = shareStructure(previous, {
|
|
303
|
+
* user: { name: "Alice" },
|
|
304
|
+
* todos: [{ title: "Buy bread" }],
|
|
305
|
+
* });
|
|
306
|
+
* assertNotSame(next, previous);
|
|
307
|
+
* assertSame(next.user, previous.user);
|
|
308
|
+
* assertNotSame(next.todos, previous.todos);
|
|
309
|
+
*
|
|
310
|
+
* // A key compares each todo with the previous todo of the same ID.
|
|
311
|
+
* const todos = [
|
|
312
|
+
* { id: 1, title: "Buy milk" },
|
|
313
|
+
* { id: 2, title: "Walk the dog" },
|
|
314
|
+
* ];
|
|
315
|
+
* const remaining = shareStructure(
|
|
316
|
+
* todos,
|
|
317
|
+
* [{ id: 2, title: "Walk the dog" }],
|
|
318
|
+
* (todo) => (isPlainObject(todo) ? todo.id : undefined),
|
|
319
|
+
* );
|
|
320
|
+
* assertSame(remaining[0], todos[1]);
|
|
321
|
+
* ```
|
|
322
|
+
*/
|
|
323
|
+
export const shareStructure = (previous, next, itemToKey) => {
|
|
324
|
+
// The arrays and plain objects of `next` being compared, each with whether a
|
|
325
|
+
// cycle led back to it.
|
|
326
|
+
const isCycledByPart = new Map();
|
|
327
|
+
const share = (previous, next) => {
|
|
328
|
+
if (Object.is(previous, next))
|
|
329
|
+
return previous;
|
|
330
|
+
if (Array.isArray(previous) && Array.isArray(next)) {
|
|
331
|
+
const previousItems = previous;
|
|
332
|
+
return visit(next, () => {
|
|
333
|
+
// Array.from visits holes, which map would skip or keep as holes.
|
|
334
|
+
const previousByKey = itemToKey &&
|
|
335
|
+
new Map(Array.from(previousItems, (item) => [itemToKey(item), item]));
|
|
336
|
+
let isEqual = previousItems.length === next.length;
|
|
337
|
+
const shared = Array.from(next, (item, index) => {
|
|
338
|
+
const key = itemToKey?.(item);
|
|
339
|
+
const previousItem = key === undefined ? previousItems[index] : previousByKey?.get(key);
|
|
340
|
+
const sharedItem = share(previousItem, item);
|
|
341
|
+
if (!Object.is(sharedItem, previousItems[index]))
|
|
342
|
+
isEqual = false;
|
|
343
|
+
return sharedItem;
|
|
344
|
+
});
|
|
345
|
+
return isEqual ? previousItems : shared;
|
|
346
|
+
});
|
|
347
|
+
}
|
|
348
|
+
if (isPlainObject(previous) && isPlainObject(next))
|
|
349
|
+
return visit(next, () => {
|
|
350
|
+
const keys = ownEnumerableKeys(next);
|
|
351
|
+
let isEqual = keys.length === ownEnumerableKeys(previous).length;
|
|
352
|
+
// Object.fromEntries defines each key, so `__proto__` stays own data.
|
|
353
|
+
const shared = Object.fromEntries(keys.map((key) => {
|
|
354
|
+
const hasPrevious = Object.prototype.propertyIsEnumerable.call(previous, key);
|
|
355
|
+
const previousValue = hasPrevious
|
|
356
|
+
? previous[key]
|
|
357
|
+
: undefined;
|
|
358
|
+
const value = share(previousValue, next[key]);
|
|
359
|
+
if (!hasPrevious || !Object.is(value, previousValue))
|
|
360
|
+
isEqual = false;
|
|
361
|
+
return [key, value];
|
|
362
|
+
}));
|
|
363
|
+
return isEqual ? previous : shared;
|
|
364
|
+
});
|
|
365
|
+
// An indexed loop compares bytes far faster than `every`.
|
|
366
|
+
if (previous instanceof Uint8Array && next instanceof Uint8Array) {
|
|
367
|
+
if (previous.length !== next.length)
|
|
368
|
+
return next;
|
|
369
|
+
for (let index = 0; index < previous.length; index++)
|
|
370
|
+
if (previous[index] !== next[index])
|
|
371
|
+
return next;
|
|
372
|
+
return previous;
|
|
373
|
+
}
|
|
374
|
+
return next;
|
|
375
|
+
};
|
|
376
|
+
// A cycle refers back to the part of `next` itself, so the part it leads back
|
|
377
|
+
// to is returned as it is, which keeps the cycle intact.
|
|
378
|
+
const visit = (part, compare) => {
|
|
379
|
+
if (isCycledByPart.has(part)) {
|
|
380
|
+
isCycledByPart.set(part, true);
|
|
381
|
+
return part;
|
|
382
|
+
}
|
|
383
|
+
isCycledByPart.set(part, false);
|
|
384
|
+
const shared = compare();
|
|
385
|
+
const isCycled = isCycledByPart.get(part);
|
|
386
|
+
isCycledByPart.delete(part);
|
|
387
|
+
return isCycled ? part : shared;
|
|
388
|
+
};
|
|
389
|
+
return share(previous, next);
|
|
390
|
+
};
|
|
391
|
+
// The keys an object spread copies: own enumerable strings and symbols.
|
|
392
|
+
const ownEnumerableKeys = (object) => {
|
|
393
|
+
const symbols = Object.getOwnPropertySymbols(object);
|
|
394
|
+
return symbols.length === 0
|
|
395
|
+
? Object.keys(object)
|
|
396
|
+
: [
|
|
397
|
+
...Object.keys(object),
|
|
398
|
+
...symbols.filter((symbol) => Object.prototype.propertyIsEnumerable.call(object, symbol)),
|
|
399
|
+
];
|
|
400
|
+
};
|
|
259
401
|
export function createMutableRecord(source) {
|
|
260
402
|
const record = Object.create(null);
|
|
261
403
|
return source === undefined ? record : Object.assign(record, source);
|
package/dist/src/Resource.d.ts
CHANGED
|
@@ -241,11 +241,6 @@ export interface SharedResource<T extends Resource> extends AsyncDisposable {
|
|
|
241
241
|
}
|
|
242
242
|
/** Snapshot returned by {@link SharedResource.snapshot}. */
|
|
243
243
|
export interface SharedResourceSnapshot {
|
|
244
|
-
/**
|
|
245
|
-
* Whether the resource has no current value, no leases, no pending idle
|
|
246
|
-
* disposal, and no acquisition in progress.
|
|
247
|
-
*/
|
|
248
|
-
readonly isIdle: boolean;
|
|
249
244
|
/** Current active lease count. */
|
|
250
245
|
readonly leaseCount: NonNegativeInt;
|
|
251
246
|
/** Whether a current resource exists. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Resource.d.ts","sourceRoot":"","sources":["../../src/Resource.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAiB,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAGvE,OAAO,EAGL,KAAK,MAAM,EACX,KAAK,YAAY,EAClB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAQL,KAAK,iBAAiB,EACtB,KAAK,IAAI,EACV,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,MAAM,QAAQ,GAAG,UAAU,GAAG,eAAe,CAAC;AAEpD;;;;;;;;;GASG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,QAAQ,IAAI,gBAAgB,CACjE,CAAC,EACD,OAAO,MAAM,CAAC,OAAO,GAAG,OAAO,MAAM,CAAC,YAAY,CACnD,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,KAAK,CAAC,CAAC,SAAS,QAAQ,CAAE,SAAQ,UAAU;IAC3D,2BAA2B;IAC3B,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAEvC,uEAAuE;IACvE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAE1B;;;;;;;OAOG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC;CACjC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2FG;AACH,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,QAAQ,CAAE,SAAQ,eAAe;IACzE;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAEjC;;;;;;;OAOG;IACH,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IAEpD;;;;;;;;;OASG;IACH,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EACpB,QAAQ,EAAE,CACR,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAC7B,OAAO,EAAE,OAAO,KACb,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KACf,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAEnB,0EAA0E;IAC1E,QAAQ,CAAC,QAAQ,EAAE,MAAM,sBAAsB,CAAC;CACjD;AAED,4DAA4D;AAC5D,MAAM,WAAW,sBAAsB;IACrC
|
|
1
|
+
{"version":3,"file":"Resource.d.ts","sourceRoot":"","sources":["../../src/Resource.ts"],"names":[],"mappings":"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"}
|
package/dist/src/Resource.js
CHANGED
|
@@ -259,19 +259,12 @@ export const createSharedResource = (create, { idleDisposeAfter, onDisposed } =
|
|
|
259
259
|
__disposeResources(env_2);
|
|
260
260
|
}
|
|
261
261
|
},
|
|
262
|
-
snapshot: () => {
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
mutexSnapshot.isIdle,
|
|
269
|
-
leaseCount: NonNegativeInt.orThrow(heldLeases.size),
|
|
270
|
-
hasResource: current !== undefined,
|
|
271
|
-
idleDisposePending: idleDisposeFiber !== undefined,
|
|
272
|
-
mutex: mutexSnapshot,
|
|
273
|
-
};
|
|
274
|
-
},
|
|
262
|
+
snapshot: () => ({
|
|
263
|
+
leaseCount: NonNegativeInt.orThrow(heldLeases.size),
|
|
264
|
+
hasResource: current !== undefined,
|
|
265
|
+
idleDisposePending: idleDisposeFiber !== undefined,
|
|
266
|
+
mutex: mutex.snapshot(),
|
|
267
|
+
}),
|
|
275
268
|
[Symbol.asyncDispose]: () => sharedResourceRun[Symbol.asyncDispose](),
|
|
276
269
|
};
|
|
277
270
|
leakDetector.track(sharedResource, {
|
package/dist/src/Sqlite.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sqlite.d.ts","sourceRoot":"","sources":["../../src/Sqlite.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Sqlite.d.ts","sourceRoot":"","sources":["../../src/Sqlite.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAIlC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,KAAK,IAAI,EAAiB,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AACtE,OAAO,EAEL,KAAK,SAAS,EAEd,KAAK,SAAS,EACd,KAAK,IAAI,EAGT,KAAK,UAAU,EAEf,KAAK,UAAU,EAEf,KAAK,OAAO,EACZ,MAAM,EAEN,KAAK,KAAK,EAGX,MAAM,WAAW,CAAC;AAEnB;;;;;;;;GAQG;AACH,MAAM,WAAW,MAAO,SAAQ,eAAe;IAC7C,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,EAC7C,KAAK,EAAE,WAAW,KACf,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAEzB;;;;;;;;;OASG;IACH,QAAQ,CAAC,WAAW,EAAE,iBAAiB,CAAC;IAExC;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,UAAU,CAAC,WAAW,CAAC,CAAC;CAChD;AAED;;;;GAIG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACnD,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;CAC9B;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,qBAAqB,CAAC;IAC3C,QAAQ,CAAC,OAAO,CAAC,EAAE,kBAAkB,CAAC;CACvC;AAED;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,KAAK,CAAC,mBAAmB,CAAC,CAAC;AAEpE;;;;GAIG;AACH,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;AAEhD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,WAAW,qyBAKvB,CAAC;AACF,MAAM,MAAM,WAAW,GAAG,OAAO,WAAW,CAAC,MAAM,CAAC;AAEpD;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,gzBAAmC,CAAC;AACtE,MAAM,MAAM,qBAAqB,GAAG,OAAO,qBAAqB,CAAC,MAAM,CAAC;AAExE;;;;;;;;GAQG;AACH,MAAM,MAAM,gBAAgB,GAAG,OAAO,WAAW,CAAC,KAAK,CAAC;AAExD;;;;GAIG;AACH,eAAO,MAAM,aAAa,EAAE,EAAE,CAAC,gBAAgB,CACsB,CAAC;AAEtE;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,QAAQ,CAAC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEzC;;;;;;OAMG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAEvC;;;;;;OAMG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;;;GAIG;AACH,eAAO,MAAM,8BAA8B,UAClC,WAAW,KACjB,iBAYF,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,8BAA8B,UAClC,iBAAiB,KACvB,WAsBF,CAAC;AAEF;;;;GAIG;AACH,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS;IAC/D,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;IAChC,yEAAyE;IACzE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;GAKG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;AAEzD;;;;;;GAMG;AACH,MAAM,WAAW,YAAa,SAAQ,UAAU;IAC9C,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,gBAAgB,CAAC;IAExD,uEAAuE;IACvE,QAAQ,CAAC,cAAc,EAAE,MAAM,IAAI,CAAC;IAEpC;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,UAAU,CAAC,WAAW,CAAC,CAAC;CAChD;AAED;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAC/B,IAAI,EAAE,IAAI,EACV,OAAO,CAAC,EAAE,mBAAmB,KAC1B,IAAI,CAAC,YAAY,CAAC,CAAC;AAExB;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC,kBAAkB,EAAE,kBAAkB,CAAC;CACxC;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,mBAAmB,GAC3B;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,GAC3B;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAA;CAAE,CAAC;AAE1E;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,SAEf,IAAI,YACA,mBAAmB,KAC5B,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,qBAAqB,CA6E3C,CAAC;AAEJ;;;;GAIG;AACH,eAAO,MAAM,eAAe,SACpB,qBAAqB,KAC1B,OAAO,CACR,eAAe,GAAG,SAAS,GAAG,UAAU,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAe5E,CAAC;AA2BF;;;;;;;GAOG;AACH,MAAM,WAAW,kBAAkB,CAAC,CAAC,CAAE,SAAQ,UAAU;IACvD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS,OAAO,EAC9B,KAAK,EAAE,WAAW,EAClB,aAAa,CAAC,EAAE,CAAC,KACd,CAAC,SAAS,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;CACpC;AAED;;;;;GAKG;AACH,eAAO,MAAM,6BAA6B,GAAI,CAAC,WACpC,CAAC,GAAG,EAAE,OAAO,KAAK,CAAC,aACjB,CAAC,SAAS,EAAE,CAAC,KAAK,IAAI,KAChC,kBAAkB,CAAC,CAAC,CA8BtB,CAAC;AAEF;;;;GAIG;AACH,MAAM,WAAW,aAAc,SAAQ,KAAK,CAAC,eAAe,CAAC;IAC3D,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;CACvB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,MAAO,SAAQ,KAAK,CAAC,QAAQ,CAAC;IAC7C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG,gBAAgB,GAAG,aAAa,GAAG,MAAM,CAAC;4BAiDvE,OAAO,EAAE,oBAAoB,EAC7B,GAAG,UAAU,EAAE,KAAK,CAAC,gBAAgB,CAAC,GACrC,WAAW;;iCAsBgB,MAAM,KAAG,aAAa;mBAYpC,MAAM,KAAG,MAAM;4BAIpB,oBAAoB,iBACd,KAAK,CAAC,gBAAgB,CAAC,KACrC,WAAW;;AAKd;;;;GAIG;AACH,eAAO,MAAM,WAAW,EAAE,UAAU,CAAC;IACnC,QAAQ,CAAC,IAAI,EAAE,OAAO,MAAM,CAAC;IAC7B,QAAQ,CAAC,GAAG,EAAE,OAAO,MAAM,CAAC;CAC7B,CAAuD,CAAC;AACzD,MAAM,WAAW,WAAY,SAAQ,SAAS,CAAC,OAAO,WAAW,CAAC;CAAG;AAErE;;;;GAIG;AACH,eAAO,MAAM,aAAa,EAAE,EAAE,CAAC,WAAW,CAGxC,CAAC;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,EAAE,UAAU,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,MAAM,EAAE,OAAO,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC;IACnE,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,WAAW,CAAC,CAAC;CACjD,CAGC,CAAC;AACH,MAAM,WAAW,YAAa,SAAQ,SAAS,CAAC,OAAO,YAAY,CAAC;CAAG;AAEvE;;;;GAIG;AACH,eAAO,MAAM,eAAe,SACnB,SAAS,oCAGb;IACD;;;OAGG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC,KAAQ,YAiDR,CAAC;AAEJ;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC;QACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;KACzC,CAAC,CAAC;CACJ;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,SAAU,SAAS,KAAG,cAiBnD,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,aAAa,kHAA4B,CAAC;AACvD,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAC,MAAM,CAAC;AAExD;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,IAAI,CAAC;AAE5B;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,IAAI,CAAC;AAE7B;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,sBAAsB,UAAW,OAAO,KAAG,aACtB,CAAC;AAEnC;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,sBAAsB,UAAW,aAAa,KAAG,OACxC,CAAC"}
|
package/dist/src/Sqlite.js
CHANGED
|
@@ -162,6 +162,13 @@ export const createSqlite = (name, options) => async (run) => {
|
|
|
162
162
|
try {
|
|
163
163
|
console.debug("begin");
|
|
164
164
|
driver.exec(sql `begin;`);
|
|
165
|
+
// After errors such as SQLITE_FULL or SQLITE_IOERR, SQLite may roll
|
|
166
|
+
// back the transaction itself, and this rollback then fails with
|
|
167
|
+
// "no transaction is active". Disposal wraps both in a
|
|
168
|
+
// SuppressedError whose `suppressed` holds the original error. The
|
|
169
|
+
// data is consistent and nothing is lost.
|
|
170
|
+
// TODO: Rethink this when Evolu detects SQLITE_FULL, which needs
|
|
171
|
+
// the original error, not the failed rollback.
|
|
165
172
|
const rollback = __addDisposableResource(env_2, new DisposableStack(), false);
|
|
166
173
|
let shouldRollback = true;
|
|
167
174
|
rollback.defer(() => {
|
package/dist/src/Task.d.ts
CHANGED
|
@@ -485,7 +485,9 @@
|
|
|
485
485
|
* ## Glossary
|
|
486
486
|
*
|
|
487
487
|
* - **Defect** — a thrown or rejected value other than {@link AbortError}, rather
|
|
488
|
-
* than a declared {@link Result} error.
|
|
488
|
+
* than a declared {@link Result} error. A `SuppressedError` nesting only
|
|
489
|
+
* AbortErrors, thrown when `await using` cleanup observes the abort a Task is
|
|
490
|
+
* propagating, is an abort, like the same cleanup in `try`/`finally`.
|
|
489
491
|
* - **Outcome** — a Fiber's settlement: resolution with the Task {@link Result},
|
|
490
492
|
* or rejection with {@link AbortError}. The original defect is reported
|
|
491
493
|
* through {@link ReportDefectDep} whether or not the Fiber is observed; the
|
|
@@ -1378,7 +1380,9 @@ export interface DisposableRun<D = unknown> extends Run<D>, Disposable, AsyncDis
|
|
|
1378
1380
|
* Sync disposal starts cleanup without waiting and does not throw finalizer
|
|
1379
1381
|
* defects synchronously. Async disposal awaits cleanup. If a finalizer
|
|
1380
1382
|
* defects, the defect is reported once, and every async disposal call rejects
|
|
1381
|
-
* with the same already-reported {@link AbortError}.
|
|
1383
|
+
* with the same already-reported {@link AbortError}. A finalizer that rejects
|
|
1384
|
+
* with an AbortError, for example by awaiting another DisposableRun whose
|
|
1385
|
+
* finalizer defected, is not reported; async disposal rejects with it.
|
|
1382
1386
|
*
|
|
1383
1387
|
* Calling `defer` after disposal starts is a programmer error.
|
|
1384
1388
|
*
|
|
@@ -1802,10 +1806,10 @@ export declare const testAbortError: AbortError;
|
|
|
1802
1806
|
/**
|
|
1803
1807
|
* Abort reason recorded when a defect panics the root {@link Run}.
|
|
1804
1808
|
*
|
|
1805
|
-
* A defect is a thrown or rejected value other than {@link AbortError}
|
|
1806
|
-
* Recoverable domain errors belong
|
|
1807
|
-
* failures, such as storage engine
|
|
1808
|
-
* handle, may throw or reject.
|
|
1809
|
+
* A defect is a thrown or rejected value other than {@link AbortError} or a
|
|
1810
|
+
* `SuppressedError` nesting only AbortErrors. Recoverable domain errors belong
|
|
1811
|
+
* in {@link Result}. Bugs and unrecoverable failures, such as storage engine
|
|
1812
|
+
* errors the {@link Task} cannot usefully handle, may throw or reject.
|
|
1809
1813
|
*
|
|
1810
1814
|
* {@link Run.onEvent} handler defects are different: event handlers are
|
|
1811
1815
|
* monitoring code, so their defects are reported globally but do not panic the
|
|
@@ -4130,8 +4134,6 @@ export interface SemaphoreSnapshot {
|
|
|
4130
4134
|
* is `0` until enough permits are released.
|
|
4131
4135
|
*/
|
|
4132
4136
|
readonly available: NonNegativeInt;
|
|
4133
|
-
/** Whether no permits are held and no requests are queued. */
|
|
4134
|
-
readonly isIdle: boolean;
|
|
4135
4137
|
}
|
|
4136
4138
|
/**
|
|
4137
4139
|
* Creates a {@link Semaphore}.
|