@livestore/adapter-node 0.4.0-dev.9 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.tsbuildinfo +1 -1
- package/dist/client-session/adapter.d.ts +68 -2
- package/dist/client-session/adapter.d.ts.map +1 -1
- package/dist/client-session/adapter.js +121 -42
- package/dist/client-session/adapter.js.map +1 -1
- package/dist/devtools/devtools-server.d.ts.map +1 -1
- package/dist/devtools/devtools-server.js +14 -6
- package/dist/devtools/devtools-server.js.map +1 -1
- package/dist/devtools/mod.d.ts +1 -1
- package/dist/devtools/mod.d.ts.map +1 -1
- package/dist/devtools/mod.js +1 -1
- package/dist/devtools/mod.js.map +1 -1
- package/dist/devtools/vite-dev-server.d.ts +26 -4
- package/dist/devtools/vite-dev-server.d.ts.map +1 -1
- package/dist/devtools/vite-dev-server.js +43 -8
- package/dist/devtools/vite-dev-server.js.map +1 -1
- package/dist/leader-thread-shared.d.ts +5 -4
- package/dist/leader-thread-shared.d.ts.map +1 -1
- package/dist/leader-thread-shared.js +8 -6
- package/dist/leader-thread-shared.js.map +1 -1
- package/dist/make-leader-worker.d.ts +4 -2
- package/dist/make-leader-worker.d.ts.map +1 -1
- package/dist/make-leader-worker.js +45 -20
- package/dist/make-leader-worker.js.map +1 -1
- package/dist/shutdown-channel.d.ts.map +1 -1
- package/dist/shutdown-channel.js.map +1 -1
- package/dist/worker-schema.d.ts +141 -41
- package/dist/worker-schema.d.ts.map +1 -1
- package/dist/worker-schema.js +43 -18
- package/dist/worker-schema.js.map +1 -1
- package/package.json +59 -19
- package/src/client-session/adapter.ts +149 -72
- package/src/devtools/devtools-server.ts +22 -10
- package/src/devtools/mod.ts +1 -1
- package/src/devtools/vite-dev-server.ts +63 -11
- package/src/leader-thread-shared.ts +17 -13
- package/src/make-leader-worker.ts +80 -67
- package/src/shutdown-channel.ts +1 -0
- package/src/worker-schema.ts +67 -18
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import inspector from 'node:inspector'
|
|
2
2
|
import path from 'node:path'
|
|
3
3
|
|
|
4
|
-
if (process.execArgv.includes('--inspect')) {
|
|
4
|
+
if (process.execArgv.includes('--inspect') === true) {
|
|
5
5
|
inspector.open()
|
|
6
6
|
inspector.waitForDebugger()
|
|
7
7
|
}
|
|
8
8
|
|
|
9
9
|
import type { ClientSessionLeaderThreadProxy, MakeSqliteDb, SqliteDb, SyncOptions } from '@livestore/common'
|
|
10
|
-
import { Devtools, liveStoreStorageFormatVersion, migrateDb,
|
|
10
|
+
import { Devtools, liveStoreStorageFormatVersion, migrateDb, UnknownError } from '@livestore/common'
|
|
11
11
|
import type { DevtoolsOptions, LeaderSqliteDb, LeaderThreadCtx } from '@livestore/common/leader-thread'
|
|
12
12
|
import { configureConnection, makeLeaderThreadLayer } from '@livestore/common/leader-thread'
|
|
13
13
|
import type { LiveStoreSchema } from '@livestore/common/schema'
|
|
@@ -30,7 +30,7 @@ export type TestingOverrides = {
|
|
|
30
30
|
dbEventlog: SqliteDb
|
|
31
31
|
dbState: SqliteDb
|
|
32
32
|
},
|
|
33
|
-
|
|
33
|
+
UnknownError
|
|
34
34
|
>
|
|
35
35
|
}
|
|
36
36
|
|
|
@@ -42,7 +42,8 @@ export interface MakeLeaderThreadArgs {
|
|
|
42
42
|
makeSqliteDb: MakeNodeSqliteDb
|
|
43
43
|
devtools: WorkerSchema.LeaderWorkerInnerInitialMessage['devtools']
|
|
44
44
|
schema: LiveStoreSchema
|
|
45
|
-
|
|
45
|
+
syncPayloadEncoded: Schema.JsonValue | undefined
|
|
46
|
+
syncPayloadSchema: Schema.Schema<any> | undefined
|
|
46
47
|
testing: TestingOverrides | undefined
|
|
47
48
|
}
|
|
48
49
|
|
|
@@ -54,21 +55,22 @@ export const makeLeaderThread = ({
|
|
|
54
55
|
storage,
|
|
55
56
|
devtools,
|
|
56
57
|
schema,
|
|
57
|
-
|
|
58
|
+
syncPayloadEncoded,
|
|
59
|
+
syncPayloadSchema,
|
|
58
60
|
testing,
|
|
59
61
|
}: MakeLeaderThreadArgs): Effect.Effect<
|
|
60
|
-
Layer.Layer<LeaderThreadCtx,
|
|
61
|
-
|
|
62
|
+
Layer.Layer<LeaderThreadCtx, UnknownError, Scope.Scope | HttpClient.HttpClient | FileSystem.FileSystem>,
|
|
63
|
+
UnknownError,
|
|
62
64
|
Scope.Scope
|
|
63
65
|
> =>
|
|
64
66
|
Effect.gen(function* () {
|
|
65
|
-
const runtime = yield* Effect.runtime
|
|
67
|
+
const runtime = yield* Effect.runtime()
|
|
66
68
|
|
|
67
69
|
const schemaHashSuffix =
|
|
68
70
|
schema.state.sqlite.migrations.strategy === 'manual' ? 'fixed' : schema.state.sqlite.hash.toString()
|
|
69
71
|
|
|
70
72
|
const makeDb = (kind: 'state' | 'eventlog') => {
|
|
71
|
-
if (testing?.makeLeaderThread) {
|
|
73
|
+
if (testing?.makeLeaderThread !== undefined) {
|
|
72
74
|
return testing
|
|
73
75
|
.makeLeaderThread(makeSqliteDb)
|
|
74
76
|
.pipe(Effect.map(({ dbEventlog, dbState }) => (kind === 'state' ? dbState : dbEventlog)))
|
|
@@ -113,11 +115,12 @@ export const makeLeaderThread = ({
|
|
|
113
115
|
dbEventlog,
|
|
114
116
|
devtoolsOptions,
|
|
115
117
|
shutdownChannel,
|
|
116
|
-
|
|
118
|
+
syncPayloadEncoded,
|
|
119
|
+
syncPayloadSchema,
|
|
117
120
|
})
|
|
118
121
|
}).pipe(
|
|
119
122
|
Effect.tapCauseLogPretty,
|
|
120
|
-
|
|
123
|
+
UnknownError.mapToUnknownError,
|
|
121
124
|
Effect.withSpan('@livestore/adapter-node:makeLeaderThread', {
|
|
122
125
|
attributes: { storeId, clientId, storage, devtools, syncOptions },
|
|
123
126
|
}),
|
|
@@ -137,7 +140,7 @@ const makeDevtoolsOptions = ({
|
|
|
137
140
|
storeId: string
|
|
138
141
|
clientId: string
|
|
139
142
|
devtools: WorkerSchema.LeaderWorkerInnerInitialMessage['devtools']
|
|
140
|
-
}): Effect.Effect<DevtoolsOptions,
|
|
143
|
+
}): Effect.Effect<DevtoolsOptions, UnknownError, Scope.Scope> =>
|
|
141
144
|
Effect.gen(function* () {
|
|
142
145
|
if (devtools.enabled === false) {
|
|
143
146
|
return {
|
|
@@ -161,6 +164,7 @@ const makeDevtoolsOptions = ({
|
|
|
161
164
|
sessionId: 'static', // TODO make this dynamic
|
|
162
165
|
schemaAlias: devtools.schemaAlias,
|
|
163
166
|
isLeader: true,
|
|
167
|
+
origin: undefined,
|
|
164
168
|
}),
|
|
165
169
|
port: devtools.port,
|
|
166
170
|
host: devtools.host,
|
|
@@ -180,7 +184,7 @@ const makeDevtoolsOptions = ({
|
|
|
180
184
|
eventlog: dbEventlog.metadata.persistenceInfo,
|
|
181
185
|
}
|
|
182
186
|
|
|
183
|
-
return { node, persistenceInfo, mode: 'proxy' }
|
|
187
|
+
return { node, persistenceInfo, mode: 'proxy' as const }
|
|
184
188
|
}),
|
|
185
189
|
}
|
|
186
190
|
})
|
|
@@ -1,33 +1,23 @@
|
|
|
1
1
|
import './thread-polyfill.ts'
|
|
2
|
-
|
|
3
2
|
import inspector from 'node:inspector'
|
|
4
3
|
|
|
5
|
-
if (process.execArgv.includes('--inspect')) {
|
|
4
|
+
if (process.execArgv.includes('--inspect') === true) {
|
|
6
5
|
inspector.open()
|
|
7
6
|
inspector.waitForDebugger()
|
|
8
7
|
}
|
|
9
8
|
|
|
9
|
+
import type * as otel from '@opentelemetry/api'
|
|
10
|
+
|
|
10
11
|
import type { SyncOptions } from '@livestore/common'
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
12
|
+
import { LogConfig, UnknownError } from '@livestore/common'
|
|
13
|
+
import type { StreamEventsOptions } from '@livestore/common/leader-thread'
|
|
14
|
+
import { Eventlog, LeaderThreadCtx, streamEventsWithSyncState } from '@livestore/common/leader-thread'
|
|
13
15
|
import type { LiveStoreSchema } from '@livestore/common/schema'
|
|
14
16
|
import { LiveStoreEvent } from '@livestore/common/schema'
|
|
15
17
|
import { loadSqlite3Wasm } from '@livestore/sqlite-wasm/load-wasm'
|
|
16
18
|
import { sqliteDbFactory } from '@livestore/sqlite-wasm/node'
|
|
17
|
-
import {
|
|
18
|
-
Effect,
|
|
19
|
-
FetchHttpClient,
|
|
20
|
-
identity,
|
|
21
|
-
Layer,
|
|
22
|
-
Logger,
|
|
23
|
-
LogLevel,
|
|
24
|
-
OtelTracer,
|
|
25
|
-
Schema,
|
|
26
|
-
Stream,
|
|
27
|
-
WorkerRunner,
|
|
28
|
-
} from '@livestore/utils/effect'
|
|
19
|
+
import { Effect, FetchHttpClient, Layer, OtelTracer, Schema, Stream, WorkerRunner } from '@livestore/utils/effect'
|
|
29
20
|
import { PlatformNode } from '@livestore/utils/node'
|
|
30
|
-
import type * as otel from '@opentelemetry/api'
|
|
31
21
|
|
|
32
22
|
import type { TestingOverrides } from './leader-thread-shared.ts'
|
|
33
23
|
import { makeLeaderThread } from './leader-thread-shared.ts'
|
|
@@ -36,30 +26,35 @@ import * as WorkerSchema from './worker-schema.ts'
|
|
|
36
26
|
export type WorkerOptions = {
|
|
37
27
|
schema: LiveStoreSchema
|
|
38
28
|
sync?: SyncOptions
|
|
29
|
+
syncPayloadSchema?: Schema.Schema<any>
|
|
39
30
|
otelOptions?: {
|
|
40
31
|
tracer?: otel.Tracer
|
|
41
32
|
/** @default 'livestore-node-leader-thread' */
|
|
42
33
|
serviceName?: string
|
|
43
34
|
}
|
|
44
35
|
testing?: TestingOverrides
|
|
45
|
-
}
|
|
36
|
+
} & LogConfig.WithLoggerOptions
|
|
46
37
|
|
|
47
38
|
export const getWorkerArgs = () => Schema.decodeSync(WorkerSchema.WorkerArgv)(process.argv[2]!)
|
|
48
39
|
|
|
49
40
|
export const makeWorker = (options: WorkerOptions) => {
|
|
50
|
-
makeWorkerEffect(options).pipe(
|
|
51
|
-
Effect.provide(Logger.prettyWithThread(options.otelOptions?.serviceName ?? 'livestore-node-leader-thread')),
|
|
52
|
-
PlatformNode.NodeRuntime.runMain,
|
|
53
|
-
)
|
|
41
|
+
makeWorkerEffect(options).pipe(PlatformNode.NodeRuntime.runMain)
|
|
54
42
|
}
|
|
55
43
|
|
|
56
44
|
export const makeWorkerEffect = (options: WorkerOptions) => {
|
|
57
|
-
const TracingLive = options.otelOptions?.tracer
|
|
45
|
+
const TracingLive = options.otelOptions?.tracer !== undefined
|
|
58
46
|
? Layer.unwrapEffect(Effect.map(OtelTracer.make, Layer.setTracer)).pipe(
|
|
59
47
|
Layer.provideMerge(Layer.succeed(OtelTracer.OtelTracer, options.otelOptions.tracer)),
|
|
60
48
|
)
|
|
61
49
|
: undefined
|
|
62
50
|
|
|
51
|
+
// Merge the runtime dependencies once so we can provide them together without chaining Effect.provide.
|
|
52
|
+
const runtimeLayer = Layer.mergeAll(
|
|
53
|
+
FetchHttpClient.layer,
|
|
54
|
+
PlatformNode.NodeFileSystem.layer,
|
|
55
|
+
TracingLive ?? Layer.empty,
|
|
56
|
+
)
|
|
57
|
+
|
|
63
58
|
return WorkerRunner.layerSerialized(WorkerSchema.LeaderWorkerInnerRequest, {
|
|
64
59
|
InitialMessage: (args) =>
|
|
65
60
|
Effect.gen(function* () {
|
|
@@ -73,12 +68,14 @@ export const makeWorkerEffect = (options: WorkerOptions) => {
|
|
|
73
68
|
schema: options.schema,
|
|
74
69
|
testing: options.testing,
|
|
75
70
|
makeSqliteDb,
|
|
71
|
+
syncPayloadEncoded: args.syncPayloadEncoded,
|
|
72
|
+
syncPayloadSchema: options.syncPayloadSchema,
|
|
76
73
|
})
|
|
77
74
|
}).pipe(Layer.unwrapScoped),
|
|
78
75
|
PushToLeader: ({ batch }) =>
|
|
79
76
|
Effect.andThen(LeaderThreadCtx, (_) =>
|
|
80
77
|
_.syncProcessor.push(
|
|
81
|
-
batch.map((item) => new LiveStoreEvent.EncodedWithMeta(item)),
|
|
78
|
+
batch.map((item) => new LiveStoreEvent.Client.EncodedWithMeta(item)),
|
|
82
79
|
// We'll wait in order to keep back pressure on the client session
|
|
83
80
|
{ waitForProcessing: true },
|
|
84
81
|
),
|
|
@@ -90,61 +87,76 @@ export const makeWorkerEffect = (options: WorkerOptions) => {
|
|
|
90
87
|
const { syncProcessor } = yield* LeaderThreadCtx
|
|
91
88
|
return syncProcessor.pull({ cursor })
|
|
92
89
|
}).pipe(Stream.unwrapScoped),
|
|
90
|
+
StreamEvents: (options: WorkerSchema.LeaderWorkerInnerStreamEvents) =>
|
|
91
|
+
LeaderThreadCtx.pipe(
|
|
92
|
+
Effect.map(({ dbEventlog, syncProcessor }) => {
|
|
93
|
+
const { _tag: _ignored, ...payload } = options
|
|
94
|
+
const streamOptions = payload as StreamEventsOptions
|
|
95
|
+
return streamEventsWithSyncState({
|
|
96
|
+
dbEventlog,
|
|
97
|
+
syncState: syncProcessor.syncState,
|
|
98
|
+
options: streamOptions,
|
|
99
|
+
})
|
|
100
|
+
}),
|
|
101
|
+
Stream.unwrapScoped,
|
|
102
|
+
Stream.withSpan('@livestore/adapter-node:worker:StreamEvents'),
|
|
103
|
+
),
|
|
93
104
|
Export: () =>
|
|
94
105
|
Effect.andThen(LeaderThreadCtx, (_) => _.dbState.export()).pipe(
|
|
95
|
-
UnexpectedError.mapToUnexpectedError,
|
|
96
106
|
Effect.withSpan('@livestore/adapter-node:worker:Export'),
|
|
97
107
|
),
|
|
98
108
|
ExportEventlog: () =>
|
|
99
109
|
Effect.andThen(LeaderThreadCtx, (_) => _.dbEventlog.export()).pipe(
|
|
100
|
-
UnexpectedError.mapToUnexpectedError,
|
|
101
110
|
Effect.withSpan('@livestore/adapter-node:worker:ExportEventlog'),
|
|
102
111
|
),
|
|
103
|
-
GetLeaderHead: ()
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
112
|
+
GetLeaderHead: Effect.fn('@livestore/adapter-node:worker:GetLeaderHead')(function* () {
|
|
113
|
+
const workerCtx = yield* LeaderThreadCtx
|
|
114
|
+
return Eventlog.getClientHeadFromDb(workerCtx.dbEventlog)
|
|
115
|
+
}),
|
|
116
|
+
GetLeaderSyncState: Effect.fn('@livestore/adapter-node:worker:GetLeaderSyncState')(function* () {
|
|
117
|
+
const workerCtx = yield* LeaderThreadCtx
|
|
118
|
+
return yield* workerCtx.syncProcessor.syncState
|
|
119
|
+
}),
|
|
120
|
+
SyncStateStream: () =>
|
|
109
121
|
Effect.gen(function* () {
|
|
110
122
|
const workerCtx = yield* LeaderThreadCtx
|
|
111
|
-
return
|
|
112
|
-
}).pipe(
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
123
|
+
return workerCtx.syncProcessor.syncState.changes
|
|
124
|
+
}).pipe(Stream.unwrapScoped),
|
|
125
|
+
GetNetworkStatus: Effect.fn('@livestore/adapter-node:worker:GetNetworkStatus')(function* () {
|
|
126
|
+
const workerCtx = yield* LeaderThreadCtx
|
|
127
|
+
return yield* workerCtx.networkStatus
|
|
128
|
+
}),
|
|
129
|
+
NetworkStatusStream: () =>
|
|
117
130
|
Effect.gen(function* () {
|
|
118
131
|
const workerCtx = yield* LeaderThreadCtx
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
132
|
+
return workerCtx.networkStatus.changes
|
|
133
|
+
}).pipe(Stream.unwrapScoped),
|
|
134
|
+
GetRecreateSnapshot: Effect.fn('@livestore/adapter-node:worker:GetRecreateSnapshot')(function* () {
|
|
135
|
+
const workerCtx = yield* LeaderThreadCtx
|
|
136
|
+
// const result = yield* Deferred.await(workerCtx.initialSetupDeferred)
|
|
137
|
+
// NOTE we can only return the cached snapshot once as it's transferred (i.e. disposed), so we need to set it to undefined
|
|
138
|
+
// const cachedSnapshot =
|
|
139
|
+
// result._tag === 'Recreate' ? yield* Ref.getAndSet(result.snapshotRef, undefined) : undefined
|
|
140
|
+
// return cachedSnapshot ?? workerCtx.db.export()
|
|
141
|
+
const snapshot = workerCtx.dbState.export()
|
|
142
|
+
return { snapshot, migrationsReport: workerCtx.initialState.migrationsReport }
|
|
143
|
+
}),
|
|
144
|
+
Shutdown: Effect.fn('@livestore/adapter-node:worker:Shutdown')(function* () {
|
|
145
|
+
// const { db, dbEventlog } = yield* LeaderThreadCtx
|
|
146
|
+
yield* Effect.logDebug('[@livestore/adapter-node:worker] Shutdown')
|
|
134
147
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
148
|
+
// if (devtools.enabled) {
|
|
149
|
+
// yield* FiberSet.clear(devtools.connections)
|
|
150
|
+
// }
|
|
151
|
+
// db.close()
|
|
152
|
+
// dbEventlog.close()
|
|
140
153
|
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
154
|
+
// Buy some time for Otel to flush
|
|
155
|
+
// TODO find a cleaner way to do this
|
|
156
|
+
// yield* Effect.sleep(1000)
|
|
157
|
+
}),
|
|
145
158
|
ExtraDevtoolsMessage: ({ message }) =>
|
|
146
159
|
Effect.andThen(LeaderThreadCtx, (_) => _.extraIncomingMessagesQueue.offer(message)).pipe(
|
|
147
|
-
UnexpectedError.mapToUnexpectedError,
|
|
148
160
|
Effect.withSpan('@livestore/adapter-node:worker:ExtraDevtoolsMessage'),
|
|
149
161
|
),
|
|
150
162
|
}).pipe(
|
|
@@ -156,12 +168,13 @@ export const makeWorkerEffect = (options: WorkerOptions) => {
|
|
|
156
168
|
thread: options.otelOptions?.serviceName ?? 'livestore-node-leader-thread',
|
|
157
169
|
processId: process.pid,
|
|
158
170
|
}),
|
|
171
|
+
LogConfig.withLoggerConfig(
|
|
172
|
+
{ logger: options.logger, logLevel: options.logLevel },
|
|
173
|
+
{ threadName: options.otelOptions?.serviceName ?? 'livestore-node-leader-thread' },
|
|
174
|
+
),
|
|
159
175
|
// TODO bring back with Effect 4 once it's easier to work with replacing loggers.
|
|
160
176
|
// We basically only want to provide this logger if it's replacing the default logger, not if there's a custom logger already provided.
|
|
161
177
|
// Effect.provide(Logger.prettyWithThread(options.otelOptions?.serviceName ?? 'livestore-node-leader-thread')),
|
|
162
|
-
Effect.provide(
|
|
163
|
-
Effect.provide(PlatformNode.NodeFileSystem.layer),
|
|
164
|
-
TracingLive ? Effect.provide(TracingLive) : identity,
|
|
165
|
-
Logger.withMinimumLogLevel(LogLevel.Debug),
|
|
178
|
+
Effect.provide(runtimeLayer),
|
|
166
179
|
)
|
|
167
180
|
}
|
package/src/shutdown-channel.ts
CHANGED
package/src/worker-schema.ts
CHANGED
|
@@ -1,4 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
BootStatus,
|
|
3
|
+
Devtools,
|
|
4
|
+
RejectedPushError,
|
|
5
|
+
MigrationsReport,
|
|
6
|
+
SyncBackend,
|
|
7
|
+
SyncState,
|
|
8
|
+
UnknownError,
|
|
9
|
+
} from '@livestore/common'
|
|
10
|
+
import { StreamEventsOptionsFields } from '@livestore/common/leader-thread'
|
|
2
11
|
import { EventSequenceNumber, LiveStoreEvent } from '@livestore/common/schema'
|
|
3
12
|
import { Schema, Transferable } from '@livestore/utils/effect'
|
|
4
13
|
|
|
@@ -53,7 +62,7 @@ export class LeaderWorkerOuterInitialMessage extends Schema.TaggedRequest<Leader
|
|
|
53
62
|
{
|
|
54
63
|
payload: { port: Transferable.MessagePort },
|
|
55
64
|
success: Schema.Void,
|
|
56
|
-
failure:
|
|
65
|
+
failure: Schema.Never,
|
|
57
66
|
},
|
|
58
67
|
) {}
|
|
59
68
|
|
|
@@ -66,7 +75,7 @@ export class LeaderWorkerInnerInitialMessage extends Schema.TaggedRequest<Leader
|
|
|
66
75
|
storeId: Schema.String,
|
|
67
76
|
clientId: Schema.String,
|
|
68
77
|
storage: StorageType,
|
|
69
|
-
|
|
78
|
+
syncPayloadEncoded: Schema.UndefinedOr(Schema.JsonValue),
|
|
70
79
|
devtools: Schema.Union(
|
|
71
80
|
Schema.Struct({
|
|
72
81
|
enabled: Schema.Literal(true),
|
|
@@ -80,7 +89,7 @@ export class LeaderWorkerInnerInitialMessage extends Schema.TaggedRequest<Leader
|
|
|
80
89
|
),
|
|
81
90
|
},
|
|
82
91
|
success: Schema.Void,
|
|
83
|
-
failure:
|
|
92
|
+
failure: UnknownError,
|
|
84
93
|
},
|
|
85
94
|
) {}
|
|
86
95
|
|
|
@@ -89,35 +98,44 @@ export class LeaderWorkerInnerBootStatusStream extends Schema.TaggedRequest<Lead
|
|
|
89
98
|
{
|
|
90
99
|
payload: {},
|
|
91
100
|
success: BootStatus,
|
|
92
|
-
failure:
|
|
101
|
+
failure: Schema.Never,
|
|
93
102
|
},
|
|
94
103
|
) {}
|
|
95
104
|
|
|
96
105
|
export class LeaderWorkerInnerPullStream extends Schema.TaggedRequest<LeaderWorkerInnerPullStream>()('PullStream', {
|
|
97
106
|
payload: {
|
|
98
|
-
cursor: EventSequenceNumber.
|
|
107
|
+
cursor: Schema.typeSchema(EventSequenceNumber.Client.Composite),
|
|
99
108
|
},
|
|
100
109
|
success: Schema.Struct({
|
|
101
110
|
payload: SyncState.PayloadUpstream,
|
|
102
111
|
}),
|
|
103
|
-
failure:
|
|
112
|
+
failure: Schema.Never,
|
|
104
113
|
}) {}
|
|
105
114
|
|
|
115
|
+
export class LeaderWorkerInnerStreamEvents extends Schema.TaggedRequest<LeaderWorkerInnerStreamEvents>()(
|
|
116
|
+
'StreamEvents',
|
|
117
|
+
{
|
|
118
|
+
payload: StreamEventsOptionsFields,
|
|
119
|
+
success: LiveStoreEvent.Client.Encoded,
|
|
120
|
+
failure: Schema.Never,
|
|
121
|
+
},
|
|
122
|
+
) {}
|
|
123
|
+
|
|
106
124
|
export class LeaderWorkerInnerPushToLeader extends Schema.TaggedRequest<LeaderWorkerInnerPushToLeader>()(
|
|
107
125
|
'PushToLeader',
|
|
108
126
|
{
|
|
109
127
|
payload: {
|
|
110
|
-
batch: Schema.Array(LiveStoreEvent.
|
|
128
|
+
batch: Schema.Array(Schema.typeSchema(LiveStoreEvent.Client.Encoded)),
|
|
111
129
|
},
|
|
112
|
-
success: Schema.Void
|
|
113
|
-
failure:
|
|
130
|
+
success: Schema.Void as Schema.Schema<void>,
|
|
131
|
+
failure: RejectedPushError,
|
|
114
132
|
},
|
|
115
133
|
) {}
|
|
116
134
|
|
|
117
135
|
export class LeaderWorkerInnerExport extends Schema.TaggedRequest<LeaderWorkerInnerExport>()('Export', {
|
|
118
136
|
payload: {},
|
|
119
137
|
success: Transferable.Uint8Array as Schema.Schema<Uint8Array<ArrayBuffer>>,
|
|
120
|
-
failure:
|
|
138
|
+
failure: Schema.Never,
|
|
121
139
|
}) {}
|
|
122
140
|
|
|
123
141
|
export class LeaderWorkerInnerGetRecreateSnapshot extends Schema.TaggedRequest<LeaderWorkerInnerGetRecreateSnapshot>()(
|
|
@@ -128,7 +146,7 @@ export class LeaderWorkerInnerGetRecreateSnapshot extends Schema.TaggedRequest<L
|
|
|
128
146
|
snapshot: Transferable.Uint8Array as Schema.Schema<Uint8Array<ArrayBuffer>>,
|
|
129
147
|
migrationsReport: MigrationsReport,
|
|
130
148
|
}),
|
|
131
|
-
failure:
|
|
149
|
+
failure: Schema.Never,
|
|
132
150
|
},
|
|
133
151
|
) {}
|
|
134
152
|
|
|
@@ -137,7 +155,7 @@ export class LeaderWorkerInnerExportEventlog extends Schema.TaggedRequest<Leader
|
|
|
137
155
|
{
|
|
138
156
|
payload: {},
|
|
139
157
|
success: Transferable.Uint8Array as Schema.Schema<Uint8Array<ArrayBuffer>>,
|
|
140
|
-
failure:
|
|
158
|
+
failure: Schema.Never,
|
|
141
159
|
},
|
|
142
160
|
) {}
|
|
143
161
|
|
|
@@ -145,8 +163,8 @@ export class LeaderWorkerInnerGetLeaderHead extends Schema.TaggedRequest<LeaderW
|
|
|
145
163
|
'GetLeaderHead',
|
|
146
164
|
{
|
|
147
165
|
payload: {},
|
|
148
|
-
success: EventSequenceNumber.
|
|
149
|
-
failure:
|
|
166
|
+
success: Schema.typeSchema(EventSequenceNumber.Client.Composite),
|
|
167
|
+
failure: Schema.Never,
|
|
150
168
|
},
|
|
151
169
|
) {}
|
|
152
170
|
|
|
@@ -155,14 +173,41 @@ export class LeaderWorkerInnerGetLeaderSyncState extends Schema.TaggedRequest<Le
|
|
|
155
173
|
{
|
|
156
174
|
payload: {},
|
|
157
175
|
success: SyncState.SyncState,
|
|
158
|
-
failure:
|
|
176
|
+
failure: Schema.Never,
|
|
177
|
+
},
|
|
178
|
+
) {}
|
|
179
|
+
|
|
180
|
+
export class LeaderWorkerInnerSyncStateStream extends Schema.TaggedRequest<LeaderWorkerInnerSyncStateStream>()(
|
|
181
|
+
'SyncStateStream',
|
|
182
|
+
{
|
|
183
|
+
payload: {},
|
|
184
|
+
success: SyncState.SyncState,
|
|
185
|
+
failure: Schema.Never,
|
|
186
|
+
},
|
|
187
|
+
) {}
|
|
188
|
+
|
|
189
|
+
export class LeaderWorkerInnerGetNetworkStatus extends Schema.TaggedRequest<LeaderWorkerInnerGetNetworkStatus>()(
|
|
190
|
+
'GetNetworkStatus',
|
|
191
|
+
{
|
|
192
|
+
payload: {},
|
|
193
|
+
success: SyncBackend.NetworkStatus,
|
|
194
|
+
failure: Schema.Never,
|
|
195
|
+
},
|
|
196
|
+
) {}
|
|
197
|
+
|
|
198
|
+
export class LeaderWorkerInnerNetworkStatusStream extends Schema.TaggedRequest<LeaderWorkerInnerNetworkStatusStream>()(
|
|
199
|
+
'NetworkStatusStream',
|
|
200
|
+
{
|
|
201
|
+
payload: {},
|
|
202
|
+
success: SyncBackend.NetworkStatus,
|
|
203
|
+
failure: Schema.Never,
|
|
159
204
|
},
|
|
160
205
|
) {}
|
|
161
206
|
|
|
162
207
|
export class LeaderWorkerInnerShutdown extends Schema.TaggedRequest<LeaderWorkerInnerShutdown>()('Shutdown', {
|
|
163
208
|
payload: {},
|
|
164
209
|
success: Schema.Void,
|
|
165
|
-
failure:
|
|
210
|
+
failure: Schema.Never,
|
|
166
211
|
}) {}
|
|
167
212
|
|
|
168
213
|
export class LeaderWorkerInnerExtraDevtoolsMessage extends Schema.TaggedRequest<LeaderWorkerInnerExtraDevtoolsMessage>()(
|
|
@@ -172,7 +217,7 @@ export class LeaderWorkerInnerExtraDevtoolsMessage extends Schema.TaggedRequest<
|
|
|
172
217
|
message: Devtools.Leader.MessageToApp,
|
|
173
218
|
},
|
|
174
219
|
success: Schema.Void,
|
|
175
|
-
failure:
|
|
220
|
+
failure: Schema.Never,
|
|
176
221
|
},
|
|
177
222
|
) {}
|
|
178
223
|
|
|
@@ -180,12 +225,16 @@ export const LeaderWorkerInnerRequest = Schema.Union(
|
|
|
180
225
|
LeaderWorkerInnerInitialMessage,
|
|
181
226
|
LeaderWorkerInnerBootStatusStream,
|
|
182
227
|
LeaderWorkerInnerPullStream,
|
|
228
|
+
LeaderWorkerInnerStreamEvents,
|
|
183
229
|
LeaderWorkerInnerPushToLeader,
|
|
184
230
|
LeaderWorkerInnerExport,
|
|
185
231
|
LeaderWorkerInnerGetRecreateSnapshot,
|
|
186
232
|
LeaderWorkerInnerExportEventlog,
|
|
187
233
|
LeaderWorkerInnerGetLeaderHead,
|
|
188
234
|
LeaderWorkerInnerGetLeaderSyncState,
|
|
235
|
+
LeaderWorkerInnerSyncStateStream,
|
|
236
|
+
LeaderWorkerInnerGetNetworkStatus,
|
|
237
|
+
LeaderWorkerInnerNetworkStatusStream,
|
|
189
238
|
LeaderWorkerInnerShutdown,
|
|
190
239
|
LeaderWorkerInnerExtraDevtoolsMessage,
|
|
191
240
|
)
|