@livestore/common 0.0.55-dev.0 → 0.0.55-dev.1
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 +1 -0
- package/dist/adapter-types.d.ts.map +1 -1
- package/dist/adapter-types.js +1 -0
- package/dist/adapter-types.js.map +1 -1
- package/dist/devtools/devtools-messages.d.ts +144 -30
- package/dist/devtools/devtools-messages.d.ts.map +1 -1
- package/dist/devtools/devtools-messages.js +71 -159
- package/dist/devtools/devtools-messages.js.map +1 -1
- package/dist/rehydrate-from-mutationlog.d.ts +2 -2
- package/dist/rehydrate-from-mutationlog.d.ts.map +1 -1
- package/dist/rehydrate-from-mutationlog.js +10 -11
- package/dist/rehydrate-from-mutationlog.js.map +1 -1
- package/package.json +3 -3
- package/src/adapter-types.ts +1 -0
- package/src/devtools/devtools-messages.ts +90 -170
- package/src/rehydrate-from-mutationlog.ts +21 -11
|
@@ -10,149 +10,95 @@ const requestId = Schema.String
|
|
|
10
10
|
const channelId = Schema.String
|
|
11
11
|
const liveStoreVersion = Schema.Literal(pkgVersion)
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
}).annotations({ identifier:
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
13
|
+
const LSDMessage = <Tag extends string, Fields extends Schema.Struct.Fields>(tag: Tag, fields: Fields) =>
|
|
14
|
+
Schema.TaggedStruct(tag, {
|
|
15
|
+
liveStoreVersion,
|
|
16
|
+
...fields,
|
|
17
|
+
}).annotations({ identifier: tag })
|
|
18
|
+
|
|
19
|
+
const LSDChannelMessage = <Tag extends string, Fields extends Schema.Struct.Fields>(tag: Tag, fields: Fields) =>
|
|
20
|
+
LSDMessage(tag, {
|
|
21
|
+
channelId,
|
|
22
|
+
...fields,
|
|
23
|
+
})
|
|
24
|
+
|
|
25
|
+
const LSDReqResMessage = <Tag extends string, Fields extends Schema.Struct.Fields>(tag: Tag, fields: Fields) =>
|
|
26
|
+
LSDChannelMessage(tag, {
|
|
27
|
+
requestId,
|
|
28
|
+
...fields,
|
|
29
|
+
})
|
|
30
|
+
|
|
31
|
+
export class SnapshotReq extends LSDReqResMessage('LSD.SnapshotReq', {}) {}
|
|
32
|
+
|
|
33
|
+
export class SnapshotRes extends LSDReqResMessage('LSD.SnapshotRes', {
|
|
22
34
|
snapshot: Transferable.Uint8Array,
|
|
23
|
-
})
|
|
35
|
+
}) {}
|
|
24
36
|
|
|
25
|
-
export class LoadDatabaseFileReq extends
|
|
26
|
-
liveStoreVersion,
|
|
27
|
-
requestId,
|
|
28
|
-
channelId,
|
|
37
|
+
export class LoadDatabaseFileReq extends LSDReqResMessage('LSD.LoadDatabaseFileReq', {
|
|
29
38
|
data: Transferable.Uint8Array,
|
|
30
|
-
})
|
|
39
|
+
}) {}
|
|
31
40
|
|
|
32
|
-
export class LoadDatabaseFileRes extends
|
|
33
|
-
liveStoreVersion,
|
|
34
|
-
requestId,
|
|
41
|
+
export class LoadDatabaseFileRes extends LSDReqResMessage('LSD.LoadDatabaseFileRes', {
|
|
35
42
|
status: Schema.Literal('ok', 'unsupported-file', 'unsupported-database'),
|
|
36
|
-
})
|
|
43
|
+
}) {}
|
|
37
44
|
|
|
38
|
-
export class DebugInfoReq extends
|
|
39
|
-
liveStoreVersion,
|
|
40
|
-
requestId,
|
|
41
|
-
channelId,
|
|
42
|
-
}).annotations({ identifier: 'LSD.DebugInfoReq' }) {}
|
|
45
|
+
export class DebugInfoReq extends LSDReqResMessage('LSD.DebugInfoReq', {}) {}
|
|
43
46
|
|
|
44
|
-
export class DebugInfoRes extends
|
|
45
|
-
liveStoreVersion,
|
|
46
|
-
requestId,
|
|
47
|
+
export class DebugInfoRes extends LSDReqResMessage('LSD.DebugInfoRes', {
|
|
47
48
|
debugInfo: DebugInfo,
|
|
48
|
-
})
|
|
49
|
+
}) {}
|
|
49
50
|
|
|
50
|
-
export class DebugInfoHistorySubscribe extends
|
|
51
|
-
liveStoreVersion,
|
|
52
|
-
requestId,
|
|
53
|
-
channelId,
|
|
54
|
-
}).annotations({ identifier: 'LSD.DebugInfoHistorySubscribe' }) {}
|
|
51
|
+
export class DebugInfoHistorySubscribe extends LSDReqResMessage('LSD.DebugInfoHistorySubscribe', {}) {}
|
|
55
52
|
|
|
56
|
-
export class DebugInfoHistoryRes extends
|
|
57
|
-
liveStoreVersion,
|
|
58
|
-
requestId,
|
|
53
|
+
export class DebugInfoHistoryRes extends LSDReqResMessage('LSD.DebugInfoHistoryRes', {
|
|
59
54
|
debugInfoHistory: Schema.Array(DebugInfo),
|
|
60
|
-
})
|
|
61
|
-
|
|
62
|
-
export class DebugInfoHistoryUnsubscribe extends
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
export class
|
|
69
|
-
liveStoreVersion,
|
|
70
|
-
requestId,
|
|
71
|
-
channelId,
|
|
72
|
-
}).annotations({ identifier: 'LSD.DebugInfoResetReq' }) {}
|
|
73
|
-
|
|
74
|
-
export class DebugInfoResetRes extends Schema.TaggedStruct('LSD.DebugInfoResetRes', {
|
|
75
|
-
liveStoreVersion,
|
|
76
|
-
requestId,
|
|
77
|
-
}).annotations({ identifier: 'LSD.DebugInfoResetRes' }) {}
|
|
78
|
-
|
|
79
|
-
export class DebugInfoRerunQueryReq extends Schema.TaggedStruct('LSD.DebugInfoRerunQueryReq', {
|
|
80
|
-
liveStoreVersion,
|
|
81
|
-
requestId,
|
|
82
|
-
channelId,
|
|
55
|
+
}) {}
|
|
56
|
+
|
|
57
|
+
export class DebugInfoHistoryUnsubscribe extends LSDReqResMessage('LSD.DebugInfoHistoryUnsubscribe', {}) {}
|
|
58
|
+
|
|
59
|
+
export class DebugInfoResetReq extends LSDReqResMessage('LSD.DebugInfoResetReq', {}) {}
|
|
60
|
+
|
|
61
|
+
export class DebugInfoResetRes extends LSDReqResMessage('LSD.DebugInfoResetRes', {}) {}
|
|
62
|
+
|
|
63
|
+
export class DebugInfoRerunQueryReq extends LSDReqResMessage('LSD.DebugInfoRerunQueryReq', {
|
|
83
64
|
queryStr: Schema.String,
|
|
84
65
|
bindValues: Schema.UndefinedOr(PreparedBindValues),
|
|
85
66
|
queriedTables: Schema.ReadonlySet(Schema.String),
|
|
86
|
-
})
|
|
67
|
+
}) {}
|
|
87
68
|
|
|
88
|
-
export class DebugInfoRerunQueryRes extends
|
|
89
|
-
liveStoreVersion,
|
|
90
|
-
requestId,
|
|
91
|
-
}).annotations({ identifier: 'LSD.DebugInfoRerunQueryRes' }) {}
|
|
69
|
+
export class DebugInfoRerunQueryRes extends LSDReqResMessage('LSD.DebugInfoRerunQueryRes', {}) {}
|
|
92
70
|
|
|
93
|
-
export class MutationBroadcast extends
|
|
94
|
-
liveStoreVersion,
|
|
71
|
+
export class MutationBroadcast extends LSDMessage('LSD.MutationBroadcast', {
|
|
95
72
|
mutationEventEncoded: mutationEventSchemaEncodedAny,
|
|
96
73
|
persisted: Schema.Boolean,
|
|
97
|
-
})
|
|
74
|
+
}) {}
|
|
98
75
|
|
|
99
|
-
export class RunMutationReq extends
|
|
100
|
-
liveStoreVersion,
|
|
101
|
-
requestId,
|
|
102
|
-
channelId,
|
|
76
|
+
export class RunMutationReq extends LSDReqResMessage('LSD.RunMutationReq', {
|
|
103
77
|
mutationEventEncoded: mutationEventSchemaEncodedAny,
|
|
104
78
|
persisted: Schema.Boolean,
|
|
105
|
-
})
|
|
106
|
-
|
|
107
|
-
export class RunMutationRes extends
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
export class MutationLogReq extends Schema.TaggedStruct('LSD.MutationLogReq', {
|
|
114
|
-
liveStoreVersion,
|
|
115
|
-
requestId,
|
|
116
|
-
channelId,
|
|
117
|
-
}).annotations({ identifier: 'LSD.MutationLogReq' }) {}
|
|
118
|
-
|
|
119
|
-
export class MutationLogRes extends Schema.TaggedStruct('LSD.MutationLogRes', {
|
|
120
|
-
liveStoreVersion,
|
|
121
|
-
requestId,
|
|
122
|
-
channelId,
|
|
79
|
+
}) {}
|
|
80
|
+
|
|
81
|
+
export class RunMutationRes extends LSDReqResMessage('LSD.RunMutationRes', {}) {}
|
|
82
|
+
|
|
83
|
+
export class MutationLogReq extends LSDReqResMessage('LSD.MutationLogReq', {}) {}
|
|
84
|
+
|
|
85
|
+
export class MutationLogRes extends LSDReqResMessage('LSD.MutationLogRes', {
|
|
123
86
|
mutationLog: Transferable.Uint8Array,
|
|
124
|
-
})
|
|
87
|
+
}) {}
|
|
125
88
|
|
|
126
|
-
export class ReactivityGraphSubscribe extends
|
|
127
|
-
liveStoreVersion,
|
|
128
|
-
requestId,
|
|
129
|
-
channelId,
|
|
89
|
+
export class ReactivityGraphSubscribe extends LSDReqResMessage('LSD.ReactivityGraphSubscribe', {
|
|
130
90
|
includeResults: Schema.Boolean,
|
|
131
|
-
})
|
|
91
|
+
}) {}
|
|
132
92
|
|
|
133
|
-
export class ReactivityGraphUnsubscribe extends
|
|
134
|
-
liveStoreVersion,
|
|
135
|
-
requestId,
|
|
136
|
-
channelId,
|
|
137
|
-
}).annotations({ identifier: 'LSD.ReactivityGraphUnsubscribe' }) {}
|
|
93
|
+
export class ReactivityGraphUnsubscribe extends LSDReqResMessage('LSD.ReactivityGraphUnsubscribe', {}) {}
|
|
138
94
|
|
|
139
|
-
export class ReactivityGraphRes extends
|
|
140
|
-
liveStoreVersion,
|
|
141
|
-
requestId,
|
|
95
|
+
export class ReactivityGraphRes extends LSDReqResMessage('LSD.ReactivityGraphRes', {
|
|
142
96
|
reactivityGraph: Schema.Any,
|
|
143
|
-
})
|
|
97
|
+
}) {}
|
|
144
98
|
|
|
145
|
-
export class LiveQueriesSubscribe extends
|
|
146
|
-
liveStoreVersion,
|
|
147
|
-
requestId,
|
|
148
|
-
channelId,
|
|
149
|
-
}).annotations({ identifier: 'LSD.LiveQueriesSubscribe' }) {}
|
|
99
|
+
export class LiveQueriesSubscribe extends LSDReqResMessage('LSD.LiveQueriesSubscribe', {}) {}
|
|
150
100
|
|
|
151
|
-
export class LiveQueriesUnsubscribe extends
|
|
152
|
-
liveStoreVersion,
|
|
153
|
-
requestId,
|
|
154
|
-
channelId,
|
|
155
|
-
}).annotations({ identifier: 'LSD.LiveQueriesUnsubscribe' }) {}
|
|
101
|
+
export class LiveQueriesUnsubscribe extends LSDReqResMessage('LSD.LiveQueriesUnsubscribe', {}) {}
|
|
156
102
|
|
|
157
103
|
export class SerializedLiveQuery extends Schema.Struct({
|
|
158
104
|
_tag: Schema.Literal('js', 'sql', 'graphql'),
|
|
@@ -164,76 +110,48 @@ export class SerializedLiveQuery extends Schema.Struct({
|
|
|
164
110
|
activeSubscriptions: Schema.Array(
|
|
165
111
|
Schema.Struct({ frames: Schema.Array(Schema.Struct({ name: Schema.String, filePath: Schema.String })) }),
|
|
166
112
|
),
|
|
167
|
-
})
|
|
113
|
+
}) {}
|
|
168
114
|
|
|
169
|
-
export class LiveQueriesRes extends
|
|
170
|
-
liveStoreVersion,
|
|
171
|
-
requestId,
|
|
115
|
+
export class LiveQueriesRes extends LSDReqResMessage('LSD.LiveQueriesRes', {
|
|
172
116
|
liveQueries: Schema.Array(SerializedLiveQuery),
|
|
173
|
-
})
|
|
117
|
+
}) {}
|
|
174
118
|
|
|
175
|
-
export class ResetAllDataReq extends
|
|
176
|
-
liveStoreVersion,
|
|
177
|
-
requestId,
|
|
178
|
-
channelId,
|
|
119
|
+
export class ResetAllDataReq extends LSDReqResMessage('LSD.ResetAllDataReq', {
|
|
179
120
|
mode: Schema.Literal('all-data', 'only-app-db'),
|
|
180
|
-
})
|
|
181
|
-
|
|
182
|
-
export class ResetAllDataRes extends
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
export class MessagePortForStoreRes extends
|
|
194
|
-
liveStoreVersion,
|
|
195
|
-
requestId,
|
|
196
|
-
channelId,
|
|
121
|
+
}) {}
|
|
122
|
+
|
|
123
|
+
export class ResetAllDataRes extends LSDReqResMessage('LSD.ResetAllDataRes', {}) {}
|
|
124
|
+
|
|
125
|
+
export class DatabaseFileInfoReq extends LSDReqResMessage('LSD.DatabaseFileInfoReq', {}) {}
|
|
126
|
+
|
|
127
|
+
export class DatabaseFileInfoRes extends LSDReqResMessage('LSD.DatabaseFileInfoRes', {
|
|
128
|
+
dbFileSize: Schema.Number,
|
|
129
|
+
mutationLogFileSize: Schema.Number,
|
|
130
|
+
}) {}
|
|
131
|
+
|
|
132
|
+
export class MessagePortForStoreReq extends LSDReqResMessage('LSD.MessagePortForStoreReq', {}) {}
|
|
133
|
+
|
|
134
|
+
export class MessagePortForStoreRes extends LSDReqResMessage('LSD.MessagePortForStoreRes', {
|
|
197
135
|
port: Transferable.MessagePort,
|
|
198
|
-
})
|
|
136
|
+
}) {}
|
|
199
137
|
|
|
200
|
-
export class NetworkStatusChanged extends
|
|
201
|
-
liveStoreVersion,
|
|
202
|
-
channelId,
|
|
138
|
+
export class NetworkStatusChanged extends LSDChannelMessage('LSD.NetworkStatusChanged', {
|
|
203
139
|
networkStatus: NetworkStatus,
|
|
204
|
-
})
|
|
140
|
+
}) {}
|
|
205
141
|
|
|
206
|
-
export class DevtoolsReady extends
|
|
207
|
-
liveStoreVersion,
|
|
208
|
-
}).annotations({ identifier: 'LSD.DevtoolsReady' }) {}
|
|
142
|
+
export class DevtoolsReady extends LSDMessage('LSD.DevtoolsReady', {}) {}
|
|
209
143
|
|
|
210
|
-
export class DevtoolsConnected extends
|
|
211
|
-
liveStoreVersion,
|
|
212
|
-
channelId,
|
|
213
|
-
}).annotations({ identifier: 'LSD.DevtoolsConnected' }) {}
|
|
144
|
+
export class DevtoolsConnected extends LSDChannelMessage('LSD.DevtoolsConnected', {}) {}
|
|
214
145
|
|
|
215
|
-
export class AppHostReady extends
|
|
216
|
-
liveStoreVersion,
|
|
217
|
-
channelId,
|
|
146
|
+
export class AppHostReady extends LSDChannelMessage('LSD.AppHostReady', {
|
|
218
147
|
isLeaderTab: Schema.Boolean,
|
|
219
|
-
})
|
|
148
|
+
}) {}
|
|
220
149
|
|
|
221
|
-
export class Disconnect extends
|
|
222
|
-
liveStoreVersion,
|
|
223
|
-
requestId,
|
|
224
|
-
channelId,
|
|
225
|
-
}).annotations({ identifier: 'LSD.Disconnect' }) {}
|
|
150
|
+
export class Disconnect extends LSDReqResMessage('LSD.Disconnect', {}) {}
|
|
226
151
|
|
|
227
|
-
export class Ping extends
|
|
228
|
-
liveStoreVersion,
|
|
229
|
-
requestId,
|
|
230
|
-
channelId,
|
|
231
|
-
}).annotations({ identifier: 'LSD.Ping' }) {}
|
|
152
|
+
export class Ping extends LSDReqResMessage('LSD.Ping', {}) {}
|
|
232
153
|
|
|
233
|
-
export class Pong extends
|
|
234
|
-
liveStoreVersion,
|
|
235
|
-
requestId,
|
|
236
|
-
}).annotations({ identifier: 'LSD.Pong' }) {}
|
|
154
|
+
export class Pong extends LSDReqResMessage('LSD.Pong', {}) {}
|
|
237
155
|
|
|
238
156
|
export const MessageToAppHostCoordinator = Schema.Union(
|
|
239
157
|
SnapshotReq,
|
|
@@ -246,6 +164,7 @@ export const MessageToAppHostCoordinator = Schema.Union(
|
|
|
246
164
|
DevtoolsConnected,
|
|
247
165
|
RunMutationReq,
|
|
248
166
|
Ping,
|
|
167
|
+
DatabaseFileInfoReq,
|
|
249
168
|
).annotations({ identifier: 'LSD.MessageToAppHostCoordinator' })
|
|
250
169
|
|
|
251
170
|
export type MessageToAppHostCoordinator = typeof MessageToAppHostCoordinator.Type
|
|
@@ -277,6 +196,7 @@ export const MessageFromAppHostCoordinator = Schema.Union(
|
|
|
277
196
|
NetworkStatusChanged,
|
|
278
197
|
RunMutationRes,
|
|
279
198
|
Pong,
|
|
199
|
+
DatabaseFileInfoRes,
|
|
280
200
|
).annotations({ identifier: 'LSD.MessageFromAppHostCoordinator' })
|
|
281
201
|
|
|
282
202
|
export type MessageFromAppHostCoordinator = typeof MessageFromAppHostCoordinator.Type
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
import { memoizeByRef, shouldNeverHappen } from '@livestore/utils'
|
|
2
2
|
import { Chunk, Effect, Option, Schema, Stream } from '@livestore/utils/effect'
|
|
3
3
|
|
|
4
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
type InMemoryDatabase,
|
|
6
|
+
type MigrationOptionsFromMutationLog,
|
|
7
|
+
SqliteError,
|
|
8
|
+
UnexpectedError,
|
|
9
|
+
} from './adapter-types.js'
|
|
5
10
|
import { getExecArgsFromMutation } from './mutation.js'
|
|
6
11
|
import type { LiveStoreSchema, MutationDef, MutationLogMetaRow } from './schema/index.js'
|
|
7
12
|
import { MUTATION_LOG_META_TABLE } from './schema/index.js'
|
|
@@ -35,23 +40,28 @@ export const rehydrateFromMutationLog = ({
|
|
|
35
40
|
if (migrationOptions.excludeMutations?.has(row.mutation) === true) return
|
|
36
41
|
|
|
37
42
|
if (hashMutation(mutationDef) !== row.schemaHash) {
|
|
38
|
-
|
|
43
|
+
yield* Effect.logWarning(
|
|
44
|
+
`Schema hash mismatch for mutation ${row.mutation}. Trying to apply mutation anyway.`,
|
|
45
|
+
)
|
|
39
46
|
}
|
|
40
47
|
|
|
41
|
-
const
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
48
|
+
const argsDecoded = yield* Schema.decodeUnknown(Schema.parseJson(mutationDef.schema))(row.argsJson).pipe(
|
|
49
|
+
Effect.mapError((cause) =>
|
|
50
|
+
UnexpectedError.make({
|
|
51
|
+
cause,
|
|
52
|
+
note: `\
|
|
53
|
+
There was an error during rehydrating from the mutation log while decoding
|
|
54
|
+
the persisted mutation event args for mutation "${row.mutation}".
|
|
45
55
|
This likely means the schema has changed in an incompatible way.
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
56
|
+
`,
|
|
57
|
+
}),
|
|
58
|
+
),
|
|
59
|
+
)
|
|
50
60
|
|
|
51
61
|
const mutationEventDecoded = {
|
|
52
62
|
id: row.id,
|
|
53
63
|
mutation: row.mutation,
|
|
54
|
-
args:
|
|
64
|
+
args: argsDecoded,
|
|
55
65
|
}
|
|
56
66
|
// const argsEncoded = JSON.parse(row.args_json)
|
|
57
67
|
// const mutationSqlRes =
|