diff --git a/frontend/app/player/web/messages/JSONRawMessageReader.ts b/frontend/app/player/web/messages/JSONRawMessageReader.ts index 04f622ecb..6a9cfb4f9 100644 --- a/frontend/app/player/web/messages/JSONRawMessageReader.ts +++ b/frontend/app/player/web/messages/JSONRawMessageReader.ts @@ -1,21 +1,9 @@ -import type { - RawMessage, - RawSetNodeAttributeURLBased, - RawSetNodeAttribute, - RawSetCssDataURLBased, - RawSetCssData, - RawCssInsertRuleURLBased, - RawCssInsertRule, - RawAdoptedSsInsertRuleURLBased, - RawAdoptedSsInsertRule, - RawAdoptedSsReplaceURLBased, - RawAdoptedSsReplace, -} from './raw.gen' +import type { RawMessage } from './raw.gen' import type { TrackerMessage } from './tracker.gen' import { MType } from './raw.gen' import translate from './tracker.gen' import { TP_MAP } from './tracker-legacy.gen' -import { resolveURL, resolveCSS } from './urlResolve' +import resolveURL from './urlBasedResolver' function legacyTranslate(msg: any): RawMessage | null { @@ -29,54 +17,6 @@ function legacyTranslate(msg: any): RawMessage | null { } -// TODO: commonURLBased logic for feilds -const resolvers = { - [MType.SetNodeAttributeURLBased]: (msg: RawSetNodeAttributeURLBased): RawSetNodeAttribute => - ({ - ...msg, - value: msg.name === 'src' || msg.name === 'href' - ? resolveURL(msg.baseURL, msg.value) - : (msg.name === 'style' - ? resolveCSS(msg.baseURL, msg.value) - : msg.value - ), - tp: MType.SetNodeAttribute, - }), - [MType.SetCssDataURLBased]: (msg: RawSetCssDataURLBased): RawSetCssData => - ({ - ...msg, - data: resolveCSS(msg.baseURL, msg.data), - tp: MType.SetCssData, - }), - [MType.CssInsertRuleURLBased]: (msg: RawCssInsertRuleURLBased): RawCssInsertRule => - ({ - ...msg, - rule: resolveCSS(msg.baseURL, msg.rule), - tp: MType.CssInsertRule, - }), - [MType.AdoptedSsInsertRuleURLBased]: (msg: RawAdoptedSsInsertRuleURLBased): RawAdoptedSsInsertRule => - ({ - ...msg, - rule: resolveCSS(msg.baseURL, msg.rule), - tp: MType.AdoptedSsInsertRule, - }), - [MType.AdoptedSsReplaceURLBased]: (msg: RawAdoptedSsReplaceURLBased): RawAdoptedSsReplace => - ({ - ...msg, - text: resolveCSS(msg.baseURL, msg.text), - tp: MType.AdoptedSsReplace, - }), -} as const - -type ResolvableType = keyof typeof resolvers -type ResolvableRawMessage = RawMessage & { tp: ResolvableType } - -function isResolvable(msg: RawMessage): msg is ResolvableRawMessage { - //@ts-ignore - return resolvers[msg.tp] !== undefined -} - - export default class JSONRawMessageReader { constructor(private messages: TrackerMessage[] = []){} append(messages: TrackerMessage[]) { @@ -91,11 +31,7 @@ export default class JSONRawMessageReader { if (!rawMsg) { return this.readMessage() } - if (isResolvable(rawMsg)) { - //@ts-ignore ??? too complex typscript... - return resolvers[rawMsg.tp](rawMsg) - } - return rawMsg + return resolveURL(rawMsg) } } diff --git a/frontend/app/player/web/messages/MFileReader.ts b/frontend/app/player/web/messages/MFileReader.ts index e6fad8c63..b91080b4f 100644 --- a/frontend/app/player/web/messages/MFileReader.ts +++ b/frontend/app/player/web/messages/MFileReader.ts @@ -3,6 +3,8 @@ import type { RawMessage } from './raw.gen'; import { MType } from './raw.gen'; import logger from 'App/logger'; import RawMessageReader from './RawMessageReader.gen'; +import resolveURL from './urlBasedResolver' + // TODO: composition instead of inheritance // needSkipMessage() and next() methods here use buf and p protected properties, @@ -77,7 +79,7 @@ export default class MFileReader extends RawMessageReader { } const index = this.getLastMessageID() - const msg = Object.assign(rMsg, { + const msg = Object.assign(resolveURL(rMsg), { time: this.currentTime, _index: index, }) diff --git a/frontend/app/player/web/messages/MStreamReader.ts b/frontend/app/player/web/messages/MStreamReader.ts index 6446112a3..a37e43c46 100644 --- a/frontend/app/player/web/messages/MStreamReader.ts +++ b/frontend/app/player/web/messages/MStreamReader.ts @@ -8,7 +8,7 @@ interface RawMessageReaderI { } export default class MStreamReader { - constructor(private readonly r: RawMessageReaderI = new RawMessageReader(), private startTs: number = 0){} + constructor(private readonly r: RawMessageReaderI, private startTs: number = 0){} private t: number = 0 private idx: number = 0