@livestore/common 0.3.0-dev.11 → 0.3.0-dev.3
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 +35 -47
- package/dist/adapter-types.d.ts.map +1 -1
- package/dist/adapter-types.js.map +1 -1
- package/dist/derived-mutations.d.ts +4 -4
- package/dist/derived-mutations.d.ts.map +1 -1
- package/dist/derived-mutations.test.js.map +1 -1
- package/dist/devtools/devtools-bridge.d.ts +1 -2
- package/dist/devtools/devtools-bridge.d.ts.map +1 -1
- package/dist/devtools/devtools-messages.d.ts +592 -3
- package/dist/devtools/devtools-messages.d.ts.map +1 -1
- package/dist/devtools/devtools-messages.js +171 -3
- package/dist/devtools/devtools-messages.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/init-singleton-tables.d.ts +2 -2
- package/dist/init-singleton-tables.d.ts.map +1 -1
- package/dist/init-singleton-tables.js.map +1 -1
- package/dist/leader-thread/apply-mutation.d.ts +2 -5
- package/dist/leader-thread/apply-mutation.d.ts.map +1 -1
- package/dist/leader-thread/apply-mutation.js +29 -41
- package/dist/leader-thread/apply-mutation.js.map +1 -1
- package/dist/leader-thread/connection.d.ts +4 -4
- package/dist/leader-thread/connection.d.ts.map +1 -1
- package/dist/leader-thread/connection.js +5 -5
- package/dist/leader-thread/connection.js.map +1 -1
- package/dist/leader-thread/leader-sync-processor.d.ts +2 -2
- package/dist/leader-thread/leader-sync-processor.d.ts.map +1 -1
- package/dist/leader-thread/leader-sync-processor.js +12 -20
- package/dist/leader-thread/leader-sync-processor.js.map +1 -1
- package/dist/leader-thread/leader-worker-devtools.d.ts +1 -1
- package/dist/leader-thread/leader-worker-devtools.d.ts.map +1 -1
- package/dist/leader-thread/leader-worker-devtools.js +81 -37
- package/dist/leader-thread/leader-worker-devtools.js.map +1 -1
- package/dist/leader-thread/make-leader-thread-layer.d.ts +11 -12
- package/dist/leader-thread/make-leader-thread-layer.d.ts.map +1 -1
- package/dist/leader-thread/make-leader-thread-layer.js +14 -33
- package/dist/leader-thread/make-leader-thread-layer.js.map +1 -1
- package/dist/leader-thread/mutationlog.d.ts +19 -6
- package/dist/leader-thread/mutationlog.d.ts.map +1 -1
- package/dist/leader-thread/mutationlog.js +6 -7
- package/dist/leader-thread/mutationlog.js.map +1 -1
- package/dist/leader-thread/pull-queue-set.d.ts.map +1 -1
- package/dist/leader-thread/recreate-db.d.ts.map +1 -1
- package/dist/leader-thread/recreate-db.js +18 -24
- package/dist/leader-thread/recreate-db.js.map +1 -1
- package/dist/leader-thread/types.d.ts +16 -36
- package/dist/leader-thread/types.d.ts.map +1 -1
- package/dist/leader-thread/types.js.map +1 -1
- package/dist/mutation.d.ts +2 -9
- package/dist/mutation.d.ts.map +1 -1
- package/dist/mutation.js +5 -5
- package/dist/mutation.js.map +1 -1
- package/dist/query-builder/impl.d.ts +1 -1
- package/dist/rehydrate-from-mutationlog.d.ts +5 -5
- package/dist/rehydrate-from-mutationlog.d.ts.map +1 -1
- package/dist/rehydrate-from-mutationlog.js +19 -13
- package/dist/rehydrate-from-mutationlog.js.map +1 -1
- package/dist/schema/EventId.d.ts +14 -16
- package/dist/schema/EventId.d.ts.map +1 -1
- package/dist/schema/EventId.js +7 -15
- package/dist/schema/EventId.js.map +1 -1
- package/dist/schema/MutationEvent.d.ts +80 -49
- package/dist/schema/MutationEvent.d.ts.map +1 -1
- package/dist/schema/MutationEvent.js +15 -32
- package/dist/schema/MutationEvent.js.map +1 -1
- package/dist/schema/system-tables.d.ts +26 -26
- package/dist/schema/system-tables.d.ts.map +1 -1
- package/dist/schema/system-tables.js +11 -19
- package/dist/schema/system-tables.js.map +1 -1
- package/dist/schema-management/common.d.ts +3 -3
- package/dist/schema-management/common.d.ts.map +1 -1
- package/dist/schema-management/common.js.map +1 -1
- package/dist/schema-management/migrations.d.ts +4 -4
- package/dist/schema-management/migrations.d.ts.map +1 -1
- package/dist/schema-management/migrations.js +6 -6
- package/dist/schema-management/migrations.js.map +1 -1
- package/dist/sync/client-session-sync-processor.d.ts +4 -4
- package/dist/sync/client-session-sync-processor.d.ts.map +1 -1
- package/dist/sync/index.d.ts +1 -1
- package/dist/sync/index.d.ts.map +1 -1
- package/dist/sync/index.js +1 -1
- package/dist/sync/index.js.map +1 -1
- package/dist/sync/next/history-dag-common.d.ts +4 -1
- package/dist/sync/next/history-dag-common.d.ts.map +1 -1
- package/dist/sync/next/history-dag-common.js +1 -1
- package/dist/sync/next/history-dag-common.js.map +1 -1
- package/dist/sync/next/rebase-events.d.ts +3 -3
- package/dist/sync/next/rebase-events.d.ts.map +1 -1
- package/dist/sync/next/rebase-events.js +2 -3
- package/dist/sync/next/rebase-events.js.map +1 -1
- package/dist/sync/next/test/mutation-fixtures.d.ts +7 -7
- package/dist/sync/next/test/mutation-fixtures.d.ts.map +1 -1
- package/dist/sync/next/test/mutation-fixtures.js +9 -3
- package/dist/sync/next/test/mutation-fixtures.js.map +1 -1
- package/dist/sync/sync.d.ts +11 -21
- package/dist/sync/sync.d.ts.map +1 -1
- package/dist/sync/sync.js.map +1 -1
- package/dist/sync/syncstate.d.ts +23 -45
- package/dist/sync/syncstate.d.ts.map +1 -1
- package/dist/sync/syncstate.js +12 -56
- package/dist/sync/syncstate.js.map +1 -1
- package/dist/sync/syncstate.test.js +69 -125
- package/dist/sync/syncstate.test.js.map +1 -1
- package/dist/sync/validate-push-payload.d.ts +2 -2
- package/dist/sync/validate-push-payload.d.ts.map +1 -1
- package/dist/sync/validate-push-payload.js +2 -2
- package/dist/sync/validate-push-payload.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/package.json +5 -6
- package/src/adapter-types.ts +40 -39
- package/src/derived-mutations.test.ts +1 -1
- package/src/derived-mutations.ts +5 -9
- package/src/devtools/devtools-bridge.ts +1 -2
- package/src/devtools/devtools-messages.ts +243 -3
- package/src/index.ts +6 -0
- package/src/init-singleton-tables.ts +2 -2
- package/src/leader-thread/apply-mutation.ts +35 -53
- package/src/leader-thread/connection.ts +7 -7
- package/src/leader-thread/{LeaderSyncProcessor.ts → leader-sync-processor.ts} +268 -306
- package/src/leader-thread/leader-worker-devtools.ts +124 -52
- package/src/leader-thread/make-leader-thread-layer.ts +30 -62
- package/src/leader-thread/mutationlog.ts +10 -14
- package/src/leader-thread/recreate-db.ts +20 -24
- package/src/leader-thread/types.ts +20 -41
- package/src/mutation.ts +7 -17
- package/src/rehydrate-from-mutationlog.ts +26 -18
- package/src/schema/EventId.ts +9 -23
- package/src/schema/MutationEvent.ts +24 -46
- package/src/schema/system-tables.ts +11 -19
- package/src/schema-management/common.ts +3 -3
- package/src/schema-management/migrations.ts +10 -10
- package/src/sync/{ClientSessionSyncProcessor.ts → client-session-sync-processor.ts} +19 -26
- package/src/sync/index.ts +1 -1
- package/src/sync/next/history-dag-common.ts +1 -1
- package/src/sync/next/rebase-events.ts +7 -7
- package/src/sync/next/test/mutation-fixtures.ts +10 -3
- package/src/sync/sync.ts +6 -19
- package/src/sync/syncstate.test.ts +67 -127
- package/src/sync/syncstate.ts +19 -21
- package/src/sync/validate-push-payload.ts +4 -7
- package/src/version.ts +1 -1
- package/dist/devtools/devtool-message-leader.d.ts +0 -2
- package/dist/devtools/devtool-message-leader.d.ts.map +0 -1
- package/dist/devtools/devtool-message-leader.js +0 -2
- package/dist/devtools/devtool-message-leader.js.map +0 -1
- package/dist/devtools/devtools-messages-client-session.d.ts +0 -297
- package/dist/devtools/devtools-messages-client-session.d.ts.map +0 -1
- package/dist/devtools/devtools-messages-client-session.js +0 -61
- package/dist/devtools/devtools-messages-client-session.js.map +0 -1
- package/dist/devtools/devtools-messages-common.d.ts +0 -65
- package/dist/devtools/devtools-messages-common.d.ts.map +0 -1
- package/dist/devtools/devtools-messages-common.js +0 -35
- package/dist/devtools/devtools-messages-common.js.map +0 -1
- package/dist/devtools/devtools-messages-leader.d.ts +0 -261
- package/dist/devtools/devtools-messages-leader.d.ts.map +0 -1
- package/dist/devtools/devtools-messages-leader.js +0 -85
- package/dist/devtools/devtools-messages-leader.js.map +0 -1
- package/dist/leader-thread/LeaderSyncProcessor.d.ts +0 -37
- package/dist/leader-thread/LeaderSyncProcessor.d.ts.map +0 -1
- package/dist/leader-thread/LeaderSyncProcessor.js +0 -432
- package/dist/leader-thread/LeaderSyncProcessor.js.map +0 -1
- package/dist/schema/EventId.test.d.ts +0 -2
- package/dist/schema/EventId.test.d.ts.map +0 -1
- package/dist/schema/EventId.test.js +0 -11
- package/dist/schema/EventId.test.js.map +0 -1
- package/dist/schema/MutationEvent.test.d.ts +0 -2
- package/dist/schema/MutationEvent.test.d.ts.map +0 -1
- package/dist/schema/MutationEvent.test.js +0 -2
- package/dist/schema/MutationEvent.test.js.map +0 -1
- package/dist/sync/ClientSessionSyncProcessor.d.ts +0 -43
- package/dist/sync/ClientSessionSyncProcessor.d.ts.map +0 -1
- package/dist/sync/ClientSessionSyncProcessor.js +0 -141
- package/dist/sync/ClientSessionSyncProcessor.js.map +0 -1
- package/src/devtools/devtools-messages-client-session.ts +0 -109
- package/src/devtools/devtools-messages-common.ts +0 -52
- package/src/devtools/devtools-messages-leader.ts +0 -115
- package/src/schema/EventId.test.ts +0 -12
@@ -1,4 +1,172 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
1
|
+
import { Schema, Transferable } from '@livestore/utils/effect';
|
2
|
+
import { NetworkStatus } from '../adapter-types.js';
|
3
|
+
import { DebugInfo } from '../debug-info.js';
|
4
|
+
import * as MutationEvent from '../schema/MutationEvent.js';
|
5
|
+
import { PreparedBindValues } from '../util.js';
|
6
|
+
import { liveStoreVersion as pkgVersion } from '../version.js';
|
7
|
+
const requestId = Schema.String;
|
8
|
+
const appHostId = Schema.String;
|
9
|
+
const liveStoreVersion = Schema.Literal(pkgVersion);
|
10
|
+
const LSDMessage = (tag, fields) => Schema.TaggedStruct(tag, {
|
11
|
+
liveStoreVersion,
|
12
|
+
...fields,
|
13
|
+
}).annotations({ identifier: tag });
|
14
|
+
const LSDChannelMessage = (tag, fields) => LSDMessage(tag, {
|
15
|
+
...fields,
|
16
|
+
});
|
17
|
+
const LSDStoreChannelMessage = (tag, fields) => LSDMessage(tag, {
|
18
|
+
appHostId,
|
19
|
+
...fields,
|
20
|
+
});
|
21
|
+
const LSDStoreReqResMessage = (tag, fields) => LSDMessage(tag, {
|
22
|
+
appHostId,
|
23
|
+
requestId,
|
24
|
+
...fields,
|
25
|
+
});
|
26
|
+
const LSDReqResMessage = (tag, fields) => LSDChannelMessage(tag, {
|
27
|
+
requestId,
|
28
|
+
...fields,
|
29
|
+
});
|
30
|
+
export class SnapshotReq extends LSDReqResMessage('LSD.Leader.SnapshotReq', {}) {
|
31
|
+
}
|
32
|
+
export class SnapshotRes extends LSDReqResMessage('LSD.Leader.SnapshotRes', {
|
33
|
+
snapshot: Transferable.Uint8Array,
|
34
|
+
}) {
|
35
|
+
}
|
36
|
+
export class LoadDatabaseFileReq extends LSDReqResMessage('LSD.Leader.LoadDatabaseFileReq', {
|
37
|
+
data: Transferable.Uint8Array,
|
38
|
+
}) {
|
39
|
+
}
|
40
|
+
export class LoadDatabaseFileRes extends LSDReqResMessage('LSD.Leader.LoadDatabaseFileRes', {
|
41
|
+
status: Schema.Literal('ok', 'unsupported-file', 'unsupported-database'),
|
42
|
+
}) {
|
43
|
+
}
|
44
|
+
export class DebugInfoReq extends LSDStoreReqResMessage('LSD.DebugInfoReq', {}) {
|
45
|
+
}
|
46
|
+
export class DebugInfoRes extends LSDStoreReqResMessage('LSD.DebugInfoRes', {
|
47
|
+
debugInfo: DebugInfo,
|
48
|
+
}) {
|
49
|
+
}
|
50
|
+
export class DebugInfoHistorySubscribe extends LSDStoreReqResMessage('LSD.DebugInfoHistorySubscribe', {}) {
|
51
|
+
}
|
52
|
+
export class DebugInfoHistoryRes extends LSDStoreReqResMessage('LSD.DebugInfoHistoryRes', {
|
53
|
+
debugInfoHistory: Schema.Array(DebugInfo),
|
54
|
+
}) {
|
55
|
+
}
|
56
|
+
export class DebugInfoHistoryUnsubscribe extends LSDStoreReqResMessage('LSD.DebugInfoHistoryUnsubscribe', {}) {
|
57
|
+
}
|
58
|
+
export class DebugInfoResetReq extends LSDStoreReqResMessage('LSD.DebugInfoResetReq', {}) {
|
59
|
+
}
|
60
|
+
export class DebugInfoResetRes extends LSDStoreReqResMessage('LSD.DebugInfoResetRes', {}) {
|
61
|
+
}
|
62
|
+
export class DebugInfoRerunQueryReq extends LSDStoreReqResMessage('LSD.DebugInfoRerunQueryReq', {
|
63
|
+
queryStr: Schema.String,
|
64
|
+
bindValues: Schema.UndefinedOr(PreparedBindValues),
|
65
|
+
queriedTables: Schema.ReadonlySet(Schema.String),
|
66
|
+
}) {
|
67
|
+
}
|
68
|
+
export class DebugInfoRerunQueryRes extends LSDStoreReqResMessage('LSD.DebugInfoRerunQueryRes', {}) {
|
69
|
+
}
|
70
|
+
// TODO refactor this to use push/pull semantics
|
71
|
+
export class MutationBroadcast extends LSDMessage('LSD.Leader.MutationBroadcast', {
|
72
|
+
mutationEventEncoded: MutationEvent.EncodedAny,
|
73
|
+
}) {
|
74
|
+
}
|
75
|
+
// TODO refactor this to use push/pull semantics
|
76
|
+
export class RunMutationReq extends LSDReqResMessage('LSD.Leader.RunMutationReq', {
|
77
|
+
mutationEventEncoded: MutationEvent.EncodedAny.pipe(Schema.omit('id', 'parentId')),
|
78
|
+
}) {
|
79
|
+
}
|
80
|
+
export class RunMutationRes extends LSDReqResMessage('LSD.Leader.RunMutationRes', {}) {
|
81
|
+
}
|
82
|
+
export class MutationLogReq extends LSDReqResMessage('LSD.Leader.MutationLogReq', {}) {
|
83
|
+
}
|
84
|
+
export class MutationLogRes extends LSDReqResMessage('LSD.Leader.MutationLogRes', {
|
85
|
+
mutationLog: Transferable.Uint8Array,
|
86
|
+
}) {
|
87
|
+
}
|
88
|
+
export class ReactivityGraphSubscribe extends LSDStoreReqResMessage('LSD.ReactivityGraphSubscribe', {
|
89
|
+
includeResults: Schema.Boolean,
|
90
|
+
}) {
|
91
|
+
}
|
92
|
+
export class ReactivityGraphUnsubscribe extends LSDStoreReqResMessage('LSD.ReactivityGraphUnsubscribe', {}) {
|
93
|
+
}
|
94
|
+
export class ReactivityGraphRes extends LSDStoreReqResMessage('LSD.ReactivityGraphRes', {
|
95
|
+
reactivityGraph: Schema.Any,
|
96
|
+
}) {
|
97
|
+
}
|
98
|
+
export class LiveQueriesSubscribe extends LSDStoreReqResMessage('LSD.LiveQueriesSubscribe', {}) {
|
99
|
+
}
|
100
|
+
export class LiveQueriesUnsubscribe extends LSDStoreReqResMessage('LSD.LiveQueriesUnsubscribe', {}) {
|
101
|
+
}
|
102
|
+
export class SerializedLiveQuery extends Schema.Struct({
|
103
|
+
_tag: Schema.Literal('computed', 'db', 'graphql'),
|
104
|
+
id: Schema.Number,
|
105
|
+
label: Schema.String,
|
106
|
+
runs: Schema.Number,
|
107
|
+
executionTimes: Schema.Array(Schema.Number),
|
108
|
+
lastestResult: Schema.Any,
|
109
|
+
activeSubscriptions: Schema.Array(Schema.Struct({ frames: Schema.Array(Schema.Struct({ name: Schema.String, filePath: Schema.String })) })),
|
110
|
+
}) {
|
111
|
+
}
|
112
|
+
export class LiveQueriesRes extends LSDStoreReqResMessage('LSD.LiveQueriesRes', {
|
113
|
+
liveQueries: Schema.Array(SerializedLiveQuery),
|
114
|
+
}) {
|
115
|
+
}
|
116
|
+
export class ResetAllDataReq extends LSDReqResMessage('LSD.Leader.ResetAllDataReq', {
|
117
|
+
mode: Schema.Literal('all-data', 'only-app-db'),
|
118
|
+
}) {
|
119
|
+
}
|
120
|
+
export class ResetAllDataRes extends LSDReqResMessage('LSD.Leader.ResetAllDataRes', {}) {
|
121
|
+
}
|
122
|
+
export class DatabaseFileInfoReq extends LSDReqResMessage('LSD.Leader.DatabaseFileInfoReq', {}) {
|
123
|
+
}
|
124
|
+
export class DatabaseFileInfo extends Schema.Struct({
|
125
|
+
fileSize: Schema.Number,
|
126
|
+
persistenceInfo: Schema.Struct({ fileName: Schema.String }, { key: Schema.String, value: Schema.Any }),
|
127
|
+
}) {
|
128
|
+
}
|
129
|
+
export class DatabaseFileInfoRes extends LSDReqResMessage('LSD.Leader.DatabaseFileInfoRes', {
|
130
|
+
db: DatabaseFileInfo,
|
131
|
+
mutationLog: DatabaseFileInfo,
|
132
|
+
}) {
|
133
|
+
}
|
134
|
+
export class NetworkStatusSubscribe extends LSDReqResMessage('LSD.Leader.NetworkStatusSubscribe', {}) {
|
135
|
+
}
|
136
|
+
export class NetworkStatusUnsubscribe extends LSDReqResMessage('LSD.Leader.NetworkStatusUnsubscribe', {}) {
|
137
|
+
}
|
138
|
+
export class NetworkStatusRes extends LSDReqResMessage('LSD.Leader.NetworkStatusRes', {
|
139
|
+
networkStatus: NetworkStatus,
|
140
|
+
}) {
|
141
|
+
}
|
142
|
+
export class SyncingInfoReq extends LSDReqResMessage('LSD.Leader.SyncingInfoReq', {}) {
|
143
|
+
}
|
144
|
+
export class SyncingInfo extends Schema.Struct({
|
145
|
+
enabled: Schema.Boolean,
|
146
|
+
metadata: Schema.Record({ key: Schema.String, value: Schema.Any }),
|
147
|
+
}) {
|
148
|
+
}
|
149
|
+
export class SyncingInfoRes extends LSDReqResMessage('LSD.Leader.SyncingInfoRes', {
|
150
|
+
syncingInfo: SyncingInfo,
|
151
|
+
}) {
|
152
|
+
}
|
153
|
+
export class SyncHistorySubscribe extends LSDReqResMessage('LSD.Leader.SyncHistorySubscribe', {}) {
|
154
|
+
}
|
155
|
+
export class SyncHistoryUnsubscribe extends LSDReqResMessage('LSD.Leader.SyncHistoryUnsubscribe', {}) {
|
156
|
+
}
|
157
|
+
export class SyncHistoryRes extends LSDReqResMessage('LSD.Leader.SyncHistoryRes', {
|
158
|
+
mutationEventEncoded: MutationEvent.EncodedAny,
|
159
|
+
metadata: Schema.Option(Schema.JsonValue),
|
160
|
+
}) {
|
161
|
+
}
|
162
|
+
export class Disconnect extends LSDStoreChannelMessage('LSD.Disconnect', {}) {
|
163
|
+
}
|
164
|
+
export class Ping extends LSDReqResMessage('LSD.Ping', {}) {
|
165
|
+
}
|
166
|
+
export class Pong extends LSDReqResMessage('LSD.Pong', {}) {
|
167
|
+
}
|
168
|
+
export const MessageToAppLeader = Schema.Union(SnapshotReq, LoadDatabaseFileReq, MutationLogReq, ResetAllDataReq, NetworkStatusSubscribe, NetworkStatusUnsubscribe, Disconnect, RunMutationReq, Ping, DatabaseFileInfoReq, SyncHistorySubscribe, SyncHistoryUnsubscribe, SyncingInfoReq).annotations({ identifier: 'LSD.MessageToAppLeader' });
|
169
|
+
export const MessageToAppClientSession = Schema.Union(DebugInfoReq, DebugInfoHistorySubscribe, DebugInfoHistoryUnsubscribe, DebugInfoResetReq, DebugInfoRerunQueryReq, ReactivityGraphSubscribe, ReactivityGraphUnsubscribe, LiveQueriesSubscribe, LiveQueriesUnsubscribe, Disconnect).annotations({ identifier: 'LSD.MessageToAppClientSession' });
|
170
|
+
export const MessageFromAppLeader = Schema.Union(SnapshotRes, LoadDatabaseFileRes, MutationLogRes, ResetAllDataRes, Disconnect, MutationBroadcast, NetworkStatusRes, RunMutationRes, Pong, DatabaseFileInfoRes, SyncHistoryRes, SyncingInfoRes).annotations({ identifier: 'LSD.MessageFromAppLeader' });
|
171
|
+
export const MessageFromAppClientSession = Schema.Union(DebugInfoRes, DebugInfoHistoryRes, DebugInfoResetRes, DebugInfoRerunQueryRes, ReactivityGraphRes, LiveQueriesRes, Disconnect).annotations({ identifier: 'LSD.MessageFromAppClientSession' });
|
4
172
|
//# sourceMappingURL=devtools-messages.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"devtools-messages.js","sourceRoot":"","sources":["../../src/devtools/devtools-messages.ts"],"names":[],"mappings":"AAAA,
|
1
|
+
{"version":3,"file":"devtools-messages.js","sourceRoot":"","sources":["../../src/devtools/devtools-messages.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAA;AACzC,cAAc,WAAW,CAAA;AACzB,cAAc,oBAAoB,CAAA;AAClC,cAAc,mCAAmC,CAAA;AACjD,cAAc,eAAe,CAAA;AAC7B,cAAc,4BAA4B,CAAA;AAC1C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,iBAAiB,CAAA;AAC/B,cAAc,wBAAwB,CAAA;AACtC,cAAc,iBAAiB,CAAA;AAC/B,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAA;AAC/C,cAAc,iBAAiB,CAAA;AAC/B,cAAc,0BAA0B,CAAA;AACxC,cAAc,cAAc,CAAA;AAC5B,cAAc,wBAAwB,CAAA;AACtC,cAAc,qBAAqB,CAAA;AACnC,cAAc,WAAW,CAAA"}
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAA;AACzC,cAAc,WAAW,CAAA;AACzB,cAAc,oBAAoB,CAAA;AAClC,cAAc,mCAAmC,CAAA;AACjD,cAAc,eAAe,CAAA;AAC7B,cAAc,4BAA4B,CAAA;AAC1C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,iBAAiB,CAAA;AAC/B,cAAc,wBAAwB,CAAA;AACtC,cAAc,iBAAiB,CAAA;AAC/B,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAA;AAC/C,cAAc,iBAAiB,CAAA;AAC/B,cAAc,0BAA0B,CAAA;AACxC,cAAc,cAAc,CAAA;AAC5B,cAAc,wBAAwB,CAAA;AACtC,cAAc,qBAAqB,CAAA;AACnC,cAAc,WAAW,CAAA;AAEzB,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,eAAe;KAExB;CACF"}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import type {
|
1
|
+
import type { SynchronousDatabase } from './adapter-types.js';
|
2
2
|
import type { LiveStoreSchema } from './schema/mod.js';
|
3
|
-
export declare const initializeSingletonTables: (schema: LiveStoreSchema, db:
|
3
|
+
export declare const initializeSingletonTables: (schema: LiveStoreSchema, db: SynchronousDatabase) => void;
|
4
4
|
//# sourceMappingURL=init-singleton-tables.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"init-singleton-tables.d.ts","sourceRoot":"","sources":["../src/init-singleton-tables.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
1
|
+
{"version":3,"file":"init-singleton-tables.d.ts","sourceRoot":"","sources":["../src/init-singleton-tables.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAItD,eAAO,MAAM,yBAAyB,WAAY,eAAe,MAAM,mBAAmB,SAkBzF,CAAA"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"init-singleton-tables.js","sourceRoot":"","sources":["../src/init-singleton-tables.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAA;AACpE,OAAO,EAAE,iBAAiB,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AAElD,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,MAAuB,EAAE,
|
1
|
+
{"version":3,"file":"init-singleton-tables.js","sourceRoot":"","sources":["../src/init-singleton-tables.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAA;AACpE,OAAO,EAAE,iBAAiB,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AAElD,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,MAAuB,EAAE,EAAuB,EAAE,EAAE;IAC5F,KAAK,MAAM,CAAC,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QACzC,IAAI,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YACjC,MAAM,aAAa,GAAG,uBAAuB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;YAElE,MAAM,kBAAkB,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC,CAAA;YAChE,MAAM,YAAY,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAE5E,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAA;YACzC,MAAM,WAAW,GAAG,GAAG,CAAA,eAAe,SAAS,KAAK,kBAAkB,CAAC,IAAI,CACzE,IAAI,CACL,YAAY,YAAY,mCAAmC,SAAS,0BAA0B,CAAA;YAE/F,MAAM,UAAU,GAAG,iBAAiB,CAAC,EAAE,GAAG,aAAa,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,WAAW,CAAC,CAAA;YAExF,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,UAAU,CAAC,CAAA;QACrC,CAAC;IACH,CAAC;AACH,CAAC,CAAA"}
|
@@ -1,11 +1,8 @@
|
|
1
1
|
import type { Scope } from '@livestore/utils/effect';
|
2
2
|
import { Effect } from '@livestore/utils/effect';
|
3
3
|
import type { SqliteError, UnexpectedError } from '../index.js';
|
4
|
-
import {
|
4
|
+
import type { MutationEvent } from '../schema/mod.js';
|
5
5
|
import { LeaderThreadCtx } from './types.js';
|
6
|
-
export type ApplyMutation = (mutationEventEncoded: MutationEvent.AnyEncoded,
|
7
|
-
/** Needed for rehydrateFromMutationLog */
|
8
|
-
skipMutationLog?: boolean;
|
9
|
-
}) => Effect.Effect<void, SqliteError | UnexpectedError>;
|
6
|
+
export type ApplyMutation = (mutationEventEncoded: MutationEvent.AnyEncoded) => Effect.Effect<void, SqliteError | UnexpectedError>;
|
10
7
|
export declare const makeApplyMutation: Effect.Effect<ApplyMutation, never, Scope.Scope | LeaderThreadCtx>;
|
11
8
|
//# sourceMappingURL=apply-mutation.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"apply-mutation.d.ts","sourceRoot":"","sources":["../../src/leader-thread/apply-mutation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AACpD,OAAO,EAAE,MAAM,EAAkB,MAAM,yBAAyB,CAAA;AAEhE,OAAO,KAAK,
|
1
|
+
{"version":3,"file":"apply-mutation.d.ts","sourceRoot":"","sources":["../../src/leader-thread/apply-mutation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AACpD,OAAO,EAAE,MAAM,EAAkB,MAAM,yBAAyB,CAAA;AAEhE,OAAO,KAAK,EAAE,WAAW,EAAuB,eAAe,EAAE,MAAM,aAAa,CAAA;AAQpF,OAAO,KAAK,EAAmB,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAGtE,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAE5C,MAAM,MAAM,aAAa,GAAG,CAC1B,oBAAoB,EAAE,aAAa,CAAC,UAAU,KAC3C,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,GAAG,eAAe,CAAC,CAAA;AAEvD,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,GAAG,eAAe,CAyEhG,CAAA"}
|
@@ -1,7 +1,6 @@
|
|
1
1
|
import { memoizeByRef, shouldNeverHappen } from '@livestore/utils';
|
2
2
|
import { Effect, Option, Schema } from '@livestore/utils/effect';
|
3
|
-
import { getExecArgsFromMutation } from '../
|
4
|
-
import { MUTATION_LOG_META_TABLE, mutationLogMetaTable, SESSION_CHANGESET_META_TABLE, sessionChangesetMetaTable, } from '../schema/mod.js';
|
3
|
+
import { getExecArgsFromMutation, MUTATION_LOG_META_TABLE, mutationLogMetaTable, SESSION_CHANGESET_META_TABLE, sessionChangesetMetaTable, } from '../index.js';
|
5
4
|
import { insertRow } from '../sql-queries/index.js';
|
6
5
|
import { execSql, execSqlPrepared } from './connection.js';
|
7
6
|
import { LeaderThreadCtx } from './types.js';
|
@@ -13,23 +12,12 @@ export const makeApplyMutation = Effect.gen(function* () {
|
|
13
12
|
// at build time and lookup the pre-computed hash at runtime.
|
14
13
|
// Also see https://github.com/Effect-TS/effect/issues/2719
|
15
14
|
[...leaderThreadCtx.schema.mutations.entries()].map(([k, v]) => [k, Schema.hash(v.schema)]));
|
16
|
-
return (mutationEventEncoded
|
17
|
-
const { schema,
|
18
|
-
const
|
19
|
-
const mutationName =
|
15
|
+
return (mutationEventEncoded) => Effect.gen(function* () {
|
16
|
+
const { mutationEventSchema, schema, db, dbLog } = leaderThreadCtx;
|
17
|
+
const mutationEventDecoded = Schema.decodeUnknownSync(mutationEventSchema)(mutationEventEncoded);
|
18
|
+
const mutationName = mutationEventDecoded.mutation;
|
20
19
|
const mutationDef = schema.mutations.get(mutationName) ?? shouldNeverHappen(`Unknown mutation: ${mutationName}`);
|
21
|
-
const execArgsArr = getExecArgsFromMutation({
|
22
|
-
mutationDef,
|
23
|
-
mutationEvent: { decoded: undefined, encoded: mutationEventEncoded },
|
24
|
-
});
|
25
|
-
// NOTE we might want to bring this back if we want to debug no-op mutations
|
26
|
-
// const makeExecuteOptions = (statementSql: string, bindValues: any) => ({
|
27
|
-
// onRowsChanged: (rowsChanged: number) => {
|
28
|
-
// if (rowsChanged === 0) {
|
29
|
-
// console.warn(`Mutation "${mutationDef.name}" did not affect any rows:`, statementSql, bindValues)
|
30
|
-
// }
|
31
|
-
// },
|
32
|
-
// })
|
20
|
+
const execArgsArr = getExecArgsFromMutation({ mutationDef, mutationEventDecoded });
|
33
21
|
// console.group('[@livestore/common:leader-thread:applyMutation]', { mutationName })
|
34
22
|
const session = db.session();
|
35
23
|
for (const { statementSql, bindValues } of execArgsArr) {
|
@@ -39,23 +27,26 @@ export const makeApplyMutation = Effect.gen(function* () {
|
|
39
27
|
}
|
40
28
|
const changeset = session.changeset();
|
41
29
|
session.finish();
|
42
|
-
//
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
30
|
+
// NOTE for no-op mutations (e.g. if the state didn't change) the changeset will be empty
|
31
|
+
// TODO possibly write a null value instead of omitting the row
|
32
|
+
if (changeset !== undefined && changeset.length > 0) {
|
33
|
+
// TODO use prepared statements
|
34
|
+
yield* execSql(db, ...insertRow({
|
35
|
+
tableName: SESSION_CHANGESET_META_TABLE,
|
36
|
+
columns: sessionChangesetMetaTable.sqliteDef.columns,
|
37
|
+
values: {
|
38
|
+
idGlobal: mutationEventEncoded.id.global,
|
39
|
+
idLocal: mutationEventEncoded.id.local,
|
40
|
+
changeset,
|
41
|
+
debug: execArgsArr,
|
42
|
+
},
|
43
|
+
}));
|
44
|
+
}
|
54
45
|
// console.groupEnd()
|
55
46
|
// write to mutation_log
|
56
|
-
const excludeFromMutationLog = shouldExcludeMutationFromLog(mutationName,
|
57
|
-
if (
|
58
|
-
yield* insertIntoMutationLog(mutationEventEncoded,
|
47
|
+
const excludeFromMutationLog = shouldExcludeMutationFromLog(mutationName, mutationEventDecoded);
|
48
|
+
if (excludeFromMutationLog === false) {
|
49
|
+
yield* insertIntoMutationLog(mutationEventEncoded, dbLog, mutationDefSchemaHashMap);
|
59
50
|
}
|
60
51
|
else {
|
61
52
|
// console.debug('[@livestore/common:leader-thread] skipping mutation log write', mutation, statementSql, bindValues)
|
@@ -64,15 +55,15 @@ export const makeApplyMutation = Effect.gen(function* () {
|
|
64
55
|
attributes: {
|
65
56
|
mutationName: mutationEventEncoded.mutation,
|
66
57
|
mutationId: mutationEventEncoded.id,
|
67
|
-
'span.label':
|
58
|
+
'span.label': mutationEventEncoded.mutation,
|
68
59
|
},
|
69
60
|
}));
|
70
61
|
});
|
71
|
-
const insertIntoMutationLog = (mutationEventEncoded,
|
62
|
+
const insertIntoMutationLog = (mutationEventEncoded, dbLog, mutationDefSchemaHashMap) => Effect.gen(function* () {
|
72
63
|
const mutationName = mutationEventEncoded.mutation;
|
73
64
|
const mutationDefSchemaHash = mutationDefSchemaHashMap.get(mutationName) ?? shouldNeverHappen(`Unknown mutation: ${mutationName}`);
|
74
65
|
// TODO use prepared statements
|
75
|
-
yield* execSql(
|
66
|
+
yield* execSql(dbLog, ...insertRow({
|
76
67
|
tableName: MUTATION_LOG_META_TABLE,
|
77
68
|
columns: mutationLogMetaTable.sqliteDef.columns,
|
78
69
|
values: {
|
@@ -93,14 +84,11 @@ const makeShouldExcludeMutationFromLog = memoizeByRef((schema) => {
|
|
93
84
|
const mutationLogExclude = migrationOptions.strategy === 'from-mutation-log'
|
94
85
|
? (migrationOptions.excludeMutations ?? new Set(['livestore.RawSql']))
|
95
86
|
: new Set(['livestore.RawSql']);
|
96
|
-
return (mutationName,
|
87
|
+
return (mutationName, mutationEventDecoded) => {
|
97
88
|
if (mutationLogExclude.has(mutationName))
|
98
89
|
return true;
|
99
90
|
const mutationDef = schema.mutations.get(mutationName) ?? shouldNeverHappen(`Unknown mutation: ${mutationName}`);
|
100
|
-
const execArgsArr = getExecArgsFromMutation({
|
101
|
-
mutationDef,
|
102
|
-
mutationEvent: { decoded: undefined, encoded: mutationEventEncoded },
|
103
|
-
});
|
91
|
+
const execArgsArr = getExecArgsFromMutation({ mutationDef, mutationEventDecoded });
|
104
92
|
return execArgsArr.some((_) => _.statementSql.includes('__livestore'));
|
105
93
|
};
|
106
94
|
});
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"apply-mutation.js","sourceRoot":"","sources":["../../src/leader-thread/apply-mutation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAElE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAGhE,OAAO,
|
1
|
+
{"version":3,"file":"apply-mutation.js","sourceRoot":"","sources":["../../src/leader-thread/apply-mutation.ts"],"names":[],"mappings":"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"}
|
@@ -1,11 +1,11 @@
|
|
1
1
|
import { Effect } from '@livestore/utils/effect';
|
2
|
-
import type {
|
2
|
+
import type { SynchronousDatabase } from '../adapter-types.js';
|
3
3
|
import { SqliteError } from '../adapter-types.js';
|
4
4
|
import type { BindValues } from '../sql-queries/index.js';
|
5
5
|
import type { PreparedBindValues } from '../util.js';
|
6
|
-
export declare const configureConnection: (
|
6
|
+
export declare const configureConnection: (syncDb: SynchronousDatabase, { fkEnabled }: {
|
7
7
|
fkEnabled: boolean;
|
8
8
|
}) => Effect.Effect<void, SqliteError, never>;
|
9
|
-
export declare const execSql: (
|
10
|
-
export declare const execSqlPrepared: (
|
9
|
+
export declare const execSql: (syncDb: SynchronousDatabase, sql: string, bind: BindValues) => Effect.Effect<void, SqliteError, never>;
|
10
|
+
export declare const execSqlPrepared: (syncDb: SynchronousDatabase, sql: string, bindValues: PreparedBindValues) => Effect.Effect<void, SqliteError, never>;
|
11
11
|
//# sourceMappingURL=connection.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/leader-thread/connection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAEhD,OAAO,KAAK,EAAE,
|
1
|
+
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/leader-thread/connection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAEhD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AACzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAQpD,eAAO,MAAM,mBAAmB,WAAY,mBAAmB,iBAAiB;IAAE,SAAS,EAAE,OAAO,CAAA;CAAE,4CASnG,CAAA;AAEH,eAAO,MAAM,OAAO,WAAY,mBAAmB,OAAO,MAAM,QAAQ,UAAU,4CAajF,CAAA;AAYD,eAAO,MAAM,eAAe,WAAY,mBAAmB,OAAO,MAAM,cAAc,kBAAkB,4CAgBvG,CAAA"}
|
@@ -2,15 +2,15 @@
|
|
2
2
|
import { Effect } from '@livestore/utils/effect';
|
3
3
|
import { SqliteError } from '../adapter-types.js';
|
4
4
|
import { prepareBindValues, sql } from '../util.js';
|
5
|
-
export const configureConnection = (
|
5
|
+
export const configureConnection = (syncDb, { fkEnabled }) => execSql(syncDb, sql `
|
6
6
|
PRAGMA page_size=8192;
|
7
7
|
PRAGMA journal_mode=MEMORY;
|
8
8
|
${fkEnabled ? sql `PRAGMA foreign_keys='ON';` : sql `PRAGMA foreign_keys='OFF';`}
|
9
9
|
`, {});
|
10
|
-
export const execSql = (
|
10
|
+
export const execSql = (syncDb, sql, bind) => {
|
11
11
|
const bindValues = prepareBindValues(bind, sql);
|
12
12
|
return Effect.try({
|
13
|
-
try: () =>
|
13
|
+
try: () => syncDb.execute(sql, bindValues),
|
14
14
|
catch: (cause) => new SqliteError({ cause, query: { bindValues, sql }, code: cause.code }),
|
15
15
|
}).pipe(Effect.asVoid,
|
16
16
|
// Effect.logDuration(`@livestore/common:execSql:${sql}`),
|
@@ -27,9 +27,9 @@ export const execSql = (sqliteDb, sql, bind) => {
|
|
27
27
|
// })
|
28
28
|
// }
|
29
29
|
// TODO actually use prepared statements
|
30
|
-
export const execSqlPrepared = (
|
30
|
+
export const execSqlPrepared = (syncDb, sql, bindValues) => {
|
31
31
|
return Effect.try({
|
32
|
-
try: () =>
|
32
|
+
try: () => syncDb.execute(sql, bindValues),
|
33
33
|
catch: (cause) => new SqliteError({ cause, query: { bindValues, sql }, code: cause.code }),
|
34
34
|
}).pipe(Effect.asVoid,
|
35
35
|
// Effect.logDuration(`@livestore/common:execSqlPrepared:${sql}`),
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/leader-thread/connection.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAGhD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAGjD,OAAO,EAAE,iBAAiB,EAAE,GAAG,EAAE,MAAM,YAAY,CAAA;AAOnD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,
|
1
|
+
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/leader-thread/connection.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAGhD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAGjD,OAAO,EAAE,iBAAiB,EAAE,GAAG,EAAE,MAAM,YAAY,CAAA;AAOnD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,MAA2B,EAAE,EAAE,SAAS,EAA0B,EAAE,EAAE,CACxG,OAAO,CACL,MAAM,EACN,GAAG,CAAA;;;MAGD,SAAS,CAAC,CAAC,CAAC,GAAG,CAAA,2BAA2B,CAAC,CAAC,CAAC,GAAG,CAAA,4BAA4B;GAC/E,EACC,EAAE,CACH,CAAA;AAEH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,MAA2B,EAAE,GAAW,EAAE,IAAgB,EAAE,EAAE;IACpF,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;IAC/C,OAAO,MAAM,CAAC,GAAG,CAAC;QAChB,GAAG,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC;QAC1C,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CACf,IAAI,WAAW,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,IAAI,EAAG,KAA8B,CAAC,IAAI,EAAE,CAAC;KACrG,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,MAAM;IACb,0DAA0D;IAC1D,MAAM,CAAC,QAAQ,CAAC,2BAA2B,EAAE;QAC3C,UAAU,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;KAC/E,CAAC,CACH,CAAA;AACH,CAAC,CAAA;AAED,gFAAgF;AAChF,yDAAyD;AACzD,wBAAwB;AACxB,6CAA6C;AAC7C,wBAAwB;AACxB,sHAAsH;AACtH,OAAO;AACP,IAAI;AAEJ,wCAAwC;AACxC,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,MAA2B,EAAE,GAAW,EAAE,UAA8B,EAAE,EAAE;IAC1G,OAAO,MAAM,CAAC,GAAG,CAAC;QAChB,GAAG,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC;QAC1C,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CACf,IAAI,WAAW,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,IAAI,EAAG,KAA8B,CAAC,IAAI,EAAE,CAAC;KACrG,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,MAAM;IACb,kEAAkE;IAClE,MAAM,CAAC,QAAQ,CAAC,mCAAmC,EAAE;QACnD,UAAU,EAAE;YACV,YAAY,EAAE,GAAG;YACjB,GAAG;YACH,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;SACvC;KACF,CAAC,CACH,CAAA;AACH,CAAC,CAAA"}
|
@@ -3,7 +3,7 @@ import { Effect } from '@livestore/utils/effect';
|
|
3
3
|
import type { SynchronousDatabase } from '../adapter-types.js';
|
4
4
|
import { UnexpectedError } from '../adapter-types.js';
|
5
5
|
import type { LiveStoreSchema } from '../schema/mod.js';
|
6
|
-
import type { InitialBlockingSyncContext,
|
6
|
+
import type { InitialBlockingSyncContext, SyncProcessor } from './types.js';
|
7
7
|
/**
|
8
8
|
* The general idea of the sync processor is to "follow the sync state"
|
9
9
|
* and apply/rollback mutations as needed to the read model and mutation log.
|
@@ -43,5 +43,5 @@ export declare const makeLeaderSyncProcessor: ({ schema, dbMissing, dbLog, initi
|
|
43
43
|
dbMissing: boolean;
|
44
44
|
dbLog: SynchronousDatabase;
|
45
45
|
initialBlockingSyncContext: InitialBlockingSyncContext;
|
46
|
-
}) => Effect.Effect<
|
46
|
+
}) => Effect.Effect<SyncProcessor, UnexpectedError, Scope.Scope>;
|
47
47
|
//# sourceMappingURL=leader-sync-processor.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"leader-sync-processor.d.ts","sourceRoot":"","sources":["../../src/leader-thread/leader-sync-processor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAc,KAAK,EAAE,MAAM,yBAAyB,CAAA;AAChE,OAAO,EAGL,MAAM,
|
1
|
+
{"version":3,"file":"leader-sync-processor.d.ts","sourceRoot":"","sources":["../../src/leader-thread/leader-sync-processor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAc,KAAK,EAAE,MAAM,yBAAyB,CAAA;AAChE,OAAO,EAGL,MAAM,EAUP,MAAM,yBAAyB,CAAA;AAGhC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,KAAK,EAAE,eAAe,EAA2B,MAAM,kBAAkB,CAAA;AAehF,OAAO,KAAK,EAAE,0BAA0B,EAAmB,aAAa,EAAE,MAAM,YAAY,CAAA;AAuB5F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,eAAO,MAAM,uBAAuB,8DAKjC;IACD,MAAM,EAAE,eAAe,CAAA;IACvB,iFAAiF;IACjF,SAAS,EAAE,OAAO,CAAA;IAClB,KAAK,EAAE,mBAAmB,CAAA;IAC1B,0BAA0B,EAAE,0BAA0B,CAAA;CACvD,KAAG,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,eAAe,EAAE,KAAK,CAAC,KAAK,CAoOzD,CAAA"}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import { shouldNeverHappen, TRACE_VERBOSE } from '@livestore/utils';
|
2
|
-
import { BucketQueue, Deferred, Effect, Exit, Fiber, FiberHandle, Option, OtelTracer,
|
2
|
+
import { BucketQueue, Deferred, Effect, Exit, Fiber, FiberHandle, Option, OtelTracer, Ref, Schema, Stream, SubscriptionRef, } from '@livestore/utils/effect';
|
3
3
|
import { UnexpectedError } from '../adapter-types.js';
|
4
4
|
import { EventId, MUTATION_LOG_META_TABLE, MutationEvent, mutationLogMetaTable, SESSION_CHANGESET_META_TABLE, } from '../schema/mod.js';
|
5
5
|
import { updateRows } from '../sql-queries/index.js';
|
@@ -161,15 +161,12 @@ export const makeLeaderSyncProcessor = ({ schema, dbMissing, dbLog, initialBlock
|
|
161
161
|
if (initialBackendHead > initialLocalHead.global) {
|
162
162
|
return shouldNeverHappen(`During boot the backend head (${initialBackendHead}) should never be greater than the local head (${initialLocalHead.global})`);
|
163
163
|
}
|
164
|
-
const pendingMutationEvents = yield* getMutationEventsSince({
|
165
|
-
global: initialBackendHead,
|
166
|
-
local: EventId.localDefault,
|
167
|
-
}).pipe(Effect.map(ReadonlyArray.map((_) => new MutationEvent.EncodedWithMeta(_))));
|
164
|
+
const pendingMutationEvents = yield* getMutationEventsSince({ global: initialBackendHead, local: 0 });
|
168
165
|
const initialSyncState = {
|
169
|
-
pending: pendingMutationEvents,
|
166
|
+
pending: pendingMutationEvents.map((_) => new MutationEvent.EncodedWithMeta(_)),
|
170
167
|
// On the leader we don't need a rollback tail beyond `pending` items
|
171
168
|
rollbackTail: [],
|
172
|
-
upstreamHead: { global: initialBackendHead, local:
|
169
|
+
upstreamHead: { global: initialBackendHead, local: 0 },
|
173
170
|
localHead: initialLocalHead,
|
174
171
|
};
|
175
172
|
/** State transitions need to happen atomically, so we use a Ref to track the state */
|
@@ -328,14 +325,16 @@ const backgroundBackendPulling = ({ dbReady, initialBackendHead, isLocalEvent, r
|
|
328
325
|
remaining,
|
329
326
|
});
|
330
327
|
}
|
331
|
-
|
332
|
-
|
328
|
+
const fiber = yield* applyMutationItemsRef.current({
|
329
|
+
batchItems: updateResult.newEvents,
|
330
|
+
}).pipe(Effect.fork);
|
333
331
|
yield* Ref.set(stateRef, {
|
334
332
|
_tag: 'applying-syncstate-advance',
|
335
333
|
origin: 'pull',
|
336
334
|
syncState: updateResult.newSyncState,
|
337
335
|
fiber,
|
338
336
|
});
|
337
|
+
// console.log('setRef:applying-syncstate-advance after backgroundBackendPulling', -1)
|
339
338
|
});
|
340
339
|
yield* syncBackend.pull(cursorInfo).pipe(
|
341
340
|
// TODO only take from queue while connected
|
@@ -352,7 +351,7 @@ const backgroundBackendPulling = ({ dbReady, initialBackendHead, isLocalEvent, r
|
|
352
351
|
// (e.g. needed for simulating being offline)
|
353
352
|
// TODO remove when there's a better way to handle this in stream above
|
354
353
|
yield* SubscriptionRef.waitUntil(syncBackend.isConnected, (isConnected) => isConnected === true);
|
355
|
-
yield* onNewPullChunk(batch.map((_) => MutationEvent.EncodedWithMeta
|
354
|
+
yield* onNewPullChunk(batch.map((_) => new MutationEvent.EncodedWithMeta(_.mutationEventEncoded)), remaining);
|
356
355
|
yield* initialBlockingSyncContext.update({ processed: batch.length, remaining });
|
357
356
|
})), Stream.runDrain, Effect.interruptible);
|
358
357
|
}).pipe(Effect.withSpan('@livestore/common:leader-thread:syncing:backend-pulling'));
|
@@ -364,9 +363,7 @@ const rollback = ({ db, dbLog, eventIdsToRollback, }) => Effect.gen(function* ()
|
|
364
363
|
// Apply changesets in reverse order
|
365
364
|
for (let i = rollbackEvents.length - 1; i >= 0; i--) {
|
366
365
|
const { changeset } = rollbackEvents[i];
|
367
|
-
|
368
|
-
db.makeChangeset(changeset).invert().apply();
|
369
|
-
}
|
366
|
+
db.makeChangeset(changeset).invert().apply();
|
370
367
|
}
|
371
368
|
// Delete the changeset rows
|
372
369
|
db.execute(sql `DELETE FROM ${SESSION_CHANGESET_META_TABLE} WHERE (idGlobal, idLocal) IN (${eventIdsToRollback.map((id) => `(${id.global}, ${id.local})`).join(', ')})`);
|
@@ -384,7 +381,7 @@ const getCursorInfo = (remoteHead) => Effect.gen(function* () {
|
|
384
381
|
}).pipe(Schema.pluck('syncMetadataJson'), Schema.Array, Schema.head);
|
385
382
|
const syncMetadataOption = yield* Effect.sync(() => dbLog.select(sql `SELECT syncMetadataJson FROM ${MUTATION_LOG_META_TABLE} WHERE idGlobal = ${remoteHead} ORDER BY idLocal ASC LIMIT 1`)).pipe(Effect.andThen(Schema.decode(MutationlogQuerySchema)), Effect.map(Option.flatten), Effect.orDie);
|
386
383
|
return Option.some({
|
387
|
-
cursor: { global: remoteHead, local:
|
384
|
+
cursor: { global: remoteHead, local: 0 },
|
388
385
|
metadata: syncMetadataOption,
|
389
386
|
});
|
390
387
|
}).pipe(Effect.withSpan('@livestore/common:leader-thread:syncing:getCursorInfo', { attributes: { remoteHead } }));
|
@@ -403,7 +400,7 @@ const backgroundBackendPushing = ({ dbReady, syncBackendQueue, span, }) => Effec
|
|
403
400
|
batch: TRACE_VERBOSE ? JSON.stringify(queueItems) : undefined,
|
404
401
|
});
|
405
402
|
// TODO handle push errors (should only happen during concurrent pull+push)
|
406
|
-
const pushResult = yield* syncBackend.push(queueItems
|
403
|
+
const pushResult = yield* syncBackend.push(queueItems).pipe(Effect.either);
|
407
404
|
if (pushResult._tag === 'Left') {
|
408
405
|
span?.addEvent('backend-push-error', { error: pushResult.left.toString() });
|
409
406
|
// wait for interrupt and restarting of pushing
|
@@ -422,9 +419,4 @@ const backgroundBackendPushing = ({ dbReady, syncBackendQueue, span, }) => Effec
|
|
422
419
|
}
|
423
420
|
}
|
424
421
|
}).pipe(Effect.interruptible, Effect.withSpan('@livestore/common:leader-thread:syncing:backend-pushing'));
|
425
|
-
const trimChangesetRows = (db, newHead) => {
|
426
|
-
// Since we're using the session changeset rows to query for the current head,
|
427
|
-
// we're keeping at least one row for the current head, and thus are using `<` instead of `<=`
|
428
|
-
db.execute(sql `DELETE FROM ${SESSION_CHANGESET_META_TABLE} WHERE idGlobal < ${newHead.global}`);
|
429
|
-
};
|
430
422
|
//# sourceMappingURL=leader-sync-processor.js.map
|