@oxidezap/baileyrs 0.0.18 → 0.0.21

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 (84) hide show
  1. package/lib/Bridge/__tests__/adapt.test.js +41 -9
  2. package/lib/Bridge/__tests__/adapt.test.js.map +1 -1
  3. package/lib/Bridge/adapt.d.ts +10 -16
  4. package/lib/Bridge/adapt.d.ts.map +1 -1
  5. package/lib/Bridge/adapt.js +12 -515
  6. package/lib/Bridge/adapt.js.map +1 -1
  7. package/lib/Bridge/schema.d.ts +36 -0
  8. package/lib/Bridge/schema.d.ts.map +1 -0
  9. package/lib/Bridge/schema.js +773 -0
  10. package/lib/Bridge/schema.js.map +1 -0
  11. package/lib/Bridge/types.d.ts +257 -3
  12. package/lib/Bridge/types.d.ts.map +1 -1
  13. package/lib/Socket/events.d.ts +18 -9
  14. package/lib/Socket/events.d.ts.map +1 -1
  15. package/lib/Socket/events.js +520 -204
  16. package/lib/Socket/events.js.map +1 -1
  17. package/lib/Socket/group-notifications.d.ts +6 -0
  18. package/lib/Socket/group-notifications.d.ts.map +1 -1
  19. package/lib/Socket/group-notifications.js +123 -16
  20. package/lib/Socket/group-notifications.js.map +1 -1
  21. package/lib/Socket/groups.d.ts +10 -2
  22. package/lib/Socket/groups.d.ts.map +1 -1
  23. package/lib/Socket/groups.js +24 -30
  24. package/lib/Socket/groups.js.map +1 -1
  25. package/lib/Socket/index.d.ts +31 -8
  26. package/lib/Socket/index.d.ts.map +1 -1
  27. package/lib/Socket/index.js +178 -13
  28. package/lib/Socket/index.js.map +1 -1
  29. package/lib/Socket/messages.d.ts +13 -2
  30. package/lib/Socket/messages.d.ts.map +1 -1
  31. package/lib/Socket/messages.js +27 -6
  32. package/lib/Socket/messages.js.map +1 -1
  33. package/lib/Types/Call.d.ts +20 -0
  34. package/lib/Types/Call.d.ts.map +1 -1
  35. package/lib/Types/Contact.d.ts +3 -1
  36. package/lib/Types/Contact.d.ts.map +1 -1
  37. package/lib/Types/Events.d.ts +2 -0
  38. package/lib/Types/Events.d.ts.map +1 -1
  39. package/lib/Utils/generics.d.ts +17 -0
  40. package/lib/Utils/generics.d.ts.map +1 -1
  41. package/lib/Utils/generics.js +31 -0
  42. package/lib/Utils/generics.js.map +1 -1
  43. package/lib/Utils/group-stub-params.d.ts +29 -0
  44. package/lib/Utils/group-stub-params.d.ts.map +1 -0
  45. package/lib/Utils/group-stub-params.js +45 -0
  46. package/lib/Utils/group-stub-params.js.map +1 -0
  47. package/lib/Utils/messages-media.d.ts +1 -1
  48. package/lib/Utils/messages-media.d.ts.map +1 -1
  49. package/lib/Utils/messages-media.js +1 -1
  50. package/lib/Utils/messages-media.js.map +1 -1
  51. package/lib/Utils/messages.d.ts.map +1 -1
  52. package/lib/Utils/messages.js +4 -6
  53. package/lib/Utils/messages.js.map +1 -1
  54. package/lib/Utils/process-history-message.d.ts +30 -0
  55. package/lib/Utils/process-history-message.d.ts.map +1 -0
  56. package/lib/Utils/process-history-message.js +148 -0
  57. package/lib/Utils/process-history-message.js.map +1 -0
  58. package/lib/Utils/use-bridge-store.d.ts.map +1 -1
  59. package/lib/Utils/use-bridge-store.js +50 -6
  60. package/lib/Utils/use-bridge-store.js.map +1 -1
  61. package/lib/Utils/use-multi-file-auth-state.d.ts +7 -0
  62. package/lib/Utils/use-multi-file-auth-state.d.ts.map +1 -1
  63. package/lib/Utils/use-multi-file-auth-state.js +11 -1
  64. package/lib/Utils/use-multi-file-auth-state.js.map +1 -1
  65. package/lib/Utils/wrap-legacy-store.d.ts.map +1 -1
  66. package/lib/Utils/wrap-legacy-store.js +110 -90
  67. package/lib/Utils/wrap-legacy-store.js.map +1 -1
  68. package/lib/WABinary/generic-utils.d.ts +17 -0
  69. package/lib/WABinary/generic-utils.d.ts.map +1 -0
  70. package/lib/WABinary/generic-utils.js +44 -0
  71. package/lib/WABinary/generic-utils.js.map +1 -0
  72. package/lib/WABinary/index.d.ts +1 -0
  73. package/lib/WABinary/index.d.ts.map +1 -1
  74. package/lib/WABinary/index.js +1 -0
  75. package/lib/WABinary/index.js.map +1 -1
  76. package/lib/WABinary/jid-utils.d.ts +4 -0
  77. package/lib/WABinary/jid-utils.d.ts.map +1 -1
  78. package/lib/WABinary/jid-utils.js +4 -0
  79. package/lib/WABinary/jid-utils.js.map +1 -1
  80. package/lib/__tests__/expect.d.ts +14 -0
  81. package/lib/__tests__/expect.d.ts.map +1 -1
  82. package/lib/__tests__/expect.js +42 -2
  83. package/lib/__tests__/expect.js.map +1 -1
  84. package/package.json +2 -2
