@livestore/webmesh 0.3.0-dev.5 → 0.3.0-dev.50

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 (69) hide show
  1. package/README.md +43 -0
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/channel/direct-channel-internal.d.ts +26 -0
  4. package/dist/channel/direct-channel-internal.d.ts.map +1 -0
  5. package/dist/channel/direct-channel-internal.js +217 -0
  6. package/dist/channel/direct-channel-internal.js.map +1 -0
  7. package/dist/channel/direct-channel.d.ts +22 -0
  8. package/dist/channel/direct-channel.d.ts.map +1 -0
  9. package/dist/channel/direct-channel.js +153 -0
  10. package/dist/channel/direct-channel.js.map +1 -0
  11. package/dist/channel/proxy-channel.d.ts +3 -3
  12. package/dist/channel/proxy-channel.d.ts.map +1 -1
  13. package/dist/channel/proxy-channel.js +119 -37
  14. package/dist/channel/proxy-channel.js.map +1 -1
  15. package/dist/common.d.ts +47 -19
  16. package/dist/common.d.ts.map +1 -1
  17. package/dist/common.js +13 -5
  18. package/dist/common.js.map +1 -1
  19. package/dist/mesh-schema.d.ts +79 -13
  20. package/dist/mesh-schema.d.ts.map +1 -1
  21. package/dist/mesh-schema.js +59 -10
  22. package/dist/mesh-schema.js.map +1 -1
  23. package/dist/mod.d.ts +2 -2
  24. package/dist/mod.d.ts.map +1 -1
  25. package/dist/mod.js +2 -2
  26. package/dist/mod.js.map +1 -1
  27. package/dist/node.d.ts +56 -23
  28. package/dist/node.d.ts.map +1 -1
  29. package/dist/node.js +323 -115
  30. package/dist/node.js.map +1 -1
  31. package/dist/node.test.d.ts +1 -1
  32. package/dist/node.test.d.ts.map +1 -1
  33. package/dist/node.test.js +489 -157
  34. package/dist/node.test.js.map +1 -1
  35. package/dist/utils.d.ts +4 -4
  36. package/dist/utils.d.ts.map +1 -1
  37. package/dist/utils.js +7 -1
  38. package/dist/utils.js.map +1 -1
  39. package/dist/websocket-edge.d.ts +56 -0
  40. package/dist/websocket-edge.d.ts.map +1 -0
  41. package/dist/websocket-edge.js +93 -0
  42. package/dist/websocket-edge.js.map +1 -0
  43. package/package.json +10 -6
  44. package/src/channel/direct-channel-internal.ts +356 -0
  45. package/src/channel/direct-channel.ts +234 -0
  46. package/src/channel/proxy-channel.ts +344 -234
  47. package/src/common.ts +24 -17
  48. package/src/mesh-schema.ts +73 -20
  49. package/src/mod.ts +2 -2
  50. package/src/node.test.ts +723 -190
  51. package/src/node.ts +482 -156
  52. package/src/utils.ts +13 -2
  53. package/src/websocket-edge.ts +191 -0
  54. package/dist/channel/message-channel.d.ts +0 -20
  55. package/dist/channel/message-channel.d.ts.map +0 -1
  56. package/dist/channel/message-channel.js +0 -183
  57. package/dist/channel/message-channel.js.map +0 -1
  58. package/dist/websocket-connection.d.ts +0 -51
  59. package/dist/websocket-connection.d.ts.map +0 -1
  60. package/dist/websocket-connection.js +0 -74
  61. package/dist/websocket-connection.js.map +0 -1
  62. package/dist/websocket-server.d.ts +0 -7
  63. package/dist/websocket-server.d.ts.map +0 -1
  64. package/dist/websocket-server.js +0 -24
  65. package/dist/websocket-server.js.map +0 -1
  66. package/src/channel/message-channel.ts +0 -354
  67. package/src/websocket-connection.ts +0 -158
  68. package/src/websocket-server.ts +0 -40
  69. package/tsconfig.json +0 -11
@@ -1,10 +1,17 @@
1
1
  import { casesHandled, shouldNeverHappen } from '@livestore/utils';
2
- import { Deferred, Effect, Either, Fiber, FiberHandle, Queue, Schedule, Schema, Stream, SubscriptionRef, WebChannel, } from '@livestore/utils/effect';
2
+ import { Deferred, Effect, Either, Exit, Fiber, FiberHandle, Queue, Schedule, Schema, Scope, Stream, SubscriptionRef, WebChannel, } from '@livestore/utils/effect';
3
3
  import { nanoid } from '@livestore/utils/nanoid';
4
4
  import { packetAsOtelAttributes, } from '../common.js';
5
5
  import * as MeshSchema from '../mesh-schema.js';
