telegram-tghub-better-new 0.7.2 → 0.7.3
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/CryptoFile.d.ts +1 -1
- package/CryptoFile.js +1 -1
- package/Helpers.d.ts +1 -7
- package/Helpers.js +15 -28
- package/Password.d.ts +1 -0
- package/Password.js +10 -9
- package/Utils.d.ts +1 -0
- package/Utils.js +10 -5
- package/Version.d.ts +1 -1
- package/Version.js +1 -1
- package/client/2fa.js +3 -2
- package/client/TelegramClient.d.ts +1 -5
- package/client/auth.d.ts +1 -0
- package/client/chats.d.ts +0 -4
- package/client/downloads.d.ts +1 -0
- package/client/downloads.js +13 -12
- package/client/fs.d.ts +10 -1
- package/client/fs.js +11 -15
- package/client/index.d.ts +1 -2
- package/client/index.js +1 -3
- package/client/os.d.ts +5 -2
- package/client/os.js +8 -25
- package/client/path.d.ts +7 -2
- package/client/path.js +6 -5
- package/client/telegramBaseClient.js +1 -1
- package/client/uploads.d.ts +1 -0
- package/client/uploads.js +8 -7
- package/crypto/AuthKey.d.ts +1 -0
- package/crypto/AuthKey.js +5 -4
- package/crypto/CTR.d.ts +1 -0
- package/crypto/CTR.js +3 -2
- package/crypto/IGE.d.ts +1 -0
- package/crypto/IGE.js +2 -1
- package/crypto/RSA.d.ts +1 -0
- package/crypto/RSA.js +2 -1
- package/crypto/crypto.d.ts +1 -0
- package/crypto/crypto.js +8 -7
- package/errors/Common.d.ts +1 -0
- package/errors/Common.js +0 -3
- package/events/CallbackQuery.d.ts +1 -0
- package/extensions/BinaryReader.d.ts +1 -0
- package/extensions/BinaryWriter.d.ts +1 -0
- package/extensions/BinaryWriter.js +2 -1
- package/extensions/MessagePacker.d.ts +1 -0
- package/extensions/MessagePacker.js +5 -4
- package/extensions/PromisedNetSockets.d.ts +6 -22
- package/extensions/PromisedNetSockets.js +6 -176
- package/extensions/PromisedWebSockets.d.ts +1 -0
- package/extensions/PromisedWebSockets.js +8 -7
- package/extensions/net.d.ts +8 -1
- package/extensions/net.js +9 -15
- package/extensions/socks.d.ts +3 -3
- package/extensions/socks.js +3 -17
- package/inspect.d.ts +3 -1
- package/inspect.js +3 -2
- package/network/Authenticator.js +8 -7
- package/network/MTProtoPlainSender.js +4 -3
- package/network/MTProtoSender.js +2 -1
- package/network/MTProtoState.d.ts +1 -0
- package/network/MTProtoState.js +13 -12
- package/network/RequestState.d.ts +1 -0
- package/network/connection/Connection.d.ts +1 -0
- package/network/connection/TCPAbridged.d.ts +1 -0
- package/network/connection/TCPAbridged.js +9 -8
- package/network/connection/TCPFull.d.ts +1 -0
- package/network/connection/TCPFull.js +7 -6
- package/network/connection/TCPMTProxy.d.ts +1 -0
- package/network/connection/TCPMTProxy.js +24 -23
- package/network/connection/TCPObfuscated.d.ts +1 -0
- package/network/connection/TCPObfuscated.js +18 -17
- package/package.json +1 -4
- package/sessions/CacheApiSession.d.ts +1 -18
- package/sessions/CacheApiSession.js +3 -1
- package/sessions/StoreSession.js +2 -1
- package/sessions/StringSession.d.ts +1 -0
- package/sessions/StringSession.js +7 -6
- package/sessions/localStorage.d.ts +3 -1
- package/sessions/localStorage.js +6 -1
- package/tl/AllTLObjects.d.ts +1 -1
- package/tl/AllTLObjects.js +1 -1
- package/tl/MTProtoRequest.d.ts +1 -0
- package/tl/api.js +15 -13
- package/tl/apiTl.js +112 -442
- package/tl/core/GZIPPacked.d.ts +1 -0
- package/tl/core/GZIPPacked.js +5 -4
- package/tl/core/RPCResult.d.ts +1 -0
- package/tl/custom/button.d.ts +1 -4
- package/tl/custom/button.js +2 -1
- package/tl/custom/chatGetter.d.ts +0 -4
- package/tl/custom/dialog.d.ts +0 -4
- package/tl/custom/draft.d.ts +0 -4
- package/tl/custom/file.d.ts +0 -4
- package/tl/custom/forward.d.ts +0 -4
- package/tl/custom/inlineResult.d.ts +0 -4
- package/tl/custom/inlineResults.d.ts +0 -4
- package/tl/custom/message.d.ts +1 -4
- package/tl/custom/message.js +3 -1
- package/tl/custom/messageButton.d.ts +1 -5
- package/tl/custom/senderGetter.d.ts +0 -4
- package/tl/generationHelpers.d.ts +1 -0
- package/tl/generationHelpers.js +10 -9
- package/tl/schemaTl.js +2 -1
- package/tl/types-generator/template.d.ts +1 -6
- package/tl/types-generator/template.js +2 -0
- package/client/additional.d.ts +0 -96
- package/client/additional.js +0 -889
- package/client/model.d.ts +0 -8
- package/client/model.js +0 -362316
package/CryptoFile.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import * as crypto from "crypto";
|
|
1
|
+
import * as crypto from "./crypto/crypto";
|
|
2
2
|
export default crypto;
|
package/CryptoFile.js
CHANGED
|
@@ -23,5 +23,5 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
const crypto = __importStar(require("crypto"));
|
|
26
|
+
const crypto = __importStar(require("./crypto/crypto"));
|
|
27
27
|
exports.default = crypto;
|
package/Helpers.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Buffer } from "buffer/";
|
|
1
2
|
import bigInt from "big-integer";
|
|
2
3
|
import type { EntityLike } from "./define";
|
|
3
4
|
import type { Api } from "./tl";
|
|
@@ -132,13 +133,6 @@ export declare function getRandomInt(min: number, max: number): number;
|
|
|
132
133
|
* @returns {Promise}
|
|
133
134
|
*/
|
|
134
135
|
export declare const sleep: (ms: number, isUnref?: boolean) => Promise<unknown>;
|
|
135
|
-
/**
|
|
136
|
-
* Sleeps a specified amount of time
|
|
137
|
-
* @param ms time in milliseconds
|
|
138
|
-
* @param isUnref make a timer unref'ed
|
|
139
|
-
* @returns {Promise}
|
|
140
|
-
*/
|
|
141
|
-
export declare const asleep: (ms: number, isUnref?: boolean) => Promise<unknown>;
|
|
142
136
|
/**
|
|
143
137
|
* Helper to export two buffers of same length
|
|
144
138
|
* @returns {Buffer}
|
package/Helpers.js
CHANGED
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports._EntityType = exports.TotalList = exports.
|
|
6
|
+
exports._EntityType = exports.TotalList = exports.sleep = exports.isArrayLike = void 0;
|
|
7
7
|
exports.readBigIntFromBuffer = readBigIntFromBuffer;
|
|
8
8
|
exports.generateRandomBigInt = generateRandomBigInt;
|
|
9
9
|
exports.escapeRegex = escapeRegex;
|
|
@@ -28,6 +28,7 @@ exports.getRandomInt = getRandomInt;
|
|
|
28
28
|
exports.bufferXor = bufferXor;
|
|
29
29
|
exports.crc32 = crc32;
|
|
30
30
|
exports._entityType = _entityType;
|
|
31
|
+
const buffer_1 = require("buffer/");
|
|
31
32
|
const big_integer_1 = __importDefault(require("big-integer"));
|
|
32
33
|
const CryptoFile_1 = __importDefault(require("./CryptoFile"));
|
|
33
34
|
const platform_1 = require("./platform");
|
|
@@ -39,7 +40,7 @@ const platform_1 = require("./platform");
|
|
|
39
40
|
* @returns {bigInt.BigInteger}
|
|
40
41
|
*/
|
|
41
42
|
function readBigIntFromBuffer(buffer, little = true, signed = false) {
|
|
42
|
-
let randBuffer = Buffer.from(buffer);
|
|
43
|
+
let randBuffer = buffer_1.Buffer.from(buffer);
|
|
43
44
|
const bytesNumber = randBuffer.length;
|
|
44
45
|
if (little) {
|
|
45
46
|
randBuffer = randBuffer.reverse();
|
|
@@ -123,7 +124,7 @@ function toSignedLittleBuffer(big, number = 8) {
|
|
|
123
124
|
byteArray[i] = bigNumber.shiftRight(8 * i).and(255);
|
|
124
125
|
}
|
|
125
126
|
// smh hacks
|
|
126
|
-
return Buffer.from(byteArray);
|
|
127
|
+
return buffer_1.Buffer.from(byteArray);
|
|
127
128
|
}
|
|
128
129
|
/**
|
|
129
130
|
* converts a big int to a buffer
|
|
@@ -149,7 +150,7 @@ function readBufferFromBigInt(bigIntVar, bytesNumber, little = true, signed = fa
|
|
|
149
150
|
.add(bigIntVar);
|
|
150
151
|
}
|
|
151
152
|
const hex = bigIntVar.toString(16).padStart(bytesNumber * 2, "0");
|
|
152
|
-
let buffer = Buffer.from(hex, "hex");
|
|
153
|
+
let buffer = buffer_1.Buffer.from(hex, "hex");
|
|
153
154
|
if (little) {
|
|
154
155
|
buffer = buffer.reverse();
|
|
155
156
|
}
|
|
@@ -186,7 +187,7 @@ function bigIntMod(n, m) {
|
|
|
186
187
|
* @returns {Buffer}
|
|
187
188
|
*/
|
|
188
189
|
function generateRandomBytes(count) {
|
|
189
|
-
return Buffer.from(CryptoFile_1.default.randomBytes(count));
|
|
190
|
+
return buffer_1.Buffer.from(CryptoFile_1.default.randomBytes(count));
|
|
190
191
|
}
|
|
191
192
|
/**
|
|
192
193
|
* Calculate the key based on Telegram guidelines, specifying whether it's the client or not
|
|
@@ -264,12 +265,12 @@ async function generateKeyDataFromNonce(serverNonceBigInt, newNonceBigInt) {
|
|
|
264
265
|
const serverNonce = toSignedLittleBuffer(serverNonceBigInt, 16);
|
|
265
266
|
const newNonce = toSignedLittleBuffer(newNonceBigInt, 32);
|
|
266
267
|
const [hash1, hash2, hash3] = await Promise.all([
|
|
267
|
-
sha1(Buffer.concat([newNonce, serverNonce])),
|
|
268
|
-
sha1(Buffer.concat([serverNonce, newNonce])),
|
|
269
|
-
sha1(Buffer.concat([newNonce, newNonce])),
|
|
268
|
+
sha1(buffer_1.Buffer.concat([newNonce, serverNonce])),
|
|
269
|
+
sha1(buffer_1.Buffer.concat([serverNonce, newNonce])),
|
|
270
|
+
sha1(buffer_1.Buffer.concat([newNonce, newNonce])),
|
|
270
271
|
]);
|
|
271
|
-
const keyBuffer = Buffer.concat([hash1, hash2.slice(0, 12)]);
|
|
272
|
-
const ivBuffer = Buffer.concat([
|
|
272
|
+
const keyBuffer = buffer_1.Buffer.concat([hash1, hash2.slice(0, 12)]);
|
|
273
|
+
const ivBuffer = buffer_1.Buffer.concat([
|
|
273
274
|
hash2.slice(12, 20),
|
|
274
275
|
hash3,
|
|
275
276
|
newNonce.slice(0, 4),
|
|
@@ -280,7 +281,7 @@ async function generateKeyDataFromNonce(serverNonceBigInt, newNonceBigInt) {
|
|
|
280
281
|
};
|
|
281
282
|
}
|
|
282
283
|
function convertToLittle(buf) {
|
|
283
|
-
const correct = Buffer.alloc(buf.length * 4);
|
|
284
|
+
const correct = buffer_1.Buffer.alloc(buf.length * 4);
|
|
284
285
|
for (let i = 0; i < buf.length; i++) {
|
|
285
286
|
correct.writeUInt32BE(buf[i], i * 4);
|
|
286
287
|
}
|
|
@@ -394,20 +395,6 @@ const sleep = (ms, isUnref = false) => new Promise((resolve) => isUnref && platf
|
|
|
394
395
|
? setTimeout(resolve, ms).unref()
|
|
395
396
|
: setTimeout(resolve, ms));
|
|
396
397
|
exports.sleep = sleep;
|
|
397
|
-
/**
|
|
398
|
-
* Sleeps a specified amount of time
|
|
399
|
-
* @param ms time in milliseconds
|
|
400
|
-
* @param isUnref make a timer unref'ed
|
|
401
|
-
* @returns {Promise}
|
|
402
|
-
*/
|
|
403
|
-
const asleep = (ms, isUnref = true) => {
|
|
404
|
-
return new Promise((resolve) => {
|
|
405
|
-
isUnref && platform_1.isNode
|
|
406
|
-
? setTimeout(() => resolve(null), ms).unref()
|
|
407
|
-
: setTimeout(() => resolve(null), ms);
|
|
408
|
-
});
|
|
409
|
-
};
|
|
410
|
-
exports.asleep = asleep;
|
|
411
398
|
/**
|
|
412
399
|
* Helper to export two buffers of same length
|
|
413
400
|
* @returns {Buffer}
|
|
@@ -417,7 +404,7 @@ function bufferXor(a, b) {
|
|
|
417
404
|
for (let i = 0; i < a.length; i++) {
|
|
418
405
|
res.push(a[i] ^ b[i]);
|
|
419
406
|
}
|
|
420
|
-
return Buffer.from(res);
|
|
407
|
+
return buffer_1.Buffer.from(res);
|
|
421
408
|
}
|
|
422
409
|
// Taken from https://stackoverflow.com/questions/18638900/javascript-crc32/18639999#18639999
|
|
423
410
|
function makeCRCTable() {
|
|
@@ -437,8 +424,8 @@ function crc32(buf) {
|
|
|
437
424
|
if (!crcTable) {
|
|
438
425
|
crcTable = makeCRCTable();
|
|
439
426
|
}
|
|
440
|
-
if (!Buffer.isBuffer(buf)) {
|
|
441
|
-
buf = Buffer.from(buf);
|
|
427
|
+
if (!buffer_1.Buffer.isBuffer(buf)) {
|
|
428
|
+
buf = buffer_1.Buffer.from(buf);
|
|
442
429
|
}
|
|
443
430
|
let crc = -1;
|
|
444
431
|
for (let index = 0; index < buf.length; index++) {
|
package/Password.d.ts
CHANGED
package/Password.js
CHANGED
|
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.computeCheck = computeCheck;
|
|
7
7
|
exports.computeDigest = computeDigest;
|
|
8
|
+
const buffer_1 = require("buffer/");
|
|
8
9
|
const tl_1 = require("./tl");
|
|
9
10
|
const Helpers_1 = require("./Helpers");
|
|
10
11
|
const big_integer_1 = __importDefault(require("big-integer"));
|
|
@@ -67,7 +68,7 @@ function checkPrimeAndGoodCheck(prime, g) {
|
|
|
67
68
|
* @param g{number}
|
|
68
69
|
*/
|
|
69
70
|
function checkPrimeAndGood(primeBytes, g) {
|
|
70
|
-
const goodPrime = Buffer.from([
|
|
71
|
+
const goodPrime = buffer_1.Buffer.from([
|
|
71
72
|
0xc7, 0x1c, 0xae, 0xb9, 0xc6, 0xb1, 0xc9, 0x04, 0x8e, 0x6c, 0x52, 0x2f,
|
|
72
73
|
0x70, 0xf1, 0x3f, 0x73, 0x98, 0x0d, 0x40, 0x23, 0x8e, 0x3e, 0x21, 0xc1,
|
|
73
74
|
0x49, 0x34, 0xd0, 0x37, 0x56, 0x3d, 0x93, 0x0f, 0x48, 0x19, 0x8a, 0x0a,
|
|
@@ -114,7 +115,7 @@ function isGoodLarge(number, p) {
|
|
|
114
115
|
* @returns {Buffer}
|
|
115
116
|
*/
|
|
116
117
|
function numBytesForHash(number) {
|
|
117
|
-
return Buffer.concat([Buffer.alloc(SIZE_FOR_HASH - number.length), number]);
|
|
118
|
+
return buffer_1.Buffer.concat([buffer_1.Buffer.alloc(SIZE_FOR_HASH - number.length), number]);
|
|
118
119
|
}
|
|
119
120
|
/**
|
|
120
121
|
*
|
|
@@ -163,10 +164,10 @@ function pbkdf2sha512(password, salt, iterations) {
|
|
|
163
164
|
* @returns {Buffer|*}
|
|
164
165
|
*/
|
|
165
166
|
async function computeHash(algo, password) {
|
|
166
|
-
const hash1 = await (0, Helpers_1.sha256)(Buffer.concat([algo.salt1, Buffer.from(password, "utf-8"), algo.salt1]));
|
|
167
|
-
const hash2 = await (0, Helpers_1.sha256)(Buffer.concat([algo.salt2, hash1, algo.salt2]));
|
|
167
|
+
const hash1 = await (0, Helpers_1.sha256)(buffer_1.Buffer.concat([algo.salt1, buffer_1.Buffer.from(password, "utf-8"), algo.salt1]));
|
|
168
|
+
const hash2 = await (0, Helpers_1.sha256)(buffer_1.Buffer.concat([algo.salt2, hash1, algo.salt2]));
|
|
168
169
|
const hash3 = await pbkdf2sha512(hash2, algo.salt1, 100000);
|
|
169
|
-
return (0, Helpers_1.sha256)(Buffer.concat([algo.salt2, hash3, algo.salt2]));
|
|
170
|
+
return (0, Helpers_1.sha256)(buffer_1.Buffer.concat([algo.salt2, hash3, algo.salt2]));
|
|
170
171
|
}
|
|
171
172
|
/**
|
|
172
173
|
*
|
|
@@ -217,7 +218,7 @@ async function computeCheck(request, password) {
|
|
|
217
218
|
const gForHash = bigNumForHash((0, big_integer_1.default)(g));
|
|
218
219
|
const bForHash = numBytesForHash(srp_B);
|
|
219
220
|
const gX = (0, Helpers_1.modExp)((0, big_integer_1.default)(g), x, p);
|
|
220
|
-
const k = (0, Helpers_1.readBigIntFromBuffer)(await (0, Helpers_1.sha256)(Buffer.concat([pForHash, gForHash])), false);
|
|
221
|
+
const k = (0, Helpers_1.readBigIntFromBuffer)(await (0, Helpers_1.sha256)(buffer_1.Buffer.concat([pForHash, gForHash])), false);
|
|
221
222
|
const kgX = (0, Helpers_1.bigIntMod)(k.multiply(gX), p);
|
|
222
223
|
const generateAndCheckRandom = async () => {
|
|
223
224
|
const randomSize = 256;
|
|
@@ -228,7 +229,7 @@ async function computeCheck(request, password) {
|
|
|
228
229
|
const A = (0, Helpers_1.modExp)((0, big_integer_1.default)(g), a, p);
|
|
229
230
|
if (isGoodModExpFirst(A, p)) {
|
|
230
231
|
const aForHash = bigNumForHash(A);
|
|
231
|
-
const u = (0, Helpers_1.readBigIntFromBuffer)(await (0, Helpers_1.sha256)(Buffer.concat([aForHash, bForHash])), false);
|
|
232
|
+
const u = (0, Helpers_1.readBigIntFromBuffer)(await (0, Helpers_1.sha256)(buffer_1.Buffer.concat([aForHash, bForHash])), false);
|
|
232
233
|
if (u.greater((0, big_integer_1.default)(0))) {
|
|
233
234
|
return {
|
|
234
235
|
a: a,
|
|
@@ -254,7 +255,7 @@ async function computeCheck(request, password) {
|
|
|
254
255
|
(0, Helpers_1.sha256)(algo.salt1),
|
|
255
256
|
(0, Helpers_1.sha256)(algo.salt2),
|
|
256
257
|
]);
|
|
257
|
-
const M1 = await (0, Helpers_1.sha256)(Buffer.concat([
|
|
258
|
+
const M1 = await (0, Helpers_1.sha256)(buffer_1.Buffer.concat([
|
|
258
259
|
xor(pSha, gSha),
|
|
259
260
|
salt1Sha,
|
|
260
261
|
salt2Sha,
|
|
@@ -264,7 +265,7 @@ async function computeCheck(request, password) {
|
|
|
264
265
|
]));
|
|
265
266
|
return new tl_1.Api.InputCheckPasswordSRP({
|
|
266
267
|
srpId: srpId,
|
|
267
|
-
A: Buffer.from(aForHash),
|
|
268
|
+
A: buffer_1.Buffer.from(aForHash),
|
|
268
269
|
M1: M1,
|
|
269
270
|
});
|
|
270
271
|
}
|
package/Utils.d.ts
CHANGED
package/Utils.js
CHANGED
|
@@ -34,6 +34,7 @@ exports.resolveInviteLink = resolveInviteLink;
|
|
|
34
34
|
exports.parseUsername = parseUsername;
|
|
35
35
|
exports.rtrim = rtrim;
|
|
36
36
|
exports.getDisplayName = getDisplayName;
|
|
37
|
+
const buffer_1 = require("buffer/");
|
|
37
38
|
const big_integer_1 = __importDefault(require("big-integer"));
|
|
38
39
|
const mime_1 = __importDefault(require("mime"));
|
|
39
40
|
const html_1 = require("./extensions/html");
|
|
@@ -99,8 +100,8 @@ function* chunks(arr, size = 100) {
|
|
|
99
100
|
}
|
|
100
101
|
const USERNAME_RE = new RegExp("@|(?:https?:\\/\\/)?(?:www\\.)?" +
|
|
101
102
|
"(?:telegram\\.(?:me|dog)|t\\.me)\\/(@|joinchat\\/)?", "i");
|
|
102
|
-
const JPEG_HEADER = Buffer.from("ffd8ffe000104a46494600010100000100010000ffdb004300281c1e231e19282321232d2b28303c64413c37373c7b585d4964918099968f808c8aa0b4e6c3a0aadaad8a8cc8ffcbdaeef5ffffff9bc1fffffffaffe6fdfff8ffdb0043012b2d2d3c353c76414176f8a58ca5f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8ffc00011080000000003012200021101031101ffc4001f0000010501010101010100000000000000000102030405060708090a0bffc400b5100002010303020403050504040000017d01020300041105122131410613516107227114328191a1082342b1c11552d1f02433627282090a161718191a25262728292a3435363738393a434445464748494a535455565758595a636465666768696a737475767778797a838485868788898a92939495969798999aa2a3a4a5a6a7a8a9aab2b3b4b5b6b7b8b9bac2c3c4c5c6c7c8c9cad2d3d4d5d6d7d8d9dae1e2e3e4e5e6e7e8e9eaf1f2f3f4f5f6f7f8f9faffc4001f0100030101010101010101010000000000000102030405060708090a0bffc400b51100020102040403040705040400010277000102031104052131061241510761711322328108144291a1b1c109233352f0156272d10a162434e125f11718191a262728292a35363738393a434445464748494a535455565758595a636465666768696a737475767778797a82838485868788898a92939495969798999aa2a3a4a5a6a7a8a9aab2b3b4b5b6b7b8b9bac2c3c4c5c6c7c8c9cad2d3d4d5d6d7d8d9dae2e3e4e5e6e7e8e9eaf2f3f4f5f6f7f8f9faffda000c03010002110311003f00", "hex");
|
|
103
|
-
const JPEG_FOOTER = Buffer.from("ffd9", "hex");
|
|
103
|
+
const JPEG_HEADER = buffer_1.Buffer.from("ffd8ffe000104a46494600010100000100010000ffdb004300281c1e231e19282321232d2b28303c64413c37373c7b585d4964918099968f808c8aa0b4e6c3a0aadaad8a8cc8ffcbdaeef5ffffff9bc1fffffffaffe6fdfff8ffdb0043012b2d2d3c353c76414176f8a58ca5f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8ffc00011080000000003012200021101031101ffc4001f0000010501010101010100000000000000000102030405060708090a0bffc400b5100002010303020403050504040000017d01020300041105122131410613516107227114328191a1082342b1c11552d1f02433627282090a161718191a25262728292a3435363738393a434445464748494a535455565758595a636465666768696a737475767778797a838485868788898a92939495969798999aa2a3a4a5a6a7a8a9aab2b3b4b5b6b7b8b9bac2c3c4c5c6c7c8c9cad2d3d4d5d6d7d8d9dae1e2e3e4e5e6e7e8e9eaf1f2f3f4f5f6f7f8f9faffc4001f0100030101010101010101010000000000000102030405060708090a0bffc400b51100020102040403040705040400010277000102031104052131061241510761711322328108144291a1b1c109233352f0156272d10a162434e125f11718191a262728292a35363738393a434445464748494a535455565758595a636465666768696a737475767778797a82838485868788898a92939495969798999aa2a3a4a5a6a7a8a9aab2b3b4b5b6b7b8b9bac2c3c4c5c6c7c8c9cad2d3d4d5d6d7d8d9dae2e3e4e5e6e7e8e9eaf2f3f4f5f6f7f8f9faffda000c03010002110311003f00", "hex");
|
|
104
|
+
const JPEG_FOOTER = buffer_1.Buffer.from("ffd9", "hex");
|
|
104
105
|
const TG_JOIN_RE = new RegExp("tg:\\/\\/(join)\\?invite=", "i");
|
|
105
106
|
const VALID_USERNAME_RE = new RegExp("^([a-z]((?!__)[\\w\\d]){3,30}[a-z\\d]|gif|vid|" +
|
|
106
107
|
"pic|bing|wiki|imdb|bold|vote|like|coub)$", "i");
|
|
@@ -446,10 +447,10 @@ function strippedPhotoToJpg(stripped) {
|
|
|
446
447
|
if (stripped.length < 3 || stripped[0] !== 1) {
|
|
447
448
|
return stripped;
|
|
448
449
|
}
|
|
449
|
-
const header = Buffer.from(JPEG_HEADER);
|
|
450
|
+
const header = buffer_1.Buffer.from(JPEG_HEADER);
|
|
450
451
|
header[164] = stripped[1];
|
|
451
452
|
header[166] = stripped[2];
|
|
452
|
-
return Buffer.concat([header, stripped.slice(3), JPEG_FOOTER]);
|
|
453
|
+
return buffer_1.Buffer.concat([header, stripped.slice(3), JPEG_FOOTER]);
|
|
453
454
|
}
|
|
454
455
|
/*CONTEST
|
|
455
456
|
function getInputLocation(location) {
|
|
@@ -675,7 +676,11 @@ function isVideo(file) {
|
|
|
675
676
|
*/
|
|
676
677
|
function getAttributes(file, { attributes = null, mimeType = undefined, forceDocument = false, voiceNote = false, videoNote = false, supportsStreaming = false, thumb = null, }) {
|
|
677
678
|
var _a, _b, _c, _d;
|
|
678
|
-
const name = typeof file == "string"
|
|
679
|
+
const name = typeof file == "string"
|
|
680
|
+
? file
|
|
681
|
+
: "name" in file
|
|
682
|
+
? file.name || "unnamed"
|
|
683
|
+
: "unnamed";
|
|
679
684
|
if (mimeType === undefined) {
|
|
680
685
|
mimeType = mime_1.default.getType(name) || "application/octet-stream";
|
|
681
686
|
}
|
package/Version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const version = "
|
|
1
|
+
export declare const version = "10.1.1";
|
package/Version.js
CHANGED
package/client/2fa.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.updateTwoFaSettings = updateTwoFaSettings;
|
|
4
|
+
const buffer_1 = require("buffer/");
|
|
4
5
|
const Helpers_1 = require("../Helpers");
|
|
5
6
|
const Password_1 = require("../Password");
|
|
6
7
|
const tl_1 = require("../tl");
|
|
@@ -51,7 +52,7 @@ async function updateTwoFaSettings(client, { isCheckPassword, currentPassword, n
|
|
|
51
52
|
}
|
|
52
53
|
const pwd = await client.invoke(new tl_1.Api.account.GetPassword());
|
|
53
54
|
if (!(pwd.newAlgo instanceof tl_1.Api.PasswordKdfAlgoUnknown)) {
|
|
54
|
-
pwd.newAlgo.salt1 = Buffer.concat([
|
|
55
|
+
pwd.newAlgo.salt1 = buffer_1.Buffer.concat([
|
|
55
56
|
pwd.newAlgo.salt1,
|
|
56
57
|
(0, Helpers_1.generateRandomBytes)(32),
|
|
57
58
|
]);
|
|
@@ -76,7 +77,7 @@ async function updateTwoFaSettings(client, { isCheckPassword, currentPassword, n
|
|
|
76
77
|
newAlgo: pwd.newAlgo,
|
|
77
78
|
newPasswordHash: newPassword
|
|
78
79
|
? await (0, Password_1.computeDigest)(pwd.newAlgo, newPassword)
|
|
79
|
-
: Buffer.alloc(0),
|
|
80
|
+
: buffer_1.Buffer.alloc(0),
|
|
80
81
|
hint,
|
|
81
82
|
email,
|
|
82
83
|
// not explained what it does and it seems to always be set to empty in tdesktop
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Buffer } from "buffer/";
|
|
1
2
|
import { TelegramBaseClient, TelegramClientParams } from "./telegramBaseClient";
|
|
2
3
|
import * as authMethods from "./auth";
|
|
3
4
|
import * as downloadMethods from "./downloads";
|
|
@@ -18,7 +19,6 @@ import { Album, AlbumEvent } from "../events/Album";
|
|
|
18
19
|
import { CallbackQuery, CallbackQueryEvent } from "../events/CallbackQuery";
|
|
19
20
|
import { EditedMessage, EditedMessageEvent } from "../events/EditedMessage";
|
|
20
21
|
import { DeletedMessage, DeletedMessageEvent } from "../events/DeletedMessage";
|
|
21
|
-
import { inspect } from "../inspect";
|
|
22
22
|
/**
|
|
23
23
|
* The TelegramClient uses several methods in different files to provide all the common functionality in a nice interface.</br>
|
|
24
24
|
* **In short, to create a client you must do:**
|
|
@@ -1032,10 +1032,6 @@ export declare class TelegramClient extends TelegramBaseClient {
|
|
|
1032
1032
|
_removeSender(dcId: number): void;
|
|
1033
1033
|
/** @hidden */
|
|
1034
1034
|
_getResponseMessage(req: any, result: any, inputChat: any): Api.TypeMessage | Map<number, Api.Message> | (Api.Message | undefined)[] | undefined;
|
|
1035
|
-
/** @hidden */
|
|
1036
|
-
[inspect.custom](): {
|
|
1037
|
-
[key: string]: any;
|
|
1038
|
-
};
|
|
1039
1035
|
/**
|
|
1040
1036
|
* Small hack for using it in browsers
|
|
1041
1037
|
*/
|
package/client/auth.d.ts
CHANGED
package/client/chats.d.ts
CHANGED
|
@@ -3,7 +3,6 @@ import type { EntityLike } from "../define";
|
|
|
3
3
|
import { TotalList } from "../Helpers";
|
|
4
4
|
import { RequestIter } from "../requestIter";
|
|
5
5
|
import { Api } from "../tl";
|
|
6
|
-
import { inspect } from "../inspect";
|
|
7
6
|
interface ParticipantsIterInterface {
|
|
8
7
|
entity: EntityLike;
|
|
9
8
|
filter: any;
|
|
@@ -14,9 +13,6 @@ interface ParticipantsIterInterface {
|
|
|
14
13
|
export declare class _ParticipantsIter extends RequestIter {
|
|
15
14
|
private filterEntity;
|
|
16
15
|
private requests?;
|
|
17
|
-
[inspect.custom](): {
|
|
18
|
-
[key: string]: any;
|
|
19
|
-
};
|
|
20
16
|
_init({ entity, filter, offset, search, showTotal, }: ParticipantsIterInterface): Promise<boolean | void>;
|
|
21
17
|
_loadNextChunk(): Promise<boolean | undefined>;
|
|
22
18
|
[Symbol.asyncIterator](): AsyncIterator<Api.User, any, undefined>;
|
package/client/downloads.d.ts
CHANGED
package/client/downloads.js
CHANGED
|
@@ -43,6 +43,7 @@ exports._downloadWebDocument = _downloadWebDocument;
|
|
|
43
43
|
exports._downloadCachedPhotoSize = _downloadCachedPhotoSize;
|
|
44
44
|
exports._downloadPhoto = _downloadPhoto;
|
|
45
45
|
exports.downloadProfilePhoto = downloadProfilePhoto;
|
|
46
|
+
const buffer_1 = require("buffer/");
|
|
46
47
|
const tl_1 = require("../tl");
|
|
47
48
|
const Utils_1 = require("../Utils");
|
|
48
49
|
const Helpers_1 = require("../Helpers");
|
|
@@ -142,7 +143,7 @@ exports.DirectDownloadIter = DirectDownloadIter;
|
|
|
142
143
|
class GenericDownloadIter extends DirectDownloadIter {
|
|
143
144
|
async _loadNextChunk() {
|
|
144
145
|
// 1. Fetch enough for one chunk
|
|
145
|
-
let data = Buffer.alloc(0);
|
|
146
|
+
let data = buffer_1.Buffer.alloc(0);
|
|
146
147
|
// 1.1. ``bad`` is how much into the data we have we need to offset
|
|
147
148
|
const bad = this.request.offset.mod(this.request.limit).toJSNumber();
|
|
148
149
|
const before = this.request.offset;
|
|
@@ -152,7 +153,7 @@ class GenericDownloadIter extends DirectDownloadIter {
|
|
|
152
153
|
while (!done && data.length - bad < this._chunkSize) {
|
|
153
154
|
const current = await this._request();
|
|
154
155
|
this.request.offset = this.request.offset.add(this.request.limit);
|
|
155
|
-
data = Buffer.concat([data, current]);
|
|
156
|
+
data = buffer_1.Buffer.concat([data, current]);
|
|
156
157
|
done = current.length < this.request.limit;
|
|
157
158
|
}
|
|
158
159
|
// 1.3 Restore our last desired offset
|
|
@@ -237,8 +238,8 @@ function iterDownload(client, { file, offset = big_integer_1.default.zero, strid
|
|
|
237
238
|
});
|
|
238
239
|
}
|
|
239
240
|
function getWriter(outputFile) {
|
|
240
|
-
if (!outputFile || Buffer.isBuffer(outputFile)) {
|
|
241
|
-
return new extensions_1.BinaryWriter(Buffer.alloc(0));
|
|
241
|
+
if (!outputFile || buffer_1.Buffer.isBuffer(outputFile)) {
|
|
242
|
+
return new extensions_1.BinaryWriter(buffer_1.Buffer.alloc(0));
|
|
242
243
|
}
|
|
243
244
|
else if (typeof outputFile == "string") {
|
|
244
245
|
// We want to make sure that the path exists.
|
|
@@ -262,7 +263,7 @@ function returnWriterValue(writer) {
|
|
|
262
263
|
return path_1.default.resolve(writer.path);
|
|
263
264
|
}
|
|
264
265
|
else {
|
|
265
|
-
return Buffer.from(writer.path);
|
|
266
|
+
return buffer_1.Buffer.from(writer.path);
|
|
266
267
|
}
|
|
267
268
|
}
|
|
268
269
|
}
|
|
@@ -388,19 +389,19 @@ async function downloadMedia(client, messageOrMedia, outputFile, thumb, progress
|
|
|
388
389
|
return _downloadWebDocument(client, media, {});
|
|
389
390
|
}
|
|
390
391
|
else {
|
|
391
|
-
return Buffer.alloc(0);
|
|
392
|
+
return buffer_1.Buffer.alloc(0);
|
|
392
393
|
}
|
|
393
394
|
}
|
|
394
395
|
/** @hidden */
|
|
395
396
|
async function _downloadDocument(client, doc, outputFile, date, thumb, progressCallback, msgData) {
|
|
396
397
|
if (doc instanceof tl_1.Api.MessageMediaDocument) {
|
|
397
398
|
if (!doc.document) {
|
|
398
|
-
return Buffer.alloc(0);
|
|
399
|
+
return buffer_1.Buffer.alloc(0);
|
|
399
400
|
}
|
|
400
401
|
doc = doc.document;
|
|
401
402
|
}
|
|
402
403
|
if (!(doc instanceof tl_1.Api.Document)) {
|
|
403
|
-
return Buffer.alloc(0);
|
|
404
|
+
return buffer_1.Buffer.alloc(0);
|
|
404
405
|
}
|
|
405
406
|
let size;
|
|
406
407
|
if (thumb == undefined) {
|
|
@@ -529,17 +530,17 @@ function getProperFilename(file, fileType, extension, date) {
|
|
|
529
530
|
async function _downloadPhoto(client, photo, file, date, thumb, progressCallback) {
|
|
530
531
|
if (photo instanceof tl_1.Api.MessageMediaPhoto) {
|
|
531
532
|
if (photo.photo instanceof tl_1.Api.PhotoEmpty || !photo.photo) {
|
|
532
|
-
return Buffer.alloc(0);
|
|
533
|
+
return buffer_1.Buffer.alloc(0);
|
|
533
534
|
}
|
|
534
535
|
photo = photo.photo;
|
|
535
536
|
}
|
|
536
537
|
if (!(photo instanceof tl_1.Api.Photo)) {
|
|
537
|
-
return Buffer.alloc(0);
|
|
538
|
+
return buffer_1.Buffer.alloc(0);
|
|
538
539
|
}
|
|
539
540
|
const photoSizes = [...(photo.sizes || []), ...(photo.videoSizes || [])];
|
|
540
541
|
const size = getThumb(photoSizes, thumb);
|
|
541
542
|
if (!size || size instanceof tl_1.Api.PhotoSizeEmpty) {
|
|
542
|
-
return Buffer.alloc(0);
|
|
543
|
+
return buffer_1.Buffer.alloc(0);
|
|
543
544
|
}
|
|
544
545
|
if (!date) {
|
|
545
546
|
date = Date.now();
|
|
@@ -595,7 +596,7 @@ async function downloadProfilePhoto(client, entity, fileParams) {
|
|
|
595
596
|
});
|
|
596
597
|
}
|
|
597
598
|
else {
|
|
598
|
-
return Buffer.alloc(0);
|
|
599
|
+
return buffer_1.Buffer.alloc(0);
|
|
599
600
|
}
|
|
600
601
|
return client.downloadFile(loc, {
|
|
601
602
|
outputFile: fileParams.outputFile,
|
package/client/fs.d.ts
CHANGED
|
@@ -1 +1,10 @@
|
|
|
1
|
-
export
|
|
1
|
+
export declare const promises: {
|
|
2
|
+
lstat: (...args: any) => any;
|
|
3
|
+
stat: (...args: any) => any;
|
|
4
|
+
readFile: (...args: any) => any;
|
|
5
|
+
open: (...args: any) => any;
|
|
6
|
+
};
|
|
7
|
+
export declare const createWriteStream: any;
|
|
8
|
+
export declare const WriteStream: any;
|
|
9
|
+
export declare const lstatSync: any;
|
|
10
|
+
export declare const existsSync: any;
|
package/client/fs.js
CHANGED
|
@@ -1,17 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
|
|
3
|
+
exports.existsSync = exports.lstatSync = exports.WriteStream = exports.createWriteStream = exports.promises = void 0;
|
|
4
|
+
exports.promises = {
|
|
5
|
+
lstat: (...args) => { },
|
|
6
|
+
stat: (...args) => { },
|
|
7
|
+
readFile: (...args) => { },
|
|
8
|
+
open: (...args) => { },
|
|
9
|
+
};
|
|
10
|
+
exports.createWriteStream = {};
|
|
11
|
+
exports.WriteStream = {};
|
|
12
|
+
exports.lstatSync = {};
|
|
13
|
+
exports.existsSync = {};
|
package/client/index.d.ts
CHANGED
|
@@ -12,5 +12,4 @@ import * as tgClient from "./TelegramClient";
|
|
|
12
12
|
import * as updates from "./updates";
|
|
13
13
|
import * as uploads from "./uploads";
|
|
14
14
|
import * as users from "./users";
|
|
15
|
-
|
|
16
|
-
export { twoFA, auth, bots, buttons, chats, dialogs, downloads, messageParse, message, telegramBaseClient, tgClient, updates, uploads, users, additional, };
|
|
15
|
+
export { twoFA, auth, bots, buttons, chats, dialogs, downloads, messageParse, message, telegramBaseClient, tgClient, updates, uploads, users, };
|
package/client/index.js
CHANGED
|
@@ -23,7 +23,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.
|
|
26
|
+
exports.users = exports.uploads = exports.updates = exports.tgClient = exports.telegramBaseClient = exports.message = exports.messageParse = exports.downloads = exports.dialogs = exports.chats = exports.buttons = exports.bots = exports.auth = exports.twoFA = void 0;
|
|
27
27
|
const twoFA = __importStar(require("./2fa"));
|
|
28
28
|
exports.twoFA = twoFA;
|
|
29
29
|
const auth = __importStar(require("./auth"));
|
|
@@ -52,5 +52,3 @@ const uploads = __importStar(require("./uploads"));
|
|
|
52
52
|
exports.uploads = uploads;
|
|
53
53
|
const users = __importStar(require("./users"));
|
|
54
54
|
exports.users = users;
|
|
55
|
-
const additional = __importStar(require("./additional"));
|
|
56
|
-
exports.additional = additional;
|
package/client/os.d.ts
CHANGED
package/client/os.js
CHANGED
|
@@ -1,27 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
|
|
27
|
-
|
|
3
|
+
exports.default = {
|
|
4
|
+
type: () => {
|
|
5
|
+
return "Browser";
|
|
6
|
+
},
|
|
7
|
+
release: () => {
|
|
8
|
+
return "1.0";
|
|
9
|
+
},
|
|
10
|
+
};
|
package/client/path.d.ts
CHANGED
package/client/path.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
exports.default = {
|
|
4
|
+
basename(...args) { },
|
|
5
|
+
resolve(...args) { },
|
|
6
|
+
path(...args) { },
|
|
7
|
+
join(...args) { },
|
|
8
|
+
};
|
|
@@ -66,7 +66,7 @@ class TelegramBaseClient {
|
|
|
66
66
|
else {
|
|
67
67
|
this._log = new extensions_1.Logger();
|
|
68
68
|
}
|
|
69
|
-
this._log.info("Running
|
|
69
|
+
this._log.info("Running gramJS version " + __1.version);
|
|
70
70
|
if (session && typeof session == "string") {
|
|
71
71
|
session = new sessions_1.StoreSession(session);
|
|
72
72
|
}
|
package/client/uploads.d.ts
CHANGED