@livestore/webmesh 0.0.0-snapshot-ee8e0fc3b894cf3159269c9c8969a8fc4b398dca → 0.0.0-snapshot-fec375f0f61a7bc75278adc60d1a55f96a9c292a

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 (50) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/channel/message-channel-internal.d.ts +3 -3
  3. package/dist/channel/message-channel-internal.d.ts.map +1 -1
  4. package/dist/channel/message-channel-internal.js +8 -8
  5. package/dist/channel/message-channel-internal.js.map +1 -1
  6. package/dist/channel/message-channel.d.ts +5 -5
  7. package/dist/channel/message-channel.d.ts.map +1 -1
  8. package/dist/channel/message-channel.js +22 -22
  9. package/dist/channel/message-channel.js.map +1 -1
  10. package/dist/channel/proxy-channel.d.ts +2 -2
  11. package/dist/channel/proxy-channel.d.ts.map +1 -1
  12. package/dist/channel/proxy-channel.js +18 -14
  13. package/dist/channel/proxy-channel.js.map +1 -1
  14. package/dist/common.d.ts +15 -12
  15. package/dist/common.d.ts.map +1 -1
  16. package/dist/common.js +5 -3
  17. package/dist/common.js.map +1 -1
  18. package/dist/mesh-schema.d.ts +33 -10
  19. package/dist/mesh-schema.d.ts.map +1 -1
  20. package/dist/mesh-schema.js +19 -7
  21. package/dist/mesh-schema.js.map +1 -1
  22. package/dist/mod.d.ts +2 -2
  23. package/dist/mod.d.ts.map +1 -1
  24. package/dist/mod.js +2 -2
  25. package/dist/mod.js.map +1 -1
  26. package/dist/node.d.ts +26 -19
  27. package/dist/node.d.ts.map +1 -1
  28. package/dist/node.js +147 -83
  29. package/dist/node.js.map +1 -1
  30. package/dist/node.test.js +42 -25
  31. package/dist/node.test.js.map +1 -1
  32. package/dist/{websocket-connection.d.ts → websocket-edge.d.ts} +12 -12
  33. package/dist/websocket-edge.d.ts.map +1 -0
  34. package/dist/{websocket-connection.js → websocket-edge.js} +17 -16
  35. package/dist/websocket-edge.js.map +1 -0
  36. package/dist/websocket-server.js +6 -6
  37. package/dist/websocket-server.js.map +1 -1
  38. package/package.json +3 -3
  39. package/src/channel/message-channel-internal.ts +10 -10
  40. package/src/channel/message-channel.ts +25 -25
  41. package/src/channel/proxy-channel.ts +20 -16
  42. package/src/common.ts +8 -11
  43. package/src/mesh-schema.ts +23 -9
  44. package/src/mod.ts +2 -2
  45. package/src/node.test.ts +60 -25
  46. package/src/node.ts +206 -113
  47. package/src/{websocket-connection.ts → websocket-edge.ts} +20 -15
  48. package/src/websocket-server.ts +6 -6
  49. package/dist/websocket-connection.d.ts.map +0 -1
  50. package/dist/websocket-connection.js.map +0 -1
@@ -16,7 +16,7 @@ declare const MessageChannelRequest_base: Schema.TaggedStruct<"MessageChannelReq
16
16
  hops: Schema.Array$<typeof Schema.String>;
17
17
  }>;
