js-waku/packages/relay/src/message_validator.ts
Danish Arora 87717981eb
chore: upgrade libp2p and related deps (#1482)
* chore: update noise

* update: package.lock

* update: @chainsafe/libp2p-gossipsub

* rm unwanted libp2p interface deps & bump up libp2p

* refactor code for new deps

* update: new package.lock

* setup prettier, refactor eslint  and rm trailing commas

* update package.lock

* fix build

* import type for interface

* fix imports for merge

* update typedoc exports

* add: CustomEvent import

* use new libp2p interface

* add aegir as dev dep for tests
2023-08-16 20:18:13 +05:30

36 lines
1019 B
TypeScript

import type { PeerId } from "@libp2p/interface/peer-id";
import type { Message } from "@libp2p/interface/pubsub";
import { TopicValidatorResult } from "@libp2p/interface/pubsub";
import { proto_message as proto } from "@waku/proto";
import debug from "debug";
const log = debug("waku:relay");
export function messageValidator(
peer: PeerId,
message: Message
): TopicValidatorResult {
const startTime = performance.now();
log(`validating message from ${peer} received on ${message.topic}`);
let result = TopicValidatorResult.Accept;
try {
const protoMessage = proto.WakuMessage.decode(message.data);
if (
!protoMessage.contentTopic ||
!protoMessage.contentTopic.length ||
!protoMessage.payload ||
!protoMessage.payload.length
) {
result = TopicValidatorResult.Reject;
}
} catch (e) {
result = TopicValidatorResult.Reject;
}
const endTime = performance.now();
log(`Validation time (must be <100ms): ${endTime - startTime}ms`);
return result;
}