diff --git a/tracker/tracker/package.json b/tracker/tracker/package.json index e5fdefddf..0c5b06634 100644 --- a/tracker/tracker/package.json +++ b/tracker/tracker/package.json @@ -1,7 +1,7 @@ { "name": "@openreplay/tracker", "description": "The OpenReplay tracker main package", - "version": "3.5.7", + "version": "3.5.9", "keywords": [ "logging", "replay" diff --git a/tracker/tracker/src/main/modules/mouse.ts b/tracker/tracker/src/main/modules/mouse.ts index 196a89653..b72e5dbb9 100644 --- a/tracker/tracker/src/main/modules/mouse.ts +++ b/tracker/tracker/src/main/modules/mouse.ts @@ -83,10 +83,6 @@ function _getTarget(target: Element): Element | null { } export default function (app: App): void { - // const options: Options = Object.assign( - // {}, - // opts, - // ); function getTargetLabel(target: Element): string { const dl = getLabelAttribute(target); diff --git a/tracker/tracker/src/webworker/BatchWriter.ts b/tracker/tracker/src/webworker/BatchWriter.ts index de0e956ef..5f220bbec 100644 --- a/tracker/tracker/src/webworker/BatchWriter.ts +++ b/tracker/tracker/src/webworker/BatchWriter.ts @@ -28,9 +28,10 @@ export default class BatchWriter { this.beaconSizeLimit = limit } + // TODO: clear workflow writeMessage(message: Message) { if (message instanceof Timestamp) { - this.timestamp = (message).timestamp; + this.timestamp = (message).timestamp } if (!message.encode(this.writer)) { @@ -58,10 +59,11 @@ export default class BatchWriter { this.isEmpty = false } - flush(): Uint8Array | null { - if (this.isEmpty) { return null } + finaliseBatch() { + if (this.isEmpty) { return } + this.onBatch(this.writer.flush()) + this.prepareBatchMeta() this.isEmpty = true - return this.writer.flush() } clean() { diff --git a/tracker/tracker/src/webworker/index.ts b/tracker/tracker/src/webworker/index.ts index 519deeb0f..b9640e9e2 100644 --- a/tracker/tracker/src/webworker/index.ts +++ b/tracker/tracker/src/webworker/index.ts @@ -2,6 +2,7 @@ import Message from "../messages/message.js"; import { classes, SetPageVisibility, + MouseMove, } from "../messages/index.js"; import QueueSender from "./QueueSender.js"; import BatchWriter from "./BatchWriter.js"; @@ -15,11 +16,10 @@ let sender: QueueSender | null = null let writer: BatchWriter | null = null function send(): void { - if (!sender || !writer) { + if (!writer) { return } - const batch = writer.flush() - batch && sender.push(batch) + writer.finaliseBatch() } @@ -58,6 +58,10 @@ self.onmessage = ({ data }: MessageEvent) => { } if (Array.isArray(data)) { + if (!writer) { + throw new Error("WebWorker: writer not initialised.") + } + const w = writer // Message[] data.forEach((data) => { const message: Message = new (classes.get(data._id))(); @@ -68,8 +72,8 @@ self.onmessage = ({ data }: MessageEvent) => { } else { clearTimeout(restartTimeoutID) } - } - writer && writer.writeMessage(message) + } + w.writeMessage(message) }) return } @@ -100,8 +104,14 @@ self.onmessage = ({ data }: MessageEvent) => { } if (data.type === "auth") { - sender && sender.authorise(data.token) - data.beaconSizeLimit && writer && writer.setBeaconSizeLimit(data.beaconSizeLimit) + if (!sender) { + throw new Error("WebWorker: sender not initialised. Recieved auth.") + } + if (!writer) { + throw new Error("WebWorker: writer not initialised. Recieved auth.") + } + sender.authorise(data.token) + data.beaconSizeLimit && writer.setBeaconSizeLimit(data.beaconSizeLimit) return } };