@railgun-community/waku-broadcaster-client-node 8.2.1 → 8.2.3

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.
@@ -119,9 +119,7 @@ export class WakuBroadcasterWakuCore {
119
119
  }
120
120
  static async waitForRemotePeer(waku) {
121
121
  try {
122
- const protocols = [
123
- Protocols.Relay,
124
- ];
122
+ const protocols = [Protocols.Relay];
125
123
  await promiseTimeout(waku.waitForPeers(protocols), WakuBroadcasterWakuCore.peerDiscoveryTimeout);
126
124
  }
127
125
  catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"waku-broadcaster-waku-core.js","sourceRoot":"","sources":["../../src/waku/waku-broadcaster-waku-core.ts"],"names":[],"mappings":"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","sourcesContent":["import { Chain, promiseTimeout } from '@railgun-community/shared-models';\nimport { WakuObservers } from './waku-observers.js';\nimport { BroadcasterDebug } from '../utils/broadcaster-debug.js';\nimport { utf8ToBytes } from '../utils/conversion.js';\nimport { isDefined } from '../utils/is-defined.js';\nimport { tcp } from '@libp2p/tcp';\nimport { Protocols, type IMessage, type RelayNode } from '@waku/interfaces';\nimport { createEncoder } from '@waku/core';\nimport { createRelayNode } from '@waku/relay';\nimport { BroadcasterOptions } from '../models/index.js';\nimport {\n WAKU_RAILGUN_DEFAULT_PEERS_NODE,\n WAKU_RAILGUN_DEFAULT_SHARD,\n WAKU_RAILGUN_DEFAULT_SHARDS,\n WAKU_RAILGUN_PUB_SUB_TOPIC,\n} from '../models/constants.js';\n\nexport class WakuBroadcasterWakuCore {\n static hasError = false;\n static restartCallback: () => void;\n\n static waku: Optional<RelayNode>;\n\n private static pubSubTopic = WAKU_RAILGUN_PUB_SUB_TOPIC;\n private static additionalDirectPeers: string[] = [];\n private static peerDiscoveryTimeout = 60000;\n private static defaultShard = WAKU_RAILGUN_DEFAULT_SHARD;\n public static restartCount = 0;\n\n static initWaku = async (chain: Chain): Promise<void> => {\n try {\n await WakuBroadcasterWakuCore.connect();\n if (!WakuBroadcasterWakuCore.waku) {\n BroadcasterDebug.log('No waku instance found');\n return;\n }\n WakuObservers.resetCurrentChain();\n await WakuObservers.setObserversForChain(\n WakuBroadcasterWakuCore.waku,\n chain,\n );\n } catch (err) {\n if (!(err instanceof Error)) {\n throw err;\n }\n BroadcasterDebug.error(err);\n throw err;\n }\n };\n\n static setWakuRestartCallback = (callback: () => void) => {\n WakuBroadcasterWakuCore.restartCallback = callback;\n };\n\n static reinitWaku = async (chain: Chain) => {\n if (\n isDefined(WakuBroadcasterWakuCore.waku) &&\n WakuBroadcasterWakuCore.waku.isStarted()\n ) {\n // Reset fees, which will reset status to \"Searching\".\n await WakuBroadcasterWakuCore.disconnect();\n }\n BroadcasterDebug.log(\n `Reinit Waku, ${++WakuBroadcasterWakuCore.restartCount}`,\n );\n await WakuBroadcasterWakuCore.initWaku(chain);\n if (WakuBroadcasterWakuCore.restartCallback) {\n WakuBroadcasterWakuCore.restartCallback();\n }\n };\n\n static setBroadcasterOptions(broadcasterOptions: BroadcasterOptions) {\n if (isDefined(broadcasterOptions.pubSubTopic)) {\n WakuBroadcasterWakuCore.pubSubTopic = broadcasterOptions.pubSubTopic;\n }\n if (broadcasterOptions.additionalDirectPeers) {\n WakuBroadcasterWakuCore.additionalDirectPeers =\n broadcasterOptions.additionalDirectPeers;\n }\n if (isDefined(broadcasterOptions.peerDiscoveryTimeout)) {\n WakuBroadcasterWakuCore.peerDiscoveryTimeout =\n broadcasterOptions.peerDiscoveryTimeout;\n }\n }\n\n static disconnect = async () => {\n await WakuBroadcasterWakuCore.waku?.stop();\n WakuBroadcasterWakuCore.waku = undefined;\n };\n\n private static connect = async (): Promise<void> => {\n try {\n WakuBroadcasterWakuCore.hasError = false;\n\n BroadcasterDebug.log(`Creating waku broadcast client`);\n\n const bootstrapPeers: string[] = [\n ...WAKU_RAILGUN_DEFAULT_PEERS_NODE,\n ...this.additionalDirectPeers,\n ];\n const waku: RelayNode = await createRelayNode({\n networkConfig: WAKU_RAILGUN_DEFAULT_SHARDS,\n bootstrapPeers,\n libp2p: {\n transports: [tcp() as unknown as any],\n },\n });\n\n BroadcasterDebug.log('Start Waku.');\n await waku.start();\n\n BroadcasterDebug.log('Waiting for remote peer.');\n await this.waitForRemotePeer(waku);\n\n if (!isDefined(waku.relay)) {\n throw new Error('No Waku relay instantiated.');\n }\n\n BroadcasterDebug.log('Waku peers:');\n for (const peer of waku.libp2p.getPeers()) {\n BroadcasterDebug.log(JSON.stringify(peer));\n }\n\n BroadcasterDebug.log('Connected to Waku');\n WakuBroadcasterWakuCore.waku = waku;\n WakuBroadcasterWakuCore.hasError = false;\n } catch (err) {\n if (!(err instanceof Error)) {\n throw err;\n }\n WakuBroadcasterWakuCore.hasError = true;\n throw err;\n }\n };\n\n static getMeshPeerCount(): number {\n return this.getPubSubPeerCount();\n }\n\n static getPubSubPeerCount(): number {\n const peers = this.waku?.libp2p.getPeers() ?? [];\n return peers.length;\n }\n\n static async getLightPushPeerCount(): Promise<number> {\n return 0;\n // const peers = this.waku?.relay.protocol.connectedPeers ?? [];\n // return peers.length;\n }\n\n static async getFilterPeerCount(): Promise<number> {\n return 0;\n // const peers = this.waku?.filter.connectedPeers ?? [];\n // return peers.length;\n }\n\n private static async waitForRemotePeer(waku: RelayNode): Promise<void> {\n try {\n const protocols = [\n Protocols.Relay,\n // Protocols.LightPush, Protocols.Filter\n ];\n await promiseTimeout(\n waku.waitForPeers(protocols),\n WakuBroadcasterWakuCore.peerDiscoveryTimeout,\n );\n } catch (err) {\n if (!(err instanceof Error)) {\n throw err;\n }\n BroadcasterDebug.error(err);\n throw new Error(err.message);\n }\n }\n\n static async broadcastMessage(\n data: object,\n contentTopic: string,\n ): Promise<void> {\n const dataString = JSON.stringify(data);\n const payload = utf8ToBytes(dataString);\n const message: IMessage = { payload };\n try {\n const encoder = createEncoder({\n contentTopic,\n pubsubTopicShardInfo: this.defaultShard,\n });\n await WakuBroadcasterWakuCore.waku?.relay.send(encoder, message);\n } catch (err) {\n if (!(err instanceof Error)) {\n throw err;\n }\n BroadcasterDebug.error(err);\n }\n }\n}\n"]}
