@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.
@@ -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.__delta_seq ?? messageData.sequence;
1300
- const conflationKey = messageData.__conflation_key ?? messageData.conflation_key;
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
- const parsedMessage = JSON.parse(reconstructedMessage);
5430
- let data = parsedMessage.data || parsedMessage;
5431
- if (typeof data === "string") {
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
- channel,
5446
- data: reconstructedMessage
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 parsed = JSON.parse(rawMessage);
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
- const messageSize = rawMessage.length;
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
- rawMessage,
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(rawMessage, sequence);
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
- let fullMessage = event.rawMessage || "";
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
- fullMessage,
5758
+ rawMessage,
5751
5759
  sequence,
5752
5760
  conflationKey
5753
5761
  );