@evolu/common 8.0.0-next.4 → 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 +5 -0
- package/dist/src/Assert.d.ts.map +1 -1
- package/dist/src/Assert.js +6 -1
- 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/Sqlite.d.ts.map +1 -1
- package/dist/src/Sqlite.js +2 -1
- package/dist/src/Task.d.ts +95 -92
- package/dist/src/Task.d.ts.map +1 -1
- package/dist/src/Task.js +60 -52
- package/dist/src/Test.d.ts +10 -11
- package/dist/src/Test.d.ts.map +1 -1
- package/dist/src/Types.d.ts +0 -8
- package/dist/src/Types.d.ts.map +1 -1
- package/dist/src/local-first/Db.d.ts.map +1 -1
- package/dist/src/local-first/Db.js +10 -10
- package/dist/src/local-first/Shared.d.ts.map +1 -1
- package/dist/src/local-first/Shared.js +26 -26
- package/package.json +1 -1
- package/src/Assert.ts +6 -1
- package/src/Error.ts +5 -4
- package/src/Sqlite.ts +2 -1
- package/src/Task.ts +319 -314
- package/src/Test.ts +10 -11
- package/src/Types.ts +0 -9
- package/src/local-first/Db.ts +31 -29
- package/src/local-first/Shared.ts +33 -32
package/dist/src/Task.js
CHANGED
|
@@ -154,7 +154,7 @@ export const RunEvent = /*#__PURE__*/ object({
|
|
|
154
154
|
// TODO:
|
|
155
155
|
// Partial<TracerConfigDep> & // TODO:
|
|
156
156
|
// Partial<TracerDep>; // TODO:
|
|
157
|
-
const
|
|
157
|
+
const runDefaultDeps = {
|
|
158
158
|
console: createConsole(),
|
|
159
159
|
randomBytes: createRandomBytes(),
|
|
160
160
|
random: createRandom(),
|
|
@@ -175,7 +175,7 @@ const runDeps = {
|
|
|
175
175
|
* Node.js `uncaughtException`, `unhandledRejection`, and graceful shutdown
|
|
176
176
|
* handling, and `@evolu/react-native` adds React Native global error handling.
|
|
177
177
|
*
|
|
178
|
-
* {@link
|
|
178
|
+
* {@link RunDefaultDeps} provides default dependencies:
|
|
179
179
|
*
|
|
180
180
|
* - {@link Time}
|
|
181
181
|
* - {@link Console}
|
|
@@ -213,7 +213,7 @@ const runDeps = {
|
|
|
213
213
|
* };
|
|
214
214
|
*
|
|
215
215
|
* // Composition root: create a Run with custom deps
|
|
216
|
-
* type AppDeps =
|
|
216
|
+
* type AppDeps = RunDefaultDeps & ConfigDep;
|
|
217
217
|
*
|
|
218
218
|
* const appDeps: AppDeps = {
|
|
219
219
|
* ...testCreateDeps(), // or spread individual deps
|
|
@@ -226,17 +226,14 @@ const runDeps = {
|
|
|
226
226
|
* const result = await run(fetchUser("123"));
|
|
227
227
|
*
|
|
228
228
|
* // TypeScript catches missing deps at compile time:
|
|
229
|
-
* // await using run2 = createRun(); // Run<
|
|
229
|
+
* // await using run2 = createRun(); // Run<RunDefaultDeps>
|
|
230
230
|
* // run2(fetchUser("123")); // Error: Property 'config' is missing
|
|
231
231
|
* ```
|
|
232
232
|
*
|
|
233
233
|
* @group Creating Run
|
|
234
234
|
*/
|
|
235
|
-
export const createRun = (deps) => {
|
|
236
|
-
|
|
237
|
-
return createRunInternal(createRef(mergedDeps))();
|
|
238
|
-
};
|
|
239
|
-
const createRunInternal = (depsRef) => (parent, daemon, abortBehavior, concurrencyBehavior) => {
|
|
235
|
+
export const createRun = (deps) => createRunInternal({ ...runDefaultDeps, ...deps });
|
|
236
|
+
const createRunInternal = (deps, parent, daemon, abortBehavior, concurrencyBehavior) => {
|
|
240
237
|
const parentMask = parent?.abortMask ?? isAbortable;
|
|
241
238
|
let abortMask;
|
|
242
239
|
switch (abortBehavior) {
|
|
@@ -256,8 +253,7 @@ const createRunInternal = (depsRef) => (parent, daemon, abortBehavior, concurren
|
|
|
256
253
|
let result;
|
|
257
254
|
let outcome;
|
|
258
255
|
let children = emptySet;
|
|
259
|
-
const requestAbort = (
|
|
260
|
-
const abortError = reason;
|
|
256
|
+
const requestAbort = (abortError) => {
|
|
261
257
|
if (abortMask === isAbortable)
|
|
262
258
|
signalController.abort(abortError);
|
|
263
259
|
requestController.abort(abortError);
|
|
@@ -266,7 +262,6 @@ const createRunInternal = (depsRef) => (parent, daemon, abortBehavior, concurren
|
|
|
266
262
|
subscribeToAbort(parent.requestSignal, () => requestAbort(parent.requestSignal.reason), { signal: requestController.signal });
|
|
267
263
|
}
|
|
268
264
|
const emitEvent = (data) => {
|
|
269
|
-
const deps = depsRef.get();
|
|
270
265
|
if (!deps.runConfig?.eventsEnabled.get())
|
|
271
266
|
return;
|
|
272
267
|
const e = { id: self.id, timestamp: deps.time.now(), data };
|
|
@@ -274,16 +269,28 @@ const createRunInternal = (depsRef) => (parent, daemon, abortBehavior, concurren
|
|
|
274
269
|
node.onEvent?.(e);
|
|
275
270
|
}
|
|
276
271
|
};
|
|
277
|
-
const run = (task) => {
|
|
278
|
-
const childRun = createRunInternal(
|
|
272
|
+
const run = (task, taskDeps) => {
|
|
273
|
+
const childRun = createRunInternal(taskDeps === undefined
|
|
274
|
+
? deps
|
|
275
|
+
: {
|
|
276
|
+
console: deps.console,
|
|
277
|
+
randomBytes: deps.randomBytes,
|
|
278
|
+
random: deps.random,
|
|
279
|
+
time: deps.time,
|
|
280
|
+
...(deps.runConfig && {
|
|
281
|
+
runConfig: deps.runConfig,
|
|
282
|
+
}),
|
|
283
|
+
...taskDeps,
|
|
284
|
+
}, self, daemon ?? self, getAbortBehavior(task), getConcurrencyBehavior(task));
|
|
279
285
|
if (state !== running) {
|
|
280
286
|
childRun.requestAbort(runStoppedAbortError);
|
|
281
287
|
task = () => err(runStoppedAbortError);
|
|
282
288
|
}
|
|
283
289
|
else if (signalController.signal.aborted &&
|
|
284
290
|
childRun.abortMask === isAbortable) {
|
|
285
|
-
|
|
286
|
-
|
|
291
|
+
const abortError = signalController.signal.reason;
|
|
292
|
+
childRun.requestAbort(abortError);
|
|
293
|
+
task = () => err(abortError);
|
|
287
294
|
}
|
|
288
295
|
const childFiber = Object.assign(Promise.try(task, childRun)
|
|
289
296
|
.then(childRun.handleTaskFulfilled)
|
|
@@ -306,13 +313,17 @@ const createRunInternal = (depsRef) => (parent, daemon, abortBehavior, concurren
|
|
|
306
313
|
emitEvent({ type: "ChildAdded", childId: childRun.id });
|
|
307
314
|
return childFiber;
|
|
308
315
|
};
|
|
316
|
+
let snapshot = null;
|
|
317
|
+
let disposingPromise = null;
|
|
309
318
|
const self = run;
|
|
310
319
|
{
|
|
311
320
|
const run = self;
|
|
312
|
-
const id = createId(
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
321
|
+
const id = createId(deps);
|
|
322
|
+
async function orThrow(task, taskDeps) {
|
|
323
|
+
const result = taskDeps === undefined ? await self(task) : await self(task, taskDeps);
|
|
324
|
+
return getOrThrow(result);
|
|
325
|
+
}
|
|
326
|
+
run.orThrow = orThrow;
|
|
316
327
|
run.id = id;
|
|
317
328
|
run.parent = parent ?? null;
|
|
318
329
|
run.signal = signalController.signal;
|
|
@@ -330,45 +341,38 @@ const createRunInternal = (depsRef) => (parent, daemon, abortBehavior, concurren
|
|
|
330
341
|
!eqArrayStrict(snapshot.children, childSnapshots)) {
|
|
331
342
|
snapshot = {
|
|
332
343
|
id,
|
|
333
|
-
state
|
|
344
|
+
state,
|
|
334
345
|
children: childSnapshots,
|
|
335
346
|
abortMask,
|
|
336
347
|
};
|
|
337
348
|
}
|
|
338
349
|
return snapshot;
|
|
339
350
|
};
|
|
351
|
+
run.onEvent = undefined;
|
|
340
352
|
run.daemon = daemon ?? self;
|
|
341
|
-
run.create = () =>
|
|
342
|
-
|
|
353
|
+
run.create = (runDeps = deps) => {
|
|
354
|
+
const task = createDeferred().task;
|
|
355
|
+
return run.daemon(task, runDeps).run;
|
|
356
|
+
};
|
|
357
|
+
run.deps = deps;
|
|
343
358
|
run.concurrency =
|
|
344
359
|
concurrencyBehavior ?? parent?.concurrency ?? defaultConcurrency;
|
|
345
|
-
run.addDeps = (newDeps) => {
|
|
346
|
-
depsRef.modify((currentDeps) => {
|
|
347
|
-
const duplicate = Object.keys(newDeps).find((k) => k in currentDeps);
|
|
348
|
-
assert(!duplicate, `Dependency '${duplicate}' already added. ` +
|
|
349
|
-
`This assert ensures dependencies are created once. ` +
|
|
350
|
-
`Automatic deduplication would mask bugs.`);
|
|
351
|
-
return [undefined, { ...currentDeps, ...newDeps }];
|
|
352
|
-
});
|
|
353
|
-
return self;
|
|
354
|
-
};
|
|
355
360
|
run[Symbol.asyncDispose] = () => {
|
|
356
361
|
if (disposingPromise)
|
|
357
362
|
return disposingPromise;
|
|
358
363
|
state = { type: "Disposing" };
|
|
359
364
|
emitEvent({ type: "StateChanged", state });
|
|
360
365
|
requestAbort(runStoppedAbortError);
|
|
361
|
-
disposingPromise = Promise.allSettled((
|
|
362
|
-
? [
|
|
366
|
+
disposingPromise = Promise.allSettled((self.ownTaskSettled
|
|
367
|
+
? [self.ownTaskSettled.promise, ...children]
|
|
363
368
|
: children))
|
|
364
369
|
.then(lazyVoid)
|
|
365
370
|
.finally(() => {
|
|
366
371
|
/**
|
|
367
|
-
* Root and daemon Runs have no own Task, so
|
|
368
|
-
*
|
|
369
|
-
*
|
|
370
|
-
*
|
|
371
|
-
* values already set.
|
|
372
|
+
* Root and daemon Runs have no own Task, so `run.handleTaskFulfilled`
|
|
373
|
+
* never populates their terminal values. In that case disposal
|
|
374
|
+
* publishes `ok()` for both `result` and `outcome`. Task-backed Runs
|
|
375
|
+
* normally reach this point with both values already set.
|
|
372
376
|
*/
|
|
373
377
|
[result, outcome] = [result ?? ok(), outcome ?? ok()];
|
|
374
378
|
state = { type: "Settled", result, outcome };
|
|
@@ -381,15 +385,15 @@ const createRunInternal = (depsRef) => (parent, daemon, abortBehavior, concurren
|
|
|
381
385
|
run.requestAbort = requestAbort;
|
|
382
386
|
run.requestSignal = requestController.signal;
|
|
383
387
|
run.handleTaskFulfilled = (taskOutcome) => {
|
|
384
|
-
const taskResult =
|
|
385
|
-
? err(
|
|
388
|
+
const taskResult = self.signal.aborted
|
|
389
|
+
? err(self.signal.reason)
|
|
386
390
|
: taskOutcome;
|
|
387
391
|
result = taskResult;
|
|
388
392
|
outcome = taskOutcome;
|
|
389
393
|
return taskResult;
|
|
390
394
|
};
|
|
391
395
|
run.handleTaskSettled = () => {
|
|
392
|
-
|
|
396
|
+
self.ownTaskSettled?.resolve();
|
|
393
397
|
};
|
|
394
398
|
}
|
|
395
399
|
return self;
|
|
@@ -432,16 +436,19 @@ const abortBehavior = (behavior) => (task) => Object.assign((run) => run(task),
|
|
|
432
436
|
/**
|
|
433
437
|
* Makes a {@link Task} unabortable.
|
|
434
438
|
*
|
|
435
|
-
* Once started, an unabortable Task always completes
|
|
436
|
-
*
|
|
439
|
+
* Once started, an unabortable Task always completes. Abort requests are masked
|
|
440
|
+
* while it runs, and `signal.aborted` remains `false` inside the Task.
|
|
437
441
|
*
|
|
438
|
-
*
|
|
442
|
+
* `unabortable` controls abort signal propagation; it does not force work to
|
|
443
|
+
* start. If the parent {@link Run} is already disposing or settled, `run(task)`
|
|
439
444
|
* short-circuits before task execution and returns `err(AbortError)` with
|
|
440
445
|
* {@link runStoppedError} as reason. So `unabortable` means “do not interrupt
|
|
441
446
|
* this Task once it has started”, not “remove AbortError from its type”.
|
|
442
447
|
*
|
|
443
|
-
*
|
|
444
|
-
*
|
|
448
|
+
* Most callers should still propagate or ignore {@link AbortError} according to
|
|
449
|
+
* ordinary structured-concurrency ownership. When abort would violate a
|
|
450
|
+
* lifecycle invariant, await the unabortable Task and use
|
|
451
|
+
* {@link assertNotAborted} to fail fast if it could not even start.
|
|
445
452
|
*
|
|
446
453
|
* ### Example
|
|
447
454
|
*
|
|
@@ -804,7 +811,7 @@ export const timeoutError = { type: "TimeoutError" };
|
|
|
804
811
|
* @group Composition
|
|
805
812
|
* @see {@link RetryOptions}
|
|
806
813
|
*/
|
|
807
|
-
export const retry = (task, schedule, { retryable = lazyTrue, onRetry
|
|
814
|
+
export const retry = (task, schedule, { retryable = lazyTrue, onRetry } = {}) => async (run) => {
|
|
808
815
|
const step = schedule(run.deps);
|
|
809
816
|
let attempt = onePositiveInt;
|
|
810
817
|
let error;
|
|
@@ -887,7 +894,7 @@ export const retry = (task, schedule, { retryable = lazyTrue, onRetry, } = {}) =
|
|
|
887
894
|
*
|
|
888
895
|
* @group Composition
|
|
889
896
|
*/
|
|
890
|
-
export const repeat = (task, schedule, { repeatable = lazyTrue, onRepeat
|
|
897
|
+
export const repeat = (task, schedule, { repeatable = lazyTrue, onRepeat } = {}) => async (run) => {
|
|
891
898
|
const step = schedule(run.deps);
|
|
892
899
|
let lastResult;
|
|
893
900
|
let attempt = onePositiveInt;
|
|
@@ -1442,7 +1449,8 @@ export const anyAbortError = { type: "AnyAbortError" };
|
|
|
1442
1449
|
const collect = (type, input, { collect = true, abortReason = type === "all" ? allAbortError : allSettledAbortError, } = {}) => {
|
|
1443
1450
|
const stopOn = type === "all" ? "error" : null;
|
|
1444
1451
|
if (isIterable(input)) {
|
|
1445
|
-
const
|
|
1452
|
+
const tasks = input;
|
|
1453
|
+
const array = arrayFrom(tasks);
|
|
1446
1454
|
if (!isNonEmptyArray(array))
|
|
1447
1455
|
return () => ok(collect ? emptyArray : undefined);
|
|
1448
1456
|
return pool(array, {
|
|
@@ -1528,7 +1536,7 @@ function pool(tasksIterable, { stopOn = null, collect, abortReason, allFailed, }
|
|
|
1528
1536
|
worker.abort(reason);
|
|
1529
1537
|
};
|
|
1530
1538
|
const workerCount = Math.min(run.concurrency, length);
|
|
1531
|
-
const workers = arrayFrom(workerCount, () => run.daemon(worker));
|
|
1539
|
+
const workers = arrayFrom(workerCount, () => run.daemon(worker, run.deps));
|
|
1532
1540
|
const _ = __addDisposableResource(env_8, new DisposableStack(), false);
|
|
1533
1541
|
_.defer(() => {
|
|
1534
1542
|
abortWorkers(abortReason);
|
package/dist/src/Test.d.ts
CHANGED
|
@@ -6,21 +6,21 @@
|
|
|
6
6
|
import type { Brand } from "./Brand.js";
|
|
7
7
|
import { type TestConsoleDep } from "./Console.js";
|
|
8
8
|
import { type RandomLibDep } from "./Random.js";
|
|
9
|
-
import { type Run, type
|
|
9
|
+
import { type Run, type RunDefaultDeps } from "./Task.js";
|
|
10
10
|
import { type Duration, type TestTimeDep } from "./Time.js";
|
|
11
11
|
import { type Id } from "./Type.js";
|
|
12
12
|
export type TestCreateId = <B extends string = never>() => [B] extends [never] ? Id : Id & Brand<B>;
|
|
13
13
|
/**
|
|
14
14
|
* Cheap deterministic baseline deps for tests.
|
|
15
15
|
*
|
|
16
|
-
* `TestDeps` includes test-friendly replacements for {@link
|
|
17
|
-
* {@link TestConsole} and {@link TestTime}, plus extra helpers commonly
|
|
18
|
-
* tests and fixtures, such as `randomLib` (only that for now).
|
|
16
|
+
* `TestDeps` includes test-friendly replacements for {@link RunDefaultDeps},
|
|
17
|
+
* such as {@link TestConsole} and {@link TestTime}, plus extra helpers commonly
|
|
18
|
+
* useful in tests and fixtures, such as `randomLib` (only that for now).
|
|
19
19
|
*
|
|
20
20
|
* Use it directly for synchronous test setup, fixtures, and helpers. It is also
|
|
21
21
|
* intentionally the base deps used by {@link testCreateRun}.
|
|
22
22
|
*/
|
|
23
|
-
export type TestDeps = Omit<
|
|
23
|
+
export type TestDeps = Omit<RunDefaultDeps, "console" | "time"> & TestConsoleDep & TestTimeDep & RandomLibDep;
|
|
24
24
|
/**
|
|
25
25
|
* Creates deterministic {@link TestDeps}.
|
|
26
26
|
*
|
|
@@ -68,7 +68,7 @@ export declare const testCreateDeps: (options?: {
|
|
|
68
68
|
* ### Example
|
|
69
69
|
*
|
|
70
70
|
* ```ts
|
|
71
|
-
* //
|
|
71
|
+
* // Default TestTime
|
|
72
72
|
* await using run = testCreateRun();
|
|
73
73
|
* const fiber = run(sleep("1s"));
|
|
74
74
|
* run.deps.time.advance("1s");
|
|
@@ -77,9 +77,7 @@ export declare const testCreateDeps: (options?: {
|
|
|
77
77
|
* // For a single test, create the dependency using the Run.
|
|
78
78
|
* await using run = testCreateRun();
|
|
79
79
|
* await using foo = await run.orThrow(createFoo());
|
|
80
|
-
*
|
|
81
|
-
*
|
|
82
|
-
* expect(runWithFoo.deps.foo).toBe(foo);
|
|
80
|
+
* await run.orThrow(taskThatNeedsFoo, { foo });
|
|
83
81
|
*
|
|
84
82
|
* // If multiple tests need the same setup, create a disposable helper.
|
|
85
83
|
* // Then `await using setup` disposes everything the helper owns.
|
|
@@ -87,14 +85,15 @@ export declare const testCreateDeps: (options?: {
|
|
|
87
85
|
* await using disposer = new AsyncDisposableStack();
|
|
88
86
|
* const run = disposer.use(testCreateRun());
|
|
89
87
|
* const foo = disposer.use(await run.orThrow(createFoo()));
|
|
88
|
+
* const runWithFoo = disposer.use(run.create({ ...run.deps, foo }));
|
|
90
89
|
* const disposables = disposer.move();
|
|
91
90
|
*
|
|
92
91
|
* // Return whatever the tests need: a Run with the dependency,
|
|
93
92
|
* // the dependency itself, or both.
|
|
94
93
|
* return {
|
|
95
|
-
* run:
|
|
94
|
+
* run: runWithFoo,
|
|
96
95
|
* foo,
|
|
97
|
-
* [Symbol.asyncDispose]: () =>
|
|
96
|
+
* [Symbol.asyncDispose]: () => disposables.disposeAsync(),
|
|
98
97
|
* };
|
|
99
98
|
* };
|
|
100
99
|
*
|
package/dist/src/Test.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Test.d.ts","sourceRoot":"","sources":["../../src/Test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAIL,KAAK,YAAY,EAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAa,KAAK,GAAG,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"Test.d.ts","sourceRoot":"","sources":["../../src/Test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAIL,KAAK,YAAY,EAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAa,KAAK,GAAG,EAAE,KAAK,cAAc,EAAE,MAAM,WAAW,CAAC;AACrE,OAAO,EAIL,KAAK,QAAQ,EAEb,KAAK,WAAW,EACjB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAY,KAAK,EAAE,EAAE,MAAM,WAAW,CAAC;AAE9C,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,SAAS,MAAM,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GAC1E,EAAE,GACF,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAElB;;;;;;;;;GASG;AACH,MAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,SAAS,GAAG,MAAM,CAAC,GAC7D,cAAc,GACd,WAAW,GACX,YAAY,CAAC;AAEf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,eAAO,MAAM,cAAc,GAAI,UAAU;IACvC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB,KAAG,QAQH,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,wBAAgB,aAAa,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;AAE/C,6DAA6D;AAC7D,wBAAgB,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;AAO7D;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,GAC/B,WAAU,QAAoB,KAC7B,OAAO,CAAC,IAAI,CAAyB,CAAC;AAEzC;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,YAAY,QAAO,YAQ/B,CAAC"}
|
package/dist/src/Types.d.ts
CHANGED
|
@@ -294,12 +294,4 @@ export type ExtractType<TUnion extends {
|
|
|
294
294
|
}, TType extends TUnion["type"]> = Extract<TUnion, {
|
|
295
295
|
readonly type: TType;
|
|
296
296
|
}>;
|
|
297
|
-
/**
|
|
298
|
-
* Constrains `T` to only contain keys not present in `Existing`.
|
|
299
|
-
*
|
|
300
|
-
* Use as a generic constraint to prevent overriding existing properties.
|
|
301
|
-
*/
|
|
302
|
-
export type NewKeys<T, Existing> = {
|
|
303
|
-
[K in keyof T]: K extends keyof Existing ? never : T[K];
|
|
304
|
-
};
|
|
305
297
|
//# sourceMappingURL=Types.d.ts.map
|
package/dist/src/Types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Types.d.ts","sourceRoot":"","sources":["../../src/Types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Types.d.ts","sourceRoot":"","sources":["../../src/Types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Db.d.ts","sourceRoot":"","sources":["../../../src/local-first/Db.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EACL,aAAa,EAGd,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAIxD,OAAO,KAAK,EACV,qBAAqB,EAGrB,YAAY,EACb,MAAM,cAAc,CAAC;AAUtB,OAAO,EAAY,KAAK,IAAI,EAAE,MAAM,YAAY,CAAC;AAEjD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AASvC,OAAO,KAAK,EACV,yBAAyB,EACzB,iBAAiB,EACjB,MAAM,EACN,UAAU,EACV,UAAU,EACX,MAAM,cAAc,CAAC;AAqBtB,OAAO,KAAK,EAEV,aAAa,EACb,cAAc,EAGf,MAAM,aAAa,CAAC;AA+BrB,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;AAE5C,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IACtC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;CACjE;AAED,MAAM,MAAM,cAAc,GAAG,MAAM,QAAQ,CAAC;AAE5C,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;CACzC;AAED,MAAM,MAAM,YAAY,GAAG,UAAU,GACnC,yBAAyB,GACzB,cAAc,GACd,qBAAqB,CAAC;AAExB,eAAO,MAAM,aAAa,GACvB,MAAM,UAAU,CAAC,YAAY,CAAC,KAAG,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"Db.d.ts","sourceRoot":"","sources":["../../../src/local-first/Db.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EACL,aAAa,EAGd,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAIxD,OAAO,KAAK,EACV,qBAAqB,EAGrB,YAAY,EACb,MAAM,cAAc,CAAC;AAUtB,OAAO,EAAY,KAAK,IAAI,EAAE,MAAM,YAAY,CAAC;AAEjD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AASvC,OAAO,KAAK,EACV,yBAAyB,EACzB,iBAAiB,EACjB,MAAM,EACN,UAAU,EACV,UAAU,EACX,MAAM,cAAc,CAAC;AAqBtB,OAAO,KAAK,EAEV,aAAa,EACb,cAAc,EAGf,MAAM,aAAa,CAAC;AA+BrB,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;AAE5C,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IACtC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;CACjE;AAED,MAAM,MAAM,cAAc,GAAG,MAAM,QAAQ,CAAC;AAE5C,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;CACzC;AAED,MAAM,MAAM,YAAY,GAAG,UAAU,GACnC,yBAAyB,GACzB,cAAc,GACd,qBAAqB,CAAC;AAExB,eAAO,MAAM,aAAa,GACvB,MAAM,UAAU,CAAC,YAAY,CAAC,KAAG,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,YAAY,CAgP/D,CAAC"}
|
|
@@ -77,10 +77,9 @@ export const startDbWorker = (self) => async (run) => {
|
|
|
77
77
|
try {
|
|
78
78
|
const disposer = __addDisposableResource(env_1, new AsyncDisposableStack(), true);
|
|
79
79
|
disposer.use(self);
|
|
80
|
-
const
|
|
81
|
-
const { deps } = dbWorkerRun;
|
|
80
|
+
const { deps } = run;
|
|
82
81
|
let initialized = false;
|
|
83
|
-
const initMessage = await
|
|
82
|
+
const initMessage = await run.orThrow(callback(({ ok }) => {
|
|
84
83
|
self.onMessage = (message) => {
|
|
85
84
|
assert(!initialized, "DbWorker must be initialized only once");
|
|
86
85
|
initialized = true;
|
|
@@ -100,23 +99,24 @@ export const startDbWorker = (self) => async (run) => {
|
|
|
100
99
|
});
|
|
101
100
|
}));
|
|
102
101
|
console.debug("createDbWorker");
|
|
103
|
-
disposer.use(await
|
|
102
|
+
disposer.use(await run.orThrow(acquireLeaderLock(initMessage.name)));
|
|
104
103
|
port.postMessage({ type: "LeaderAcquired", name: initMessage.name });
|
|
105
|
-
const sqlite = disposer.use(await
|
|
104
|
+
const sqlite = disposer.use(await run.orThrow(createSqlite(initMessage.name, initMessage.memoryOnly
|
|
106
105
|
? { mode: "memory" }
|
|
107
106
|
: { mode: "encrypted", encryptionKey: initMessage.encryptionKey })));
|
|
108
107
|
console.debug("SQLite created");
|
|
109
108
|
const baseSqliteStorage = createBaseSqliteStorage({
|
|
110
109
|
sqlite,
|
|
111
|
-
...
|
|
110
|
+
...deps,
|
|
112
111
|
});
|
|
113
112
|
const dbDeps = {
|
|
114
|
-
...
|
|
113
|
+
...deps,
|
|
115
114
|
sqlite,
|
|
116
115
|
sqliteSchema: initMessage.sqliteSchema,
|
|
117
116
|
baseSqliteStorage,
|
|
118
117
|
timestampConfig: { maxDrift: defaultTimestampMaxDrift },
|
|
119
118
|
};
|
|
119
|
+
const dbWorkerRun = disposer.use(run.create());
|
|
120
120
|
const currentSchema = getEvoluSqliteSchema(dbDeps)();
|
|
121
121
|
const dbIsInitialized = "evolu_version" in currentSchema.tables;
|
|
122
122
|
const clock = createClock(dbDeps)(dbIsInitialized);
|
|
@@ -135,7 +135,6 @@ export const startDbWorker = (self) => async (run) => {
|
|
|
135
135
|
},
|
|
136
136
|
});
|
|
137
137
|
const disposables = disposer.move();
|
|
138
|
-
const dbWorkerRunWithStorage = dbWorkerRun.addDeps({ storage });
|
|
139
138
|
port.onMessage = (input) => {
|
|
140
139
|
if (input.type === "Dispose") {
|
|
141
140
|
if (!disposables.disposed)
|
|
@@ -217,7 +216,8 @@ export const startDbWorker = (self) => async (run) => {
|
|
|
217
216
|
}
|
|
218
217
|
case "ApplySyncMessage": {
|
|
219
218
|
const { owner, inputMessage } = request.message;
|
|
220
|
-
|
|
219
|
+
dbWorkerRun(async (run) => {
|
|
220
|
+
const { storage } = run.deps;
|
|
221
221
|
storage.setRequestContext(owner.encryptionKey);
|
|
222
222
|
const result = await run(applyProtocolMessageAsClient(inputMessage, {
|
|
223
223
|
writeKey: owner.writeKey,
|
|
@@ -233,7 +233,7 @@ export const startDbWorker = (self) => async (run) => {
|
|
|
233
233
|
},
|
|
234
234
|
});
|
|
235
235
|
return ok();
|
|
236
|
-
});
|
|
236
|
+
}, { storage });
|
|
237
237
|
break;
|
|
238
238
|
}
|
|
239
239
|
default:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Shared.d.ts","sourceRoot":"","sources":["../../../src/local-first/Shared.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAKL,KAAK,qBAAqB,EAC3B,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"Shared.d.ts","sourceRoot":"","sources":["../../../src/local-first/Shared.ts"],"names":[],"mappings":"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"}
|
|
@@ -56,16 +56,15 @@ var __disposeResources = (this && this.__disposeResources) || (function (Suppres
|
|
|
56
56
|
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
57
57
|
});
|
|
58
58
|
import { emptyArray, firstInArray, isNonEmptyArray, shiftFromArray, } from "../Array.js";
|
|
59
|
-
import { assert, assertNotDisposed } from "../Assert.js";
|
|
59
|
+
import { assert, assertNotAborted, assertNotDisposed } from "../Assert.js";
|
|
60
60
|
import { createCallbacks } from "../Callbacks.js";
|
|
61
|
-
import { exhaustiveCheck } from "../Function.js";
|
|
62
61
|
import { acquireLeaderLock } from "../LockManager.js";
|
|
63
62
|
import { structuralLookup } from "../Lookup.js";
|
|
64
63
|
import { createRefCountByKey } from "../RefCount.js";
|
|
65
64
|
import { createSharedResourceByKey, createSharedResourceByKeyWithClaims, } from "../Resource.js";
|
|
66
65
|
import { ok } from "../Result.js";
|
|
67
66
|
import { createStore } from "../Store.js";
|
|
68
|
-
import { AbortError, createMutex } from "../Task.js";
|
|
67
|
+
import { AbortError, createMutex, unabortable, } from "../Task.js";
|
|
69
68
|
import {} from "../Type.js";
|
|
70
69
|
import { createProtocolMessageForUnsubscribe, createProtocolMessageFromCrdtMessages, parseProtocolHeader, } from "./Protocol.js";
|
|
71
70
|
import { makePatches, } from "./Query.js";
|
|
@@ -96,8 +95,10 @@ export const initSharedWorker = (self) => async (run) => {
|
|
|
96
95
|
}
|
|
97
96
|
case "CreateEvolu": {
|
|
98
97
|
void sharedWorkerRun(async (run) => {
|
|
99
|
-
const tenant = await run
|
|
100
|
-
|
|
98
|
+
const tenant = await run(unabortable(tenantsByName.acquire(message)));
|
|
99
|
+
if (!tenant.ok)
|
|
100
|
+
return tenant;
|
|
101
|
+
tenant.value.addInstance(message, () => void sharedWorkerRun(tenantsByName.release(message)));
|
|
101
102
|
return ok();
|
|
102
103
|
});
|
|
103
104
|
break;
|
|
@@ -161,12 +162,14 @@ export const initSharedWorker = (self) => async (run) => {
|
|
|
161
162
|
idleDisposeAfter: "3s",
|
|
162
163
|
resourceLookup: structuralLookup,
|
|
163
164
|
})));
|
|
164
|
-
const sharedWorkerRun = run.create(
|
|
165
|
+
const sharedWorkerRun = run.create({
|
|
166
|
+
...deps,
|
|
165
167
|
postConsoleEntryOrError,
|
|
166
168
|
tabLeaderPortStore,
|
|
167
169
|
transports,
|
|
168
170
|
});
|
|
169
171
|
const tenantsByName = disposer.use(await sharedWorkerRun.orThrow(createSharedResourceByKey(createEvoluTenant, {
|
|
172
|
+
idleDisposeAfter: "3s",
|
|
170
173
|
lookup: (message) => message.name,
|
|
171
174
|
})));
|
|
172
175
|
sharedWorkerReady.resolve();
|
|
@@ -235,8 +238,6 @@ const createEvoluTenant = ({ name, consoleLevel, sqliteSchema, encryptionKey, me
|
|
|
235
238
|
callbacks.execute(message.callbackId, message);
|
|
236
239
|
break;
|
|
237
240
|
}
|
|
238
|
-
default:
|
|
239
|
-
exhaustiveCheck(message);
|
|
240
241
|
}
|
|
241
242
|
};
|
|
242
243
|
tabLeaderPort.postMessage({
|
|
@@ -266,8 +267,6 @@ const createEvoluTenant = ({ name, consoleLevel, sqliteSchema, encryptionKey, me
|
|
|
266
267
|
case "ForSharedWorker":
|
|
267
268
|
handleResponseForSharedWorker(response);
|
|
268
269
|
break;
|
|
269
|
-
default:
|
|
270
|
-
exhaustiveCheck(response);
|
|
271
270
|
}
|
|
272
271
|
// Complete the current queue item and continue with the next one.
|
|
273
272
|
shiftFromArray(queue);
|
|
@@ -283,7 +282,16 @@ const createEvoluTenant = ({ name, consoleLevel, sqliteSchema, encryptionKey, me
|
|
|
283
282
|
dbWorkerPort?.postMessage({ type: "Dispose" });
|
|
284
283
|
dbWorkerPort = null;
|
|
285
284
|
queueRequestInFlight = false;
|
|
286
|
-
|
|
285
|
+
// The DbWorker holds this tenant leader lock while it is alive. Tenant
|
|
286
|
+
// disposal sends Dispose, then acquires the same lock to wait until the
|
|
287
|
+
// DbWorker releases it: either because Dispose was delivered or because
|
|
288
|
+
// the hosting tab closed. The wait is unabortable because tenant disposal
|
|
289
|
+
// must finish even after tenantRun receives an abort request.
|
|
290
|
+
const lock = await tenantRun(acquireLeaderLock(name));
|
|
291
|
+
// AbortError here means tenantRun was already disposed before this
|
|
292
|
+
// cleanup could start, violating the disposal ordering above.
|
|
293
|
+
assertNotAborted(lock);
|
|
294
|
+
const _ = __addDisposableResource(env_4, lock.value, true);
|
|
287
295
|
}
|
|
288
296
|
catch (e_4) {
|
|
289
297
|
env_4.error = e_4;
|
|
@@ -346,8 +354,6 @@ const createEvoluTenant = ({ name, consoleLevel, sqliteSchema, encryptionKey, me
|
|
|
346
354
|
case "Export":
|
|
347
355
|
instance.port.postMessage({ type: "OnExport", file: response.message.file }, [response.message.file.buffer]);
|
|
348
356
|
break;
|
|
349
|
-
default:
|
|
350
|
-
exhaustiveCheck(response.message);
|
|
351
357
|
}
|
|
352
358
|
};
|
|
353
359
|
const handleResponseForSharedWorker = (response) => {
|
|
@@ -382,13 +388,9 @@ const createEvoluTenant = ({ name, consoleLevel, sqliteSchema, encryptionKey, me
|
|
|
382
388
|
case "Broadcast":
|
|
383
389
|
case "NoResponse":
|
|
384
390
|
break;
|
|
385
|
-
default:
|
|
386
|
-
exhaustiveCheck(response.message.result.value);
|
|
387
391
|
}
|
|
388
392
|
}
|
|
389
393
|
break;
|
|
390
|
-
default:
|
|
391
|
-
exhaustiveCheck(response.message);
|
|
392
394
|
}
|
|
393
395
|
};
|
|
394
396
|
const sendProtocolMessagesByOwnerId = (protocolMessagesByOwnerId) => {
|
|
@@ -461,14 +463,14 @@ const createEvoluTenant = ({ name, consoleLevel, sqliteSchema, encryptionKey, me
|
|
|
461
463
|
console.info("evoluDispose", { name, id: instance.id });
|
|
462
464
|
});
|
|
463
465
|
disposer.use(instance.port);
|
|
464
|
-
|
|
465
|
-
|
|
466
|
+
// The main-thread Evolu instance holds this per-instance leader lock
|
|
467
|
+
// while it is alive. Acquiring the same lock here means the main
|
|
468
|
+
// thread instance was disposed or its tab closed, so the tenant-side
|
|
469
|
+
// instance must dispose itself.
|
|
470
|
+
void tenantRun(acquireLeaderLock(message.id)).then((lock) => {
|
|
471
|
+
if (!lock.ok)
|
|
466
472
|
return;
|
|
467
|
-
|
|
468
|
-
if (disposer.disposed) {
|
|
469
|
-
return lock[Symbol.asyncDispose]();
|
|
470
|
-
}
|
|
471
|
-
disposer.use(lock);
|
|
473
|
+
disposer.use(lock.value);
|
|
472
474
|
return disposer.disposeAsync();
|
|
473
475
|
});
|
|
474
476
|
instance.port.onMessage = (message) => {
|
|
@@ -500,8 +502,6 @@ const createEvoluTenant = ({ name, consoleLevel, sqliteSchema, encryptionKey, me
|
|
|
500
502
|
}));
|
|
501
503
|
break;
|
|
502
504
|
}
|
|
503
|
-
default:
|
|
504
|
-
exhaustiveCheck(message);
|
|
505
505
|
}
|
|
506
506
|
};
|
|
507
507
|
},
|
package/package.json
CHANGED
package/src/Assert.ts
CHANGED
|
@@ -151,9 +151,14 @@ export function assertNotAborted<T, E>(
|
|
|
151
151
|
* await disposer.disposeAsync();
|
|
152
152
|
* assertNotDisposed(disposer); // throws Error
|
|
153
153
|
* ```
|
|
154
|
+
*
|
|
155
|
+
* This is the JavaScript equivalent of the .NET `ObjectDisposedException`
|
|
156
|
+
* pattern: once a helper has been disposed, calling its synchronous methods is
|
|
157
|
+
* a programmer error and should throw immediately instead of continuing with
|
|
158
|
+
* invalid state.
|
|
154
159
|
*/
|
|
155
160
|
export const assertNotDisposed = (
|
|
156
161
|
value: DisposableStack | AsyncDisposableStack,
|
|
157
162
|
): void => {
|
|
158
|
-
assert(!value.disposed, "
|
|
163
|
+
assert(!value.disposed, "Cannot use a disposed object.");
|
|
159
164
|
};
|