18
18
  /**
19
- * Needs to go through already existing MessageChannel connections, times out otherwise
19
+ * Needs to go through already existing MessageChannel edges, times out otherwise
20
20
  *
21
21
  * Can't yet contain the `port` because the request might be duplicated while forwarding to multiple nodes.
22
22
  * We need a clear path back to the sender to avoid this, thus we respond with a separate
@@ -96,45 +96,68 @@ declare const ProxyChannelPayloadAck_base: Schema.TaggedStruct<"ProxyChannelPayl
96
96
  }>;
97
97
  export declare class ProxyChannelPayloadAck extends ProxyChannelPayloadAck_base {
98
98
  }
99
- declare const NetworkConnectionAdded_base: Schema.TaggedStruct<"NetworkConnectionAdded", {
99
+ declare const NetworkEdgeAdded_base: Schema.TaggedStruct<"NetworkEdgeAdded", {
100
100
  id: Schema.PropertySignature<":", string, never, "?:", string | undefined, true, never>;
101
101
  source: typeof Schema.String;
102
102
  target: typeof Schema.String;
103
103
  }>;
104
104
  /**
105
- * Broadcast to all nodes when a new connection is added.
105
+ * Broadcast to all nodes when a new edge is added.
106
106
  * Mostly used for auto-reconnect purposes.
107
107
  */