1
+ {"version":3,"file":"waku-broadcaster-waku-core.js","sourceRoot":"","sources":["../../src/waku/waku-broadcaster-waku-core.ts"],"names":[],"mappings":"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","sourcesContent":["import { Chain, promiseTimeout } from '@railgun-community/shared-models';\nimport { WakuObservers } from './waku-observers.js';\nimport { BroadcasterDebug } from '../utils/broadcaster-debug.js';\nimport { utf8ToBytes } from '../utils/conversion.js';\nimport { isDefined } from '../utils/is-defined.js';\nimport { tcp } from '@libp2p/tcp';\nimport { Protocols, type IMessage, type RelayNode } from '@waku/interfaces';\nimport { createEncoder } from '@waku/core';\nimport { createRelayNode } from '@waku/relay';\nimport { BroadcasterOptions } from '../models/index.js';\nimport {\n WAKU_RAILGUN_DEFAULT_PEERS_NODE,\n WAKU_RAILGUN_DEFAULT_SHARD,\n WAKU_RAILGUN_DEFAULT_SHARDS,\n WAKU_RAILGUN_PUB_SUB_TOPIC,\n} from '../models/constants.js';\n\nexport class WakuBroadcasterWakuCore {\n static hasError = false;\n static restartCallback: () => void;\n\n static waku: Optional<RelayNode>;\n\n private static pubSubTopic = WAKU_RAILGUN_PUB_SUB_TOPIC;\n private static additionalDirectPeers: string[] = [];\n private static peerDiscoveryTimeout = 60000;\n private static defaultShard = WAKU_RAILGUN_DEFAULT_SHARD;\n public static restartCount = 0;\n\n static initWaku = async (chain: Chain): Promise<void> => {\n try {\n await WakuBroadcasterWakuCore.connect();\n if (!WakuBroadcasterWakuCore.waku) {\n BroadcasterDebug.log('No waku instance found');\n return;\n }\n WakuObservers.resetCurrentChain();\n await WakuObservers.setObserversForChain(\n WakuBroadcasterWakuCore.waku,\n chain,\n );\n } catch (err) {\n if (!(err instanceof Error)) {\n throw err;\n }\n BroadcasterDebug.error(err);\n throw err;\n }\n };\n\n static setWakuRestartCallback = (callback: () => void) => {\n WakuBroadcasterWakuCore.restartCallback = callback;\n };\n\n static reinitWaku = async (chain: Chain) => {\n if (\n isDefined(WakuBroadcasterWakuCore.waku) &&\n WakuBroadcasterWakuCore.waku.isStarted()\n ) {\n // Reset fees, which will reset status to \"Searching\".\n await WakuBroadcasterWakuCore.disconnect();\n }\n BroadcasterDebug.log(\n `Reinit Waku, ${++WakuBroadcasterWakuCore.restartCount}`,\n );\n await WakuBroadcasterWakuCore.initWaku(chain);\n if (WakuBroadcasterWakuCore.restartCallback) {\n WakuBroadcasterWakuCore.restartCallback();\n }\n };\n\n static setBroadcasterOptions(broadcasterOptions: BroadcasterOptions) {\n if (isDefined(broadcasterOptions.pubSubTopic)) {\n WakuBroadcasterWakuCore.pubSubTopic = broadcasterOptions.pubSubTopic;\n }\n if (broadcasterOptions.additionalDirectPeers) {\n WakuBroadcasterWakuCore.additionalDirectPeers =\n broadcasterOptions.additionalDirectPeers;\n }\n if (isDefined(broadcasterOptions.peerDiscoveryTimeout)) {\n WakuBroadcasterWakuCore.peerDiscoveryTimeout =\n broadcasterOptions.peerDiscoveryTimeout;\n }\n }\n\n static disconnect = async () => {\n await WakuBroadcasterWakuCore.waku?.stop();\n WakuBroadcasterWakuCore.waku = undefined;\n };\n\n private static connect = async (): Promise<void> => {\n try {\n WakuBroadcasterWakuCore.hasError = false;\n\n BroadcasterDebug.log(`Creating waku broadcast client`);\n\n const bootstrapPeers: string[] = [\n ...WAKU_RAILGUN_DEFAULT_PEERS_NODE,\n ...this.additionalDirectPeers,\n ];\n const waku: RelayNode = await createRelayNode({\n networkConfig: WAKU_RAILGUN_DEFAULT_SHARDS,\n bootstrapPeers,\n libp2p: {\n transports: [tcp()],\n },\n });\n\n BroadcasterDebug.log('Start Waku.');\n await waku.start();\n\n BroadcasterDebug.log('Waiting for remote peer.');\n await this.waitForRemotePeer(waku);\n\n if (!isDefined(waku.relay)) {\n throw new Error('No Waku relay instantiated.');\n }\n\n BroadcasterDebug.log('Waku peers:');\n for (const peer of waku.libp2p.getPeers()) {\n BroadcasterDebug.log(JSON.stringify(peer));\n }\n\n BroadcasterDebug.log('Connected to Waku');\n WakuBroadcasterWakuCore.waku = waku;\n WakuBroadcasterWakuCore.hasError = false;\n } catch (err) {\n if (!(err instanceof Error)) {\n throw err;\n }\n WakuBroadcasterWakuCore.hasError = true;\n throw err;\n }\n };\n\n static getMeshPeerCount(): number {\n return this.getPubSubPeerCount();\n }\n\n static getPubSubPeerCount(): number {\n const peers = this.waku?.libp2p.getPeers() ?? [];\n return peers.length;\n }\n\n static async getLightPushPeerCount(): Promise<number> {\n return 0;\n }\n\n static async getFilterPeerCount(): Promise<number> {\n return 0;\n }\n\n private static async waitForRemotePeer(waku: RelayNode): Promise<void> {\n try {\n const protocols = [Protocols.Relay];\n await promiseTimeout(\n waku.waitForPeers(protocols),\n WakuBroadcasterWakuCore.peerDiscoveryTimeout,\n );\n } catch (err) {\n if (!(err instanceof Error)) {\n throw err;\n }\n BroadcasterDebug.error(err);\n throw new Error(err.message);\n }\n }\n\n static async broadcastMessage(\n data: object,\n contentTopic: string,\n ): Promise<void> {\n const dataString = JSON.stringify(data);\n const payload = utf8ToBytes(dataString);\n const message: IMessage = { payload };\n try {\n const encoder = createEncoder({\n contentTopic,\n pubsubTopicShardInfo: this.defaultShard,\n });\n await WakuBroadcasterWakuCore.waku?.relay.send(encoder, message);\n } catch (err) {\n if (!(err instanceof Error)) {\n throw err;\n }\n BroadcasterDebug.error(err);\n }\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@railgun-community/waku-broadcaster-client-node",
3
- "version": "8.2.1",
3
+ "version": "8.2.3",
4
4
  "license": "MIT",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
@@ -24,8 +24,7 @@
24
24
  "postinstall": "patch-package"
25
25
  },
26
26
  "dependencies": {
27
- "@libp2p/bootstrap": "^10.1.2",
28
- "@libp2p/tcp": "10.0.7",
27
+ "@libp2p/tcp": "9.1.5",
29
28
  "@waku/relay": "0.0.16",
30
29
  "@waku/core": "0.0.33",
31
30
  "@waku/interfaces": "0.0.28",
@@ -33,12 +32,12 @@
33
32
  "@multiformats/multiaddr": "12.3.1"
34
33
  },
35
34
  "peerDependencies": {
36
- "@railgun-community/shared-models": "7.5.0",
37
- "@railgun-community/wallet": "10.3.0"
35
+ "@railgun-community/shared-models": "^7.5.0",
36
+ "@railgun-community/wallet": "^10.3.1"
38
37
  },
39
38
  "devDependencies": {
40
- "@railgun-community/shared-models": "7.5.0",
41
- "@railgun-community/wallet": "10.3.0",
39
+ "@railgun-community/shared-models": "^7.5.0",
40
+ "@railgun-community/wallet": "^10.3.1",
42
41
  "@types/chai": "^4.3.5",
43
42
  "@types/chai-as-promised": "^7.1.5",
44
43
  "@types/leveldown": "^4.0.3",