From 3a72e1d8b268a5a24c4a66ab6e9347c223b51b7b Mon Sep 17 00:00:00 2001 From: Alex Kaminskii Date: Fri, 2 Dec 2022 17:19:59 +0100 Subject: [PATCH] refactor(player;mobs):use enum message type; use .gen. filename for generated files --- frontend/app/player/web/MessageManager.ts | 85 ++++----- frontend/app/player/web/assist/types.ts | 8 + .../app/player/web/managers/DOM/DOMManager.ts | 52 +++--- .../app/player/web/managers/PagesManager.ts | 4 +- .../web/messages/JSONRawMessageReader.ts | 31 ++-- .../app/player/web/messages/MFileReader.ts | 9 +- .../app/player/web/messages/MStreamReader.ts | 9 +- ...ssageReader.ts => RawMessageReader.gen.ts} | 111 ++++++------ frontend/app/player/web/messages/index.ts | 3 +- .../messages/{message.ts => message.gen.ts} | 4 +- .../web/messages/{raw.ts => raw.gen.ts} | 165 ++++++++++++------ .../player/web/messages/tracker-legacy.gen.ts | 60 +++++++ .../app/player/web/messages/tracker-legacy.ts | 75 -------- .../messages/{tracker.ts => tracker.gen.ts} | 91 +++++----- mobs/run.rb | 2 +- ...~web~messages~RawMessageReader.gen.ts.erb} | 5 +- ...pp~player~web~messages~message.gen.ts.erb} | 4 +- ...nd~app~player~web~messages~raw.gen.ts.erb} | 9 +- ...yer~web~messages~tracker-legacy.gen.ts.erb | 7 + ...~player~web~messages~tracker-legacy.ts.erb | 7 - ...pp~player~web~messages~tracker.gen.ts.erb} | 5 +- 21 files changed, 406 insertions(+), 340 deletions(-) create mode 100644 frontend/app/player/web/assist/types.ts rename frontend/app/player/web/messages/{RawMessageReader.ts => RawMessageReader.gen.ts} (91%) rename frontend/app/player/web/messages/{message.ts => message.gen.ts} (98%) rename frontend/app/player/web/messages/{raw.ts => raw.gen.ts} (69%) create mode 100644 frontend/app/player/web/messages/tracker-legacy.gen.ts delete mode 100644 frontend/app/player/web/messages/tracker-legacy.ts rename frontend/app/player/web/messages/{tracker.ts => tracker.gen.ts} (88%) rename mobs/templates/{frontend~app~player~web~messages~RawMessageReader.erb => frontend~app~player~web~messages~RawMessageReader.gen.ts.erb} (87%) rename mobs/templates/{frontend~app~player~web~messages~message.ts.erb => frontend~app~player~web~messages~message.gen.ts.erb} (87%) rename mobs/templates/{frontend~app~player~web~messages~raw.ts.erb => frontend~app~player~web~messages~raw.gen.ts.erb} (66%) create mode 100644 mobs/templates/frontend~app~player~web~messages~tracker-legacy.gen.ts.erb delete mode 100644 mobs/templates/frontend~app~player~web~messages~tracker-legacy.ts.erb rename mobs/templates/{frontend~app~player~web~messages~tracker.ts.erb => frontend~app~player~web~messages~tracker.gen.ts.erb} (85%) diff --git a/frontend/app/player/web/MessageManager.ts b/frontend/app/player/web/MessageManager.ts index c8f2f3205..8e4543489 100644 --- a/frontend/app/player/web/MessageManager.ts +++ b/frontend/app/player/web/MessageManager.ts @@ -19,6 +19,16 @@ import WindowNodeCounter from './managers/WindowNodeCounter'; import ActivityManager from './managers/ActivityManager'; import MFileReader from './messages/MFileReader'; +import { MType } from './messages'; +import type { + Message, + SetPageLocation, + ConnectionInformation, + SetViewportSize, + SetViewportScroll, + MouseClick, +} from './messages'; + import { loadFiles, requestEFSDom, requestEFSDevtools } from './network/loadFiles'; import { decryptSessionBytes } from './network/crypto'; @@ -57,23 +67,14 @@ export interface State extends ScreenState, ListsState { } -import type { - Message, - SetPageLocation, - ConnectionInformation, - SetViewportSize, - SetViewportScroll, - MouseClick, -} from './messages'; - const visualChanges = [ - "mouse_move", - "mouse_click", - "create_element_node", - "set_input_value", - "set_input_checked", - "set_viewport_size", - "set_viewport_scroll", + MType.MouseMove, + MType.MouseClick, + MType.CreateElementNode, + MType.SetInputValue, + MType.SetInputChecked, + MType.SetViewportSize, + MType.SetViewportScroll, ] export default class MessageManager { @@ -158,15 +159,15 @@ export default class MessageManager { const headChildrenIds = msgs.filter(m => m.parentID === 1).map(m => m.id); this.pagesManager.sortPages((m1, m2) => { if (m1.time === m2.time) { - if (m1.tp === "remove_node" && m2.tp !== "remove_node") { + if (m1.tp === MType.RemoveNode && m2.tp !== MType.RemoveNode) { if (headChildrenIds.includes(m1.id)) { return -1; } - } else if (m2.tp === "remove_node" && m1.tp !== "remove_node") { + } else if (m2.tp === MType.RemoveNode && m1.tp !== MType.RemoveNode) { if (headChildrenIds.includes(m2.id)) { return 1; } - } else if (m2.tp === "remove_node" && m1.tp === "remove_node") { + } else if (m2.tp === MType.RemoveNode && m1.tp === MType.RemoveNode) { const m1FromHead = headChildrenIds.includes(m1.id); const m2FromHead = headChildrenIds.includes(m2.id); if (m1FromHead && !m2FromHead) { @@ -399,45 +400,45 @@ export default class MessageManager { let decoded; const time = msg.time; switch (msg.tp) { - case "set_page_location": + case MType.SetPageLocation: this.locationManager.append(msg); if (msg.navigationStart > 0) { this.loadedLocationManager.append(msg); } break; - case "set_viewport_size": + case MType.SetViewportSize: this.resizeManager.append(msg); break; - case "mouse_move": + case MType.MouseMove: this.mouseMoveManager.append(msg); break; - case "mouse_click": + case MType.MouseClick: this.clickManager.append(msg); break; - case "set_viewport_scroll": + case MType.SetViewportScroll: this.scrollManager.append(msg); break; - case "performance_track": + case MType.PerformanceTrack: this.performanceTrackManager.append(msg); break; - case "set_page_visibility": + case MType.SetPageVisibility: this.performanceTrackManager.handleVisibility(msg) break; - case "connection_information": + case MType.ConnectionInformation: this.connectionInfoManger.append(msg); break; - case "o_table": + case MType.OTable: this.decoder.set(msg.key, msg.value); break; /* Lists: */ - case "console_log": + case MType.ConsoleLog: if (msg.level === 'debug') break; this.lists.lists.log.append( // @ts-ignore : TODO: enums in the message schema Log(msg) ) break; - case "fetch": + case MType.Fetch: // @ts-ignore burn immutable this.lists.lists.fetch.append(Resource({ method: msg.method, @@ -451,34 +452,34 @@ export default class MessageManager { index, }) as Timed) break; - case "redux": + case MType.Redux: decoded = this.decodeStateMessage(msg, ["state", "action"]); logger.log('redux', decoded) if (decoded != null) { this.lists.lists.redux.append(decoded); } break; - case "ng_rx": + case MType.NgRx: decoded = this.decodeStateMessage(msg, ["state", "action"]); logger.log('ngrx', decoded) if (decoded != null) { this.lists.lists.ngrx.append(decoded); } break; - case "vuex": + case MType.Vuex: decoded = this.decodeStateMessage(msg, ["state", "mutation"]); logger.log('vuex', decoded) if (decoded != null) { this.lists.lists.vuex.append(decoded); } break; - case "zustand": + case MType.Zustand: decoded = this.decodeStateMessage(msg, ["state", "mutation"]) logger.log('zustand', decoded) if (decoded != null) { this.lists.lists.zustand.append(decoded) } - case "mob_x": + case MType.MobX: decoded = this.decodeStateMessage(msg, ["payload"]); logger.log('mobx', decoded) @@ -486,29 +487,29 @@ export default class MessageManager { this.lists.lists.mobx.append(decoded); } break; - case "graph_ql": + case MType.GraphQl: this.lists.lists.graphql.append(msg); break; - case "profiler": + case MType.Profiler: this.lists.lists.profiles.append(msg); break; /* ===|=== */ default: switch (msg.tp) { - case "create_document": + case MType.CreateDocument: this.windowNodeCounter.reset(); this.performanceTrackManager.setCurrentNodesCount(this.windowNodeCounter.count); break; - case "create_text_node": - case "create_element_node": + case MType.CreateTextNode: + case MType.CreateElementNode: this.windowNodeCounter.addNode(msg.id, msg.parentID); this.performanceTrackManager.setCurrentNodesCount(this.windowNodeCounter.count); break; - case "move_node": + case MType.MoveNode: this.windowNodeCounter.moveNode(msg.id, msg.parentID); this.performanceTrackManager.setCurrentNodesCount(this.windowNodeCounter.count); break; - case "remove_node": + case MType.RemoveNode: this.windowNodeCounter.removeNode(msg.id); this.performanceTrackManager.setCurrentNodesCount(this.windowNodeCounter.count); break; diff --git a/frontend/app/player/web/assist/types.ts b/frontend/app/player/web/assist/types.ts new file mode 100644 index 000000000..ae567bb14 --- /dev/null +++ b/frontend/app/player/web/assist/types.ts @@ -0,0 +1,8 @@ +import type { Socket as SocketIO } from 'socket.io-client'; + + +export interface Socket { + emit: SocketIO['emit'], + on: SocketIO['on'], + id: SocketIO['id'], +} diff --git a/frontend/app/player/web/managers/DOM/DOMManager.ts b/frontend/app/player/web/managers/DOM/DOMManager.ts index 708129add..d0005352c 100644 --- a/frontend/app/player/web/managers/DOM/DOMManager.ts +++ b/frontend/app/player/web/managers/DOM/DOMManager.ts @@ -2,9 +2,9 @@ import logger from 'App/logger'; import type Screen from '../../Screen/Screen'; import type MessageManager from '../../MessageManager'; - import type { Message, SetNodeScroll, CreateElementNode } from '../../messages'; +import { MType } from '../../messages'; import ListWalker from '../../../common/ListWalker'; import StylesManager, { rewriteNodeStyleSheet } from './StylesManager'; import FocusManager from './FocusManager'; @@ -63,7 +63,7 @@ export default class DOMManager extends ListWalker { } append(m: Message): void { - if (m.tp === "set_node_scroll") { + if (m.tp === MType.SetNodeScroll) { let scrollManager = this.nodeScrollManagers.get(m.id) if (!scrollManager) { scrollManager = new ListWalker() @@ -72,15 +72,15 @@ export default class DOMManager extends ListWalker { scrollManager.append(m) return } - if (m.tp === "set_node_focus") { + if (m.tp === MType.SetNodeFocus) { this.focusManager.append(m) return } - if (m.tp === "create_element_node") { + if (m.tp === MType.CreateElementNode) { if(m.tag === "BODY" && this.upperBodyId === -1) { this.upperBodyId = m.id } - } else if (m.tp === "set_node_attribute" && + } else if (m.tp === MType.SetNodeAttribute && (IGNORED_ATTRS.includes(m.name) || !ATTR_NAME_REGEXP.test(m.name))) { logger.log("Ignorring message: ", m) return; // Ignoring @@ -141,7 +141,7 @@ export default class DOMManager extends ListWalker { let doc: Document | null let styleSheet: CSSStyleSheet | PostponedStyleSheet | undefined switch (msg.tp) { - case "create_document": + case MType.CreateDocument: doc = this.screen.document; if (!doc) { logger.error("No root iframe document found", msg) @@ -166,12 +166,12 @@ export default class DOMManager extends ListWalker { this.stylesManager.reset() this.activeIframeRoots.clear() return - case "create_text_node": + case MType.CreateTextNode: vn = new VText() this.vTexts.set(msg.id, vn) this.insertNode(msg) return - case "create_element_node": + case MType.CreateElementNode: let element: Element if (msg.svg) { element = document.createElementNS('http://www.w3.org/2000/svg', msg.tag) @@ -191,16 +191,16 @@ export default class DOMManager extends ListWalker { vn.enforceInsertion() } return - case "move_node": + case MType.MoveNode: this.insertNode(msg); return - case "remove_node": + case MType.RemoveNode: vn = this.vElements.get(msg.id) || this.vTexts.get(msg.id) if (!vn) { logger.error("Node not found", msg); return } if (!vn.parentNode) { logger.error("Parent node not found", msg); return } vn.parentNode.removeChild(vn) return - case "set_node_attribute": + case MType.SetNodeAttribute: let { name, value } = msg; vn = this.vElements.get(msg.id) if (!vn) { logger.error("Node not found", msg); return } @@ -224,12 +224,12 @@ export default class DOMManager extends ListWalker { vn.setAttribute(name, value) this.removeBodyScroll(msg.id, vn) return - case "remove_node_attribute": + case MType.RemoveNodeAttribute: vn = this.vElements.get(msg.id) if (!vn) { logger.error("Node not found", msg); return } vn.removeAttribute(msg.name) return - case "set_input_value": + case MType.SetInputValue: vn = this.vElements.get(msg.id) if (!vn) { logger.error("Node not found", msg); return } const nodeWithValue = vn.node @@ -249,13 +249,13 @@ export default class DOMManager extends ListWalker { } nodeWithValue.value = val return - case "set_input_checked": + case MType.SetInputChecked: vn = this.vElements.get(msg.id) if (!vn) { logger.error("Node not found", msg); return } (vn.node as HTMLInputElement).checked = msg.checked return - case "set_node_data": - case "set_css_data": // mbtodo: remove css transitions when timeflow is not natural (on jumps) + case MType.SetNodeData: + case MType.SetCssData: // mbtodo: remove css transitions when timeflow is not natural (on jumps) vn = this.vTexts.get(msg.id) if (!vn) { logger.error("Node not found", msg); return } vn.setData(msg.data) @@ -264,13 +264,13 @@ export default class DOMManager extends ListWalker { // TODO: move to message parsing doc && rewriteNodeStyleSheet(doc, vn.node) } - if (msg.tp === "set_css_data") { // Styles in priority (do we need inlines as well?) + if (msg.tp === MType.SetCssData) { // Styles in priority (do we need inlines as well?) vn.applyChanges() } return // @depricated since 4.0.2 in favor of adopted_ss_insert/delete_rule + add_owner as being common case for StyleSheets - case "css_insert_rule": + case MType.CssInsertRule: vn = this.vElements.get(msg.id) if (!vn) { logger.error("Node not found", msg); return } if (!(vn instanceof VStyleElement)) { @@ -279,7 +279,7 @@ export default class DOMManager extends ListWalker { } vn.onStyleSheet(sheet => insertRule(sheet, msg)) return - case "css_delete_rule": + case MType.CssDeleteRule: vn = this.vElements.get(msg.id) if (!vn) { logger.error("Node not found", msg); return } if (!(vn instanceof VStyleElement)) { @@ -290,7 +290,7 @@ export default class DOMManager extends ListWalker { return // end @depricated - case "create_i_frame_document": + case MType.CreateIFrameDocument: vn = this.vElements.get(msg.frameID) if (!vn) { logger.error("Node not found", msg); return } vn.enforceInsertion() @@ -321,7 +321,7 @@ export default class DOMManager extends ListWalker { logger.warn("Context message host is not Element", msg) } return - case "adopted_ss_insert_rule": + case MType.AdoptedSsInsertRule: styleSheet = this.styleSheets.get(msg.sheetID) || this.ppStyleSheets.get(msg.sheetID) if (!styleSheet) { logger.warn("No stylesheet was created for ", msg) @@ -329,7 +329,7 @@ export default class DOMManager extends ListWalker { } insertRule(styleSheet, msg) return - case "adopted_ss_delete_rule": + case MType.AdoptedSsDeleteRule: styleSheet = this.styleSheets.get(msg.sheetID) || this.ppStyleSheets.get(msg.sheetID) if (!styleSheet) { logger.warn("No stylesheet was created for ", msg) @@ -338,7 +338,7 @@ export default class DOMManager extends ListWalker { deleteRule(styleSheet, msg) return - case "adopted_ss_replace": + case MType.AdoptedSsReplace: styleSheet = this.styleSheets.get(msg.sheetID) if (!styleSheet) { logger.warn("No stylesheet was created for ", msg) @@ -347,7 +347,7 @@ export default class DOMManager extends ListWalker { // @ts-ignore styleSheet.replaceSync(msg.text) return - case "adopted_ss_add_owner": + case MType.AdoptedSsAddOwner: vn = this.vRoots.get(msg.id) if (!vn) { // non-constructed case @@ -372,7 +372,7 @@ export default class DOMManager extends ListWalker { //@ts-ignore vn.node.adoptedStyleSheets = [...vn.node.adoptedStyleSheets, styleSheet] return - case "adopted_ss_remove_owner": + case MType.AdoptedSsRemoveOwner: styleSheet = this.styleSheets.get(msg.sheetID) if (!styleSheet) { logger.warn("No stylesheet was created for ", msg) @@ -383,7 +383,7 @@ export default class DOMManager extends ListWalker { //@ts-ignore vn.node.adoptedStyleSheets = [...vn.node.adoptedStyleSheets].filter(s => s !== styleSheet) return - case "load_font_face": + case MType.LoadFontFace: vn = this.vRoots.get(msg.parentID) if (!vn) { logger.error("Node not found", msg); return } if (vn instanceof VShadowRoot) { logger.error(`Node ${vn} expected to be a Document`, msg); return } diff --git a/frontend/app/player/web/managers/PagesManager.ts b/frontend/app/player/web/managers/PagesManager.ts index b4ddbe28b..e4248f2ab 100644 --- a/frontend/app/player/web/managers/PagesManager.ts +++ b/frontend/app/player/web/managers/PagesManager.ts @@ -2,7 +2,7 @@ import type Screen from '../Screen/Screen'; import type { Message } from '../messages'; import type MessageManager from '../MessageManager'; - +import { MType } from '../messages'; import ListWalker from '../../common/ListWalker'; import DOMManager from './DOM/DOMManager'; @@ -16,7 +16,7 @@ export default class PagesManager extends ListWalker { Assumed that messages added in a correct time sequence. */ appendMessage(m: Message): void { - if (m.tp === "create_document") { + if (m.tp === MType.CreateDocument) { super.append(new DOMManager(this.screen, this.isMobile, m.time, this.mm)) } if (this.last === null) { diff --git a/frontend/app/player/web/messages/JSONRawMessageReader.ts b/frontend/app/player/web/messages/JSONRawMessageReader.ts index 33bf9d2c5..04f622ecb 100644 --- a/frontend/app/player/web/messages/JSONRawMessageReader.ts +++ b/frontend/app/player/web/messages/JSONRawMessageReader.ts @@ -10,16 +10,17 @@ import type { RawAdoptedSsInsertRule, RawAdoptedSsReplaceURLBased, RawAdoptedSsReplace, -} from './raw' -import type { TrackerMessage } from './tracker' -import translate from './tracker' -import { TP_MAP } from './tracker-legacy' +} 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' function legacyTranslate(msg: any): RawMessage | null { const type = TP_MAP[msg._id as keyof typeof TP_MAP] - if (!type) { + if (!type) { // msg._id can be other than keyof TP_MAP, in fact return null } msg.tp = type @@ -30,7 +31,7 @@ function legacyTranslate(msg: any): RawMessage | null { // TODO: commonURLBased logic for feilds const resolvers = { - "set_node_attribute_url_based": (msg: RawSetNodeAttributeURLBased): RawSetNodeAttribute => + [MType.SetNodeAttributeURLBased]: (msg: RawSetNodeAttributeURLBased): RawSetNodeAttribute => ({ ...msg, value: msg.name === 'src' || msg.name === 'href' @@ -39,31 +40,31 @@ const resolvers = { ? resolveCSS(msg.baseURL, msg.value) : msg.value ), - tp: "set_node_attribute", + tp: MType.SetNodeAttribute, }), - "set_css_data_url_based": (msg: RawSetCssDataURLBased): RawSetCssData => + [MType.SetCssDataURLBased]: (msg: RawSetCssDataURLBased): RawSetCssData => ({ ...msg, data: resolveCSS(msg.baseURL, msg.data), - tp: "set_css_data", + tp: MType.SetCssData, }), - "css_insert_rule_url_based": (msg: RawCssInsertRuleURLBased): RawCssInsertRule => + [MType.CssInsertRuleURLBased]: (msg: RawCssInsertRuleURLBased): RawCssInsertRule => ({ ...msg, rule: resolveCSS(msg.baseURL, msg.rule), - tp: "css_insert_rule", + tp: MType.CssInsertRule, }), - "adopted_ss_insert_rule_url_based": (msg: RawAdoptedSsInsertRuleURLBased): RawAdoptedSsInsertRule => + [MType.AdoptedSsInsertRuleURLBased]: (msg: RawAdoptedSsInsertRuleURLBased): RawAdoptedSsInsertRule => ({ ...msg, rule: resolveCSS(msg.baseURL, msg.rule), - tp: "adopted_ss_insert_rule", + tp: MType.AdoptedSsInsertRule, }), - "adopted_ss_replace_url_based": (msg: RawAdoptedSsReplaceURLBased): RawAdoptedSsReplace => + [MType.AdoptedSsReplaceURLBased]: (msg: RawAdoptedSsReplaceURLBased): RawAdoptedSsReplace => ({ ...msg, text: resolveCSS(msg.baseURL, msg.text), - tp: "adopted_ss_replace" + tp: MType.AdoptedSsReplace, }), } as const diff --git a/frontend/app/player/web/messages/MFileReader.ts b/frontend/app/player/web/messages/MFileReader.ts index 1b4bb5751..e6fad8c63 100644 --- a/frontend/app/player/web/messages/MFileReader.ts +++ b/frontend/app/player/web/messages/MFileReader.ts @@ -1,7 +1,8 @@ -import type { Message } from './message'; -import type { RawMessage } from './raw'; +import type { Message } from './message.gen'; +import type { RawMessage } from './raw.gen'; +import { MType } from './raw.gen'; import logger from 'App/logger'; -import RawMessageReader from './RawMessageReader'; +import RawMessageReader from './RawMessageReader.gen'; // TODO: composition instead of inheritance // needSkipMessage() and next() methods here use buf and p protected properties, @@ -67,7 +68,7 @@ export default class MFileReader extends RawMessageReader { return null } - if (rMsg.tp === "timestamp") { + if (rMsg.tp === MType.Timestamp) { if (!this.startTime) { this.startTime = rMsg.timestamp } diff --git a/frontend/app/player/web/messages/MStreamReader.ts b/frontend/app/player/web/messages/MStreamReader.ts index ede3719ac..6446112a3 100644 --- a/frontend/app/player/web/messages/MStreamReader.ts +++ b/frontend/app/player/web/messages/MStreamReader.ts @@ -1,6 +1,7 @@ -import type { Message } from './message' -import type { RawMessage } from './raw' -import RawMessageReader from './RawMessageReader' +import type { Message } from './message.gen' +import type { RawMessage } from './raw.gen' +import { MType } from './raw.gen' +import RawMessageReader from './RawMessageReader.gen' interface RawMessageReaderI { readMessage(): RawMessage | null @@ -14,7 +15,7 @@ export default class MStreamReader { readNext(): Message | null { let msg = this.r.readMessage() if (msg === null) { return null } - if (msg.tp === "timestamp") { + if (msg.tp === MType.Timestamp) { this.startTs = this.startTs || msg.timestamp this.t = msg.timestamp - this.startTs return this.readNext() diff --git a/frontend/app/player/web/messages/RawMessageReader.ts b/frontend/app/player/web/messages/RawMessageReader.gen.ts similarity index 91% rename from frontend/app/player/web/messages/RawMessageReader.ts rename to frontend/app/player/web/messages/RawMessageReader.gen.ts index 80ebb30b1..0bb2813ba 100644 --- a/frontend/app/player/web/messages/RawMessageReader.ts +++ b/frontend/app/player/web/messages/RawMessageReader.gen.ts @@ -2,7 +2,8 @@ /* eslint-disable */ import PrimitiveReader from './PrimitiveReader' -import type { RawMessage } from './raw' +import { MType } from './raw.gen' +import type { RawMessage } from './raw.gen' export default class RawMessageReader extends PrimitiveReader { @@ -21,7 +22,7 @@ export default class RawMessageReader extends PrimitiveReader { case 0: { const timestamp = this.readUint(); if (timestamp === null) { return resetPointer() } return { - tp: "timestamp", + tp: MType.Timestamp, timestamp, }; } @@ -31,7 +32,7 @@ export default class RawMessageReader extends PrimitiveReader { const referrer = this.readString(); if (referrer === null) { return resetPointer() } const navigationStart = this.readUint(); if (navigationStart === null) { return resetPointer() } return { - tp: "set_page_location", + tp: MType.SetPageLocation, url, referrer, navigationStart, @@ -42,7 +43,7 @@ export default class RawMessageReader extends PrimitiveReader { const width = this.readUint(); if (width === null) { return resetPointer() } const height = this.readUint(); if (height === null) { return resetPointer() } return { - tp: "set_viewport_size", + tp: MType.SetViewportSize, width, height, }; @@ -52,7 +53,7 @@ export default class RawMessageReader extends PrimitiveReader { const x = this.readInt(); if (x === null) { return resetPointer() } const y = this.readInt(); if (y === null) { return resetPointer() } return { - tp: "set_viewport_scroll", + tp: MType.SetViewportScroll, x, y, }; @@ -61,7 +62,7 @@ export default class RawMessageReader extends PrimitiveReader { case 7: { return { - tp: "create_document", + tp: MType.CreateDocument, }; } @@ -73,7 +74,7 @@ export default class RawMessageReader extends PrimitiveReader { const tag = this.readString(); if (tag === null) { return resetPointer() } const svg = this.readBoolean(); if (svg === null) { return resetPointer() } return { - tp: "create_element_node", + tp: MType.CreateElementNode, id, parentID, index, @@ -87,7 +88,7 @@ export default class RawMessageReader extends PrimitiveReader { const parentID = this.readUint(); if (parentID === null) { return resetPointer() } const index = this.readUint(); if (index === null) { return resetPointer() } return { - tp: "create_text_node", + tp: MType.CreateTextNode, id, parentID, index, @@ -99,7 +100,7 @@ export default class RawMessageReader extends PrimitiveReader { const parentID = this.readUint(); if (parentID === null) { return resetPointer() } const index = this.readUint(); if (index === null) { return resetPointer() } return { - tp: "move_node", + tp: MType.MoveNode, id, parentID, index, @@ -109,7 +110,7 @@ export default class RawMessageReader extends PrimitiveReader { case 11: { const id = this.readUint(); if (id === null) { return resetPointer() } return { - tp: "remove_node", + tp: MType.RemoveNode, id, }; } @@ -119,7 +120,7 @@ export default class RawMessageReader extends PrimitiveReader { const name = this.readString(); if (name === null) { return resetPointer() } const value = this.readString(); if (value === null) { return resetPointer() } return { - tp: "set_node_attribute", + tp: MType.SetNodeAttribute, id, name, value, @@ -130,7 +131,7 @@ export default class RawMessageReader extends PrimitiveReader { const id = this.readUint(); if (id === null) { return resetPointer() } const name = this.readString(); if (name === null) { return resetPointer() } return { - tp: "remove_node_attribute", + tp: MType.RemoveNodeAttribute, id, name, }; @@ -140,7 +141,7 @@ export default class RawMessageReader extends PrimitiveReader { const id = this.readUint(); if (id === null) { return resetPointer() } const data = this.readString(); if (data === null) { return resetPointer() } return { - tp: "set_node_data", + tp: MType.SetNodeData, id, data, }; @@ -150,7 +151,7 @@ export default class RawMessageReader extends PrimitiveReader { const id = this.readUint(); if (id === null) { return resetPointer() } const data = this.readString(); if (data === null) { return resetPointer() } return { - tp: "set_css_data", + tp: MType.SetCssData, id, data, }; @@ -161,7 +162,7 @@ export default class RawMessageReader extends PrimitiveReader { const x = this.readInt(); if (x === null) { return resetPointer() } const y = this.readInt(); if (y === null) { return resetPointer() } return { - tp: "set_node_scroll", + tp: MType.SetNodeScroll, id, x, y, @@ -173,7 +174,7 @@ export default class RawMessageReader extends PrimitiveReader { const value = this.readString(); if (value === null) { return resetPointer() } const mask = this.readInt(); if (mask === null) { return resetPointer() } return { - tp: "set_input_value", + tp: MType.SetInputValue, id, value, mask, @@ -184,7 +185,7 @@ export default class RawMessageReader extends PrimitiveReader { const id = this.readUint(); if (id === null) { return resetPointer() } const checked = this.readBoolean(); if (checked === null) { return resetPointer() } return { - tp: "set_input_checked", + tp: MType.SetInputChecked, id, checked, }; @@ -194,7 +195,7 @@ export default class RawMessageReader extends PrimitiveReader { const x = this.readUint(); if (x === null) { return resetPointer() } const y = this.readUint(); if (y === null) { return resetPointer() } return { - tp: "mouse_move", + tp: MType.MouseMove, x, y, }; @@ -204,7 +205,7 @@ export default class RawMessageReader extends PrimitiveReader { const level = this.readString(); if (level === null) { return resetPointer() } const value = this.readString(); if (value === null) { return resetPointer() } return { - tp: "console_log", + tp: MType.ConsoleLog, level, value, }; @@ -215,7 +216,7 @@ export default class RawMessageReader extends PrimitiveReader { const rule = this.readString(); if (rule === null) { return resetPointer() } const index = this.readUint(); if (index === null) { return resetPointer() } return { - tp: "css_insert_rule", + tp: MType.CssInsertRule, id, rule, index, @@ -226,7 +227,7 @@ export default class RawMessageReader extends PrimitiveReader { const id = this.readUint(); if (id === null) { return resetPointer() } const index = this.readUint(); if (index === null) { return resetPointer() } return { - tp: "css_delete_rule", + tp: MType.CssDeleteRule, id, index, }; @@ -241,7 +242,7 @@ export default class RawMessageReader extends PrimitiveReader { const timestamp = this.readUint(); if (timestamp === null) { return resetPointer() } const duration = this.readUint(); if (duration === null) { return resetPointer() } return { - tp: "fetch", + tp: MType.Fetch, method, url, request, @@ -258,7 +259,7 @@ export default class RawMessageReader extends PrimitiveReader { const args = this.readString(); if (args === null) { return resetPointer() } const result = this.readString(); if (result === null) { return resetPointer() } return { - tp: "profiler", + tp: MType.Profiler, name, duration, args, @@ -270,7 +271,7 @@ export default class RawMessageReader extends PrimitiveReader { const key = this.readString(); if (key === null) { return resetPointer() } const value = this.readString(); if (value === null) { return resetPointer() } return { - tp: "o_table", + tp: MType.OTable, key, value, }; @@ -281,7 +282,7 @@ export default class RawMessageReader extends PrimitiveReader { const state = this.readString(); if (state === null) { return resetPointer() } const duration = this.readUint(); if (duration === null) { return resetPointer() } return { - tp: "redux", + tp: MType.Redux, action, state, duration, @@ -292,7 +293,7 @@ export default class RawMessageReader extends PrimitiveReader { const mutation = this.readString(); if (mutation === null) { return resetPointer() } const state = this.readString(); if (state === null) { return resetPointer() } return { - tp: "vuex", + tp: MType.Vuex, mutation, state, }; @@ -302,7 +303,7 @@ export default class RawMessageReader extends PrimitiveReader { const type = this.readString(); if (type === null) { return resetPointer() } const payload = this.readString(); if (payload === null) { return resetPointer() } return { - tp: "mob_x", + tp: MType.MobX, type, payload, }; @@ -313,7 +314,7 @@ export default class RawMessageReader extends PrimitiveReader { const state = this.readString(); if (state === null) { return resetPointer() } const duration = this.readUint(); if (duration === null) { return resetPointer() } return { - tp: "ng_rx", + tp: MType.NgRx, action, state, duration, @@ -326,7 +327,7 @@ export default class RawMessageReader extends PrimitiveReader { const variables = this.readString(); if (variables === null) { return resetPointer() } const response = this.readString(); if (response === null) { return resetPointer() } return { - tp: "graph_ql", + tp: MType.GraphQl, operationKind, operationName, variables, @@ -340,7 +341,7 @@ export default class RawMessageReader extends PrimitiveReader { const totalJSHeapSize = this.readUint(); if (totalJSHeapSize === null) { return resetPointer() } const usedJSHeapSize = this.readUint(); if (usedJSHeapSize === null) { return resetPointer() } return { - tp: "performance_track", + tp: MType.PerformanceTrack, frames, ticks, totalJSHeapSize, @@ -352,7 +353,7 @@ export default class RawMessageReader extends PrimitiveReader { const downlink = this.readUint(); if (downlink === null) { return resetPointer() } const type = this.readString(); if (type === null) { return resetPointer() } return { - tp: "connection_information", + tp: MType.ConnectionInformation, downlink, type, }; @@ -361,7 +362,7 @@ export default class RawMessageReader extends PrimitiveReader { case 55: { const hidden = this.readBoolean(); if (hidden === null) { return resetPointer() } return { - tp: "set_page_visibility", + tp: MType.SetPageVisibility, hidden, }; } @@ -372,7 +373,7 @@ export default class RawMessageReader extends PrimitiveReader { const source = this.readString(); if (source === null) { return resetPointer() } const descriptors = this.readString(); if (descriptors === null) { return resetPointer() } return { - tp: "load_font_face", + tp: MType.LoadFontFace, parentID, family, source, @@ -383,7 +384,7 @@ export default class RawMessageReader extends PrimitiveReader { case 58: { const id = this.readInt(); if (id === null) { return resetPointer() } return { - tp: "set_node_focus", + tp: MType.SetNodeFocus, id, }; } @@ -397,7 +398,7 @@ export default class RawMessageReader extends PrimitiveReader { const containerId = this.readString(); if (containerId === null) { return resetPointer() } const containerName = this.readString(); if (containerName === null) { return resetPointer() } return { - tp: "long_task", + tp: MType.LongTask, timestamp, duration, context, @@ -414,7 +415,7 @@ export default class RawMessageReader extends PrimitiveReader { const value = this.readString(); if (value === null) { return resetPointer() } const baseURL = this.readString(); if (baseURL === null) { return resetPointer() } return { - tp: "set_node_attribute_url_based", + tp: MType.SetNodeAttributeURLBased, id, name, value, @@ -427,7 +428,7 @@ export default class RawMessageReader extends PrimitiveReader { const data = this.readString(); if (data === null) { return resetPointer() } const baseURL = this.readString(); if (baseURL === null) { return resetPointer() } return { - tp: "set_css_data_url_based", + tp: MType.SetCssDataURLBased, id, data, baseURL, @@ -440,7 +441,7 @@ export default class RawMessageReader extends PrimitiveReader { const index = this.readUint(); if (index === null) { return resetPointer() } const baseURL = this.readString(); if (baseURL === null) { return resetPointer() } return { - tp: "css_insert_rule_url_based", + tp: MType.CssInsertRuleURLBased, id, rule, index, @@ -454,7 +455,7 @@ export default class RawMessageReader extends PrimitiveReader { const label = this.readString(); if (label === null) { return resetPointer() } const selector = this.readString(); if (selector === null) { return resetPointer() } return { - tp: "mouse_click", + tp: MType.MouseClick, id, hesitationTime, label, @@ -466,7 +467,7 @@ export default class RawMessageReader extends PrimitiveReader { const frameID = this.readUint(); if (frameID === null) { return resetPointer() } const id = this.readUint(); if (id === null) { return resetPointer() } return { - tp: "create_i_frame_document", + tp: MType.CreateIFrameDocument, frameID, id, }; @@ -477,7 +478,7 @@ export default class RawMessageReader extends PrimitiveReader { const text = this.readString(); if (text === null) { return resetPointer() } const baseURL = this.readString(); if (baseURL === null) { return resetPointer() } return { - tp: "adopted_ss_replace_url_based", + tp: MType.AdoptedSsReplaceURLBased, sheetID, text, baseURL, @@ -488,7 +489,7 @@ export default class RawMessageReader extends PrimitiveReader { const sheetID = this.readUint(); if (sheetID === null) { return resetPointer() } const text = this.readString(); if (text === null) { return resetPointer() } return { - tp: "adopted_ss_replace", + tp: MType.AdoptedSsReplace, sheetID, text, }; @@ -500,7 +501,7 @@ export default class RawMessageReader extends PrimitiveReader { const index = this.readUint(); if (index === null) { return resetPointer() } const baseURL = this.readString(); if (baseURL === null) { return resetPointer() } return { - tp: "adopted_ss_insert_rule_url_based", + tp: MType.AdoptedSsInsertRuleURLBased, sheetID, rule, index, @@ -513,7 +514,7 @@ export default class RawMessageReader extends PrimitiveReader { const rule = this.readString(); if (rule === null) { return resetPointer() } const index = this.readUint(); if (index === null) { return resetPointer() } return { - tp: "adopted_ss_insert_rule", + tp: MType.AdoptedSsInsertRule, sheetID, rule, index, @@ -524,7 +525,7 @@ export default class RawMessageReader extends PrimitiveReader { const sheetID = this.readUint(); if (sheetID === null) { return resetPointer() } const index = this.readUint(); if (index === null) { return resetPointer() } return { - tp: "adopted_ss_delete_rule", + tp: MType.AdoptedSsDeleteRule, sheetID, index, }; @@ -534,7 +535,7 @@ export default class RawMessageReader extends PrimitiveReader { const sheetID = this.readUint(); if (sheetID === null) { return resetPointer() } const id = this.readUint(); if (id === null) { return resetPointer() } return { - tp: "adopted_ss_add_owner", + tp: MType.AdoptedSsAddOwner, sheetID, id, }; @@ -544,7 +545,7 @@ export default class RawMessageReader extends PrimitiveReader { const sheetID = this.readUint(); if (sheetID === null) { return resetPointer() } const id = this.readUint(); if (id === null) { return resetPointer() } return { - tp: "adopted_ss_remove_owner", + tp: MType.AdoptedSsRemoveOwner, sheetID, id, }; @@ -554,7 +555,7 @@ export default class RawMessageReader extends PrimitiveReader { const mutation = this.readString(); if (mutation === null) { return resetPointer() } const state = this.readString(); if (state === null) { return resetPointer() } return { - tp: "zustand", + tp: MType.Zustand, mutation, state, }; @@ -572,7 +573,7 @@ export default class RawMessageReader extends PrimitiveReader { const userDeviceType = this.readString(); if (userDeviceType === null) { return resetPointer() } const userCountry = this.readString(); if (userCountry === null) { return resetPointer() } return { - tp: "ios_session_start", + tp: MType.IosSessionStart, timestamp, projectID, trackerVersion, @@ -592,7 +593,7 @@ export default class RawMessageReader extends PrimitiveReader { const name = this.readString(); if (name === null) { return resetPointer() } const payload = this.readString(); if (payload === null) { return resetPointer() } return { - tp: "ios_custom_event", + tp: MType.IosCustomEvent, timestamp, length, name, @@ -608,7 +609,7 @@ export default class RawMessageReader extends PrimitiveReader { const width = this.readUint(); if (width === null) { return resetPointer() } const height = this.readUint(); if (height === null) { return resetPointer() } return { - tp: "ios_screen_changes", + tp: MType.IosScreenChanges, timestamp, length, x, @@ -625,7 +626,7 @@ export default class RawMessageReader extends PrimitiveReader { const x = this.readUint(); if (x === null) { return resetPointer() } const y = this.readUint(); if (y === null) { return resetPointer() } return { - tp: "ios_click_event", + tp: MType.IosClickEvent, timestamp, length, label, @@ -640,7 +641,7 @@ export default class RawMessageReader extends PrimitiveReader { const name = this.readString(); if (name === null) { return resetPointer() } const value = this.readUint(); if (value === null) { return resetPointer() } return { - tp: "ios_performance_event", + tp: MType.IosPerformanceEvent, timestamp, length, name, @@ -654,7 +655,7 @@ export default class RawMessageReader extends PrimitiveReader { const severity = this.readString(); if (severity === null) { return resetPointer() } const content = this.readString(); if (content === null) { return resetPointer() } return { - tp: "ios_log", + tp: MType.IosLog, timestamp, length, severity, @@ -673,7 +674,7 @@ export default class RawMessageReader extends PrimitiveReader { const method = this.readString(); if (method === null) { return resetPointer() } const status = this.readUint(); if (status === null) { return resetPointer() } return { - tp: "ios_network_call", + tp: MType.IosNetworkCall, timestamp, length, duration, diff --git a/frontend/app/player/web/messages/index.ts b/frontend/app/player/web/messages/index.ts index 2619b58cd..401980555 100644 --- a/frontend/app/player/web/messages/index.ts +++ b/frontend/app/player/web/messages/index.ts @@ -1 +1,2 @@ -export * from './message' \ No newline at end of file +export * from './message.gen' +export { MType } from './raw.gen' \ No newline at end of file diff --git a/frontend/app/player/web/messages/message.ts b/frontend/app/player/web/messages/message.gen.ts similarity index 98% rename from frontend/app/player/web/messages/message.ts rename to frontend/app/player/web/messages/message.gen.ts index 3925fb235..bfe658690 100644 --- a/frontend/app/player/web/messages/message.ts +++ b/frontend/app/player/web/messages/message.gen.ts @@ -2,7 +2,7 @@ /* eslint-disable */ import type { Timed } from './timed' -import type { RawMessage } from './raw' +import type { RawMessage } from './raw.gen' import type { RawTimestamp, RawSetPageLocation, @@ -58,7 +58,7 @@ import type { RawIosPerformanceEvent, RawIosLog, RawIosNetworkCall, -} from './raw' +} from './raw.gen' export type Message = RawMessage & Timed diff --git a/frontend/app/player/web/messages/raw.ts b/frontend/app/player/web/messages/raw.gen.ts similarity index 69% rename from frontend/app/player/web/messages/raw.ts rename to frontend/app/player/web/messages/raw.gen.ts index 0d744e2fd..960c17617 100644 --- a/frontend/app/player/web/messages/raw.ts +++ b/frontend/app/player/web/messages/raw.gen.ts @@ -1,38 +1,95 @@ // Auto-generated, do not edit /* eslint-disable */ +export const enum MType { + Timestamp = 0, + SetPageLocation = 4, + SetViewportSize = 5, + SetViewportScroll = 6, + CreateDocument = 7, + CreateElementNode = 8, + CreateTextNode = 9, + MoveNode = 10, + RemoveNode = 11, + SetNodeAttribute = 12, + RemoveNodeAttribute = 13, + SetNodeData = 14, + SetCssData = 15, + SetNodeScroll = 16, + SetInputValue = 18, + SetInputChecked = 19, + MouseMove = 20, + ConsoleLog = 22, + CssInsertRule = 37, + CssDeleteRule = 38, + Fetch = 39, + Profiler = 40, + OTable = 41, + Redux = 44, + Vuex = 45, + MobX = 46, + NgRx = 47, + GraphQl = 48, + PerformanceTrack = 49, + ConnectionInformation = 54, + SetPageVisibility = 55, + LoadFontFace = 57, + SetNodeFocus = 58, + LongTask = 59, + SetNodeAttributeURLBased = 60, + SetCssDataURLBased = 61, + CssInsertRuleURLBased = 67, + MouseClick = 69, + CreateIFrameDocument = 70, + AdoptedSsReplaceURLBased = 71, + AdoptedSsReplace = 72, + AdoptedSsInsertRuleURLBased = 73, + AdoptedSsInsertRule = 74, + AdoptedSsDeleteRule = 75, + AdoptedSsAddOwner = 76, + AdoptedSsRemoveOwner = 77, + Zustand = 79, + IosSessionStart = 90, + IosCustomEvent = 93, + IosScreenChanges = 96, + IosClickEvent = 100, + IosPerformanceEvent = 102, + IosLog = 103, + IosNetworkCall = 105, +} + export interface RawTimestamp { - tp: "timestamp", + tp: MType.Timestamp, timestamp: number, } export interface RawSetPageLocation { - tp: "set_page_location", + tp: MType.SetPageLocation, url: string, referrer: string, navigationStart: number, } export interface RawSetViewportSize { - tp: "set_viewport_size", + tp: MType.SetViewportSize, width: number, height: number, } export interface RawSetViewportScroll { - tp: "set_viewport_scroll", + tp: MType.SetViewportScroll, x: number, y: number, } export interface RawCreateDocument { - tp: "create_document", + tp: MType.CreateDocument, } export interface RawCreateElementNode { - tp: "create_element_node", + tp: MType.CreateElementNode, id: number, parentID: number, index: number, @@ -41,96 +98,96 @@ export interface RawCreateElementNode { } export interface RawCreateTextNode { - tp: "create_text_node", + tp: MType.CreateTextNode, id: number, parentID: number, index: number, } export interface RawMoveNode { - tp: "move_node", + tp: MType.MoveNode, id: number, parentID: number, index: number, } export interface RawRemoveNode { - tp: "remove_node", + tp: MType.RemoveNode, id: number, } export interface RawSetNodeAttribute { - tp: "set_node_attribute", + tp: MType.SetNodeAttribute, id: number, name: string, value: string, } export interface RawRemoveNodeAttribute { - tp: "remove_node_attribute", + tp: MType.RemoveNodeAttribute, id: number, name: string, } export interface RawSetNodeData { - tp: "set_node_data", + tp: MType.SetNodeData, id: number, data: string, } export interface RawSetCssData { - tp: "set_css_data", + tp: MType.SetCssData, id: number, data: string, } export interface RawSetNodeScroll { - tp: "set_node_scroll", + tp: MType.SetNodeScroll, id: number, x: number, y: number, } export interface RawSetInputValue { - tp: "set_input_value", + tp: MType.SetInputValue, id: number, value: string, mask: number, } export interface RawSetInputChecked { - tp: "set_input_checked", + tp: MType.SetInputChecked, id: number, checked: boolean, } export interface RawMouseMove { - tp: "mouse_move", + tp: MType.MouseMove, x: number, y: number, } export interface RawConsoleLog { - tp: "console_log", + tp: MType.ConsoleLog, level: string, value: string, } export interface RawCssInsertRule { - tp: "css_insert_rule", + tp: MType.CssInsertRule, id: number, rule: string, index: number, } export interface RawCssDeleteRule { - tp: "css_delete_rule", + tp: MType.CssDeleteRule, id: number, index: number, } export interface RawFetch { - tp: "fetch", + tp: MType.Fetch, method: string, url: string, request: string, @@ -141,7 +198,7 @@ export interface RawFetch { } export interface RawProfiler { - tp: "profiler", + tp: MType.Profiler, name: string, duration: number, args: string, @@ -149,39 +206,39 @@ export interface RawProfiler { } export interface RawOTable { - tp: "o_table", + tp: MType.OTable, key: string, value: string, } export interface RawRedux { - tp: "redux", + tp: MType.Redux, action: string, state: string, duration: number, } export interface RawVuex { - tp: "vuex", + tp: MType.Vuex, mutation: string, state: string, } export interface RawMobX { - tp: "mob_x", + tp: MType.MobX, type: string, payload: string, } export interface RawNgRx { - tp: "ng_rx", + tp: MType.NgRx, action: string, state: string, duration: number, } export interface RawGraphQl { - tp: "graph_ql", + tp: MType.GraphQl, operationKind: string, operationName: string, variables: string, @@ -189,7 +246,7 @@ export interface RawGraphQl { } export interface RawPerformanceTrack { - tp: "performance_track", + tp: MType.PerformanceTrack, frames: number, ticks: number, totalJSHeapSize: number, @@ -197,18 +254,18 @@ export interface RawPerformanceTrack { } export interface RawConnectionInformation { - tp: "connection_information", + tp: MType.ConnectionInformation, downlink: number, type: string, } export interface RawSetPageVisibility { - tp: "set_page_visibility", + tp: MType.SetPageVisibility, hidden: boolean, } export interface RawLoadFontFace { - tp: "load_font_face", + tp: MType.LoadFontFace, parentID: number, family: string, source: string, @@ -216,12 +273,12 @@ export interface RawLoadFontFace { } export interface RawSetNodeFocus { - tp: "set_node_focus", + tp: MType.SetNodeFocus, id: number, } export interface RawLongTask { - tp: "long_task", + tp: MType.LongTask, timestamp: number, duration: number, context: number, @@ -232,7 +289,7 @@ export interface RawLongTask { } export interface RawSetNodeAttributeURLBased { - tp: "set_node_attribute_url_based", + tp: MType.SetNodeAttributeURLBased, id: number, name: string, value: string, @@ -240,14 +297,14 @@ export interface RawSetNodeAttributeURLBased { } export interface RawSetCssDataURLBased { - tp: "set_css_data_url_based", + tp: MType.SetCssDataURLBased, id: number, data: string, baseURL: string, } export interface RawCssInsertRuleURLBased { - tp: "css_insert_rule_url_based", + tp: MType.CssInsertRuleURLBased, id: number, rule: string, index: number, @@ -255,7 +312,7 @@ export interface RawCssInsertRuleURLBased { } export interface RawMouseClick { - tp: "mouse_click", + tp: MType.MouseClick, id: number, hesitationTime: number, label: string, @@ -263,26 +320,26 @@ export interface RawMouseClick { } export interface RawCreateIFrameDocument { - tp: "create_i_frame_document", + tp: MType.CreateIFrameDocument, frameID: number, id: number, } export interface RawAdoptedSsReplaceURLBased { - tp: "adopted_ss_replace_url_based", + tp: MType.AdoptedSsReplaceURLBased, sheetID: number, text: string, baseURL: string, } export interface RawAdoptedSsReplace { - tp: "adopted_ss_replace", + tp: MType.AdoptedSsReplace, sheetID: number, text: string, } export interface RawAdoptedSsInsertRuleURLBased { - tp: "adopted_ss_insert_rule_url_based", + tp: MType.AdoptedSsInsertRuleURLBased, sheetID: number, rule: string, index: number, @@ -290,38 +347,38 @@ export interface RawAdoptedSsInsertRuleURLBased { } export interface RawAdoptedSsInsertRule { - tp: "adopted_ss_insert_rule", + tp: MType.AdoptedSsInsertRule, sheetID: number, rule: string, index: number, } export interface RawAdoptedSsDeleteRule { - tp: "adopted_ss_delete_rule", + tp: MType.AdoptedSsDeleteRule, sheetID: number, index: number, } export interface RawAdoptedSsAddOwner { - tp: "adopted_ss_add_owner", + tp: MType.AdoptedSsAddOwner, sheetID: number, id: number, } export interface RawAdoptedSsRemoveOwner { - tp: "adopted_ss_remove_owner", + tp: MType.AdoptedSsRemoveOwner, sheetID: number, id: number, } export interface RawZustand { - tp: "zustand", + tp: MType.Zustand, mutation: string, state: string, } export interface RawIosSessionStart { - tp: "ios_session_start", + tp: MType.IosSessionStart, timestamp: number, projectID: number, trackerVersion: string, @@ -335,7 +392,7 @@ export interface RawIosSessionStart { } export interface RawIosCustomEvent { - tp: "ios_custom_event", + tp: MType.IosCustomEvent, timestamp: number, length: number, name: string, @@ -343,7 +400,7 @@ export interface RawIosCustomEvent { } export interface RawIosScreenChanges { - tp: "ios_screen_changes", + tp: MType.IosScreenChanges, timestamp: number, length: number, x: number, @@ -353,7 +410,7 @@ export interface RawIosScreenChanges { } export interface RawIosClickEvent { - tp: "ios_click_event", + tp: MType.IosClickEvent, timestamp: number, length: number, label: string, @@ -362,7 +419,7 @@ export interface RawIosClickEvent { } export interface RawIosPerformanceEvent { - tp: "ios_performance_event", + tp: MType.IosPerformanceEvent, timestamp: number, length: number, name: string, @@ -370,7 +427,7 @@ export interface RawIosPerformanceEvent { } export interface RawIosLog { - tp: "ios_log", + tp: MType.IosLog, timestamp: number, length: number, severity: string, @@ -378,7 +435,7 @@ export interface RawIosLog { } export interface RawIosNetworkCall { - tp: "ios_network_call", + tp: MType.IosNetworkCall, timestamp: number, length: number, duration: number, diff --git a/frontend/app/player/web/messages/tracker-legacy.gen.ts b/frontend/app/player/web/messages/tracker-legacy.gen.ts new file mode 100644 index 000000000..5e6067d3c --- /dev/null +++ b/frontend/app/player/web/messages/tracker-legacy.gen.ts @@ -0,0 +1,60 @@ +// Auto-generated, do not edit + +import { MType } from './raw.gen' + +export const TP_MAP = { + 0: MType.Timestamp, + 4: MType.SetPageLocation, + 5: MType.SetViewportSize, + 6: MType.SetViewportScroll, + 7: MType.CreateDocument, + 8: MType.CreateElementNode, + 9: MType.CreateTextNode, + 10: MType.MoveNode, + 11: MType.RemoveNode, + 12: MType.SetNodeAttribute, + 13: MType.RemoveNodeAttribute, + 14: MType.SetNodeData, + 15: MType.SetCssData, + 16: MType.SetNodeScroll, + 18: MType.SetInputValue, + 19: MType.SetInputChecked, + 20: MType.MouseMove, + 22: MType.ConsoleLog, + 37: MType.CssInsertRule, + 38: MType.CssDeleteRule, + 39: MType.Fetch, + 40: MType.Profiler, + 41: MType.OTable, + 44: MType.Redux, + 45: MType.Vuex, + 46: MType.MobX, + 47: MType.NgRx, + 48: MType.GraphQl, + 49: MType.PerformanceTrack, + 54: MType.ConnectionInformation, + 55: MType.SetPageVisibility, + 57: MType.LoadFontFace, + 58: MType.SetNodeFocus, + 59: MType.LongTask, + 60: MType.SetNodeAttributeURLBased, + 61: MType.SetCssDataURLBased, + 67: MType.CssInsertRuleURLBased, + 69: MType.MouseClick, + 70: MType.CreateIFrameDocument, + 71: MType.AdoptedSsReplaceURLBased, + 72: MType.AdoptedSsReplace, + 73: MType.AdoptedSsInsertRuleURLBased, + 74: MType.AdoptedSsInsertRule, + 75: MType.AdoptedSsDeleteRule, + 76: MType.AdoptedSsAddOwner, + 77: MType.AdoptedSsRemoveOwner, + 79: MType.Zustand, + 90: MType.IosSessionStart, + 93: MType.IosCustomEvent, + 96: MType.IosScreenChanges, + 100: MType.IosClickEvent, + 102: MType.IosPerformanceEvent, + 103: MType.IosLog, + 105: MType.IosNetworkCall, +} as const diff --git a/frontend/app/player/web/messages/tracker-legacy.ts b/frontend/app/player/web/messages/tracker-legacy.ts deleted file mode 100644 index a6cfec8f0..000000000 --- a/frontend/app/player/web/messages/tracker-legacy.ts +++ /dev/null @@ -1,75 +0,0 @@ -// @ts-nocheck -/* eslint-disable */ -// Auto-generated, do not edit - -export const TP_MAP = { - 81: "batch_metadata", - 82: "partitioned_message", - 0: "timestamp", - 4: "set_page_location", - 5: "set_viewport_size", - 6: "set_viewport_scroll", - 7: "create_document", - 8: "create_element_node", - 9: "create_text_node", - 10: "move_node", - 11: "remove_node", - 12: "set_node_attribute", - 13: "remove_node_attribute", - 14: "set_node_data", - 15: "set_css_data", - 16: "set_node_scroll", - 17: "set_input_target", - 18: "set_input_value", - 19: "set_input_checked", - 20: "mouse_move", - 22: "console_log", - 23: "page_load_timing", - 24: "page_render_timing", - 25: "js_exception_deprecated", - 27: "raw_custom_event", - 28: "user_id", - 29: "user_anonymous_id", - 30: "metadata", - 37: "css_insert_rule", - 38: "css_delete_rule", - 39: "fetch", - 40: "profiler", - 41: "o_table", - 42: "state_action", - 44: "redux", - 45: "vuex", - 46: "mob_x", - 47: "ng_rx", - 48: "graph_ql", - 49: "performance_track", - 53: "resource_timing", - 54: "connection_information", - 55: "set_page_visibility", - 57: "load_font_face", - 58: "set_node_focus", - 59: "long_task", - 60: "set_node_attribute_url_based", - 61: "set_css_data_url_based", - 63: "technical_info", - 64: "custom_issue", - 67: "css_insert_rule_url_based", - 69: "mouse_click", - 70: "create_i_frame_document", - 71: "adopted_ss_replace_url_based", - 72: "adopted_ss_replace", - 73: "adopted_ss_insert_rule_url_based", - 74: "adopted_ss_insert_rule", - 75: "adopted_ss_delete_rule", - 76: "adopted_ss_add_owner", - 77: "adopted_ss_remove_owner", - 79: "zustand", - 78: "js_exception", - 90: "ios_session_start", - 93: "ios_custom_event", - 96: "ios_screen_changes", - 100: "ios_click_event", - 102: "ios_performance_event", - 103: "ios_log", - 105: "ios_network_call", -} as const diff --git a/frontend/app/player/web/messages/tracker.ts b/frontend/app/player/web/messages/tracker.gen.ts similarity index 88% rename from frontend/app/player/web/messages/tracker.ts rename to frontend/app/player/web/messages/tracker.gen.ts index 41e36f466..f8c7b4f63 100644 --- a/frontend/app/player/web/messages/tracker.ts +++ b/frontend/app/player/web/messages/tracker.gen.ts @@ -1,7 +1,8 @@ // Auto-generated, do not edit /* eslint-disable */ -import type { RawMessage } from './raw' +import type { RawMessage } from './raw.gen' +import { MType } from './raw.gen' type TrBatchMetadata = [ @@ -418,14 +419,14 @@ export default function translate(tMsg: TrackerMessage): RawMessage | null { case 0: { return { - tp: "timestamp", + tp: MType.Timestamp, timestamp: tMsg[1], } } case 4: { return { - tp: "set_page_location", + tp: MType.SetPageLocation, url: tMsg[1], referrer: tMsg[2], navigationStart: tMsg[3], @@ -434,7 +435,7 @@ export default function translate(tMsg: TrackerMessage): RawMessage | null { case 5: { return { - tp: "set_viewport_size", + tp: MType.SetViewportSize, width: tMsg[1], height: tMsg[2], } @@ -442,7 +443,7 @@ export default function translate(tMsg: TrackerMessage): RawMessage | null { case 6: { return { - tp: "set_viewport_scroll", + tp: MType.SetViewportScroll, x: tMsg[1], y: tMsg[2], } @@ -450,14 +451,14 @@ export default function translate(tMsg: TrackerMessage): RawMessage | null { case 7: { return { - tp: "create_document", + tp: MType.CreateDocument, } } case 8: { return { - tp: "create_element_node", + tp: MType.CreateElementNode, id: tMsg[1], parentID: tMsg[2], index: tMsg[3], @@ -468,7 +469,7 @@ export default function translate(tMsg: TrackerMessage): RawMessage | null { case 9: { return { - tp: "create_text_node", + tp: MType.CreateTextNode, id: tMsg[1], parentID: tMsg[2], index: tMsg[3], @@ -477,7 +478,7 @@ export default function translate(tMsg: TrackerMessage): RawMessage | null { case 10: { return { - tp: "move_node", + tp: MType.MoveNode, id: tMsg[1], parentID: tMsg[2], index: tMsg[3], @@ -486,14 +487,14 @@ export default function translate(tMsg: TrackerMessage): RawMessage | null { case 11: { return { - tp: "remove_node", + tp: MType.RemoveNode, id: tMsg[1], } } case 12: { return { - tp: "set_node_attribute", + tp: MType.SetNodeAttribute, id: tMsg[1], name: tMsg[2], value: tMsg[3], @@ -502,7 +503,7 @@ export default function translate(tMsg: TrackerMessage): RawMessage | null { case 13: { return { - tp: "remove_node_attribute", + tp: MType.RemoveNodeAttribute, id: tMsg[1], name: tMsg[2], } @@ -510,7 +511,7 @@ export default function translate(tMsg: TrackerMessage): RawMessage | null { case 14: { return { - tp: "set_node_data", + tp: MType.SetNodeData, id: tMsg[1], data: tMsg[2], } @@ -518,7 +519,7 @@ export default function translate(tMsg: TrackerMessage): RawMessage | null { case 16: { return { - tp: "set_node_scroll", + tp: MType.SetNodeScroll, id: tMsg[1], x: tMsg[2], y: tMsg[3], @@ -527,7 +528,7 @@ export default function translate(tMsg: TrackerMessage): RawMessage | null { case 18: { return { - tp: "set_input_value", + tp: MType.SetInputValue, id: tMsg[1], value: tMsg[2], mask: tMsg[3], @@ -536,7 +537,7 @@ export default function translate(tMsg: TrackerMessage): RawMessage | null { case 19: { return { - tp: "set_input_checked", + tp: MType.SetInputChecked, id: tMsg[1], checked: tMsg[2], } @@ -544,7 +545,7 @@ export default function translate(tMsg: TrackerMessage): RawMessage | null { case 20: { return { - tp: "mouse_move", + tp: MType.MouseMove, x: tMsg[1], y: tMsg[2], } @@ -552,7 +553,7 @@ export default function translate(tMsg: TrackerMessage): RawMessage | null { case 22: { return { - tp: "console_log", + tp: MType.ConsoleLog, level: tMsg[1], value: tMsg[2], } @@ -560,7 +561,7 @@ export default function translate(tMsg: TrackerMessage): RawMessage | null { case 37: { return { - tp: "css_insert_rule", + tp: MType.CssInsertRule, id: tMsg[1], rule: tMsg[2], index: tMsg[3], @@ -569,7 +570,7 @@ export default function translate(tMsg: TrackerMessage): RawMessage | null { case 38: { return { - tp: "css_delete_rule", + tp: MType.CssDeleteRule, id: tMsg[1], index: tMsg[2], } @@ -577,7 +578,7 @@ export default function translate(tMsg: TrackerMessage): RawMessage | null { case 39: { return { - tp: "fetch", + tp: MType.Fetch, method: tMsg[1], url: tMsg[2], request: tMsg[3], @@ -590,7 +591,7 @@ export default function translate(tMsg: TrackerMessage): RawMessage | null { case 40: { return { - tp: "profiler", + tp: MType.Profiler, name: tMsg[1], duration: tMsg[2], args: tMsg[3], @@ -600,7 +601,7 @@ export default function translate(tMsg: TrackerMessage): RawMessage | null { case 41: { return { - tp: "o_table", + tp: MType.OTable, key: tMsg[1], value: tMsg[2], } @@ -608,7 +609,7 @@ export default function translate(tMsg: TrackerMessage): RawMessage | null { case 44: { return { - tp: "redux", + tp: MType.Redux, action: tMsg[1], state: tMsg[2], duration: tMsg[3], @@ -617,7 +618,7 @@ export default function translate(tMsg: TrackerMessage): RawMessage | null { case 45: { return { - tp: "vuex", + tp: MType.Vuex, mutation: tMsg[1], state: tMsg[2], } @@ -625,7 +626,7 @@ export default function translate(tMsg: TrackerMessage): RawMessage | null { case 46: { return { - tp: "mob_x", + tp: MType.MobX, type: tMsg[1], payload: tMsg[2], } @@ -633,7 +634,7 @@ export default function translate(tMsg: TrackerMessage): RawMessage | null { case 47: { return { - tp: "ng_rx", + tp: MType.NgRx, action: tMsg[1], state: tMsg[2], duration: tMsg[3], @@ -642,7 +643,7 @@ export default function translate(tMsg: TrackerMessage): RawMessage | null { case 48: { return { - tp: "graph_ql", + tp: MType.GraphQl, operationKind: tMsg[1], operationName: tMsg[2], variables: tMsg[3], @@ -652,7 +653,7 @@ export default function translate(tMsg: TrackerMessage): RawMessage | null { case 49: { return { - tp: "performance_track", + tp: MType.PerformanceTrack, frames: tMsg[1], ticks: tMsg[2], totalJSHeapSize: tMsg[3], @@ -662,7 +663,7 @@ export default function translate(tMsg: TrackerMessage): RawMessage | null { case 54: { return { - tp: "connection_information", + tp: MType.ConnectionInformation, downlink: tMsg[1], type: tMsg[2], } @@ -670,14 +671,14 @@ export default function translate(tMsg: TrackerMessage): RawMessage | null { case 55: { return { - tp: "set_page_visibility", + tp: MType.SetPageVisibility, hidden: tMsg[1], } } case 57: { return { - tp: "load_font_face", + tp: MType.LoadFontFace, parentID: tMsg[1], family: tMsg[2], source: tMsg[3], @@ -687,14 +688,14 @@ export default function translate(tMsg: TrackerMessage): RawMessage | null { case 58: { return { - tp: "set_node_focus", + tp: MType.SetNodeFocus, id: tMsg[1], } } case 59: { return { - tp: "long_task", + tp: MType.LongTask, timestamp: tMsg[1], duration: tMsg[2], context: tMsg[3], @@ -707,7 +708,7 @@ export default function translate(tMsg: TrackerMessage): RawMessage | null { case 60: { return { - tp: "set_node_attribute_url_based", + tp: MType.SetNodeAttributeURLBased, id: tMsg[1], name: tMsg[2], value: tMsg[3], @@ -717,7 +718,7 @@ export default function translate(tMsg: TrackerMessage): RawMessage | null { case 61: { return { - tp: "set_css_data_url_based", + tp: MType.SetCssDataURLBased, id: tMsg[1], data: tMsg[2], baseURL: tMsg[3], @@ -726,7 +727,7 @@ export default function translate(tMsg: TrackerMessage): RawMessage | null { case 67: { return { - tp: "css_insert_rule_url_based", + tp: MType.CssInsertRuleURLBased, id: tMsg[1], rule: tMsg[2], index: tMsg[3], @@ -736,7 +737,7 @@ export default function translate(tMsg: TrackerMessage): RawMessage | null { case 69: { return { - tp: "mouse_click", + tp: MType.MouseClick, id: tMsg[1], hesitationTime: tMsg[2], label: tMsg[3], @@ -746,7 +747,7 @@ export default function translate(tMsg: TrackerMessage): RawMessage | null { case 70: { return { - tp: "create_i_frame_document", + tp: MType.CreateIFrameDocument, frameID: tMsg[1], id: tMsg[2], } @@ -754,7 +755,7 @@ export default function translate(tMsg: TrackerMessage): RawMessage | null { case 71: { return { - tp: "adopted_ss_replace_url_based", + tp: MType.AdoptedSsReplaceURLBased, sheetID: tMsg[1], text: tMsg[2], baseURL: tMsg[3], @@ -763,7 +764,7 @@ export default function translate(tMsg: TrackerMessage): RawMessage | null { case 73: { return { - tp: "adopted_ss_insert_rule_url_based", + tp: MType.AdoptedSsInsertRuleURLBased, sheetID: tMsg[1], rule: tMsg[2], index: tMsg[3], @@ -773,7 +774,7 @@ export default function translate(tMsg: TrackerMessage): RawMessage | null { case 75: { return { - tp: "adopted_ss_delete_rule", + tp: MType.AdoptedSsDeleteRule, sheetID: tMsg[1], index: tMsg[2], } @@ -781,7 +782,7 @@ export default function translate(tMsg: TrackerMessage): RawMessage | null { case 76: { return { - tp: "adopted_ss_add_owner", + tp: MType.AdoptedSsAddOwner, sheetID: tMsg[1], id: tMsg[2], } @@ -789,7 +790,7 @@ export default function translate(tMsg: TrackerMessage): RawMessage | null { case 77: { return { - tp: "adopted_ss_remove_owner", + tp: MType.AdoptedSsRemoveOwner, sheetID: tMsg[1], id: tMsg[2], } @@ -797,7 +798,7 @@ export default function translate(tMsg: TrackerMessage): RawMessage | null { case 79: { return { - tp: "zustand", + tp: MType.Zustand, mutation: tMsg[1], state: tMsg[2], } diff --git a/mobs/run.rb b/mobs/run.rb index 31adfcba1..8d481e3b3 100644 --- a/mobs/run.rb +++ b/mobs/run.rb @@ -7,7 +7,7 @@ class String self.sub('Id', 'ID').sub('Url', 'URL') end - # pascal_case + # PascalCase def pascal_case return self if self !~ /_/ && self =~ /[A-Z]+.*/ split('_').map{|e| e.capitalize}.join.upperize_abbreviations diff --git a/mobs/templates/frontend~app~player~web~messages~RawMessageReader.erb b/mobs/templates/frontend~app~player~web~messages~RawMessageReader.gen.ts.erb similarity index 87% rename from mobs/templates/frontend~app~player~web~messages~RawMessageReader.erb rename to mobs/templates/frontend~app~player~web~messages~RawMessageReader.gen.ts.erb index 336fd957e..3c9268366 100644 --- a/mobs/templates/frontend~app~player~web~messages~RawMessageReader.erb +++ b/mobs/templates/frontend~app~player~web~messages~RawMessageReader.gen.ts.erb @@ -2,7 +2,8 @@ /* eslint-disable */ import PrimitiveReader from './PrimitiveReader' -import type { RawMessage } from './raw' +import { MType } from './raw.gen' +import type { RawMessage } from './raw.gen' export default class RawMessageReader extends PrimitiveReader { @@ -22,7 +23,7 @@ export default class RawMessageReader extends PrimitiveReader { <%= msg.attributes.map { |attr| " const #{attr.name.camel_case} = this.read#{attr.type.to_s.pascal_case}(); if (#{attr.name.camel_case} === null) { return resetPointer() }" }.join "\n" %> return { - tp: "<%= msg.name.snake_case %>", + tp: MType.<%= msg.name.snake_case.pascal_case %>, <%= msg.attributes.map { |attr| " #{attr.name.camel_case}," }.join "\n" %> }; diff --git a/mobs/templates/frontend~app~player~web~messages~message.ts.erb b/mobs/templates/frontend~app~player~web~messages~message.gen.ts.erb similarity index 87% rename from mobs/templates/frontend~app~player~web~messages~message.ts.erb rename to mobs/templates/frontend~app~player~web~messages~message.gen.ts.erb index 666b0f740..40cd7a968 100644 --- a/mobs/templates/frontend~app~player~web~messages~message.ts.erb +++ b/mobs/templates/frontend~app~player~web~messages~message.gen.ts.erb @@ -2,10 +2,10 @@ /* eslint-disable */ import type { Timed } from './timed' -import type { RawMessage } from './raw' +import type { RawMessage } from './raw.gen' import type { <%= $messages.select { |msg| msg.replayer != false }.map { |msg| " Raw#{msg.name.snake_case.pascal_case}," }.join "\n" %> -} from './raw' +} from './raw.gen' export type Message = RawMessage & Timed diff --git a/mobs/templates/frontend~app~player~web~messages~raw.ts.erb b/mobs/templates/frontend~app~player~web~messages~raw.gen.ts.erb similarity index 66% rename from mobs/templates/frontend~app~player~web~messages~raw.ts.erb rename to mobs/templates/frontend~app~player~web~messages~raw.gen.ts.erb index 3099f39ff..fbfdc9492 100644 --- a/mobs/templates/frontend~app~player~web~messages~raw.ts.erb +++ b/mobs/templates/frontend~app~player~web~messages~raw.gen.ts.erb @@ -1,9 +1,16 @@ // Auto-generated, do not edit /* eslint-disable */ +export const enum MType { +<%= $messages.select { |msg| msg.replayer != false } + .map { |msg| " #{msg.name.snake_case.pascal_case} = #{msg.id}," } + .join "\n" +%> +} + <% $messages.select { |msg| msg.replayer != false }.each do |msg| %> export interface Raw<%= msg.name.snake_case.pascal_case %> { - tp: "<%= msg.name.snake_case %>", + tp: MType.<%= msg.name.snake_case.pascal_case %>, <%= msg.attributes.map { |attr| " #{attr.name.camel_case}: #{attr.type_js}," }.join "\n" %> } <% end %> diff --git a/mobs/templates/frontend~app~player~web~messages~tracker-legacy.gen.ts.erb b/mobs/templates/frontend~app~player~web~messages~tracker-legacy.gen.ts.erb new file mode 100644 index 000000000..37b9609b2 --- /dev/null +++ b/mobs/templates/frontend~app~player~web~messages~tracker-legacy.gen.ts.erb @@ -0,0 +1,7 @@ +// Auto-generated, do not edit + +import { MType } from './raw.gen' + +export const TP_MAP = { +<%= $messages.select { |msg| msg.replayer != false }.map { |msg| " #{msg.id}: MType.#{msg.name.snake_case.pascal_case}," }.join "\n" %> +} as const diff --git a/mobs/templates/frontend~app~player~web~messages~tracker-legacy.ts.erb b/mobs/templates/frontend~app~player~web~messages~tracker-legacy.ts.erb deleted file mode 100644 index 28f1d64d7..000000000 --- a/mobs/templates/frontend~app~player~web~messages~tracker-legacy.ts.erb +++ /dev/null @@ -1,7 +0,0 @@ -// @ts-nocheck -/* eslint-disable */ -// Auto-generated, do not edit - -export const TP_MAP = { -<%= $messages.select { |msg| msg.tracker || msg.replayer != false }.map { |msg| " #{msg.id}: \"#{msg.name.snake_case}\"," }.join "\n" %> -} as const diff --git a/mobs/templates/frontend~app~player~web~messages~tracker.ts.erb b/mobs/templates/frontend~app~player~web~messages~tracker.gen.ts.erb similarity index 85% rename from mobs/templates/frontend~app~player~web~messages~tracker.ts.erb rename to mobs/templates/frontend~app~player~web~messages~tracker.gen.ts.erb index 8c5874de6..679ac9284 100644 --- a/mobs/templates/frontend~app~player~web~messages~tracker.ts.erb +++ b/mobs/templates/frontend~app~player~web~messages~tracker.gen.ts.erb @@ -1,7 +1,8 @@ // Auto-generated, do not edit /* eslint-disable */ -import type { RawMessage } from './raw' +import type { RawMessage } from './raw.gen' +import { MType } from './raw.gen' <% $messages.select { |msg| msg.tracker }.each do |msg| %> type Tr<%= msg.name %> = [ @@ -17,7 +18,7 @@ export default function translate(tMsg: TrackerMessage): RawMessage | null { <% $messages.select { |msg| msg.replayer != false && msg.tracker }.each do |msg| %> case <%= msg.id %>: { return { - tp: "<%= msg.name.snake_case %>", + tp: MType.<%= msg.name.snake_case.pascal_case %>, <%= msg.attributes.map.with_index { |attr, i| "#{attr.name.camel_case}: tMsg[#{i+1}]," }.join "\n " %> } }