@cendarsoss/pusher-js 8.4.15 → 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 -32
- package/dist/node/pusher.js.map +1 -1
- package/dist/web/pusher.mjs +47 -32
- 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 -25
- package/src/core/pusher.ts +3 -21
package/dist/node/pusher.js
CHANGED
|
@@ -840,8 +840,8 @@ const Protocol = {
|
|
|
840
840
|
if (messageData.user_id) {
|
|
841
841
|
pusherEvent.user_id = messageData.user_id;
|
|
842
842
|
}
|
|
843
|
-
const sequence = messageData.
|
|
844
|
-
const conflationKey = messageData.
|
|
843
|
+
const sequence = messageData.seq;
|
|
844
|
+
const conflationKey = messageData.conflation_key;
|
|
845
845
|
if (typeof sequence === "number") {
|
|
846
846
|
pusherEvent.sequence = sequence;
|
|
847
847
|
}
|
|
@@ -3959,20 +3959,24 @@ class DeltaCompressionManager {
|
|
|
3959
3959
|
deltaSize: deltaBytes.length,
|
|
3960
3960
|
compressionRatio: (deltaBytes.length / reconstructedMessage.length * 100).toFixed(1) + "%"
|
|
3961
3961
|
});
|
|
3962
|
+
let reconstructedData;
|
|
3962
3963
|
try {
|
|
3963
|
-
|
|
3964
|
-
|
|
3965
|
-
|
|
3964
|
+
reconstructedData = JSON.parse(JSON.parse(reconstructedMessage));
|
|
3965
|
+
} catch (parseError) {
|
|
3966
|
+
this.error("Failed to parse reconstructed message as JSON", {
|
|
3966
3967
|
channel,
|
|
3967
|
-
data: parsedMessage.data || parsedMessage
|
|
3968
|
-
};
|
|
3969
|
-
} catch (e) {
|
|
3970
|
-
return {
|
|
3971
3968
|
event,
|
|
3972
|
-
|
|
3973
|
-
|
|
3974
|
-
|
|
3969
|
+
sequence,
|
|
3970
|
+
parseError: parseError.message,
|
|
3971
|
+
reconstructedMessageLength: reconstructedMessage.length
|
|
3972
|
+
});
|
|
3973
|
+
reconstructedData = reconstructedMessage;
|
|
3975
3974
|
}
|
|
3975
|
+
return {
|
|
3976
|
+
event,
|
|
3977
|
+
channel,
|
|
3978
|
+
data: reconstructedData
|
|
3979
|
+
};
|
|
3976
3980
|
} catch (error) {
|
|
3977
3981
|
this.error("Delta decode failed", {
|
|
3978
3982
|
channel,
|
|
@@ -3993,10 +3997,19 @@ class DeltaCompressionManager {
|
|
|
3993
3997
|
* Handle regular (full) message with delta sequence markers
|
|
3994
3998
|
*/
|
|
3995
3999
|
handleFullMessage(channel, rawMessage, sequence, conflationKey) {
|
|
4000
|
+
let parsedMessage;
|
|
4001
|
+
try {
|
|
4002
|
+
parsedMessage = JSON.parse(rawMessage);
|
|
4003
|
+
} catch (e) {
|
|
4004
|
+
this.log("handleFullMessage parse failed", {
|
|
4005
|
+
channel,
|
|
4006
|
+
hasSequence: sequence === 0 || !!sequence
|
|
4007
|
+
});
|
|
4008
|
+
return;
|
|
4009
|
+
}
|
|
3996
4010
|
if (!sequence && sequence !== 0) {
|
|
3997
4011
|
try {
|
|
3998
|
-
const
|
|
3999
|
-
const candidate = typeof parsed.data === "string" ? JSON.parse(parsed.data).__delta_seq ?? parsed.__delta_seq : parsed.data?.__delta_seq ?? parsed.__delta_seq;
|
|
4012
|
+
const candidate = typeof parsedMessage.data === "string" ? JSON.parse(parsedMessage.data).__delta_seq ?? parsedMessage.__delta_seq : parsedMessage.data?.__delta_seq ?? parsedMessage.__delta_seq;
|
|
4000
4013
|
if (candidate === 0 || candidate) {
|
|
4001
4014
|
sequence = candidate;
|
|
4002
4015
|
} else {
|
|
@@ -4014,7 +4027,22 @@ class DeltaCompressionManager {
|
|
|
4014
4027
|
return;
|
|
4015
4028
|
}
|
|
4016
4029
|
}
|
|
4017
|
-
|
|
4030
|
+
if (parsedMessage?.data === void 0) {
|
|
4031
|
+
this.log("handleFullMessage missing data field, skipping", {
|
|
4032
|
+
channel,
|
|
4033
|
+
hasSequence: sequence === 0 || !!sequence
|
|
4034
|
+
});
|
|
4035
|
+
return;
|
|
4036
|
+
}
|
|
4037
|
+
const baseMessage = JSON.stringify(parsedMessage.data);
|
|
4038
|
+
if (typeof baseMessage !== "string") {
|
|
4039
|
+
this.log("handleFullMessage base serialization failed, skipping", {
|
|
4040
|
+
channel,
|
|
4041
|
+
hasSequence: sequence === 0 || !!sequence
|
|
4042
|
+
});
|
|
4043
|
+
return;
|
|
4044
|
+
}
|
|
4045
|
+
const messageSize = baseMessage.length;
|
|
4018
4046
|
let channelState = this.channelStates.get(channel);
|
|
4019
4047
|
if (!channelState) {
|
|
4020
4048
|
channelState = new ChannelState(channel);
|
|
@@ -4027,8 +4055,7 @@ class DeltaCompressionManager {
|
|
|
4027
4055
|
if (channelState.conflationKey && finalConflationKey !== void 0) {
|
|
4028
4056
|
channelState.updateConflationCache(
|
|
4029
4057
|
finalConflationKey,
|
|
4030
|
-
|
|
4031
|
-
// Store raw message directly
|
|
4058
|
+
baseMessage,
|
|
4032
4059
|
sequence
|
|
4033
4060
|
);
|
|
4034
4061
|
this.log("Stored full message (conflation)", {
|
|
@@ -4038,7 +4065,7 @@ class DeltaCompressionManager {
|
|
|
4038
4065
|
size: messageSize
|
|
4039
4066
|
});
|
|
4040
4067
|
} else {
|
|
4041
|
-
channelState.setBase(
|
|
4068
|
+
channelState.setBase(baseMessage, sequence);
|
|
4042
4069
|
this.log("Stored full message", {
|
|
4043
4070
|
channel,
|
|
4044
4071
|
sequence,
|
|
@@ -4280,22 +4307,10 @@ class Pusher {
|
|
|
4280
4307
|
if (typeof event.conflation_key === "string") {
|
|
4281
4308
|
conflationKey = event.conflation_key;
|
|
4282
4309
|
}
|
|
4283
|
-
|
|
4284
|
-
if (fullMessage && sequence !== void 0) {
|
|
4285
|
-
fullMessage = fullMessage.replace(/,"__delta_seq":\d+/g, "");
|
|
4286
|
-
fullMessage = fullMessage.replace(/"__delta_seq":\d+,/g, "");
|
|
4287
|
-
fullMessage = fullMessage.replace(
|
|
4288
|
-
/,"__conflation_key":"[^"]*"/g,
|
|
4289
|
-
""
|
|
4290
|
-
);
|
|
4291
|
-
fullMessage = fullMessage.replace(
|
|
4292
|
-
/"__conflation_key":"[^"]*",/g,
|
|
4293
|
-
""
|
|
4294
|
-
);
|
|
4295
|
-
}
|
|
4310
|
+
const rawMessage = event.rawMessage || "";
|
|
4296
4311
|
this.deltaCompression.handleFullMessage(
|
|
4297
4312
|
event.channel,
|
|
4298
|
-
|
|
4313
|
+
rawMessage,
|
|
4299
4314
|
sequence,
|
|
4300
4315
|
conflationKey
|
|
4301
4316
|
);
|