@cendarsoss/pusher-js 8.4.16 → 8.4.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/node/pusher.js +47 -39
- package/dist/node/pusher.js.map +1 -1
- package/dist/web/pusher.mjs +47 -39
- package/dist/web/pusher.mjs.map +1 -1
- package/package.json +1 -1
- package/src/core/connection/protocol/protocol.ts +4 -3
- package/src/core/delta/manager.ts +58 -32
- package/src/core/pusher.ts +3 -21
package/dist/web/pusher.mjs
CHANGED
|
@@ -1296,8 +1296,8 @@ const Protocol = {
|
|
|
1296
1296
|
if (messageData.user_id) {
|
|
1297
1297
|
pusherEvent.user_id = messageData.user_id;
|
|
1298
1298
|
}
|
|
1299
|
-
const sequence = messageData.
|
|
1300
|
-
const conflationKey = messageData.
|
|
1299
|
+
const sequence = messageData.seq;
|
|
1300
|
+
const conflationKey = messageData.conflation_key;
|
|
1301
1301
|
if (typeof sequence === "number") {
|
|
1302
1302
|
pusherEvent.sequence = sequence;
|
|
1303
1303
|
}
|
|
@@ -5425,27 +5425,24 @@ class DeltaCompressionManager {
|
|
|
5425
5425
|
deltaSize: deltaBytes.length,
|
|
5426
5426
|
compressionRatio: (deltaBytes.length / reconstructedMessage.length * 100).toFixed(1) + "%"
|
|
5427
5427
|
});
|
|
5428
|
+
let reconstructedData;
|
|
5428
5429
|
try {
|
|
5429
|
-
|
|
5430
|
-
|
|
5431
|
-
|
|
5432
|
-
try {
|
|
5433
|
-
data = JSON.parse(data);
|
|
5434
|
-
} catch (e) {
|
|
5435
|
-
}
|
|
5436
|
-
}
|
|
5437
|
-
return {
|
|
5438
|
-
event,
|
|
5430
|
+
reconstructedData = JSON.parse(JSON.parse(reconstructedMessage));
|
|
5431
|
+
} catch (parseError) {
|
|
5432
|
+
this.error("Failed to parse reconstructed message as JSON", {
|
|
5439
5433
|
channel,
|
|
5440
|
-
data
|
|
5441
|
-
};
|
|
5442
|
-
} catch (e) {
|
|
5443
|
-
return {
|
|
5444
5434
|
event,
|
|
5445
|
-
|
|
5446
|
-
|
|
5447
|
-
|
|
5435
|
+
sequence,
|
|
5436
|
+
parseError: parseError.message,
|
|
5437
|
+
reconstructedMessageLength: reconstructedMessage.length
|
|
5438
|
+
});
|
|
5439
|
+
reconstructedData = reconstructedMessage;
|
|
5448
5440
|
}
|
|
5441
|
+
return {
|
|
5442
|
+
event,
|
|
5443
|
+
channel,
|
|
5444
|
+
data: reconstructedData
|
|
5445
|
+
};
|
|
5449
5446
|
} catch (error) {
|
|
5450
5447
|
this.error("Delta decode failed", {
|
|
5451
5448
|
channel,
|
|
@@ -5466,10 +5463,19 @@ class DeltaCompressionManager {
|
|
|
5466
5463
|
* Handle regular (full) message with delta sequence markers
|
|
5467
5464
|
*/
|
|
5468
5465
|
handleFullMessage(channel, rawMessage, sequence, conflationKey) {
|
|
5466
|
+
let parsedMessage;
|
|
5467
|
+
try {
|
|
5468
|
+
parsedMessage = JSON.parse(rawMessage);
|
|
5469
|
+
} catch (e) {
|
|
5470
|
+
this.log("handleFullMessage parse failed", {
|
|
5471
|
+
channel,
|
|
5472
|
+
hasSequence: sequence === 0 || !!sequence
|
|
5473
|
+
});
|
|
5474
|
+
return;
|
|
5475
|
+
}
|
|
5469
5476
|
if (!sequence && sequence !== 0) {
|
|
5470
5477
|
try {
|
|
5471
|
-
const
|
|
5472
|
-
const candidate = typeof parsed.data === "string" ? JSON.parse(parsed.data).__delta_seq ?? parsed.__delta_seq : parsed.data?.__delta_seq ?? parsed.__delta_seq;
|
|
5478
|
+
const candidate = typeof parsedMessage.data === "string" ? JSON.parse(parsedMessage.data).__delta_seq ?? parsedMessage.__delta_seq : parsedMessage.data?.__delta_seq ?? parsedMessage.__delta_seq;
|
|
5473
5479
|
if (candidate === 0 || candidate) {
|
|
5474
5480
|
sequence = candidate;
|
|
5475
5481
|
} else {
|
|
@@ -5487,7 +5493,22 @@ class DeltaCompressionManager {
|
|
|
5487
5493
|
return;
|
|
5488
5494
|
}
|
|
5489
5495
|
}
|
|
5490
|
-
|
|
5496
|
+
if (parsedMessage?.data === void 0) {
|
|
5497
|
+
this.log("handleFullMessage missing data field, skipping", {
|
|
5498
|
+
channel,
|
|
5499
|
+
hasSequence: sequence === 0 || !!sequence
|
|
5500
|
+
});
|
|
5501
|
+
return;
|
|
5502
|
+
}
|
|
5503
|
+
const baseMessage = JSON.stringify(parsedMessage.data);
|
|
5504
|
+
if (typeof baseMessage !== "string") {
|
|
5505
|
+
this.log("handleFullMessage base serialization failed, skipping", {
|
|
5506
|
+
channel,
|
|
5507
|
+
hasSequence: sequence === 0 || !!sequence
|
|
5508
|
+
});
|
|
5509
|
+
return;
|
|
5510
|
+
}
|
|
5511
|
+
const messageSize = baseMessage.length;
|
|
5491
5512
|
let channelState = this.channelStates.get(channel);
|
|
5492
5513
|
if (!channelState) {
|
|
5493
5514
|
channelState = new ChannelState(channel);
|
|
@@ -5500,8 +5521,7 @@ class DeltaCompressionManager {
|
|
|
5500
5521
|
if (channelState.conflationKey && finalConflationKey !== void 0) {
|
|
5501
5522
|
channelState.updateConflationCache(
|
|
5502
5523
|
finalConflationKey,
|
|
5503
|
-
|
|
5504
|
-
// Store raw message directly
|
|
5524
|
+
baseMessage,
|
|
5505
5525
|
sequence
|
|
5506
5526
|
);
|
|
5507
5527
|
this.log("Stored full message (conflation)", {
|
|
@@ -5511,7 +5531,7 @@ class DeltaCompressionManager {
|
|
|
5511
5531
|
size: messageSize
|
|
5512
5532
|
});
|
|
5513
5533
|
} else {
|
|
5514
|
-
channelState.setBase(
|
|
5534
|
+
channelState.setBase(baseMessage, sequence);
|
|
5515
5535
|
this.log("Stored full message", {
|
|
5516
5536
|
channel,
|
|
5517
5537
|
sequence,
|
|
@@ -5732,22 +5752,10 @@ const _Pusher = class _Pusher {
|
|
|
5732
5752
|
if (typeof event.conflation_key === "string") {
|
|
5733
5753
|
conflationKey = event.conflation_key;
|
|
5734
5754
|
}
|
|
5735
|
-
|
|
5736
|
-
if (fullMessage && sequence !== void 0) {
|
|
5737
|
-
fullMessage = fullMessage.replace(/,"__delta_seq":\d+/g, "");
|
|
5738
|
-
fullMessage = fullMessage.replace(/"__delta_seq":\d+,/g, "");
|
|
5739
|
-
fullMessage = fullMessage.replace(
|
|
5740
|
-
/,"__conflation_key":"[^"]*"/g,
|
|
5741
|
-
""
|
|
5742
|
-
);
|
|
5743
|
-
fullMessage = fullMessage.replace(
|
|
5744
|
-
/"__conflation_key":"[^"]*",/g,
|
|
5745
|
-
""
|
|
5746
|
-
);
|
|
5747
|
-
}
|
|
5755
|
+
const rawMessage = event.rawMessage || "";
|
|
5748
5756
|
this.deltaCompression.handleFullMessage(
|
|
5749
5757
|
event.channel,
|
|
5750
|
-
|
|
5758
|
+
rawMessage,
|
|
5751
5759
|
sequence,
|
|
5752
5760
|
conflationKey
|
|
5753
5761
|
);
|