@livestore/adapter-node 0.4.0-dev.9 → 0.5.0-dev.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.
Files changed (49) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/client-session/adapter.d.ts +69 -3
  3. package/dist/client-session/adapter.d.ts.map +1 -1
  4. package/dist/client-session/adapter.js +160 -62
  5. package/dist/client-session/adapter.js.map +1 -1
  6. package/dist/devtools/devtools-server.d.ts.map +1 -1
  7. package/dist/devtools/devtools-server.js +25 -19
  8. package/dist/devtools/devtools-server.js.map +1 -1
  9. package/dist/devtools/mod.d.ts +1 -1
  10. package/dist/devtools/mod.d.ts.map +1 -1
  11. package/dist/devtools/mod.js +1 -1
  12. package/dist/devtools/mod.js.map +1 -1
  13. package/dist/devtools/vite-dev-server.d.ts +22 -4
  14. package/dist/devtools/vite-dev-server.d.ts.map +1 -1
  15. package/dist/devtools/vite-dev-server.js +45 -11
  16. package/dist/devtools/vite-dev-server.js.map +1 -1
  17. package/dist/leader-thread-shared.d.ts +8 -7
  18. package/dist/leader-thread-shared.d.ts.map +1 -1
  19. package/dist/leader-thread-shared.js +19 -16
  20. package/dist/leader-thread-shared.js.map +1 -1
  21. package/dist/make-leader-worker.d.ts +5 -3
  22. package/dist/make-leader-worker.d.ts.map +1 -1
  23. package/dist/make-leader-worker.js +75 -59
  24. package/dist/make-leader-worker.js.map +1 -1
  25. package/dist/rpc-worker.d.ts +8 -0
  26. package/dist/rpc-worker.d.ts.map +1 -0
  27. package/dist/rpc-worker.js +5 -0
  28. package/dist/rpc-worker.js.map +1 -0
  29. package/dist/shutdown-channel.d.ts.map +1 -1
  30. package/dist/shutdown-channel.js.map +1 -1
  31. package/dist/webchannel.d.ts +1 -1
  32. package/dist/webchannel.d.ts.map +1 -1
  33. package/dist/webchannel.js +17 -18
  34. package/dist/webchannel.js.map +1 -1
  35. package/dist/worker-schema.d.ts +274 -138
  36. package/dist/worker-schema.d.ts.map +1 -1
  37. package/dist/worker-schema.js +79 -45
  38. package/dist/worker-schema.js.map +1 -1
  39. package/package.json +51 -20
  40. package/src/client-session/adapter.ts +228 -124
  41. package/src/devtools/devtools-server.ts +50 -35
  42. package/src/devtools/mod.ts +1 -1
  43. package/src/devtools/vite-dev-server.ts +65 -15
  44. package/src/leader-thread-shared.ts +37 -34
  45. package/src/make-leader-worker.ts +164 -115
  46. package/src/rpc-worker.ts +28 -0
  47. package/src/shutdown-channel.ts +1 -0
  48. package/src/webchannel.ts +21 -28
  49. package/src/worker-schema.ts +132 -117
