@zapo-js/fake-server 0.3.0

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 (238) hide show
  1. package/README.md +176 -0
  2. package/dist/api/AppStateSyncManager.d.ts +27 -0
  3. package/dist/api/AppStateSyncManager.d.ts.map +1 -0
  4. package/dist/api/AppStateSyncManager.js +151 -0
  5. package/dist/api/AppStateSyncManager.js.map +1 -0
  6. package/dist/api/FakePairingDriver.d.ts +27 -0
  7. package/dist/api/FakePairingDriver.d.ts.map +1 -0
  8. package/dist/api/FakePairingDriver.js +36 -0
  9. package/dist/api/FakePairingDriver.js.map +1 -0
  10. package/dist/api/FakePeer.d.ts +143 -0
  11. package/dist/api/FakePeer.d.ts.map +1 -0
  12. package/dist/api/FakePeer.js +408 -0
  13. package/dist/api/FakePeer.js.map +1 -0
  14. package/dist/api/FakeWaServer.d.ts +167 -0
  15. package/dist/api/FakeWaServer.d.ts.map +1 -0
  16. package/dist/api/FakeWaServer.js +652 -0
  17. package/dist/api/FakeWaServer.js.map +1 -0
  18. package/dist/api/PreKeyDispenser.d.ts +23 -0
  19. package/dist/api/PreKeyDispenser.d.ts.map +1 -0
  20. package/dist/api/PreKeyDispenser.js +98 -0
  21. package/dist/api/PreKeyDispenser.js.map +1 -0
  22. package/dist/api/Scenario.d.ts +24 -0
  23. package/dist/api/Scenario.d.ts.map +1 -0
  24. package/dist/api/Scenario.js +38 -0
  25. package/dist/api/Scenario.js.map +1 -0
  26. package/dist/api/ServerRegistries.d.ts +110 -0
  27. package/dist/api/ServerRegistries.d.ts.map +1 -0
  28. package/dist/api/ServerRegistries.js +268 -0
  29. package/dist/api/ServerRegistries.js.map +1 -0
  30. package/dist/api/iq-handlers.d.ts +47 -0
  31. package/dist/api/iq-handlers.d.ts.map +1 -0
  32. package/dist/api/iq-handlers.js +498 -0
  33. package/dist/api/iq-handlers.js.map +1 -0
  34. package/dist/cli.d.ts +4 -0
  35. package/dist/cli.d.ts.map +1 -0
  36. package/dist/cli.js +249 -0
  37. package/dist/cli.js.map +1 -0
  38. package/dist/index.d.ts +51 -0
  39. package/dist/index.d.ts.map +1 -0
  40. package/dist/index.js +74 -0
  41. package/dist/index.js.map +1 -0
  42. package/dist/infra/WaFakeConnection.d.ts +23 -0
  43. package/dist/infra/WaFakeConnection.d.ts.map +1 -0
  44. package/dist/infra/WaFakeConnection.js +54 -0
  45. package/dist/infra/WaFakeConnection.js.map +1 -0
  46. package/dist/infra/WaFakeConnectionPipeline.d.ts +51 -0
  47. package/dist/infra/WaFakeConnectionPipeline.d.ts.map +1 -0
  48. package/dist/infra/WaFakeConnectionPipeline.js +224 -0
  49. package/dist/infra/WaFakeConnectionPipeline.js.map +1 -0
  50. package/dist/infra/WaFakeFrameSocket.d.ts +29 -0
  51. package/dist/infra/WaFakeFrameSocket.d.ts.map +1 -0
  52. package/dist/infra/WaFakeFrameSocket.js +122 -0
  53. package/dist/infra/WaFakeFrameSocket.js.map +1 -0
  54. package/dist/infra/WaFakeMediaHttpsServer.d.ts +16 -0
  55. package/dist/infra/WaFakeMediaHttpsServer.d.ts.map +1 -0
  56. package/dist/infra/WaFakeMediaHttpsServer.js +131 -0
  57. package/dist/infra/WaFakeMediaHttpsServer.js.map +1 -0
  58. package/dist/infra/WaFakeNoiseHandshake.d.ts +23 -0
  59. package/dist/infra/WaFakeNoiseHandshake.d.ts.map +1 -0
  60. package/dist/infra/WaFakeNoiseHandshake.js +76 -0
  61. package/dist/infra/WaFakeNoiseHandshake.js.map +1 -0
  62. package/dist/infra/WaFakeTransport.d.ts +15 -0
  63. package/dist/infra/WaFakeTransport.d.ts.map +1 -0
  64. package/dist/infra/WaFakeTransport.js +34 -0
  65. package/dist/infra/WaFakeTransport.js.map +1 -0
  66. package/dist/infra/WaFakeWsServer.d.ts +29 -0
  67. package/dist/infra/WaFakeWsServer.d.ts.map +1 -0
  68. package/dist/infra/WaFakeWsServer.js +101 -0
  69. package/dist/infra/WaFakeWsServer.js.map +1 -0
  70. package/dist/protocol/auth/cert-chain.d.ts +18 -0
  71. package/dist/protocol/auth/cert-chain.d.ts.map +1 -0
  72. package/dist/protocol/auth/cert-chain.js +44 -0
  73. package/dist/protocol/auth/cert-chain.js.map +1 -0
  74. package/dist/protocol/auth/client-payload-validate.d.ts +21 -0
  75. package/dist/protocol/auth/client-payload-validate.d.ts.map +1 -0
  76. package/dist/protocol/auth/client-payload-validate.js +61 -0
  77. package/dist/protocol/auth/client-payload-validate.js.map +1 -0
  78. package/dist/protocol/auth/fake-primary-device.d.ts +19 -0
  79. package/dist/protocol/auth/fake-primary-device.d.ts.map +1 -0
  80. package/dist/protocol/auth/fake-primary-device.js +53 -0
  81. package/dist/protocol/auth/fake-primary-device.js.map +1 -0
  82. package/dist/protocol/auth/pair-device.d.ts +26 -0
  83. package/dist/protocol/auth/pair-device.d.ts.map +1 -0
  84. package/dist/protocol/auth/pair-device.js +104 -0
  85. package/dist/protocol/auth/pair-device.js.map +1 -0
  86. package/dist/protocol/auth/success-node.d.ts +15 -0
  87. package/dist/protocol/auth/success-node.d.ts.map +1 -0
  88. package/dist/protocol/auth/success-node.js +30 -0
  89. package/dist/protocol/auth/success-node.js.map +1 -0
  90. package/dist/protocol/iq/abprops.d.ts +14 -0
  91. package/dist/protocol/iq/abprops.d.ts.map +1 -0
  92. package/dist/protocol/iq/abprops.js +34 -0
  93. package/dist/protocol/iq/abprops.js.map +1 -0
  94. package/dist/protocol/iq/appstate-sync.d.ts +38 -0
  95. package/dist/protocol/iq/appstate-sync.d.ts.map +1 -0
  96. package/dist/protocol/iq/appstate-sync.js +154 -0
  97. package/dist/protocol/iq/appstate-sync.js.map +1 -0
  98. package/dist/protocol/iq/business.d.ts +13 -0
  99. package/dist/protocol/iq/business.d.ts.map +1 -0
  100. package/dist/protocol/iq/business.js +64 -0
  101. package/dist/protocol/iq/business.js.map +1 -0
  102. package/dist/protocol/iq/dirty-bits.d.ts +8 -0
  103. package/dist/protocol/iq/dirty-bits.d.ts.map +1 -0
  104. package/dist/protocol/iq/dirty-bits.js +23 -0
  105. package/dist/protocol/iq/dirty-bits.js.map +1 -0
  106. package/dist/protocol/iq/group-ops.d.ts +34 -0
  107. package/dist/protocol/iq/group-ops.d.ts.map +1 -0
  108. package/dist/protocol/iq/group-ops.js +164 -0
  109. package/dist/protocol/iq/group-ops.js.map +1 -0
  110. package/dist/protocol/iq/newsletter.d.ts +4 -0
  111. package/dist/protocol/iq/newsletter.d.ts.map +1 -0
  112. package/dist/protocol/iq/newsletter.js +18 -0
  113. package/dist/protocol/iq/newsletter.js.map +1 -0
  114. package/dist/protocol/iq/prekey-fetch.d.ts +18 -0
  115. package/dist/protocol/iq/prekey-fetch.d.ts.map +1 -0
  116. package/dist/protocol/iq/prekey-fetch.js +92 -0
  117. package/dist/protocol/iq/prekey-fetch.js.map +1 -0
  118. package/dist/protocol/iq/privacy-token.d.ts +9 -0
  119. package/dist/protocol/iq/privacy-token.d.ts.map +1 -0
  120. package/dist/protocol/iq/privacy-token.js +30 -0
  121. package/dist/protocol/iq/privacy-token.js.map +1 -0
  122. package/dist/protocol/iq/privacy.d.ts +22 -0
  123. package/dist/protocol/iq/privacy.d.ts.map +1 -0
  124. package/dist/protocol/iq/privacy.js +133 -0
  125. package/dist/protocol/iq/privacy.js.map +1 -0
  126. package/dist/protocol/iq/profile.d.ts +22 -0
  127. package/dist/protocol/iq/profile.d.ts.map +1 -0
  128. package/dist/protocol/iq/profile.js +80 -0
  129. package/dist/protocol/iq/profile.js.map +1 -0
  130. package/dist/protocol/iq/router.d.ts +39 -0
  131. package/dist/protocol/iq/router.d.ts.map +1 -0
  132. package/dist/protocol/iq/router.js +118 -0
  133. package/dist/protocol/iq/router.js.map +1 -0
  134. package/dist/protocol/iq/usync.d.ts +8 -0
  135. package/dist/protocol/iq/usync.d.ts.map +1 -0
  136. package/dist/protocol/iq/usync.js +68 -0
  137. package/dist/protocol/iq/usync.js.map +1 -0
  138. package/dist/protocol/push/app-state-key-share.d.ts +17 -0
  139. package/dist/protocol/push/app-state-key-share.d.ts.map +1 -0
  140. package/dist/protocol/push/app-state-key-share.js +30 -0
  141. package/dist/protocol/push/app-state-key-share.js.map +1 -0
  142. package/dist/protocol/push/call-failure.d.ts +16 -0
  143. package/dist/protocol/push/call-failure.d.ts.map +1 -0
  144. package/dist/protocol/push/call-failure.js +32 -0
  145. package/dist/protocol/push/call-failure.js.map +1 -0
  146. package/dist/protocol/push/chatstate.d.ts +15 -0
  147. package/dist/protocol/push/chatstate.d.ts.map +1 -0
  148. package/dist/protocol/push/chatstate.js +27 -0
  149. package/dist/protocol/push/chatstate.js.map +1 -0
  150. package/dist/protocol/push/error-stanza.d.ts +8 -0
  151. package/dist/protocol/push/error-stanza.d.ts.map +1 -0
  152. package/dist/protocol/push/error-stanza.js +17 -0
  153. package/dist/protocol/push/error-stanza.js.map +1 -0
  154. package/dist/protocol/push/history-sync.d.ts +46 -0
  155. package/dist/protocol/push/history-sync.d.ts.map +1 -0
  156. package/dist/protocol/push/history-sync.js +117 -0
  157. package/dist/protocol/push/history-sync.js.map +1 -0
  158. package/dist/protocol/push/message.d.ts +21 -0
  159. package/dist/protocol/push/message.d.ts.map +1 -0
  160. package/dist/protocol/push/message.js +42 -0
  161. package/dist/protocol/push/message.js.map +1 -0
  162. package/dist/protocol/push/notification.d.ts +21 -0
  163. package/dist/protocol/push/notification.d.ts.map +1 -0
  164. package/dist/protocol/push/notification.js +34 -0
  165. package/dist/protocol/push/notification.js.map +1 -0
  166. package/dist/protocol/push/presence.d.ts +11 -0
  167. package/dist/protocol/push/presence.d.ts.map +1 -0
  168. package/dist/protocol/push/presence.js +18 -0
  169. package/dist/protocol/push/presence.js.map +1 -0
  170. package/dist/protocol/push/receipt.d.ts +14 -0
  171. package/dist/protocol/push/receipt.d.ts.map +1 -0
  172. package/dist/protocol/push/receipt.js +25 -0
  173. package/dist/protocol/push/receipt.js.map +1 -0
  174. package/dist/protocol/signal/fake-app-state-crypto.d.ts +49 -0
  175. package/dist/protocol/signal/fake-app-state-crypto.d.ts.map +1 -0
  176. package/dist/protocol/signal/fake-app-state-crypto.js +202 -0
  177. package/dist/protocol/signal/fake-app-state-crypto.js.map +1 -0
  178. package/dist/protocol/signal/fake-peer-double-ratchet.d.ts +38 -0
  179. package/dist/protocol/signal/fake-peer-double-ratchet.d.ts.map +1 -0
  180. package/dist/protocol/signal/fake-peer-double-ratchet.js +408 -0
  181. package/dist/protocol/signal/fake-peer-double-ratchet.js.map +1 -0
  182. package/dist/protocol/signal/fake-peer-group-recv-session.d.ts +10 -0
  183. package/dist/protocol/signal/fake-peer-group-recv-session.d.ts.map +1 -0
  184. package/dist/protocol/signal/fake-peer-group-recv-session.js +129 -0
  185. package/dist/protocol/signal/fake-peer-group-recv-session.js.map +1 -0
  186. package/dist/protocol/signal/fake-peer-identity.d.ts +7 -0
  187. package/dist/protocol/signal/fake-peer-identity.d.ts.map +1 -0
  188. package/dist/protocol/signal/fake-peer-identity.js +12 -0
  189. package/dist/protocol/signal/fake-peer-identity.js.map +1 -0
  190. package/dist/protocol/signal/fake-peer-key-bundle.d.ts +24 -0
  191. package/dist/protocol/signal/fake-peer-key-bundle.d.ts.map +1 -0
  192. package/dist/protocol/signal/fake-peer-key-bundle.js +29 -0
  193. package/dist/protocol/signal/fake-peer-key-bundle.js.map +1 -0
  194. package/dist/protocol/signal/fake-peer-recv-session.d.ts +60 -0
  195. package/dist/protocol/signal/fake-peer-recv-session.d.ts.map +1 -0
  196. package/dist/protocol/signal/fake-peer-recv-session.js +284 -0
  197. package/dist/protocol/signal/fake-peer-recv-session.js.map +1 -0
  198. package/dist/protocol/signal/fake-peer-session.d.ts +87 -0
  199. package/dist/protocol/signal/fake-peer-session.d.ts.map +1 -0
  200. package/dist/protocol/signal/fake-peer-session.js +207 -0
  201. package/dist/protocol/signal/fake-peer-session.js.map +1 -0
  202. package/dist/protocol/signal/fake-sender-key.d.ts +15 -0
  203. package/dist/protocol/signal/fake-sender-key.d.ts.map +1 -0
  204. package/dist/protocol/signal/fake-sender-key.js +91 -0
  205. package/dist/protocol/signal/fake-sender-key.js.map +1 -0
  206. package/dist/protocol/signal/prekey-upload.d.ts +22 -0
  207. package/dist/protocol/signal/prekey-upload.d.ts.map +1 -0
  208. package/dist/protocol/signal/prekey-upload.js +113 -0
  209. package/dist/protocol/signal/prekey-upload.js.map +1 -0
  210. package/dist/protocol/stream/stream-error.d.ts +8 -0
  211. package/dist/protocol/stream/stream-error.d.ts.map +1 -0
  212. package/dist/protocol/stream/stream-error.js +64 -0
  213. package/dist/protocol/stream/stream-error.js.map +1 -0
  214. package/dist/state/fake-app-state-collection.d.ts +35 -0
  215. package/dist/state/fake-app-state-collection.d.ts.map +1 -0
  216. package/dist/state/fake-app-state-collection.js +139 -0
  217. package/dist/state/fake-app-state-collection.js.map +1 -0
  218. package/dist/state/fake-media-store.d.ts +35 -0
  219. package/dist/state/fake-media-store.d.ts.map +1 -0
  220. package/dist/state/fake-media-store.js +57 -0
  221. package/dist/state/fake-media-store.js.map +1 -0
  222. package/dist/transport/codec.d.ts +10 -0
  223. package/dist/transport/codec.d.ts.map +1 -0
  224. package/dist/transport/codec.js +17 -0
  225. package/dist/transport/codec.js.map +1 -0
  226. package/dist/transport/crypto.d.ts +11 -0
  227. package/dist/transport/crypto.d.ts.map +1 -0
  228. package/dist/transport/crypto.js +36 -0
  229. package/dist/transport/crypto.js.map +1 -0
  230. package/dist/transport/index.d.ts +4 -0
  231. package/dist/transport/index.d.ts.map +1 -0
  232. package/dist/transport/index.js +20 -0
  233. package/dist/transport/index.js.map +1 -0
  234. package/dist/transport/protos.d.ts +10 -0
  235. package/dist/transport/protos.d.ts.map +1 -0
  236. package/dist/transport/protos.js +13 -0
  237. package/dist/transport/protos.js.map +1 -0
  238. package/package.json +43 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile.js","sourceRoot":"","sources":["../../../src/protocol/iq/profile.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /** IQ matcher/dispatcher used by the fake server. */
