@mtkruto/node 0.1.109 → 0.1.111
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/esm/3_transport.d.ts +1 -0
- package/esm/3_transport.js +1 -0
- package/esm/4_constants.d.ts +1 -1
- package/esm/4_constants.js +1 -1
- package/esm/client/1_client_abstract.js +2 -2
- package/esm/client/4_client.js +3 -1
- package/esm/connection/1_connection_web_socket.js +18 -13
- package/esm/mod.d.ts +2 -6
- package/esm/mod.js +2 -3
- package/esm/storage/0_utilities.js +1 -1
- package/esm/storage/0_utilities_test.d.ts +1 -0
- package/esm/transport/2_transport_provider.d.ts +2 -3
- package/esm/transport/2_transport_provider.js +52 -24
- package/esm/transport/3_transport_provider_web_socket.d.ts +4 -0
- package/esm/transport/3_transport_provider_web_socket.js +24 -0
- package/package.json +1 -1
- package/script/3_transport.d.ts +1 -0
- package/script/3_transport.js +1 -0
- package/script/4_constants.d.ts +1 -1
- package/script/4_constants.js +1 -1
- package/script/client/1_client_abstract.js +1 -1
- package/script/client/4_client.js +3 -1
- package/script/connection/1_connection_web_socket.js +18 -13
- package/script/mod.d.ts +2 -6
- package/script/mod.js +5 -4
- package/script/storage/0_utilities.js +1 -1
- package/script/storage/0_utilities_test.d.ts +1 -0
- package/script/transport/2_transport_provider.d.ts +2 -3
- package/script/transport/2_transport_provider.js +54 -25
- package/script/transport/3_transport_provider_web_socket.d.ts +4 -0
- package/script/transport/3_transport_provider_web_socket.js +28 -0
package/esm/3_transport.d.ts
CHANGED
|
@@ -2,3 +2,4 @@ export * from "./transport/0_transport.js";
|
|
|
2
2
|
export * from "./transport/1_transport_abridged.js";
|
|
3
3
|
export * from "./transport/1_transport_intermediate.js";
|
|
4
4
|
export * from "./transport/2_transport_provider.js";
|
|
5
|
+
export * from "./transport/3_transport_provider_web_socket.js";
|
package/esm/3_transport.js
CHANGED
|
@@ -2,3 +2,4 @@ export * from "./transport/0_transport.js";
|
|
|
2
2
|
export * from "./transport/1_transport_abridged.js";
|
|
3
3
|
export * from "./transport/1_transport_intermediate.js";
|
|
4
4
|
export * from "./transport/2_transport_provider.js";
|
|
5
|
+
export * from "./transport/3_transport_provider_web_socket.js";
|
package/esm/4_constants.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ export declare const PUBLIC_KEYS: PublicKeys;
|
|
|
5
5
|
export declare const VECTOR_CONSTRUCTOR = 481674261;
|
|
6
6
|
export declare const INITIAL_DC: DC;
|
|
7
7
|
export declare const LAYER = 166;
|
|
8
|
-
export declare const APP_VERSION = "MTKruto 0.1.
|
|
8
|
+
export declare const APP_VERSION = "MTKruto 0.1.111";
|
|
9
9
|
export declare const DEVICE_MODEL: string;
|
|
10
10
|
export declare const LANG_CODE: string;
|
|
11
11
|
export declare const LANG_PACK = "";
|
package/esm/4_constants.js
CHANGED
|
@@ -54,7 +54,7 @@ export const PUBLIC_KEYS = Object.freeze([
|
|
|
54
54
|
export const VECTOR_CONSTRUCTOR = 0x1CB5C415;
|
|
55
55
|
export const INITIAL_DC = "2";
|
|
56
56
|
export const LAYER = 166;
|
|
57
|
-
export const APP_VERSION = "MTKruto 0.1.
|
|
57
|
+
export const APP_VERSION = "MTKruto 0.1.111";
|
|
58
58
|
// @ts-ignore: lib
|
|
59
59
|
export const DEVICE_MODEL = typeof dntShim.Deno === "undefined" ? typeof navigator === "undefined" ? typeof process === "undefined" ? "Unknown" : process.platform + "-" + process.arch : navigator.userAgent.split(" ")[0] : dntShim.Deno.build.os + "-" + dntShim.Deno.build.arch;
|
|
60
60
|
export const LANG_CODE = typeof navigator === "undefined" ? "en" : navigator.language.split("-")[0];
|
|
@@ -11,7 +11,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
11
11
|
};
|
|
12
12
|
var _ClientAbstract_dc;
|
|
13
13
|
import { initTgCrypto } from "../0_deps.js";
|
|
14
|
-
import {
|
|
14
|
+
import { transportProviderWebSocket } from "../3_transport.js";
|
|
15
15
|
import { INITIAL_DC } from "../4_constants.js";
|
|
16
16
|
export class ClientAbstract {
|
|
17
17
|
constructor(params) {
|
|
@@ -47,7 +47,7 @@ export class ClientAbstract {
|
|
|
47
47
|
value: void 0
|
|
48
48
|
});
|
|
49
49
|
this.initialDc = params?.initialDc ?? INITIAL_DC;
|
|
50
|
-
this.transportProvider = params?.transportProvider ??
|
|
50
|
+
this.transportProvider = params?.transportProvider ?? transportProviderWebSocket();
|
|
51
51
|
this.cdn = params?.cdn ?? false;
|
|
52
52
|
}
|
|
53
53
|
get dcId() {
|
package/esm/client/4_client.js
CHANGED
|
@@ -237,7 +237,9 @@ export class Client extends ClientAbstract {
|
|
|
237
237
|
}
|
|
238
238
|
}
|
|
239
239
|
async [(_Client_auth = new WeakMap(), _Client_sessionId = new WeakMap(), _Client_state = new WeakMap(), _Client_promises = new WeakMap(), _Client_toAcknowledge = new WeakMap(), _Client_updateState = new WeakMap(), _Client_errorHandler = new WeakMap(), _Client_publicKeys = new WeakMap(), _Client_autoStart = new WeakMap(), _Client_lastPropagatedConnectionState = new WeakMap(), _Client_storageInited = new WeakMap(), _Client_authKeyWasCreated = new WeakMap(), _Client_connectMutex = new WeakMap(), _Client_connectionInited = new WeakMap(), _Client_lastPropagatedAuthorizationState = new WeakMap(), _Client_selfId = new WeakMap(), _Client_lastOutgoing = new WeakMap(), _Client_pingLoopStarted = new WeakMap(), _Client_autoStarted = new WeakMap(), _Client_lastMsgId = new WeakMap(), _Client_handleUpdateQueue = new WeakMap(), _Client_processUpdatesQueue = new WeakMap(), _Client_usernameResolver = new WeakMap(), _Client_handle = new WeakMap(), _Client_instances = new WeakSet(), _Client_propagateConnectionState = function _Client_propagateConnectionState(connectionState) {
|
|
240
|
-
|
|
240
|
+
__classPrivateFieldGet(this, _Client_handleUpdateQueue, "f").add(async () => {
|
|
241
|
+
await __classPrivateFieldGet(this, _Client_handle, "f").call(this, { connectionState }, resolve);
|
|
242
|
+
});
|
|
241
243
|
}, _Client_setAuth = async function _Client_setAuth(key) {
|
|
242
244
|
const hash = await sha1(key);
|
|
243
245
|
const id = bigIntFromBuffer(hash.slice(-8), true, false);
|
|
@@ -9,12 +9,13 @@ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (
|
|
|
9
9
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
10
10
|
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
11
11
|
};
|
|
12
|
-
var _ConnectionWebSocket_instances, _ConnectionWebSocket_webSocket, _ConnectionWebSocket_rMutex, _ConnectionWebSocket_wMutex, _ConnectionWebSocket_buffer, _ConnectionWebSocket_nextResolve, _ConnectionWebSocket_initWs, _ConnectionWebSocket_wasConnected, _ConnectionWebSocket_isConnecting, _ConnectionWebSocket_connectionError;
|
|
12
|
+
var _ConnectionWebSocket_instances, _ConnectionWebSocket_webSocket, _ConnectionWebSocket_rMutex, _ConnectionWebSocket_wMutex, _ConnectionWebSocket_buffer, _ConnectionWebSocket_nextResolve, _ConnectionWebSocket_initWs, _ConnectionWebSocket_wasConnected, _ConnectionWebSocket_isConnecting, _ConnectionWebSocket_connectionError, _ConnectionWebSocket_assertConnected, _ConnectionWebSocket_rejectRead;
|
|
13
13
|
import * as dntShim from "../_dnt.shims.js";
|
|
14
14
|
import { debug, Mutex } from "../0_deps.js";
|
|
15
15
|
import { UNREACHABLE } from "../1_utilities.js";
|
|
16
16
|
import { ConnectionUnframed } from "./0_connection.js";
|
|
17
17
|
const d = debug("ConnectionWebSocket");
|
|
18
|
+
const errConnectionNotOpen = new Error("Connection not open");
|
|
18
19
|
export class ConnectionWebSocket extends ConnectionUnframed {
|
|
19
20
|
constructor(url) {
|
|
20
21
|
super();
|
|
@@ -68,11 +69,10 @@ export class ConnectionWebSocket extends ConnectionUnframed {
|
|
|
68
69
|
}
|
|
69
70
|
}
|
|
70
71
|
async read(p) {
|
|
71
|
-
|
|
72
|
-
throw new Error("Connection not open");
|
|
73
|
-
}
|
|
72
|
+
__classPrivateFieldGet(this, _ConnectionWebSocket_instances, "m", _ConnectionWebSocket_assertConnected).call(this);
|
|
74
73
|
const release = await __classPrivateFieldGet(this, _ConnectionWebSocket_rMutex, "f").acquire();
|
|
75
74
|
try {
|
|
75
|
+
__classPrivateFieldGet(this, _ConnectionWebSocket_instances, "m", _ConnectionWebSocket_assertConnected).call(this);
|
|
76
76
|
if (__classPrivateFieldGet(this, _ConnectionWebSocket_buffer, "f").length < p.length) {
|
|
77
77
|
await new Promise((resolve, reject) => __classPrivateFieldSet(this, _ConnectionWebSocket_nextResolve, [p.length, { resolve, reject }], "f"));
|
|
78
78
|
}
|
|
@@ -83,11 +83,10 @@ export class ConnectionWebSocket extends ConnectionUnframed {
|
|
|
83
83
|
}
|
|
84
84
|
}
|
|
85
85
|
async write(p) {
|
|
86
|
-
|
|
87
|
-
throw new Error("Connection not open");
|
|
88
|
-
}
|
|
86
|
+
__classPrivateFieldGet(this, _ConnectionWebSocket_instances, "m", _ConnectionWebSocket_assertConnected).call(this);
|
|
89
87
|
const release = await __classPrivateFieldGet(this, _ConnectionWebSocket_wMutex, "f").acquire();
|
|
90
88
|
try {
|
|
89
|
+
__classPrivateFieldGet(this, _ConnectionWebSocket_instances, "m", _ConnectionWebSocket_assertConnected).call(this);
|
|
91
90
|
__classPrivateFieldGet(this, _ConnectionWebSocket_webSocket, "f").send(p);
|
|
92
91
|
}
|
|
93
92
|
finally {
|
|
@@ -95,19 +94,16 @@ export class ConnectionWebSocket extends ConnectionUnframed {
|
|
|
95
94
|
}
|
|
96
95
|
}
|
|
97
96
|
close() {
|
|
98
|
-
|
|
99
|
-
throw new Error("Connection not open");
|
|
100
|
-
}
|
|
97
|
+
__classPrivateFieldGet(this, _ConnectionWebSocket_instances, "m", _ConnectionWebSocket_assertConnected).call(this);
|
|
101
98
|
__classPrivateFieldGet(this, _ConnectionWebSocket_webSocket, "f").close(1000, "method");
|
|
102
|
-
|
|
103
|
-
__classPrivateFieldGet(this, _ConnectionWebSocket_nextResolve, "f")[1].reject(new Error("Connection not open"));
|
|
104
|
-
}
|
|
99
|
+
__classPrivateFieldGet(this, _ConnectionWebSocket_instances, "m", _ConnectionWebSocket_rejectRead).call(this);
|
|
105
100
|
}
|
|
106
101
|
}
|
|
107
102
|
_ConnectionWebSocket_webSocket = new WeakMap(), _ConnectionWebSocket_rMutex = new WeakMap(), _ConnectionWebSocket_wMutex = new WeakMap(), _ConnectionWebSocket_buffer = new WeakMap(), _ConnectionWebSocket_nextResolve = new WeakMap(), _ConnectionWebSocket_wasConnected = new WeakMap(), _ConnectionWebSocket_isConnecting = new WeakMap(), _ConnectionWebSocket_connectionError = new WeakMap(), _ConnectionWebSocket_instances = new WeakSet(), _ConnectionWebSocket_initWs = function _ConnectionWebSocket_initWs() {
|
|
108
103
|
const webSocket = new dntShim.WebSocket(this.url, "binary");
|
|
109
104
|
const mutex = new Mutex();
|
|
110
105
|
webSocket.addEventListener("close", () => {
|
|
106
|
+
__classPrivateFieldGet(this, _ConnectionWebSocket_instances, "m", _ConnectionWebSocket_rejectRead).call(this);
|
|
111
107
|
this.stateChangeHandler?.(false);
|
|
112
108
|
});
|
|
113
109
|
webSocket.addEventListener("open", () => {
|
|
@@ -138,4 +134,13 @@ _ConnectionWebSocket_webSocket = new WeakMap(), _ConnectionWebSocket_rMutex = ne
|
|
|
138
134
|
}
|
|
139
135
|
});
|
|
140
136
|
return webSocket;
|
|
137
|
+
}, _ConnectionWebSocket_assertConnected = function _ConnectionWebSocket_assertConnected() {
|
|
138
|
+
if (!this.connected) {
|
|
139
|
+
throw errConnectionNotOpen;
|
|
140
|
+
}
|
|
141
|
+
}, _ConnectionWebSocket_rejectRead = function _ConnectionWebSocket_rejectRead() {
|
|
142
|
+
if (__classPrivateFieldGet(this, _ConnectionWebSocket_nextResolve, "f") != null) {
|
|
143
|
+
__classPrivateFieldGet(this, _ConnectionWebSocket_nextResolve, "f")[1].reject(errConnectionNotOpen);
|
|
144
|
+
__classPrivateFieldSet(this, _ConnectionWebSocket_nextResolve, null, "f");
|
|
145
|
+
}
|
|
141
146
|
};
|
package/esm/mod.d.ts
CHANGED
|
@@ -1,9 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
export declare const utils: {
|
|
4
|
-
checkPassword: typeof checkPassword;
|
|
5
|
-
getRandomId: typeof getRandomId;
|
|
6
|
-
};
|
|
1
|
+
export { getRandomId } from "./1_utilities.js";
|
|
2
|
+
export { checkPassword } from "./client/0_password.js";
|
|
7
3
|
export * from "./2_connection.js";
|
|
8
4
|
export * from "./3_storage.js";
|
|
9
5
|
export * from "./3_transport.js";
|
package/esm/mod.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
export const utils = { checkPassword, getRandomId };
|
|
1
|
+
export { getRandomId } from "./1_utilities.js";
|
|
2
|
+
export { checkPassword } from "./client/0_password.js";
|
|
4
3
|
export * from "./2_connection.js";
|
|
5
4
|
export * from "./3_storage.js";
|
|
6
5
|
export * from "./3_transport.js";
|
|
@@ -88,7 +88,7 @@ export function fromString(string) {
|
|
|
88
88
|
}
|
|
89
89
|
}
|
|
90
90
|
export function fixKey(key) {
|
|
91
|
-
return key.map((v) => typeof v === "bigint" ? String(v) : v);
|
|
91
|
+
return key.map((v) => typeof v === "bigint" ? String(ValueType.BigInt) + String(v) : typeof v === "string" ? String(ValueType.String) + v : v);
|
|
92
92
|
}
|
|
93
93
|
// Source: https://gist.github.com/inexorabletash/5462871
|
|
94
94
|
// deno-lint-ignore no-explicit-any
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Connection } from "../2_connection.js";
|
|
2
2
|
import { Transport } from "./0_transport.js";
|
|
3
3
|
export type DC = "1" | "2" | "3" | "4" | "5" | "1-test" | "2-test" | "3-test";
|
|
4
|
+
export declare function getDcIps(dc: DC, version: "ipv4" | "ipv6"): [string, ...string[]];
|
|
4
5
|
export interface TransportProviderParams {
|
|
5
6
|
dc: DC;
|
|
6
7
|
cdn: boolean;
|
|
@@ -10,6 +11,4 @@ export type TransportProvider = (params: TransportProviderParams) => {
|
|
|
10
11
|
transport: Transport;
|
|
11
12
|
dcId: number;
|
|
12
13
|
};
|
|
13
|
-
export declare
|
|
14
|
-
wss?: boolean;
|
|
15
|
-
}) => TransportProvider;
|
|
14
|
+
export declare function getDcId(dc: DC, cdn: boolean): number;
|
|
@@ -1,26 +1,54 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
1
|
+
import { UNREACHABLE } from "../1_utilities.js";
|
|
2
|
+
export function getDcIps(dc, version) {
|
|
3
|
+
switch (version) {
|
|
4
|
+
case "ipv4":
|
|
5
|
+
switch (dc) {
|
|
6
|
+
case "1":
|
|
7
|
+
return ["149.154.175.50"];
|
|
8
|
+
case "2":
|
|
9
|
+
return ["149.154.167.51", "95.161.76.100"];
|
|
10
|
+
case "3":
|
|
11
|
+
return ["149.154.175.100"];
|
|
12
|
+
case "4":
|
|
13
|
+
return ["149.154.167.91"];
|
|
14
|
+
case "5":
|
|
15
|
+
return ["149.154.171.5"];
|
|
16
|
+
case "1-test":
|
|
17
|
+
return ["149.154.175.10"];
|
|
18
|
+
case "2-test":
|
|
19
|
+
return ["149.154.167.40"];
|
|
20
|
+
case "3-test":
|
|
21
|
+
return ["149.154.175.117"];
|
|
22
|
+
default:
|
|
23
|
+
UNREACHABLE();
|
|
24
|
+
}
|
|
25
|
+
break;
|
|
26
|
+
case "ipv6":
|
|
27
|
+
switch (dc) {
|
|
28
|
+
case "1":
|
|
29
|
+
return ["2001:b28:f23d:f001::a"];
|
|
30
|
+
case "2":
|
|
31
|
+
return ["2001:67c:4e8:f002::a"];
|
|
32
|
+
case "3":
|
|
33
|
+
return ["2001:b28:f23d:f003::a"];
|
|
34
|
+
case "4":
|
|
35
|
+
return ["2001:67c:4e8:f004::a"];
|
|
36
|
+
case "5":
|
|
37
|
+
return ["2001:b28:f23f:f005::a"];
|
|
38
|
+
case "1-test":
|
|
39
|
+
return ["2001:b28:f23d:f001::e"];
|
|
40
|
+
case "2-test":
|
|
41
|
+
return ["2001:67c:4e8:f002::e"];
|
|
42
|
+
case "3-test":
|
|
43
|
+
return ["2001:b28:f23d:f003::e"];
|
|
44
|
+
default:
|
|
45
|
+
UNREACHABLE();
|
|
46
|
+
}
|
|
47
|
+
break;
|
|
48
|
+
default:
|
|
49
|
+
UNREACHABLE();
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
export function getDcId(dc, cdn) {
|
|
14
53
|
return Number(dc[0]) + (dc.endsWith("-test") ? 10000 : 0) * (cdn ? -1 : 1);
|
|
15
54
|
}
|
|
16
|
-
export const webSocketTransportProvider = (params) => {
|
|
17
|
-
return ({ dc, cdn }) => {
|
|
18
|
-
params ??= {};
|
|
19
|
-
params.wss ??= typeof location !== "undefined" && location.protocol == "http:" && location.hostname != "localhost" ? false : true;
|
|
20
|
-
const url = `${params.wss ? "wss" : "ws"}://${dcToNameMap[dc]}${cdn ? "-1" : ""}.web.telegram.org/${dc.endsWith("-test") ? "apiws_test" : "apiws"}`;
|
|
21
|
-
const connection = new ConnectionWebSocket(url);
|
|
22
|
-
const transport = new TransportIntermediate(connection, true);
|
|
23
|
-
const dcId = getDcId(dc, cdn);
|
|
24
|
-
return { connection, transport, dcId };
|
|
25
|
-
};
|
|
26
|
-
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ConnectionWebSocket } from "../2_connection.js";
|
|
2
|
+
import { TransportIntermediate } from "./1_transport_intermediate.js";
|
|
3
|
+
import { getDcId } from "./2_transport_provider.js";
|
|
4
|
+
const dcToNameMap = {
|
|
5
|
+
"1": "pluto",
|
|
6
|
+
"1-test": "pluto",
|
|
7
|
+
"2": "venus",
|
|
8
|
+
"2-test": "venus",
|
|
9
|
+
"3": "aurora",
|
|
10
|
+
"3-test": "aurora",
|
|
11
|
+
"4": "vesta",
|
|
12
|
+
"5": "flora",
|
|
13
|
+
};
|
|
14
|
+
export const transportProviderWebSocket = (params) => {
|
|
15
|
+
return ({ dc, cdn }) => {
|
|
16
|
+
params ??= {};
|
|
17
|
+
params.wss ??= typeof location !== "undefined" && location.protocol == "http:" && location.hostname != "localhost" ? false : true;
|
|
18
|
+
const url = `${params.wss ? "wss" : "ws"}://${dcToNameMap[dc]}${cdn ? "-1" : ""}.web.telegram.org/${dc.endsWith("-test") ? "apiws_test" : "apiws"}`;
|
|
19
|
+
const connection = new ConnectionWebSocket(url);
|
|
20
|
+
const transport = new TransportIntermediate(connection, true);
|
|
21
|
+
const dcId = getDcId(dc, cdn);
|
|
22
|
+
return { connection, transport, dcId };
|
|
23
|
+
};
|
|
24
|
+
};
|
package/package.json
CHANGED
package/script/3_transport.d.ts
CHANGED
|
@@ -2,3 +2,4 @@ export * from "./transport/0_transport.js";
|
|
|
2
2
|
export * from "./transport/1_transport_abridged.js";
|
|
3
3
|
export * from "./transport/1_transport_intermediate.js";
|
|
4
4
|
export * from "./transport/2_transport_provider.js";
|
|
5
|
+
export * from "./transport/3_transport_provider_web_socket.js";
|
package/script/3_transport.js
CHANGED
|
@@ -18,3 +18,4 @@ __exportStar(require("./transport/0_transport.js"), exports);
|
|
|
18
18
|
__exportStar(require("./transport/1_transport_abridged.js"), exports);
|
|
19
19
|
__exportStar(require("./transport/1_transport_intermediate.js"), exports);
|
|
20
20
|
__exportStar(require("./transport/2_transport_provider.js"), exports);
|
|
21
|
+
__exportStar(require("./transport/3_transport_provider_web_socket.js"), exports);
|
package/script/4_constants.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ export declare const PUBLIC_KEYS: PublicKeys;
|
|
|
5
5
|
export declare const VECTOR_CONSTRUCTOR = 481674261;
|
|
6
6
|
export declare const INITIAL_DC: DC;
|
|
7
7
|
export declare const LAYER = 166;
|
|
8
|
-
export declare const APP_VERSION = "MTKruto 0.1.
|
|
8
|
+
export declare const APP_VERSION = "MTKruto 0.1.111";
|
|
9
9
|
export declare const DEVICE_MODEL: string;
|
|
10
10
|
export declare const LANG_CODE: string;
|
|
11
11
|
export declare const LANG_PACK = "";
|
package/script/4_constants.js
CHANGED
|
@@ -80,7 +80,7 @@ exports.PUBLIC_KEYS = Object.freeze([
|
|
|
80
80
|
exports.VECTOR_CONSTRUCTOR = 0x1CB5C415;
|
|
81
81
|
exports.INITIAL_DC = "2";
|
|
82
82
|
exports.LAYER = 166;
|
|
83
|
-
exports.APP_VERSION = "MTKruto 0.1.
|
|
83
|
+
exports.APP_VERSION = "MTKruto 0.1.111";
|
|
84
84
|
// @ts-ignore: lib
|
|
85
85
|
exports.DEVICE_MODEL = typeof dntShim.Deno === "undefined" ? typeof navigator === "undefined" ? typeof process === "undefined" ? "Unknown" : process.platform + "-" + process.arch : navigator.userAgent.split(" ")[0] : dntShim.Deno.build.os + "-" + dntShim.Deno.build.arch;
|
|
86
86
|
exports.LANG_CODE = typeof navigator === "undefined" ? "en" : navigator.language.split("-")[0];
|
|
@@ -50,7 +50,7 @@ class ClientAbstract {
|
|
|
50
50
|
value: void 0
|
|
51
51
|
});
|
|
52
52
|
this.initialDc = params?.initialDc ?? _4_constants_js_1.INITIAL_DC;
|
|
53
|
-
this.transportProvider = params?.transportProvider ?? (0, _3_transport_js_1.
|
|
53
|
+
this.transportProvider = params?.transportProvider ?? (0, _3_transport_js_1.transportProviderWebSocket)();
|
|
54
54
|
this.cdn = params?.cdn ?? false;
|
|
55
55
|
}
|
|
56
56
|
get dcId() {
|
|
@@ -241,7 +241,9 @@ class Client extends _1_client_abstract_js_1.ClientAbstract {
|
|
|
241
241
|
}
|
|
242
242
|
}
|
|
243
243
|
async [(_Client_auth = new WeakMap(), _Client_sessionId = new WeakMap(), _Client_state = new WeakMap(), _Client_promises = new WeakMap(), _Client_toAcknowledge = new WeakMap(), _Client_updateState = new WeakMap(), _Client_errorHandler = new WeakMap(), _Client_publicKeys = new WeakMap(), _Client_autoStart = new WeakMap(), _Client_lastPropagatedConnectionState = new WeakMap(), _Client_storageInited = new WeakMap(), _Client_authKeyWasCreated = new WeakMap(), _Client_connectMutex = new WeakMap(), _Client_connectionInited = new WeakMap(), _Client_lastPropagatedAuthorizationState = new WeakMap(), _Client_selfId = new WeakMap(), _Client_lastOutgoing = new WeakMap(), _Client_pingLoopStarted = new WeakMap(), _Client_autoStarted = new WeakMap(), _Client_lastMsgId = new WeakMap(), _Client_handleUpdateQueue = new WeakMap(), _Client_processUpdatesQueue = new WeakMap(), _Client_usernameResolver = new WeakMap(), _Client_handle = new WeakMap(), _Client_instances = new WeakSet(), _Client_propagateConnectionState = function _Client_propagateConnectionState(connectionState) {
|
|
244
|
-
|
|
244
|
+
__classPrivateFieldGet(this, _Client_handleUpdateQueue, "f").add(async () => {
|
|
245
|
+
await __classPrivateFieldGet(this, _Client_handle, "f").call(this, { connectionState }, _0_utilities_js_1.resolve);
|
|
246
|
+
});
|
|
245
247
|
}, _Client_setAuth = async function _Client_setAuth(key) {
|
|
246
248
|
const hash = await (0, _1_utilities_js_1.sha1)(key);
|
|
247
249
|
const id = (0, _1_utilities_js_1.bigIntFromBuffer)(hash.slice(-8), true, false);
|
|
@@ -33,7 +33,7 @@ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (
|
|
|
33
33
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
34
34
|
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
35
35
|
};
|
|
36
|
-
var _ConnectionWebSocket_instances, _ConnectionWebSocket_webSocket, _ConnectionWebSocket_rMutex, _ConnectionWebSocket_wMutex, _ConnectionWebSocket_buffer, _ConnectionWebSocket_nextResolve, _ConnectionWebSocket_initWs, _ConnectionWebSocket_wasConnected, _ConnectionWebSocket_isConnecting, _ConnectionWebSocket_connectionError;
|
|
36
|
+
var _ConnectionWebSocket_instances, _ConnectionWebSocket_webSocket, _ConnectionWebSocket_rMutex, _ConnectionWebSocket_wMutex, _ConnectionWebSocket_buffer, _ConnectionWebSocket_nextResolve, _ConnectionWebSocket_initWs, _ConnectionWebSocket_wasConnected, _ConnectionWebSocket_isConnecting, _ConnectionWebSocket_connectionError, _ConnectionWebSocket_assertConnected, _ConnectionWebSocket_rejectRead;
|
|
37
37
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
38
|
exports.ConnectionWebSocket = void 0;
|
|
39
39
|
const dntShim = __importStar(require("../_dnt.shims.js"));
|
|
@@ -41,6 +41,7 @@ const _0_deps_js_1 = require("../0_deps.js");
|
|
|
41
41
|
const _1_utilities_js_1 = require("../1_utilities.js");
|
|
42
42
|
const _0_connection_js_1 = require("./0_connection.js");
|
|
43
43
|
const d = (0, _0_deps_js_1.debug)("ConnectionWebSocket");
|
|
44
|
+
const errConnectionNotOpen = new Error("Connection not open");
|
|
44
45
|
class ConnectionWebSocket extends _0_connection_js_1.ConnectionUnframed {
|
|
45
46
|
constructor(url) {
|
|
46
47
|
super();
|
|
@@ -94,11 +95,10 @@ class ConnectionWebSocket extends _0_connection_js_1.ConnectionUnframed {
|
|
|
94
95
|
}
|
|
95
96
|
}
|
|
96
97
|
async read(p) {
|
|
97
|
-
|
|
98
|
-
throw new Error("Connection not open");
|
|
99
|
-
}
|
|
98
|
+
__classPrivateFieldGet(this, _ConnectionWebSocket_instances, "m", _ConnectionWebSocket_assertConnected).call(this);
|
|
100
99
|
const release = await __classPrivateFieldGet(this, _ConnectionWebSocket_rMutex, "f").acquire();
|
|
101
100
|
try {
|
|
101
|
+
__classPrivateFieldGet(this, _ConnectionWebSocket_instances, "m", _ConnectionWebSocket_assertConnected).call(this);
|
|
102
102
|
if (__classPrivateFieldGet(this, _ConnectionWebSocket_buffer, "f").length < p.length) {
|
|
103
103
|
await new Promise((resolve, reject) => __classPrivateFieldSet(this, _ConnectionWebSocket_nextResolve, [p.length, { resolve, reject }], "f"));
|
|
104
104
|
}
|
|
@@ -109,11 +109,10 @@ class ConnectionWebSocket extends _0_connection_js_1.ConnectionUnframed {
|
|
|
109
109
|
}
|
|
110
110
|
}
|
|
111
111
|
async write(p) {
|
|
112
|
-
|
|
113
|
-
throw new Error("Connection not open");
|
|
114
|
-
}
|
|
112
|
+
__classPrivateFieldGet(this, _ConnectionWebSocket_instances, "m", _ConnectionWebSocket_assertConnected).call(this);
|
|
115
113
|
const release = await __classPrivateFieldGet(this, _ConnectionWebSocket_wMutex, "f").acquire();
|
|
116
114
|
try {
|
|
115
|
+
__classPrivateFieldGet(this, _ConnectionWebSocket_instances, "m", _ConnectionWebSocket_assertConnected).call(this);
|
|
117
116
|
__classPrivateFieldGet(this, _ConnectionWebSocket_webSocket, "f").send(p);
|
|
118
117
|
}
|
|
119
118
|
finally {
|
|
@@ -121,13 +120,9 @@ class ConnectionWebSocket extends _0_connection_js_1.ConnectionUnframed {
|
|
|
121
120
|
}
|
|
122
121
|
}
|
|
123
122
|
close() {
|
|
124
|
-
|
|
125
|
-
throw new Error("Connection not open");
|
|
126
|
-
}
|
|
123
|
+
__classPrivateFieldGet(this, _ConnectionWebSocket_instances, "m", _ConnectionWebSocket_assertConnected).call(this);
|
|
127
124
|
__classPrivateFieldGet(this, _ConnectionWebSocket_webSocket, "f").close(1000, "method");
|
|
128
|
-
|
|
129
|
-
__classPrivateFieldGet(this, _ConnectionWebSocket_nextResolve, "f")[1].reject(new Error("Connection not open"));
|
|
130
|
-
}
|
|
125
|
+
__classPrivateFieldGet(this, _ConnectionWebSocket_instances, "m", _ConnectionWebSocket_rejectRead).call(this);
|
|
131
126
|
}
|
|
132
127
|
}
|
|
133
128
|
exports.ConnectionWebSocket = ConnectionWebSocket;
|
|
@@ -135,6 +130,7 @@ _ConnectionWebSocket_webSocket = new WeakMap(), _ConnectionWebSocket_rMutex = ne
|
|
|
135
130
|
const webSocket = new dntShim.WebSocket(this.url, "binary");
|
|
136
131
|
const mutex = new _0_deps_js_1.Mutex();
|
|
137
132
|
webSocket.addEventListener("close", () => {
|
|
133
|
+
__classPrivateFieldGet(this, _ConnectionWebSocket_instances, "m", _ConnectionWebSocket_rejectRead).call(this);
|
|
138
134
|
this.stateChangeHandler?.(false);
|
|
139
135
|
});
|
|
140
136
|
webSocket.addEventListener("open", () => {
|
|
@@ -165,4 +161,13 @@ _ConnectionWebSocket_webSocket = new WeakMap(), _ConnectionWebSocket_rMutex = ne
|
|
|
165
161
|
}
|
|
166
162
|
});
|
|
167
163
|
return webSocket;
|
|
164
|
+
}, _ConnectionWebSocket_assertConnected = function _ConnectionWebSocket_assertConnected() {
|
|
165
|
+
if (!this.connected) {
|
|
166
|
+
throw errConnectionNotOpen;
|
|
167
|
+
}
|
|
168
|
+
}, _ConnectionWebSocket_rejectRead = function _ConnectionWebSocket_rejectRead() {
|
|
169
|
+
if (__classPrivateFieldGet(this, _ConnectionWebSocket_nextResolve, "f") != null) {
|
|
170
|
+
__classPrivateFieldGet(this, _ConnectionWebSocket_nextResolve, "f")[1].reject(errConnectionNotOpen);
|
|
171
|
+
__classPrivateFieldSet(this, _ConnectionWebSocket_nextResolve, null, "f");
|
|
172
|
+
}
|
|
168
173
|
};
|
package/script/mod.d.ts
CHANGED
|
@@ -1,9 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
export declare const utils: {
|
|
4
|
-
checkPassword: typeof checkPassword;
|
|
5
|
-
getRandomId: typeof getRandomId;
|
|
6
|
-
};
|
|
1
|
+
export { getRandomId } from "./1_utilities.js";
|
|
2
|
+
export { checkPassword } from "./client/0_password.js";
|
|
7
3
|
export * from "./2_connection.js";
|
|
8
4
|
export * from "./3_storage.js";
|
|
9
5
|
export * from "./3_transport.js";
|
package/script/mod.js
CHANGED
|
@@ -26,10 +26,11 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
26
26
|
return result;
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.errors = exports.SYSTEM_VERSION = exports.SYSTEM_LANG_CODE = exports.LAYER = exports.LANG_PACK = exports.LANG_CODE = exports.INITIAL_DC = exports.DEVICE_MODEL = exports.APP_VERSION = exports.
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
29
|
+
exports.errors = exports.SYSTEM_VERSION = exports.SYSTEM_LANG_CODE = exports.LAYER = exports.LANG_PACK = exports.LANG_CODE = exports.INITIAL_DC = exports.DEVICE_MODEL = exports.APP_VERSION = exports.checkPassword = exports.getRandomId = void 0;
|
|
30
|
+
var _1_utilities_js_1 = require("./1_utilities.js");
|
|
31
|
+
Object.defineProperty(exports, "getRandomId", { enumerable: true, get: function () { return _1_utilities_js_1.getRandomId; } });
|
|
32
|
+
var _0_password_js_1 = require("./client/0_password.js");
|
|
33
|
+
Object.defineProperty(exports, "checkPassword", { enumerable: true, get: function () { return _0_password_js_1.checkPassword; } });
|
|
33
34
|
__exportStar(require("./2_connection.js"), exports);
|
|
34
35
|
__exportStar(require("./3_storage.js"), exports);
|
|
35
36
|
__exportStar(require("./3_transport.js"), exports);
|
|
@@ -93,7 +93,7 @@ function fromString(string) {
|
|
|
93
93
|
}
|
|
94
94
|
exports.fromString = fromString;
|
|
95
95
|
function fixKey(key) {
|
|
96
|
-
return key.map((v) => typeof v === "bigint" ? String(v) : v);
|
|
96
|
+
return key.map((v) => typeof v === "bigint" ? String(ValueType.BigInt) + String(v) : typeof v === "string" ? String(ValueType.String) + v : v);
|
|
97
97
|
}
|
|
98
98
|
exports.fixKey = fixKey;
|
|
99
99
|
// Source: https://gist.github.com/inexorabletash/5462871
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Connection } from "../2_connection.js";
|
|
2
2
|
import { Transport } from "./0_transport.js";
|
|
3
3
|
export type DC = "1" | "2" | "3" | "4" | "5" | "1-test" | "2-test" | "3-test";
|
|
4
|
+
export declare function getDcIps(dc: DC, version: "ipv4" | "ipv6"): [string, ...string[]];
|
|
4
5
|
export interface TransportProviderParams {
|
|
5
6
|
dc: DC;
|
|
6
7
|
cdn: boolean;
|
|
@@ -10,6 +11,4 @@ export type TransportProvider = (params: TransportProviderParams) => {
|
|
|
10
11
|
transport: Transport;
|
|
11
12
|
dcId: number;
|
|
12
13
|
};
|
|
13
|
-
export declare
|
|
14
|
-
wss?: boolean;
|
|
15
|
-
}) => TransportProvider;
|
|
14
|
+
export declare function getDcId(dc: DC, cdn: boolean): number;
|
|
@@ -1,30 +1,59 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
const
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
3
|
+
exports.getDcId = exports.getDcIps = void 0;
|
|
4
|
+
const _1_utilities_js_1 = require("../1_utilities.js");
|
|
5
|
+
function getDcIps(dc, version) {
|
|
6
|
+
switch (version) {
|
|
7
|
+
case "ipv4":
|
|
8
|
+
switch (dc) {
|
|
9
|
+
case "1":
|
|
10
|
+
return ["149.154.175.50"];
|
|
11
|
+
case "2":
|
|
12
|
+
return ["149.154.167.51", "95.161.76.100"];
|
|
13
|
+
case "3":
|
|
14
|
+
return ["149.154.175.100"];
|
|
15
|
+
case "4":
|
|
16
|
+
return ["149.154.167.91"];
|
|
17
|
+
case "5":
|
|
18
|
+
return ["149.154.171.5"];
|
|
19
|
+
case "1-test":
|
|
20
|
+
return ["149.154.175.10"];
|
|
21
|
+
case "2-test":
|
|
22
|
+
return ["149.154.167.40"];
|
|
23
|
+
case "3-test":
|
|
24
|
+
return ["149.154.175.117"];
|
|
25
|
+
default:
|
|
26
|
+
(0, _1_utilities_js_1.UNREACHABLE)();
|
|
27
|
+
}
|
|
28
|
+
break;
|
|
29
|
+
case "ipv6":
|
|
30
|
+
switch (dc) {
|
|
31
|
+
case "1":
|
|
32
|
+
return ["2001:b28:f23d:f001::a"];
|
|
33
|
+
case "2":
|
|
34
|
+
return ["2001:67c:4e8:f002::a"];
|
|
35
|
+
case "3":
|
|
36
|
+
return ["2001:b28:f23d:f003::a"];
|
|
37
|
+
case "4":
|
|
38
|
+
return ["2001:67c:4e8:f004::a"];
|
|
39
|
+
case "5":
|
|
40
|
+
return ["2001:b28:f23f:f005::a"];
|
|
41
|
+
case "1-test":
|
|
42
|
+
return ["2001:b28:f23d:f001::e"];
|
|
43
|
+
case "2-test":
|
|
44
|
+
return ["2001:67c:4e8:f002::e"];
|
|
45
|
+
case "3-test":
|
|
46
|
+
return ["2001:b28:f23d:f003::e"];
|
|
47
|
+
default:
|
|
48
|
+
(0, _1_utilities_js_1.UNREACHABLE)();
|
|
49
|
+
}
|
|
50
|
+
break;
|
|
51
|
+
default:
|
|
52
|
+
(0, _1_utilities_js_1.UNREACHABLE)();
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
exports.getDcIps = getDcIps;
|
|
16
56
|
function getDcId(dc, cdn) {
|
|
17
57
|
return Number(dc[0]) + (dc.endsWith("-test") ? 10000 : 0) * (cdn ? -1 : 1);
|
|
18
58
|
}
|
|
19
|
-
|
|
20
|
-
return ({ dc, cdn }) => {
|
|
21
|
-
params ??= {};
|
|
22
|
-
params.wss ??= typeof location !== "undefined" && location.protocol == "http:" && location.hostname != "localhost" ? false : true;
|
|
23
|
-
const url = `${params.wss ? "wss" : "ws"}://${dcToNameMap[dc]}${cdn ? "-1" : ""}.web.telegram.org/${dc.endsWith("-test") ? "apiws_test" : "apiws"}`;
|
|
24
|
-
const connection = new _2_connection_js_1.ConnectionWebSocket(url);
|
|
25
|
-
const transport = new _1_transport_intermediate_js_1.TransportIntermediate(connection, true);
|
|
26
|
-
const dcId = getDcId(dc, cdn);
|
|
27
|
-
return { connection, transport, dcId };
|
|
28
|
-
};
|
|
29
|
-
};
|
|
30
|
-
exports.webSocketTransportProvider = webSocketTransportProvider;
|
|
59
|
+
exports.getDcId = getDcId;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.transportProviderWebSocket = void 0;
|
|
4
|
+
const _2_connection_js_1 = require("../2_connection.js");
|
|
5
|
+
const _1_transport_intermediate_js_1 = require("./1_transport_intermediate.js");
|
|
6
|
+
const _2_transport_provider_js_1 = require("./2_transport_provider.js");
|
|
7
|
+
const dcToNameMap = {
|
|
8
|
+
"1": "pluto",
|
|
9
|
+
"1-test": "pluto",
|
|
10
|
+
"2": "venus",
|
|
11
|
+
"2-test": "venus",
|
|
12
|
+
"3": "aurora",
|
|
13
|
+
"3-test": "aurora",
|
|
14
|
+
"4": "vesta",
|
|
15
|
+
"5": "flora",
|
|
16
|
+
};
|
|
17
|
+
const transportProviderWebSocket = (params) => {
|
|
18
|
+
return ({ dc, cdn }) => {
|
|
19
|
+
params ??= {};
|
|
20
|
+
params.wss ??= typeof location !== "undefined" && location.protocol == "http:" && location.hostname != "localhost" ? false : true;
|
|
21
|
+
const url = `${params.wss ? "wss" : "ws"}://${dcToNameMap[dc]}${cdn ? "-1" : ""}.web.telegram.org/${dc.endsWith("-test") ? "apiws_test" : "apiws"}`;
|
|
22
|
+
const connection = new _2_connection_js_1.ConnectionWebSocket(url);
|
|
23
|
+
const transport = new _1_transport_intermediate_js_1.TransportIntermediate(connection, true);
|
|
24
|
+
const dcId = (0, _2_transport_provider_js_1.getDcId)(dc, cdn);
|
|
25
|
+
return { connection, transport, dcId };
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
exports.transportProviderWebSocket = transportProviderWebSocket;
|