@livestore/common 0.0.0-snapshot-f6ec49b1a18859aad769f0a0d8edf8bae231ed07 → 0.0.0-snapshot-2ef046b02334f52613d31dbe06af53487685edc0
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/.tsbuildinfo +1 -1
- package/dist/adapter-types.d.ts +7 -12
- package/dist/adapter-types.d.ts.map +1 -1
- package/dist/adapter-types.js +1 -7
- package/dist/adapter-types.js.map +1 -1
- package/dist/devtools/devtools-messages-client-session.d.ts +21 -21
- package/dist/devtools/devtools-messages-common.d.ts +13 -6
- package/dist/devtools/devtools-messages-common.d.ts.map +1 -1
- package/dist/devtools/devtools-messages-common.js +6 -0
- package/dist/devtools/devtools-messages-common.js.map +1 -1
- package/dist/devtools/devtools-messages-leader.d.ts +25 -25
- package/dist/devtools/devtools-messages-leader.d.ts.map +1 -1
- package/dist/devtools/devtools-messages-leader.js +1 -2
- package/dist/devtools/devtools-messages-leader.js.map +1 -1
- package/dist/leader-thread/LeaderSyncProcessor.d.ts +16 -6
- package/dist/leader-thread/LeaderSyncProcessor.d.ts.map +1 -1
- package/dist/leader-thread/LeaderSyncProcessor.js +227 -215
- package/dist/leader-thread/LeaderSyncProcessor.js.map +1 -1
- package/dist/leader-thread/apply-mutation.d.ts +14 -9
- package/dist/leader-thread/apply-mutation.d.ts.map +1 -1
- package/dist/leader-thread/apply-mutation.js +43 -36
- package/dist/leader-thread/apply-mutation.js.map +1 -1
- package/dist/leader-thread/leader-worker-devtools.d.ts.map +1 -1
- package/dist/leader-thread/leader-worker-devtools.js +2 -5
- package/dist/leader-thread/leader-worker-devtools.js.map +1 -1
- package/dist/leader-thread/make-leader-thread-layer.d.ts.map +1 -1
- package/dist/leader-thread/make-leader-thread-layer.js +22 -33
- package/dist/leader-thread/make-leader-thread-layer.js.map +1 -1
- package/dist/leader-thread/mod.d.ts +1 -1
- package/dist/leader-thread/mod.d.ts.map +1 -1
- package/dist/leader-thread/mod.js +1 -1
- package/dist/leader-thread/mod.js.map +1 -1
- package/dist/leader-thread/mutationlog.d.ts +20 -3
- package/dist/leader-thread/mutationlog.d.ts.map +1 -1
- package/dist/leader-thread/mutationlog.js +106 -12
- package/dist/leader-thread/mutationlog.js.map +1 -1
- package/dist/leader-thread/recreate-db.d.ts.map +1 -1
- package/dist/leader-thread/recreate-db.js +4 -3
- package/dist/leader-thread/recreate-db.js.map +1 -1
- package/dist/leader-thread/types.d.ts +35 -19
- package/dist/leader-thread/types.d.ts.map +1 -1
- package/dist/leader-thread/types.js.map +1 -1
- package/dist/rehydrate-from-mutationlog.d.ts +5 -4
- package/dist/rehydrate-from-mutationlog.d.ts.map +1 -1
- package/dist/rehydrate-from-mutationlog.js +7 -9
- package/dist/rehydrate-from-mutationlog.js.map +1 -1
- package/dist/schema/EventId.d.ts +4 -0
- package/dist/schema/EventId.d.ts.map +1 -1
- package/dist/schema/EventId.js +7 -1
- package/dist/schema/EventId.js.map +1 -1
- package/dist/schema/MutationEvent.d.ts +87 -18
- package/dist/schema/MutationEvent.d.ts.map +1 -1
- package/dist/schema/MutationEvent.js +35 -6
- package/dist/schema/MutationEvent.js.map +1 -1
- package/dist/schema/schema.js +1 -1
- package/dist/schema/schema.js.map +1 -1
- package/dist/schema/system-tables.d.ts +67 -0
- package/dist/schema/system-tables.d.ts.map +1 -1
- package/dist/schema/system-tables.js +12 -1
- package/dist/schema/system-tables.js.map +1 -1
- package/dist/sync/ClientSessionSyncProcessor.d.ts +11 -1
- package/dist/sync/ClientSessionSyncProcessor.d.ts.map +1 -1
- package/dist/sync/ClientSessionSyncProcessor.js +54 -47
- package/dist/sync/ClientSessionSyncProcessor.js.map +1 -1
- package/dist/sync/sync.d.ts +16 -5
- package/dist/sync/sync.d.ts.map +1 -1
- package/dist/sync/sync.js.map +1 -1
- package/dist/sync/syncstate.d.ts +81 -83
- package/dist/sync/syncstate.d.ts.map +1 -1
- package/dist/sync/syncstate.js +159 -125
- package/dist/sync/syncstate.js.map +1 -1
- package/dist/sync/syncstate.test.js +97 -138
- package/dist/sync/syncstate.test.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +2 -2
- package/src/adapter-types.ts +5 -12
- package/src/devtools/devtools-messages-common.ts +9 -0
- package/src/devtools/devtools-messages-leader.ts +1 -2
- package/src/leader-thread/LeaderSyncProcessor.ts +398 -370
- package/src/leader-thread/apply-mutation.ts +81 -71
- package/src/leader-thread/leader-worker-devtools.ts +3 -8
- package/src/leader-thread/make-leader-thread-layer.ts +27 -41
- package/src/leader-thread/mod.ts +1 -1
- package/src/leader-thread/mutationlog.ts +167 -13
- package/src/leader-thread/recreate-db.ts +4 -3
- package/src/leader-thread/types.ts +34 -23
- package/src/rehydrate-from-mutationlog.ts +12 -12
- package/src/schema/EventId.ts +8 -1
- package/src/schema/MutationEvent.ts +42 -10
- package/src/schema/schema.ts +1 -1
- package/src/schema/system-tables.ts +20 -1
- package/src/sync/ClientSessionSyncProcessor.ts +64 -50
- package/src/sync/sync.ts +16 -9
- package/src/sync/syncstate.test.ts +173 -217
- package/src/sync/syncstate.ts +184 -151
- package/src/version.ts +1 -1
- package/dist/leader-thread/pull-queue-set.d.ts +0 -7
- package/dist/leader-thread/pull-queue-set.d.ts.map +0 -1
- package/dist/leader-thread/pull-queue-set.js +0 -48
- package/dist/leader-thread/pull-queue-set.js.map +0 -1
- package/src/leader-thread/pull-queue-set.ts +0 -67
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { Effect, Queue } from '@livestore/utils/effect';
|
|
2
|
-
import * as MutationEvent from '../schema/MutationEvent.js';
|
|
3
|
-
import { getMutationEventsSince } from './mutationlog.js';
|
|
4
|
-
import { LeaderThreadCtx } from './types.js';
|
|
5
|
-
export const makePullQueueSet = Effect.gen(function* () {
|
|
6
|
-
const set = new Set();
|
|
7
|
-
yield* Effect.addFinalizer(() => Effect.gen(function* () {
|
|
8
|
-
for (const queue of set) {
|
|
9
|
-
yield* Queue.shutdown(queue);
|
|
10
|
-
}
|
|
11
|
-
set.clear();
|
|
12
|
-
}));
|
|
13
|
-
const makeQueue = (since) => Effect.gen(function* () {
|
|
14
|
-
const queue = yield* Queue.unbounded().pipe(Effect.acquireRelease(Queue.shutdown));
|
|
15
|
-
yield* Effect.addFinalizer(() => Effect.sync(() => set.delete(queue)));
|
|
16
|
-
const mutationEvents = yield* getMutationEventsSince(since);
|
|
17
|
-
if (mutationEvents.length > 0) {
|
|
18
|
-
const newEvents = mutationEvents.map((mutationEvent) => new MutationEvent.EncodedWithMeta(mutationEvent));
|
|
19
|
-
yield* queue.offer({ payload: { _tag: 'upstream-advance', newEvents }, remaining: 0 });
|
|
20
|
-
}
|
|
21
|
-
set.add(queue);
|
|
22
|
-
return queue;
|
|
23
|
-
});
|
|
24
|
-
const offer = (item) => Effect.gen(function* () {
|
|
25
|
-
// Short-circuit if the payload is an empty upstream advance
|
|
26
|
-
if (item.payload._tag === 'upstream-advance' &&
|
|
27
|
-
item.payload.newEvents.length === 0 &&
|
|
28
|
-
item.payload.trimRollbackUntil === undefined) {
|
|
29
|
-
return;
|
|
30
|
-
}
|
|
31
|
-
const { clientId } = yield* LeaderThreadCtx;
|
|
32
|
-
if (clientId === 'client-b') {
|
|
33
|
-
// console.log(
|
|
34
|
-
// 'offer',
|
|
35
|
-
// item.payload._tag,
|
|
36
|
-
// item.payload.newEvents.map((_) => _.toJSON()),
|
|
37
|
-
// )
|
|
38
|
-
}
|
|
39
|
-
for (const queue of set) {
|
|
40
|
-
yield* Queue.offer(queue, item);
|
|
41
|
-
}
|
|
42
|
-
});
|
|
43
|
-
return {
|
|
44
|
-
makeQueue,
|
|
45
|
-
offer,
|
|
46
|
-
};
|
|
47
|
-
});
|
|
48
|
-
//# sourceMappingURL=pull-queue-set.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pull-queue-set.js","sourceRoot":"","sources":["../../src/leader-thread/pull-queue-set.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AAEvD,OAAO,KAAK,aAAa,MAAM,4BAA4B,CAAA;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AACzD,OAAO,EAAE,eAAe,EAAyC,MAAM,YAAY,CAAA;AAEnF,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClD,MAAM,GAAG,GAAG,IAAI,GAAG,EAA8B,CAAA;IAEjD,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,CAC9B,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,KAAK,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC;YACxB,KAAK,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QAC9B,CAAC;QAED,GAAG,CAAC,KAAK,EAAE,CAAA;IACb,CAAC,CAAC,CACH,CAAA;IAED,MAAM,SAAS,GAA8B,CAAC,KAAK,EAAE,EAAE,CACrD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,SAAS,EAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAA;QAEjG,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QAEtE,MAAM,cAAc,GAAG,KAAK,CAAC,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAA;QAE3D,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,MAAM,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,IAAI,aAAa,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,CAAA;YACzG,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAA;QACxF,CAAC;QAED,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAEd,OAAO,KAAK,CAAA;IACd,CAAC,CAAC,CAAA;IAEJ,MAAM,KAAK,GAA0B,CAAC,IAAI,EAAE,EAAE,CAC5C,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,4DAA4D;QAC5D,IACE,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,kBAAkB;YACxC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;YACnC,IAAI,CAAC,OAAO,CAAC,iBAAiB,KAAK,SAAS,EAC5C,CAAC;YACD,OAAM;QACR,CAAC;QAED,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC,CAAC,eAAe,CAAA;QAC3C,IAAI,QAAQ,KAAK,UAAU,EAAE,CAAC;YAC5B,eAAe;YACf,aAAa;YACb,uBAAuB;YACvB,mDAAmD;YACnD,IAAI;QACN,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC;YACxB,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;QACjC,CAAC;IACH,CAAC,CAAC,CAAA;IAEJ,OAAO;QACL,SAAS;QACT,KAAK;KACN,CAAA;AACH,CAAC,CAAC,CAAA"}
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
import { Effect, Queue } from '@livestore/utils/effect'
|
|
2
|
-
|
|
3
|
-
import * as MutationEvent from '../schema/MutationEvent.js'
|
|
4
|
-
import { getMutationEventsSince } from './mutationlog.js'
|
|
5
|
-
import { LeaderThreadCtx, type PullQueueItem, type PullQueueSet } from './types.js'
|
|
6
|
-
|
|
7
|
-
export const makePullQueueSet = Effect.gen(function* () {
|
|
8
|
-
const set = new Set<Queue.Queue<PullQueueItem>>()
|
|
9
|
-
|
|
10
|
-
yield* Effect.addFinalizer(() =>
|
|
11
|
-
Effect.gen(function* () {
|
|
12
|
-
for (const queue of set) {
|
|
13
|
-
yield* Queue.shutdown(queue)
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
set.clear()
|
|
17
|
-
}),
|
|
18
|
-
)
|
|
19
|
-
|
|
20
|
-
const makeQueue: PullQueueSet['makeQueue'] = (since) =>
|
|
21
|
-
Effect.gen(function* () {
|
|
22
|
-
const queue = yield* Queue.unbounded<PullQueueItem>().pipe(Effect.acquireRelease(Queue.shutdown))
|
|
23
|
-
|
|
24
|
-
yield* Effect.addFinalizer(() => Effect.sync(() => set.delete(queue)))
|
|
25
|
-
|
|
26
|
-
const mutationEvents = yield* getMutationEventsSince(since)
|
|
27
|
-
|
|
28
|
-
if (mutationEvents.length > 0) {
|
|
29
|
-
const newEvents = mutationEvents.map((mutationEvent) => new MutationEvent.EncodedWithMeta(mutationEvent))
|
|
30
|
-
yield* queue.offer({ payload: { _tag: 'upstream-advance', newEvents }, remaining: 0 })
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
set.add(queue)
|
|
34
|
-
|
|
35
|
-
return queue
|
|
36
|
-
})
|
|
37
|
-
|
|
38
|
-
const offer: PullQueueSet['offer'] = (item) =>
|
|
39
|
-
Effect.gen(function* () {
|
|
40
|
-
// Short-circuit if the payload is an empty upstream advance
|
|
41
|
-
if (
|
|
42
|
-
item.payload._tag === 'upstream-advance' &&
|
|
43
|
-
item.payload.newEvents.length === 0 &&
|
|
44
|
-
item.payload.trimRollbackUntil === undefined
|
|
45
|
-
) {
|
|
46
|
-
return
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
const { clientId } = yield* LeaderThreadCtx
|
|
50
|
-
if (clientId === 'client-b') {
|
|
51
|
-
// console.log(
|
|
52
|
-
// 'offer',
|
|
53
|
-
// item.payload._tag,
|
|
54
|
-
// item.payload.newEvents.map((_) => _.toJSON()),
|
|
55
|
-
// )
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
for (const queue of set) {
|
|
59
|
-
yield* Queue.offer(queue, item)
|
|
60
|
-
}
|
|
61
|
-
})
|
|
62
|
-
|
|
63
|
-
return {
|
|
64
|
-
makeQueue,
|
|
65
|
-
offer,
|
|
66
|
-
}
|
|
67
|
-
})
|