Skip to content

Commit 0a54f8f

Browse files
authored
feat(replay): Update fflate to 0.8.2 (#14867)
Also stop using pako for browser integration tests, to unify this. v0.8.2 has some small bug fixes, see: https://github.com/101arrowz/fflate/releases/tag/v0.8.2
1 parent 62e186f commit 0a54f8f

File tree

5 files changed

+19
-21
lines changed

5 files changed

+19
-21
lines changed

dev-packages/browser-integration-tests/package.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,13 +47,12 @@
4747
"axios": "1.7.7",
4848
"babel-loader": "^8.2.2",
4949
"html-webpack-plugin": "^5.5.0",
50-
"pako": "^2.1.0",
50+
"fflate": "0.8.2",
5151
"webpack": "^5.95.0"
5252
},
5353
"devDependencies": {
5454
"@types/glob": "8.0.0",
5555
"@types/node": "^18.19.1",
56-
"@types/pako": "^2.0.0",
5756
"glob": "8.0.3"
5857
},
5958
"volta": {

dev-packages/browser-integration-tests/utils/replayHelpers.ts

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import type { fullSnapshotEvent, incrementalSnapshotEvent } from '@sentry-intern
1212
import { EventType } from '@sentry-internal/rrweb';
1313
import type { ReplayEventWithTime } from '@sentry/browser';
1414
import type { Breadcrumb, Event, ReplayEvent, ReplayRecordingMode } from '@sentry/core';
15-
import pako from 'pako';
15+
import { decompressSync, strFromU8 } from 'fflate';
1616

1717
import { envelopeRequestParser } from './helpers';
1818

@@ -406,9 +406,9 @@ export const replayEnvelopeParser = (request: Request | null): unknown[] => {
406406
if (envelopeBytes[i] === 0x78 && envelopeBytes[i + 1] === 0x9c) {
407407
try {
408408
// We found a zlib-compressed payload - let's decompress it
409-
const payload = envelopeBytes.slice(i);
409+
const payload = (envelopeBytes as Buffer).subarray(i);
410410
// now we return the decompressed payload as JSON
411-
const decompressedPayload = pako.inflate(payload as unknown as Uint8Array, { to: 'string' });
411+
const decompressedPayload = decompress(payload);
412412
return JSON.parse(decompressedPayload);
413413
} catch {
414414
// Let's log that something went wrong
@@ -488,3 +488,12 @@ function getRequest(resOrReq: Request | Response): Request {
488488
// @ts-expect-error we check this
489489
return typeof resOrReq.request === 'function' ? (resOrReq as Response).request() : (resOrReq as Request);
490490
}
491+
492+
/** Decompress a compressed data payload. */
493+
function decompress(data: Uint8Array): string {
494+
if (!(data instanceof Uint8Array)) {
495+
throw new Error(`Data passed to decompress is not a Uint8Array: ${data}`);
496+
}
497+
const decompressed = decompressSync(data);
498+
return strFromU8(decompressed);
499+
}

packages/replay-internal/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@
7171
"@sentry-internal/replay-worker": "8.45.0",
7272
"@sentry-internal/rrweb": "2.31.0",
7373
"@sentry-internal/rrweb-snapshot": "2.31.0",
74-
"fflate": "^0.8.1",
74+
"fflate": "0.8.2",
7575
"jest-matcher-utils": "^29.0.0",
7676
"jsdom-worker": "^0.2.1"
7777
},

packages/replay-worker/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
},
4747
"homepage": "https://docs.sentry.io/platforms/javascript/session-replay/",
4848
"dependencies": {
49-
"fflate": "0.8.1"
49+
"fflate": "0.8.2"
5050
},
5151
"engines": {
5252
"node": ">=18"

yarn.lock

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -10346,11 +10346,6 @@
1034610346
resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e"
1034710347
integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==
1034810348

10349-
"@types/pako@^2.0.0":
10350-
version "2.0.2"
10351-
resolved "https://registry.yarnpkg.com/@types/pako/-/pako-2.0.2.tgz#155edb098859d98dd598b805b27ec2bf96cc5354"
10352-
integrity sha512-AtTbzIwhvLMTEUPudP3hxUwNK50DoX3amfVJmmL7WQH5iF3Kfqs8pG1tStsewHqmh75ULmjjldKn/B70D6DNcQ==
10353-
1035410349
"@types/parse-json@^4.0.0":
1035510350
version "4.0.0"
1035610351
resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0"
@@ -18722,10 +18717,10 @@ fdir@^6.3.0:
1872218717
resolved "https://registry.yarnpkg.com/fdir/-/fdir-6.3.0.tgz#fcca5a23ea20e767b15e081ee13b3e6488ee0bb0"
1872318718
integrity sha512-QOnuT+BOtivR77wYvCWHfGt9s4Pz1VIMbD463vegT5MLqNXy8rYFT/lPVEqf/bhYeT6qmqrNHhsX+rWwe3rOCQ==
1872418719

18725-
[email protected].1, fflate@^0.8.1:
18726-
version "0.8.1"
18727-
resolved "https://registry.yarnpkg.com/fflate/-/fflate-0.8.1.tgz#1ed92270674d2ad3c73f077cd0acf26486dae6c9"
18728-
integrity sha512-/exOvEuc+/iaUm105QIiOt4LpBdMTWsXxqR0HDF35vx3fmaKzw7354gTilCh5rkzEt8WYyG//ku3h3nRmd7CHQ==
18720+
18721+
version "0.8.2"
18722+
resolved "https://registry.yarnpkg.com/fflate/-/fflate-0.8.2.tgz#fc8631f5347812ad6028bbe4a2308b2792aa1dea"
18723+
integrity sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==
1872918724

1873018725
fflate@^0.4.4:
1873118726
version "0.4.8"
@@ -26830,11 +26825,6 @@ pako@^1.0.3:
2683026825
resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf"
2683126826
integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==
2683226827

26833-
pako@^2.1.0:
26834-
version "2.1.0"
26835-
resolved "https://registry.yarnpkg.com/pako/-/pako-2.1.0.tgz#266cc37f98c7d883545d11335c00fbd4062c9a86"
26836-
integrity sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==
26837-
2683826828
param-case@^3.0.4:
2683926829
version "3.0.4"
2684026830
resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5"

0 commit comments

Comments
 (0)