diff --git a/tracker/tracker/CHANGELOG.md b/tracker/tracker/CHANGELOG.md index 9edadaedc..d881fb5fb 100644 --- a/tracker/tracker/CHANGELOG.md +++ b/tracker/tracker/CHANGELOG.md @@ -1,6 +1,11 @@ +# 12.0.12 + +- fix for potential redux plugin issues after .11 ... + # 12.0.11 - better restart on unauth (new token assign for long sessions) +- more safeguards around arraybuffer and dataview types for network proxy # 12.0.10 diff --git a/tracker/tracker/bun.lockb b/tracker/tracker/bun.lockb index 835c5d24b..b88246e27 100755 Binary files a/tracker/tracker/bun.lockb and b/tracker/tracker/bun.lockb differ diff --git a/tracker/tracker/package.json b/tracker/tracker/package.json index 5b3055e4a..04fff1035 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": "12.0.10-beta.1", + "version": "12.0.12", "keywords": [ "logging", "replay" diff --git a/tracker/tracker/src/main/modules/Network/utils.ts b/tracker/tracker/src/main/modules/Network/utils.ts index 4dd90b3d3..e397d1f40 100644 --- a/tracker/tracker/src/main/modules/Network/utils.ts +++ b/tracker/tracker/src/main/modules/Network/utils.ts @@ -153,13 +153,13 @@ export const genFormattedBody = (body?: BodyInit) => { result[key] = typeof value === 'string' ? value : '[object Object]' } } else if ( + ArrayBuffer.isView(body) || body instanceof Blob || body instanceof ReadableStream || body instanceof ArrayBuffer ) { - result = 'byte data' + result = '[byte data]' } else if (isPureObject(body)) { - // overriding ArrayBufferView which is not convertable to string result = body } else { result = `can't parse body ${typeof body}` @@ -175,6 +175,9 @@ export function isIterable(value: any) { if (value === null || value === undefined) { return false } + if (ArrayBuffer.isView(value)) { + return false + } return typeof Symbol !== 'undefined' && typeof value[Symbol.iterator] === 'function' } diff --git a/tracker/tracker/src/tests/network.utils.test.ts b/tracker/tracker/src/tests/network.utils.test.ts index 1aae41eb6..cf2730af9 100644 --- a/tracker/tracker/src/tests/network.utils.test.ts +++ b/tracker/tracker/src/tests/network.utils.test.ts @@ -41,10 +41,14 @@ describe('Network utility function tests', () => { it('genFormattedBody should format body correctly', () => { const param = new URLSearchParams('key=value&other=test') const blob = new Blob([param.toString()], { type: 'text/plain' }) + const uArr = new Uint8Array([1, 2, 3]) + const dataView = new DataView(uArr.buffer) expect(genFormattedBody('{"key":"value"}')).toEqual({ key: 'value' }) expect(genFormattedBody('key=value&other=test')).toEqual({ key: 'value', other: 'test' }) expect(genFormattedBody(param)).toEqual({ key: 'value', other: 'test' }) - expect(genFormattedBody(blob)).toEqual('byte data') + expect(genFormattedBody(blob)).toEqual('[byte data]') + expect(genFormattedBody(dataView)).toEqual('[byte data]') + expect(genFormattedBody(uArr)).toEqual('[byte data]') }) it('isPureObject should return true for objects', () => {