socketon 1.31.2-rc → 1.51.16

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.
Files changed (213) hide show
  1. package/README.md +313 -159
  2. package/WAProto/WAProto.proto +5311 -0
  3. package/WAProto/index.js +65801 -141371
  4. package/lib/Defaults/index.js +117 -141
  5. package/lib/KeyDB/BinarySearch.js +20 -0
  6. package/lib/KeyDB/KeyedDB.js +167 -0
  7. package/lib/KeyDB/index.js +4 -0
  8. package/lib/Signal/Group/ciphertext-message.js +12 -14
  9. package/lib/Signal/Group/group-session-builder.js +10 -42
  10. package/lib/Signal/Group/group_cipher.js +75 -87
  11. package/lib/Signal/Group/index.js +13 -57
  12. package/lib/Signal/Group/keyhelper.js +17 -52
  13. package/lib/Signal/Group/sender-chain-key.js +27 -33
  14. package/lib/Signal/Group/sender-key-distribution-message.js +62 -63
  15. package/lib/Signal/Group/sender-key-message.js +65 -66
  16. package/lib/Signal/Group/sender-key-name.js +45 -44
  17. package/lib/Signal/Group/sender-key-record.js +39 -49
  18. package/lib/Signal/Group/sender-key-state.js +80 -93
  19. package/lib/Signal/Group/sender-message-key.js +27 -28
  20. package/lib/Signal/libsignal.js +313 -163
  21. package/lib/Signal/lid-mapping.js +155 -0
  22. package/lib/Socket/Client/index.js +4 -19
  23. package/lib/Socket/Client/types.js +13 -0
  24. package/lib/Socket/Client/websocket.js +52 -0
  25. package/lib/Socket/Client/websocket.js.bak +53 -0
  26. package/lib/Socket/business.js +359 -242
  27. package/lib/Socket/chats.js +846 -935
  28. package/lib/Socket/communities.js +413 -0
  29. package/lib/Socket/groups.js +304 -309
  30. package/lib/Socket/index.js +15 -10
  31. package/lib/Socket/messages-recv.js +1107 -1054
  32. package/lib/Socket/messages-send.js +639 -448
  33. package/lib/Socket/mex.js +45 -0
  34. package/lib/Socket/newsletter.js +240 -324
  35. package/lib/Socket/socket.js +794 -651
  36. package/lib/Socket/socketon.js +402 -0
  37. package/lib/Store/index.js +6 -10
  38. package/lib/Store/make-cache-manager-store.js +73 -81
  39. package/lib/Store/make-in-memory-store.js +286 -423
  40. package/lib/Store/make-ordered-dictionary.js +77 -79
  41. package/lib/Store/object-repository.js +24 -26
  42. package/lib/Types/Auth.js +3 -2
  43. package/lib/Types/Bussines.js +3 -0
  44. package/lib/Types/Call.js +3 -2
  45. package/lib/Types/Chat.js +9 -4
  46. package/lib/Types/Contact.js +3 -2
  47. package/lib/Types/Events.js +3 -2
  48. package/lib/Types/GroupMetadata.js +3 -2
  49. package/lib/Types/Label.js +24 -26
  50. package/lib/Types/LabelAssociation.js +6 -8
  51. package/lib/Types/Message.js +12 -9
  52. package/lib/Types/Newsletter.js +33 -38
  53. package/lib/Types/Newsletter.js.bak +33 -0
  54. package/lib/Types/Product.js +3 -2
  55. package/lib/Types/Signal.js +3 -2
  56. package/lib/Types/Socket.js +4 -2
  57. package/lib/Types/State.js +11 -2
  58. package/lib/Types/USync.js +3 -2
  59. package/lib/Types/index.js +27 -41
  60. package/lib/Utils/auth-utils.js +211 -198
  61. package/lib/Utils/baileys-event-stream.js +42 -61
  62. package/lib/Utils/browser-utils.js +25 -0
  63. package/lib/Utils/business.js +213 -214
  64. package/lib/Utils/chat-utils.js +710 -687
  65. package/lib/Utils/crypto.js +112 -133
  66. package/lib/Utils/decode-wa-message.js +252 -183
  67. package/lib/Utils/decode-wa-message.js.bak +267 -0
  68. package/lib/Utils/event-buffer.js +510 -496
  69. package/lib/Utils/generics.js +319 -392
  70. package/lib/Utils/history.js +83 -92
  71. package/lib/Utils/index.js +21 -33
  72. package/lib/Utils/link-preview.js +71 -83
  73. package/lib/Utils/logger.js +5 -7
  74. package/lib/Utils/lt-hash.js +40 -46
  75. package/lib/Utils/make-mutex.js +34 -41
  76. package/lib/Utils/message-retry-manager.js +113 -0
  77. package/lib/Utils/messages-media.js +550 -768
  78. package/lib/Utils/messages.js +354 -263
  79. package/lib/Utils/noise-handler.js +138 -149
  80. package/lib/Utils/pre-key-manager.js +85 -0
  81. package/lib/Utils/process-message.js +323 -303
  82. package/lib/Utils/signal.js +149 -141
  83. package/lib/Utils/use-multi-file-auth-state.js +95 -103
  84. package/lib/Utils/validate-connection.js +183 -214
  85. package/lib/WABinary/constants.js +1298 -35
  86. package/lib/WABinary/decode.js +237 -249
  87. package/lib/WABinary/encode.js +213 -260
  88. package/lib/WABinary/generic-utils.js +56 -65
  89. package/lib/WABinary/index.js +7 -21
  90. package/lib/WABinary/jid-utils.js +89 -58
  91. package/lib/WABinary/types.js +3 -2
  92. package/lib/WAM/BinaryInfo.js +10 -12
  93. package/lib/WAM/constants.js +22851 -15348
  94. package/lib/WAM/encode.js +135 -136
  95. package/lib/WAM/index.js +5 -19
  96. package/lib/WAUSync/Protocols/USyncContactProtocol.js +28 -30
  97. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +49 -53
  98. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +27 -28
  99. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +36 -39
  100. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js +50 -50
  101. package/lib/WAUSync/Protocols/UsyncLIDProtocol.js +26 -20
  102. package/lib/WAUSync/Protocols/index.js +6 -20
  103. package/lib/WAUSync/USyncQuery.js +86 -85
  104. package/lib/WAUSync/USyncUser.js +23 -25
  105. package/lib/WAUSync/index.js +5 -19
  106. package/lib/index.js +27 -35
  107. package/package.json +85 -95
  108. package/engine-requirements.js +0 -10
  109. package/lib/Defaults/baileys-version.json +0 -3
  110. package/lib/Defaults/index.d.ts +0 -53
  111. package/lib/Defaults/phonenumber-mcc.json +0 -223
  112. package/lib/Signal/Group/ciphertext-message.d.ts +0 -9
  113. package/lib/Signal/Group/group-session-builder.d.ts +0 -14
  114. package/lib/Signal/Group/group_cipher.d.ts +0 -17
  115. package/lib/Signal/Group/index.d.ts +0 -11
  116. package/lib/Signal/Group/keyhelper.d.ts +0 -10
  117. package/lib/Signal/Group/queue-job.d.ts +0 -1
  118. package/lib/Signal/Group/queue-job.js +0 -57
  119. package/lib/Signal/Group/sender-chain-key.d.ts +0 -13
  120. package/lib/Signal/Group/sender-key-distribution-message.d.ts +0 -16
  121. package/lib/Signal/Group/sender-key-message.d.ts +0 -18
  122. package/lib/Signal/Group/sender-key-name.d.ts +0 -17
  123. package/lib/Signal/Group/sender-key-record.d.ts +0 -30
  124. package/lib/Signal/Group/sender-key-state.d.ts +0 -38
  125. package/lib/Signal/Group/sender-message-key.d.ts +0 -11
  126. package/lib/Signal/libsignal.d.ts +0 -3
  127. package/lib/Socket/Client/abstract-socket-client.d.ts +0 -17
  128. package/lib/Socket/Client/abstract-socket-client.js +0 -13
  129. package/lib/Socket/Client/index.d.ts +0 -3
  130. package/lib/Socket/Client/mobile-socket-client.d.ts +0 -13
  131. package/lib/Socket/Client/mobile-socket-client.js +0 -65
  132. package/lib/Socket/Client/web-socket-client.d.ts +0 -12
  133. package/lib/Socket/Client/web-socket-client.js +0 -62
  134. package/lib/Socket/business.d.ts +0 -171
  135. package/lib/Socket/chats.d.ts +0 -267
  136. package/lib/Socket/dugong.d.ts +0 -254
  137. package/lib/Socket/dugong.js +0 -484
  138. package/lib/Socket/groups.d.ts +0 -115
  139. package/lib/Socket/index.d.ts +0 -173
  140. package/lib/Socket/messages-recv.d.ts +0 -161
  141. package/lib/Socket/messages-send.d.ts +0 -149
  142. package/lib/Socket/newsletter.d.ts +0 -134
  143. package/lib/Socket/registration.d.ts +0 -267
  144. package/lib/Socket/registration.js +0 -166
  145. package/lib/Socket/socket.d.ts +0 -43
  146. package/lib/Socket/usync.d.ts +0 -36
  147. package/lib/Socket/usync.js +0 -70
  148. package/lib/Store/index.d.ts +0 -3
  149. package/lib/Store/make-cache-manager-store.d.ts +0 -13
  150. package/lib/Store/make-in-memory-store.d.ts +0 -118
  151. package/lib/Store/make-ordered-dictionary.d.ts +0 -13
  152. package/lib/Store/object-repository.d.ts +0 -10
  153. package/lib/Types/Auth.d.ts +0 -110
  154. package/lib/Types/Call.d.ts +0 -13
  155. package/lib/Types/Chat.d.ts +0 -102
  156. package/lib/Types/Contact.d.ts +0 -19
  157. package/lib/Types/Events.d.ts +0 -157
  158. package/lib/Types/GroupMetadata.d.ts +0 -55
  159. package/lib/Types/Label.d.ts +0 -35
  160. package/lib/Types/LabelAssociation.d.ts +0 -29
  161. package/lib/Types/Message.d.ts +0 -273
  162. package/lib/Types/Newsletter.d.ts +0 -103
  163. package/lib/Types/Product.d.ts +0 -78
  164. package/lib/Types/Signal.d.ts +0 -57
  165. package/lib/Types/Socket.d.ts +0 -111
  166. package/lib/Types/State.d.ts +0 -27
  167. package/lib/Types/USync.d.ts +0 -25
  168. package/lib/Types/index.d.ts +0 -57
  169. package/lib/Utils/auth-utils.d.ts +0 -18
  170. package/lib/Utils/baileys-event-stream.d.ts +0 -16
  171. package/lib/Utils/business.d.ts +0 -22
  172. package/lib/Utils/chat-utils.d.ts +0 -71
  173. package/lib/Utils/crypto.d.ts +0 -41
  174. package/lib/Utils/decode-wa-message.d.ts +0 -19
  175. package/lib/Utils/event-buffer.d.ts +0 -35
  176. package/lib/Utils/generics.d.ts +0 -92
  177. package/lib/Utils/generics.js.bak +0 -433
  178. package/lib/Utils/history.d.ts +0 -15
  179. package/lib/Utils/index.d.ts +0 -17
  180. package/lib/Utils/link-preview.d.ts +0 -21
  181. package/lib/Utils/logger.d.ts +0 -4
  182. package/lib/Utils/lt-hash.d.ts +0 -12
  183. package/lib/Utils/make-mutex.d.ts +0 -7
  184. package/lib/Utils/messages-media.d.ts +0 -116
  185. package/lib/Utils/messages.d.ts +0 -77
  186. package/lib/Utils/noise-handler.d.ts +0 -21
  187. package/lib/Utils/process-message.d.ts +0 -41
  188. package/lib/Utils/signal.d.ts +0 -32
  189. package/lib/Utils/use-multi-file-auth-state.d.ts +0 -13
  190. package/lib/Utils/validate-connection.d.ts +0 -11
  191. package/lib/Utils/validate-connection.js.bak +0 -237
  192. package/lib/WABinary/constants.d.ts +0 -30
  193. package/lib/WABinary/decode.d.ts +0 -7
  194. package/lib/WABinary/encode.d.ts +0 -3
  195. package/lib/WABinary/generic-utils.d.ts +0 -17
  196. package/lib/WABinary/index.d.ts +0 -5
  197. package/lib/WABinary/jid-utils.d.ts +0 -31
  198. package/lib/WABinary/types.d.ts +0 -18
  199. package/lib/WAM/BinaryInfo.d.ts +0 -17
  200. package/lib/WAM/constants.d.ts +0 -38
  201. package/lib/WAM/encode.d.ts +0 -3
  202. package/lib/WAM/index.d.ts +0 -3
  203. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +0 -9
  204. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +0 -22
  205. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +0 -12
  206. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +0 -12
  207. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts +0 -25
  208. package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts +0 -8
  209. package/lib/WAUSync/Protocols/index.d.ts +0 -4
  210. package/lib/WAUSync/USyncQuery.d.ts +0 -28
  211. package/lib/WAUSync/USyncUser.d.ts +0 -12
  212. package/lib/WAUSync/index.d.ts +0 -3
  213. package/lib/index.d.ts +0 -12
