mirror of
https://github.com/logos-messaging/logos-delivery-js.git
synced 2026-05-18 05:19:36 +00:00
* up lock * make ConnectionManager use ctor * reform connection manager configurations * remove log param from peerManager * make PeerManager use only ConnectionManager, move getPeers to ConnectionManager, remove not needed code * remove allPeers and connectedPeers from BaseProtocolCore, update tests, add getPeers for IWaku * use only one peerManager from Waku object * remove IBaseProtocolSDK and merge with PeerManager * re-implement peerManager, remove ProtocolUseOptions * remove not needed test, up lock * update deps and lock * remove old test for peerManager, fix check and spell * rename to getConnectedPeers * feat: improve filter subscriptions (#2193) * add message cache to Filter * remove WakuOptions and use only ProtocolCreateOptions * move subscribe options to createLightNode Fitler protocol options * rename SubscriptionManager to Subscription * rename to CreateNodeOptions * add warning * feat: introduce subscription manager (#2202) * feat: inroduce subscription manager * fix: make pipeline succeed (#2238) * fix test * use hardcoded value * update playwright * fix test:browser * up lock * make peer retrieval probabilistic * add comments * up lightpush tests * add tests for peer_manager, improve folder structure * create named files for protocols * create named files, simplify project structure * remove only
40 lines
1.3 KiB
TypeScript
40 lines
1.3 KiB
TypeScript
import type { CreateNodeOptions, RelayNode } from "@waku/interfaces";
|
|
import { createLibp2pAndUpdateOptions, WakuNode } from "@waku/sdk";
|
|
|
|
import { RelayCreateOptions, wakuGossipSub, wakuRelay } from "./relay.js";
|
|
|
|
/**
|
|
* Create a Waku node that uses Waku Relay to send and receive messages,
|
|
* enabling some privacy preserving properties.
|
|
* * @remarks
|
|
* This function creates a Relay Node using the Waku Relay protocol.
|
|
* While it is technically possible to use this function in a browser environment,
|
|
* it is not recommended due to potential performance issues and limited browser capabilities.
|
|
* If you are developing a browser-based application, consider alternative approaches like creating a Light Node
|
|
* or use this function with caution.
|
|
*/
|
|
export async function createRelayNode(
|
|
options: CreateNodeOptions & Partial<RelayCreateOptions>
|
|
): Promise<RelayNode> {
|
|
options = {
|
|
...options,
|
|
libp2p: {
|
|
...options.libp2p,
|
|
services: {
|
|
pubsub: wakuGossipSub(options)
|
|
}
|
|
}
|
|
};
|
|
|
|
const { libp2p, pubsubTopics } = await createLibp2pAndUpdateOptions(options);
|
|
const relay = wakuRelay(pubsubTopics || [])(libp2p);
|
|
|
|
return new WakuNode(
|
|
pubsubTopics,
|
|
options as CreateNodeOptions,
|
|
libp2p,
|
|
{},
|
|
relay
|
|
) as RelayNode;
|
|
}
|