Merge pull request #270 from status-im/200-pubsub-topic

Moved `DefaultPubSubTopic` to `waku.ts` and fixed the casing
This commit is contained in:
Franck Royer 2021-08-20 10:36:40 +10:00 committed by GitHub
commit c2109736d4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
18 changed files with 105 additions and 110 deletions

View File

@ -17,6 +17,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
refers to low latency network connections. refers to low latency network connections.
- Examples (eth-pm): Use sign typed data EIP-712 instead of personal sign. - Examples (eth-pm): Use sign typed data EIP-712 instead of personal sign.
- Upgraded dependencies to remove warning at installation. - Upgraded dependencies to remove warning at installation.
- **Breaking**: Moved `DefaultPubSubTopic` to `waku.ts` and fixed the casing.
- **Breaking**: Rename all `pubsubTopic` occurrences to `pubSubTopic`, across all interfaces.
### Removed ### Removed
- Examples (cli-chat): The focus of this library is Web environment; - Examples (cli-chat): The focus of this library is Web environment;

View File

@ -5,7 +5,6 @@
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "eth-pm",
"version": "0.1.0", "version": "0.1.0",
"dependencies": { "dependencies": {
"@material-ui/core": "^4.11.4", "@material-ui/core": "^4.11.4",

View File

@ -5,7 +5,7 @@ package waku.v2;
import "waku/v2/message.proto"; import "waku/v2/message.proto";
message PushRequest { message PushRequest {
string pubsub_topic = 1; string pub_sub_topic = 1;
WakuMessage message = 2; WakuMessage message = 2;
} }

View File

@ -25,7 +25,7 @@ message ContentFilter {
} }
message HistoryQuery { message HistoryQuery {
optional string pubsub_topic = 2; optional string pub_sub_topic = 2;
repeated ContentFilter content_filters = 3; repeated ContentFilter content_filters = 3;
optional PagingInfo paging_info = 4; optional PagingInfo paging_info = 4;
optional double start_time = 5; optional double start_time = 5;

View File

@ -2,7 +2,7 @@ export { getBootstrapNodes } from './lib/discovery';
export * as utils from './lib/utils'; export * as utils from './lib/utils';
export { Waku } from './lib/waku'; export { Waku, DefaultPubSubTopic } from './lib/waku';
export { WakuMessage } from './lib/waku_message'; export { WakuMessage } from './lib/waku_message';

View File

@ -29,11 +29,16 @@ const websocketsTransportKey = Websockets.prototype[Symbol.toStringTag];
export const DefaultPingKeepAliveValueSecs = 0; export const DefaultPingKeepAliveValueSecs = 0;
export const DefaultRelayKeepAliveValueSecs = 5 * 60; export const DefaultRelayKeepAliveValueSecs = 5 * 60;
/**
* DefaultPubSubTopic is the default gossipsub topic to use for Waku.
*/
export const DefaultPubSubTopic = '/waku/2/default-waku/proto';
const dbg = debug('waku:waku'); const dbg = debug('waku:waku');
export interface CreateOptions { export interface CreateOptions {
/** /**
* The PubSub Topic to use. Defaults to {@link DefaultPubsubTopic}. * The PubSub Topic to use. Defaults to {@link DefaultPubSubTopic}.
* *
* One and only one pubsub topic is used by Waku. This is used by: * One and only one pubsub topic is used by Waku. This is used by:
* - WakuRelay to receive, route and send messages, * - WakuRelay to receive, route and send messages,
@ -43,9 +48,9 @@ export interface CreateOptions {
* The usage of the default pubsub topic is recommended. * The usage of the default pubsub topic is recommended.
* See [Waku v2 Topic Usage Recommendations](https://rfc.vac.dev/spec/23/) for details. * See [Waku v2 Topic Usage Recommendations](https://rfc.vac.dev/spec/23/) for details.
* *
* @default {@link DefaultPubsubTopic} * @default {@link DefaultPubSubTopic}
*/ */
pubsubTopic?: string; pubSubTopic?: string;
/** /**
* Set keep alive frequency in seconds: Waku will send a `/ipfs/ping/1.0.0` * Set keep alive frequency in seconds: Waku will send a `/ipfs/ping/1.0.0`
* request to each peer after the set number of seconds. Set to 0 to disable. * request to each peer after the set number of seconds. Set to 0 to disable.
@ -153,9 +158,9 @@ export class Waku {
); );
// Pass pubsub topic to relay // Pass pubsub topic to relay
if (options?.pubsubTopic) { if (options?.pubSubTopic) {
libp2pOpts.config.pubsub = Object.assign( libp2pOpts.config.pubsub = Object.assign(
{ pubsubTopic: options.pubsubTopic }, { pubSubTopic: options.pubSubTopic },
libp2pOpts.config.pubsub libp2pOpts.config.pubsub
); );
} }
@ -217,7 +222,7 @@ export class Waku {
const libp2p = await Libp2p.create(libp2pOpts); const libp2p = await Libp2p.create(libp2pOpts);
const wakuStore = new WakuStore(libp2p, { const wakuStore = new WakuStore(libp2p, {
pubsubTopic: options?.pubsubTopic, pubSubTopic: options?.pubSubTopic,
}); });
const wakuLightPush = new WakuLightPush(libp2p); const wakuLightPush = new WakuLightPush(libp2p);

View File

@ -66,7 +66,7 @@ describe('Waku Light Push', () => {
await nimWaku.start({ lightpush: true, topics: customPubSubTopic }); await nimWaku.start({ lightpush: true, topics: customPubSubTopic });
waku = await Waku.create({ waku = await Waku.create({
pubsubTopic: customPubSubTopic, pubSubTopic: customPubSubTopic,
staticNoiseKey: NOISE_KEY_1, staticNoiseKey: NOISE_KEY_1,
libp2p: { modules: { transport: [TCP] } }, libp2p: { modules: { transport: [TCP] } },
}); });

View File

@ -7,8 +7,8 @@ import PeerId from 'peer-id';
import { PushResponse } from '../../proto/waku/v2/light_push'; import { PushResponse } from '../../proto/waku/v2/light_push';
import { getPeersForProtocol, selectRandomPeer } from '../select_peer'; import { getPeersForProtocol, selectRandomPeer } from '../select_peer';
import { DefaultPubSubTopic } from '../waku';
import { WakuMessage } from '../waku_message'; import { WakuMessage } from '../waku_message';
import { DefaultPubsubTopic } from '../waku_relay';
import { PushRPC } from './push_rpc'; import { PushRPC } from './push_rpc';
@ -17,32 +17,32 @@ export { PushResponse };
export interface CreateOptions { export interface CreateOptions {
/** /**
* The PubSub Topic to use. Defaults to {@link DefaultPubsubTopic}. * The PubSub Topic to use. Defaults to {@link DefaultPubSubTopic}.
* *
* The usage of the default pubsub topic is recommended. * The usage of the default pubsub topic is recommended.
* See [Waku v2 Topic Usage Recommendations](https://rfc.vac.dev/spec/23/) for details. * See [Waku v2 Topic Usage Recommendations](https://rfc.vac.dev/spec/23/) for details.
* *
* @default {@link DefaultPubsubTopic} * @default {@link DefaultPubSubTopic}
*/ */
pubsubTopic?: string; pubSubTopic?: string;
} }
export interface PushOptions { export interface PushOptions {
peerId?: PeerId; peerId?: PeerId;
pubsubTopic?: string; pubSubTopic?: string;
} }
/** /**
* Implements the [Waku v2 Light Push protocol](https://rfc.vac.dev/spec/19/). * Implements the [Waku v2 Light Push protocol](https://rfc.vac.dev/spec/19/).
*/ */
export class WakuLightPush { export class WakuLightPush {
pubsubTopic: string; pubSubTopic: string;
constructor(public libp2p: Libp2p, options?: CreateOptions) { constructor(public libp2p: Libp2p, options?: CreateOptions) {
if (options?.pubsubTopic) { if (options?.pubSubTopic) {
this.pubsubTopic = options.pubsubTopic; this.pubSubTopic = options.pubSubTopic;
} else { } else {
this.pubsubTopic = DefaultPubsubTopic; this.pubSubTopic = DefaultPubSubTopic;
} }
} }
@ -66,10 +66,10 @@ export class WakuLightPush {
const { stream } = await connection.newStream(LightPushCodec); const { stream } = await connection.newStream(LightPushCodec);
try { try {
const pubsubTopic = opts?.pubsubTopic const pubSubTopic = opts?.pubSubTopic
? opts.pubsubTopic ? opts.pubSubTopic
: this.pubsubTopic; : this.pubSubTopic;
const query = PushRPC.createRequest(message, pubsubTopic); const query = PushRPC.createRequest(message, pubSubTopic);
const res = await pipe( const res = await pipe(
[query.encode()], [query.encode()],
lp.encode(), lp.encode(),

View File

@ -3,20 +3,16 @@ import { v4 as uuid } from 'uuid';
import * as proto from '../../proto/waku/v2/light_push'; import * as proto from '../../proto/waku/v2/light_push';
import { WakuMessage } from '../waku_message'; import { WakuMessage } from '../waku_message';
import { DefaultPubsubTopic } from '../waku_relay';
export class PushRPC { export class PushRPC {
public constructor(public proto: proto.PushRPC) {} public constructor(public proto: proto.PushRPC) {}
static createRequest( static createRequest(message: WakuMessage, pubSubTopic: string): PushRPC {
message: WakuMessage,
pubsubTopic: string = DefaultPubsubTopic
): PushRPC {
return new PushRPC({ return new PushRPC({
requestId: uuid(), requestId: uuid(),
request: { request: {
message: message.proto, message: message.proto,
pubsubTopic, pubSubTopic: pubSubTopic,
}, },
response: undefined, response: undefined,
}); });

View File

@ -9,11 +9,6 @@ export const RelayCodecs = [
'/vac/waku/relay/2.0.0', '/vac/waku/relay/2.0.0',
]; ];
/**
* DefaultPubsubTopic is the default gossipsub topic to use for Waku.
*/
export const DefaultPubsubTopic = '/waku/2/default-waku/proto';
export const RelayPingContentTopic = '/relay-ping/1/ping/null'; export const RelayPingContentTopic = '/relay-ping/1/ping/null';
/** /**

View File

@ -11,11 +11,9 @@ import {
NOISE_KEY_2, NOISE_KEY_2,
} from '../../test_utils'; } from '../../test_utils';
import { delay } from '../delay'; import { delay } from '../delay';
import { Waku } from '../waku'; import { DefaultPubSubTopic, Waku } from '../waku';
import { WakuMessage } from '../waku_message'; import { WakuMessage } from '../waku_message';
import { DefaultPubsubTopic } from './index';
const log = debug('waku:test'); const log = debug('waku:test');
const TestContentTopic = '/test/1/waku-relay/utf8'; const TestContentTopic = '/test/1/waku-relay/utf8';
@ -63,9 +61,9 @@ describe('Waku Relay', () => {
it('Subscribe', async function () { it('Subscribe', async function () {
const subscribers1 = const subscribers1 =
waku1.libp2p.pubsub.getSubscribers(DefaultPubsubTopic); waku1.libp2p.pubsub.getSubscribers(DefaultPubSubTopic);
const subscribers2 = const subscribers2 =
waku2.libp2p.pubsub.getSubscribers(DefaultPubsubTopic); waku2.libp2p.pubsub.getSubscribers(DefaultPubSubTopic);
expect(subscribers1).to.contain(waku2.libp2p.peerId.toB58String()); expect(subscribers1).to.contain(waku2.libp2p.peerId.toB58String());
expect(subscribers2).to.contain(waku1.libp2p.peerId.toB58String()); expect(subscribers2).to.contain(waku1.libp2p.peerId.toB58String());
@ -180,16 +178,16 @@ describe('Waku Relay', () => {
it('Publish', async function () { it('Publish', async function () {
this.timeout(10000); this.timeout(10000);
const pubsubTopic = '/some/pubsub/topic'; const pubSubTopic = '/some/pubsub/topic';
// 1 and 2 uses a custom pubsub // 1 and 2 uses a custom pubsub
const [waku1, waku2, waku3] = await Promise.all([ const [waku1, waku2, waku3] = await Promise.all([
Waku.create({ Waku.create({
pubsubTopic, pubSubTopic: pubSubTopic,
staticNoiseKey: NOISE_KEY_1, staticNoiseKey: NOISE_KEY_1,
}), }),
Waku.create({ Waku.create({
pubsubTopic, pubSubTopic: pubSubTopic,
staticNoiseKey: NOISE_KEY_2, staticNoiseKey: NOISE_KEY_2,
libp2p: { addresses: { listen: ['/ip4/0.0.0.0/tcp/0/ws'] } }, libp2p: { addresses: { listen: ['/ip4/0.0.0.0/tcp/0/ws'] } },
}), }),
@ -282,7 +280,7 @@ describe('Waku Relay', () => {
it('nim subscribes to js', async function () { it('nim subscribes to js', async function () {
const nimPeerId = await nimWaku.getPeerId(); const nimPeerId = await nimWaku.getPeerId();
const subscribers = const subscribers =
waku.libp2p.pubsub.getSubscribers(DefaultPubsubTopic); waku.libp2p.pubsub.getSubscribers(DefaultPubSubTopic);
expect(subscribers).to.contain(nimPeerId.toB58String()); expect(subscribers).to.contain(nimPeerId.toB58String());
}); });
@ -371,7 +369,7 @@ describe('Waku Relay', () => {
while (subscribers.length === 0) { while (subscribers.length === 0) {
await delay(200); await delay(200);
subscribers = waku.libp2p.pubsub.getSubscribers(DefaultPubsubTopic); subscribers = waku.libp2p.pubsub.getSubscribers(DefaultPubSubTopic);
} }
const nimPeerId = await nimWaku.getPeerId(); const nimPeerId = await nimWaku.getPeerId();

View File

@ -17,17 +17,17 @@ import { InMessage } from 'libp2p-interfaces/src/pubsub';
import { SignaturePolicy } from 'libp2p-interfaces/src/pubsub/signature-policy'; import { SignaturePolicy } from 'libp2p-interfaces/src/pubsub/signature-policy';
import PeerId from 'peer-id'; import PeerId from 'peer-id';
import { CreateOptions } from '../waku'; import { CreateOptions, DefaultPubSubTopic } from '../waku';
import { WakuMessage } from '../waku_message'; import { WakuMessage } from '../waku_message';
import * as constants from './constants'; import * as constants from './constants';
import { DefaultPubsubTopic, RelayCodecs } from './constants'; import { RelayCodecs } from './constants';
import { getRelayPeers } from './get_relay_peers'; import { getRelayPeers } from './get_relay_peers';
import { RelayHeartbeat } from './relay_heartbeat'; import { RelayHeartbeat } from './relay_heartbeat';
const dbg = debug('waku:relay'); const dbg = debug('waku:relay');
export { RelayCodecs, DefaultPubsubTopic }; export { RelayCodecs };
/** /**
* See constructor libp2p-gossipsub [API](https://github.com/ChainSafe/js-libp2p-gossipsub#api). * See constructor libp2p-gossipsub [API](https://github.com/ChainSafe/js-libp2p-gossipsub#api).
@ -62,7 +62,7 @@ export interface GossipOptions {
*/ */
export class WakuRelay extends Gossipsub { export class WakuRelay extends Gossipsub {
heartbeat: RelayHeartbeat; heartbeat: RelayHeartbeat;
pubsubTopic: string; pubSubTopic: string;
/** /**
* Decryption private keys to use to attempt decryption of incoming messages. * Decryption private keys to use to attempt decryption of incoming messages.
@ -97,7 +97,7 @@ export class WakuRelay extends Gossipsub {
Object.assign(this, { multicodecs }); Object.assign(this, { multicodecs });
this.pubsubTopic = options?.pubsubTopic || constants.DefaultPubsubTopic; this.pubSubTopic = options?.pubSubTopic || DefaultPubSubTopic;
} }
/** /**
@ -109,7 +109,7 @@ export class WakuRelay extends Gossipsub {
*/ */
public start(): void { public start(): void {
super.start(); super.start();
this.subscribe(this.pubsubTopic); this.subscribe(this.pubSubTopic);
} }
/** /**
@ -120,7 +120,7 @@ export class WakuRelay extends Gossipsub {
*/ */
public async send(message: WakuMessage): Promise<void> { public async send(message: WakuMessage): Promise<void> {
const msg = message.encode(); const msg = message.encode();
await super.publish(this.pubsubTopic, Buffer.from(msg)); await super.publish(this.pubSubTopic, Buffer.from(msg));
} }
/** /**
@ -194,7 +194,7 @@ export class WakuRelay extends Gossipsub {
* Return the relay peers we are connected to and we would publish a message to * Return the relay peers we are connected to and we would publish a message to
*/ */
getPeers(): Set<string> { getPeers(): Set<string> {
return getRelayPeers(this, this.pubsubTopic, this._options.D, (id) => { return getRelayPeers(this, this.pubSubTopic, this._options.D, (id) => {
// Filter peers we would not publish to // Filter peers we would not publish to
return ( return (
this.score.score(id) >= this._options.scoreThresholds.publishThreshold this.score.score(id) >= this._options.scoreThresholds.publishThreshold
@ -207,9 +207,9 @@ export class WakuRelay extends Gossipsub {
* *
* @override * @override
*/ */
subscribe(pubsubTopic: string): void { subscribe(pubSubTopic: string): void {
this.on(pubsubTopic, (event) => { this.on(pubSubTopic, (event) => {
dbg(`Message received on ${pubsubTopic}`); dbg(`Message received on ${pubSubTopic}`);
WakuMessage.decode(event.data, Array.from(this.decryptionKeys)) WakuMessage.decode(event.data, Array.from(this.decryptionKeys))
.then((wakuMsg) => { .then((wakuMsg) => {
if (!wakuMsg) { if (!wakuMsg) {
@ -235,7 +235,7 @@ export class WakuRelay extends Gossipsub {
}); });
}); });
super.subscribe(pubsubTopic); super.subscribe(pubSubTopic);
} }
/** /**
@ -250,7 +250,7 @@ export class WakuRelay extends Gossipsub {
*/ */
join(topic: string): void { join(topic: string): void {
if (!this.started) { if (!this.started) {
throw new Error('WakuRelayPubsub has not started'); throw new Error('WakuRelayPubSub has not started');
} }
const fanoutPeers = this.fanout.get(topic); const fanoutPeers = this.fanout.get(topic);

View File

@ -11,7 +11,7 @@ export enum Direction {
export interface Params { export interface Params {
contentTopics: string[]; contentTopics: string[];
cursor?: proto.Index; cursor?: proto.Index;
pubsubTopic: string; pubSubTopic: string;
direction: Direction; direction: Direction;
pageSize: number; pageSize: number;
} }
@ -37,7 +37,7 @@ export class HistoryRPC {
return new HistoryRPC({ return new HistoryRPC({
requestId: uuid(), requestId: uuid(),
query: { query: {
pubsubTopic: params.pubsubTopic, pubSubTopic: params.pubSubTopic,
contentFilters, contentFilters,
pagingInfo, pagingInfo,
startTime: undefined, startTime: undefined,

View File

@ -120,7 +120,7 @@ describe('Waku Store', () => {
} }
waku = await Waku.create({ waku = await Waku.create({
pubsubTopic: customPubSubTopic, pubSubTopic: customPubSubTopic,
staticNoiseKey: NOISE_KEY_1, staticNoiseKey: NOISE_KEY_1,
libp2p: { modules: { transport: [TCP] } }, libp2p: { modules: { transport: [TCP] } },
}); });

View File

@ -8,8 +8,8 @@ import PeerId from 'peer-id';
import { HistoryResponse_Error } from '../../proto/waku/v2/store'; import { HistoryResponse_Error } from '../../proto/waku/v2/store';
import { getPeersForProtocol, selectRandomPeer } from '../select_peer'; import { getPeersForProtocol, selectRandomPeer } from '../select_peer';
import { DefaultPubSubTopic } from '../waku';
import { WakuMessage } from '../waku_message'; import { WakuMessage } from '../waku_message';
import { DefaultPubsubTopic } from '../waku_relay';
import { Direction, HistoryRPC } from './history_rpc'; import { Direction, HistoryRPC } from './history_rpc';
@ -21,19 +21,19 @@ export { Direction };
export interface CreateOptions { export interface CreateOptions {
/** /**
* The PubSub Topic to use. Defaults to {@link DefaultPubsubTopic}. * The PubSub Topic to use. Defaults to {@link DefaultPubSubTopic}.
* *
* The usage of the default pubsub topic is recommended. * The usage of the default pubsub topic is recommended.
* See [Waku v2 Topic Usage Recommendations](https://rfc.vac.dev/spec/23/) for details. * See [Waku v2 Topic Usage Recommendations](https://rfc.vac.dev/spec/23/) for details.
* *
* @default {@link DefaultPubsubTopic} * @default {@link DefaultPubSubTopic}
*/ */
pubsubTopic?: string; pubSubTopic?: string;
} }
export interface QueryOptions { export interface QueryOptions {
peerId?: PeerId; peerId?: PeerId;
pubsubTopic?: string; pubSubTopic?: string;
direction?: Direction; direction?: Direction;
pageSize?: number; pageSize?: number;
callback?: (messages: WakuMessage[]) => void; callback?: (messages: WakuMessage[]) => void;
@ -44,13 +44,13 @@ export interface QueryOptions {
* Implements the [Waku v2 Store protocol](https://rfc.vac.dev/spec/13/). * Implements the [Waku v2 Store protocol](https://rfc.vac.dev/spec/13/).
*/ */
export class WakuStore { export class WakuStore {
pubsubTopic: string; pubSubTopic: string;
constructor(public libp2p: Libp2p, options?: CreateOptions) { constructor(public libp2p: Libp2p, options?: CreateOptions) {
if (options?.pubsubTopic) { if (options?.pubSubTopic) {
this.pubsubTopic = options.pubsubTopic; this.pubSubTopic = options.pubSubTopic;
} else { } else {
this.pubsubTopic = DefaultPubsubTopic; this.pubSubTopic = DefaultPubSubTopic;
} }
} }
@ -61,7 +61,7 @@ export class WakuStore {
* retrieve all messages. * retrieve all messages.
* @param options * @param options
* @param options.peerId The peer to query.Options * @param options.peerId The peer to query.Options
* @param options.pubsubTopic The pubsub topic to pass to the query. Defaults * @param options.pubSubTopic The pubsub topic to pass to the query. Defaults
* to the value set at creation. See [Waku v2 Topic Usage Recommendations](https://rfc.vac.dev/spec/23/). * to the value set at creation. See [Waku v2 Topic Usage Recommendations](https://rfc.vac.dev/spec/23/).
* @param options.callback Callback called on page of stored messages as they are retrieved * @param options.callback Callback called on page of stored messages as they are retrieved
* @param options.decryptionKeys Keys that will be used to decrypt messages. * @param options.decryptionKeys Keys that will be used to decrypt messages.
@ -75,7 +75,7 @@ export class WakuStore {
): Promise<WakuMessage[]> { ): Promise<WakuMessage[]> {
const opts = Object.assign( const opts = Object.assign(
{ {
pubsubTopic: this.pubsubTopic, pubSubTopic: this.pubSubTopic,
direction: Direction.BACKWARD, direction: Direction.BACKWARD,
pageSize: 10, pageSize: 10,
}, },
@ -131,7 +131,7 @@ export class WakuStore {
} }
dbg( dbg(
`${response.messages.length} messages retrieved for pubsub topic ${opts.pubsubTopic}` `${response.messages.length} messages retrieved for pubsub topic ${opts.pubSubTopic}`
); );
const pageMessages: WakuMessage[] = []; const pageMessages: WakuMessage[] = [];

View File

@ -6,7 +6,7 @@ import { WakuMessage } from '../../waku/v2/message';
export const protobufPackage = 'waku.v2'; export const protobufPackage = 'waku.v2';
export interface PushRequest { export interface PushRequest {
pubsubTopic: string; pubSubTopic: string;
message: WakuMessage | undefined; message: WakuMessage | undefined;
} }
@ -21,15 +21,15 @@ export interface PushRPC {
response: PushResponse | undefined; response: PushResponse | undefined;
} }
const basePushRequest: object = { pubsubTopic: '' }; const basePushRequest: object = { pubSubTopic: '' };
export const PushRequest = { export const PushRequest = {
encode( encode(
message: PushRequest, message: PushRequest,
writer: _m0.Writer = _m0.Writer.create() writer: _m0.Writer = _m0.Writer.create()
): _m0.Writer { ): _m0.Writer {
if (message.pubsubTopic !== '') { if (message.pubSubTopic !== '') {
writer.uint32(10).string(message.pubsubTopic); writer.uint32(10).string(message.pubSubTopic);
} }
if (message.message !== undefined) { if (message.message !== undefined) {
WakuMessage.encode(message.message, writer.uint32(18).fork()).ldelim(); WakuMessage.encode(message.message, writer.uint32(18).fork()).ldelim();
@ -45,7 +45,7 @@ export const PushRequest = {
const tag = reader.uint32(); const tag = reader.uint32();
switch (tag >>> 3) { switch (tag >>> 3) {
case 1: case 1:
message.pubsubTopic = reader.string(); message.pubSubTopic = reader.string();
break; break;
case 2: case 2:
message.message = WakuMessage.decode(reader, reader.uint32()); message.message = WakuMessage.decode(reader, reader.uint32());
@ -60,10 +60,10 @@ export const PushRequest = {
fromJSON(object: any): PushRequest { fromJSON(object: any): PushRequest {
const message = { ...basePushRequest } as PushRequest; const message = { ...basePushRequest } as PushRequest;
if (object.pubsubTopic !== undefined && object.pubsubTopic !== null) { if (object.pubSubTopic !== undefined && object.pubSubTopic !== null) {
message.pubsubTopic = String(object.pubsubTopic); message.pubSubTopic = String(object.pubSubTopic);
} else { } else {
message.pubsubTopic = ''; message.pubSubTopic = '';
} }
if (object.message !== undefined && object.message !== null) { if (object.message !== undefined && object.message !== null) {
message.message = WakuMessage.fromJSON(object.message); message.message = WakuMessage.fromJSON(object.message);
@ -75,8 +75,8 @@ export const PushRequest = {
toJSON(message: PushRequest): unknown { toJSON(message: PushRequest): unknown {
const obj: any = {}; const obj: any = {};
message.pubsubTopic !== undefined && message.pubSubTopic !== undefined &&
(obj.pubsubTopic = message.pubsubTopic); (obj.pubSubTopic = message.pubSubTopic);
message.message !== undefined && message.message !== undefined &&
(obj.message = message.message (obj.message = message.message
? WakuMessage.toJSON(message.message) ? WakuMessage.toJSON(message.message)
@ -86,10 +86,10 @@ export const PushRequest = {
fromPartial(object: DeepPartial<PushRequest>): PushRequest { fromPartial(object: DeepPartial<PushRequest>): PushRequest {
const message = { ...basePushRequest } as PushRequest; const message = { ...basePushRequest } as PushRequest;
if (object.pubsubTopic !== undefined && object.pubsubTopic !== null) { if (object.pubSubTopic !== undefined && object.pubSubTopic !== null) {
message.pubsubTopic = object.pubsubTopic; message.pubSubTopic = object.pubSubTopic;
} else { } else {
message.pubsubTopic = ''; message.pubSubTopic = '';
} }
if (object.message !== undefined && object.message !== null) { if (object.message !== undefined && object.message !== null) {
message.message = WakuMessage.fromPartial(object.message); message.message = WakuMessage.fromPartial(object.message);

View File

@ -58,7 +58,7 @@ export interface ContentFilter {
} }
export interface HistoryQuery { export interface HistoryQuery {
pubsubTopic?: string | undefined; pubSubTopic?: string | undefined;
contentFilters: ContentFilter[]; contentFilters: ContentFilter[];
pagingInfo?: PagingInfo | undefined; pagingInfo?: PagingInfo | undefined;
startTime?: number | undefined; startTime?: number | undefined;
@ -366,8 +366,8 @@ export const HistoryQuery = {
message: HistoryQuery, message: HistoryQuery,
writer: _m0.Writer = _m0.Writer.create() writer: _m0.Writer = _m0.Writer.create()
): _m0.Writer { ): _m0.Writer {
if (message.pubsubTopic !== undefined) { if (message.pubSubTopic !== undefined) {
writer.uint32(18).string(message.pubsubTopic); writer.uint32(18).string(message.pubSubTopic);
} }
for (const v of message.contentFilters) { for (const v of message.contentFilters) {
ContentFilter.encode(v!, writer.uint32(26).fork()).ldelim(); ContentFilter.encode(v!, writer.uint32(26).fork()).ldelim();
@ -393,7 +393,7 @@ export const HistoryQuery = {
const tag = reader.uint32(); const tag = reader.uint32();
switch (tag >>> 3) { switch (tag >>> 3) {
case 2: case 2:
message.pubsubTopic = reader.string(); message.pubSubTopic = reader.string();
break; break;
case 3: case 3:
message.contentFilters.push( message.contentFilters.push(
@ -420,10 +420,10 @@ export const HistoryQuery = {
fromJSON(object: any): HistoryQuery { fromJSON(object: any): HistoryQuery {
const message = { ...baseHistoryQuery } as HistoryQuery; const message = { ...baseHistoryQuery } as HistoryQuery;
message.contentFilters = []; message.contentFilters = [];
if (object.pubsubTopic !== undefined && object.pubsubTopic !== null) { if (object.pubSubTopic !== undefined && object.pubSubTopic !== null) {
message.pubsubTopic = String(object.pubsubTopic); message.pubSubTopic = String(object.pubSubTopic);
} else { } else {
message.pubsubTopic = undefined; message.pubSubTopic = undefined;
} }
if (object.contentFilters !== undefined && object.contentFilters !== null) { if (object.contentFilters !== undefined && object.contentFilters !== null) {
for (const e of object.contentFilters) { for (const e of object.contentFilters) {
@ -450,8 +450,8 @@ export const HistoryQuery = {
toJSON(message: HistoryQuery): unknown { toJSON(message: HistoryQuery): unknown {
const obj: any = {}; const obj: any = {};
message.pubsubTopic !== undefined && message.pubSubTopic !== undefined &&
(obj.pubsubTopic = message.pubsubTopic); (obj.pubSubTopic = message.pubSubTopic);
if (message.contentFilters) { if (message.contentFilters) {
obj.contentFilters = message.contentFilters.map((e) => obj.contentFilters = message.contentFilters.map((e) =>
e ? ContentFilter.toJSON(e) : undefined e ? ContentFilter.toJSON(e) : undefined
@ -471,10 +471,10 @@ export const HistoryQuery = {
fromPartial(object: DeepPartial<HistoryQuery>): HistoryQuery { fromPartial(object: DeepPartial<HistoryQuery>): HistoryQuery {
const message = { ...baseHistoryQuery } as HistoryQuery; const message = { ...baseHistoryQuery } as HistoryQuery;
message.contentFilters = []; message.contentFilters = [];
if (object.pubsubTopic !== undefined && object.pubsubTopic !== null) { if (object.pubSubTopic !== undefined && object.pubSubTopic !== null) {
message.pubsubTopic = object.pubsubTopic; message.pubSubTopic = object.pubSubTopic;
} else { } else {
message.pubsubTopic = undefined; message.pubSubTopic = undefined;
} }
if (object.contentFilters !== undefined && object.contentFilters !== null) { if (object.contentFilters !== undefined && object.contentFilters !== null) {
for (const e of object.contentFilters) { for (const e of object.contentFilters) {

View File

@ -13,8 +13,8 @@ import { Multiaddr, multiaddr } from 'multiaddr';
import PeerId from 'peer-id'; import PeerId from 'peer-id';
import { hexToBuf } from '../lib/utils'; import { hexToBuf } from '../lib/utils';
import { DefaultPubSubTopic } from '../lib/waku';
import { WakuMessage } from '../lib/waku_message'; import { WakuMessage } from '../lib/waku_message';
import { DefaultPubsubTopic } from '../lib/waku_relay';
import * as proto from '../proto/waku/v2/message'; import * as proto from '../proto/waku/v2/message';
import { existsAsync, mkdirAsync, openAsync } from './async_fs'; import { existsAsync, mkdirAsync, openAsync } from './async_fs';
@ -171,7 +171,7 @@ export class NimWaku {
async sendMessage( async sendMessage(
message: WakuMessage, message: WakuMessage,
pubsubTopic?: string pubSubTopic?: string
): Promise<boolean> { ): Promise<boolean> {
this.checkProcess(); this.checkProcess();
@ -195,7 +195,7 @@ export class NimWaku {
}; };
return this.rpcCall<boolean>('post_waku_v2_relay_v1_message', [ return this.rpcCall<boolean>('post_waku_v2_relay_v1_message', [
pubsubTopic ? pubsubTopic : DefaultPubsubTopic, pubSubTopic ? pubSubTopic : DefaultPubSubTopic,
rpcMessage, rpcMessage,
]); ]);
} }
@ -209,7 +209,7 @@ export class NimWaku {
const protoMsgs = await this.rpcCall<proto.WakuMessage[]>( const protoMsgs = await this.rpcCall<proto.WakuMessage[]>(
'get_waku_v2_relay_v1_messages', 'get_waku_v2_relay_v1_messages',
[DefaultPubsubTopic] [DefaultPubSubTopic]
); );
const msgs = await Promise.all( const msgs = await Promise.all(
@ -233,7 +233,7 @@ export class NimWaku {
async postAsymmetricMessage( async postAsymmetricMessage(
message: WakuRelayMessage, message: WakuRelayMessage,
publicKey: Uint8Array, publicKey: Uint8Array,
pubsubTopic?: string pubSubTopic?: string
): Promise<boolean> { ): Promise<boolean> {
this.checkProcess(); this.checkProcess();
@ -242,7 +242,7 @@ export class NimWaku {
} }
return this.rpcCall<boolean>('post_waku_v2_private_v1_asymmetric_message', [ return this.rpcCall<boolean>('post_waku_v2_private_v1_asymmetric_message', [
pubsubTopic ? pubsubTopic : DefaultPubsubTopic, pubSubTopic ? pubSubTopic : DefaultPubSubTopic,
message, message,
'0x' + bufToHex(publicKey), '0x' + bufToHex(publicKey),
]); ]);
@ -250,14 +250,14 @@ export class NimWaku {
async getAsymmetricMessages( async getAsymmetricMessages(
privateKey: Uint8Array, privateKey: Uint8Array,
pubsubTopic?: string pubSubTopic?: string
): Promise<WakuRelayMessage[]> { ): Promise<WakuRelayMessage[]> {
this.checkProcess(); this.checkProcess();
return await this.rpcCall<WakuRelayMessage[]>( return await this.rpcCall<WakuRelayMessage[]>(
'get_waku_v2_private_v1_asymmetric_messages', 'get_waku_v2_private_v1_asymmetric_messages',
[ [
pubsubTopic ? pubsubTopic : DefaultPubsubTopic, pubSubTopic ? pubSubTopic : DefaultPubSubTopic,
'0x' + bufToHex(privateKey), '0x' + bufToHex(privateKey),
] ]
); );
@ -275,7 +275,7 @@ export class NimWaku {
async postSymmetricMessage( async postSymmetricMessage(
message: WakuRelayMessage, message: WakuRelayMessage,
symKey: Uint8Array, symKey: Uint8Array,
pubsubTopic?: string pubSubTopic?: string
): Promise<boolean> { ): Promise<boolean> {
this.checkProcess(); this.checkProcess();
@ -284,7 +284,7 @@ export class NimWaku {
} }
return this.rpcCall<boolean>('post_waku_v2_private_v1_symmetric_message', [ return this.rpcCall<boolean>('post_waku_v2_private_v1_symmetric_message', [
pubsubTopic ? pubsubTopic : DefaultPubsubTopic, pubSubTopic ? pubSubTopic : DefaultPubSubTopic,
message, message,
'0x' + bufToHex(symKey), '0x' + bufToHex(symKey),
]); ]);
@ -292,13 +292,13 @@ export class NimWaku {
async getSymmetricMessages( async getSymmetricMessages(
symKey: Uint8Array, symKey: Uint8Array,
pubsubTopic?: string pubSubTopic?: string
): Promise<WakuRelayMessage[]> { ): Promise<WakuRelayMessage[]> {
this.checkProcess(); this.checkProcess();
return await this.rpcCall<WakuRelayMessage[]>( return await this.rpcCall<WakuRelayMessage[]>(
'get_waku_v2_private_v1_symmetric_messages', 'get_waku_v2_private_v1_symmetric_messages',
[pubsubTopic ? pubsubTopic : DefaultPubsubTopic, '0x' + bufToHex(symKey)] [pubSubTopic ? pubSubTopic : DefaultPubSubTopic, '0x' + bufToHex(symKey)]
); );
} }