@toon-protocol/connector 3.20.1 → 3.29.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 +6 -6
- package/dist/auth/rfc9421/content-digest.d.ts +16 -0
- package/dist/auth/rfc9421/content-digest.d.ts.map +1 -0
- package/dist/auth/rfc9421/content-digest.js +35 -0
- package/dist/auth/rfc9421/content-digest.js.map +1 -0
- package/dist/auth/rfc9421/index.d.ts +9 -0
- package/dist/auth/rfc9421/index.d.ts.map +1 -0
- package/dist/auth/rfc9421/index.js +24 -0
- package/dist/auth/rfc9421/index.js.map +1 -0
- package/dist/auth/rfc9421/sign.d.ts +20 -0
- package/dist/auth/rfc9421/sign.d.ts.map +1 -0
- package/dist/auth/rfc9421/sign.js +43 -0
- package/dist/auth/rfc9421/sign.js.map +1 -0
- package/dist/auth/rfc9421/signature-base.d.ts +21 -0
- package/dist/auth/rfc9421/signature-base.d.ts.map +1 -0
- package/dist/auth/rfc9421/signature-base.js +57 -0
- package/dist/auth/rfc9421/signature-base.js.map +1 -0
- package/dist/auth/rfc9421/verify.d.ts +19 -0
- package/dist/auth/rfc9421/verify.d.ts.map +1 -0
- package/dist/auth/rfc9421/verify.js +215 -0
- package/dist/auth/rfc9421/verify.js.map +1 -0
- package/dist/btp/btp-client-manager.d.ts +1 -1
- package/dist/btp/btp-client-manager.d.ts.map +1 -1
- package/dist/btp/btp-client.d.ts +2 -2
- package/dist/btp/btp-client.d.ts.map +1 -1
- package/dist/btp/btp-client.js.map +1 -1
- package/dist/cli/admin-client-factory.d.ts +10 -0
- package/dist/cli/admin-client-factory.d.ts.map +1 -0
- package/dist/cli/admin-client-factory.js +33 -0
- package/dist/cli/admin-client-factory.js.map +1 -0
- package/dist/cli/commands/app.d.ts +6 -0
- package/dist/cli/commands/app.d.ts.map +1 -0
- package/dist/cli/commands/app.js +132 -0
- package/dist/cli/commands/app.js.map +1 -0
- package/dist/cli/commands/route.d.ts +3 -0
- package/dist/cli/commands/route.d.ts.map +1 -0
- package/dist/cli/commands/route.js +63 -0
- package/dist/cli/commands/route.js.map +1 -0
- package/dist/cli/commands/up.d.ts +3 -0
- package/dist/cli/commands/up.d.ts.map +1 -0
- package/dist/cli/commands/up.js +27 -0
- package/dist/cli/commands/up.js.map +1 -0
- package/dist/cli/index.js +32 -16
- package/dist/cli/index.js.map +1 -1
- package/dist/client/connector-admin-client.d.ts +17 -12
- package/dist/client/connector-admin-client.d.ts.map +1 -1
- package/dist/client/connector-admin-client.js.map +1 -1
- package/dist/config/config-loader.d.ts +0 -3
- package/dist/config/config-loader.d.ts.map +1 -1
- package/dist/config/config-loader.js +41 -161
- package/dist/config/config-loader.js.map +1 -1
- package/dist/config/environment-validator.js +6 -6
- package/dist/config/environment-validator.js.map +1 -1
- package/dist/config/types.d.ts +49 -17
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js +93 -1
- package/dist/config/types.js.map +1 -1
- package/dist/core/connector-node.d.ts +13 -1
- package/dist/core/connector-node.d.ts.map +1 -1
- package/dist/core/connector-node.js +279 -171
- package/dist/core/connector-node.js.map +1 -1
- package/dist/core/handlers/http-proxy-handler.d.ts +47 -0
- package/dist/core/handlers/http-proxy-handler.d.ts.map +1 -0
- package/dist/core/handlers/http-proxy-handler.js +223 -0
- package/dist/core/handlers/http-proxy-handler.js.map +1 -0
- package/dist/core/local-delivery-client.d.ts +1 -0
- package/dist/core/local-delivery-client.d.ts.map +1 -1
- package/dist/core/local-delivery-client.js +25 -9
- package/dist/core/local-delivery-client.js.map +1 -1
- package/dist/core/packet-handler.d.ts +10 -0
- package/dist/core/packet-handler.d.ts.map +1 -1
- package/dist/core/packet-handler.js +121 -8
- package/dist/core/packet-handler.js.map +1 -1
- package/dist/core/payment-handler.d.ts +2 -1
- package/dist/core/payment-handler.d.ts.map +1 -1
- package/dist/core/payment-handler.js +24 -0
- package/dist/core/payment-handler.js.map +1 -1
- package/dist/core/registry-db-schema.d.ts +2 -1
- package/dist/core/registry-db-schema.d.ts.map +1 -1
- package/dist/core/registry-db-schema.js +9 -0
- package/dist/core/registry-db-schema.js.map +1 -1
- package/dist/core/registry-store.d.ts +1 -0
- package/dist/core/registry-store.d.ts.map +1 -1
- package/dist/core/registry-store.js +6 -4
- package/dist/core/registry-store.js.map +1 -1
- package/dist/core/route-upstream-registry.d.ts +17 -0
- package/dist/core/route-upstream-registry.d.ts.map +1 -0
- package/dist/core/route-upstream-registry.js +51 -0
- package/dist/core/route-upstream-registry.js.map +1 -0
- package/dist/discovery/ilp-peer-info-event.d.ts +22 -0
- package/dist/discovery/ilp-peer-info-event.d.ts.map +1 -0
- package/dist/discovery/ilp-peer-info-event.js +21 -0
- package/dist/discovery/ilp-peer-info-event.js.map +1 -0
- package/dist/discovery/index.d.ts +8 -0
- package/dist/discovery/index.d.ts.map +1 -1
- package/dist/discovery/index.js +16 -1
- package/dist/discovery/index.js.map +1 -1
- package/dist/discovery/self-announce-builder.d.ts +14 -0
- package/dist/discovery/self-announce-builder.d.ts.map +1 -0
- package/dist/discovery/self-announce-builder.js +88 -0
- package/dist/discovery/self-announce-builder.js.map +1 -0
- package/dist/discovery/self-announce-publish.d.ts +17 -0
- package/dist/discovery/self-announce-publish.d.ts.map +1 -0
- package/dist/discovery/self-announce-publish.js +35 -0
- package/dist/discovery/self-announce-publish.js.map +1 -0
- package/dist/discovery/self-announce-service.d.ts +36 -0
- package/dist/discovery/self-announce-service.d.ts.map +1 -0
- package/dist/discovery/self-announce-service.js +118 -0
- package/dist/discovery/self-announce-service.js.map +1 -0
- package/dist/http/admin-api-inventory.d.ts.map +1 -1
- package/dist/http/admin-api-inventory.js +0 -42
- package/dist/http/admin-api-inventory.js.map +1 -1
- package/dist/http/admin-api.d.ts +29 -13
- package/dist/http/admin-api.d.ts.map +1 -1
- package/dist/http/admin-api.js +141 -76
- package/dist/http/admin-api.js.map +1 -1
- package/dist/http/admin-server.d.ts +3 -4
- package/dist/http/admin-server.d.ts.map +1 -1
- package/dist/http/admin-server.js +4 -6
- package/dist/http/admin-server.js.map +1 -1
- package/dist/http/ilp-http-adapter.d.ts +10 -0
- package/dist/http/ilp-http-adapter.d.ts.map +1 -1
- package/dist/http/ilp-http-adapter.js +118 -0
- package/dist/http/ilp-http-adapter.js.map +1 -1
- package/dist/http/types.d.ts +1 -1
- package/dist/http/types.d.ts.map +1 -1
- package/dist/http/x402-greeting.d.ts +46 -0
- package/dist/http/x402-greeting.d.ts.map +1 -0
- package/dist/http/x402-greeting.js +77 -0
- package/dist/http/x402-greeting.js.map +1 -0
- package/dist/lib.d.ts +15 -4
- package/dist/lib.d.ts.map +1 -1
- package/dist/lib.js +42 -1
- package/dist/lib.js.map +1 -1
- package/dist/main.d.ts +3 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +3 -1
- package/dist/main.js.map +1 -1
- package/dist/settlement/channel-manager.d.ts.map +1 -1
- package/dist/settlement/channel-manager.js +1 -1
- package/dist/settlement/channel-manager.js.map +1 -1
- package/dist/settlement/provider/solana-payment-channel-provider.d.ts.map +1 -1
- package/dist/settlement/provider/solana-payment-channel-provider.js +1 -1
- package/dist/settlement/provider/solana-payment-channel-provider.js.map +1 -1
- package/dist/settlement/solana-payment-channel-sdk.d.ts +1 -1
- package/dist/settlement/solana-payment-channel-sdk.d.ts.map +1 -1
- package/dist/settlement/solana-payment-channel-sdk.js +2 -2
- package/dist/settlement/solana-payment-channel-sdk.js.map +1 -1
- package/dist/transport/http-peer-transport.d.ts +46 -0
- package/dist/transport/http-peer-transport.d.ts.map +1 -0
- package/dist/transport/http-peer-transport.js +185 -0
- package/dist/transport/http-peer-transport.js.map +1 -0
- package/dist/transport/index.d.ts +0 -3
- package/dist/transport/index.d.ts.map +1 -1
- package/dist/transport/index.js +1 -8
- package/dist/transport/index.js.map +1 -1
- package/dist/wallet/mnemonic-keys.d.ts +15 -0
- package/dist/wallet/mnemonic-keys.d.ts.map +1 -0
- package/dist/wallet/mnemonic-keys.js +150 -0
- package/dist/wallet/mnemonic-keys.js.map +1 -0
- package/package.json +11 -8
- package/dist/transport/hs-desc-monitor.d.ts +0 -12
- package/dist/transport/hs-desc-monitor.d.ts.map +0 -1
- package/dist/transport/hs-desc-monitor.js +0 -105
- package/dist/transport/hs-desc-monitor.js.map +0 -1
- package/dist/transport/managed-anon-client.d.ts +0 -93
- package/dist/transport/managed-anon-client.d.ts.map +0 -1
- package/dist/transport/managed-anon-client.js +0 -522
- package/dist/transport/managed-anon-client.js.map +0 -1
- package/dist/transport/socks-transport-provider.d.ts +0 -29
- package/dist/transport/socks-transport-provider.d.ts.map +0 -1
- package/dist/transport/socks-transport-provider.js +0 -136
- package/dist/transport/socks-transport-provider.js.map +0 -1
- package/dist/transport/socks-url.d.ts +0 -6
- package/dist/transport/socks-url.d.ts.map +0 -1
- package/dist/transport/socks-url.js +0 -29
- package/dist/transport/socks-url.js.map +0 -1
- package/dist/transport/socks5-connect.d.ts +0 -12
- package/dist/transport/socks5-connect.d.ts.map +0 -1
- package/dist/transport/socks5-connect.js +0 -89
- package/dist/transport/socks5-connect.js.map +0 -1
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HttpPeerClientManager = exports.HttpPeerTimeoutError = exports.HttpPeerConnectionError = exports.DEFAULT_ILP_HTTP_EGRESS_PATH = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const http_1 = tslib_1.__importDefault(require("http"));
|
|
6
|
+
const https_1 = tslib_1.__importDefault(require("https"));
|
|
7
|
+
const url_1 = require("url");
|
|
8
|
+
const shared_1 = require("@toon-protocol/shared");
|
|
9
|
+
const btp_claim_types_1 = require("../btp/btp-claim-types");
|
|
10
|
+
const nip59_claim_wrapper_1 = require("../settlement/privacy/nip59-claim-wrapper");
|
|
11
|
+
exports.DEFAULT_ILP_HTTP_EGRESS_PATH = '/ilp';
|
|
12
|
+
const DEFAULT_HTTP_TIMEOUT_MS = 30000;
|
|
13
|
+
class HttpPeerConnectionError extends Error {
|
|
14
|
+
constructor(message) {
|
|
15
|
+
super(message);
|
|
16
|
+
this.name = 'HttpPeerConnectionError';
|
|
17
|
+
Error.captureStackTrace(this, HttpPeerConnectionError);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
exports.HttpPeerConnectionError = HttpPeerConnectionError;
|
|
21
|
+
class HttpPeerTimeoutError extends Error {
|
|
22
|
+
constructor(message) {
|
|
23
|
+
super(message);
|
|
24
|
+
this.name = 'HttpPeerTimeoutError';
|
|
25
|
+
Error.captureStackTrace(this, HttpPeerTimeoutError);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
exports.HttpPeerTimeoutError = HttpPeerTimeoutError;
|
|
29
|
+
class HttpPeerClientManager {
|
|
30
|
+
_peers = new Map();
|
|
31
|
+
_logger;
|
|
32
|
+
_nodeId;
|
|
33
|
+
_transportProvider;
|
|
34
|
+
_keepAliveHttp;
|
|
35
|
+
_keepAliveHttps;
|
|
36
|
+
constructor(nodeId, logger, transportProvider) {
|
|
37
|
+
this._nodeId = nodeId;
|
|
38
|
+
this._logger = logger.child({ component: 'HttpPeerClientManager' });
|
|
39
|
+
this._transportProvider = transportProvider;
|
|
40
|
+
this._keepAliveHttp = new http_1.default.Agent({ keepAlive: true, maxSockets: 256 });
|
|
41
|
+
this._keepAliveHttps = new https_1.default.Agent({ keepAlive: true, maxSockets: 256 });
|
|
42
|
+
}
|
|
43
|
+
async addPeer(peer) {
|
|
44
|
+
if (this._peers.has(peer.id)) {
|
|
45
|
+
this._logger.warn({ event: 'http_peer_exists', peerId: peer.id }, 'HTTP peer already exists, skipping');
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
this._peers.set(peer.id, peer);
|
|
49
|
+
this._logger.info({
|
|
50
|
+
event: 'http_peer_added',
|
|
51
|
+
peerId: peer.id,
|
|
52
|
+
path: peer.httpPath ?? exports.DEFAULT_ILP_HTTP_EGRESS_PATH,
|
|
53
|
+
}, 'HTTP egress peer registered');
|
|
54
|
+
}
|
|
55
|
+
async removePeer(peerId) {
|
|
56
|
+
if (this._peers.delete(peerId)) {
|
|
57
|
+
this._logger.info({ event: 'http_peer_removed', peerId }, 'HTTP egress peer removed');
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
this._logger.warn({ event: 'http_peer_not_found', peerId }, 'HTTP egress peer not found, cannot remove');
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
isConnected(peerId) {
|
|
64
|
+
return this._peers.has(peerId);
|
|
65
|
+
}
|
|
66
|
+
getPeerIds() {
|
|
67
|
+
return Array.from(this._peers.keys());
|
|
68
|
+
}
|
|
69
|
+
async sendToPeer(peerId, packet, protocolData) {
|
|
70
|
+
const peer = this._peers.get(peerId);
|
|
71
|
+
if (!peer) {
|
|
72
|
+
throw new HttpPeerConnectionError(`HTTP peer not found: ${peerId}`);
|
|
73
|
+
}
|
|
74
|
+
const body = (0, shared_1.serializePacket)(packet);
|
|
75
|
+
const headers = this.buildHeaders(peer, body, protocolData);
|
|
76
|
+
const { target, agent, isHttps } = this.resolveTarget(peer);
|
|
77
|
+
const timeoutMs = this.resolveTimeoutMs(peer, packet);
|
|
78
|
+
this._logger.debug({ event: 'http_peer_send', peerId, destination: packet.destination, timeoutMs }, 'Sending PREPARE to HTTP peer');
|
|
79
|
+
const responseBody = await this.post(target, agent, isHttps, headers, body, timeoutMs, peerId);
|
|
80
|
+
const decoded = (0, shared_1.deserializePacket)(responseBody);
|
|
81
|
+
if (decoded.type !== shared_1.PacketType.FULFILL && decoded.type !== shared_1.PacketType.REJECT) {
|
|
82
|
+
throw new HttpPeerConnectionError(`HTTP peer ${peerId} returned non-FULFILL/REJECT packet type ${decoded.type}`);
|
|
83
|
+
}
|
|
84
|
+
this._logger.debug({ event: 'http_peer_response', peerId, responseType: decoded.type }, 'Received response from HTTP peer');
|
|
85
|
+
return decoded;
|
|
86
|
+
}
|
|
87
|
+
buildHeaders(peer, body, protocolData) {
|
|
88
|
+
const headers = {
|
|
89
|
+
'Content-Type': 'application/octet-stream',
|
|
90
|
+
'Content-Length': body.length,
|
|
91
|
+
'ILP-Peer-Id': this._nodeId,
|
|
92
|
+
};
|
|
93
|
+
if (peer.authToken !== '') {
|
|
94
|
+
headers.Authorization = `Bearer ${peer.authToken}`;
|
|
95
|
+
}
|
|
96
|
+
if (protocolData) {
|
|
97
|
+
for (const entry of protocolData) {
|
|
98
|
+
if (entry.protocolName === btp_claim_types_1.BTP_CLAIM_PROTOCOL.NAME) {
|
|
99
|
+
headers['ILP-Payment-Channel-Claim'] = entry.data.toString('base64');
|
|
100
|
+
}
|
|
101
|
+
else if (entry.protocolName === nip59_claim_wrapper_1.BTP_WRAPPED_CLAIM_PROTOCOL.NAME) {
|
|
102
|
+
headers['ILP-Payment-Channel-Claim-Wrapped'] = entry.data.toString('base64');
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return headers;
|
|
107
|
+
}
|
|
108
|
+
resolveTarget(peer) {
|
|
109
|
+
const path = peer.httpPath ?? exports.DEFAULT_ILP_HTTP_EGRESS_PATH;
|
|
110
|
+
const target = new url_1.URL(path, peer.httpUrl);
|
|
111
|
+
const isHttps = target.protocol === 'https:';
|
|
112
|
+
const providerAgent = this._transportProvider.createAgent(peer.httpUrl);
|
|
113
|
+
const agent = providerAgent ?? (isHttps ? this._keepAliveHttps : this._keepAliveHttp);
|
|
114
|
+
return { target, agent, isHttps };
|
|
115
|
+
}
|
|
116
|
+
resolveTimeoutMs(peer, packet) {
|
|
117
|
+
if (packet.expiresAt) {
|
|
118
|
+
const remaining = packet.expiresAt.getTime() - Date.now();
|
|
119
|
+
return Math.max(remaining - 500, 1000);
|
|
120
|
+
}
|
|
121
|
+
return peer.httpTimeoutMs ?? DEFAULT_HTTP_TIMEOUT_MS;
|
|
122
|
+
}
|
|
123
|
+
post(target, agent, isHttps, headers, body, timeoutMs, peerId) {
|
|
124
|
+
return new Promise((resolve, reject) => {
|
|
125
|
+
const requestFn = isHttps ? https_1.default.request : http_1.default.request;
|
|
126
|
+
const req = requestFn({
|
|
127
|
+
protocol: target.protocol,
|
|
128
|
+
hostname: target.hostname,
|
|
129
|
+
port: target.port,
|
|
130
|
+
path: target.pathname + target.search,
|
|
131
|
+
method: 'POST',
|
|
132
|
+
headers,
|
|
133
|
+
agent,
|
|
134
|
+
timeout: timeoutMs,
|
|
135
|
+
}, (res) => {
|
|
136
|
+
const chunks = [];
|
|
137
|
+
res.on('data', (c) => chunks.push(c));
|
|
138
|
+
res.on('end', () => {
|
|
139
|
+
const status = res.statusCode ?? 0;
|
|
140
|
+
const resBody = Buffer.concat(chunks);
|
|
141
|
+
if (status >= 200 && status < 300) {
|
|
142
|
+
resolve(resBody);
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
resolve((0, shared_1.serializePacket)(this.synthesizeReject(status, peerId, resBody)));
|
|
146
|
+
});
|
|
147
|
+
res.on('error', (err) => reject(new HttpPeerConnectionError(`HTTP peer ${peerId} response error: ${err.message}`)));
|
|
148
|
+
});
|
|
149
|
+
req.on('timeout', () => {
|
|
150
|
+
req.destroy(new HttpPeerTimeoutError(`HTTP peer ${peerId} timed out after ${timeoutMs}ms`));
|
|
151
|
+
});
|
|
152
|
+
req.on('error', (err) => {
|
|
153
|
+
if (err instanceof HttpPeerTimeoutError) {
|
|
154
|
+
reject(err);
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
reject(new HttpPeerConnectionError(`HTTP peer ${peerId} request error: ${err.message}`));
|
|
158
|
+
});
|
|
159
|
+
req.write(body);
|
|
160
|
+
req.end();
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
synthesizeReject(status, peerId, _resBody) {
|
|
164
|
+
let code;
|
|
165
|
+
if (status === 401) {
|
|
166
|
+
code = shared_1.ILPErrorCode.T01_PEER_UNREACHABLE;
|
|
167
|
+
}
|
|
168
|
+
else if (status >= 400 && status < 500) {
|
|
169
|
+
code = shared_1.ILPErrorCode.F00_BAD_REQUEST;
|
|
170
|
+
}
|
|
171
|
+
else {
|
|
172
|
+
code = shared_1.ILPErrorCode.T01_PEER_UNREACHABLE;
|
|
173
|
+
}
|
|
174
|
+
this._logger.warn({ event: 'http_peer_non_2xx', peerId, status, code }, 'HTTP peer returned non-2xx; synthesizing ILP reject');
|
|
175
|
+
return {
|
|
176
|
+
type: shared_1.PacketType.REJECT,
|
|
177
|
+
code,
|
|
178
|
+
triggeredBy: this._nodeId,
|
|
179
|
+
message: `HTTP peer ${peerId} returned HTTP ${status}`,
|
|
180
|
+
data: Buffer.alloc(0),
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
exports.HttpPeerClientManager = HttpPeerClientManager;
|
|
185
|
+
//# sourceMappingURL=http-peer-transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-peer-transport.js","sourceRoot":"","sources":["../../src/transport/http-peer-transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,4 @@
|
|
|
1
1
|
export { type TransportProvider } from './transport-provider';
|
|
2
2
|
export { DirectTransportProvider } from './direct-transport-provider';
|
|
3
|
-
export { SocksTransportProvider, type SocksTransportProviderOptions, } from './socks-transport-provider';
|
|
4
|
-
export { ManagedAnonClient, createDefaultAnonFactory, type ManagedAnonClientOptions, type AnonFactoryOptions, type AnonSdkHandle, } from './managed-anon-client';
|
|
5
|
-
export { parseSocks5hUrl, type ParsedSocks5Url } from './socks-url';
|
|
6
3
|
export { probeTcpPort, waitForTcpPort } from './probe-tcp-port';
|
|
7
4
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/transport/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/transport/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC"}
|
package/dist/transport/index.js
CHANGED
|
@@ -1,15 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.waitForTcpPort = exports.probeTcpPort = exports.
|
|
3
|
+
exports.waitForTcpPort = exports.probeTcpPort = exports.DirectTransportProvider = void 0;
|
|
4
4
|
var direct_transport_provider_1 = require("./direct-transport-provider");
|
|
5
5
|
Object.defineProperty(exports, "DirectTransportProvider", { enumerable: true, get: function () { return direct_transport_provider_1.DirectTransportProvider; } });
|
|
6
|
-
var socks_transport_provider_1 = require("./socks-transport-provider");
|
|
7
|
-
Object.defineProperty(exports, "SocksTransportProvider", { enumerable: true, get: function () { return socks_transport_provider_1.SocksTransportProvider; } });
|
|
8
|
-
var managed_anon_client_1 = require("./managed-anon-client");
|
|
9
|
-
Object.defineProperty(exports, "ManagedAnonClient", { enumerable: true, get: function () { return managed_anon_client_1.ManagedAnonClient; } });
|
|
10
|
-
Object.defineProperty(exports, "createDefaultAnonFactory", { enumerable: true, get: function () { return managed_anon_client_1.createDefaultAnonFactory; } });
|
|
11
|
-
var socks_url_1 = require("./socks-url");
|
|
12
|
-
Object.defineProperty(exports, "parseSocks5hUrl", { enumerable: true, get: function () { return socks_url_1.parseSocks5hUrl; } });
|
|
13
6
|
var probe_tcp_port_1 = require("./probe-tcp-port");
|
|
14
7
|
Object.defineProperty(exports, "probeTcpPort", { enumerable: true, get: function () { return probe_tcp_port_1.probeTcpPort; } });
|
|
15
8
|
Object.defineProperty(exports, "waitForTcpPort", { enumerable: true, get: function () { return probe_tcp_port_1.waitForTcpPort; } });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/transport/index.ts"],"names":[],"mappings":";;;AASA,yEAAsE;AAA7D,oIAAA,uBAAuB,OAAA;AAChC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/transport/index.ts"],"names":[],"mappings":";;;AASA,yEAAsE;AAA7D,oIAAA,uBAAuB,OAAA;AAChC,mDAAgE;AAAvD,8GAAA,YAAY,OAAA;AAAE,gHAAA,cAAc,OAAA"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface DerivedChainKeys {
|
|
2
|
+
readonly evm: {
|
|
3
|
+
readonly privateKey: string;
|
|
4
|
+
readonly address: string;
|
|
5
|
+
};
|
|
6
|
+
readonly solana: {
|
|
7
|
+
readonly privateKey: string;
|
|
8
|
+
readonly address: string;
|
|
9
|
+
};
|
|
10
|
+
readonly mina: {
|
|
11
|
+
readonly privateKey: string;
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
export declare function deriveChainKeysFromMnemonic(mnemonic: string, accountIndex?: number): DerivedChainKeys;
|
|
15
|
+
//# sourceMappingURL=mnemonic-keys.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mnemonic-keys.d.ts","sourceRoot":"","sources":["../../src/wallet/mnemonic-keys.ts"],"names":[],"mappings":"AA2DA,MAAM,WAAW,gBAAgB;IAE/B,QAAQ,CAAC,GAAG,EAAE;QAEZ,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;QAE5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;KAC1B,CAAC;IAEF,QAAQ,CAAC,MAAM,EAAE;QAEf,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;QAE5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;KAC1B,CAAC;IAEF,QAAQ,CAAC,IAAI,EAAE;QAEb,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;KAC7B,CAAC;CACH;AAWD,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,SAAI,GAAG,gBAAgB,CA8BhG"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.deriveChainKeysFromMnemonic = deriveChainKeysFromMnemonic;
|
|
4
|
+
const bip39_1 = require("@scure/bip39");
|
|
5
|
+
const english_1 = require("@scure/bip39/wordlists/english");
|
|
6
|
+
const bip32_1 = require("@scure/bip32");
|
|
7
|
+
const secp256k1_1 = require("@noble/curves/secp256k1");
|
|
8
|
+
const ed25519_1 = require("@noble/curves/ed25519");
|
|
9
|
+
const sha3_1 = require("@noble/hashes/sha3");
|
|
10
|
+
const sha2_1 = require("@noble/hashes/sha2");
|
|
11
|
+
const hmac_1 = require("@noble/hashes/hmac");
|
|
12
|
+
const sha2_2 = require("@noble/hashes/sha2");
|
|
13
|
+
const utils_1 = require("@noble/hashes/utils");
|
|
14
|
+
const MAX_BIP32_INDEX = 0x7fffffff;
|
|
15
|
+
function deriveChainKeysFromMnemonic(mnemonic, accountIndex = 0) {
|
|
16
|
+
if (!(0, bip39_1.validateMnemonic)(mnemonic, english_1.wordlist)) {
|
|
17
|
+
throw new Error('Invalid TOON_MNEMONIC: the provided words do not form a valid BIP-39 mnemonic phrase');
|
|
18
|
+
}
|
|
19
|
+
if (!Number.isInteger(accountIndex) || accountIndex < 0 || accountIndex > MAX_BIP32_INDEX) {
|
|
20
|
+
throw new Error(`Invalid mnemonic accountIndex: expected a non-negative integer (0 to ${MAX_BIP32_INDEX}), got ${String(accountIndex)}`);
|
|
21
|
+
}
|
|
22
|
+
let seed;
|
|
23
|
+
try {
|
|
24
|
+
seed = (0, bip39_1.mnemonicToSeedSync)(mnemonic);
|
|
25
|
+
return {
|
|
26
|
+
evm: deriveEvm(seed, accountIndex),
|
|
27
|
+
solana: deriveSolana(seed, accountIndex),
|
|
28
|
+
mina: deriveMina(seed, accountIndex),
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
finally {
|
|
32
|
+
if (seed) {
|
|
33
|
+
seed.fill(0);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
function deriveEvm(seed, accountIndex) {
|
|
38
|
+
const path = `m/44'/1237'/0'/0/${accountIndex}`;
|
|
39
|
+
const hdKey = bip32_1.HDKey.fromMasterSeed(seed).derive(path);
|
|
40
|
+
if (!hdKey.privateKey) {
|
|
41
|
+
throw new Error(`Failed to derive EVM private key at path ${path}`);
|
|
42
|
+
}
|
|
43
|
+
const privateKey = `0x${(0, utils_1.bytesToHex)(hdKey.privateKey)}`;
|
|
44
|
+
const address = computeEvmAddress(hdKey.privateKey);
|
|
45
|
+
return { privateKey, address };
|
|
46
|
+
}
|
|
47
|
+
function computeEvmAddress(secretKey) {
|
|
48
|
+
const uncompressed = secp256k1_1.secp256k1.getPublicKey(secretKey, false);
|
|
49
|
+
const hash = (0, sha3_1.keccak_256)(uncompressed.slice(1));
|
|
50
|
+
const addressHex = (0, utils_1.bytesToHex)(hash.slice(-20));
|
|
51
|
+
return toChecksumAddress(addressHex);
|
|
52
|
+
}
|
|
53
|
+
function toChecksumAddress(addressHex) {
|
|
54
|
+
const lower = addressHex.toLowerCase();
|
|
55
|
+
const hash = (0, utils_1.bytesToHex)((0, sha3_1.keccak_256)(new TextEncoder().encode(lower)));
|
|
56
|
+
let out = '0x';
|
|
57
|
+
for (let i = 0; i < 40; i++) {
|
|
58
|
+
const char = lower[i];
|
|
59
|
+
const hashChar = hash[i];
|
|
60
|
+
out += parseInt(hashChar, 16) >= 8 ? char.toUpperCase() : char;
|
|
61
|
+
}
|
|
62
|
+
return out;
|
|
63
|
+
}
|
|
64
|
+
function deriveSolana(seed, accountIndex) {
|
|
65
|
+
const privateKey = slip0010Derive(seed, [
|
|
66
|
+
0x8000002c,
|
|
67
|
+
0x800001f5,
|
|
68
|
+
(0x80000000 + accountIndex) >>> 0,
|
|
69
|
+
0x80000000,
|
|
70
|
+
]);
|
|
71
|
+
const publicKey = ed25519_1.ed25519.getPublicKey(privateKey);
|
|
72
|
+
const keypair = new Uint8Array(64);
|
|
73
|
+
keypair.set(privateKey, 0);
|
|
74
|
+
keypair.set(publicKey, 32);
|
|
75
|
+
return {
|
|
76
|
+
privateKey: base58Encode(keypair),
|
|
77
|
+
address: base58Encode(publicKey),
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
function slip0010Derive(seed, path) {
|
|
81
|
+
const encoder = new TextEncoder();
|
|
82
|
+
let I = (0, hmac_1.hmac)(sha2_2.sha512, encoder.encode('ed25519 seed'), seed);
|
|
83
|
+
let key = I.slice(0, 32);
|
|
84
|
+
let chainCode = I.slice(32);
|
|
85
|
+
for (const index of path) {
|
|
86
|
+
const data = new Uint8Array(37);
|
|
87
|
+
data[0] = 0x00;
|
|
88
|
+
data.set(key, 1);
|
|
89
|
+
data[33] = (index >>> 24) & 0xff;
|
|
90
|
+
data[34] = (index >>> 16) & 0xff;
|
|
91
|
+
data[35] = (index >>> 8) & 0xff;
|
|
92
|
+
data[36] = index & 0xff;
|
|
93
|
+
I = (0, hmac_1.hmac)(sha2_2.sha512, chainCode, data);
|
|
94
|
+
key = I.slice(0, 32);
|
|
95
|
+
chainCode = I.slice(32);
|
|
96
|
+
}
|
|
97
|
+
return key;
|
|
98
|
+
}
|
|
99
|
+
function deriveMina(seed, accountIndex) {
|
|
100
|
+
const path = `m/44'/12586'/${accountIndex}'/0/0`;
|
|
101
|
+
const hdKey = bip32_1.HDKey.fromMasterSeed(seed).derive(path);
|
|
102
|
+
if (!hdKey.privateKey) {
|
|
103
|
+
throw new Error(`Failed to derive Mina private key at path ${path}`);
|
|
104
|
+
}
|
|
105
|
+
const keyBytes = new Uint8Array(hdKey.privateKey);
|
|
106
|
+
keyBytes[0] = (keyBytes[0] ?? 0) & 0x3f;
|
|
107
|
+
const hexKey = (0, utils_1.bytesToHex)(keyBytes);
|
|
108
|
+
return { privateKey: hexToMinaBase58PrivateKey(hexKey) };
|
|
109
|
+
}
|
|
110
|
+
const MINA_PRIVATE_KEY_VERSION = 0x5a;
|
|
111
|
+
function hexToMinaBase58PrivateKey(privateKey) {
|
|
112
|
+
if (!/^(0x)?[0-9a-fA-F]{64}$/.test(privateKey)) {
|
|
113
|
+
return privateKey;
|
|
114
|
+
}
|
|
115
|
+
const beScalar = (0, utils_1.hexToBytes)(privateKey.replace(/^0x/, ''));
|
|
116
|
+
const leScalar = Uint8Array.from(beScalar).reverse();
|
|
117
|
+
const payload = concatBytes(Uint8Array.from([MINA_PRIVATE_KEY_VERSION, 0x01]), leScalar);
|
|
118
|
+
const checksum = (0, sha2_1.sha256)((0, sha2_1.sha256)(payload)).slice(0, 4);
|
|
119
|
+
return base58Encode(concatBytes(payload, checksum));
|
|
120
|
+
}
|
|
121
|
+
function concatBytes(...arrays) {
|
|
122
|
+
const total = arrays.reduce((n, a) => n + a.length, 0);
|
|
123
|
+
const out = new Uint8Array(total);
|
|
124
|
+
let offset = 0;
|
|
125
|
+
for (const a of arrays) {
|
|
126
|
+
out.set(a, offset);
|
|
127
|
+
offset += a.length;
|
|
128
|
+
}
|
|
129
|
+
return out;
|
|
130
|
+
}
|
|
131
|
+
const BASE58_ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
|
|
132
|
+
function base58Encode(bytes) {
|
|
133
|
+
let zeros = 0;
|
|
134
|
+
for (let i = 0; i < bytes.length && bytes[i] === 0; i++)
|
|
135
|
+
zeros++;
|
|
136
|
+
let value = 0n;
|
|
137
|
+
for (const byte of bytes) {
|
|
138
|
+
value = value * 256n + BigInt(byte);
|
|
139
|
+
}
|
|
140
|
+
let result = '';
|
|
141
|
+
while (value > 0n) {
|
|
142
|
+
result = BASE58_ALPHABET[Number(value % 58n)] + result;
|
|
143
|
+
value = value / 58n;
|
|
144
|
+
}
|
|
145
|
+
for (let i = 0; i < zeros; i++) {
|
|
146
|
+
result = '1' + result;
|
|
147
|
+
}
|
|
148
|
+
return result || '1';
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=mnemonic-keys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mnemonic-keys.js","sourceRoot":"","sources":["../../src/wallet/mnemonic-keys.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@toon-protocol/connector",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.29.0",
|
|
4
4
|
"description": "Multi-chain ILP connector with EVM, Solana, and Mina settlement",
|
|
5
5
|
"main": "dist/lib.js",
|
|
6
6
|
"types": "dist/lib.d.ts",
|
|
@@ -68,15 +68,17 @@
|
|
|
68
68
|
"test:evm": "jest --testPathPattern='embedded-evm-settlement|per-packet-claims-e2e'",
|
|
69
69
|
"test:embedded": "jest --testPathPattern='test/integration' --testPathIgnorePatterns='docker-|deployment|mesh-topology|full-stack'",
|
|
70
70
|
"test:standalone": "jest --testPathPattern='standalone-(smoke|settlement)-e2e' --forceExit",
|
|
71
|
+
"test:cli": "jest --testPathPattern='cli-e2e' --forceExit",
|
|
71
72
|
"test:standalone-docker": "jest --testPathPattern='standalone-container-e2e' --forceExit",
|
|
72
|
-
"test:standalone-ator-public": "jest --testPathPattern='standalone-ator-public-container-e2e' --forceExit",
|
|
73
|
-
"test:standalone-ator-p2p": "jest --testPathPattern='standalone-ator-public-p2p-container-e2e' --forceExit",
|
|
74
73
|
"test:standalone-allowlist": "jest --testPathPattern='standalone-admin-allowlist-e2e' --forceExit",
|
|
74
|
+
"probe:connector-public": "ts-node --project tsconfig.probe.json ../../scripts/app/ci-acceptance-probe.ts",
|
|
75
|
+
"probe:store": "ts-node --project tsconfig.probe.json ../../scripts/app/ci-acceptance-probe-store.ts",
|
|
76
|
+
"probe:discovery": "ts-node --project tsconfig.probe.json ../../scripts/app/ci-discovery-probe.ts",
|
|
75
77
|
"test:admin-surface": "STANDALONE_DOCKER=true jest --testPathPattern='admin-api-surface-e2e' --forceExit",
|
|
76
78
|
"test:cross-surface": "STANDALONE_DOCKER=true jest --testPathPattern='cross-surface-invariants' --forceExit",
|
|
77
79
|
"test:packet-flow": "STANDALONE_DOCKER=true jest --testPathPattern='packet-flow-invariants' --forceExit",
|
|
78
80
|
"test:per-peer-transport-e2e": "STANDALONE_DOCKER=true jest --testPathPattern=per-peer-transport-cross-surface-e2e --forceExit --testTimeout=300000",
|
|
79
|
-
"test:
|
|
81
|
+
"test:relay-e2e": "jest --testPathPattern='relay-comprehensive-e2e'",
|
|
80
82
|
"lint": "eslint src --ext .ts && npm run lint:inventory",
|
|
81
83
|
"lint:inventory": "ts-node scripts/check-admin-api-inventory.ts",
|
|
82
84
|
"dev": "tsc --watch",
|
|
@@ -85,10 +87,11 @@
|
|
|
85
87
|
"prepublishOnly": "npm run build:publish && npm test"
|
|
86
88
|
},
|
|
87
89
|
"dependencies": {
|
|
88
|
-
"@anyone-protocol/anyone-client": "^1.1.3",
|
|
89
90
|
"@noble/ciphers": "^1.3.0",
|
|
90
91
|
"@noble/curves": "^1.9.0",
|
|
91
92
|
"@noble/hashes": "^1.8.0",
|
|
93
|
+
"@scure/bip32": "^1.7.0",
|
|
94
|
+
"@scure/bip39": "^1.6.0",
|
|
92
95
|
"@solana-program/token": "^0.6.0",
|
|
93
96
|
"@solana/kit": "^3.0.3",
|
|
94
97
|
"@toon-protocol/mina-zkapp": "^0.1.0",
|
|
@@ -98,9 +101,9 @@
|
|
|
98
101
|
"express": "4.18.x",
|
|
99
102
|
"js-yaml": "^4.1.0",
|
|
100
103
|
"netmask": "^2.0.2",
|
|
104
|
+
"nostr-tools": "^2.20.0",
|
|
101
105
|
"pino": "^8.21.0",
|
|
102
106
|
"prom-client": "^15.1.3",
|
|
103
|
-
"socks-proxy-agent": "^8.0.5",
|
|
104
107
|
"tslib": "^2.8.1",
|
|
105
108
|
"ws": "^8.16.0",
|
|
106
109
|
"zod": "^3.25.76"
|
|
@@ -132,9 +135,8 @@
|
|
|
132
135
|
"ai": "^4.3.19",
|
|
133
136
|
"bip39": "^3.1.0",
|
|
134
137
|
"commander": "^12.1.0",
|
|
135
|
-
"inquirer": "^
|
|
138
|
+
"inquirer": "^8.2.7",
|
|
136
139
|
"libsql": "^0.4.7",
|
|
137
|
-
"nostr-tools": "^2.20.0",
|
|
138
140
|
"qrcode": "^1.5.4",
|
|
139
141
|
"sharp": "^0.33.5"
|
|
140
142
|
},
|
|
@@ -142,6 +144,7 @@
|
|
|
142
144
|
"@types/better-sqlite3": "^7.6.12",
|
|
143
145
|
"@types/cors": "^2.8.19",
|
|
144
146
|
"@types/express": "^5.0.6",
|
|
147
|
+
"@types/inquirer": "^8.2.12",
|
|
145
148
|
"@types/jest": "^29.5.12",
|
|
146
149
|
"@types/js-yaml": "^4.0.9",
|
|
147
150
|
"@types/netmask": "^2.0.5",
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
export declare class HsDescMonitorError extends Error {
|
|
2
|
-
constructor(message: string);
|
|
3
|
-
}
|
|
4
|
-
export declare function normalizeHsAddress(addr: string): string;
|
|
5
|
-
export declare function waitForHsDescUpload(opts: {
|
|
6
|
-
controlHost: string;
|
|
7
|
-
controlPort: number;
|
|
8
|
-
address: string;
|
|
9
|
-
timeoutMs: number;
|
|
10
|
-
signal?: AbortSignal;
|
|
11
|
-
}): Promise<void>;
|
|
12
|
-
//# sourceMappingURL=hs-desc-monitor.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hs-desc-monitor.d.ts","sourceRoot":"","sources":["../../src/transport/hs-desc-monitor.ts"],"names":[],"mappings":"AA+BA,qBAAa,kBAAmB,SAAQ,KAAK;gBAC/B,OAAO,EAAE,MAAM;CAI5B;AAOD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKvD;AAoBD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8FhB"}
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.HsDescMonitorError = void 0;
|
|
4
|
-
exports.normalizeHsAddress = normalizeHsAddress;
|
|
5
|
-
exports.waitForHsDescUpload = waitForHsDescUpload;
|
|
6
|
-
const tslib_1 = require("tslib");
|
|
7
|
-
const net_1 = tslib_1.__importDefault(require("net"));
|
|
8
|
-
class HsDescMonitorError extends Error {
|
|
9
|
-
constructor(message) {
|
|
10
|
-
super(message);
|
|
11
|
-
this.name = 'HsDescMonitorError';
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
exports.HsDescMonitorError = HsDescMonitorError;
|
|
15
|
-
function normalizeHsAddress(addr) {
|
|
16
|
-
return addr
|
|
17
|
-
.trim()
|
|
18
|
-
.replace(/\.(anyone|anon|onion)$/i, '')
|
|
19
|
-
.toLowerCase();
|
|
20
|
-
}
|
|
21
|
-
function waitForHsDescUpload(opts) {
|
|
22
|
-
const { controlHost, controlPort, address, timeoutMs, signal } = opts;
|
|
23
|
-
const wanted = normalizeHsAddress(address);
|
|
24
|
-
return new Promise((resolve, reject) => {
|
|
25
|
-
if (signal?.aborted) {
|
|
26
|
-
reject(new HsDescMonitorError('HS_DESC monitor aborted before start'));
|
|
27
|
-
return;
|
|
28
|
-
}
|
|
29
|
-
const socket = net_1.default.createConnection({ host: controlHost, port: controlPort });
|
|
30
|
-
let settled = false;
|
|
31
|
-
let phase = 0;
|
|
32
|
-
let buf = '';
|
|
33
|
-
const onAbort = () => done(new HsDescMonitorError('HS_DESC monitor aborted'));
|
|
34
|
-
const cleanup = () => {
|
|
35
|
-
if (signal)
|
|
36
|
-
signal.removeEventListener('abort', onAbort);
|
|
37
|
-
socket.removeAllListeners();
|
|
38
|
-
socket.destroy();
|
|
39
|
-
};
|
|
40
|
-
const done = (err) => {
|
|
41
|
-
if (settled)
|
|
42
|
-
return;
|
|
43
|
-
settled = true;
|
|
44
|
-
cleanup();
|
|
45
|
-
if (err)
|
|
46
|
-
reject(err);
|
|
47
|
-
else
|
|
48
|
-
resolve();
|
|
49
|
-
};
|
|
50
|
-
if (signal)
|
|
51
|
-
signal.addEventListener('abort', onAbort, { once: true });
|
|
52
|
-
socket.setTimeout(timeoutMs);
|
|
53
|
-
socket.once('timeout', () => done(new HsDescMonitorError('Timed out awaiting HS_DESC UPLOADED')));
|
|
54
|
-
socket.once('error', (err) => done(new HsDescMonitorError(`Control-port socket error: ${err.message}`)));
|
|
55
|
-
socket.once('close', () => done(new HsDescMonitorError('Control port closed connection before HS_DESC UPLOADED')));
|
|
56
|
-
socket.once('connect', () => {
|
|
57
|
-
socket.write('AUTHENTICATE ""\r\n');
|
|
58
|
-
});
|
|
59
|
-
socket.setEncoding('utf8');
|
|
60
|
-
socket.on('data', (chunk) => {
|
|
61
|
-
buf += chunk;
|
|
62
|
-
let nl;
|
|
63
|
-
while ((nl = buf.indexOf('\r\n')) !== -1) {
|
|
64
|
-
const line = buf.slice(0, nl);
|
|
65
|
-
buf = buf.slice(nl + 2);
|
|
66
|
-
handleLine(line);
|
|
67
|
-
if (settled)
|
|
68
|
-
return;
|
|
69
|
-
}
|
|
70
|
-
});
|
|
71
|
-
const handleLine = (line) => {
|
|
72
|
-
if (phase === 0) {
|
|
73
|
-
if (line.startsWith('250')) {
|
|
74
|
-
phase = 1;
|
|
75
|
-
socket.write('SETEVENTS HS_DESC\r\n');
|
|
76
|
-
}
|
|
77
|
-
else {
|
|
78
|
-
done(new HsDescMonitorError(`AUTHENTICATE rejected by control port: ${line}`));
|
|
79
|
-
}
|
|
80
|
-
return;
|
|
81
|
-
}
|
|
82
|
-
if (phase === 1) {
|
|
83
|
-
if (line.startsWith('250')) {
|
|
84
|
-
phase = 2;
|
|
85
|
-
}
|
|
86
|
-
else {
|
|
87
|
-
done(new HsDescMonitorError(`SETEVENTS HS_DESC rejected: ${line}`));
|
|
88
|
-
}
|
|
89
|
-
return;
|
|
90
|
-
}
|
|
91
|
-
if (!line.startsWith('650'))
|
|
92
|
-
return;
|
|
93
|
-
const parts = line.split(/\s+/);
|
|
94
|
-
if (parts[1] !== 'HS_DESC')
|
|
95
|
-
return;
|
|
96
|
-
if (parts[2] !== 'UPLOADED')
|
|
97
|
-
return;
|
|
98
|
-
const evAddr = parts[3];
|
|
99
|
-
if (evAddr !== undefined && normalizeHsAddress(evAddr) === wanted) {
|
|
100
|
-
done();
|
|
101
|
-
}
|
|
102
|
-
};
|
|
103
|
-
});
|
|
104
|
-
}
|
|
105
|
-
//# sourceMappingURL=hs-desc-monitor.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hs-desc-monitor.js","sourceRoot":"","sources":["../../src/transport/hs-desc-monitor.ts"],"names":[],"mappings":"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"}
|