@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.
- package/dist/.tsbuildinfo +1 -1
- package/dist/channel/message-channel-internal.d.ts +3 -3
- package/dist/channel/message-channel-internal.d.ts.map +1 -1
- package/dist/channel/message-channel-internal.js +8 -8
- package/dist/channel/message-channel-internal.js.map +1 -1
- package/dist/channel/message-channel.d.ts +5 -5
- package/dist/channel/message-channel.d.ts.map +1 -1
- package/dist/channel/message-channel.js +22 -22
- package/dist/channel/message-channel.js.map +1 -1
- package/dist/channel/proxy-channel.d.ts +2 -2
- package/dist/channel/proxy-channel.d.ts.map +1 -1
- package/dist/channel/proxy-channel.js +18 -14
- package/dist/channel/proxy-channel.js.map +1 -1
- package/dist/common.d.ts +15 -12
- package/dist/common.d.ts.map +1 -1
- package/dist/common.js +5 -3
- package/dist/common.js.map +1 -1
- package/dist/mesh-schema.d.ts +33 -10
- package/dist/mesh-schema.d.ts.map +1 -1
- package/dist/mesh-schema.js +19 -7
- package/dist/mesh-schema.js.map +1 -1
- package/dist/mod.d.ts +2 -2
- package/dist/mod.d.ts.map +1 -1
- package/dist/mod.js +2 -2
- package/dist/mod.js.map +1 -1
- package/dist/node.d.ts +26 -19
- package/dist/node.d.ts.map +1 -1
- package/dist/node.js +147 -83
- package/dist/node.js.map +1 -1
- package/dist/node.test.js +42 -25
- package/dist/node.test.js.map +1 -1
- package/dist/{websocket-connection.d.ts → websocket-edge.d.ts} +12 -12
- package/dist/websocket-edge.d.ts.map +1 -0
- package/dist/{websocket-connection.js → websocket-edge.js} +17 -16
- package/dist/websocket-edge.js.map +1 -0
- package/dist/websocket-server.js +6 -6
- package/dist/websocket-server.js.map +1 -1
- package/package.json +3 -3
- package/src/channel/message-channel-internal.ts +10 -10
- package/src/channel/message-channel.ts +25 -25
- package/src/channel/proxy-channel.ts +20 -16
- package/src/common.ts +8 -11
- package/src/mesh-schema.ts +23 -9
- package/src/mod.ts +2 -2
- package/src/node.test.ts +60 -25
- package/src/node.ts +206 -113
- package/src/{websocket-connection.ts → websocket-edge.ts} +20 -15
- package/src/websocket-server.ts +6 -6
- package/dist/websocket-connection.d.ts.map +0 -1
- package/dist/websocket-connection.js.map +0 -1
package/dist/mesh-schema.d.ts
CHANGED
|
@@ -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
|
|
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
|
|
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
|
|
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
|
|
108
|
+
export declare class NetworkEdgeAdded extends NetworkEdgeAdded_base {
|
|
109
109
|
}
|
|
110
|
-
declare const
|
|
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
|
|
117
|
+
export declare class NetworkTopologyRequest extends NetworkTopologyRequest_base {
|
|
118
118
|
}
|
|
119
|
-
declare const
|
|
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
|
-
|
|
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
|
|
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
|
|
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,
|
|
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"}
|
package/dist/mesh-schema.js
CHANGED
|
@@ -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
|
|
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
|
|
76
|
+
* Broadcast to all nodes when a new edge is added.
|
|
77
77
|
* Mostly used for auto-reconnect purposes.
|
|
78
78
|
*/
|
|
79
|
-
export class
|
|
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
|
|
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
|
|
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
|
-
|
|
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,
|
|
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
|
}
|
package/dist/mesh-schema.js.map
CHANGED
|
@@ -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":"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"}
|
package/dist/mod.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export * from './websocket-
|
|
1
|
+
export * from './websocket-edge.js';
|
|
2
2
|
export * from './node.js';
|
|
3
3
|
export * as WebmeshSchema from './mesh-schema.js';
|
|
4
|
-
export {
|
|
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,
|
|
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-
|
|
1
|
+
export * from './websocket-edge.js';
|
|
2
2
|
export * from './node.js';
|
|
3
3
|
export * as WebmeshSchema from './mesh-schema.js';
|
|
4
|
-
export {
|
|
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,
|
|
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
|
|
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 {
|
|
3
|
+
import { EdgeAlreadyExistsError } from './common.js';
|
|
5
4
|
import * as WebmeshSchema from './mesh-schema.js';
|
|
6
|
-
type
|
|
7
|
-
export interface MeshNode {
|
|
8
|
-
nodeName:
|
|
9
|
-
|
|
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
|
|
19
|
+
* Manually adds a edge to get connected to the network of nodes with an existing WebChannel.
|
|
21
20
|
*
|
|
22
|
-
* Assumptions about the WebChannel
|
|
23
|
-
* - 1:1
|
|
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
|
-
|
|
27
|
+
addEdge: {
|
|
29
28
|
(options: {
|
|
30
29
|
target: MeshNodeName;
|
|
31
|
-
|
|
30
|
+
edgeChannel: EdgeChannel;
|
|
32
31
|
replaceIfExists: true;
|
|
33
32
|
}): Effect.Effect<void, never, Scope.Scope>;
|
|
34
33
|
(options: {
|
|
35
34
|
target: MeshNodeName;
|
|
36
|
-
|
|
35
|
+
edgeChannel: EdgeChannel;
|
|
37
36
|
replaceIfExists?: boolean;
|
|
38
|
-
}): Effect.Effect<void,
|
|
37
|
+
}): Effect.Effect<void, EdgeAlreadyExistsError, Scope.Scope>;
|
|
39
38
|
};
|
|
40
|
-
|
|
39
|
+
removeEdge: (targetNodeName: MeshNodeName) => Effect.Effect<void, Cause.NoSuchElementException>;
|
|
41
40
|
/**
|
|
42
|
-
* Tries to broker a MessageChannel
|
|
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
|
|
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
|
|
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:
|
|
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
|
package/dist/node.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"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"}
|