@oxidezap/baileyrs 0.0.7 → 0.0.8

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 (159) hide show
  1. package/README.md +119 -5
  2. package/lib/Bridge/__tests__/adapt.test.d.ts +2 -0
  3. package/lib/Bridge/__tests__/adapt.test.d.ts.map +1 -0
  4. package/lib/Bridge/__tests__/adapt.test.js +355 -0
  5. package/lib/Bridge/__tests__/adapt.test.js.map +1 -0
  6. package/lib/Bridge/__tests__/dts-drift.test.d.ts +13 -0
  7. package/lib/Bridge/__tests__/dts-drift.test.d.ts.map +1 -0
  8. package/lib/Bridge/__tests__/dts-drift.test.js +92 -0
  9. package/lib/Bridge/__tests__/dts-drift.test.js.map +1 -0
  10. package/lib/Bridge/__tests__/fixtures.d.ts +192 -0
  11. package/lib/Bridge/__tests__/fixtures.d.ts.map +1 -0
  12. package/lib/Bridge/__tests__/fixtures.js +99 -0
  13. package/lib/Bridge/__tests__/fixtures.js.map +1 -0
  14. package/lib/Bridge/adapt.d.ts +28 -0
  15. package/lib/Bridge/adapt.d.ts.map +1 -0
  16. package/lib/Bridge/adapt.js +504 -0
  17. package/lib/Bridge/adapt.js.map +1 -0
  18. package/lib/Bridge/index.d.ts +12 -0
  19. package/lib/Bridge/index.d.ts.map +1 -0
  20. package/lib/Bridge/index.js +12 -0
  21. package/lib/Bridge/index.js.map +1 -0
  22. package/lib/Bridge/primitives.d.ts +56 -0
  23. package/lib/Bridge/primitives.d.ts.map +1 -0
  24. package/lib/Bridge/primitives.js +58 -0
  25. package/lib/Bridge/primitives.js.map +1 -0
  26. package/lib/Bridge/types.d.ts +273 -0
  27. package/lib/Bridge/types.d.ts.map +1 -0
  28. package/lib/Bridge/types.js +17 -0
  29. package/lib/Bridge/types.js.map +1 -0
  30. package/lib/Defaults/index.d.ts.map +1 -1
  31. package/lib/Defaults/index.js +2 -2
  32. package/lib/Defaults/index.js.map +1 -1
  33. package/lib/Socket/blocking.d.ts.map +1 -1
  34. package/lib/Socket/chat-actions.d.ts.map +1 -1
  35. package/lib/Socket/contacts.d.ts +9 -4
  36. package/lib/Socket/contacts.d.ts.map +1 -1
  37. package/lib/Socket/contacts.js +11 -8
  38. package/lib/Socket/contacts.js.map +1 -1
  39. package/lib/Socket/events.d.ts +7 -1
  40. package/lib/Socket/events.d.ts.map +1 -1
  41. package/lib/Socket/events.js +212 -243
  42. package/lib/Socket/events.js.map +1 -1
  43. package/lib/Socket/group-notifications.d.ts +25 -0
  44. package/lib/Socket/group-notifications.d.ts.map +1 -0
  45. package/lib/Socket/group-notifications.js +162 -0
  46. package/lib/Socket/group-notifications.js.map +1 -0
  47. package/lib/Socket/groups.d.ts +12 -1
  48. package/lib/Socket/groups.d.ts.map +1 -1
  49. package/lib/Socket/groups.js +44 -1
  50. package/lib/Socket/groups.js.map +1 -1
  51. package/lib/Socket/index.d.ts +47 -13
  52. package/lib/Socket/index.d.ts.map +1 -1
  53. package/lib/Socket/index.js +158 -24
  54. package/lib/Socket/index.js.map +1 -1
  55. package/lib/Socket/messages.d.ts +5 -2
  56. package/lib/Socket/messages.d.ts.map +1 -1
  57. package/lib/Socket/messages.js +42 -21
  58. package/lib/Socket/messages.js.map +1 -1
  59. package/lib/Socket/newsletter.d.ts.map +1 -1
  60. package/lib/Socket/presence.d.ts.map +1 -1
  61. package/lib/Socket/profile.d.ts +7 -1
  62. package/lib/Socket/profile.d.ts.map +1 -1
  63. package/lib/Socket/profile.js +20 -5
  64. package/lib/Socket/profile.js.map +1 -1
  65. package/lib/Socket/transport.d.ts.map +1 -1
  66. package/lib/Socket/transport.js +14 -13
  67. package/lib/Socket/transport.js.map +1 -1
  68. package/lib/Socket/types.d.ts.map +1 -1
  69. package/lib/Types/Auth.d.ts +1 -1
  70. package/lib/Types/Auth.d.ts.map +1 -1
  71. package/lib/Types/Bussines.d.ts +1 -1
  72. package/lib/Types/Bussines.d.ts.map +1 -1
  73. package/lib/Types/Chat.d.ts +1 -1
  74. package/lib/Types/Chat.d.ts.map +1 -1
  75. package/lib/Types/Events.d.ts +12 -3
  76. package/lib/Types/Events.d.ts.map +1 -1
  77. package/lib/Types/Events.js +1 -1
  78. package/lib/Types/Events.js.map +1 -1
  79. package/lib/Types/GroupMetadata.d.ts.map +1 -1
  80. package/lib/Types/Message.d.ts +16 -1
  81. package/lib/Types/Message.d.ts.map +1 -1
  82. package/lib/Types/Message.js +1 -1
  83. package/lib/Types/Message.js.map +1 -1
  84. package/lib/Types/Socket.d.ts +42 -1
  85. package/lib/Types/Socket.d.ts.map +1 -1
  86. package/lib/Types/State.d.ts +1 -1
  87. package/lib/Types/State.d.ts.map +1 -1
  88. package/lib/Types/index.d.ts +1 -1
  89. package/lib/Types/index.d.ts.map +1 -1
  90. package/lib/Types/index.js +17 -12
  91. package/lib/Types/index.js.map +1 -1
  92. package/lib/Utils/__tests__/wrap-legacy-store-lid-mapping.test.d.ts +23 -0
  93. package/lib/Utils/__tests__/wrap-legacy-store-lid-mapping.test.d.ts.map +1 -0
  94. package/lib/Utils/__tests__/wrap-legacy-store-lid-mapping.test.js +157 -0
  95. package/lib/Utils/__tests__/wrap-legacy-store-lid-mapping.test.js.map +1 -0
  96. package/lib/Utils/__tests__/wrap-legacy-store-sender-key.test.d.ts +31 -0
  97. package/lib/Utils/__tests__/wrap-legacy-store-sender-key.test.d.ts.map +1 -0
  98. package/lib/Utils/__tests__/wrap-legacy-store-sender-key.test.js +253 -0
  99. package/lib/Utils/__tests__/wrap-legacy-store-sender-key.test.js.map +1 -0
  100. package/lib/Utils/__tests__/wrap-legacy-store-session.test.d.ts +32 -0
  101. package/lib/Utils/__tests__/wrap-legacy-store-session.test.d.ts.map +1 -0
  102. package/lib/Utils/__tests__/wrap-legacy-store-session.test.js +488 -0
  103. package/lib/Utils/__tests__/wrap-legacy-store-session.test.js.map +1 -0
  104. package/lib/Utils/boom.d.ts +33 -0
  105. package/lib/Utils/boom.d.ts.map +1 -0
  106. package/lib/Utils/boom.js +63 -0
  107. package/lib/Utils/boom.js.map +1 -0
  108. package/lib/Utils/browser-utils.d.ts.map +1 -1
  109. package/lib/Utils/event-buffer.d.ts.map +1 -1
  110. package/lib/Utils/generics.d.ts +37 -1
  111. package/lib/Utils/generics.d.ts.map +1 -1
  112. package/lib/Utils/generics.js +60 -2
  113. package/lib/Utils/generics.js.map +1 -1
  114. package/lib/Utils/index.d.ts +1 -0
  115. package/lib/Utils/index.d.ts.map +1 -1
  116. package/lib/Utils/index.js +10 -9
  117. package/lib/Utils/index.js.map +1 -1
  118. package/lib/Utils/lid-mapping-store.d.ts +81 -0
  119. package/lib/Utils/lid-mapping-store.d.ts.map +1 -0
  120. package/lib/Utils/lid-mapping-store.js +126 -0
  121. package/lib/Utils/lid-mapping-store.js.map +1 -0
  122. package/lib/Utils/logger.d.ts.map +1 -1
  123. package/lib/Utils/logger.js +25 -1
  124. package/lib/Utils/logger.js.map +1 -1
  125. package/lib/Utils/messages-media.d.ts.map +1 -1
  126. package/lib/Utils/messages-media.js +1 -1
  127. package/lib/Utils/messages-media.js.map +1 -1
  128. package/lib/Utils/messages.d.ts +30 -1
  129. package/lib/Utils/messages.d.ts.map +1 -1
  130. package/lib/Utils/messages.js +115 -41
  131. package/lib/Utils/messages.js.map +1 -1
  132. package/lib/Utils/native-crypto-provider.d.ts +18 -0
  133. package/lib/Utils/native-crypto-provider.d.ts.map +1 -0
  134. package/lib/Utils/native-crypto-provider.js +67 -0
  135. package/lib/Utils/native-crypto-provider.js.map +1 -0
  136. package/lib/Utils/use-bridge-store.d.ts.map +1 -1
  137. package/lib/Utils/use-memory-store.d.ts.map +1 -1
  138. package/lib/Utils/use-memory-store.js +1 -1
  139. package/lib/Utils/use-memory-store.js.map +1 -1
  140. package/lib/Utils/use-multi-file-auth-state.d.ts.map +1 -1
  141. package/lib/Utils/use-multi-file-auth-state.js +1 -1
  142. package/lib/Utils/use-multi-file-auth-state.js.map +1 -1
  143. package/lib/Utils/wrap-legacy-store.d.ts.map +1 -1
  144. package/lib/Utils/wrap-legacy-store.js +621 -13
  145. package/lib/Utils/wrap-legacy-store.js.map +1 -1
  146. package/lib/WABinary/index.d.ts.map +1 -1
  147. package/lib/WABinary/index.js +1 -1
  148. package/lib/WABinary/index.js.map +1 -1
  149. package/lib/__tests__/expect.d.ts +30 -0
  150. package/lib/__tests__/expect.d.ts.map +1 -0
  151. package/lib/__tests__/expect.js +60 -0
  152. package/lib/__tests__/expect.js.map +1 -0
  153. package/lib/index.d.ts +1 -1
  154. package/lib/index.d.ts.map +1 -1
  155. package/lib/index.js +9 -6
  156. package/lib/index.js.map +1 -1
  157. package/package.json +30 -25
  158. package/WAProto/index.d.ts +0 -13875
  159. package/WAProto/index.js +0 -175