6
- export const makeProxyChannel = ({ queue, nodeName, newConnectionAvailablePubSub, sendPacket, target, channelName, schema, }) => Effect.gen(function* () {
6
+ export const makeProxyChannel = ({ queue, nodeName, newEdgeAvailablePubSub, sendPacket, target, channelName, schema, }) => Effect.scopeWithCloseable((scope) => Effect.gen(function* () {
7
7
  const channelStateRef = { current: { _tag: 'Initial' } };
8
+ const debugInfo = {
9
+ kind: 'proxy-channel',
10
+ pendingSends: 0,
11
+ totalSends: 0,
12
+ connectCounter: 0,
13
+ isConnected: false,
14
+ };
8
15
  /**
9
16
  * We need to unique identify a channel as multiple channels might exist between the same two nodes.
10
17
  * We do this by letting each channel end generate a unique id and then combining them in a deterministic way.
@@ -18,7 +25,7 @@ export const makeProxyChannel = ({ queue, nodeName, newConnectionAvailablePubSub
18
25
  return state;
19
26
  });
20
27
  const setStateToEstablished = (channelId) => Effect.gen(function* () {
21
- // TODO avoid "double" `Connected` events (we might call `setStateToEstablished` twice during initial connection)
28
+ // TODO avoid "double" `Connected` events (we might call `setStateToEstablished` twice during initial edge)
22
29
  yield* Effect.spanEvent(`Connected (${channelId})`).pipe(Effect.withParentSpan(channelSpan));
23
30
  channelStateRef.current = {
24
31
  _tag: 'Established',
@@ -28,26 +35,56 @@ export const makeProxyChannel = ({ queue, nodeName, newConnectionAvailablePubSub
28
35
  combinedChannelId: channelId,
29
36
  };
30
37
  yield* SubscriptionRef.set(connectedStateRef, channelStateRef.current);
38
+ debugInfo.isConnected = true;
31
39
  });
32
- const connectionRequest = Effect.suspend(() => sendPacket(MeshSchema.ProxyChannelRequest.make({ channelName, hops: [], source: nodeName, target, channelIdCandidate })));
40
+ const edgeRequest = Effect.suspend(() => sendPacket(MeshSchema.ProxyChannelRequest.make({ channelName, hops: [], source: nodeName, target, channelIdCandidate })));
33
41
  const getCombinedChannelId = (otherSideChannelIdCandidate) => [channelIdCandidate, otherSideChannelIdCandidate].sort().join('_');
42
+ const earlyPayloadBuffer = yield* Queue.unbounded().pipe(Effect.acquireRelease(Queue.shutdown));
34
43
  const processProxyPacket = ({ packet, respondToSender }) => Effect.gen(function* () {
35
- // yield* Effect.log(`${nodeName}:processing packet ${packet._tag} from ${packet.source}`)
44
+ // yield* Effect.logDebug(
45
+ // `[${nodeName}] processProxyPacket received: ${packet._tag} from ${packet.source} (reqId: ${packet.id})`,
46
+ // )
36
47
  const otherSideName = packet.source;
37
- const channelKey = `${otherSideName}-${packet.channelName}`;
48
+ const channelKey = `target:${otherSideName}, channelName:${packet.channelName}`;
38
49
  const channelState = channelStateRef.current;
39
50
  switch (packet._tag) {
40
51
  case 'ProxyChannelRequest': {
41
52
  const combinedChannelId = getCombinedChannelId(packet.channelIdCandidate);
42
- if (channelState._tag === 'Initial' || channelState._tag === 'Established') {
43
- yield* SubscriptionRef.set(connectedStateRef, false);
44
- channelStateRef.current = { _tag: 'Pending', initiatedVia: 'incoming-request' };
45
- yield* Effect.spanEvent(`Reconnecting`).pipe(Effect.withParentSpan(channelSpan));
46
- // If we're already connected, we need to re-establish the connection
47
- if (channelState._tag === 'Established' && channelState.combinedChannelId !== combinedChannelId) {
48
- yield* connectionRequest;
53
+ // Handle Established state explicitly
54
+ if (channelState._tag === 'Established') {
55
+ // Check if the incoming request is for the *same* channel instance
56
+ if (channelState.combinedChannelId === combinedChannelId) {
57
+ // Already established with the same ID, likely a redundant request.
58
+ // Just respond and stay established.
59
+ // yield* Effect.logDebug(
60
+ // `[${nodeName}] Received redundant ProxyChannelRequest for already established channel instance ${combinedChannelId}. Responding.`,
61
+ // )
62
+ }
63
+ else {
64
+ // Established, but the incoming request has a different ID.
65
+ // This implies a reconnect scenario where IDs don't match. Reset to Pending and re-initiate.
66
+ yield* Effect.logWarning(`[${nodeName}] Received ProxyChannelRequest with different channel ID (${combinedChannelId}) while established with ${channelState.combinedChannelId}. Re-establishing.`);
67
+ yield* SubscriptionRef.set(connectedStateRef, false);
68
+ channelStateRef.current = { _tag: 'Pending', initiatedVia: 'incoming-request' };
69
+ yield* Effect.spanEvent(`Reconnecting (received conflicting ProxyChannelRequest)`).pipe(Effect.withParentSpan(channelSpan));
70
+ debugInfo.isConnected = false;
71
+ debugInfo.connectCounter++;
72
+ // We need to send our own request as well to complete the handshake for the new ID
73
+ yield* edgeRequest;
49
74
  }
50
75
  }
76
+ else if (channelState._tag === 'Initial') {
77
+ // Standard initial connection: set to Pending
78
+ yield* SubscriptionRef.set(connectedStateRef, false); // Ensure connectedStateRef is false if we were somehow Initial but it wasn't false
79
+ channelStateRef.current = { _tag: 'Pending', initiatedVia: 'incoming-request' };
80
+ yield* Effect.spanEvent(`Connecting (received ProxyChannelRequest)`).pipe(Effect.withParentSpan(channelSpan));
81
+ debugInfo.isConnected = false; // Should be false already, but ensure consistency
82
+ debugInfo.connectCounter++;
83
+ // No need to send edgeRequest here, the response acts as our part of the handshake for the incoming request's ID
84
+ }
85
+ // If state is 'Pending', we are already trying to connect.
86
+ // Just let the response go out, don't change state.
87
+ // Send the response regardless of the initial state (unless an error occurred)
51
88
  yield* respondToSender(MeshSchema.ProxyChannelResponseSuccess.make({
52
89
  reqId: packet.id,
53
90
  remainingHops: packet.hops,
@@ -62,30 +99,50 @@ export const makeProxyChannel = ({ queue, nodeName, newConnectionAvailablePubSub
62
99
  }
63
100
  case 'ProxyChannelResponseSuccess': {
64
101
  if (channelState._tag !== 'Pending') {
65
- // return shouldNeverHappen(`Expected proxy channel to be pending but got ${channelState._tag}`)
66
- if (channelState._tag === 'Established' && channelState.combinedChannelId !== packet.combinedChannelId) {
67
- return shouldNeverHappen(`Expected proxy channel to have the same combinedChannelId as the packet:\n${channelState.combinedChannelId} (channel) === ${packet.combinedChannelId} (packet)`);
102
+ if (channelState._tag === 'Established' &&
103
+ channelState.combinedChannelId !== packet.combinedChannelId) {
104
+ return shouldNeverHappen(`ProxyChannel[${channelKey}]: Expected proxy channel to have the same combinedChannelId as the packet:\n${channelState.combinedChannelId} (channel) === ${packet.combinedChannelId} (packet)`);
105
+ }
106
+ else if (channelState._tag === 'Established') {
107
+ // yield* Effect.logDebug(`[${nodeName}] Ignoring redundant ResponseSuccess with same ID ${packet.id}`)
108
+ return;
68
109
  }
69
110
  else {
70
- // for now just ignore it but should be looked into (there seems to be some kind of race condition/inefficiency)
111
+ yield* Effect.logWarning(`[${nodeName}] Ignoring ResponseSuccess ${packet.id} received in unexpected state ${channelState._tag}`);
112
+ return;
71
113
  }
72
114
  }
73
115
  const combinedChannelId = getCombinedChannelId(packet.channelIdCandidate);
74
116
  if (combinedChannelId !== packet.combinedChannelId) {
75
- return yield* Effect.die(`Expected proxy channel to have the same combinedChannelId as the packet:\n${combinedChannelId} (channel) === ${packet.combinedChannelId} (packet)`);
117
+ return yield* Effect.die(`ProxyChannel[${channelKey}]: Expected proxy channel to have the same combinedChannelId as the packet:\n${combinedChannelId} (channel) === ${packet.combinedChannelId} (packet)`);
76
118
  }
77
119
  yield* setStateToEstablished(packet.combinedChannelId);
120
+ const establishedState = channelStateRef.current;
121
+ if (establishedState._tag === 'Established') {
122
+ //
123
+ const bufferedPackets = yield* Queue.takeAll(earlyPayloadBuffer);
124
+ // yield* Effect.logDebug(
125
+ // `[${nodeName}] Draining early payload buffer (${bufferedPackets.length}) after ResponseSuccess`,
126
+ // )
127
+ for (const bufferedPacket of bufferedPackets) {
128
+ if (establishedState.combinedChannelId !== bufferedPacket.combinedChannelId) {
129
+ yield* Effect.logWarning(`[${nodeName}] Discarding buffered payload ${bufferedPacket.id}: Combined channel ID mismatch during drain. Expected ${establishedState.combinedChannelId}, got ${bufferedPacket.combinedChannelId}`);
130
+ continue;
131
+ }
132
+ const decodedMessage = yield* Schema.decodeUnknown(establishedState.listenSchema)(bufferedPacket.payload);
133
+ yield* establishedState.listenQueue.pipe(Queue.offer(decodedMessage));
134
+ }
135
+ }
136
+ else {
137
+ yield* Effect.logError(`[${nodeName}] State is not Established immediately after setStateToEstablished was called. Cannot drain buffer. State: ${establishedState._tag}`);
138
+ }
78
139
  return;
79
140
  }
80
141
  case 'ProxyChannelPayload': {
81
- if (channelState._tag !== 'Established') {
82
- // return yield* Effect.die(`Not yet connected to ${target}. dropping message`)
83
- yield* Effect.spanEvent(`Not yet connected to ${target}. dropping message`, { packet });
84
- return;
85
- }
86
- if (channelState.combinedChannelId !== packet.combinedChannelId) {
87
- return yield* Effect.die(`Expected proxy channel to have the same combinedChannelId as the packet:\n${channelState.combinedChannelId} (channel) === ${packet.combinedChannelId} (packet)`);
142
+ if (channelState._tag === 'Established' && channelState.combinedChannelId !== packet.combinedChannelId) {
143
+ return yield* Effect.die(`ProxyChannel[${channelKey}]: Expected proxy channel to have the same combinedChannelId as the packet:\n${channelState.combinedChannelId} (channel) === ${packet.combinedChannelId} (packet)`);
88
144
  }
145
+ // yield* Effect.logDebug(`[${nodeName}] Received payload reqId: ${packet.id}. Sending Ack.`)
89
146
  yield* respondToSender(MeshSchema.ProxyChannelPayloadAck.make({
90
147
  reqId: packet.id,
91
148
  remainingHops: packet.hops,
@@ -93,19 +150,29 @@ export const makeProxyChannel = ({ queue, nodeName, newConnectionAvailablePubSub
93
150
  target,
94
151
  source: nodeName,
95
152
  channelName,
96
- combinedChannelId: channelState.combinedChannelId,
153
+ combinedChannelId: channelState._tag === 'Established' ? channelState.combinedChannelId : packet.combinedChannelId,
97
154
  }));
98
- const decodedMessage = yield* Schema.decodeUnknown(channelState.listenSchema)(packet.payload);
99
- yield* channelState.listenQueue.pipe(Queue.offer(decodedMessage));
155
+ if (channelState._tag === 'Established') {
156
+ const decodedMessage = yield* Schema.decodeUnknown(channelState.listenSchema)(packet.payload);
157
+ yield* channelState.listenQueue.pipe(Queue.offer(decodedMessage));
158
+ }
159
+ else {
160
+ // yield* Effect.logDebug(
161
+ // `[${nodeName}] Buffering early payload reqId: ${packet.id} (state: ${channelState._tag})`,
162
+ // )
163
+ yield* Queue.offer(earlyPayloadBuffer, packet);
164
+ }
100
165
  return;
101
166
  }
102
167
  case 'ProxyChannelPayloadAck': {
168
+ // yield* Effect.logDebug(`[${nodeName}] Received Ack for reqId: ${packet.reqId}`)
103
169
  if (channelState._tag !== 'Established') {
104
170
  yield* Effect.spanEvent(`Not yet connected to ${target}. dropping message`);
171
+ yield* Effect.logWarning(`[${nodeName}] Received Ack but not established (State: ${channelState._tag}). Dropping Ack for ${packet.reqId}`);
105
172
  return;
106
173
  }
107
174
  const ack = channelState.ackMap.get(packet.reqId) ??
108
- shouldNeverHappen(`Expected ack for ${packet.reqId} in proxy channel ${channelKey}`);
175
+ shouldNeverHappen(`[ProxyChannel[${channelKey}]] Expected ack for ${packet.reqId}`);
109
176
  yield* Deferred.succeed(ack, void 0);
110
177
  channelState.ackMap.delete(packet.reqId);
111
178
  return;
@@ -122,23 +189,25 @@ export const makeProxyChannel = ({ queue, nodeName, newConnectionAvailablePubSub
122
189
  yield* Effect.spanEvent(`Connecting`);
123
190
  const ackMap = new Map();
124
191
  // check if already established via incoming `ProxyChannelRequest` from other side
125
- // which indicates we already have a connection to the target node
192
+ // which indicates we already have a edge to the target node
126
193
  // const channelState = channelStateRef.current
127
194
  {
128
195
  if (channelStateRef.current._tag !== 'Initial') {
129
196
  return shouldNeverHappen('Expected proxy channel to be Initial');
130
197
  }
131
198
  channelStateRef.current = { _tag: 'Pending', initiatedVia: 'outgoing-request' };
132
- yield* connectionRequest;
133
- const retryOnNewConnectionFiber = yield* Stream.fromPubSub(newConnectionAvailablePubSub).pipe(Stream.tap(() => connectionRequest), Stream.runDrain, Effect.forkScoped);
199
+ yield* edgeRequest;
200
+ const retryOnNewEdgeFiber = yield* Stream.fromPubSub(newEdgeAvailablePubSub).pipe(Stream.tap(() => edgeRequest), Stream.runDrain, Effect.forkScoped);
134
201
  const { combinedChannelId: channelId } = yield* waitForEstablished;
135
- yield* Fiber.interrupt(retryOnNewConnectionFiber);
202
+ yield* Fiber.interrupt(retryOnNewEdgeFiber);
136
203
  yield* setStateToEstablished(channelId);
137
204
  }
138
205
  const send = (message) => Effect.gen(function* () {
139
206
  const payload = yield* Schema.encodeUnknown(schema.send)(message);
140
207
  const sendFiberHandle = yield* FiberHandle.make();
141
208
  const sentDeferred = yield* Deferred.make();
209
+ debugInfo.pendingSends++;
210
+ debugInfo.totalSends++;
142
211
  const trySend = Effect.gen(function* () {
143
212
  const { combinedChannelId } = (yield* SubscriptionRef.waitUntil(connectedStateRef, (channel) => channel !== false));
144
213
  const innerSend = Effect.gen(function* () {
@@ -152,12 +221,17 @@ export const makeProxyChannel = ({ queue, nodeName, newConnectionAvailablePubSub
152
221
  target,
153
222
  combinedChannelId,
154
223
  });
224
+ // TODO consider handling previous ackMap entries which might leak/fill-up memory
225
+ // as only successful acks are removed from the map
155
226
  ackMap.set(packet.id, ack);
156
227
  yield* sendPacket(packet);
157
228
  yield* ack;
158
229
  yield* Deferred.succeed(sentDeferred, void 0);
230
+ debugInfo.pendingSends--;
159
231
  });
160
- yield* innerSend.pipe(Effect.timeout(100), Effect.retry(Schedule.exponential(100)), Effect.orDie);
232
+ // TODO make this configurable
233
+ // Schedule.exponential(10): 10, 20, 40, 80, 160, 320, ...
234
+ yield* innerSend.pipe(Effect.timeout(100), Effect.retry(Schedule.exponential(10)), Effect.orDie);
161
235
  }).pipe(Effect.tapErrorCause(Effect.logError));
162
236
  const rerunOnNewChannelFiber = yield* connectedStateRef.changes.pipe(Stream.filter((_) => _ === false), Stream.tap(() => FiberHandle.run(sendFiberHandle, trySend)), Stream.runDrain, Effect.fork);
163
237
  yield* FiberHandle.run(sendFiberHandle, trySend);
@@ -165,15 +239,23 @@ export const makeProxyChannel = ({ queue, nodeName, newConnectionAvailablePubSub
165
239
  yield* Fiber.interrupt(rerunOnNewChannelFiber);
166
240
  }).pipe(Effect.scoped, Effect.withSpan(`sendAckWithRetry:ProxyChannelPayload`), Effect.withParentSpan(channelSpan));
167
241
  const listen = Stream.fromQueue(listenQueue).pipe(Stream.map(Either.right));
168
- const closedDeferred = yield* Deferred.make();
242
+ const closedDeferred = yield* Deferred.make().pipe(Effect.acquireRelease(Deferred.done(Exit.void)));
243
+ const runtime = yield* Effect.runtime();
169
244
  const webChannel = {
170
245
  [WebChannel.WebChannelSymbol]: WebChannel.WebChannelSymbol,
171
246
  send,
172
247
  listen,
173
248
  closedDeferred,
174
- supportsTransferables: true,
249
+ supportsTransferables: false,
175
250
  schema,
251
+ shutdown: Scope.close(scope, Exit.void),
252
+ debugInfo,
253
+ ...{
254
+ debug: {
255
+ ping: (message = 'ping') => send(WebChannel.DebugPingMessage.make({ message })).pipe(Effect.provide(runtime), Effect.tapCauseLogPretty, Effect.runFork),
256
+ },
257
+ },
176
258
  };
177
259
  return webChannel;
178
- }).pipe(Effect.withSpanScoped('makeProxyChannel'));
260
+ }).pipe(Effect.withSpanScoped('makeProxyChannel')));
179
261
  //# sourceMappingURL=proxy-channel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"proxy-channel.js","sourceRoot":"","sources":["../../src/channel/proxy-channel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"proxy-channel.js","sourceRoot":"","sources":["../../src/channel/proxy-channel.ts"],"names":[],"mappings":"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"}
package/dist/common.d.ts CHANGED
@@ -1,46 +1,44 @@
1
1
  import { type Effect, Schema } from '@livestore/utils/effect';
2
- import type { MessageChannelPacket, Packet, ProxyChannelPacket } from './mesh-schema.js';
2
+ import type { DirectChannelPacket, Packet, ProxyChannelPacket } from './mesh-schema.js';
3
3
  export type ProxyQueueItem = {
4
4
  packet: typeof ProxyChannelPacket.Type;
5
5
  respondToSender: (msg: typeof ProxyChannelPacket.Type) => Effect.Effect<void>;
6
6
  };
7
7
  export type MessageQueueItem = {
8
- packet: typeof MessageChannelPacket.Type;
9
- respondToSender: (msg: typeof MessageChannelPacket.Type) => Effect.Effect<void>;
8
+ packet: typeof DirectChannelPacket.Type;
9
+ respondToSender: (msg: typeof DirectChannelPacket.Type) => Effect.Effect<void>;
10
10
  };
11
11
  export type MeshNodeName = string;
12
12
  export type ChannelName = string;
13
- export type ChannelKey = `${MeshNodeName}-${ChannelName}`;
14
- declare const NoConnectionRouteSignal_base: Schema.TaggedErrorClass<NoConnectionRouteSignal, "NoConnectionRouteSignal", {
15
- readonly _tag: Schema.tag<"NoConnectionRouteSignal">;
16
- }>;
17
- export declare class NoConnectionRouteSignal extends NoConnectionRouteSignal_base {
18
- }
19
- declare const ConnectionAlreadyExistsError_base: Schema.TaggedErrorClass<ConnectionAlreadyExistsError, "ConnectionAlreadyExistsError", {
20
- readonly _tag: Schema.tag<"ConnectionAlreadyExistsError">;
13
+ export type ChannelKey = `target:${MeshNodeName}, channelName:${ChannelName}`;
14
+ declare const EdgeAlreadyExistsError_base: Schema.TaggedErrorClass<EdgeAlreadyExistsError, "EdgeAlreadyExistsError", {
15
+ readonly _tag: Schema.tag<"EdgeAlreadyExistsError">;
21
16
  } & {
22
17
  target: typeof Schema.String;
23
18
  }>;
24
- export declare class ConnectionAlreadyExistsError extends ConnectionAlreadyExistsError_base {
19
+ export declare class EdgeAlreadyExistsError extends EdgeAlreadyExistsError_base {
25
20
  }
26
21
  export declare const packetAsOtelAttributes: (packet: typeof Packet.Type) => {
27
22
  packet?: {
28
- readonly remainingHops?: undefined;
23
+ readonly remainingHops?: readonly string[] | undefined;
24
+ readonly channelVersion: number;
25
+ readonly reqId: string | undefined;
26
+ readonly sourceId: string;
29
27
  readonly id: string;
30
28
  readonly target: string;
31
29
  readonly source: string;
32
30
  readonly channelName: string;
33
31
  readonly hops: readonly string[];
34
- readonly _tag: "MessageChannelRequest";
32
+ readonly _tag: "DirectChannelRequest";
35
33
  } | {
36
34
  readonly remainingHops: readonly string[];
35
+ readonly reqId: string;
37
36
  readonly id: string;
38
37
  readonly target: string;
39
38
  readonly source: string;
40
39
  readonly channelName: string;
41
40
  readonly hops: readonly string[];
42
- readonly _tag: "MessageChannelResponseNoTransferables";
43
- readonly reqId: string;
41
+ readonly _tag: "DirectChannelResponseNoTransferables";
44
42
  } | {
45
43
  readonly remainingHops?: undefined;
46
44
  readonly id: string;
@@ -52,32 +50,62 @@ export declare const packetAsOtelAttributes: (packet: typeof Packet.Type) => {
52
50
  readonly channelIdCandidate: string;
53
51
  } | {
54
52
  readonly remainingHops: readonly string[];
53
+ readonly reqId: string;
55
54
  readonly id: string;
56
55
  readonly target: string;
57
56
  readonly source: string;
58
57
  readonly channelName: string;
59
58
  readonly hops: readonly string[];
60
59
  readonly _tag: "ProxyChannelResponseSuccess";
61
- readonly reqId: string;
62
60
  readonly channelIdCandidate: string;
63
61
  readonly combinedChannelId: string;
64
62
  } | {
65
63
  readonly remainingHops: readonly string[];
64
+ readonly reqId: string;
66
65
  readonly id: string;
67
66
  readonly target: string;
68
67
  readonly source: string;
69
68
  readonly channelName: string;
70
69
  readonly hops: readonly string[];
71
70
  readonly _tag: "ProxyChannelPayloadAck";
72
- readonly reqId: string;
73
71
  readonly combinedChannelId: string;
74
72
  } | {
75
73
  readonly id: string;
76
74
  readonly target: string;
77
75
  readonly source: string;
78
- readonly _tag: "NetworkConnectionAdded";
76
+ readonly _tag: "NetworkEdgeAdded";
77
+ } | {
78
+ readonly id: string;
79
+ readonly target: "-";
80
+ readonly source: string;
81
+ readonly hops: readonly string[];
82
+ readonly _tag: "NetworkTopologyRequest";
83
+ } | {
84
+ readonly remainingHops: readonly string[];
85
+ readonly reqId: string;
86
+ readonly id: string;
87
+ readonly target: "-";
88
+ readonly source: string;
89
+ readonly _tag: "NetworkTopologyResponse";
90
+ readonly nodeName: string;
91
+ readonly edges: readonly string[];
92
+ } | {
93
+ readonly id: string;
94
+ readonly target: "-";
95
+ readonly source: string;
96
+ readonly channelName: string;
97
+ readonly hops: readonly string[];
98
+ readonly _tag: "BroadcastChannelPacket";
99
+ readonly payload: any;
79
100
  } | undefined;
80
101
  packetId: string;
102
+ 'span.label': string;
81
103
  };
104
+ export declare const ListenForChannelResult: Schema.Struct<{
105
+ channelName: typeof Schema.String;
106
+ source: typeof Schema.String;
107
+ mode: Schema.Union<[Schema.Literal<["proxy"]>, Schema.Literal<["direct"]>]>;
108
+ }>;
109
+ export type ListenForChannelResult = typeof ListenForChannelResult.Type;
82
110
  export {};
83
111
  //# sourceMappingURL=common.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAE7D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAExF,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,OAAO,kBAAkB,CAAC,IAAI,CAAA;IACtC,eAAe,EAAE,CAAC,GAAG,EAAE,OAAO,kBAAkB,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;CAC9E,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,OAAO,oBAAoB,CAAC,IAAI,CAAA;IACxC,eAAe,EAAE,CAAC,GAAG,EAAE,OAAO,oBAAoB,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;CAChF,CAAA;AAED,MAAM,MAAM,YAAY,GAAG,MAAM,CAAA;AAEjC,MAAM,MAAM,WAAW,GAAG,MAAM,CAAA;AAChC,MAAM,MAAM,UAAU,GAAG,GAAG,YAAY,IAAI,WAAW,EAAE,CAAA;;;;AAGzD,qBAAa,uBAAwB,SAAQ,4BAG5C;CAAG;;;;;;AAEJ,qBAAa,4BAA6B,SAAQ,iCAKjD;CAAG;AAEJ,eAAO,MAAM,sBAAsB,WAAY,OAAO,MAAM,CAAC,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAG/D,CAAA"}
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAa,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAExE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAEvF,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,OAAO,kBAAkB,CAAC,IAAI,CAAA;IACtC,eAAe,EAAE,CAAC,GAAG,EAAE,OAAO,kBAAkB,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;CAC9E,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,OAAO,mBAAmB,CAAC,IAAI,CAAA;IACvC,eAAe,EAAE,CAAC,GAAG,EAAE,OAAO,mBAAmB,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;CAC/E,CAAA;AAED,MAAM,MAAM,YAAY,GAAG,MAAM,CAAA;AAEjC,MAAM,MAAM,WAAW,GAAG,MAAM,CAAA;AAChC,MAAM,MAAM,UAAU,GAAG,UAAU,YAAY,iBAAiB,WAAW,EAAE,CAAA;;;;;;AAQ7E,qBAAa,sBAAuB,SAAQ,2BAE1C;CAAG;AAEL,eAAO,MAAM,sBAAsB,GAAI,QAAQ,OAAO,MAAM,CAAC,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAK/D,CAAA;AAEF,eAAO,MAAM,sBAAsB;;;;EAIjC,CAAA;AAEF,MAAM,MAAM,sBAAsB,GAAG,OAAO,sBAAsB,CAAC,IAAI,CAAA"}
package/dist/common.js CHANGED
@@ -1,13 +1,21 @@
1
- import { Schema } from '@livestore/utils/effect';
1
+ import { Predicate, Schema } from '@livestore/utils/effect';
2
2
  // TODO actually use this to avoid timeouts in certain cases
3
- export class NoConnectionRouteSignal extends Schema.TaggedError()('NoConnectionRouteSignal', {}) {
4
- }
5
- export class ConnectionAlreadyExistsError extends Schema.TaggedError()('ConnectionAlreadyExistsError', {
3
+ // export class NoConnectionRouteSignal extends Schema.TaggedError<NoConnectionRouteSignal>()(
4
+ // 'NoConnectionRouteSignal',
5
+ // {},
6
+ // ) {}
7
+ export class EdgeAlreadyExistsError extends Schema.TaggedError()('EdgeAlreadyExistsError', {
6
8
  target: Schema.String,
7
9
  }) {
8
10
  }
9
11
  export const packetAsOtelAttributes = (packet) => ({
10
12
  packetId: packet.id,
11
- ...(packet._tag !== 'MessageChannelResponseSuccess' && packet._tag !== 'ProxyChannelPayload' ? { packet } : {}),
13
+ 'span.label': packet.id + (Predicate.hasProperty(packet, 'reqId') && packet.reqId !== undefined ? ` for ${packet.reqId}` : ''),
14
+ ...(packet._tag !== 'DirectChannelResponseSuccess' && packet._tag !== 'ProxyChannelPayload' ? { packet } : {}),
15
+ });
16
+ export const ListenForChannelResult = Schema.Struct({
17
+ channelName: Schema.String,
18
+ source: Schema.String,
19
+ mode: Schema.Union(Schema.Literal('proxy'), Schema.Literal('direct')),
12
20
  });
13
21
  //# sourceMappingURL=common.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAmB7D,4DAA4D;AAC5D,MAAM,OAAO,uBAAwB,SAAQ,MAAM,CAAC,WAAW,EAA2B,CACxF,yBAAyB,EACzB,EAAE,CACH;CAAG;AAEJ,MAAM,OAAO,4BAA6B,SAAQ,MAAM,CAAC,WAAW,EAAgC,CAClG,8BAA8B,EAC9B;IACE,MAAM,EAAE,MAAM,CAAC,MAAM;CACtB,CACF;CAAG;AAEJ,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,MAA0B,EAAE,EAAE,CAAC,CAAC;IACrE,QAAQ,EAAE,MAAM,CAAC,EAAE;IACnB,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,+BAA+B,IAAI,MAAM,CAAC,IAAI,KAAK,qBAAqB,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;CAChH,CAAC,CAAA"}
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,SAAS,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAmBxE,4DAA4D;AAC5D,8FAA8F;AAC9F,+BAA+B;AAC/B,QAAQ;AACR,OAAO;AAEP,MAAM,OAAO,sBAAuB,SAAQ,MAAM,CAAC,WAAW,EAA0B,CAAC,wBAAwB,EAAE;IACjH,MAAM,EAAE,MAAM,CAAC,MAAM;CACtB,CAAC;CAAG;AAEL,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,MAA0B,EAAE,EAAE,CAAC,CAAC;IACrE,QAAQ,EAAE,MAAM,CAAC,EAAE;IACnB,YAAY,EACV,MAAM,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAClH,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,8BAA8B,IAAI,MAAM,CAAC,IAAI,KAAK,qBAAqB,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;CAC/G,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAM,CAAC,MAAM,CAAC;IAClD,WAAW,EAAE,MAAM,CAAC,MAAM;IAC1B,MAAM,EAAE,MAAM,CAAC,MAAM;IACrB,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;CACtE,CAAC,CAAA"}
@@ -1,27 +1,43 @@
1
1
  import { Schema } from '@livestore/utils/effect';
2
- declare const MessageChannelRequest_base: Schema.TaggedStruct<"MessageChannelRequest", {
3
- remainingHops: Schema.optional<typeof Schema.Undefined>;
2
+ declare const DirectChannelRequest_base: Schema.TaggedStruct<"DirectChannelRequest", {
3
+ remainingHops: Schema.optional<Schema.Array$<typeof Schema.String>>;
4
+ channelVersion: typeof Schema.Number;
5
+ /** Only set if the request is in response to an incoming request */
6
+ reqId: Schema.UndefinedOr<typeof Schema.String>;
7
+ /**
8
+ * Additionally to the `source` field, we use this field to track whether the instance of a
9
+ * source has changed.
10
+ */
11
+ sourceId: typeof Schema.String;
4
12
  id: Schema.PropertySignature<":", string, never, "?:", string | undefined, true, never>;
5
13
  target: typeof Schema.String;
6
14
  source: typeof Schema.String;
7
15
  channelName: typeof Schema.String;
8
16
  hops: Schema.Array$<typeof Schema.String>;
9
17
  }>;
10
- export declare class MessageChannelRequest extends MessageChannelRequest_base {
18
+ /**
19
+ * Needs to go through already existing DirectChannel edges, times out otherwise
20
+ *
21
+ * Can't yet contain the `port` because the request might be duplicated while forwarding to multiple nodes.
22
+ * We need a clear path back to the sender to avoid this, thus we respond with a separate
23
+ * `DirectChannelResponseSuccess` which contains the `port`.
24
+ */
25
+ export declare class DirectChannelRequest extends DirectChannelRequest_base {
11
26
  }
12
- declare const MessageChannelResponseSuccess_base: Schema.TaggedStruct<"MessageChannelResponseSuccess", {
27
+ declare const DirectChannelResponseSuccess_base: Schema.TaggedStruct<"DirectChannelResponseSuccess", {
13
28
  reqId: typeof Schema.String;
14
29
  port: Schema.Schema<MessagePort, MessagePort, never>;
15
30
  remainingHops: Schema.Array$<typeof Schema.String>;
31
+ channelVersion: typeof Schema.Number;
16
32
  id: Schema.PropertySignature<":", string, never, "?:", string | undefined, true, never>;
17
33
  target: typeof Schema.String;
18
34
  source: typeof Schema.String;
19
35
  channelName: typeof Schema.String;
20
36
  hops: Schema.Array$<typeof Schema.String>;
21
37
  }>;
22
- export declare class MessageChannelResponseSuccess extends MessageChannelResponseSuccess_base {
38
+ export declare class DirectChannelResponseSuccess extends DirectChannelResponseSuccess_base {
23
39
  }
24
- declare const MessageChannelResponseNoTransferables_base: Schema.TaggedStruct<"MessageChannelResponseNoTransferables", {
40
+ declare const DirectChannelResponseNoTransferables_base: Schema.TaggedStruct<"DirectChannelResponseNoTransferables", {
25
41
  reqId: typeof Schema.String;
26
42
  remainingHops: Schema.Array$<typeof Schema.String>;
27
43
  id: Schema.PropertySignature<":", string, never, "?:", string | undefined, true, never>;
@@ -30,7 +46,7 @@ declare const MessageChannelResponseNoTransferables_base: Schema.TaggedStruct<"M
30
46
  channelName: typeof Schema.String;
31
47
  hops: Schema.Array$<typeof Schema.String>;
32
48
  }>;
33
- export declare class MessageChannelResponseNoTransferables extends MessageChannelResponseNoTransferables_base {
49
+ export declare class DirectChannelResponseNoTransferables extends DirectChannelResponseNoTransferables_base {
34
50
  }
35
51
  declare const ProxyChannelRequest_base: Schema.TaggedStruct<"ProxyChannelRequest", {
36
52
  remainingHops: Schema.optional<typeof Schema.Undefined>;
@@ -80,25 +96,75 @@ declare const ProxyChannelPayloadAck_base: Schema.TaggedStruct<"ProxyChannelPayl
80
96
  }>;
81
97
  export declare class ProxyChannelPayloadAck extends ProxyChannelPayloadAck_base {
82
98
  }
83
- declare const NetworkConnectionAdded_base: Schema.TaggedStruct<"NetworkConnectionAdded", {
99
+ declare const NetworkEdgeAdded_base: Schema.TaggedStruct<"NetworkEdgeAdded", {
84
100
  id: Schema.PropertySignature<":", string, never, "?:", string | undefined, true, never>;
85
101
  source: typeof Schema.String;
86
102
  target: typeof Schema.String;
87
103
  }>;
88
104
  /**
89
- * Broadcast to all nodes when a new connection is added.
105
+ * Broadcast to all nodes when a new edge is added.
90
106
  * Mostly used for auto-reconnect purposes.
91
107
  */
92
- export declare class NetworkConnectionAdded extends NetworkConnectionAdded_base {
108
+ export declare class NetworkEdgeAdded extends NetworkEdgeAdded_base {
109
+ }
110
+ declare const NetworkTopologyRequest_base: Schema.TaggedStruct<"NetworkTopologyRequest", {
111
+ id: Schema.PropertySignature<":", string, never, "?:", string | undefined, true, never>;
112
+ hops: Schema.Array$<typeof Schema.String>;
113
+ /** Always fixed to who requested the topology */
114
+ source: typeof Schema.String;
115
+ target: Schema.Literal<["-"]>;
116
+ }>;
117
+ export declare class NetworkTopologyRequest extends NetworkTopologyRequest_base {
93
118
  }
94
- declare const MessageChannelPacket_base: Schema.Union<[typeof MessageChannelRequest, typeof MessageChannelResponseSuccess, typeof MessageChannelResponseNoTransferables]>;
95
- export declare class MessageChannelPacket extends MessageChannelPacket_base {
119
+ declare const NetworkTopologyResponse_base: Schema.TaggedStruct<"NetworkTopologyResponse", {
120
+ id: Schema.PropertySignature<":", string, never, "?:", string | undefined, true, never>;
121
+ reqId: typeof Schema.String;
122
+ remainingHops: Schema.Array$<typeof Schema.String>;
123
+ nodeName: typeof Schema.String;
124
+ edges: Schema.Array$<typeof Schema.String>;
125
+ /** Always fixed to who requested the topology */
126
+ source: typeof Schema.String;
127
+ target: Schema.Literal<["-"]>;
128
+ }>;
129
+ export declare class NetworkTopologyResponse extends NetworkTopologyResponse_base {
130
+ }
131
+ export declare const BroadcastChannelPacket: Schema.TaggedStruct<"BroadcastChannelPacket", {
132
+ id: Schema.PropertySignature<":", string, never, "?:", string | undefined, true, never>;
133
+ channelName: typeof Schema.String;
134
+ /**
135
+ * The payload is expected to be encoded/decoded by the send/listen schema.
136
+ * Transferables are not supported.
137
+ */
138
+ payload: typeof Schema.Any;
139
+ hops: Schema.Array$<typeof Schema.String>;
140
+ source: typeof Schema.String;
141
+ target: Schema.Literal<["-"]>;
142
+ }>;
143
+ declare const DirectChannelPacket_base: Schema.Union<[typeof DirectChannelRequest, typeof DirectChannelResponseSuccess, typeof DirectChannelResponseNoTransferables]>;
144
+ export declare class DirectChannelPacket extends DirectChannelPacket_base {
96
145
  }
97
146
  declare const ProxyChannelPacket_base: Schema.Union<[typeof ProxyChannelRequest, typeof ProxyChannelResponseSuccess, typeof ProxyChannelPayload, typeof ProxyChannelPayloadAck]>;
98
147
  export declare class ProxyChannelPacket extends ProxyChannelPacket_base {
99
148
  }
100
- declare const Packet_base: Schema.Union<[typeof MessageChannelPacket, typeof ProxyChannelPacket, typeof NetworkConnectionAdded]>;
149
+ declare const Packet_base: Schema.Union<[typeof DirectChannelPacket, typeof ProxyChannelPacket, typeof NetworkEdgeAdded, typeof NetworkTopologyRequest, typeof NetworkTopologyResponse, Schema.TaggedStruct<"BroadcastChannelPacket", {
150
+ id: Schema.PropertySignature<":", string, never, "?:", string | undefined, true, never>;
151
+ channelName: typeof Schema.String;
152
+ /**
153
+ * The payload is expected to be encoded/decoded by the send/listen schema.
154
+ * Transferables are not supported.
155
+ */
156
+ payload: typeof Schema.Any;
157
+ hops: Schema.Array$<typeof Schema.String>;
158
+ source: typeof Schema.String;
159
+ target: Schema.Literal<["-"]>;
160
+ }>]>;
101
161
  export declare class Packet extends Packet_base {
102
162
  }
163
+ declare const DirectChannelPing_base: Schema.TaggedStruct<"DirectChannelPing", {}>;
164
+ export declare class DirectChannelPing extends DirectChannelPing_base {
165
+ }
166
+ declare const DirectChannelPong_base: Schema.TaggedStruct<"DirectChannelPong", {}>;
167
+ export declare class DirectChannelPong extends DirectChannelPong_base {
168
+ }
103
169
  export {};
104
170
  //# sourceMappingURL=mesh-schema.d.ts.map