@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/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,27 +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
|
-
|
|
3966
|
-
try {
|
|
3967
|
-
data = JSON.parse(data);
|
|
3968
|
-
} catch (e) {
|
|
3969
|
-
}
|
|
3970
|
-
}
|
|
3971
|
-
return {
|
|
3972
|
-
event,
|
|
3964
|
+
reconstructedData = JSON.parse(JSON.parse(reconstructedMessage));
|
|
3965
|
+
} catch (parseError) {
|
|
3966
|
+
this.error("Failed to parse reconstructed message as JSON", {
|
|
3973
3967
|
channel,
|
|
3974
|
-
data
|
|
3975
|
-
};
|
|
3976
|
-
} catch (e) {
|
|
3977
|
-
return {
|
|
3978
3968
|
event,
|
|
3979
|
-
|
|
3980
|
-
|
|
3981
|
-
|
|
3969
|
+
sequence,
|
|
3970
|
+
parseError: parseError.message,
|
|
3971
|
+
reconstructedMessageLength: reconstructedMessage.length
|
|
3972
|
+
});
|
|
3973
|
+
reconstructedData = reconstructedMessage;
|
|
3982
3974
|
}
|
|
3975
|
+
return {
|
|
3976
|
+
event,
|
|
3977
|
+
channel,
|
|
3978
|
+
data: reconstructedData
|
|
3979
|
+
};
|
|
3983
3980
|
} catch (error) {
|
|
3984
3981
|
this.error("Delta decode failed", {
|
|
3985
3982
|
channel,
|
|
@@ -4000,10 +3997,19 @@ class DeltaCompressionManager {
|
|
|
4000
3997
|
* Handle regular (full) message with delta sequence markers
|
|
4001
3998
|
*/
|
|
4002
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
|
+
}
|
|
4003
4010
|
if (!sequence && sequence !== 0) {
|
|
4004
4011
|
try {
|
|
4005
|
-
const
|
|
4006
|
-
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;
|
|
4007
4013
|
if (candidate === 0 || candidate) {
|
|
4008
4014
|
sequence = candidate;
|
|
4009
4015
|
} else {
|
|
@@ -4021,7 +4027,22 @@ class DeltaCompressionManager {
|
|
|
4021
4027
|
return;
|
|
4022
4028
|
}
|
|
4023
4029
|
}
|
|
4024
|
-
|
|
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;
|
|
4025
4046
|
let channelState = this.channelStates.get(channel);
|
|
4026
4047
|
if (!channelState) {
|
|
4027
4048
|
channelState = new ChannelState(channel);
|
|
@@ -4034,8 +4055,7 @@ class DeltaCompressionManager {
|
|
|
4034
4055
|
if (channelState.conflationKey && finalConflationKey !== void 0) {
|
|
4035
4056
|
channelState.updateConflationCache(
|
|
4036
4057
|
finalConflationKey,
|
|
4037
|
-
|
|
4038
|
-
// Store raw message directly
|
|
4058
|
+
baseMessage,
|
|
4039
4059
|
sequence
|
|
4040
4060
|
);
|
|
4041
4061
|
this.log("Stored full message (conflation)", {
|
|
@@ -4045,7 +4065,7 @@ class DeltaCompressionManager {
|
|
|
4045
4065
|
size: messageSize
|
|
4046
4066
|
});
|
|
4047
4067
|
} else {
|
|
4048
|
-
channelState.setBase(
|
|
4068
|
+
channelState.setBase(baseMessage, sequence);
|
|
4049
4069
|
this.log("Stored full message", {
|
|
4050
4070
|
channel,
|
|
4051
4071
|
sequence,
|
|
@@ -4287,22 +4307,10 @@ class Pusher {
|
|
|
4287
4307
|
if (typeof event.conflation_key === "string") {
|
|
4288
4308
|
conflationKey = event.conflation_key;
|
|
4289
4309
|
}
|
|
4290
|
-
|
|
4291
|
-
if (fullMessage && sequence !== void 0) {
|
|
4292
|
-
fullMessage = fullMessage.replace(/,"__delta_seq":\d+/g, "");
|
|
4293
|
-
fullMessage = fullMessage.replace(/"__delta_seq":\d+,/g, "");
|
|
4294
|
-
fullMessage = fullMessage.replace(
|
|
4295
|
-
/,"__conflation_key":"[^"]*"/g,
|
|
4296
|
-
""
|
|
4297
|
-
);
|
|
4298
|
-
fullMessage = fullMessage.replace(
|
|
4299
|
-
/"__conflation_key":"[^"]*",/g,
|
|
4300
|
-
""
|
|
4301
|
-
);
|
|
4302
|
-
}
|
|
4310
|
+
const rawMessage = event.rawMessage || "";
|
|
4303
4311
|
this.deltaCompression.handleFullMessage(
|
|
4304
4312
|
event.channel,
|
|
4305
|
-
|
|
4313
|
+
rawMessage,
|
|
4306
4314
|
sequence,
|
|
4307
4315
|
conflationKey
|
|
4308
4316
|
);
|