108
- export declare class NetworkConnectionAdded extends NetworkConnectionAdded_base {
108
+ export declare class NetworkEdgeAdded extends NetworkEdgeAdded_base {
109
109
  }
110
- declare const NetworkConnectionTopologyRequest_base: Schema.TaggedStruct<"NetworkConnectionTopologyRequest", {
110
+ declare const NetworkTopologyRequest_base: Schema.TaggedStruct<"NetworkTopologyRequest", {
111
111
  id: Schema.PropertySignature<":", string, never, "?:", string | undefined, true, never>;
112
112
  hops: Schema.Array$<typeof Schema.String>;
113
113
  /** Always fixed to who requested the topology */
114
114
  source: typeof Schema.String;
115
115
  target: Schema.Literal<["-"]>;
116
116
  }>;
117
- export declare class NetworkConnectionTopologyRequest extends NetworkConnectionTopologyRequest_base {
117
+ export declare class NetworkTopologyRequest extends NetworkTopologyRequest_base {
118
118
  }
119
- declare const NetworkConnectionTopologyResponse_base: Schema.TaggedStruct<"NetworkConnectionTopologyResponse", {
119
+ declare const NetworkTopologyResponse_base: Schema.TaggedStruct<"NetworkTopologyResponse", {
120
120
  id: Schema.PropertySignature<":", string, never, "?:", string | undefined, true, never>;
121
121
  reqId: typeof Schema.String;
122
122
  remainingHops: Schema.Array$<typeof Schema.String>;
123
123
  nodeName: typeof Schema.String;
124
- connections: Schema.Array$<typeof Schema.String>;
124
+ edges: Schema.Array$<typeof Schema.String>;
125
125
  /** Always fixed to who requested the topology */
126
126
  source: typeof Schema.String;
127
127
  target: Schema.Literal<["-"]>;
128
128
  }>;
129
- export declare class NetworkConnectionTopologyResponse extends NetworkConnectionTopologyResponse_base {
129
+ export declare class NetworkTopologyResponse extends NetworkTopologyResponse_base {
130
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
+ }>;
131
143
  declare const MessageChannelPacket_base: Schema.Union<[typeof MessageChannelRequest, typeof MessageChannelResponseSuccess, typeof MessageChannelResponseNoTransferables]>;
132
144
  export declare class MessageChannelPacket extends MessageChannelPacket_base {
133
145
  }
134
146
  declare const ProxyChannelPacket_base: Schema.Union<[typeof ProxyChannelRequest, typeof ProxyChannelResponseSuccess, typeof ProxyChannelPayload, typeof ProxyChannelPayloadAck]>;
135
147
  export declare class ProxyChannelPacket extends ProxyChannelPacket_base {
136
148
  }
137
- declare const Packet_base: Schema.Union<[typeof MessageChannelPacket, typeof ProxyChannelPacket, typeof NetworkConnectionAdded, typeof NetworkConnectionTopologyRequest, typeof NetworkConnectionTopologyResponse]>;
149
+ declare const Packet_base: Schema.Union<[typeof MessageChannelPacket, 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
+ }>]>;
138
161
  export declare class Packet extends Packet_base {
139
162
  }
140
163
  declare const MessageChannelPing_base: Schema.TaggedStruct<"MessageChannelPing", {}>;
@@ -1 +1 @@
1
- {"version":3,"file":"mesh-schema.d.ts","sourceRoot":"","sources":["../src/mesh-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAgB,MAAM,yBAAyB,CAAA;;;;IA6B5D,oEAAoE;;IAEpE;;;OAGG;;;;;;;;AAhBL;;;;;;GAMG;AACH,qBAAa,qBAAsB,SAAQ,0BAWzC;CAAG;;;;;;;;;;;;AAEL,qBAAa,6BAA8B,SAAQ,kCAOjD;CAAG;;;;;;;;;;AAEL,qBAAa,qCAAsC,SAAQ,0CAO1D;CAAG;;;;;;;;;;AAEJ,qBAAa,mBAAoB,SAAQ,wBAIvC;CAAG;;;;;;;;;;;;AAEL,qBAAa,2BAA4B,SAAQ,gCAM/C;CAAG;;;;;;;;;;;AAEL,qBAAa,mBAAoB,SAAQ,wBAKvC;CAAG;;;;;;;;;;;AAEL,qBAAa,sBAAuB,SAAQ,2BAK1C;CAAG;;;;;;AAEL;;;GAGG;AACH,qBAAa,sBAAuB,SAAQ,2BAI1C;CAAG;;;;IAKH,iDAAiD;;;;AAHnD,qBAAa,gCAAiC,SAAQ,qCAMpD;CAAG;;;;;;;IAQH,iDAAiD;;;;AANnD,qBAAa,iCAAkC,SAAQ,sCASrD;CAAG;;AAEL,qBAAa,oBAAqB,SAAQ,yBAIzC;CAAG;;AAEJ,qBAAa,kBAAmB,SAAQ,uBAKvC;CAAG;;AAEJ,qBAAa,MAAO,SAAQ,WAM3B;CAAG;;AAEJ,qBAAa,kBAAmB,SAAQ,uBAA6C;CAAG;;AACxF,qBAAa,kBAAmB,SAAQ,uBAA6C;CAAG"}
1
+ {"version":3,"file":"mesh-schema.d.ts","sourceRoot":"","sources":["../src/mesh-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAgB,MAAM,yBAAyB,CAAA;;;;IA6B5D,oEAAoE;;IAEpE;;;OAGG;;;;;;;;AAhBL;;;;;;GAMG;AACH,qBAAa,qBAAsB,SAAQ,0BAWzC;CAAG;;;;;;;;;;;;AAEL,qBAAa,6BAA8B,SAAQ,kCAOjD;CAAG;;;;;;;;;;AAEL,qBAAa,qCAAsC,SAAQ,0CAO1D;CAAG;;;;;;;;;;AAEJ,qBAAa,mBAAoB,SAAQ,wBAIvC;CAAG;;;;;;;;;;;;AAEL,qBAAa,2BAA4B,SAAQ,gCAM/C;CAAG;;;;;;;;;;;AAEL,qBAAa,mBAAoB,SAAQ,wBAKvC;CAAG;;;;;;;;;;;AAEL,qBAAa,sBAAuB,SAAQ,2BAK1C;CAAG;;;;;;AAEL;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,qBAIpC;CAAG;;;;IAKH,iDAAiD;;;;AAHnD,qBAAa,sBAAuB,SAAQ,2BAM1C;CAAG;;;;;;;IAQH,iDAAiD;;;;AANnD,qBAAa,uBAAwB,SAAQ,4BAS3C;CAAG;AAEL,eAAO,MAAM,sBAAsB;;;IAGjC;;;OAGG;;;;;EAKH,CAAA;;AAEF,qBAAa,oBAAqB,SAAQ,yBAIzC;CAAG;;AAEJ,qBAAa,kBAAmB,SAAQ,uBAKvC;CAAG;;;;IArBF;;;OAGG;;;;;;AAoBL,qBAAa,MAAO,SAAQ,WAO3B;CAAG;;AAEJ,qBAAa,kBAAmB,SAAQ,uBAA6C;CAAG;;AACxF,qBAAa,kBAAmB,SAAQ,uBAA6C;CAAG"}
@@ -10,7 +10,7 @@ const defaultPacketFields = {
10
10
  };
11
11
  const remainingHopsUndefined = Schema.Undefined.pipe(Schema.optional);
12
12
  /**
13
- * Needs to go through already existing MessageChannel connections, times out otherwise
13
+ * Needs to go through already existing MessageChannel edges, times out otherwise
14
14
  *
15
15
  * Can't yet contain the `port` because the request might be duplicated while forwarding to multiple nodes.
16
16
  * We need a clear path back to the sender to avoid this, thus we respond with a separate
@@ -73,16 +73,16 @@ export class ProxyChannelPayloadAck extends Schema.TaggedStruct('ProxyChannelPay
73
73
  }) {
74
74
  }
75
75
  /**
76
- * Broadcast to all nodes when a new connection is added.
76
+ * Broadcast to all nodes when a new edge is added.
77
77
  * Mostly used for auto-reconnect purposes.
78
78
  */
79
- export class NetworkConnectionAdded extends Schema.TaggedStruct('NetworkConnectionAdded', {
79
+ export class NetworkEdgeAdded extends Schema.TaggedStruct('NetworkEdgeAdded', {
80
80
  id,
81
81
  source: Schema.String,
82
82
  target: Schema.String,
83
83
  }) {
84
84
  }
85
- export class NetworkConnectionTopologyRequest extends Schema.TaggedStruct('NetworkConnectionTopologyRequest', {
85
+ export class NetworkTopologyRequest extends Schema.TaggedStruct('NetworkTopologyRequest', {
86
86
  id,
87
87
  hops: Schema.Array(Schema.String),
88
88
  /** Always fixed to who requested the topology */
@@ -90,22 +90,34 @@ export class NetworkConnectionTopologyRequest extends Schema.TaggedStruct('Netwo
90
90
  target: Schema.Literal('-'),
91
91
  }) {
92
92
  }
93
- export class NetworkConnectionTopologyResponse extends Schema.TaggedStruct('NetworkConnectionTopologyResponse', {
93
+ export class NetworkTopologyResponse extends Schema.TaggedStruct('NetworkTopologyResponse', {
94
94
  id,
95
95
  reqId: Schema.String,
96
96
  remainingHops: Schema.Array(Schema.String),
97
97
  nodeName: Schema.String,
98
- connections: Schema.Array(Schema.String),
98
+ edges: Schema.Array(Schema.String),
99
99
  /** Always fixed to who requested the topology */
100
100
  source: Schema.String,
101
101
  target: Schema.Literal('-'),
102
102
  }) {
103
103
  }
104
+ export const BroadcastChannelPacket = Schema.TaggedStruct('BroadcastChannelPacket', {
105
+ id,
106
+ channelName: Schema.String,
107
+ /**
108
+ * The payload is expected to be encoded/decoded by the send/listen schema.
109
+ * Transferables are not supported.
110
+ */
111
+ payload: Schema.Any,
112
+ hops: Schema.Array(Schema.String),
113
+ source: Schema.String,
114
+ target: Schema.Literal('-'),
115
+ });
104
116
  export class MessageChannelPacket extends Schema.Union(MessageChannelRequest, MessageChannelResponseSuccess, MessageChannelResponseNoTransferables) {
105
117
  }
106
118
  export class ProxyChannelPacket extends Schema.Union(ProxyChannelRequest, ProxyChannelResponseSuccess, ProxyChannelPayload, ProxyChannelPayloadAck) {
107
119
  }
108
- export class Packet extends Schema.Union(MessageChannelPacket, ProxyChannelPacket, NetworkConnectionAdded, NetworkConnectionTopologyRequest, NetworkConnectionTopologyResponse) {
120
+ export class Packet extends Schema.Union(MessageChannelPacket, ProxyChannelPacket, NetworkEdgeAdded, NetworkTopologyRequest, NetworkTopologyResponse, BroadcastChannelPacket) {
109
121
  }
110
122
  export class MessageChannelPing extends Schema.TaggedStruct('MessageChannelPing', {}) {
111
123
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mesh-schema.js","sourceRoot":"","sources":["../src/mesh-schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mesh-schema.js","sourceRoot":"","sources":["../src/mesh-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAEhD,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAC3B,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,YAAY,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CACnF,CAAA;AAED,MAAM,mBAAmB,GAAG;IAC1B,EAAE;IACF,MAAM,EAAE,MAAM,CAAC,MAAM;IACrB,MAAM,EAAE,MAAM,CAAC,MAAM;IACrB,WAAW,EAAE,MAAM,CAAC,MAAM;IAC1B,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;CAClC,CAAA;AAED,MAAM,sBAAsB,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;AAErE;;;;;;GAMG;AACH,MAAM,OAAO,qBAAsB,SAAQ,MAAM,CAAC,YAAY,CAAC,uBAAuB,EAAE;IACtF,GAAG,mBAAmB;IACtB,aAAa,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;IAChE,cAAc,EAAE,MAAM,CAAC,MAAM;IAC7B,oEAAoE;IACpE,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;IACxC;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC,MAAM;CACxB,CAAC;CAAG;AAEL,MAAM,OAAO,6BAA8B,SAAQ,MAAM,CAAC,YAAY,CAAC,+BAA+B,EAAE;IACtG,GAAG,mBAAmB;IACtB,KAAK,EAAE,MAAM,CAAC,MAAM;IACpB,IAAI,EAAE,YAAY,CAAC,WAAW;IAC9B,yFAAyF;IACzF,aAAa,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;IAC1C,cAAc,EAAE,MAAM,CAAC,MAAM;CAC9B,CAAC;CAAG;AAEL,MAAM,OAAO,qCAAsC,SAAQ,MAAM,CAAC,YAAY,CAC5E,uCAAuC,EACvC;IACE,GAAG,mBAAmB;IACtB,KAAK,EAAE,MAAM,CAAC,MAAM;IACpB,aAAa,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;CAC3C,CACF;CAAG;AAEJ,MAAM,OAAO,mBAAoB,SAAQ,MAAM,CAAC,YAAY,CAAC,qBAAqB,EAAE;IAClF,GAAG,mBAAmB;IACtB,aAAa,EAAE,sBAAsB;IACrC,kBAAkB,EAAE,MAAM,CAAC,MAAM;CAClC,CAAC;CAAG;AAEL,MAAM,OAAO,2BAA4B,SAAQ,MAAM,CAAC,YAAY,CAAC,6BAA6B,EAAE;IAClG,GAAG,mBAAmB;IACtB,KAAK,EAAE,MAAM,CAAC,MAAM;IACpB,aAAa,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;IAC1C,iBAAiB,EAAE,MAAM,CAAC,MAAM;IAChC,kBAAkB,EAAE,MAAM,CAAC,MAAM;CAClC,CAAC;CAAG;AAEL,MAAM,OAAO,mBAAoB,SAAQ,MAAM,CAAC,YAAY,CAAC,qBAAqB,EAAE;IAClF,GAAG,mBAAmB;IACtB,aAAa,EAAE,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAC,GAAG;IACnB,iBAAiB,EAAE,MAAM,CAAC,MAAM;CACjC,CAAC;CAAG;AAEL,MAAM,OAAO,sBAAuB,SAAQ,MAAM,CAAC,YAAY,CAAC,wBAAwB,EAAE;IACxF,GAAG,mBAAmB;IACtB,KAAK,EAAE,MAAM,CAAC,MAAM;IACpB,aAAa,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;IAC1C,iBAAiB,EAAE,MAAM,CAAC,MAAM;CACjC,CAAC;CAAG;AAEL;;;GAGG;AACH,MAAM,OAAO,gBAAiB,SAAQ,MAAM,CAAC,YAAY,CAAC,kBAAkB,EAAE;IAC5E,EAAE;IACF,MAAM,EAAE,MAAM,CAAC,MAAM;IACrB,MAAM,EAAE,MAAM,CAAC,MAAM;CACtB,CAAC;CAAG;AAEL,MAAM,OAAO,sBAAuB,SAAQ,MAAM,CAAC,YAAY,CAAC,wBAAwB,EAAE;IACxF,EAAE;IACF,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;IACjC,iDAAiD;IACjD,MAAM,EAAE,MAAM,CAAC,MAAM;IACrB,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;CAC5B,CAAC;CAAG;AAEL,MAAM,OAAO,uBAAwB,SAAQ,MAAM,CAAC,YAAY,CAAC,yBAAyB,EAAE;IAC1F,EAAE;IACF,KAAK,EAAE,MAAM,CAAC,MAAM;IACpB,aAAa,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;IAC1C,QAAQ,EAAE,MAAM,CAAC,MAAM;IACvB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;IAClC,iDAAiD;IACjD,MAAM,EAAE,MAAM,CAAC,MAAM;IACrB,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;CAC5B,CAAC;CAAG;AAEL,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAM,CAAC,YAAY,CAAC,wBAAwB,EAAE;IAClF,EAAE;IACF,WAAW,EAAE,MAAM,CAAC,MAAM;IAC1B;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC,GAAG;IACnB,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;IACjC,MAAM,EAAE,MAAM,CAAC,MAAM;IACrB,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;CAC5B,CAAC,CAAA;AAEF,MAAM,OAAO,oBAAqB,SAAQ,MAAM,CAAC,KAAK,CACpD,qBAAqB,EACrB,6BAA6B,EAC7B,qCAAqC,CACtC;CAAG;AAEJ,MAAM,OAAO,kBAAmB,SAAQ,MAAM,CAAC,KAAK,CAClD,mBAAmB,EACnB,2BAA2B,EAC3B,mBAAmB,EACnB,sBAAsB,CACvB;CAAG;AAEJ,MAAM,OAAO,MAAO,SAAQ,MAAM,CAAC,KAAK,CACtC,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,CACvB;CAAG;AAEJ,MAAM,OAAO,kBAAmB,SAAQ,MAAM,CAAC,YAAY,CAAC,oBAAoB,EAAE,EAAE,CAAC;CAAG;AACxF,MAAM,OAAO,kBAAmB,SAAQ,MAAM,CAAC,YAAY,CAAC,oBAAoB,EAAE,EAAE,CAAC;CAAG"}
package/dist/mod.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- export * from './websocket-connection.js';
1
+ export * from './websocket-edge.js';
2
2
  export * from './node.js';
3
3
  export * as WebmeshSchema from './mesh-schema.js';
4
- export { ConnectionAlreadyExistsError } from './common.js';
4
+ export { EdgeAlreadyExistsError } from './common.js';
5
5
  //# sourceMappingURL=mod.d.ts.map
package/dist/mod.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAA;AACzC,cAAc,WAAW,CAAA;AACzB,OAAO,KAAK,aAAa,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAA"}
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,WAAW,CAAA;AACzB,OAAO,KAAK,aAAa,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA"}
package/dist/mod.js CHANGED
@@ -1,5 +1,5 @@
1
- export * from './websocket-connection.js';
1
+ export * from './websocket-edge.js';
2
2
  export * from './node.js';
3
3
  export * as WebmeshSchema from './mesh-schema.js';
4
- export { ConnectionAlreadyExistsError } from './common.js';
4
+ export { EdgeAlreadyExistsError } from './common.js';
5
5
  //# sourceMappingURL=mod.js.map
package/dist/mod.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"mod.js","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAA;AACzC,cAAc,WAAW,CAAA;AACzB,OAAO,KAAK,aAAa,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAA"}
1
+ {"version":3,"file":"mod.js","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,WAAW,CAAA;AACzB,OAAO,KAAK,aAAa,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA"}
package/dist/node.d.ts CHANGED
@@ -1,12 +1,11 @@
1
- import type { Scope } from '@livestore/utils/effect';
2
- import { Cause, Duration, Effect, Schema, WebChannel } from '@livestore/utils/effect';
1
+ import { Cause, Duration, Effect, Schema, Scope, WebChannel } from '@livestore/utils/effect';
3
2
  import type { MeshNodeName } from './common.js';
4
- import { ConnectionAlreadyExistsError } from './common.js';
3
+ import { EdgeAlreadyExistsError } from './common.js';
5
4
  import * as WebmeshSchema from './mesh-schema.js';
6
- type ConnectionChannel = WebChannel.WebChannel<typeof WebmeshSchema.Packet.Type, typeof WebmeshSchema.Packet.Type>;
7
- export interface MeshNode {
8
- nodeName: MeshNodeName;
9
- connectionKeys: Effect.Effect<Set<MeshNodeName>>;
5
+ type EdgeChannel = WebChannel.WebChannel<typeof WebmeshSchema.Packet.Type, typeof WebmeshSchema.Packet.Type>;
6
+ export interface MeshNode<TName extends MeshNodeName = MeshNodeName> {
7
+ nodeName: TName;
8
+ edgeKeys: Effect.Effect<Set<MeshNodeName>>;
10
9
  debug: {
11
10
  print: () => void;
12
11
  /** Sends a ping message to all connected nodes and channels */
@@ -17,31 +16,31 @@ export interface MeshNode {
17
16
  requestTopology: (timeoutMs?: number) => Promise<void>;
18
17
  };
19
18
  /**
20
- * Manually adds a connection to get connected to the network of nodes with an existing WebChannel.
19
+ * Manually adds a edge to get connected to the network of nodes with an existing WebChannel.
21
20
  *
22
- * Assumptions about the WebChannel connection:
23
- * - 1:1 connection
21
+ * Assumptions about the WebChannel edge:
22
+ * - 1:1 edge
24
23
  * - Queues messages internally to never drop messages
25
24
  * - Automatically reconnects
26
25
  * - Ideally supports transferables
27
26
  */
28
- addConnection: {
27
+ addEdge: {
29
28
  (options: {
30
29
  target: MeshNodeName;
31
- connectionChannel: ConnectionChannel;
30
+ edgeChannel: EdgeChannel;
32
31
  replaceIfExists: true;
33
32
  }): Effect.Effect<void, never, Scope.Scope>;
34
33
  (options: {
35
34
  target: MeshNodeName;
36
- connectionChannel: ConnectionChannel;
35
+ edgeChannel: EdgeChannel;
37
36
  replaceIfExists?: boolean;
38
- }): Effect.Effect<void, ConnectionAlreadyExistsError, Scope.Scope>;
37
+ }): Effect.Effect<void, EdgeAlreadyExistsError, Scope.Scope>;
39
38
  };
40
- removeConnection: (targetNodeName: MeshNodeName) => Effect.Effect<void, Cause.NoSuchElementException>;
39
+ removeEdge: (targetNodeName: MeshNodeName) => Effect.Effect<void, Cause.NoSuchElementException>;
41
40
  /**
42
- * Tries to broker a MessageChannel connection between the nodes, otherwise will proxy messages via hop-nodes
41
+ * Tries to broker a MessageChannel edge between the nodes, otherwise will proxy messages via hop-nodes
43
42
  *
44
- * For a channel to successfully open, both sides need to have a connection and call `makeChannel`.
43
+ * For a channel to successfully open, both sides need to have a edge and call `makeChannel`.
45
44
  *
46
45
  * Example:
47
46
  * ```ts
@@ -68,13 +67,21 @@ export interface MeshNode {
68
67
  */
69
68
  mode: 'messagechannel' | 'proxy';
70
69
  /**
71
- * Amount of time before we consider a channel creation failed and retry when a new connection is available
70
+ * Amount of time before we consider a channel creation failed and retry when a new edge is available
72
71
  *
73
72
  * @default 1 second
74
73
  */
75
74
  timeout?: Duration.DurationInput;
76
75
  }) => Effect.Effect<WebChannel.WebChannel<MsgListen, MsgSend>, never, Scope.Scope>;
76
+ /**
77
+ * Creates a WebChannel that is broadcasted to all connected nodes.
78
+ * Messages won't be buffered for nodes that join the network after the broadcast channel has been created.
79
+ */
80
+ makeBroadcastChannel: <Msg>(args: {
81
+ channelName: string;
82
+ schema: Schema.Schema<Msg, any>;
83
+ }) => Effect.Effect<WebChannel.WebChannel<Msg, Msg>, never, Scope.Scope>;
77
84
  }
78
- export declare const makeMeshNode: (nodeName: MeshNodeName) => Effect.Effect<MeshNode, never, Scope.Scope>;
85
+ export declare const makeMeshNode: <TName extends MeshNodeName>(nodeName: TName) => Effect.Effect<MeshNode<TName>, never, Scope.Scope>;
79
86
  export {};
80
87
  //# sourceMappingURL=node.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AACpD,OAAO,EACL,KAAK,EACL,QAAQ,EACR,MAAM,EAKN,MAAM,EAEN,UAAU,EACX,MAAM,yBAAyB,CAAA;AAIhC,OAAO,KAAK,EAAc,YAAY,EAAoC,MAAM,aAAa,CAAA;AAC7F,OAAO,EAAE,4BAA4B,EAA0B,MAAM,aAAa,CAAA;AAClF,OAAO,KAAK,aAAa,MAAM,kBAAkB,CAAA;AAGjD,KAAK,iBAAiB,GAAG,UAAU,CAAC,UAAU,CAAC,OAAO,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;AAElH,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,YAAY,CAAA;IAEtB,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAA;IAEhD,KAAK,EAAE;QACL,KAAK,EAAE,MAAM,IAAI,CAAA;QACjB,+DAA+D;QAC/D,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;QAChC;;WAEG;QACH,eAAe,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;KACvD,CAAA;IAED;;;;;;;;OAQG;IACH,aAAa,EAAE;QACb,CAAC,OAAO,EAAE;YACR,MAAM,EAAE,YAAY,CAAA;YACpB,iBAAiB,EAAE,iBAAiB,CAAA;YACpC,eAAe,EAAE,IAAI,CAAA;SACtB,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;QAC3C,CAAC,OAAO,EAAE;YACR,MAAM,EAAE,YAAY,CAAA;YACpB,iBAAiB,EAAE,iBAAiB,CAAA;YACpC,eAAe,CAAC,EAAE,OAAO,CAAA;SAC1B,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,4BAA4B,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;KACnE,CAAA;IAED,gBAAgB,EAAE,CAAC,cAAc,EAAE,YAAY,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,sBAAsB,CAAC,CAAA;IAErG;;;;;;;;;;;;;OAaG;IACH,WAAW,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE;QACtC,MAAM,EAAE,YAAY,CAAA;QACpB;;;WAGG;QACH,WAAW,EAAE,MAAM,CAAA;QACnB,MAAM,EACF,MAAM,CAAC,MAAM,CAAC,SAAS,GAAG,OAAO,EAAE,GAAG,CAAC,GACvC;YACE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;YACrC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;SAClC,CAAA;QACL;;WAEG;QACH,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAA;QAChC;;;;WAIG;QACH,OAAO,CAAC,EAAE,QAAQ,CAAC,aAAa,CAAA;KACjC,KAAK,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;CACnF;AAED,eAAO,MAAM,YAAY,GAAI,UAAU,YAAY,KAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CA6c1C,CAAA"}
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"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"}