openreplay/frontend/app/player/web/messages/JSONRawMessageReader.ts
Андрей Бабушкин b822b1c067 applied eslint
2025-02-26 20:31:01 +01:00

35 lines
1,001 B
TypeScript

import type { RawMessage } from './raw.gen';
import type { TrackerMessage } from './tracker.gen';
import translate from './tracker.gen';
import { TP_MAP } from './tracker-legacy.gen';
import rewriteMessage from './rewriter/rewriteMessage';
function legacyTranslate(msg: any): RawMessage | null {
const type = TP_MAP[msg._id as keyof typeof TP_MAP];
if (!type) { // msg._id can be other than keyof TP_MAP, in fact
return null;
}
msg.tp = type;
delete msg._id;
return msg as RawMessage;
}
export default class JSONRawMessageReader {
constructor(private messages: TrackerMessage[] = []) {}
append(messages: TrackerMessage[]) {
this.messages = this.messages.concat(messages);
}
readMessage(): RawMessage | null {
const msg = this.messages.shift();
if (!msg) { return null; }
const rawMsg = Array.isArray(msg)
? translate(msg)
: legacyTranslate(msg);
if (!rawMsg) {
return this.readMessage();
}
return rewriteMessage(rawMsg);
}
}