@@ -0,0 +1,504 @@
1
+ /**
2
+ * Anti-corruption layer between the bridge runtime and baileyrs domain code.
3
+ *
4
+ * Every inbound bridge event flows through `adaptBridgeEvent`, which returns
5
+ * a strictly-typed `CanonicalEvent` (or `null` when the payload is malformed
6
+ * past recovery). Downstream code (notably `Socket/events.ts`) consumes the
7
+ * canonical union exclusively — no `event.data as Whatever` casts, no
8
+ * defensive optional chains, no implicit knowledge of how serde happens to
9
+ * serialize a particular rust enum today.
10
+ *
11
+ * If the bridge's `.d.ts` and runtime ever drift again (renamed field,
12
+ * leaked PascalCase variant, ISO timestamp where a number was promised),
13
+ * the bug surfaces here as one failing fixture test instead of a silent
14
+ * data lie that propagates through the whole event surface.
15
+ */
16
+ import { asBoolOr, asJidString, asNumber, asString, bridgeJidToString, isBridgeJid, isObject, normalizeDiscriminator, toUnixSeconds } from "./primitives.js";
17
+ /**
18
+ * Every bridge event type the adapter explicitly handles. Source of truth
19
+ * for drift detection — `dts-drift.test.ts` cross-checks this against the
20
+ * actual `WhatsAppEvent` union shipped by the bridge's `.d.ts`. Any new
21
+ * `case` in `adaptBridgeEvent` below must also appear here.
22
+ */
23
+ export const KNOWN_BRIDGE_EVENT_TYPES = new Set([
24
+ // connection lifecycle
25
+ 'connected',
26
+ 'disconnected',
27
+ 'qr',
28
+ 'pairing_code',
29
+ 'pair_success',
30
+ 'pair_error',
31
+ 'logged_out',
32
+ 'connect_failure',
33
+ 'stream_error',
34
+ 'stream_replaced',
35
+ 'client_outdated',
36
+ 'temporary_ban',
37
+ 'qr_scanned_without_multidevice',
38
+ // messages
39
+ 'message',
40
+ 'receipt',
41
+ 'undecryptable_message',
42
+ // contacts
43
+ 'push_name_update',
44
+ 'contact_update',
45
+ 'contact_updated',
46
+ 'picture_update',
47
+ // presence
48
+ 'presence',
49
+ 'chat_presence',
50
+ // groups
51
+ 'group_update',
52
+ // chat state
53
+ 'archive_update',
54
+ 'pin_update',
55
+ 'mute_update',
56
+ 'star_update',
57
+ 'mark_chat_as_read_update',
58
+ // calls
59
+ 'incoming_call',
60
+ // acknowledged but no Baileys equivalent
61
+ 'self_push_name_updated',
62
+ 'history_sync',
63
+ 'offline_sync_completed',
64
+ 'offline_sync_preview',
65
+ 'device_list_update',
66
+ 'disappearing_mode_changed',
67
+ 'business_status_update',
68
+ 'newsletter_live_update',
69
+ 'contact_number_changed',
70
+ 'contact_sync_requested',
71
+ 'user_about_update',
72
+ // app-state sync deletes — handled as noop until a Baileys consumer
73
+ // needs them (they have no direct upstream equivalent and the bridge
74
+ // already mutates its own caches when these arrive)
75
+ 'delete_chat_update',
76
+ 'delete_message_for_me_update',
77
+ // generic carriers
78
+ 'notification',
79
+ 'raw_node'
80
+ ]);
81
+ /** Result is `null` on unrecoverable shape mismatch — caller should drop the event. */
82
+ export const adaptBridgeEvent = (event, logger) => {
83
+ const typed = event;
84
+ const type = typed.type;
85
+ const data = typed.data;
86
+ switch (type) {
87
+ // ── Connection lifecycle ──
88
+ case 'connected':
89
+ return { type: 'connected' };
90
+ case 'disconnected':
91
+ return { type: 'disconnected' };
92
+ case 'qr':
93
+ case 'pairing_code': {
94
+ if (!isObject(data))
95
+ return null;
96
+ const code = asString(data.code);
97
+ return code ? { type: 'qr', code } : null;
98
+ }
99
+ case 'pair_success': {
100
+ if (!isObject(data))
101
+ return null;
102
+ const id = asString(data.id);
103
+ if (!id)
104
+ return null;
105
+ return {
106
+ type: 'pairSuccess',
107
+ id,
108
+ lid: asString(data.lid),
109
+ platform: asString(data.platform),
110
+ businessName: asString(data.business_name)
111
+ };
112
+ }
113
+ case 'pair_error': {
114
+ if (!isObject(data))
115
+ return null;
116
+ return { type: 'pairError', error: asString(data.error) ?? 'Unknown pairing error' };
117
+ }
118
+ case 'logged_out':
119
+ return { type: 'loggedOut' };
120
+ case 'connect_failure': {
121
+ if (!isObject(data))
122
+ return { type: 'connectFailure' };
123
+ return { type: 'connectFailure', message: asString(data.message) };
124
+ }
125
+ case 'stream_error': {
126
+ if (!isObject(data))
127
+ return null;
128
+ return { type: 'streamError', code: asString(data.code) ?? 'unknown' };
129
+ }
130
+ case 'stream_replaced':
131
+ return { type: 'streamReplaced' };
132
+ case 'client_outdated':
133
+ return { type: 'clientOutdated' };
134
+ case 'temporary_ban':
135
+ return { type: 'temporaryBan' };
136
+ case 'qr_scanned_without_multidevice':
137
+ return { type: 'qrScannedWithoutMultidevice' };
138
+ // ── Messages ──
139
+ case 'message':
140
+ return adaptMessage(data, logger);
141
+ case 'receipt':
142
+ return adaptReceipt(data, logger);
143
+ case 'undecryptable_message':
144
+ return { type: 'undecryptableMessage', raw: data };
145
+ // ── Contacts ──
146
+ case 'push_name_update': {
147
+ if (!isObject(data))
148
+ return null;
149
+ const jid = asJidString(data.jid);
150
+ if (!jid)
151
+ return null;
152
+ return { type: 'pushNameUpdate', jid, newPushName: asString(data.new_push_name) };
153
+ }
154
+ case 'contact_update':
155
+ case 'contact_updated': {
156
+ if (!isObject(data))
157
+ return null;
158
+ const jid = asJidString(data.jid);
159
+ return jid ? { type: 'contactUpdate', jid } : null;
160
+ }
161
+ case 'picture_update': {
162
+ if (!isObject(data))
163
+ return null;
164
+ const jid = asJidString(data.jid);
165
+ return jid ? { type: 'pictureUpdate', jid } : null;
166
+ }
167
+ // ── Presence ──
168
+ case 'presence': {
169
+ if (!isObject(data))
170
+ return null;
171
+ const from = asJidString(data.from);
172
+ if (!from)
173
+ return null;
174
+ return {
175
+ type: 'presence',
176
+ from,
177
+ unavailable: asBoolOr(data.unavailable, false),
178
+ lastSeen: asNumber(data.last_seen)
179
+ };
180
+ }
181
+ case 'chat_presence': {
182
+ if (!isObject(data))
183
+ return null;
184
+ const src = isObject(data.source) ? data.source : undefined;
185
+ if (!src)
186
+ return null;
187
+ const chat = asJidString(src.chat);
188
+ const sender = asJidString(src.sender);
189
+ if (!chat || !sender)
190
+ return null;
191
+ return { type: 'chatPresence', chatJid: chat, senderJid: sender, state: asString(data.state) ?? 'composing' };
192
+ }
193
+ // ── Groups ──
194
+ case 'group_update':
195
+ return adaptGroupUpdate(data, logger);
196
+ // ── Chat state ──
197
+ case 'archive_update': {
198
+ if (!isObject(data))
199
+ return null;
200
+ const jid = asJidString(data.jid);
201
+ return jid ? { type: 'archiveUpdate', jid } : null;
202
+ }
203
+ case 'pin_update': {
204
+ if (!isObject(data))
205
+ return null;
206
+ const jid = asJidString(data.jid);
207
+ return jid ? { type: 'pinUpdate', jid, timestamp: asNumber(data.timestamp) } : null;
208
+ }
209
+ case 'mute_update': {
210
+ if (!isObject(data))
211
+ return null;
212
+ const jid = asJidString(data.jid);
213
+ return jid ? { type: 'muteUpdate', jid, timestamp: asNumber(data.timestamp) } : null;
214
+ }
215
+ case 'star_update':
216
+ return adaptStarUpdate(data);
217
+ case 'mark_chat_as_read_update': {
218
+ if (!isObject(data))
219
+ return null;
220
+ const jid = asJidString(data.jid);
221
+ return jid ? { type: 'markChatAsReadUpdate', jid } : null;
222
+ }
223
+ // ── Calls ──
224
+ case 'incoming_call':
225
+ return adaptIncomingCall(data, logger);
226
+ // ── Acknowledged but no Baileys equivalent ──
227
+ case 'self_push_name_updated':
228
+ case 'history_sync':
229
+ case 'offline_sync_completed':
230
+ case 'offline_sync_preview':
231
+ case 'device_list_update':
232
+ case 'disappearing_mode_changed':
233
+ case 'business_status_update':
234
+ case 'newsletter_live_update':
235
+ case 'contact_number_changed':
236
+ case 'contact_sync_requested':
237
+ case 'user_about_update':
238
+ case 'delete_chat_update':
239
+ case 'delete_message_for_me_update':
240
+ return { type: 'noop', bridgeType: type };
241
+ // ── Generic notification & raw node ──
242
+ case 'notification': {
243
+ if (!isObject(data))
244
+ return { type: 'noop', bridgeType: 'notification' };
245
+ const attrs = isObject(data.attrs) ? data.attrs : {};
246
+ return { type: 'notification', tag: asString(data.tag) ?? 'notification', attrs };
247
+ }
248
+ case 'raw_node': {
249
+ // `BinaryNode` is shaped exactly like the bridge payload
250
+ // (`{ tag, attrs, content }`), so we can pass through after a
251
+ // minimal sanity check. Adapter guarantees `tag` is a string.
252
+ if (!isObject(data) || typeof data.tag !== 'string')
253
+ return null;
254
+ return { type: 'rawNode', node: data };
255
+ }
256
+ default:
257
+ logger?.debug({ eventType: type }, 'unknown bridge event (no canonical mapping)');
258
+ return null;
259
+ }
260
+ };
261
+ // ─────────────────────────────────────────────────────────────────────────────
262
+ // Per-event adapters
263
+ // ─────────────────────────────────────────────────────────────────────────────
264
+ const adaptMessage = (data, logger) => {
265
+ if (!isObject(data))
266
+ return null;
267
+ const info = isObject(data.info) ? data.info : undefined;
268
+ const messageProto = isObject(data.message) ? data.message : undefined;
269
+ if (!info || !messageProto)
270
+ return null;
271
+ const src = isObject(info.source) ? info.source : undefined;
272
+ const chat = src && asJidString(src.chat);
273
+ const id = asString(info.id);
274
+ if (!src || !chat || !id) {
275
+ logger?.debug({ info }, 'message adapter: missing chat/id');
276
+ return null;
277
+ }
278
+ const isGroup = asBoolOr(src.is_group, false);
279
+ const senderRaw = src.sender;
280
+ const senderJid = isGroup ? asJidString(senderRaw) : undefined;
281
+ const participantAlt = isGroup && isBridgeJid(src.sender_alt) ? bridgeJidToString(src.sender_alt) : undefined;
282
+ const remoteJidAlt = !isGroup && isBridgeJid(src.recipient_alt) ? bridgeJidToString(src.recipient_alt) : undefined;
283
+ return {
284
+ type: 'message',
285
+ chatJid: chat,
286
+ senderJid,
287
+ isGroup,
288
+ isFromMe: asBoolOr(src.is_from_me, false),
289
+ id,
290
+ timestamp: toUnixSeconds(info.timestamp),
291
+ pushName: asString(info.push_name),
292
+ participantAlt,
293
+ remoteJidAlt,
294
+ messageProto: messageProto
295
+ };
296
+ };
297
+ const adaptReceipt = (data, logger) => {
298
+ if (!isObject(data))
299
+ return null;
300
+ const src = isObject(data.source) ? data.source : undefined;
301
+ if (!src)
302
+ return null;
303
+ const chat = asJidString(src.chat);
304
+ const ids = Array.isArray(data.message_ids) ? data.message_ids.filter((x) => typeof x === 'string') : [];
305
+ if (!chat || ids.length === 0) {
306
+ logger?.debug({ data }, 'receipt adapter: missing chat or message_ids');
307
+ return null;
308
+ }
309
+ const isGroup = asBoolOr(src.is_group, false);
310
+ return {
311
+ type: 'receipt',
312
+ chatJid: chat,
313
+ senderJid: isGroup ? asJidString(src.sender) : undefined,
314
+ isGroup,
315
+ isFromMe: asBoolOr(src.is_from_me, false),
316
+ messageIds: ids,
317
+ timestamp: toUnixSeconds(data.timestamp)
318
+ };
319
+ };
320
+ const adaptStarUpdate = (data) => {
321
+ if (!isObject(data))
322
+ return null;
323
+ const chatJid = asJidString(data.chat_jid);
324
+ const messageId = asString(data.message_id);
325
+ if (!chatJid || !messageId)
326
+ return null;
327
+ const action = isObject(data.action) ? data.action : undefined;
328
+ return {
329
+ type: 'starUpdate',
330
+ chatJid,
331
+ messageId,
332
+ fromMe: asBoolOr(data.from_me, false),
333
+ participantJid: asJidString(data.participant_jid),
334
+ starred: asBoolOr(action?.starred, false)
335
+ };
336
+ };
337
+ const adaptIncomingCall = (data, logger) => {
338
+ if (!isObject(data))
339
+ return null;
340
+ const from = asJidString(data.from);
341
+ if (!from)
342
+ return null;
343
+ const action = isObject(data.action) ? data.action : undefined;
344
+ if (!action)
345
+ return null;
346
+ const actionType = parseCallActionType(action.type);
347
+ const callId = asString(action.call_id);
348
+ if (!actionType || !callId) {
349
+ logger?.debug({ data }, 'incoming_call adapter: missing action.type/call_id');
350
+ return null;
351
+ }
352
+ const canonicalAction = { type: actionType, callId };
353
+ if (actionType === 'offer') {
354
+ canonicalAction.callerPn = asJidString(action.caller_pn);
355
+ canonicalAction.isVideo = asBoolOr(action.is_video, false);
356
+ }
357
+ return {
358
+ type: 'incomingCall',
359
+ from,
360
+ timestamp: toUnixSeconds(data.timestamp),
361
+ offline: asBoolOr(data.offline, false),
362
+ action: canonicalAction
363
+ };
364
+ };
365
+ const parseCallActionType = (raw) => {
366
+ const norm = normalizeDiscriminator(raw);
367
+ switch (norm) {
368
+ case 'offer':
369
+ return 'offer';
370
+ case 'pre_accept':
371
+ case 'preaccept':
372
+ return 'preAccept';
373
+ case 'accept':
374
+ return 'accept';
375
+ case 'reject':
376
+ return 'reject';
377
+ case 'terminate':
378
+ return 'terminate';
379
+ default:
380
+ return undefined;
381
+ }
382
+ };
383
+ // ── Group action adapter — the one that actually uncovered the PascalCase drift ──
384
+ const adaptGroupParticipant = (raw) => {
385
+ if (!isObject(raw))
386
+ return null;
387
+ const jid = asJidString(raw.jid);
388
+ if (!jid)
389
+ return null;
390
+ return { jid, phoneNumber: asJidString(raw.phone_number) };
391
+ };
392
+ const adaptGroupParticipants = (raw) => {
393
+ if (!Array.isArray(raw))
394
+ return [];
395
+ return raw.map(adaptGroupParticipant).filter((p) => p !== null);
396
+ };
397
+ const adaptGroupAction = (raw) => {
398
+ if (!isObject(raw))
399
+ return null;
400
+ const norm = normalizeDiscriminator(raw.type);
401
+ const rawType = asString(raw.type) ?? 'unknown';
402
+ if (!norm)
403
+ return { type: 'unknown', rawType };
404
+ switch (norm) {
405
+ case 'add':
406
+ return { type: 'add', participants: adaptGroupParticipants(raw.participants), reason: asString(raw.reason) };
407
+ case 'remove':
408
+ return { type: 'remove', participants: adaptGroupParticipants(raw.participants), reason: asString(raw.reason) };
409
+ case 'promote':
410
+ return { type: 'promote', participants: adaptGroupParticipants(raw.participants) };
411
+ case 'demote':
412
+ return { type: 'demote', participants: adaptGroupParticipants(raw.participants) };
413
+ case 'modify':
414
+ return { type: 'modify', participants: adaptGroupParticipants(raw.participants) };
415
+ case 'subject':
416
+ return {
417
+ type: 'subject',
418
+ subject: asString(raw.subject) ?? '',
419
+ subjectOwner: asJidString(raw.subject_owner),
420
+ subjectTime: asNumber(raw.subject_time)
421
+ };
422
+ case 'description':
423
+ return {
424
+ type: 'description',
425
+ id: asString(raw.id) ?? '',
426
+ description: asString(raw.description)
427
+ };
428
+ case 'locked':
429
+ return { type: 'locked' };
430
+ case 'unlocked':
431
+ return { type: 'unlocked' };
432
+ case 'announce':
433
+ case 'announcement':
434
+ return { type: 'announce' };
435
+ case 'not_announce':
436
+ case 'not_announcement':
437
+ case 'notannounce':
438
+ return { type: 'notAnnounce' };
439
+ case 'ephemeral': {
440
+ const expiration = asNumber(raw.expiration);
441
+ if (expiration == null)
442
+ return null;
443
+ return { type: 'ephemeral', expiration, trigger: asNumber(raw.trigger) };
444
+ }
445
+ case 'membership_approval_mode':
446
+ case 'membershipapprovalmode':
447
+ return { type: 'membershipApprovalMode', enabled: asBoolOr(raw.enabled, false) };
448
+ case 'member_add_mode':
449
+ case 'memberaddmode':
450
+ return { type: 'memberAddMode', mode: asString(raw.mode) ?? '' };
451
+ case 'no_frequently_forwarded':
452
+ case 'nofrequentlyforwarded':
453
+ return { type: 'noFrequentlyForwarded' };
454
+ case 'frequently_forwarded_ok':
455
+ case 'frequentlyforwardedok':
456
+ return { type: 'frequentlyForwardedOk' };
457
+ case 'invite':
458
+ return { type: 'invite', code: asString(raw.code) ?? '' };
459
+ case 'revoke':
460
+ case 'revoke_invite':
461
+ case 'revokeinvite':
462
+ return { type: 'revokeInvite' };
463
+ case 'create':
464
+ return { type: 'create' };
465
+ case 'delete':
466
+ return { type: 'delete', reason: asString(raw.reason) };
467
+ case 'link':
468
+ return { type: 'link', linkType: asString(raw.link_type) ?? '' };
469
+ case 'unlink':
470
+ return {
471
+ type: 'unlink',
472
+ unlinkType: asString(raw.unlink_type) ?? '',
473
+ unlinkReason: asString(raw.unlink_reason)
474
+ };
475
+ case 'membership_approval_request':
476
+ case 'created_membership_requests':
477
+ case 'revoked_membership_requests':
478
+ return { type: 'unknown', rawType: norm };
479
+ default:
480
+ return { type: 'unknown', rawType };
481
+ }
482
+ };
483
+ const adaptGroupUpdate = (data, logger) => {
484
+ if (!isObject(data))
485
+ return null;
486
+ const groupJid = asJidString(data.group_jid);
487
+ if (!groupJid)
488
+ return null;
489
+ const action = adaptGroupAction(data.action);
490
+ if (!action) {
491
+ logger?.warn({ data }, 'group_update adapter: action shape rejected');
492
+ return null;
493
+ }
494
+ return {
495
+ type: 'groupUpdate',
496
+ groupJid,
497
+ author: asJidString(data.participant),
498
+ authorPn: asJidString(data.participant_pn),
499
+ timestamp: toUnixSeconds(data.timestamp),
500
+ isLidAddressingMode: asBoolOr(data.is_lid_addressing_mode, false),
501
+ action
502
+ };
503
+ };
504
+ //# sourceMappingURL=adapt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapt.js","sourceRoot":"","sources":["../../src/Bridge/adapt.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Anti-corruption layer between bridge runtime and baileyrs domain code.
3
+ *
4
+ * Adapters here normalize raw bridge payloads into the canonical event union
5
+ * declared in `types.ts`. Downstream code consumes the canonical types
6
+ * exclusively — see `Socket/events.ts` for the bridge-canonical-Baileys
7
+ * three-stage pipeline.
8
+ */
9
+ export { adaptBridgeEvent, KNOWN_BRIDGE_EVENT_TYPES } from './adapt.js';
10
+ export * from './types.js';
11
+ export { asBool, asBoolOr, asJidString, asNumber, asString, bridgeJidToString, isBridgeJid, isObject, normalizeDiscriminator, toUnixSeconds } from './primitives.js';
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Bridge/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAA;AACvE,cAAc,YAAY,CAAA;AAC1B,OAAO,EACN,MAAM,EACN,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,iBAAiB,EACjB,WAAW,EACX,QAAQ,EACR,sBAAsB,EACtB,aAAa,EACb,MAAM,iBAAiB,CAAA"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Anti-corruption layer between bridge runtime and baileyrs domain code.
3
+ *
4
+ * Adapters here normalize raw bridge payloads into the canonical event union
5
+ * declared in `types.ts`. Downstream code consumes the canonical types
6
+ * exclusively — see `Socket/events.ts` for the bridge-canonical-Baileys
7
+ * three-stage pipeline.
8
+ */
9
+ export { adaptBridgeEvent, KNOWN_BRIDGE_EVENT_TYPES } from "./adapt.js";
10
+ export * from "./types.js";
11
+ export { asBool, asBoolOr, asJidString, asNumber, asString, bridgeJidToString, isBridgeJid, isObject, normalizeDiscriminator, toUnixSeconds } from "./primitives.js";
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Bridge/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAA;AACvE,cAAc,YAAY,CAAA;AAC1B,OAAO,EACN,MAAM,EACN,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,iBAAiB,EACjB,WAAW,EACX,QAAQ,EACR,sBAAsB,EACtB,aAAa,EACb,MAAM,iBAAiB,CAAA"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Type guards and coercion helpers shared by all bridge adapters.
3
+ *
4
+ * Adapters treat the bridge payload as `unknown` and validate field-by-field
5
+ * here so a bridge schema drift (renamed field, lost serde rename_all,
6
+ * timestamp serializer change) surfaces as `null` from one adapter instead
7
+ * of a silent type lie that propagates downstream.
8
+ */
9
+ /**
10
+ * Plain-object guard. `typeof null === "object"` so we exclude it
11
+ * explicitly; arrays return `true` here so callers must check
12
+ * `Array.isArray` first if they need to distinguish.
13
+ */
14
+ export declare const isObject: (x: unknown) => x is Record<string, unknown>;
15
+ /** Treat any non-string as missing rather than coercing (no `String(x)`). */
16
+ export declare const asString: (x: unknown) => string | undefined;
17
+ /** Treat any non-number (including booleans, NaN) as missing. */
18
+ export declare const asNumber: (x: unknown) => number | undefined;
19
+ /** Strict bool — does not coerce truthy values like `1` or `'true'`. */
20
+ export declare const asBool: (x: unknown) => boolean | undefined;
21
+ /** Same as `asBool` but defaults to `false` for missing/invalid input. */
22
+ export declare const asBoolOr: (x: unknown, fallback: boolean) => boolean;
23
+ /**
24
+ * Bridge JID struct — `user@server`, plus optional `agent`/`device`/
25
+ * `integrator` for multi-device addressing. We always drop the latter when
26
+ * stringifying so canonical JIDs are device-stripped (matching how Baileys
27
+ * consumers index and compare).
28
+ */
29
+ export interface BridgeJid {
30
+ user: string;
31
+ server: string;
32
+ agent?: number;
33
+ device?: number;
34
+ integrator?: number;
35
+ }
36
+ /** Type guard for the bridge's `Jid` shape. Required fields only. */
37
+ export declare const isBridgeJid: (x: unknown) => x is BridgeJid;
38
+ /** `null`-tolerant `BridgeJid` extractor — bridge payloads sometimes carry `null`. */
39
+ export declare const asBridgeJid: (x: unknown) => BridgeJid | undefined;
40
+ /** Stringify a bridge JID into the canonical `user@server` form. Drops device/agent. */
41
+ export declare const bridgeJidToString: (j: BridgeJid) => string;
42
+ /** Combined: validate & stringify in one step. Returns `undefined` on invalid input. */
43
+ export declare const asJidString: (x: unknown) => string | undefined;
44
+ /**
45
+ * Coerce a timestamp value into unix seconds. Accepts both numbers and ISO
46
+ * strings — the bridge serializes `DateTime<Utc>` as ISO unless explicitly
47
+ * typed with `ts_seconds`, so being lenient here insulates us from drift.
48
+ */
49
+ export declare const toUnixSeconds: (raw: unknown) => number;
50
+ /**
51
+ * Lowercase a discriminator string defensively — handles both the current
52
+ * lowercase wire-tag form and any legacy PascalCase form an older bridge
53
+ * might still emit.
54
+ */
55
+ export declare const normalizeDiscriminator: (x: unknown) => string | undefined;
56
+ //# sourceMappingURL=primitives.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"primitives.d.ts","sourceRoot":"","sources":["../../src/Bridge/primitives.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;;GAIG;AACH,eAAO,MAAM,QAAQ,GAAI,GAAG,OAAO,KAAG,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CACR,CAAA;AAEzD,6EAA6E;AAC7E,eAAO,MAAM,QAAQ,GAAI,GAAG,OAAO,KAAG,MAAM,GAAG,SAAoD,CAAA;AAEnG,iEAAiE;AACjE,eAAO,MAAM,QAAQ,GAAI,GAAG,OAAO,KAAG,MAAM,GAAG,SACa,CAAA;AAE5D,wEAAwE;AACxE,eAAO,MAAM,MAAM,GAAI,GAAG,OAAO,KAAG,OAAO,GAAG,SAAqD,CAAA;AAEnG,0EAA0E;AAC1E,eAAO,MAAM,QAAQ,GAAI,GAAG,OAAO,EAAE,UAAU,OAAO,KAAG,OAAgC,CAAA;AAEzF;;;;;GAKG;AACH,MAAM,WAAW,SAAS;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,qEAAqE;AACrE,eAAO,MAAM,WAAW,GAAI,GAAG,OAAO,KAAG,CAAC,IAAI,SAC4B,CAAA;AAE1E,sFAAsF;AACtF,eAAO,MAAM,WAAW,GAAI,GAAG,OAAO,KAAG,SAAS,GAAG,SAA6C,CAAA;AAElG,wFAAwF;AACxF,eAAO,MAAM,iBAAiB,GAAI,GAAG,SAAS,KAAG,MAAiC,CAAA;AAElF,wFAAwF;AACxF,eAAO,MAAM,WAAW,GAAI,GAAG,OAAO,KAAG,MAAM,GAAG,SAGjD,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAI,KAAK,OAAO,KAAG,MAO5C,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,GAAI,GAAG,OAAO,KAAG,MAAM,GAAG,SAG5D,CAAA"}