scriptcat-mv3/packages/message/mock_message.ts
王一之 fd2aba4286
Some checks failed
test / Run tests (push) Failing after 6s
build / Build (push) Failing after 9s
test
2025-03-19 18:05:54 +08:00

62 lines
1.5 KiB
TypeScript

import EventEmitter from "eventemitter3";
import { Message, MessageConnect, MessageSend } from "./server";
export class MockMessageConnect implements MessageConnect {
constructor(protected EE: EventEmitter) {}
onMessage(callback: (data: any) => void): void {
this.EE.on("message", (data: any) => {
callback(data);
});
}
sendMessage(data: any): void {
this.EE.emit("message", data);
}
disconnect(): void {
this.EE.emit("disconnect");
}
onDisconnect(callback: () => void): void {
this.EE.on("disconnect", callback);
}
}
export class MockMessageSend implements MessageSend {
constructor(
protected EE: EventEmitter,
) {}
connect(data: any): Promise<MessageConnect> {
return new Promise((resolve) => {
const EE = new EventEmitter();
const con = new MockMessageConnect(EE);
this.EE.emit("connect", data, con);
resolve(con);
});
}
sendMessage(data: any): Promise<any> {
return new Promise((resolve) => {
this.EE.emit("message", data, (resp: any) => {
resolve(resp);
});
});
}
}
export class MockMessage extends MockMessageSend implements Message {
onConnect(callback: (data: any, con: MessageConnect) => void): void {
this.EE.on("connect", (data: any, con: MessageConnect) => {
callback(data, con);
});
}
onMessage(callback: (data: any, sendResponse: (data: any) => void) => void): void {
this.EE.on("message", (data: any, sendResponse: (data: any) => void) => {
callback(data, sendResponse);
});
}
}