@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.
Files changed (37) hide show
  1. package/README.md +5 -3
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/channel/direct-channel-internal.d.ts.map +1 -1
  4. package/dist/channel/direct-channel-internal.js +15 -23
  5. package/dist/channel/direct-channel-internal.js.map +1 -1
  6. package/dist/channel/direct-channel.js +4 -4
  7. package/dist/channel/direct-channel.js.map +1 -1
  8. package/dist/channel/proxy-channel.d.ts +26 -1
  9. package/dist/channel/proxy-channel.d.ts.map +1 -1
  10. package/dist/channel/proxy-channel.js +64 -18
  11. package/dist/channel/proxy-channel.js.map +1 -1
  12. package/dist/common.d.ts.map +1 -1
  13. package/dist/common.js +5 -6
  14. package/dist/common.js.map +1 -1
  15. package/dist/node.d.ts +6 -0
  16. package/dist/node.d.ts.map +1 -1
  17. package/dist/node.js +25 -23
  18. package/dist/node.js.map +1 -1
  19. package/dist/node.test.js +192 -5
  20. package/dist/node.test.js.map +1 -1
  21. package/dist/websocket-edge.d.ts +1 -1
  22. package/dist/websocket-edge.d.ts.map +1 -1
  23. package/dist/websocket-edge.js +5 -7
  24. package/dist/websocket-edge.js.map +1 -1
  25. package/dist/websocket-edge.test.d.ts +7 -0
  26. package/dist/websocket-edge.test.d.ts.map +1 -0
  27. package/dist/websocket-edge.test.js +74 -0
  28. package/dist/websocket-edge.test.js.map +1 -0
  29. package/package.json +65 -12
  30. package/src/channel/direct-channel-internal.ts +17 -40
  31. package/src/channel/direct-channel.ts +4 -4
  32. package/src/channel/proxy-channel.ts +85 -25
  33. package/src/common.ts +5 -6
  34. package/src/node.test.ts +270 -7
  35. package/src/node.ts +31 -23
  36. package/src/websocket-edge.test.ts +98 -0
  37. package/src/websocket-edge.ts +7 -9
@@ -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* Effect.fail(error)
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.encodeSync(MessageMsgPack)({ _tag: 'WSEdgePayload', payload, from }))
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 }