@@ -1,523 +1,20 @@
1
1
  /**
2
2
  * Anti-corruption layer between the bridge runtime and baileyrs domain code.
3
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.
4
+ * The actual mapping table lives in `./schema.ts` this file is the
5
+ * stable public entry point that consumers (notably `Socket/events.ts` and
6
+ * the dts-drift test) import. Keeping it thin lets the schema evolve
7
+ * (table-driven dispatch, additional validation, schema-derived types,
8
+ * etc.) without rippling through call sites.
15
9
  */
16
- import { asBoolOr, asJidString, asNumber, asString, bridgeJidToString, isBridgeJid, isObject, normalizeDiscriminator, toUnixSeconds } from "./primitives.js";
10
+ import { adaptBridgeEventViaSchema, KNOWN_BRIDGE_EVENT_TYPES as KNOWN_FROM_SCHEMA } from "./schema.js";
17
11
  /**
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.
12
+ * Set of bridge event types the adapter explicitly handles. The
13
+ * `dts-drift.test.ts` cross-checks this against the bridge's `.d.ts`
14
+ * union so missing/extra entries surface as test failures instead of
15
+ * silent drops.
22
16
  */
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
- // MEX (GraphQL) push notifications — routed by op_name downstream
81
- 'mex_notification'
82
- ]);
17
+ export const KNOWN_BRIDGE_EVENT_TYPES = KNOWN_FROM_SCHEMA;
83
18
  /** Result is `null` on unrecoverable shape mismatch — caller should drop the event. */