@@ -1,13 +1,22 @@
1
- import { BootStatus, Devtools, LeaderAheadError, MigrationsReport, SyncState, UnexpectedError } from '@livestore/common'
1
+ import {
2
+ BootStatus,
3
+ Devtools,
4
+ MigrationsReport,
5
+ RejectedPushError,
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
- import { Schema, Transferable } from '@livestore/utils/effect'
12
+ import { Rpc, RpcGroup, Schema, Transferable } from '@livestore/utils/effect'
4
13
 
5
- export const WorkerArgv = Schema.parseJson(
14
+ export const WorkerArgv = Schema.fromJsonString(
6
15
  Schema.Struct({
7
16
  clientId: Schema.String,
8
17
  storeId: Schema.String,
9
18
  sessionId: Schema.String,
10
- extraArgs: Schema.UndefinedOr(Schema.JsonValue),
19
+ extraArgs: Schema.optional(Schema.Json),
11
20
  }),
12
21
  )
13
22
 
@@ -17,7 +26,7 @@ export const StorageTypeInMemory = Schema.Struct({
17
26
  * Only works with single-threaded leader thread for now.
18
27
  * Should be mostly used for testing.
19
28
  */
20
- importSnapshot: Schema.optional(Schema.Uint8Array as any as Schema.Schema<Uint8Array<ArrayBuffer>>),
29
+ importSnapshot: Schema.optional(Transferable.Uint8Array),
21
30
  })
22
31
 
23
32
  export type StorageTypeInMemory = typeof StorageTypeInMemory.Type
@@ -34,7 +43,7 @@ export const StorageTypeFs = Schema.Struct({
34
43
 
35
44
  export type StorageTypeFs = typeof StorageTypeFs.Type
36
45
 
37
- export const StorageType = Schema.Union(StorageTypeInMemory, StorageTypeFs)
46
+ export const StorageType = Schema.Union([StorageTypeInMemory, StorageTypeFs])
38
47
  export type StorageType = typeof StorageType.Type
39
48
  export type StorageTypeEncoded = typeof StorageType.Encoded
40
49
 
@@ -45,148 +54,154 @@ export type StorageTypeEncoded = typeof StorageType.Encoded
45
54
  // })
46
55
 
47
56
  // export const SyncBackendOptions = Schema.Union(SyncBackendOptionsWebsocket)
48
- export const SyncBackendOptions = Schema.Record({ key: Schema.String, value: Schema.JsonValue })
49
- export type SyncBackendOptions = Record<string, Schema.JsonValue>
50
-
51
- export class LeaderWorkerOuterInitialMessage extends Schema.TaggedRequest<LeaderWorkerOuterInitialMessage>()(
52
- 'InitialMessage',
53
- {
54
- payload: { port: Transferable.MessagePort },
55
- success: Schema.Void,
56
- failure: UnexpectedError,
57
- },
58
- ) {}
57
+ export const SyncBackendOptions = Schema.Record(Schema.String, Schema.Json)
58
+ export type SyncBackendOptions = Record<string, Schema.Json>
59
59
 
60
- export class LeaderWorkerOuterRequest extends Schema.Union(LeaderWorkerOuterInitialMessage) {}
61
-
62
- export class LeaderWorkerInnerInitialMessage extends Schema.TaggedRequest<LeaderWorkerInnerInitialMessage>()(
63
- 'InitialMessage',
64
- {
65
- payload: {
66
- storeId: Schema.String,
67
- clientId: Schema.String,
68
- storage: StorageType,
69
- syncPayload: Schema.UndefinedOr(Schema.JsonValue),
70
- devtools: Schema.Union(
71
- Schema.Struct({
72
- enabled: Schema.Literal(true),
73
- schemaPath: Schema.String,
74
- port: Schema.Number,
75
- host: Schema.String,
76
- schemaAlias: Schema.String,
77
- useExistingDevtoolsServer: Schema.Boolean,
78
- }),
79
- Schema.Struct({ enabled: Schema.Literal(false) }),
80
- ),
81
- },
82
- success: Schema.Void,
83
- failure: UnexpectedError,
84
- },
85
- ) {}
60
+ export class LeaderWorkerOuterInitialMessage extends Rpc.make('InitialMessage', {
61
+ payload: { port: Transferable.MessagePort },
62
+ success: Schema.Void,
63
+ error: Schema.Never,
64
+ }) {}
86
65
 
87
- export class LeaderWorkerInnerBootStatusStream extends Schema.TaggedRequest<LeaderWorkerInnerBootStatusStream>()(
88
- 'BootStatusStream',
89
- {
90
- payload: {},
91
- success: BootStatus,
92
- failure: UnexpectedError,
66
+ export class LeaderWorkerOuterRpcs extends RpcGroup.make(LeaderWorkerOuterInitialMessage) {}
67
+
68
+ export class LeaderWorkerInnerInitialMessage extends Rpc.make('InitialMessage', {
69
+ payload: {
70
+ storeId: Schema.String,
71
+ clientId: Schema.String,
72
+ storage: StorageType,
73
+ syncPayloadEncoded: Schema.UndefinedOr(Schema.Json),
74
+ devtools: Schema.Union([
75
+ Schema.Struct({
76
+ enabled: Schema.Literal(true),
77
+ schemaPath: Schema.String,
78
+ port: Schema.Int.check(Schema.isBetween({ minimum: 0, maximum: 65_535 })),
79
+ host: Schema.String,
80
+ schemaAlias: Schema.String,
81
+ useExistingDevtoolsServer: Schema.Boolean,
82
+ }),
83
+ Schema.Struct({ enabled: Schema.Literal(false) }),
84
+ ]),
93
85
  },
94
- ) {}
86
+ success: Schema.Void,
87
+ error: UnknownError,
88
+ }) {}
89
+
90
+ export type LeaderWorkerInnerInitialMessagePayload = typeof LeaderWorkerInnerInitialMessage.payloadSchema.Type
95
91
 
96
- export class LeaderWorkerInnerPullStream extends Schema.TaggedRequest<LeaderWorkerInnerPullStream>()('PullStream', {
92
+ export class LeaderWorkerInnerBootStatusStream extends Rpc.make('BootStatusStream', {
93
+ payload: {},
94
+ success: BootStatus,
95
+ error: Schema.Never,
96
+ stream: true,
97
+ }) {}
98
+
99
+ export class LeaderWorkerInnerPullStream extends Rpc.make('PullStream', {
97
100
  payload: {
98
- cursor: EventSequenceNumber.EventSequenceNumber,
101
+ cursor: Schema.toType(EventSequenceNumber.Client.Composite),
99
102
  },
100
103
  success: Schema.Struct({
101
104
  payload: SyncState.PayloadUpstream,
102
105
  }),
103
- failure: UnexpectedError,
106
+ error: Schema.Never,
107
+ stream: true,
108
+ }) {}
109
+
110
+ export class LeaderWorkerInnerStreamEvents extends Rpc.make('StreamEvents', {
111
+ payload: StreamEventsOptionsFields,
112
+ success: LiveStoreEvent.Client.Encoded,
113
+ error: Schema.Never,
114
+ stream: true,
104
115
  }) {}
105
116
 
106
- export class LeaderWorkerInnerPushToLeader extends Schema.TaggedRequest<LeaderWorkerInnerPushToLeader>()(
107
- 'PushToLeader',
108
- {
109
- payload: {
110
- batch: Schema.Array(LiveStoreEvent.AnyEncoded),
111
- },
112
- success: Schema.Void,
113
- failure: Schema.Union(UnexpectedError, LeaderAheadError),
117
+ export class LeaderWorkerInnerPushToLeader extends Rpc.make('PushToLeader', {
118
+ payload: {
119
+ batch: Schema.Array(Schema.toType(LiveStoreEvent.Client.Encoded)),
114
120
  },
115
- ) {}
121
+ success: Schema.Void,
122
+ error: RejectedPushError,
123
+ }) {}
116
124
 
117
- export class LeaderWorkerInnerExport extends Schema.TaggedRequest<LeaderWorkerInnerExport>()('Export', {
125
+ export class LeaderWorkerInnerExport extends Rpc.make('Export', {
118
126
  payload: {},
119
- success: Transferable.Uint8Array as Schema.Schema<Uint8Array<ArrayBuffer>>,
120
- failure: UnexpectedError,
121
- }) {}
122
-
123
- export class LeaderWorkerInnerGetRecreateSnapshot extends Schema.TaggedRequest<LeaderWorkerInnerGetRecreateSnapshot>()(
124
- 'GetRecreateSnapshot',
125
- {
126
- payload: {},
127
- success: Schema.Struct({
128
- snapshot: Transferable.Uint8Array as Schema.Schema<Uint8Array<ArrayBuffer>>,
129
- migrationsReport: MigrationsReport,
130
- }),
131
- failure: UnexpectedError,
132
- },
133
- ) {}
127
+ success: Transferable.Uint8Array,
128
+ error: Schema.Never,
129
+ }) {}
134
130
 
135
- export class LeaderWorkerInnerExportEventlog extends Schema.TaggedRequest<LeaderWorkerInnerExportEventlog>()(
136
- 'ExportEventlog',
137
- {
138
- payload: {},
139
- success: Transferable.Uint8Array as Schema.Schema<Uint8Array<ArrayBuffer>>,
140
- failure: UnexpectedError,
141
- },
142
- ) {}
131
+ export class LeaderWorkerInnerGetRecreateSnapshot extends Rpc.make('GetRecreateSnapshot', {
132
+ payload: {},
133
+ success: Schema.Struct({
134
+ snapshot: Transferable.Uint8Array,
135
+ migrationsReport: MigrationsReport,
136
+ }),
137
+ error: Schema.Never,
138
+ }) {}
143
139
 
144
- export class LeaderWorkerInnerGetLeaderHead extends Schema.TaggedRequest<LeaderWorkerInnerGetLeaderHead>()(
145
- 'GetLeaderHead',
146
- {
147
- payload: {},
148
- success: EventSequenceNumber.EventSequenceNumber,
149
- failure: UnexpectedError,
150
- },
151
- ) {}
140
+ export class LeaderWorkerInnerExportEventlog extends Rpc.make('ExportEventlog', {
141
+ payload: {},
142
+ success: Transferable.Uint8Array,
143
+ error: Schema.Never,
144
+ }) {}
152
145
 
153
- export class LeaderWorkerInnerGetLeaderSyncState extends Schema.TaggedRequest<LeaderWorkerInnerGetLeaderSyncState>()(
154
- 'GetLeaderSyncState',
155
- {
156
- payload: {},
157
- success: SyncState.SyncState,
158
- failure: UnexpectedError,
159
- },
160
- ) {}
146
+ export class LeaderWorkerInnerGetLeaderHead extends Rpc.make('GetLeaderHead', {
147
+ payload: {},
148
+ success: Schema.toType(EventSequenceNumber.Client.Composite),
149
+ error: Schema.Never,
150
+ }) {}
161
151
 
162
- export class LeaderWorkerInnerShutdown extends Schema.TaggedRequest<LeaderWorkerInnerShutdown>()('Shutdown', {
152
+ export class LeaderWorkerInnerGetLeaderSyncState extends Rpc.make('GetLeaderSyncState', {
153
+ payload: {},
154
+ success: SyncState.SyncState,
155
+ error: Schema.Never,
156
+ }) {}
157
+
158
+ export class LeaderWorkerInnerSyncStateStream extends Rpc.make('SyncStateStream', {
159
+ payload: {},
160
+ success: SyncState.SyncState,
161
+ error: Schema.Never,
162
+ stream: true,
163
+ }) {}
164
+
165
+ export class LeaderWorkerInnerGetNetworkStatus extends Rpc.make('GetNetworkStatus', {
166
+ payload: {},
167
+ success: SyncBackend.NetworkStatus,
168
+ error: Schema.Never,
169
+ }) {}
170
+
171
+ export class LeaderWorkerInnerNetworkStatusStream extends Rpc.make('NetworkStatusStream', {
172
+ payload: {},
173
+ success: SyncBackend.NetworkStatus,
174
+ error: Schema.Never,
175
+ stream: true,
176
+ }) {}
177
+
178
+ export class LeaderWorkerInnerShutdown extends Rpc.make('Shutdown', {
163
179
  payload: {},
164
180
  success: Schema.Void,
165
- failure: UnexpectedError,
181
+ error: Schema.Never,
166
182
  }) {}
167
183
 
168
- export class LeaderWorkerInnerExtraDevtoolsMessage extends Schema.TaggedRequest<LeaderWorkerInnerExtraDevtoolsMessage>()(
169
- 'ExtraDevtoolsMessage',
170
- {
171
- payload: {
172
- message: Devtools.Leader.MessageToApp,
173
- },
174
- success: Schema.Void,
175
- failure: UnexpectedError,
184
+ export class LeaderWorkerInnerExtraDevtoolsMessage extends Rpc.make('ExtraDevtoolsMessage', {
185
+ payload: {
186
+ message: Devtools.Leader.MessageToApp,
176
187
  },
177
- ) {}
188
+ success: Schema.Void,
189
+ error: Schema.Never,
190
+ }) {}
178
191
 
179
- export const LeaderWorkerInnerRequest = Schema.Union(
180
- LeaderWorkerInnerInitialMessage,
192
+ export class LeaderWorkerInnerRpcs extends RpcGroup.make(
181
193
  LeaderWorkerInnerBootStatusStream,
182
194
  LeaderWorkerInnerPullStream,
195
+ LeaderWorkerInnerStreamEvents,
183
196
  LeaderWorkerInnerPushToLeader,
184
197
  LeaderWorkerInnerExport,
185
198
  LeaderWorkerInnerGetRecreateSnapshot,
186
199
  LeaderWorkerInnerExportEventlog,
187
200
  LeaderWorkerInnerGetLeaderHead,
188
201
  LeaderWorkerInnerGetLeaderSyncState,
202
+ LeaderWorkerInnerSyncStateStream,
203
+ LeaderWorkerInnerGetNetworkStatus,
204
+ LeaderWorkerInnerNetworkStatusStream,
189
205
  LeaderWorkerInnerShutdown,
190
206
  LeaderWorkerInnerExtraDevtoolsMessage,
191
- )
192
- export type LeaderWorkerInnerRequest = typeof LeaderWorkerInnerRequest.Type
207
+ ) {}