@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
package/dist/cli.js
ADDED
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
/** Standalone CLI for `@zapo-js/fake-server`. */
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
const FakeWaServer_1 = require("./api/FakeWaServer");
|
|
6
|
+
function parseArgs(argv) {
|
|
7
|
+
let host = '127.0.0.1';
|
|
8
|
+
let port = 0;
|
|
9
|
+
let path = '/ws/chat';
|
|
10
|
+
const peerJids = [];
|
|
11
|
+
const groupSpecs = [];
|
|
12
|
+
let log = false;
|
|
13
|
+
let quiet = false;
|
|
14
|
+
let json = false;
|
|
15
|
+
let help = false;
|
|
16
|
+
for (let index = 0; index < argv.length; index += 1) {
|
|
17
|
+
const arg = argv[index];
|
|
18
|
+
const next = () => {
|
|
19
|
+
const value = argv[index + 1];
|
|
20
|
+
if (value === undefined) {
|
|
21
|
+
throw new Error(`missing value for ${arg}`);
|
|
22
|
+
}
|
|
23
|
+
index += 1;
|
|
24
|
+
return value;
|
|
25
|
+
};
|
|
26
|
+
switch (arg) {
|
|
27
|
+
case '-h':
|
|
28
|
+
case '--help':
|
|
29
|
+
help = true;
|
|
30
|
+
break;
|
|
31
|
+
case '--host':
|
|
32
|
+
host = next();
|
|
33
|
+
break;
|
|
34
|
+
case '--port':
|
|
35
|
+
port = Number.parseInt(next(), 10);
|
|
36
|
+
if (!Number.isFinite(port) || port < 0 || port > 65535) {
|
|
37
|
+
throw new Error(`invalid --port: ${argv[index]}`);
|
|
38
|
+
}
|
|
39
|
+
break;
|
|
40
|
+
case '--path':
|
|
41
|
+
path = next();
|
|
42
|
+
break;
|
|
43
|
+
case '--peer':
|
|
44
|
+
peerJids.push(next());
|
|
45
|
+
break;
|
|
46
|
+
case '--group':
|
|
47
|
+
groupSpecs.push(next());
|
|
48
|
+
break;
|
|
49
|
+
case '--log':
|
|
50
|
+
log = true;
|
|
51
|
+
break;
|
|
52
|
+
case '--quiet':
|
|
53
|
+
quiet = true;
|
|
54
|
+
break;
|
|
55
|
+
case '--json':
|
|
56
|
+
json = true;
|
|
57
|
+
break;
|
|
58
|
+
default:
|
|
59
|
+
throw new Error(`unknown flag: ${arg}`);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return { host, port, path, peerJids, groupSpecs, log, quiet, json, help };
|
|
63
|
+
}
|
|
64
|
+
function printHelp() {
|
|
65
|
+
process.stdout.write(`@zapo-js/fake-server — standalone fake WhatsApp Web server
|
|
66
|
+
|
|
67
|
+
USAGE
|
|
68
|
+
npx @zapo-js/fake-server [flags]
|
|
69
|
+
|
|
70
|
+
FLAGS
|
|
71
|
+
--host <host> Bind host (default: 127.0.0.1)
|
|
72
|
+
--port <port> WebSocket listener port (default: random)
|
|
73
|
+
--path <path> WebSocket upgrade path (default: /ws/chat)
|
|
74
|
+
--peer <jid> Pre-create a fake peer; can be repeated
|
|
75
|
+
--group <spec> Pre-create a fake group; spec format
|
|
76
|
+
<group-jid>=<peer-jid>,<peer-jid>,...
|
|
77
|
+
All peers must already be passed via --peer.
|
|
78
|
+
--log Print every captured inbound stanza
|
|
79
|
+
--quiet Suppress the startup info banner
|
|
80
|
+
--json Print connection info as JSON
|
|
81
|
+
-h | --help Show this help
|
|
82
|
+
|
|
83
|
+
The server stays up until SIGINT (Ctrl+C).
|
|
84
|
+
`);
|
|
85
|
+
}
|
|
86
|
+
function parseGroupSpec(spec) {
|
|
87
|
+
const eqIdx = spec.indexOf('=');
|
|
88
|
+
if (eqIdx < 0) {
|
|
89
|
+
throw new Error(`invalid --group spec '${spec}': expected '<group-jid>=<peer-jid>,<peer-jid>,...'`);
|
|
90
|
+
}
|
|
91
|
+
const groupJid = spec.slice(0, eqIdx).trim();
|
|
92
|
+
const participantsRaw = spec.slice(eqIdx + 1);
|
|
93
|
+
const participantJids = participantsRaw
|
|
94
|
+
.split(',')
|
|
95
|
+
.map((jid) => jid.trim())
|
|
96
|
+
.filter((jid) => jid.length > 0);
|
|
97
|
+
if (!groupJid || participantJids.length === 0) {
|
|
98
|
+
throw new Error(`invalid --group spec '${spec}': empty group jid or participant list`);
|
|
99
|
+
}
|
|
100
|
+
return { groupJid, participantJids };
|
|
101
|
+
}
|
|
102
|
+
async function main() {
|
|
103
|
+
let args;
|
|
104
|
+
try {
|
|
105
|
+
args = parseArgs(process.argv.slice(2));
|
|
106
|
+
}
|
|
107
|
+
catch (error) {
|
|
108
|
+
process.stderr.write(`error: ${error instanceof Error ? error.message : String(error)}\n`);
|
|
109
|
+
process.stderr.write('run with --help to see usage.\n');
|
|
110
|
+
process.exit(2);
|
|
111
|
+
}
|
|
112
|
+
if (args.help) {
|
|
113
|
+
printHelp();
|
|
114
|
+
process.exit(0);
|
|
115
|
+
}
|
|
116
|
+
const parsedGroups = args.groupSpecs.map(parseGroupSpec);
|
|
117
|
+
for (const group of parsedGroups) {
|
|
118
|
+
for (const jid of group.participantJids) {
|
|
119
|
+
if (!args.peerJids.includes(jid)) {
|
|
120
|
+
process.stderr.write(`error: --group '${group.groupJid}' references peer '${jid}' that was not declared via --peer\n`);
|
|
121
|
+
process.exit(2);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
const server = await FakeWaServer_1.FakeWaServer.start({
|
|
126
|
+
host: args.host,
|
|
127
|
+
port: args.port,
|
|
128
|
+
path: args.path
|
|
129
|
+
});
|
|
130
|
+
let setupComplete = false;
|
|
131
|
+
const setupPromise = new Promise((resolve, reject) => {
|
|
132
|
+
server.onAuthenticatedPipeline(async (pipeline) => {
|
|
133
|
+
if (setupComplete)
|
|
134
|
+
return;
|
|
135
|
+
setupComplete = true;
|
|
136
|
+
try {
|
|
137
|
+
const peers = new Map();
|
|
138
|
+
for (const jid of args.peerJids) {
|
|
139
|
+
const peer = await server.createFakePeer({ jid }, pipeline);
|
|
140
|
+
peers.set(jid, peer);
|
|
141
|
+
process.stdout.write(`[fake-server] created peer ${jid}\n`);
|
|
142
|
+
}
|
|
143
|
+
for (const group of parsedGroups) {
|
|
144
|
+
const participants = group.participantJids.map((jid) => {
|
|
145
|
+
const peer = peers.get(jid);
|
|
146
|
+
if (!peer) {
|
|
147
|
+
throw new Error(`internal: peer ${jid} not found for group ${group.groupJid}`);
|
|
148
|
+
}
|
|
149
|
+
return peer;
|
|
150
|
+
});
|
|
151
|
+
server.createFakeGroup({
|
|
152
|
+
groupJid: group.groupJid,
|
|
153
|
+
participants
|
|
154
|
+
});
|
|
155
|
+
process.stdout.write(`[fake-server] created group ${group.groupJid} with ${participants.length} participants\n`);
|
|
156
|
+
}
|
|
157
|
+
resolve();
|
|
158
|
+
}
|
|
159
|
+
catch (error) {
|
|
160
|
+
reject(error instanceof Error ? error : new Error(String(error)));
|
|
161
|
+
}
|
|
162
|
+
});
|
|
163
|
+
});
|
|
164
|
+
setupPromise.catch((error) => {
|
|
165
|
+
process.stderr.write(`error: ${error.message}\n`);
|
|
166
|
+
process.exitCode = 1;
|
|
167
|
+
});
|
|
168
|
+
if (args.log) {
|
|
169
|
+
server.onPipeline((pipeline) => {
|
|
170
|
+
pipeline.setEvents({
|
|
171
|
+
onStanza: (node) => {
|
|
172
|
+
process.stdout.write(`[wire] ${node.tag}${node.attrs.id ? ` id=${node.attrs.id}` : ''}${node.attrs.type ? ` type=${node.attrs.type}` : ''}\n`);
|
|
173
|
+
}
|
|
174
|
+
});
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
if (!args.quiet) {
|
|
178
|
+
const noiseRoot = server.noiseRootCa;
|
|
179
|
+
if (args.json) {
|
|
180
|
+
process.stdout.write(JSON.stringify({
|
|
181
|
+
url: server.url,
|
|
182
|
+
host: server.host,
|
|
183
|
+
port: server.port,
|
|
184
|
+
path: args.path,
|
|
185
|
+
noiseRootCa: {
|
|
186
|
+
serial: noiseRoot.serial,
|
|
187
|
+
publicKeyHex: bytesToHex(noiseRoot.publicKey)
|
|
188
|
+
},
|
|
189
|
+
peers: args.peerJids,
|
|
190
|
+
groups: parsedGroups
|
|
191
|
+
}, null, 2) + '\n');
|
|
192
|
+
}
|
|
193
|
+
else {
|
|
194
|
+
const banner = [
|
|
195
|
+
'',
|
|
196
|
+
'┌─────────────────────────────────────────────────────────────',
|
|
197
|
+
'│ @zapo-js/fake-server is up',
|
|
198
|
+
'├─────────────────────────────────────────────────────────────',
|
|
199
|
+
`│ url ${server.url}`,
|
|
200
|
+
`│ host ${server.host}`,
|
|
201
|
+
`│ port ${server.port}`,
|
|
202
|
+
`│ path ${args.path}`,
|
|
203
|
+
`│ noise root ca serial=${noiseRoot.serial} pub=${bytesToHex(noiseRoot.publicKey).slice(0, 32)}…`,
|
|
204
|
+
`│ peers ${args.peerJids.length === 0 ? '(none)' : args.peerJids.join(', ')}`,
|
|
205
|
+
`│ groups ${parsedGroups.length === 0 ? '(none)' : parsedGroups.map((g) => g.groupJid).join(', ')}`,
|
|
206
|
+
'├─────────────────────────────────────────────────────────────',
|
|
207
|
+
'│ Wire your WaClient with:',
|
|
208
|
+
'│ chatSocketUrls: [server.url]',
|
|
209
|
+
'│ testHooks: { noiseRootCa: <hex above as Uint8Array> }',
|
|
210
|
+
'│ Hit Ctrl+C to stop.',
|
|
211
|
+
'└─────────────────────────────────────────────────────────────',
|
|
212
|
+
''
|
|
213
|
+
];
|
|
214
|
+
process.stdout.write(banner.join('\n'));
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
let stopping = false;
|
|
218
|
+
const shutdown = async (signal) => {
|
|
219
|
+
if (stopping)
|
|
220
|
+
return;
|
|
221
|
+
stopping = true;
|
|
222
|
+
process.stdout.write(`\n[fake-server] received ${signal}, shutting down…\n`);
|
|
223
|
+
try {
|
|
224
|
+
await server.stop();
|
|
225
|
+
process.stdout.write('[fake-server] stopped cleanly\n');
|
|
226
|
+
process.exit(0);
|
|
227
|
+
}
|
|
228
|
+
catch (error) {
|
|
229
|
+
process.stderr.write(`error during shutdown: ${error instanceof Error ? error.message : String(error)}\n`);
|
|
230
|
+
process.exit(1);
|
|
231
|
+
}
|
|
232
|
+
};
|
|
233
|
+
process.on('SIGINT', () => void shutdown('SIGINT'));
|
|
234
|
+
process.on('SIGTERM', () => void shutdown('SIGTERM'));
|
|
235
|
+
await new Promise(() => undefined);
|
|
236
|
+
}
|
|
237
|
+
function bytesToHex(bytes) {
|
|
238
|
+
let out = '';
|
|
239
|
+
for (let index = 0; index < bytes.byteLength; index += 1) {
|
|
240
|
+
const value = bytes[index];
|
|
241
|
+
out += value < 16 ? `0${value.toString(16)}` : value.toString(16);
|
|
242
|
+
}
|
|
243
|
+
return out;
|
|
244
|
+
}
|
|
245
|
+
main().catch((error) => {
|
|
246
|
+
process.stderr.write(`fatal: ${error instanceof Error ? (error.stack ?? error.message) : String(error)}\n`);
|
|
247
|
+
process.exit(1);
|
|
248
|
+
});
|
|
249
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
export { FakePairingDriver } from './api/FakePairingDriver';
|
|
2
|
+
export type { CompanionPairingMaterial, FakePairingDriverDeps, FakePairingDriverOptions } from './api/FakePairingDriver';
|
|
3
|
+
export { FakePeer } from './api/FakePeer';
|
|
4
|
+
export type { CreateFakePeerOptions, ExpectGroupMessageOptions, ExpectMessageOptions, ReceivedMessage, SendMessageOptions } from './api/FakePeer';
|
|
5
|
+
export { FakeWaServer } from './api/FakeWaServer';
|
|
6
|
+
export type { BinaryNode, ExpectIqOptions, ExpectStanzaOptions, FakeWaServerNoiseRootCa, FakeWaServerOptions, FakeWaServerPipelineListener, StanzaMatcher, WaFakeAuthenticatedInfo, WaFakeConnectionPipeline } from './api/FakeWaServer';
|
|
7
|
+
export { IqExpectation, Scenario } from './api/Scenario';
|
|
8
|
+
export type { AuthenticatedPipelineListener, ScenarioServer } from './api/Scenario';
|
|
9
|
+
export { WaFakeConnection } from './infra/WaFakeConnection';
|
|
10
|
+
export type { WaFakeConnectionHandlers, WaFakeConnectionState } from './infra/WaFakeConnection';
|
|
11
|
+
export type { WaFakeIqHandler, WaFakeIqMatcher, WaFakeIqResponder, WaFakeIqRouterEvents, WaFakeIqType } from './protocol/iq/router';
|
|
12
|
+
export { buildAppStateSyncFullResult, buildAppStateSyncResult, buildServerSyncNotification, parseAppStateSyncRequest } from './protocol/iq/appstate-sync';
|
|
13
|
+
export type { BuildAppStateSyncFullResultInput, BuildAppStateSyncResultInput, BuildServerSyncNotificationInput, FakeAppStateCollectionName, FakeAppStateCollectionPayload } from './protocol/iq/appstate-sync';
|
|
14
|
+
export { buildIqError, buildIqResult } from './protocol/iq/router';
|
|
15
|
+
export { buildCall, buildFailure } from './protocol/push/call-failure';
|
|
16
|
+
export type { BuildCallInput, BuildFailureInput } from './protocol/push/call-failure';
|
|
17
|
+
export { buildChatstate } from './protocol/push/chatstate';
|
|
18
|
+
export type { BuildChatstateInput, FakeChatstateState } from './protocol/push/chatstate';
|
|
19
|
+
export { buildIncomingErrorStanza } from './protocol/push/error-stanza';
|
|
20
|
+
export type { BuildIncomingErrorStanzaInput } from './protocol/push/error-stanza';
|
|
21
|
+
export { buildAppStateSyncKeyShareMessage } from './protocol/push/app-state-key-share';
|
|
22
|
+
export type { BuildAppStateSyncKeyShareInput, FakeAppStateSyncKey } from './protocol/push/app-state-key-share';
|
|
23
|
+
export { buildHistorySyncExternalMessage, buildHistorySyncMessage, encodeHistorySyncPlaintext } from './protocol/push/history-sync';
|
|
24
|
+
export type { BuildHistorySyncExternalInput, BuildHistorySyncInput, FakeHistorySyncConversation, FakeHistorySyncPushname, FakeHistorySyncWebMessage } from './protocol/push/history-sync';
|
|
25
|
+
export { APP_STATE_EMPTY_LT_HASH, FakeAppStateCrypto } from './protocol/signal/fake-app-state-crypto';
|
|
26
|
+
export type { FakeAppStateDerivedKeys, FakeAppStateEncryptedMutation, FakeAppStateMutationInput } from './protocol/signal/fake-app-state-crypto';
|
|
27
|
+
export { FakeAppStateCollection } from './state/fake-app-state-collection';
|
|
28
|
+
export type { FakeAppStateCollectionOptions, FakeAppStateMutationDescriptor } from './state/fake-app-state-collection';
|
|
29
|
+
export { FakeMediaStore } from './state/fake-media-store';
|
|
30
|
+
export type { FakeMediaType, PublishedMediaBlob, PublishMediaInput } from './state/fake-media-store';
|
|
31
|
+
export { buildMessage } from './protocol/push/message';
|
|
32
|
+
export type { BuildMessageInput, FakeEncChild, FakeEncType } from './protocol/push/message';
|
|
33
|
+
export { buildGroupNotification, buildNotification } from './protocol/push/notification';
|
|
34
|
+
export type { BuildGroupNotificationInput, BuildNotificationInput } from './protocol/push/notification';
|
|
35
|
+
export { buildIncomingPresence } from './protocol/push/presence';
|
|
36
|
+
export type { BuildIncomingPresenceInput, FakePresenceLastSentinel, FakePresenceType } from './protocol/push/presence';
|
|
37
|
+
export { buildReceipt } from './protocol/push/receipt';
|
|
38
|
+
export type { BuildReceiptInput, FakeReceiptType } from './protocol/push/receipt';
|
|
39
|
+
export { generateFakePeerIdentity } from './protocol/signal/fake-peer-identity';
|
|
40
|
+
export type { FakePeerIdentity } from './protocol/signal/fake-peer-identity';
|
|
41
|
+
export { FakePeerDoubleRatchet } from './protocol/signal/fake-peer-double-ratchet';
|
|
42
|
+
export { FakeSenderKey } from './protocol/signal/fake-sender-key';
|
|
43
|
+
export type { FakeSenderKeyEncryptionResult } from './protocol/signal/fake-sender-key';
|
|
44
|
+
export { buildAdvSignedDeviceIdentity, generateFakePrimaryDevice } from './protocol/auth/fake-primary-device';
|
|
45
|
+
export type { BuildAdvIdentityInput, BuildAdvIdentityResult, FakePrimaryDevice } from './protocol/auth/fake-primary-device';
|
|
46
|
+
export { buildPairDeviceIq, buildPairSuccessIq, parsePairingQrString } from './protocol/auth/pair-device';
|
|
47
|
+
export type { BuildPairDeviceIqInput, BuildPairSuccessIqInput, ParsedPairingQr } from './protocol/auth/pair-device';
|
|
48
|
+
export { parsePreKeyUploadIq, PreKeyUploadParseError } from './protocol/signal/prekey-upload';
|
|
49
|
+
export type { ClientPreKeyBundle, ClientPreKeyEntry, ClientSignedPreKey } from './protocol/signal/prekey-upload';
|
|
50
|
+
export { buildStreamErrorAck, buildStreamErrorCode, buildStreamErrorDeviceRemoved, buildStreamErrorReplaced, buildStreamErrorXmlNotWellFormed } from './protocol/stream/stream-error';
|
|
51
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildStreamErrorXmlNotWellFormed = exports.buildStreamErrorReplaced = exports.buildStreamErrorDeviceRemoved = exports.buildStreamErrorCode = exports.buildStreamErrorAck = exports.PreKeyUploadParseError = exports.parsePreKeyUploadIq = exports.parsePairingQrString = exports.buildPairSuccessIq = exports.buildPairDeviceIq = exports.generateFakePrimaryDevice = exports.buildAdvSignedDeviceIdentity = exports.FakeSenderKey = exports.FakePeerDoubleRatchet = exports.generateFakePeerIdentity = exports.buildReceipt = exports.buildIncomingPresence = exports.buildNotification = exports.buildGroupNotification = exports.buildMessage = exports.FakeMediaStore = exports.FakeAppStateCollection = exports.FakeAppStateCrypto = exports.APP_STATE_EMPTY_LT_HASH = exports.encodeHistorySyncPlaintext = exports.buildHistorySyncMessage = exports.buildHistorySyncExternalMessage = exports.buildAppStateSyncKeyShareMessage = exports.buildIncomingErrorStanza = exports.buildChatstate = exports.buildFailure = exports.buildCall = exports.buildIqResult = exports.buildIqError = exports.parseAppStateSyncRequest = exports.buildServerSyncNotification = exports.buildAppStateSyncResult = exports.buildAppStateSyncFullResult = exports.WaFakeConnection = exports.Scenario = exports.IqExpectation = exports.FakeWaServer = exports.FakePeer = exports.FakePairingDriver = void 0;
|
|
4
|
+
var FakePairingDriver_1 = require("./api/FakePairingDriver");
|
|
5
|
+
Object.defineProperty(exports, "FakePairingDriver", { enumerable: true, get: function () { return FakePairingDriver_1.FakePairingDriver; } });
|
|
6
|
+
var FakePeer_1 = require("./api/FakePeer");
|
|
7
|
+
Object.defineProperty(exports, "FakePeer", { enumerable: true, get: function () { return FakePeer_1.FakePeer; } });
|
|
8
|
+
var FakeWaServer_1 = require("./api/FakeWaServer");
|
|
9
|
+
Object.defineProperty(exports, "FakeWaServer", { enumerable: true, get: function () { return FakeWaServer_1.FakeWaServer; } });
|
|
10
|
+
var Scenario_1 = require("./api/Scenario");
|
|
11
|
+
Object.defineProperty(exports, "IqExpectation", { enumerable: true, get: function () { return Scenario_1.IqExpectation; } });
|
|
12
|
+
Object.defineProperty(exports, "Scenario", { enumerable: true, get: function () { return Scenario_1.Scenario; } });
|
|
13
|
+
var WaFakeConnection_1 = require("./infra/WaFakeConnection");
|
|
14
|
+
Object.defineProperty(exports, "WaFakeConnection", { enumerable: true, get: function () { return WaFakeConnection_1.WaFakeConnection; } });
|
|
15
|
+
var appstate_sync_1 = require("./protocol/iq/appstate-sync");
|
|
16
|
+
Object.defineProperty(exports, "buildAppStateSyncFullResult", { enumerable: true, get: function () { return appstate_sync_1.buildAppStateSyncFullResult; } });
|
|
17
|
+
Object.defineProperty(exports, "buildAppStateSyncResult", { enumerable: true, get: function () { return appstate_sync_1.buildAppStateSyncResult; } });
|
|
18
|
+
Object.defineProperty(exports, "buildServerSyncNotification", { enumerable: true, get: function () { return appstate_sync_1.buildServerSyncNotification; } });
|
|
19
|
+
Object.defineProperty(exports, "parseAppStateSyncRequest", { enumerable: true, get: function () { return appstate_sync_1.parseAppStateSyncRequest; } });
|
|
20
|
+
var router_1 = require("./protocol/iq/router");
|
|
21
|
+
Object.defineProperty(exports, "buildIqError", { enumerable: true, get: function () { return router_1.buildIqError; } });
|
|
22
|
+
Object.defineProperty(exports, "buildIqResult", { enumerable: true, get: function () { return router_1.buildIqResult; } });
|
|
23
|
+
var call_failure_1 = require("./protocol/push/call-failure");
|
|
24
|
+
Object.defineProperty(exports, "buildCall", { enumerable: true, get: function () { return call_failure_1.buildCall; } });
|
|
25
|
+
Object.defineProperty(exports, "buildFailure", { enumerable: true, get: function () { return call_failure_1.buildFailure; } });
|
|
26
|
+
var chatstate_1 = require("./protocol/push/chatstate");
|
|
27
|
+
Object.defineProperty(exports, "buildChatstate", { enumerable: true, get: function () { return chatstate_1.buildChatstate; } });
|
|
28
|
+
var error_stanza_1 = require("./protocol/push/error-stanza");
|
|
29
|
+
Object.defineProperty(exports, "buildIncomingErrorStanza", { enumerable: true, get: function () { return error_stanza_1.buildIncomingErrorStanza; } });
|
|
30
|
+
var app_state_key_share_1 = require("./protocol/push/app-state-key-share");
|
|
31
|
+
Object.defineProperty(exports, "buildAppStateSyncKeyShareMessage", { enumerable: true, get: function () { return app_state_key_share_1.buildAppStateSyncKeyShareMessage; } });
|
|
32
|
+
var history_sync_1 = require("./protocol/push/history-sync");
|
|
33
|
+
Object.defineProperty(exports, "buildHistorySyncExternalMessage", { enumerable: true, get: function () { return history_sync_1.buildHistorySyncExternalMessage; } });
|
|
34
|
+
Object.defineProperty(exports, "buildHistorySyncMessage", { enumerable: true, get: function () { return history_sync_1.buildHistorySyncMessage; } });
|
|
35
|
+
Object.defineProperty(exports, "encodeHistorySyncPlaintext", { enumerable: true, get: function () { return history_sync_1.encodeHistorySyncPlaintext; } });
|
|
36
|
+
var fake_app_state_crypto_1 = require("./protocol/signal/fake-app-state-crypto");
|
|
37
|
+
Object.defineProperty(exports, "APP_STATE_EMPTY_LT_HASH", { enumerable: true, get: function () { return fake_app_state_crypto_1.APP_STATE_EMPTY_LT_HASH; } });
|
|
38
|
+
Object.defineProperty(exports, "FakeAppStateCrypto", { enumerable: true, get: function () { return fake_app_state_crypto_1.FakeAppStateCrypto; } });
|
|
39
|
+
var fake_app_state_collection_1 = require("./state/fake-app-state-collection");
|
|
40
|
+
Object.defineProperty(exports, "FakeAppStateCollection", { enumerable: true, get: function () { return fake_app_state_collection_1.FakeAppStateCollection; } });
|
|
41
|
+
var fake_media_store_1 = require("./state/fake-media-store");
|
|
42
|
+
Object.defineProperty(exports, "FakeMediaStore", { enumerable: true, get: function () { return fake_media_store_1.FakeMediaStore; } });
|
|
43
|
+
var message_1 = require("./protocol/push/message");
|
|
44
|
+
Object.defineProperty(exports, "buildMessage", { enumerable: true, get: function () { return message_1.buildMessage; } });
|
|
45
|
+
var notification_1 = require("./protocol/push/notification");
|
|
46
|
+
Object.defineProperty(exports, "buildGroupNotification", { enumerable: true, get: function () { return notification_1.buildGroupNotification; } });
|
|
47
|
+
Object.defineProperty(exports, "buildNotification", { enumerable: true, get: function () { return notification_1.buildNotification; } });
|
|
48
|
+
var presence_1 = require("./protocol/push/presence");
|
|
49
|
+
Object.defineProperty(exports, "buildIncomingPresence", { enumerable: true, get: function () { return presence_1.buildIncomingPresence; } });
|
|
50
|
+
var receipt_1 = require("./protocol/push/receipt");
|
|
51
|
+
Object.defineProperty(exports, "buildReceipt", { enumerable: true, get: function () { return receipt_1.buildReceipt; } });
|
|
52
|
+
var fake_peer_identity_1 = require("./protocol/signal/fake-peer-identity");
|
|
53
|
+
Object.defineProperty(exports, "generateFakePeerIdentity", { enumerable: true, get: function () { return fake_peer_identity_1.generateFakePeerIdentity; } });
|
|
54
|
+
var fake_peer_double_ratchet_1 = require("./protocol/signal/fake-peer-double-ratchet");
|
|
55
|
+
Object.defineProperty(exports, "FakePeerDoubleRatchet", { enumerable: true, get: function () { return fake_peer_double_ratchet_1.FakePeerDoubleRatchet; } });
|
|
56
|
+
var fake_sender_key_1 = require("./protocol/signal/fake-sender-key");
|
|
57
|
+
Object.defineProperty(exports, "FakeSenderKey", { enumerable: true, get: function () { return fake_sender_key_1.FakeSenderKey; } });
|
|
58
|
+
var fake_primary_device_1 = require("./protocol/auth/fake-primary-device");
|
|
59
|
+
Object.defineProperty(exports, "buildAdvSignedDeviceIdentity", { enumerable: true, get: function () { return fake_primary_device_1.buildAdvSignedDeviceIdentity; } });
|
|
60
|
+
Object.defineProperty(exports, "generateFakePrimaryDevice", { enumerable: true, get: function () { return fake_primary_device_1.generateFakePrimaryDevice; } });
|
|
61
|
+
var pair_device_1 = require("./protocol/auth/pair-device");
|
|
62
|
+
Object.defineProperty(exports, "buildPairDeviceIq", { enumerable: true, get: function () { return pair_device_1.buildPairDeviceIq; } });
|
|
63
|
+
Object.defineProperty(exports, "buildPairSuccessIq", { enumerable: true, get: function () { return pair_device_1.buildPairSuccessIq; } });
|
|
64
|
+
Object.defineProperty(exports, "parsePairingQrString", { enumerable: true, get: function () { return pair_device_1.parsePairingQrString; } });
|
|
65
|
+
var prekey_upload_1 = require("./protocol/signal/prekey-upload");
|
|
66
|
+
Object.defineProperty(exports, "parsePreKeyUploadIq", { enumerable: true, get: function () { return prekey_upload_1.parsePreKeyUploadIq; } });
|
|
67
|
+
Object.defineProperty(exports, "PreKeyUploadParseError", { enumerable: true, get: function () { return prekey_upload_1.PreKeyUploadParseError; } });
|
|
68
|
+
var stream_error_1 = require("./protocol/stream/stream-error");
|
|
69
|
+
Object.defineProperty(exports, "buildStreamErrorAck", { enumerable: true, get: function () { return stream_error_1.buildStreamErrorAck; } });
|
|
70
|
+
Object.defineProperty(exports, "buildStreamErrorCode", { enumerable: true, get: function () { return stream_error_1.buildStreamErrorCode; } });
|
|
71
|
+
Object.defineProperty(exports, "buildStreamErrorDeviceRemoved", { enumerable: true, get: function () { return stream_error_1.buildStreamErrorDeviceRemoved; } });
|
|
72
|
+
Object.defineProperty(exports, "buildStreamErrorReplaced", { enumerable: true, get: function () { return stream_error_1.buildStreamErrorReplaced; } });
|
|
73
|
+
Object.defineProperty(exports, "buildStreamErrorXmlNotWellFormed", { enumerable: true, get: function () { return stream_error_1.buildStreamErrorXmlNotWellFormed; } });
|
|
74
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,6DAA2D;AAAlD,sHAAA,iBAAiB,OAAA;AAM1B,2CAAyC;AAAhC,oGAAA,QAAQ,OAAA;AAQjB,mDAAiD;AAAxC,4GAAA,YAAY,OAAA;AAYrB,2CAAwD;AAA/C,yGAAA,aAAa,OAAA;AAAE,oGAAA,QAAQ,OAAA;AAEhC,6DAA2D;AAAlD,oHAAA,gBAAgB,OAAA;AASzB,6DAKoC;AAJhC,4HAAA,2BAA2B,OAAA;AAC3B,wHAAA,uBAAuB,OAAA;AACvB,4HAAA,2BAA2B,OAAA;AAC3B,yHAAA,wBAAwB,OAAA;AAS5B,+CAAkE;AAAzD,sGAAA,YAAY,OAAA;AAAE,uGAAA,aAAa,OAAA;AACpC,6DAAsE;AAA7D,yGAAA,SAAS,OAAA;AAAE,4GAAA,YAAY,OAAA;AAEhC,uDAA0D;AAAjD,2GAAA,cAAc,OAAA;AAEvB,6DAAuE;AAA9D,wHAAA,wBAAwB,OAAA;AAEjC,2EAAsF;AAA7E,uIAAA,gCAAgC,OAAA;AAKzC,6DAIqC;AAHjC,+HAAA,+BAA+B,OAAA;AAC/B,uHAAA,uBAAuB,OAAA;AACvB,0HAAA,0BAA0B,OAAA;AAS9B,iFAGgD;AAF5C,gIAAA,uBAAuB,OAAA;AACvB,2HAAA,kBAAkB,OAAA;AAOtB,+EAA0E;AAAjE,mIAAA,sBAAsB,OAAA;AAK/B,6DAAyD;AAAhD,kHAAA,cAAc,OAAA;AAEvB,mDAAsD;AAA7C,uGAAA,YAAY,OAAA;AAErB,6DAAwF;AAA/E,sHAAA,sBAAsB,OAAA;AAAE,iHAAA,iBAAiB,OAAA;AAKlD,qDAAgE;AAAvD,iHAAA,qBAAqB,OAAA;AAM9B,mDAAsD;AAA7C,uGAAA,YAAY,OAAA;AAErB,2EAA+E;AAAtE,8HAAA,wBAAwB,OAAA;AAEjC,uFAAkF;AAAzE,iIAAA,qBAAqB,OAAA;AAC9B,qEAAiE;AAAxD,gHAAA,aAAa,OAAA;AAEtB,2EAG4C;AAFxC,mIAAA,4BAA4B,OAAA;AAC5B,gIAAA,yBAAyB,OAAA;AAO7B,2DAIoC;AAHhC,gHAAA,iBAAiB,OAAA;AACjB,iHAAA,kBAAkB,OAAA;AAClB,mHAAA,oBAAoB,OAAA;AAOxB,iEAA6F;AAApF,oHAAA,mBAAmB,OAAA;AAAE,uHAAA,sBAAsB,OAAA;AAMpD,+DAMuC;AALnC,mHAAA,mBAAmB,OAAA;AACnB,oHAAA,oBAAoB,OAAA;AACpB,6HAAA,6BAA6B,OAAA;AAC7B,wHAAA,wBAAwB,OAAA;AACxB,gIAAA,gCAAgC,OAAA"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { WebSocket } from 'ws';
|
|
2
|
+
export type WaFakeConnectionState = 'open' | 'closing' | 'closed';
|
|
3
|
+
export interface WaFakeConnectionHandlers {
|
|
4
|
+
readonly onFrame?: (frame: Uint8Array) => void;
|
|
5
|
+
readonly onClose?: (info: {
|
|
6
|
+
readonly code: number;
|
|
7
|
+
readonly reason: string;
|
|
8
|
+
}) => void;
|
|
9
|
+
readonly onError?: (error: Error) => void;
|
|
10
|
+
}
|
|
11
|
+
export declare class WaFakeConnection {
|
|
12
|
+
readonly id: string;
|
|
13
|
+
private readonly socket;
|
|
14
|
+
private handlers;
|
|
15
|
+
private currentState;
|
|
16
|
+
constructor(id: string, socket: WebSocket);
|
|
17
|
+
get state(): WaFakeConnectionState;
|
|
18
|
+
setHandlers(handlers: WaFakeConnectionHandlers): void;
|
|
19
|
+
sendFrame(frame: Uint8Array): void;
|
|
20
|
+
close(code?: number, reason?: string): void;
|
|
21
|
+
private bindSocketEvents;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=WaFakeConnection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WaFakeConnection.d.ts","sourceRoot":"","sources":["../../src/infra/WaFakeConnection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAA;AAEnC,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAA;AAEjE,MAAM,WAAW,wBAAwB;IACrC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAA;IAC9C,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IACrF,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;CAC5C;AAED,qBAAa,gBAAgB;IACzB,SAAgB,EAAE,EAAE,MAAM,CAAA;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAW;IAClC,OAAO,CAAC,QAAQ,CAA+B;IAC/C,OAAO,CAAC,YAAY,CAAgC;gBAEjC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS;IAMhD,IAAW,KAAK,IAAI,qBAAqB,CAExC;IAEM,WAAW,CAAC,QAAQ,EAAE,wBAAwB,GAAG,IAAI;IAIrD,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAOlC,KAAK,CAAC,IAAI,SAAO,EAAE,MAAM,SAAK,GAAG,IAAI;IAQ5C,OAAO,CAAC,gBAAgB;CAwB3B"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WaFakeConnection = void 0;
|
|
4
|
+
class WaFakeConnection {
|
|
5
|
+
constructor(id, socket) {
|
|
6
|
+
this.handlers = {};
|
|
7
|
+
this.currentState = 'open';
|
|
8
|
+
this.id = id;
|
|
9
|
+
this.socket = socket;
|
|
10
|
+
this.bindSocketEvents();
|
|
11
|
+
}
|
|
12
|
+
get state() {
|
|
13
|
+
return this.currentState;
|
|
14
|
+
}
|
|
15
|
+
setHandlers(handlers) {
|
|
16
|
+
this.handlers = handlers;
|
|
17
|
+
}
|
|
18
|
+
sendFrame(frame) {
|
|
19
|
+
if (this.currentState !== 'open') {
|
|
20
|
+
throw new Error(`cannot send frame on connection in state "${this.currentState}"`);
|
|
21
|
+
}
|
|
22
|
+
this.socket.send(frame);
|
|
23
|
+
}
|
|
24
|
+
close(code = 1000, reason = '') {
|
|
25
|
+
if (this.currentState === 'closed' || this.currentState === 'closing') {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
this.currentState = 'closing';
|
|
29
|
+
this.socket.close(code, reason);
|
|
30
|
+
}
|
|
31
|
+
bindSocketEvents() {
|
|
32
|
+
this.socket.on('message', (data, isBinary) => {
|
|
33
|
+
if (!isBinary) {
|
|
34
|
+
this.handlers.onError?.(new Error('received unexpected text frame'));
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
const frame = data instanceof Uint8Array
|
|
38
|
+
? data
|
|
39
|
+
: Array.isArray(data)
|
|
40
|
+
? new Uint8Array(Buffer.concat(data))
|
|
41
|
+
: new Uint8Array(data);
|
|
42
|
+
this.handlers.onFrame?.(frame);
|
|
43
|
+
});
|
|
44
|
+
this.socket.on('close', (code, reasonBuf) => {
|
|
45
|
+
this.currentState = 'closed';
|
|
46
|
+
this.handlers.onClose?.({ code, reason: reasonBuf.toString('utf8') });
|
|
47
|
+
});
|
|
48
|
+
this.socket.on('error', (error) => {
|
|
49
|
+
this.handlers.onError?.(error);
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
exports.WaFakeConnection = WaFakeConnection;
|
|
54
|
+
//# sourceMappingURL=WaFakeConnection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WaFakeConnection.js","sourceRoot":"","sources":["../../src/infra/WaFakeConnection.ts"],"names":[],"mappings":";;;AAUA,MAAa,gBAAgB;IAMzB,YAAmB,EAAU,EAAE,MAAiB;QAHxC,aAAQ,GAA6B,EAAE,CAAA;QACvC,iBAAY,GAA0B,MAAM,CAAA;QAGhD,IAAI,CAAC,EAAE,GAAG,EAAE,CAAA;QACZ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,gBAAgB,EAAE,CAAA;IAC3B,CAAC;IAED,IAAW,KAAK;QACZ,OAAO,IAAI,CAAC,YAAY,CAAA;IAC5B,CAAC;IAEM,WAAW,CAAC,QAAkC;QACjD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAC5B,CAAC;IAEM,SAAS,CAAC,KAAiB;QAC9B,IAAI,IAAI,CAAC,YAAY,KAAK,MAAM,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,6CAA6C,IAAI,CAAC,YAAY,GAAG,CAAC,CAAA;QACtF,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC3B,CAAC;IAEM,KAAK,CAAC,IAAI,GAAG,IAAI,EAAE,MAAM,GAAG,EAAE;QACjC,IAAI,IAAI,CAAC,YAAY,KAAK,QAAQ,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACpE,OAAM;QACV,CAAC;QACD,IAAI,CAAC,YAAY,GAAG,SAAS,CAAA;QAC7B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IACnC,CAAC;IAEO,gBAAgB;QACpB,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE;YACzC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACZ,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC,CAAA;gBACpE,OAAM;YACV,CAAC;YACD,MAAM,KAAK,GACP,IAAI,YAAY,UAAU;gBACtB,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;oBACnB,CAAC,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBACrC,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAA;YAChC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAA;QAClC,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE;YACxC,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAA;YAC5B,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QACzE,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAC9B,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAA;QAClC,CAAC,CAAC,CAAA;IACN,CAAC;CACJ;AA3DD,4CA2DC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/** Per-connection lifecycle pipeline (Noise handshake + stanza loop). */
|
|
2
|
+
import { type FakeNoiseRootCa } from '../protocol/auth/cert-chain';
|
|
3
|
+
import { type ParsedClientPayload } from '../protocol/auth/client-payload-validate';
|
|
4
|
+
import { buildSuccessNode } from '../protocol/auth/success-node';
|
|
5
|
+
import { type WaFakeIqRouter } from '../protocol/iq/router';
|
|
6
|
+
import { type BinaryNode } from '../transport/codec';
|
|
7
|
+
import { type SignalKeyPair } from '../transport/crypto';
|
|
8
|
+
import type { WaFakeConnection } from './WaFakeConnection';
|
|
9
|
+
export interface WaFakeConnectionPipelineConfig {
|
|
10
|
+
readonly connection: WaFakeConnection;
|
|
11
|
+
readonly rootCa: FakeNoiseRootCa;
|
|
12
|
+
readonly serverStaticKeyPair: SignalKeyPair;
|
|
13
|
+
readonly iqRouter: WaFakeIqRouter;
|
|
14
|
+
readonly successNodeAttributes?: Parameters<typeof buildSuccessNode>[0];
|
|
15
|
+
}
|
|
16
|
+
export interface WaFakeConnectionPipelineEvents {
|
|
17
|
+
readonly onAuthenticated?: (info: WaFakeAuthenticatedInfo) => void;
|
|
18
|
+
readonly onStanza?: (node: BinaryNode) => void;
|
|
19
|
+
readonly onUnhandledStanza?: (node: BinaryNode) => void;
|
|
20
|
+
readonly onError?: (error: Error) => void;
|
|
21
|
+
readonly onClose?: (info: {
|
|
22
|
+
readonly code: number;
|
|
23
|
+
readonly reason: string;
|
|
24
|
+
}) => void;
|
|
25
|
+
}
|
|
26
|
+
export interface WaFakeAuthenticatedInfo {
|
|
27
|
+
readonly clientPayload: ParsedClientPayload;
|
|
28
|
+
readonly clientStaticKey: Uint8Array;
|
|
29
|
+
}
|
|
30
|
+
export declare class WaFakeConnectionPipeline {
|
|
31
|
+
private readonly config;
|
|
32
|
+
private readonly frameSocket;
|
|
33
|
+
private events;
|
|
34
|
+
private state;
|
|
35
|
+
private chain;
|
|
36
|
+
constructor(config: WaFakeConnectionPipelineConfig);
|
|
37
|
+
setEvents(events: WaFakeConnectionPipelineEvents): void;
|
|
38
|
+
isAuthenticated(): boolean;
|
|
39
|
+
sendStanza(node: BinaryNode): Promise<void>;
|
|
40
|
+
private onPrologue;
|
|
41
|
+
private scheduleFrame;
|
|
42
|
+
private handleFrame;
|
|
43
|
+
private handleClientHello;
|
|
44
|
+
private handleXxClientHello;
|
|
45
|
+
/** Server-side IK path used when the client already cached our static key. */
|
|
46
|
+
private handleIkClientHello;
|
|
47
|
+
private handleClientFinish;
|
|
48
|
+
private handleAuthenticatedFrame;
|
|
49
|
+
private fail;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=WaFakeConnectionPipeline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WaFakeConnectionPipeline.d.ts","sourceRoot":"","sources":["../../src/infra/WaFakeConnectionPipeline.ts"],"names":[],"mappings":"AAAA,yEAAyE;AAEzE,OAAO,EAAsB,KAAK,eAAe,EAAE,MAAM,6BAA6B,CAAA;AACtF,OAAO,EAEH,KAAK,mBAAmB,EAC3B,MAAM,0CAA0C,CAAA;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAChE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,KAAK,UAAU,EAAkD,MAAM,oBAAoB,CAAA;AACpG,OAAO,EAAE,KAAK,aAAa,EAAU,MAAM,qBAAqB,CAAA;AAGhE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAS1D,MAAM,WAAW,8BAA8B;IAC3C,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAA;IACrC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAA;IAChC,QAAQ,CAAC,mBAAmB,EAAE,aAAa,CAAA;IAC3C,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAA;IACjC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAA;CAC1E;AAED,MAAM,WAAW,8BAA8B;IAC3C,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,uBAAuB,KAAK,IAAI,CAAA;IAClE,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAA;IAC9C,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAA;IACvD,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;IACzC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;CACxF;AAED,MAAM,WAAW,uBAAuB;IACpC,QAAQ,CAAC,aAAa,EAAE,mBAAmB,CAAA;IAC3C,QAAQ,CAAC,eAAe,EAAE,UAAU,CAAA;CACvC;AAiBD,qBAAa,wBAAwB;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgC;IACvD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAmB;IAC/C,OAAO,CAAC,MAAM,CAAqC;IACnD,OAAO,CAAC,KAAK,CAAuC;IACpD,OAAO,CAAC,KAAK,CAAmC;gBAE7B,MAAM,EAAE,8BAA8B;IAclD,SAAS,CAAC,MAAM,EAAE,8BAA8B,GAAG,IAAI;IAIvD,eAAe,IAAI,OAAO;IAIpB,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAUxD,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,aAAa;YAIP,WAAW;YA0BX,iBAAiB;YAejB,mBAAmB;IAyCjC,8EAA8E;YAChE,mBAAmB;YA4DnB,kBAAkB;YA4BlB,wBAAwB;IAsCtC,OAAO,CAAC,IAAI;CAMf"}
|