84
- export const adaptBridgeEvent = (event, logger) => {
85
- const typed = event;
86
- const type = typed.type;
87
- const data = typed.data;
88
- switch (type) {
89
- // ── Connection lifecycle ──
90
- case 'connected':
91
- return { type: 'connected' };
92
- case 'disconnected':
93
- return { type: 'disconnected' };
94
- case 'qr':
95
- case 'pairing_code': {
96
- if (!isObject(data))
97
- return null;
98
- const code = asString(data.code);
99
- return code ? { type: 'qr', code } : null;
100
- }
101
- case 'pair_success': {
102
- if (!isObject(data))
103
- return null;
104
- const id = asString(data.id);
105
- if (!id)
106
- return null;
107
- return {
108
- type: 'pairSuccess',
109
- id,
110
- lid: asString(data.lid),
111
- platform: asString(data.platform),
112
- businessName: asString(data.business_name)
113
- };
114
- }
115
- case 'pair_error': {
116
- if (!isObject(data))
117
- return null;
118
- return { type: 'pairError', error: asString(data.error) ?? 'Unknown pairing error' };
119
- }
120
- case 'logged_out':
121
- return { type: 'loggedOut' };
122
- case 'connect_failure': {
123
- if (!isObject(data))
124
- return { type: 'connectFailure' };
125
- return { type: 'connectFailure', message: asString(data.message) };
126
- }
127
- case 'stream_error': {
128
- if (!isObject(data))
129
- return null;
130
- return { type: 'streamError', code: asString(data.code) ?? 'unknown' };
131
- }
132
- case 'stream_replaced':
133
- return { type: 'streamReplaced' };
134
- case 'client_outdated':
135
- return { type: 'clientOutdated' };
136
- case 'temporary_ban':
137
- return { type: 'temporaryBan' };
138
- case 'qr_scanned_without_multidevice':
139
- return { type: 'qrScannedWithoutMultidevice' };
140
- // ── Messages ──
141
- case 'message':
142
- return adaptMessage(data, logger);
143
- case 'receipt':
144
- return adaptReceipt(data, logger);
145
- case 'undecryptable_message':
146
- return { type: 'undecryptableMessage', raw: data };
147
- // ── Contacts ──
148
- case 'push_name_update': {
149
- if (!isObject(data))
150
- return null;
151
- const jid = asJidString(data.jid);
152
- if (!jid)
153
- return null;
154
- return { type: 'pushNameUpdate', jid, newPushName: asString(data.new_push_name) };
155
- }
156
- case 'contact_update':
157
- case 'contact_updated': {
158
- if (!isObject(data))
159
- return null;
160
- const jid = asJidString(data.jid);
161
- return jid ? { type: 'contactUpdate', jid } : null;
162
- }
163
- case 'picture_update': {
164
- if (!isObject(data))
165
- return null;
166
- const jid = asJidString(data.jid);
167
- return jid ? { type: 'pictureUpdate', jid } : null;
168
- }
169
- // ── Presence ──
170
- case 'presence': {
171
- if (!isObject(data))
172
- return null;
173
- const from = asJidString(data.from);
174
- if (!from)
175
- return null;
176
- return {
177
- type: 'presence',
178
- from,
179
- unavailable: asBoolOr(data.unavailable, false),
180
- lastSeen: asNumber(data.last_seen)
181
- };
182
- }
183
- case 'chat_presence': {
184
- if (!isObject(data))
185
- return null;
186
- const src = isObject(data.source) ? data.source : undefined;
187
- if (!src)
188
- return null;
189
- const chat = asJidString(src.chat);
190
- const sender = asJidString(src.sender);
191
- if (!chat || !sender)
192
- return null;
193
- return { type: 'chatPresence', chatJid: chat, senderJid: sender, state: asString(data.state) ?? 'composing' };
194
- }
195
- // ── Groups ──
196
- case 'group_update':
197
- return adaptGroupUpdate(data, logger);
198
- // ── Chat state ──
199
- case 'archive_update': {
200
- if (!isObject(data))
201
- return null;
202
- const jid = asJidString(data.jid);
203
- return jid ? { type: 'archiveUpdate', jid } : null;
204
- }
205
- case 'pin_update': {
206
- if (!isObject(data))
207
- return null;
208
- const jid = asJidString(data.jid);
209
- return jid ? { type: 'pinUpdate', jid, timestamp: asNumber(data.timestamp) } : null;
210
- }
211
- case 'mute_update': {
212
- if (!isObject(data))
213
- return null;
214
- const jid = asJidString(data.jid);
215
- return jid ? { type: 'muteUpdate', jid, timestamp: asNumber(data.timestamp) } : null;
216
- }
217
- case 'star_update':
218
- return adaptStarUpdate(data);
219
- case 'mark_chat_as_read_update': {
220
- if (!isObject(data))
221
- return null;
222
- const jid = asJidString(data.jid);
223
- return jid ? { type: 'markChatAsReadUpdate', jid } : null;
224
- }
225
- // ── Calls ──
226
- case 'incoming_call':
227
- return adaptIncomingCall(data, logger);
228
- // ── Acknowledged but no Baileys equivalent ──
229
- case 'self_push_name_updated':
230
- case 'history_sync':
231
- case 'offline_sync_completed':
232
- case 'offline_sync_preview':
233
- case 'device_list_update':
234
- case 'disappearing_mode_changed':
235
- case 'business_status_update':
236
- case 'newsletter_live_update':
237
- case 'contact_number_changed':
238
- case 'contact_sync_requested':
239
- case 'user_about_update':
240
- case 'delete_chat_update':
241
- case 'delete_message_for_me_update':
242
- return { type: 'noop', bridgeType: type };
243
- // ── Generic notification & raw node ──
244
- case 'notification': {
245
- if (!isObject(data))
246
- return { type: 'noop', bridgeType: 'notification' };
247
- const attrs = isObject(data.attrs) ? data.attrs : {};
248
- return { type: 'notification', tag: asString(data.tag) ?? 'notification', attrs };
249
- }
250
- case 'raw_node': {
251
- // `BinaryNode` is shaped exactly like the bridge payload
252
- // (`{ tag, attrs, content }`), so we can pass through after a
253
- // minimal sanity check. Adapter guarantees `tag` is a string.
254
- if (!isObject(data) || typeof data.tag !== 'string')
255
- return null;
256
- return { type: 'rawNode', node: data };
257
- }
258
- case 'mex_notification': {
259
- if (!isObject(data))
260
- return null;
261
- const opName = asString(data.op_name);
262
- if (!opName)
263
- return null;
264
- const payload = isObject(data.payload) ? data.payload : {};
265
- return {
266
- type: 'mexNotification',
267
- opName,
268
- from: asJidString(data.from),
269
- stanzaId: asString(data.stanza_id),
270
- offline: asBoolOr(data.offline, false),
271
- payload
272
- };
273
- }
274
- default:
275
- logger?.debug({ eventType: type }, 'unknown bridge event (no canonical mapping)');
276
- return null;
277
- }
278
- };
279
- // ─────────────────────────────────────────────────────────────────────────────
280
- // Per-event adapters
281
- // ─────────────────────────────────────────────────────────────────────────────
282
- const adaptMessage = (data, logger) => {
283
- if (!isObject(data))
284
- return null;
285
- const info = isObject(data.info) ? data.info : undefined;
286
- const messageProto = isObject(data.message) ? data.message : undefined;
287
- if (!info || !messageProto)
288
- return null;
289
- const src = isObject(info.source) ? info.source : undefined;
290
- const chat = src && asJidString(src.chat);
291
- const id = asString(info.id);
292
- if (!src || !chat || !id) {
293
- logger?.debug({ info }, 'message adapter: missing chat/id');
294
- return null;
295
- }
296
- const isGroup = asBoolOr(src.is_group, false);
297
- const senderRaw = src.sender;
298
- const senderJid = isGroup ? asJidString(senderRaw) : undefined;
299
- const participantAlt = isGroup && isBridgeJid(src.sender_alt) ? bridgeJidToString(src.sender_alt) : undefined;
300
- const remoteJidAlt = !isGroup && isBridgeJid(src.recipient_alt) ? bridgeJidToString(src.recipient_alt) : undefined;
301
- return {
302
- type: 'message',
303
- chatJid: chat,
304
- senderJid,
305
- isGroup,
306
- isFromMe: asBoolOr(src.is_from_me, false),
307
- id,
308
- timestamp: toUnixSeconds(info.timestamp),
309
- pushName: asString(info.push_name),
310
- participantAlt,
311
- remoteJidAlt,
312
- isViewOnce: info.is_view_once === true ? true : undefined,
313
- messageProto: messageProto
314
- };
315
- };
316
- const adaptReceipt = (data, logger) => {
317
- if (!isObject(data))
318
- return null;
319
- const src = isObject(data.source) ? data.source : undefined;
320
- if (!src)
321
- return null;
322
- const chat = asJidString(src.chat);
323
- const ids = Array.isArray(data.message_ids) ? data.message_ids.filter((x) => typeof x === 'string') : [];
324
- if (!chat || ids.length === 0) {
325
- logger?.debug({ data }, 'receipt adapter: missing chat or message_ids');
326
- return null;
327
- }
328
- const isGroup = asBoolOr(src.is_group, false);
329
- return {
330
- type: 'receipt',
331
- chatJid: chat,
332
- senderJid: isGroup ? asJidString(src.sender) : undefined,
333
- isGroup,
334
- isFromMe: asBoolOr(src.is_from_me, false),
335
- messageIds: ids,
336
- timestamp: toUnixSeconds(data.timestamp)
337
- };
338
- };
339
- const adaptStarUpdate = (data) => {
340
- if (!isObject(data))
341
- return null;
342
- const chatJid = asJidString(data.chat_jid);
343
- const messageId = asString(data.message_id);
344
- if (!chatJid || !messageId)
345
- return null;
346
- const action = isObject(data.action) ? data.action : undefined;
347
- return {
348
- type: 'starUpdate',
349
- chatJid,
350
- messageId,
351
- fromMe: asBoolOr(data.from_me, false),
352
- participantJid: asJidString(data.participant_jid),
353
- starred: asBoolOr(action?.starred, false)
354
- };
355
- };
356
- const adaptIncomingCall = (data, logger) => {
357
- if (!isObject(data))
358
- return null;
359
- const from = asJidString(data.from);
360
- if (!from)
361
- return null;
362
- const action = isObject(data.action) ? data.action : undefined;
363
- if (!action)
364
- return null;
365
- const actionType = parseCallActionType(action.type);
366
- const callId = asString(action.call_id);
367
- if (!actionType || !callId) {
368
- logger?.debug({ data }, 'incoming_call adapter: missing action.type/call_id');
369
- return null;
370
- }
371
- const canonicalAction = { type: actionType, callId };
372
- if (actionType === 'offer') {
373
- canonicalAction.callerPn = asJidString(action.caller_pn);
374
- canonicalAction.isVideo = asBoolOr(action.is_video, false);
375
- }
376
- return {
377
- type: 'incomingCall',
378
- from,
379
- timestamp: toUnixSeconds(data.timestamp),
380
- offline: asBoolOr(data.offline, false),
381
- action: canonicalAction
382
- };
383
- };
384
- const parseCallActionType = (raw) => {
385
- const norm = normalizeDiscriminator(raw);
386
- switch (norm) {
387
- case 'offer':
388
- return 'offer';
389
- case 'pre_accept':
390
- case 'preaccept':
391
- return 'preAccept';
392
- case 'accept':
393
- return 'accept';
394
- case 'reject':
395
- return 'reject';
396
- case 'terminate':
397
- return 'terminate';
398
- default:
399
- return undefined;
400
- }
401
- };
402
- // ── Group action adapter — the one that actually uncovered the PascalCase drift ──
403
- const adaptGroupParticipant = (raw) => {
404
- if (!isObject(raw))
405
- return null;
406
- const jid = asJidString(raw.jid);
407
- if (!jid)
408
- return null;
409
- return { jid, phoneNumber: asJidString(raw.phone_number) };
410
- };
411
- const adaptGroupParticipants = (raw) => {
412
- if (!Array.isArray(raw))
413
- return [];
414
- return raw.map(adaptGroupParticipant).filter((p) => p !== null);
415
- };
416
- const adaptGroupAction = (raw) => {
417
- if (!isObject(raw))
418
- return null;
419
- const norm = normalizeDiscriminator(raw.type);
420
- const rawType = asString(raw.type) ?? 'unknown';
421
- if (!norm)
422
- return { type: 'unknown', rawType };
423
- switch (norm) {
424
- case 'add':
425
- return { type: 'add', participants: adaptGroupParticipants(raw.participants), reason: asString(raw.reason) };
426
- case 'remove':
427
- return { type: 'remove', participants: adaptGroupParticipants(raw.participants), reason: asString(raw.reason) };
428
- case 'promote':
429
- return { type: 'promote', participants: adaptGroupParticipants(raw.participants) };
430
- case 'demote':
431
- return { type: 'demote', participants: adaptGroupParticipants(raw.participants) };
432
- case 'modify':
433
- return { type: 'modify', participants: adaptGroupParticipants(raw.participants) };
434
- case 'subject':
435
- return {
436
- type: 'subject',
437
- subject: asString(raw.subject) ?? '',
438
- subjectOwner: asJidString(raw.subject_owner),
439
- subjectTime: asNumber(raw.subject_time)
440
- };
441
- case 'description':
442
- return {
443
- type: 'description',
444
- id: asString(raw.id) ?? '',
445
- description: asString(raw.description)
446
- };
447
- case 'locked':
448
- return { type: 'locked' };
449
- case 'unlocked':
450
- return { type: 'unlocked' };
451
- case 'announce':
452
- case 'announcement':
453
- return { type: 'announce' };
454
- case 'not_announce':
455
- case 'not_announcement':
456
- case 'notannounce':
457
- return { type: 'notAnnounce' };
458
- case 'ephemeral': {
459
- const expiration = asNumber(raw.expiration);
460
- if (expiration == null)
461
- return null;
462
- return { type: 'ephemeral', expiration, trigger: asNumber(raw.trigger) };
463
- }
464
- case 'membership_approval_mode':
465
- case 'membershipapprovalmode':
466
- return { type: 'membershipApprovalMode', enabled: asBoolOr(raw.enabled, false) };
467
- case 'member_add_mode':
468
- case 'memberaddmode':
469
- return { type: 'memberAddMode', mode: asString(raw.mode) ?? '' };
470
- case 'no_frequently_forwarded':
471
- case 'nofrequentlyforwarded':
472
- return { type: 'noFrequentlyForwarded' };
473
- case 'frequently_forwarded_ok':
474
- case 'frequentlyforwardedok':
475
- return { type: 'frequentlyForwardedOk' };
476
- case 'invite':
477
- return { type: 'invite', code: asString(raw.code) ?? '' };
478
- case 'revoke':
479
- case 'revoke_invite':
480
- case 'revokeinvite':
481
- return { type: 'revokeInvite' };
482
- case 'create':
483
- return { type: 'create' };
484
- case 'delete':
485
- return { type: 'delete', reason: asString(raw.reason) };
486
- case 'link':
487
- return { type: 'link', linkType: asString(raw.link_type) ?? '' };
488
- case 'unlink':
489
- return {
490
- type: 'unlink',
491
- unlinkType: asString(raw.unlink_type) ?? '',
492
- unlinkReason: asString(raw.unlink_reason)
493
- };
494
- case 'membership_approval_request':
495
- case 'created_membership_requests':
496
- case 'revoked_membership_requests':
497
- return { type: 'unknown', rawType: norm };
498
- default:
499
- return { type: 'unknown', rawType };
500
- }
501
- };
502
- const adaptGroupUpdate = (data, logger) => {
503
- if (!isObject(data))
504
- return null;
505
- const groupJid = asJidString(data.group_jid);
506
- if (!groupJid)
507
- return null;
508
- const action = adaptGroupAction(data.action);
509
- if (!action) {
510
- logger?.warn({ data }, 'group_update adapter: action shape rejected');
511
- return null;
512
- }
513
- return {
514
- type: 'groupUpdate',
515
- groupJid,
516
- author: asJidString(data.participant),
517
- authorPn: asJidString(data.participant_pn),
518
- timestamp: toUnixSeconds(data.timestamp),
519
- isLidAddressingMode: asBoolOr(data.is_lid_addressing_mode, false),
520
- action
521
- };
522
- };
19
+ export const adaptBridgeEvent = (event, logger) => adaptBridgeEventViaSchema(event, logger);
523
20
  //# sourceMappingURL=adapt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"adapt.js","sourceRoot":"","sources":["../../src/Bridge/adapt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adapt.js","sourceRoot":"","sources":["../../src/Bridge/adapt.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,EAAE,yBAAyB,EAAE,wBAAwB,IAAI,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAEtG;;;;;GAKG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAwB,iBAAiB,CAAA;AAE9E,uFAAuF;AACvF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,KAAoB,EAAE,MAAgB,EAAyB,EAAE,CACjG,yBAAyB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Schema-driven bridge → canonical adapter table.