@@ -0,0 +1,267 @@
1
+ //=======================================================//
2
+ import { areJidsSameUser, isHostedLidUser, isHostedPnUser, isJidBroadcast, isJidGroup, isJidMetaAI, isJidNewsletter, isJidStatusBroadcast, isLidUser, isPnUser } from "../WABinary/index.js";
3
+ import { unpadRandomMax16 } from "./generics.js";
4
+ import { proto } from "../../WAProto/index.js";
5
+ import { Boom } from "@hapi/boom";
6
+ //=======================================================//
7
+ export const getDecryptionJid = async (sender, repository) => {
8
+ if (isLidUser(sender) || isHostedLidUser(sender)) {
9
+ return sender;
10
+ }
11
+ const mapped = await repository.lidMapping.getLIDForPN(sender);
12
+ return mapped || sender;
13
+ };
14
+ //=======================================================//
15
+ const storeMappingFromEnvelope = async (stanza, sender, repository, decryptionJid, logger) => {
16
+ const { senderAlt } = extractAddressingContext(stanza);
17
+ if (senderAlt && isLidUser(senderAlt) && isPnUser(sender) && decryptionJid === sender) {
18
+ try {
19
+ await repository.lidMapping.storeLIDPNMappings([{ lid: senderAlt, pn: sender }]);
20
+ await repository.migrateSession(sender, senderAlt);
21
+ logger.debug({ sender, senderAlt }, "Stored LID mapping from envelope");
22
+ }
23
+ catch (error) {
24
+ logger.warn({ sender, senderAlt, error }, "Failed to store LID mapping");
25
+ }
26
+ }
27
+ };
28
+ //=======================================================//
29
+ export const NO_MESSAGE_FOUND_ERROR_TEXT = "Message absent from node";
30
+ export const MISSING_KEYS_ERROR_TEXT = "Key used already or never filled";
31
+ //=======================================================//
32
+ export const DECRYPTION_RETRY_CONFIG = {
33
+ maxRetries: 3,
34
+ baseDelayMs: 100,
35
+ sessionRecordErrors: ["No session record", "SessionError: No session record"]
36
+ };
37
+ //=======================================================//
38
+ export const NACK_REASONS = {
39
+ ParsingError: 487,
40
+ UnrecognizedStanza: 488,
41
+ UnrecognizedStanzaClass: 489,
42
+ UnrecognizedStanzaType: 490,
43
+ InvalidProtobuf: 491,
44
+ InvalidHostedCompanionStanza: 493,
45
+ MissingMessageSecret: 495,
46
+ SignalErrorOldCounter: 496,
47
+ MessageDeletedOnPeer: 499,
48
+ UnhandledError: 500,
49
+ UnsupportedAdminRevoke: 550,
50
+ UnsupportedLIDGroup: 551,
51
+ DBOperationFailed: 552
52
+ };
53
+ //=======================================================//
54
+ export const extractAddressingContext = (stanza) => {
55
+ let senderAlt;
56
+ let recipientAlt;
57
+ const sender = stanza.attrs.participant || stanza.attrs.from;
58
+ const addressingMode = stanza.attrs.addressing_mode || (sender?.endsWith("lid") ? "lid" : "pn");
59
+ if (addressingMode === "lid") {
60
+ senderAlt = stanza.attrs.participant_pn || stanza.attrs.sender_pn || stanza.attrs.peer_recipient_pn;
61
+ recipientAlt = stanza.attrs.recipient_pn;
62
+ }
63
+ else {
64
+ senderAlt = stanza.attrs.participant_lid || stanza.attrs.sender_lid || stanza.attrs.peer_recipient_lid;
65
+ recipientAlt = stanza.attrs.recipient_lid;
66
+ }
67
+ return {
68
+ addressingMode,
69
+ senderAlt,
70
+ recipientAlt
71
+ };
72
+ };
73
+ //=======================================================//
74
+ export function decodeMessageNode(stanza, meId, meLid) {
75
+ let msgType;
76
+ let chatId;
77
+ let author;
78
+ let fromMe = false;
79
+ const msgId = stanza.attrs.id;
80
+ const from = stanza.attrs.from_pn;
81
+ const participant = stanza.attrs.participant_pn;
82
+ const recipient = stanza.attrs.recipient;
83
+ const addressingContext = extractAddressingContext(stanza);
84
+ const isMe = (jid) => areJidsSameUser(jid, meId);
85
+ const isMeLid = (jid) => areJidsSameUser(jid, meLid);
86
+ if (isPnUser(from) || isLidUser(from) || isHostedLidUser(from) || isHostedPnUser(from)) {
87
+ if (recipient && !isJidMetaAI(recipient)) {
88
+ if (!isMe(from) && !isMeLid(from)) {
89
+ throw new Boom("receipient present, but msg not from me", { data: stanza });
90
+ }
91
+ if (isMe(from) || isMeLid(from)) {
92
+ fromMe = true;
93
+ }
94
+ chatId = recipient;
95
+ }
96
+ else {
97
+ chatId = from;
98
+ }
99
+ msgType = "chat";
100
+ author = from;
101
+ }
102
+ else if (isJidGroup(from)) {
103
+ if (!participant) {
104
+ throw new Boom("No participant in group message");
105
+ }
106
+ if (isMe(participant) || isMeLid(participant)) {
107
+ fromMe = true;
108
+ }
109
+ msgType = "group";
110
+ author = participant;
111
+ chatId = from;
112
+ }
113
+ else if (isJidBroadcast(from)) {
114
+ if (!participant) {
115
+ throw new Boom("No participant in group message");
116
+ }
117
+ const isParticipantMe = isMe(participant);
118
+ if (isJidStatusBroadcast(from)) {
119
+ msgType = isParticipantMe ? "direct_peer_status" : "other_status";
120
+ }
121
+ else {
122
+ msgType = isParticipantMe ? "peer_broadcast" : "other_broadcast";
123
+ }
124
+ fromMe = isParticipantMe;
125
+ chatId = from;
126
+ author = participant;
127
+ }
128
+ else if (isJidNewsletter(from)) {
129
+ msgType = "newsletter";
130
+ chatId = from;
131
+ author = from;
132
+ if (isMe(from) || isMeLid(from)) {
133
+ fromMe = true;
134
+ }
135
+ }
136
+ else {
137
+ throw new Boom("Unknown message type", { data: stanza });
138
+ }
139
+ const pushname = stanza?.attrs?.notify;
140
+ const key = {
141
+ remoteJid: chatId,
142
+ remoteJidAlt: !isJidGroup(chatId) ? addressingContext.senderAlt : undefined,
143
+ fromMe,
144
+ id: msgId,
145
+ participant,
146
+ participantAlt: isJidGroup(chatId) ? addressingContext.senderAlt : undefined,
147
+ addressingMode: addressingContext.addressingMode,
148
+ ...(msgType === "newsletter" && stanza.attrs.server_id ? { server_id: stanza.attrs.server_id } : {})
149
+ };
150
+ const fullMessage = {
151
+ key,
152
+ messageTimestamp: +stanza.attrs.t,
153
+ pushName: pushname,
154
+ broadcast: isJidBroadcast(from)
155
+ };
156
+ if (key.fromMe) {
157
+ fullMessage.status = proto.WebMessageInfo.Status.SERVER_ACK;
158
+ }
159
+ return {
160
+ fullMessage,
161
+ author,
162
+ sender: msgType === "chat" ? author : chatId
163
+ };
164
+ }
165
+ //=======================================================//
166
+ export const decryptMessageNode = (stanza, meId, meLid, repository, logger) => {
167
+ const { fullMessage, author, sender } = decodeMessageNode(stanza, meId, meLid);
168
+ return {
169
+ fullMessage,
170
+ category: stanza.attrs.category,
171
+ author,
172
+ async decrypt() {
173
+ let decryptables = 0;
174
+ if (Array.isArray(stanza.content)) {
175
+ for (const { tag, attrs, content } of stanza.content) {
176
+ if (tag === "verified_name" && content instanceof Uint8Array) {
177
+ const cert = proto.VerifiedNameCertificate.decode(content);
178
+ const details = proto.VerifiedNameCertificate.Details.decode(cert.details);
179
+ fullMessage.verifiedBizName = details.verifiedName;
180
+ }
181
+ if (tag === "unavailable" && attrs.type === "view_once") {
182
+ fullMessage.key.isViewOnce = true;
183
+ }
184
+ if (tag !== "enc" && tag !== "plaintext") {
185
+ continue;
186
+ }
187
+ if (!(content instanceof Uint8Array)) {
188
+ continue;
189
+ }
190
+ decryptables += 1;
191
+ let msgBuffer;
192
+ const decryptionJid = await getDecryptionJid(author, repository);
193
+ if (tag !== "plaintext") {
194
+ await storeMappingFromEnvelope(stanza, author, repository, decryptionJid, logger);
195
+ }
196
+ try {
197
+ const e2eType = tag === "plaintext" ? "plaintext" : attrs.type;
198
+ switch (e2eType) {
199
+ case "skmsg":
200
+ msgBuffer = await repository.decryptGroupMessage({
201
+ group: sender,
202
+ authorJid: author,
203
+ msg: content
204
+ });
205
+ break;
206
+ case "pkmsg":
207
+ case "msg":
208
+ msgBuffer = await repository.decryptMessage({
209
+ jid: decryptionJid,
210
+ type: e2eType,
211
+ ciphertext: content
212
+ });
213
+ break;
214
+ case "plaintext":
215
+ msgBuffer = content;
216
+ break;
217
+ default:
218
+ throw new Error(`Unknown e2e type: ${e2eType}`);
219
+ }
220
+ let msg = proto.Message.decode(e2eType !== "plaintext" ? unpadRandomMax16(msgBuffer) : msgBuffer);
221
+ msg = msg.deviceSentMessage?.message || msg;
222
+ if (msg.senderKeyDistributionMessage) {
223
+ try {
224
+ await repository.processSenderKeyDistributionMessage({
225
+ authorJid: author,
226
+ item: msg.senderKeyDistributionMessage
227
+ });
228
+ }
229
+ catch (err) {
230
+ logger.error({ key: fullMessage.key, err }, "failed to process sender key distribution message");
231
+ }
232
+ }
233
+ if (fullMessage.message) {
234
+ Object.assign(fullMessage.message, msg);
235
+ }
236
+ else {
237
+ fullMessage.message = msg;
238
+ }
239
+ }
240
+ catch (err) {
241
+ const errorContext = {
242
+ key: fullMessage.key,
243
+ err,
244
+ messageType: tag === "plaintext" ? "plaintext" : attrs.type,
245
+ sender,
246
+ author,
247
+ isSessionRecordError: isSessionRecordError(err)
248
+ };
249
+ logger.error(errorContext, "failed to decrypt message");
250
+ fullMessage.messageStubType = proto.WebMessageInfo.StubType.CIPHERTEXT;
251
+ fullMessage.messageStubParameters = [err.message.toString()];
252
+ }
253
+ }
254
+ }
255
+ if (!decryptables) {
256
+ fullMessage.messageStubType = proto.WebMessageInfo.StubType.CIPHERTEXT;
257
+ fullMessage.messageStubParameters = [NO_MESSAGE_FOUND_ERROR_TEXT];
258
+ }
259
+ }
260
+ };
261
+ };
262
+ //=======================================================//
263
+ function isSessionRecordError(error) {
264
+ const errorMessage = error?.message || error?.toString() || "";
265
+ return DECRYPTION_RETRY_CONFIG.sessionRecordErrors.some(errorPattern => errorMessage.includes(errorPattern));
266
+ }
267
+ //=======================================================//