@livestore/webmesh 0.4.0-dev.22 → 0.4.0-dev.23
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/README.md +5 -3
- package/dist/.tsbuildinfo +1 -1
- package/dist/channel/direct-channel-internal.d.ts.map +1 -1
- package/dist/channel/direct-channel-internal.js +15 -23
- package/dist/channel/direct-channel-internal.js.map +1 -1
- package/dist/channel/direct-channel.js +4 -4
- package/dist/channel/direct-channel.js.map +1 -1
- package/dist/channel/proxy-channel.d.ts +26 -1
- package/dist/channel/proxy-channel.d.ts.map +1 -1
- package/dist/channel/proxy-channel.js +64 -18
- package/dist/channel/proxy-channel.js.map +1 -1
- package/dist/common.d.ts.map +1 -1
- package/dist/common.js +5 -6
- package/dist/common.js.map +1 -1
- package/dist/node.d.ts +6 -0
- package/dist/node.d.ts.map +1 -1
- package/dist/node.js +25 -23
- package/dist/node.js.map +1 -1
- package/dist/node.test.js +192 -5
- package/dist/node.test.js.map +1 -1
- package/dist/websocket-edge.d.ts +1 -1
- package/dist/websocket-edge.d.ts.map +1 -1
- package/dist/websocket-edge.js +5 -7
- package/dist/websocket-edge.js.map +1 -1
- package/dist/websocket-edge.test.d.ts +7 -0
- package/dist/websocket-edge.test.d.ts.map +1 -0
- package/dist/websocket-edge.test.js +74 -0
- package/dist/websocket-edge.test.js.map +1 -0
- package/package.json +65 -12
- package/src/channel/direct-channel-internal.ts +17 -40
- package/src/channel/direct-channel.ts +4 -4
- package/src/channel/proxy-channel.ts +85 -25
- package/src/common.ts +5 -6
- package/src/node.test.ts +270 -7
- package/src/node.ts +31 -23
- package/src/websocket-edge.test.ts +98 -0
- package/src/websocket-edge.ts +7 -9
package/src/websocket-edge.ts
CHANGED
|
@@ -50,7 +50,7 @@ export const connectViaWebSocket = ({
|
|
|
50
50
|
openTimeout?: number
|
|
51
51
|
}): Effect.Effect<void, never, Scope.Scope | HttpClient.HttpClient> =>
|
|
52
52
|
Effect.gen(function* () {
|
|
53
|
-
const socket = yield* Socket.makeWebSocket(url, { openTimeout })
|
|
53
|
+
const socket = yield* Socket.makeWebSocket(url, openTimeout !== undefined ? { openTimeout } : undefined)
|
|
54
54
|
|
|
55
55
|
const edgeChannel = yield* makeWebSocketEdge({
|
|
56
56
|
socket,
|
|
@@ -78,7 +78,7 @@ export const makeWebSocketEdge = ({
|
|
|
78
78
|
}: {
|
|
79
79
|
socket: Socket.Socket
|
|
80
80
|
socketType: SocketType
|
|
81
|
-
debug?: { id?: string } | undefined
|
|
81
|
+
debug?: { id?: string | undefined } | undefined
|
|
82
82
|
}): Effect.Effect<
|
|
83
83
|
{
|
|
84
84
|
webChannel: WebChannel.WebChannel<typeof WebmeshSchema.Packet.Type, typeof WebmeshSchema.Packet.Type>
|
|
@@ -105,12 +105,13 @@ export const makeWebSocketEdge = ({
|
|
|
105
105
|
Schedule.whileInput((_: Socket.SocketError) => _.reason === 'OpenTimeout' || _.reason === 'Open'),
|
|
106
106
|
)
|
|
107
107
|
|
|
108
|
+
const sendToSocket = yield* socket.writer
|
|
109
|
+
|
|
108
110
|
yield* Stream.never.pipe(
|
|
109
111
|
Stream.pipeThroughChannel(Socket.toChannel(socket)),
|
|
110
112
|
Stream.catchTag(
|
|
111
113
|
'SocketError',
|
|
112
114
|
Effect.fnUntraced(function* (error) {
|
|
113
|
-
// yield* Effect.logError(`[websocket-edge] Socket error`, error, { socketType, debugId: debugInfo?.id })
|
|
114
115
|
// In the case of the socket being closed, we're interrupting the stream
|
|
115
116
|
// and close the WebChannel (which can be observed from the outside)
|
|
116
117
|
if (error.reason === 'Close') {
|
|
@@ -118,7 +119,7 @@ export const makeWebSocketEdge = ({
|
|
|
118
119
|
yield* isConnectedLatch.close
|
|
119
120
|
return yield* Effect.interrupt
|
|
120
121
|
} else {
|
|
121
|
-
return yield*
|
|
122
|
+
return yield* error
|
|
122
123
|
}
|
|
123
124
|
}),
|
|
124
125
|
),
|
|
@@ -130,7 +131,6 @@ export const makeWebSocketEdge = ({
|
|
|
130
131
|
yield* Deferred.succeed(fromDeferred, msg.from)
|
|
131
132
|
} else {
|
|
132
133
|
const decodedPayload = yield* Schema.decode(schema.listen)(msg.payload)
|
|
133
|
-
// yield* Effect.logDebug(`[websocket-edge] recv from ${msg.from}: ${decodedPayload._tag}`, decodedPayload)
|
|
134
134
|
yield* Queue.offer(listenQueue, decodedPayload)
|
|
135
135
|
}
|
|
136
136
|
}),
|
|
@@ -148,8 +148,6 @@ export const makeWebSocketEdge = ({
|
|
|
148
148
|
Effect.forkScoped,
|
|
149
149
|
)
|
|
150
150
|
|
|
151
|
-
const sendToSocket = yield* socket.writer
|
|
152
|
-
|
|
153
151
|
const initHandshake = (from: string) =>
|
|
154
152
|
sendToSocket(Schema.encodeSync(MessageMsgPack)({ _tag: 'WSEdgeInit', from }))
|
|
155
153
|
|
|
@@ -168,7 +166,7 @@ export const makeWebSocketEdge = ({
|
|
|
168
166
|
Effect.gen(function* () {
|
|
169
167
|
yield* isConnectedLatch.await
|
|
170
168
|
const payload = yield* Schema.encode(schema.send)(message)
|
|
171
|
-
yield* sendToSocket(Schema.
|
|
169
|
+
yield* sendToSocket(yield* Schema.encode(MessageMsgPack)({ _tag: 'WSEdgePayload', payload, from }))
|
|
172
170
|
}).pipe(Effect.orDie)
|
|
173
171
|
|
|
174
172
|
const listen = Stream.fromQueue(listenQueue).pipe(
|
|
@@ -184,7 +182,7 @@ export const makeWebSocketEdge = ({
|
|
|
184
182
|
schema,
|
|
185
183
|
supportsTransferables: false,
|
|
186
184
|
shutdown: Scope.close(scope, Exit.void),
|
|
187
|
-
debugInfo,
|
|
185
|
+
...(debugInfo !== undefined ? { debugInfo } : {}),
|
|
188
186
|
} satisfies WebChannel.WebChannel<typeof WebmeshSchema.Packet.Type, typeof WebmeshSchema.Packet.Type>
|
|
189
187
|
|
|
190
188
|
return { webChannel, from }
|