3
+ *
4
+ * The single source of truth for "every bridge event variant we accept and
5
+ * how it maps to a CanonicalEvent". Each entry receives the bridge's typed
6
+ * data slot (`Extract<WhatsAppEvent, { type: T }>['data']`) and returns
7
+ * either a CanonicalEvent or `null` (drop on unrecoverable shape).
8
+ *
9
+ * Type safety properties:
10
+ * 1. The table is `satisfies AdapterMap` where `AdapterMap` is keyed by
11
+ * every `WhatsAppEvent['type']`. Adding a new variant to the bridge
12
+ * `.d.ts` and forgetting an entry here is a compile error.
13
+ * 2. Each entry's `data` parameter is the bridge's narrow type — fields
14
+ * come back as the right TS type without manual `unknown` checks.
15
+ * 3. Each entry's return type is `CanonicalEvent | null`. Returning the
16
+ * wrong canonical shape is a compile error.
17
+ *
18
+ * Where the bridge `.d.ts` references a sub-type that isn't separately
19
+ * exported (PinAction, MuteAction, ArchiveChatAction, etc. — the action
20
+ * field of every sync-action event), TS resolves the type to `any`. We
21
+ * apply narrowing parsers from `./primitives` (`isObject`, `asBoolOr`,
22
+ * `asNumber`, `asString`) at those leak points only — not boilerplate
23
+ * everywhere.
24
+ */
25
+ import type { WhatsAppEvent } from 'whatsapp-rust-bridge';
26
+ import type { ILogger } from '../Utils/logger.js';
27
+ import type { CanonicalEvent } from './types.js';
28
+ export type BridgeEventType = WhatsAppEvent['type'];
29
+ /** Set of bridge event types we explicitly handle — derived from the table. */
30
+ export declare const KNOWN_BRIDGE_EVENT_TYPES: ReadonlySet<string>;
31
+ /**
32
+ * Public entry point — looks up the adapter by event type and runs it.
33
+ * Mirrors the previous `adaptBridgeEvent` API exactly.
34
+ */
35
+ export declare const adaptBridgeEventViaSchema: (event: WhatsAppEvent, logger?: ILogger) => CanonicalEvent | null;
36
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/Bridge/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAEzD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAEjD,OAAO,KAAK,EAGX,cAAc,EAGd,MAAM,YAAY,CAAA;AAiBnB,MAAM,MAAM,eAAe,GAAG,aAAa,CAAC,MAAM,CAAC,CAAA;AA0WnD,+EAA+E;AAC/E,eAAO,MAAM,wBAAwB,EAAE,WAAW,CAAC,MAAM,CAAkC,CAAA;AAE3F;;;GAGG;AACH,eAAO,MAAM,yBAAyB,GAAI,OAAO,aAAa,EAAE,SAAS,OAAO,KAAG,cAAc,GAAG,IAUnG,CAAA"}