2
+ import type { BinaryNode } from '../../transport/codec';
3
+ export type WaFakeIqType = 'get' | 'set';
4
+ export interface WaFakeIqMatcher {
5
+ readonly id?: string;
6
+ readonly type?: WaFakeIqType;
7
+ readonly xmlns?: string;
8
+ readonly childTag?: string;
9
+ }
10
+ export type WaFakeIqResponder = (iq: BinaryNode) => BinaryNode | Promise<BinaryNode>;
11
+ export interface WaFakeIqHandler {
12
+ readonly matcher: WaFakeIqMatcher;
13
+ readonly respond: WaFakeIqResponder;
14
+ readonly label?: string;
15
+ }
16
+ export interface WaFakeIqRouterEvents {
17
+ readonly onUnhandled?: (iq: BinaryNode) => void;
18
+ }
19
+ export declare class WaFakeIqRouter {
20
+ /** High-priority handlers override default ones for a test case. */
21
+ private readonly highPriorityHandlers;
22
+ private readonly handlers;
23
+ private events;
24
+ register(handler: WaFakeIqHandler, options?: {
25
+ readonly priority?: 'high' | 'default';
26
+ }): () => void;
27
+ setEvents(events: WaFakeIqRouterEvents): void;
28
+ route(iq: BinaryNode): Promise<BinaryNode | null>;
29
+ }
30
+ export declare function buildIqResult(inbound: BinaryNode, options?: {
31
+ readonly from?: string;
32
+ readonly content?: BinaryNode[];
33
+ }): BinaryNode;
34
+ export declare function buildIqError(inbound: BinaryNode, options: {
35
+ readonly code: number;
36
+ readonly text?: string;
37
+ readonly from?: string;
38
+ }): BinaryNode;
39
+ //# sourceMappingURL=router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../../src/protocol/iq/router.ts"],"names":[],"mappings":"AAAA,qDAAqD;AAErD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAEvD,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,KAAK,CAAA;AAExC,MAAM,WAAW,eAAe;IAC5B,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,IAAI,CAAC,EAAE,YAAY,CAAA;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAC7B;AAED,MAAM,MAAM,iBAAiB,GAAG,CAAC,EAAE,EAAE,UAAU,KAAK,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;AAEpF,MAAM,WAAW,eAAe;IAC5B,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAA;IACjC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAA;IACnC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,WAAW,oBAAoB;IACjC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,UAAU,KAAK,IAAI,CAAA;CAClD;AAED,qBAAa,cAAc;IACvB,oEAAoE;IACpE,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAwB;IAC7D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwB;IACjD,OAAO,CAAC,MAAM,CAA2B;IAElC,QAAQ,CACX,OAAO,EAAE,eAAe,EACxB,OAAO,GAAE;QAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAAO,GACzD,MAAM,IAAI;IAWN,SAAS,CAAC,MAAM,EAAE,oBAAoB,GAAG,IAAI;IAIvC,KAAK,CAAC,EAAE,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;CAiBjE;AAoBD,wBAAgB,aAAa,CACzB,OAAO,EAAE,UAAU,EACnB,OAAO,GAAE;IAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,CAAA;CAAO,GAC1E,UAAU,CAmBZ;AAED,wBAAgB,YAAY,CACxB,OAAO,EAAE,UAAU,EACnB,OAAO,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GACnF,UAAU,CA2BZ"}
@@ -0,0 +1,118 @@
1
+ "use strict";
2
+ /** IQ matcher/dispatcher used by the fake server. */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.WaFakeIqRouter = void 0;
5
+ exports.buildIqResult = buildIqResult;
6
+ exports.buildIqError = buildIqError;
7
+ class WaFakeIqRouter {
8
+ constructor() {
9
+ /** High-priority handlers override default ones for a test case. */
10
+ this.highPriorityHandlers = [];
11
+ this.handlers = [];
12
+ this.events = {};
13
+ }
14
+ register(handler, options = {}) {
15
+ const list = options.priority === 'high' ? this.highPriorityHandlers : this.handlers;
16
+ list.push(handler);
17
+ return () => {
18
+ const index = list.indexOf(handler);
19
+ if (index >= 0) {
20
+ list.splice(index, 1);
21
+ }
22
+ };
23
+ }
24
+ setEvents(events) {
25
+ this.events = events;
26
+ }
27
+ async route(iq) {
28
+ if (iq.tag !== 'iq') {
29
+ return null;
30
+ }
31
+ for (const handler of this.highPriorityHandlers) {
32
+ if (matches(iq, handler.matcher)) {
33
+ return handler.respond(iq);
34
+ }
35
+ }
36
+ for (const handler of this.handlers) {
37
+ if (matches(iq, handler.matcher)) {
38
+ return handler.respond(iq);
39
+ }
40
+ }
41
+ this.events.onUnhandled?.(iq);
42
+ return null;
43
+ }
44
+ }
45
+ exports.WaFakeIqRouter = WaFakeIqRouter;
46
+ function matches(iq, matcher) {
47
+ if (matcher.id !== undefined) {
48
+ if (iq.attrs.id !== matcher.id)
49
+ return false;
50
+ }
51
+ if (matcher.type !== undefined) {
52
+ if (iq.attrs.type !== matcher.type)
53
+ return false;
54
+ }
55
+ if (matcher.xmlns !== undefined) {
56
+ if (iq.attrs.xmlns !== matcher.xmlns)
57
+ return false;
58
+ }
59
+ if (matcher.childTag !== undefined) {
60
+ const children = Array.isArray(iq.content) ? iq.content : null;
61
+ if (!children || children.length === 0)
62
+ return false;
63
+ if (children[0].tag !== matcher.childTag)
64
+ return false;
65
+ }
66
+ return true;
67
+ }
68
+ function buildIqResult(inbound, options = {}) {
69
+ const id = inbound.attrs.id;
70
+ if (!id) {
71
+ throw new Error('cannot build iq result for inbound iq without an id');
72
+ }
73
+ const attrs = {
74
+ type: 'result',
75
+ id
76
+ };
77
+ if (options.from !== undefined) {
78
+ attrs.from = options.from;
79
+ }
80
+ else if (typeof inbound.attrs.to === 'string') {
81
+ attrs.from = inbound.attrs.to;
82
+ }
83
+ return {
84
+ tag: 'iq',
85
+ attrs,
86
+ ...(options.content ? { content: options.content } : {})
87
+ };
88
+ }
89
+ function buildIqError(inbound, options) {
90
+ const id = inbound.attrs.id;
91
+ if (!id) {
92
+ throw new Error('cannot build iq error for inbound iq without an id');
93
+ }
94
+ const attrs = {
95
+ type: 'error',
96
+ id
97
+ };
98
+ if (options.from !== undefined) {
99
+ attrs.from = options.from;
100
+ }
101
+ else if (typeof inbound.attrs.to === 'string') {
102
+ attrs.from = inbound.attrs.to;
103
+ }
104
+ return {
105
+ tag: 'iq',
106
+ attrs,
107
+ content: [
108
+ {
109
+ tag: 'error',
110
+ attrs: {
111
+ code: String(options.code),
112
+ ...(options.text !== undefined ? { text: options.text } : {})
113
+ }
114
+ }
115
+ ]
116
+ };
117
+ }
118
+ //# sourceMappingURL=router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../../../src/protocol/iq/router.ts"],"names":[],"mappings":";AAAA,qDAAqD;;;AAsFrD,sCAsBC;AAED,oCA8BC;AAnHD,MAAa,cAAc;IAA3B;QACI,oEAAoE;QACnD,yBAAoB,GAAsB,EAAE,CAAA;QAC5C,aAAQ,GAAsB,EAAE,CAAA;QACzC,WAAM,GAAyB,EAAE,CAAA;IAqC7C,CAAC;IAnCU,QAAQ,CACX,OAAwB,EACxB,UAAsD,EAAE;QAExD,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAA;QACpF,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAClB,OAAO,GAAG,EAAE;YACR,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;YACnC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;gBACb,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;YACzB,CAAC;QACL,CAAC,CAAA;IACL,CAAC;IAEM,SAAS,CAAC,MAA4B;QACzC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACxB,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,EAAc;QAC7B,IAAI,EAAE,CAAC,GAAG,KAAK,IAAI,EAAE,CAAC;YAClB,OAAO,IAAI,CAAA;QACf,CAAC;QACD,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC9C,IAAI,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC/B,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;YAC9B,CAAC;QACL,CAAC;QACD,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClC,IAAI,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC/B,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;YAC9B,CAAC;QACL,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,CAAA;QAC7B,OAAO,IAAI,CAAA;IACf,CAAC;CACJ;AAzCD,wCAyCC;AAED,SAAS,OAAO,CAAC,EAAc,EAAE,OAAwB;IACrD,IAAI,OAAO,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;QAC3B,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE;YAAE,OAAO,KAAK,CAAA;IAChD,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC7B,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI;YAAE,OAAO,KAAK,CAAA;IACpD,CAAC;IACD,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC9B,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK;YAAE,OAAO,KAAK,CAAA;IACtD,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAA;QAC9D,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,KAAK,CAAA;QACpD,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,OAAO,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAA;IAC1D,CAAC;IACD,OAAO,IAAI,CAAA;AACf,CAAC;AAED,SAAgB,aAAa,CACzB,OAAmB,EACnB,UAAuE,EAAE;IAEzE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,CAAA;IAC3B,IAAI,CAAC,EAAE,EAAE,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAA;IAC1E,CAAC;IACD,MAAM,KAAK,GAA2B;QAClC,IAAI,EAAE,QAAQ;QACd,EAAE;KACL,CAAA;IACD,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC7B,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAA;IAC7B,CAAC;SAAM,IAAI,OAAO,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;QAC9C,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,CAAA;IACjC,CAAC;IACD,OAAO;QACH,GAAG,EAAE,IAAI;QACT,KAAK;QACL,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC3D,CAAA;AACL,CAAC;AAED,SAAgB,YAAY,CACxB,OAAmB,EACnB,OAAkF;IAElF,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,CAAA;IAC3B,IAAI,CAAC,EAAE,EAAE,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAA;IACzE,CAAC;IACD,MAAM,KAAK,GAA2B;QAClC,IAAI,EAAE,OAAO;QACb,EAAE;KACL,CAAA;IACD,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC7B,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAA;IAC7B,CAAC;SAAM,IAAI,OAAO,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;QAC9C,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,CAAA;IACjC,CAAC;IACD,OAAO;QACH,GAAG,EAAE,IAAI;QACT,KAAK;QACL,OAAO,EAAE;YACL;gBACI,GAAG,EAAE,OAAO;gBACZ,KAAK,EAAE;oBACH,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;oBAC1B,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAChE;aACJ;SACJ;KACJ,CAAA;AACL,CAAC"}
@@ -0,0 +1,8 @@
1
+ /** Builder for `usync` IQ result responses. */
2
+ import type { BinaryNode } from '../../transport/codec';
3
+ export interface UsyncUserDevicesResult {
4
+ readonly userJid: string;
5
+ readonly deviceIds?: readonly number[];
6
+ }
7
+ export declare function buildUsyncDevicesResult(inboundIq: BinaryNode, users: readonly UsyncUserDevicesResult[]): BinaryNode;
8
+ //# sourceMappingURL=usync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usync.d.ts","sourceRoot":"","sources":["../../../src/protocol/iq/usync.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAE/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAEvD,MAAM,WAAW,sBAAsB;IACnC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CACzC;AAED,wBAAgB,uBAAuB,CACnC,SAAS,EAAE,UAAU,EACrB,KAAK,EAAE,SAAS,sBAAsB,EAAE,GACzC,UAAU,CAqDZ"}
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ /** Builder for `usync` IQ result responses. */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.buildUsyncDevicesResult = buildUsyncDevicesResult;
5
+ function buildUsyncDevicesResult(inboundIq, users) {
6
+ const id = inboundIq.attrs.id;
7
+ if (!id) {
8
+ throw new Error('cannot build usync result without an inbound id');
9
+ }
10
+ const sid = extractUsyncSid(inboundIq) ?? `usync-${id}`;
11
+ const userNodes = users.map((user) => ({
12
+ tag: 'user',
13
+ attrs: { jid: user.userJid },
14
+ content: [
15
+ {
16
+ tag: 'devices',
17
+ attrs: {},
18
+ content: [
19
+ {
20
+ tag: 'device-list',
21
+ attrs: {},
22
+ content: (user.deviceIds ?? [0]).map((deviceId) => ({
23
+ tag: 'device',
24
+ attrs: { id: String(deviceId) }
25
+ }))
26
+ }
27
+ ]
28
+ }
29
+ ]
30
+ }));
31
+ return {
32
+ tag: 'iq',
33
+ attrs: {
34
+ id,
35
+ from: inboundIq.attrs.to ?? 's.whatsapp.net',
36
+ type: 'result'
37
+ },
38
+ content: [
39
+ {
40
+ tag: 'usync',
41
+ attrs: {
42
+ sid,
43
+ mode: 'query',
44
+ last: 'true',
45
+ index: '0'
46
+ },
47
+ content: [
48
+ {
49
+ tag: 'list',
50
+ attrs: {},
51
+ content: userNodes
52
+ }
53
+ ]
54
+ }
55
+ ]
56
+ };
57
+ }
58
+ function extractUsyncSid(iq) {
59
+ if (!Array.isArray(iq.content))
60
+ return undefined;
61
+ for (const child of iq.content) {
62
+ if (child.tag === 'usync' && typeof child.attrs.sid === 'string') {
63
+ return child.attrs.sid;
64
+ }
65
+ }
66
+ return undefined;
67
+ }
68
+ //# sourceMappingURL=usync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usync.js","sourceRoot":"","sources":["../../../src/protocol/iq/usync.ts"],"names":[],"mappings":";AAAA,+CAA+C;;AAS/C,0DAwDC;AAxDD,SAAgB,uBAAuB,CACnC,SAAqB,EACrB,KAAwC;IAExC,MAAM,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,EAAE,CAAA;IAC7B,IAAI,CAAC,EAAE,EAAE,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAA;IACtE,CAAC;IACD,MAAM,GAAG,GAAG,eAAe,CAAC,SAAS,CAAC,IAAI,SAAS,EAAE,EAAE,CAAA;IACvD,MAAM,SAAS,GAAiB,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACjD,GAAG,EAAE,MAAM;QACX,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE;QAC5B,OAAO,EAAE;YACL;gBACI,GAAG,EAAE,SAAS;gBACd,KAAK,EAAE,EAAE;gBACT,OAAO,EAAE;oBACL;wBACI,GAAG,EAAE,aAAa;wBAClB,KAAK,EAAE,EAAE;wBACT,OAAO,EAAE,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;4BAChD,GAAG,EAAE,QAAQ;4BACb,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE;yBAClC,CAAC,CAAC;qBACN;iBACJ;aACJ;SACJ;KACJ,CAAC,CAAC,CAAA;IAEH,OAAO;QACH,GAAG,EAAE,IAAI;QACT,KAAK,EAAE;YACH,EAAE;YACF,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,IAAI,gBAAgB;YAC5C,IAAI,EAAE,QAAQ;SACjB;QACD,OAAO,EAAE;YACL;gBACI,GAAG,EAAE,OAAO;gBACZ,KAAK,EAAE;oBACH,GAAG;oBACH,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,MAAM;oBACZ,KAAK,EAAE,GAAG;iBACb;gBACD,OAAO,EAAE;oBACL;wBACI,GAAG,EAAE,MAAM;wBACX,KAAK,EAAE,EAAE;wBACT,OAAO,EAAE,SAAS;qBACrB;iBACJ;aACJ;SACJ;KACJ,CAAA;AACL,CAAC;AAED,SAAS,eAAe,CAAC,EAAc;IACnC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC;QAAE,OAAO,SAAS,CAAA;IAChD,KAAK,MAAM,KAAK,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;QAC7B,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC/D,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,CAAA;QAC1B,CAAC;IACL,CAAC;IACD,OAAO,SAAS,CAAA;AACpB,CAAC"}
@@ -0,0 +1,17 @@
1
+ /** Builder for `APP_STATE_SYNC_KEY_SHARE` protocol messages. */
2
+ import { proto } from '../../transport/protos';
3
+ export interface FakeAppStateSyncKey {
4
+ readonly keyId: Uint8Array;
5
+ readonly keyData: Uint8Array;
6
+ readonly timestamp?: number;
7
+ readonly fingerprint?: {
8
+ readonly rawId?: number;
9
+ readonly currentIndex?: number;
10
+ readonly deviceIndexes?: readonly number[];
11
+ };
12
+ }
13
+ export interface BuildAppStateSyncKeyShareInput {
14
+ readonly keys: readonly FakeAppStateSyncKey[];
15
+ }
16
+ export declare function buildAppStateSyncKeyShareMessage(input: BuildAppStateSyncKeyShareInput): proto.IMessage;
17
+ //# sourceMappingURL=app-state-key-share.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-state-key-share.d.ts","sourceRoot":"","sources":["../../../src/protocol/push/app-state-key-share.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAEhE,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAA;AAE9C,MAAM,WAAW,mBAAmB;IAChC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAA;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,WAAW,CAAC,EAAE;QACnB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;QACvB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;QAC9B,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;KAC7C,CAAA;CACJ;AAED,MAAM,WAAW,8BAA8B;IAC3C,QAAQ,CAAC,IAAI,EAAE,SAAS,mBAAmB,EAAE,CAAA;CAChD;AAED,wBAAgB,gCAAgC,CAC5C,KAAK,EAAE,8BAA8B,GACtC,KAAK,CAAC,QAAQ,CAuBhB"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ /** Builder for `APP_STATE_SYNC_KEY_SHARE` protocol messages. */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.buildAppStateSyncKeyShareMessage = buildAppStateSyncKeyShareMessage;
5
+ const protos_1 = require("../../transport/protos");
6
+ function buildAppStateSyncKeyShareMessage(input) {
7
+ if (input.keys.length === 0) {
8
+ throw new Error('buildAppStateSyncKeyShareMessage requires at least one key');
9
+ }
10
+ return {
11
+ protocolMessage: {
12
+ type: protos_1.proto.Message.ProtocolMessage.Type.APP_STATE_SYNC_KEY_SHARE,
13
+ appStateSyncKeyShare: {
14
+ keys: input.keys.map((key) => ({
15
+ keyId: { keyId: key.keyId },
16
+ keyData: {
17
+ keyData: key.keyData,
18
+ timestamp: key.timestamp ?? Date.now(),
19
+ fingerprint: {
20
+ rawId: key.fingerprint?.rawId ?? 0,
21
+ currentIndex: key.fingerprint?.currentIndex ?? 0,
22
+ deviceIndexes: [...(key.fingerprint?.deviceIndexes ?? [])]
23
+ }
24
+ }
25
+ }))
26
+ }
27
+ }
28
+ };
29
+ }
30
+ //# sourceMappingURL=app-state-key-share.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-state-key-share.js","sourceRoot":"","sources":["../../../src/protocol/push/app-state-key-share.ts"],"names":[],"mappings":";AAAA,gEAAgE;;AAmBhE,4EAyBC;AA1CD,mDAA8C;AAiB9C,SAAgB,gCAAgC,CAC5C,KAAqC;IAErC,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAA;IACjF,CAAC;IACD,OAAO;QACH,eAAe,EAAE;YACb,IAAI,EAAE,cAAK,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,wBAAwB;YACjE,oBAAoB,EAAE;gBAClB,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;oBAC3B,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE;oBAC3B,OAAO,EAAE;wBACL,OAAO,EAAE,GAAG,CAAC,OAAO;wBACpB,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE;wBACtC,WAAW,EAAE;4BACT,KAAK,EAAE,GAAG,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC;4BAClC,YAAY,EAAE,GAAG,CAAC,WAAW,EAAE,YAAY,IAAI,CAAC;4BAChD,aAAa,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,aAAa,IAAI,EAAE,CAAC,CAAC;yBAC7D;qBACJ;iBACJ,CAAC,CAAC;aACN;SACJ;KACJ,CAAA;AACL,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { BinaryNode } from '../../transport/codec';
2
+ export interface BuildCallInput {
3
+ readonly id: string;
4
+ readonly from: string;
5
+ readonly to?: string;
6
+ readonly t?: number;
7
+ readonly children?: readonly BinaryNode[];
8
+ }
9
+ export declare function buildCall(input: BuildCallInput): BinaryNode;
10
+ export interface BuildFailureInput {
11
+ readonly reason: string;
12
+ readonly location?: string;
13
+ readonly extraAttrs?: Readonly<Record<string, string>>;
14
+ }
15
+ export declare function buildFailure(input: BuildFailureInput): BinaryNode;
16
+ //# sourceMappingURL=call-failure.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"call-failure.d.ts","sourceRoot":"","sources":["../../../src/protocol/push/call-failure.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAEvD,MAAM,WAAW,cAAc;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,UAAU,EAAE,CAAA;CAC5C;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,UAAU,CAY3D;AAED,MAAM,WAAW,iBAAiB;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;CACzD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,UAAU,CAUjE"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildCall = buildCall;
4
+ exports.buildFailure = buildFailure;
5
+ function buildCall(input) {
6
+ const attrs = {
7
+ id: input.id,
8
+ from: input.from
9
+ };
10
+ if (input.to !== undefined)
11
+ attrs.to = input.to;
12
+ if (input.t !== undefined)
13
+ attrs.t = String(input.t);
14
+ return {
15
+ tag: 'call',
16
+ attrs,
17
+ ...(input.children ? { content: input.children } : {})
18
+ };
19
+ }
20
+ function buildFailure(input) {
21
+ const attrs = {
22
+ reason: input.reason,
23
+ ...(input.extraAttrs ?? {})
24
+ };
25
+ if (input.location !== undefined)
26
+ attrs.location = input.location;
27
+ return {
28
+ tag: 'failure',
29
+ attrs
30
+ };
31
+ }
32
+ //# sourceMappingURL=call-failure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"call-failure.js","sourceRoot":"","sources":["../../../src/protocol/push/call-failure.ts"],"names":[],"mappings":";;AAUA,8BAYC;AAQD,oCAUC;AA9BD,SAAgB,SAAS,CAAC,KAAqB;IAC3C,MAAM,KAAK,GAA2B;QAClC,EAAE,EAAE,KAAK,CAAC,EAAE;QACZ,IAAI,EAAE,KAAK,CAAC,IAAI;KACnB,CAAA;IACD,IAAI,KAAK,CAAC,EAAE,KAAK,SAAS;QAAE,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAA;IAC/C,IAAI,KAAK,CAAC,CAAC,KAAK,SAAS;QAAE,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IACpD,OAAO;QACH,GAAG,EAAE,MAAM;QACX,KAAK;QACL,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACzD,CAAA;AACL,CAAC;AAQD,SAAgB,YAAY,CAAC,KAAwB;IACjD,MAAM,KAAK,GAA2B;QAClC,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,GAAG,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC;KAC9B,CAAA;IACD,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS;QAAE,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAA;IACjE,OAAO;QACH,GAAG,EAAE,SAAS;QACd,KAAK;KACR,CAAA;AACL,CAAC"}
@@ -0,0 +1,15 @@
1
+ /** Builder for inbound `<chatstate/>` stanzas. */
2
+ import type { BinaryNode } from '../../transport/codec';
3
+ export type FakeChatstateState = {
4
+ readonly kind: 'composing';
5
+ readonly media?: 'audio';
6
+ } | {
7
+ readonly kind: 'paused';
8
+ };
9
+ export interface BuildChatstateInput {
10
+ readonly from: string;
11
+ readonly participant?: string;
12
+ readonly state: FakeChatstateState;
13
+ }
14
+ export declare function buildChatstate(input: BuildChatstateInput): BinaryNode;
15
+ //# sourceMappingURL=chatstate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chatstate.d.ts","sourceRoot":"","sources":["../../../src/protocol/push/chatstate.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAElD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAEvD,MAAM,MAAM,kBAAkB,GACxB;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GACxD;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAA;AAEjC,MAAM,WAAW,mBAAmB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,KAAK,EAAE,kBAAkB,CAAA;CACrC;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,UAAU,CAsBrE"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ /** Builder for inbound `<chatstate/>` stanzas. */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.buildChatstate = buildChatstate;
5
+ function buildChatstate(input) {
6
+ const attrs = { from: input.from };
7
+ if (input.participant !== undefined) {
8
+ attrs.participant = input.participant;
9
+ }
10
+ let stateChild;
11
+ if (input.state.kind === 'composing') {
12
+ const childAttrs = {};
13
+ if (input.state.media !== undefined) {
14
+ childAttrs.media = input.state.media;
15
+ }
16
+ stateChild = { tag: 'composing', attrs: childAttrs };
17
+ }
18
+ else {
19
+ stateChild = { tag: 'paused', attrs: {} };
20
+ }
21
+ return {
22
+ tag: 'chatstate',
23
+ attrs,
24
+ content: [stateChild]
25
+ };
26
+ }
27
+ //# sourceMappingURL=chatstate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chatstate.js","sourceRoot":"","sources":["../../../src/protocol/push/chatstate.ts"],"names":[],"mappings":";AAAA,kDAAkD;;AAclD,wCAsBC;AAtBD,SAAgB,cAAc,CAAC,KAA0B;IACrD,MAAM,KAAK,GAA2B,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAA;IAC1D,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QAClC,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAA;IACzC,CAAC;IAED,IAAI,UAAsB,CAAA;IAC1B,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QACnC,MAAM,UAAU,GAA2B,EAAE,CAAA;QAC7C,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAClC,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAA;QACxC,CAAC;QACD,UAAU,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,EAAE,CAAA;IACxD,CAAC;SAAM,CAAC;QACJ,UAAU,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,CAAA;IAC7C,CAAC;IAED,OAAO;QACH,GAAG,EAAE,WAAW;QAChB,KAAK;QACL,OAAO,EAAE,CAAC,UAAU,CAAC;KACxB,CAAA;AACL,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { BinaryNode } from '../../transport/codec';
2
+ export interface BuildIncomingErrorStanzaInput {
3
+ readonly code: number;
4
+ readonly text?: string;
5
+ readonly from?: string;
6
+ }
7
+ export declare function buildIncomingErrorStanza(input: BuildIncomingErrorStanzaInput): BinaryNode;
8
+ //# sourceMappingURL=error-stanza.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-stanza.d.ts","sourceRoot":"","sources":["../../../src/protocol/push/error-stanza.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAEvD,MAAM,WAAW,6BAA6B;IAC1C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,6BAA6B,GAAG,UAAU,CAUzF"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildIncomingErrorStanza = buildIncomingErrorStanza;
4
+ function buildIncomingErrorStanza(input) {
5
+ const attrs = {
6
+ code: String(input.code)
7
+ };
8
+ if (input.text !== undefined)
9
+ attrs.text = input.text;
10
+ if (input.from !== undefined)
11
+ attrs.from = input.from;
12
+ return {
13
+ tag: 'error',
14
+ attrs
15
+ };
16
+ }
17
+ //# sourceMappingURL=error-stanza.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-stanza.js","sourceRoot":"","sources":["../../../src/protocol/push/error-stanza.ts"],"names":[],"mappings":";;AAQA,4DAUC;AAVD,SAAgB,wBAAwB,CAAC,KAAoC;IACzE,MAAM,KAAK,GAA2B;QAClC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;KAC3B,CAAA;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAA;IACrD,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAA;IACrD,OAAO;QACH,GAAG,EAAE,OAAO;QACZ,KAAK;KACR,CAAA;AACL,CAAC"}
@@ -0,0 +1,46 @@
1
+ /** History-sync message builders (inline and external blob variants). */
2
+ import { proto } from '../../transport/protos';
3
+ export interface FakeHistorySyncConversation {
4
+ readonly id: string;
5
+ readonly name?: string;
6
+ readonly unreadCount?: number;
7
+ readonly archived?: boolean;
8
+ readonly pinned?: number;
9
+ readonly muteEndTime?: number;
10
+ readonly markedAsUnread?: boolean;
11
+ readonly ephemeralExpiration?: number;
12
+ readonly messages?: readonly FakeHistorySyncWebMessage[];
13
+ }
14
+ export interface FakeHistorySyncWebMessage {
15
+ readonly id: string;
16
+ readonly participant?: string;
17
+ readonly fromMe?: boolean;
18
+ readonly timestamp?: number;
19
+ readonly message?: proto.IMessage;
20
+ }
21
+ export interface FakeHistorySyncPushname {
22
+ readonly id: string;
23
+ readonly pushname?: string;
24
+ }
25
+ export interface BuildHistorySyncInput {
26
+ readonly syncType?: proto.Message.HistorySyncType;
27
+ readonly chunkOrder?: number;
28
+ readonly progress?: number;
29
+ readonly conversations?: readonly FakeHistorySyncConversation[];
30
+ readonly pushnames?: readonly FakeHistorySyncPushname[];
31
+ readonly nctSalt?: Uint8Array;
32
+ }
33
+ export interface BuildHistorySyncExternalInput {
34
+ readonly syncType?: proto.Message.HistorySyncType;
35
+ readonly chunkOrder?: number;
36
+ readonly progress?: number;
37
+ readonly directPath: string;
38
+ readonly mediaKey: Uint8Array;
39
+ readonly fileSha256: Uint8Array;
40
+ readonly fileEncSha256: Uint8Array;
41
+ readonly fileLength?: number;
42
+ }
43
+ export declare function buildHistorySyncMessage(input?: BuildHistorySyncInput): Promise<proto.IMessage>;
44
+ export declare function encodeHistorySyncPlaintext(input?: BuildHistorySyncInput): Promise<Uint8Array>;
45
+ export declare function buildHistorySyncExternalMessage(input: BuildHistorySyncExternalInput): proto.IMessage;
46
+ //# sourceMappingURL=history-sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"history-sync.d.ts","sourceRoot":"","sources":["../../../src/protocol/push/history-sync.ts"],"names":[],"mappings":"AAAA,yEAAyE;AAKzE,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAA;AAI9C,MAAM,WAAW,2BAA2B;IACxC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAA;IACjC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAA;IACrC,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,yBAAyB,EAAE,CAAA;CAC3D;AAED,MAAM,WAAW,yBAAyB;IACtC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAA;CACpC;AAED,MAAM,WAAW,uBAAuB;IACpC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAC7B;AAED,MAAM,WAAW,qBAAqB;IAClC,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,eAAe,CAAA;IACjD,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,2BAA2B,EAAE,CAAA;IAC/D,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,uBAAuB,EAAE,CAAA;IACvD,QAAQ,CAAC,OAAO,CAAC,EAAE,UAAU,CAAA;CAChC;AAED,MAAM,WAAW,6BAA6B;IAC1C,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,eAAe,CAAA;IACjD,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAA;IAC7B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAA;IAC/B,QAAQ,CAAC,aAAa,EAAE,UAAU,CAAA;IAClC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAC/B;AAED,wBAAsB,uBAAuB,CACzC,KAAK,GAAE,qBAA0B,GAClC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAkDzB;AAED,wBAAsB,0BAA0B,CAC5C,KAAK,GAAE,qBAA0B,GAClC,OAAO,CAAC,UAAU,CAAC,CAsCrB;AAED,wBAAgB,+BAA+B,CAC3C,KAAK,EAAE,6BAA6B,GACrC,KAAK,CAAC,QAAQ,CAiBhB"}
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+ /** History-sync message builders (inline and external blob variants). */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.buildHistorySyncMessage = buildHistorySyncMessage;
5
+ exports.encodeHistorySyncPlaintext = encodeHistorySyncPlaintext;
6
+ exports.buildHistorySyncExternalMessage = buildHistorySyncExternalMessage;
7
+ const node_util_1 = require("node:util");
8
+ const node_zlib_1 = require("node:zlib");
9
+ const protos_1 = require("../../transport/protos");
10
+ const deflateAsync = (0, node_util_1.promisify)(node_zlib_1.deflate);
11
+ async function buildHistorySyncMessage(input = {}) {
12
+ const syncType = input.syncType ?? protos_1.proto.Message.HistorySyncType.INITIAL_BOOTSTRAP;
13
+ const conversations = (input.conversations ?? []).map((conversation) => ({
14
+ id: conversation.id,
15
+ name: conversation.name,
16
+ unreadCount: conversation.unreadCount,
17
+ archived: conversation.archived,
18
+ pinned: conversation.pinned,
19
+ muteEndTime: conversation.muteEndTime,
20
+ markedAsUnread: conversation.markedAsUnread,
21
+ ephemeralExpiration: conversation.ephemeralExpiration,
22
+ messages: (conversation.messages ?? []).map((histMsg) => ({
23
+ message: {
24
+ key: {
25
+ id: histMsg.id,
26
+ fromMe: histMsg.fromMe ?? false,
27
+ remoteJid: conversation.id,
28
+ participant: histMsg.participant
29
+ },
30
+ messageTimestamp: histMsg.timestamp,
31
+ message: histMsg.message
32
+ }
33
+ }))
34
+ }));
35
+ const pushnames = (input.pushnames ?? []).map((entry) => ({
36
+ id: entry.id,
37
+ pushname: entry.pushname
38
+ }));
39
+ const historySync = protos_1.proto.HistorySync.encode({
40
+ syncType: syncType,
41
+ chunkOrder: input.chunkOrder ?? 0,
42
+ progress: input.progress ?? 100,
43
+ conversations,
44
+ pushnames,
45
+ nctSalt: input.nctSalt
46
+ }).finish();
47
+ const compressed = await deflateAsync(historySync);
48
+ return {
49
+ protocolMessage: {
50
+ type: protos_1.proto.Message.ProtocolMessage.Type.HISTORY_SYNC_NOTIFICATION,
51
+ historySyncNotification: {
52
+ syncType,
53
+ chunkOrder: input.chunkOrder ?? 0,
54
+ progress: input.progress ?? 100,
55
+ initialHistBootstrapInlinePayload: new Uint8Array(compressed)
56
+ }
57
+ }
58
+ };
59
+ }
60
+ async function encodeHistorySyncPlaintext(input = {}) {
61
+ const syncType = input.syncType ?? protos_1.proto.Message.HistorySyncType.INITIAL_BOOTSTRAP;
62
+ const conversations = (input.conversations ?? []).map((conversation) => ({
63
+ id: conversation.id,
64
+ name: conversation.name,
65
+ unreadCount: conversation.unreadCount,
66
+ archived: conversation.archived,
67
+ pinned: conversation.pinned,
68
+ muteEndTime: conversation.muteEndTime,
69
+ markedAsUnread: conversation.markedAsUnread,
70
+ ephemeralExpiration: conversation.ephemeralExpiration,
71
+ messages: (conversation.messages ?? []).map((histMsg) => ({
72
+ message: {
73
+ key: {
74
+ id: histMsg.id,
75
+ fromMe: histMsg.fromMe ?? false,
76
+ remoteJid: conversation.id,
77
+ participant: histMsg.participant
78
+ },
79
+ messageTimestamp: histMsg.timestamp,
80
+ message: histMsg.message
81
+ }
82
+ }))
83
+ }));
84
+ const pushnames = (input.pushnames ?? []).map((entry) => ({
85
+ id: entry.id,
86
+ pushname: entry.pushname
87
+ }));
88
+ const historySync = protos_1.proto.HistorySync.encode({
89
+ syncType: syncType,
90
+ chunkOrder: input.chunkOrder ?? 0,
91
+ progress: input.progress ?? 100,
92
+ conversations,
93
+ pushnames,
94
+ nctSalt: input.nctSalt
95
+ }).finish();
96
+ const compressed = await deflateAsync(historySync);
97
+ return new Uint8Array(compressed);
98
+ }
99
+ function buildHistorySyncExternalMessage(input) {
100
+ const syncType = input.syncType ?? protos_1.proto.Message.HistorySyncType.INITIAL_BOOTSTRAP;
101
+ return {
102
+ protocolMessage: {
103
+ type: protos_1.proto.Message.ProtocolMessage.Type.HISTORY_SYNC_NOTIFICATION,
104
+ historySyncNotification: {
105
+ syncType,
106
+ chunkOrder: input.chunkOrder ?? 0,
107
+ progress: input.progress ?? 100,
108
+ directPath: input.directPath,
109
+ mediaKey: input.mediaKey,
110
+ fileSha256: input.fileSha256,
111
+ fileEncSha256: input.fileEncSha256,
112
+ fileLength: input.fileLength
113
+ }
114
+ }
115
+ };
116
+ }
117
+ //# sourceMappingURL=history-sync.js.map