@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.
- package/README.md +176 -0
- package/dist/api/AppStateSyncManager.d.ts +27 -0
- package/dist/api/AppStateSyncManager.d.ts.map +1 -0
- package/dist/api/AppStateSyncManager.js +151 -0
- package/dist/api/AppStateSyncManager.js.map +1 -0
- package/dist/api/FakePairingDriver.d.ts +27 -0
- package/dist/api/FakePairingDriver.d.ts.map +1 -0
- package/dist/api/FakePairingDriver.js +36 -0
- package/dist/api/FakePairingDriver.js.map +1 -0
- package/dist/api/FakePeer.d.ts +143 -0
- package/dist/api/FakePeer.d.ts.map +1 -0
- package/dist/api/FakePeer.js +408 -0
- package/dist/api/FakePeer.js.map +1 -0
- package/dist/api/FakeWaServer.d.ts +167 -0
- package/dist/api/FakeWaServer.d.ts.map +1 -0
- package/dist/api/FakeWaServer.js +652 -0
- package/dist/api/FakeWaServer.js.map +1 -0
- package/dist/api/PreKeyDispenser.d.ts +23 -0
- package/dist/api/PreKeyDispenser.d.ts.map +1 -0
- package/dist/api/PreKeyDispenser.js +98 -0
- package/dist/api/PreKeyDispenser.js.map +1 -0
- package/dist/api/Scenario.d.ts +24 -0
- package/dist/api/Scenario.d.ts.map +1 -0
- package/dist/api/Scenario.js +38 -0
- package/dist/api/Scenario.js.map +1 -0
- package/dist/api/ServerRegistries.d.ts +110 -0
- package/dist/api/ServerRegistries.d.ts.map +1 -0
- package/dist/api/ServerRegistries.js +268 -0
- package/dist/api/ServerRegistries.js.map +1 -0
- package/dist/api/iq-handlers.d.ts +47 -0
- package/dist/api/iq-handlers.d.ts.map +1 -0
- package/dist/api/iq-handlers.js +498 -0
- package/dist/api/iq-handlers.js.map +1 -0
- package/dist/cli.d.ts +4 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +249 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.d.ts +51 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +74 -0
- package/dist/index.js.map +1 -0
- package/dist/infra/WaFakeConnection.d.ts +23 -0
- package/dist/infra/WaFakeConnection.d.ts.map +1 -0
- package/dist/infra/WaFakeConnection.js +54 -0
- package/dist/infra/WaFakeConnection.js.map +1 -0
- package/dist/infra/WaFakeConnectionPipeline.d.ts +51 -0
- package/dist/infra/WaFakeConnectionPipeline.d.ts.map +1 -0
- package/dist/infra/WaFakeConnectionPipeline.js +224 -0
- package/dist/infra/WaFakeConnectionPipeline.js.map +1 -0
- package/dist/infra/WaFakeFrameSocket.d.ts +29 -0
- package/dist/infra/WaFakeFrameSocket.d.ts.map +1 -0
- package/dist/infra/WaFakeFrameSocket.js +122 -0
- package/dist/infra/WaFakeFrameSocket.js.map +1 -0
- package/dist/infra/WaFakeMediaHttpsServer.d.ts +16 -0
- package/dist/infra/WaFakeMediaHttpsServer.d.ts.map +1 -0
- package/dist/infra/WaFakeMediaHttpsServer.js +131 -0
- package/dist/infra/WaFakeMediaHttpsServer.js.map +1 -0
- package/dist/infra/WaFakeNoiseHandshake.d.ts +23 -0
- package/dist/infra/WaFakeNoiseHandshake.d.ts.map +1 -0
- package/dist/infra/WaFakeNoiseHandshake.js +76 -0
- package/dist/infra/WaFakeNoiseHandshake.js.map +1 -0
- package/dist/infra/WaFakeTransport.d.ts +15 -0
- package/dist/infra/WaFakeTransport.d.ts.map +1 -0
- package/dist/infra/WaFakeTransport.js +34 -0
- package/dist/infra/WaFakeTransport.js.map +1 -0
- package/dist/infra/WaFakeWsServer.d.ts +29 -0
- package/dist/infra/WaFakeWsServer.d.ts.map +1 -0
- package/dist/infra/WaFakeWsServer.js +101 -0
- package/dist/infra/WaFakeWsServer.js.map +1 -0
- package/dist/protocol/auth/cert-chain.d.ts +18 -0
- package/dist/protocol/auth/cert-chain.d.ts.map +1 -0
- package/dist/protocol/auth/cert-chain.js +44 -0
- package/dist/protocol/auth/cert-chain.js.map +1 -0
- package/dist/protocol/auth/client-payload-validate.d.ts +21 -0
- package/dist/protocol/auth/client-payload-validate.d.ts.map +1 -0
- package/dist/protocol/auth/client-payload-validate.js +61 -0
- package/dist/protocol/auth/client-payload-validate.js.map +1 -0
- package/dist/protocol/auth/fake-primary-device.d.ts +19 -0
- package/dist/protocol/auth/fake-primary-device.d.ts.map +1 -0
- package/dist/protocol/auth/fake-primary-device.js +53 -0
- package/dist/protocol/auth/fake-primary-device.js.map +1 -0
- package/dist/protocol/auth/pair-device.d.ts +26 -0
- package/dist/protocol/auth/pair-device.d.ts.map +1 -0
- package/dist/protocol/auth/pair-device.js +104 -0
- package/dist/protocol/auth/pair-device.js.map +1 -0
- package/dist/protocol/auth/success-node.d.ts +15 -0
- package/dist/protocol/auth/success-node.d.ts.map +1 -0
- package/dist/protocol/auth/success-node.js +30 -0
- package/dist/protocol/auth/success-node.js.map +1 -0
- package/dist/protocol/iq/abprops.d.ts +14 -0
- package/dist/protocol/iq/abprops.d.ts.map +1 -0
- package/dist/protocol/iq/abprops.js +34 -0
- package/dist/protocol/iq/abprops.js.map +1 -0
- package/dist/protocol/iq/appstate-sync.d.ts +38 -0
- package/dist/protocol/iq/appstate-sync.d.ts.map +1 -0
- package/dist/protocol/iq/appstate-sync.js +154 -0
- package/dist/protocol/iq/appstate-sync.js.map +1 -0
- package/dist/protocol/iq/business.d.ts +13 -0
- package/dist/protocol/iq/business.d.ts.map +1 -0
- package/dist/protocol/iq/business.js +64 -0
- package/dist/protocol/iq/business.js.map +1 -0
- package/dist/protocol/iq/dirty-bits.d.ts +8 -0
- package/dist/protocol/iq/dirty-bits.d.ts.map +1 -0
- package/dist/protocol/iq/dirty-bits.js +23 -0
- package/dist/protocol/iq/dirty-bits.js.map +1 -0
- package/dist/protocol/iq/group-ops.d.ts +34 -0
- package/dist/protocol/iq/group-ops.d.ts.map +1 -0
- package/dist/protocol/iq/group-ops.js +164 -0
- package/dist/protocol/iq/group-ops.js.map +1 -0
- package/dist/protocol/iq/newsletter.d.ts +4 -0
- package/dist/protocol/iq/newsletter.d.ts.map +1 -0
- package/dist/protocol/iq/newsletter.js +18 -0
- package/dist/protocol/iq/newsletter.js.map +1 -0
- package/dist/protocol/iq/prekey-fetch.d.ts +18 -0
- package/dist/protocol/iq/prekey-fetch.d.ts.map +1 -0
- package/dist/protocol/iq/prekey-fetch.js +92 -0
- package/dist/protocol/iq/prekey-fetch.js.map +1 -0
- package/dist/protocol/iq/privacy-token.d.ts +9 -0
- package/dist/protocol/iq/privacy-token.d.ts.map +1 -0
- package/dist/protocol/iq/privacy-token.js +30 -0
- package/dist/protocol/iq/privacy-token.js.map +1 -0
- package/dist/protocol/iq/privacy.d.ts +22 -0
- package/dist/protocol/iq/privacy.d.ts.map +1 -0
- package/dist/protocol/iq/privacy.js +133 -0
- package/dist/protocol/iq/privacy.js.map +1 -0
- package/dist/protocol/iq/profile.d.ts +22 -0
- package/dist/protocol/iq/profile.d.ts.map +1 -0
- package/dist/protocol/iq/profile.js +80 -0
- package/dist/protocol/iq/profile.js.map +1 -0
- package/dist/protocol/iq/router.d.ts +39 -0
- package/dist/protocol/iq/router.d.ts.map +1 -0
- package/dist/protocol/iq/router.js +118 -0
- package/dist/protocol/iq/router.js.map +1 -0
- package/dist/protocol/iq/usync.d.ts +8 -0
- package/dist/protocol/iq/usync.d.ts.map +1 -0
- package/dist/protocol/iq/usync.js +68 -0
- package/dist/protocol/iq/usync.js.map +1 -0
- package/dist/protocol/push/app-state-key-share.d.ts +17 -0
- package/dist/protocol/push/app-state-key-share.d.ts.map +1 -0
- package/dist/protocol/push/app-state-key-share.js +30 -0
- package/dist/protocol/push/app-state-key-share.js.map +1 -0
- package/dist/protocol/push/call-failure.d.ts +16 -0
- package/dist/protocol/push/call-failure.d.ts.map +1 -0
- package/dist/protocol/push/call-failure.js +32 -0
- package/dist/protocol/push/call-failure.js.map +1 -0
- package/dist/protocol/push/chatstate.d.ts +15 -0
- package/dist/protocol/push/chatstate.d.ts.map +1 -0
- package/dist/protocol/push/chatstate.js +27 -0
- package/dist/protocol/push/chatstate.js.map +1 -0
- package/dist/protocol/push/error-stanza.d.ts +8 -0
- package/dist/protocol/push/error-stanza.d.ts.map +1 -0
- package/dist/protocol/push/error-stanza.js +17 -0
- package/dist/protocol/push/error-stanza.js.map +1 -0
- package/dist/protocol/push/history-sync.d.ts +46 -0
- package/dist/protocol/push/history-sync.d.ts.map +1 -0
- package/dist/protocol/push/history-sync.js +117 -0
- package/dist/protocol/push/history-sync.js.map +1 -0
- package/dist/protocol/push/message.d.ts +21 -0
- package/dist/protocol/push/message.d.ts.map +1 -0
- package/dist/protocol/push/message.js +42 -0
- package/dist/protocol/push/message.js.map +1 -0
- package/dist/protocol/push/notification.d.ts +21 -0
- package/dist/protocol/push/notification.d.ts.map +1 -0
- package/dist/protocol/push/notification.js +34 -0
- package/dist/protocol/push/notification.js.map +1 -0
- package/dist/protocol/push/presence.d.ts +11 -0
- package/dist/protocol/push/presence.d.ts.map +1 -0
- package/dist/protocol/push/presence.js +18 -0
- package/dist/protocol/push/presence.js.map +1 -0
- package/dist/protocol/push/receipt.d.ts +14 -0
- package/dist/protocol/push/receipt.d.ts.map +1 -0
- package/dist/protocol/push/receipt.js +25 -0
- package/dist/protocol/push/receipt.js.map +1 -0
- package/dist/protocol/signal/fake-app-state-crypto.d.ts +49 -0
- package/dist/protocol/signal/fake-app-state-crypto.d.ts.map +1 -0
- package/dist/protocol/signal/fake-app-state-crypto.js +202 -0
- package/dist/protocol/signal/fake-app-state-crypto.js.map +1 -0
- package/dist/protocol/signal/fake-peer-double-ratchet.d.ts +38 -0
- package/dist/protocol/signal/fake-peer-double-ratchet.d.ts.map +1 -0
- package/dist/protocol/signal/fake-peer-double-ratchet.js +408 -0
- package/dist/protocol/signal/fake-peer-double-ratchet.js.map +1 -0
- package/dist/protocol/signal/fake-peer-group-recv-session.d.ts +10 -0
- package/dist/protocol/signal/fake-peer-group-recv-session.d.ts.map +1 -0
- package/dist/protocol/signal/fake-peer-group-recv-session.js +129 -0
- package/dist/protocol/signal/fake-peer-group-recv-session.js.map +1 -0
- package/dist/protocol/signal/fake-peer-identity.d.ts +7 -0
- package/dist/protocol/signal/fake-peer-identity.d.ts.map +1 -0
- package/dist/protocol/signal/fake-peer-identity.js +12 -0
- package/dist/protocol/signal/fake-peer-identity.js.map +1 -0
- package/dist/protocol/signal/fake-peer-key-bundle.d.ts +24 -0
- package/dist/protocol/signal/fake-peer-key-bundle.d.ts.map +1 -0
- package/dist/protocol/signal/fake-peer-key-bundle.js +29 -0
- package/dist/protocol/signal/fake-peer-key-bundle.js.map +1 -0
- package/dist/protocol/signal/fake-peer-recv-session.d.ts +60 -0
- package/dist/protocol/signal/fake-peer-recv-session.d.ts.map +1 -0
- package/dist/protocol/signal/fake-peer-recv-session.js +284 -0
- package/dist/protocol/signal/fake-peer-recv-session.js.map +1 -0
- package/dist/protocol/signal/fake-peer-session.d.ts +87 -0
- package/dist/protocol/signal/fake-peer-session.d.ts.map +1 -0
- package/dist/protocol/signal/fake-peer-session.js +207 -0
- package/dist/protocol/signal/fake-peer-session.js.map +1 -0
- package/dist/protocol/signal/fake-sender-key.d.ts +15 -0
- package/dist/protocol/signal/fake-sender-key.d.ts.map +1 -0
- package/dist/protocol/signal/fake-sender-key.js +91 -0
- package/dist/protocol/signal/fake-sender-key.js.map +1 -0
- package/dist/protocol/signal/prekey-upload.d.ts +22 -0
- package/dist/protocol/signal/prekey-upload.d.ts.map +1 -0
- package/dist/protocol/signal/prekey-upload.js +113 -0
- package/dist/protocol/signal/prekey-upload.js.map +1 -0
- package/dist/protocol/stream/stream-error.d.ts +8 -0
- package/dist/protocol/stream/stream-error.d.ts.map +1 -0
- package/dist/protocol/stream/stream-error.js +64 -0
- package/dist/protocol/stream/stream-error.js.map +1 -0
- package/dist/state/fake-app-state-collection.d.ts +35 -0
- package/dist/state/fake-app-state-collection.d.ts.map +1 -0
- package/dist/state/fake-app-state-collection.js +139 -0
- package/dist/state/fake-app-state-collection.js.map +1 -0
- package/dist/state/fake-media-store.d.ts +35 -0
- package/dist/state/fake-media-store.d.ts.map +1 -0
- package/dist/state/fake-media-store.js +57 -0
- package/dist/state/fake-media-store.js.map +1 -0
- package/dist/transport/codec.d.ts +10 -0
- package/dist/transport/codec.d.ts.map +1 -0
- package/dist/transport/codec.js +17 -0
- package/dist/transport/codec.js.map +1 -0
- package/dist/transport/crypto.d.ts +11 -0
- package/dist/transport/crypto.d.ts.map +1 -0
- package/dist/transport/crypto.js +36 -0
- package/dist/transport/crypto.js.map +1 -0
- package/dist/transport/index.d.ts +4 -0
- package/dist/transport/index.d.ts.map +1 -0
- package/dist/transport/index.js +20 -0
- package/dist/transport/index.js.map +1 -0
- package/dist/transport/protos.d.ts +10 -0
- package/dist/transport/protos.d.ts.map +1 -0
- package/dist/transport/protos.js +13 -0
- package/dist/transport/protos.js.map +1 -0
- 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":"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"}
|
|
@@ -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
|