mirror of
https://github.com/logos-messaging/js-waku.git
synced 2026-01-14 03:33:11 +00:00
* 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
36 lines
1019 B
TypeScript
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;
|
|
}
|