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