@armatofik/tgsnake-core 1.0.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/COPYING +674 -0
- package/COPYING.lesser +165 -0
- package/README.md +88 -0
- package/lib/package.json +46 -0
- package/lib/src/Logger.d.ts +3 -0
- package/lib/src/Logger.js +9 -0
- package/lib/src/Queue.d.ts +19 -0
- package/lib/src/Queue.js +52 -0
- package/lib/src/Timeout.d.ts +9 -0
- package/lib/src/Timeout.js +44 -0
- package/lib/src/Version.node.d.ts +4 -0
- package/lib/src/Version.node.js +26 -0
- package/lib/src/client/Auth.d.ts +40 -0
- package/lib/src/client/Auth.js +317 -0
- package/lib/src/client/Client.d.ts +83 -0
- package/lib/src/client/Client.js +461 -0
- package/lib/src/client/Session.d.ts +9 -0
- package/lib/src/client/Session.js +132 -0
- package/lib/src/client/index.d.ts +3 -0
- package/lib/src/client/index.js +39 -0
- package/lib/src/connection/TCP/TCPAbridged.d.ts +9 -0
- package/lib/src/connection/TCP/TCPAbridged.js +47 -0
- package/lib/src/connection/TCP/TCPAbridgedO.d.ts +12 -0
- package/lib/src/connection/TCP/TCPAbridgedO.js +140 -0
- package/lib/src/connection/TCP/TCPFull.d.ts +10 -0
- package/lib/src/connection/TCP/TCPFull.js +43 -0
- package/lib/src/connection/TCP/TCPIntermediate.d.ts +9 -0
- package/lib/src/connection/TCP/TCPIntermediate.js +31 -0
- package/lib/src/connection/TCP/TCPIntermediateO.d.ts +12 -0
- package/lib/src/connection/TCP/TCPIntermediateO.js +123 -0
- package/lib/src/connection/TCP/TCPPaddedIntermediate.d.ts +9 -0
- package/lib/src/connection/TCP/TCPPaddedIntermediate.js +38 -0
- package/lib/src/connection/TCP/index.d.ts +7 -0
- package/lib/src/connection/TCP/index.js +17 -0
- package/lib/src/connection/TCP/tcp.d.ts +17 -0
- package/lib/src/connection/TCP/tcp.js +98 -0
- package/lib/src/connection/WebSocket.d.ts +21 -0
- package/lib/src/connection/WebSocket.js +279 -0
- package/lib/src/connection/connection.d.ts +53 -0
- package/lib/src/connection/connection.js +189 -0
- package/lib/src/connection/index.d.ts +4 -0
- package/lib/src/connection/index.js +41 -0
- package/lib/src/crypto/Aes.d.ts +10 -0
- package/lib/src/crypto/Aes.js +135 -0
- package/lib/src/crypto/Mtproto.d.ts +5 -0
- package/lib/src/crypto/Mtproto.js +123 -0
- package/lib/src/crypto/Password.d.ts +5 -0
- package/lib/src/crypto/Password.js +92 -0
- package/lib/src/crypto/Prime.d.ts +4 -0
- package/lib/src/crypto/Prime.js +64 -0
- package/lib/src/crypto/RSA.d.ts +7 -0
- package/lib/src/crypto/RSA.js +99 -0
- package/lib/src/crypto/SecretChat.d.ts +5 -0
- package/lib/src/crypto/SecretChat.js +136 -0
- package/lib/src/crypto/index.d.ts +6 -0
- package/lib/src/crypto/index.js +42 -0
- package/lib/src/errors/Base.d.ts +9 -0
- package/lib/src/errors/Base.js +50 -0
- package/lib/src/errors/Client.d.ts +21 -0
- package/lib/src/errors/Client.js +29 -0
- package/lib/src/errors/File.d.ts +13 -0
- package/lib/src/errors/File.js +30 -0
- package/lib/src/errors/RpcError.d.ts +22 -0
- package/lib/src/errors/RpcError.js +120 -0
- package/lib/src/errors/SecretChat.d.ts +13 -0
- package/lib/src/errors/SecretChat.js +30 -0
- package/lib/src/errors/WebSocket.d.ts +13 -0
- package/lib/src/errors/WebSocket.js +30 -0
- package/lib/src/errors/exceptions/All.d.ts +774 -0
- package/lib/src/errors/exceptions/All.js +778 -0
- package/lib/src/errors/exceptions/BadRequest400.d.ts +2345 -0
- package/lib/src/errors/exceptions/BadRequest400.js +2945 -0
- package/lib/src/errors/exceptions/Flood420.d.ts +37 -0
- package/lib/src/errors/exceptions/Flood420.js +49 -0
- package/lib/src/errors/exceptions/Forbidden403.d.ts +205 -0
- package/lib/src/errors/exceptions/Forbidden403.js +260 -0
- package/lib/src/errors/exceptions/InternalServerError500.d.ts +221 -0
- package/lib/src/errors/exceptions/InternalServerError500.js +280 -0
- package/lib/src/errors/exceptions/NotAcceptable406.d.ts +117 -0
- package/lib/src/errors/exceptions/NotAcceptable406.js +149 -0
- package/lib/src/errors/exceptions/NotFound404.d.ts +9 -0
- package/lib/src/errors/exceptions/NotFound404.js +14 -0
- package/lib/src/errors/exceptions/SeeOther303.d.ts +25 -0
- package/lib/src/errors/exceptions/SeeOther303.js +34 -0
- package/lib/src/errors/exceptions/ServiceUnavailable503.d.ts +17 -0
- package/lib/src/errors/exceptions/ServiceUnavailable503.js +24 -0
- package/lib/src/errors/exceptions/Unauthorized401.d.ts +41 -0
- package/lib/src/errors/exceptions/Unauthorized401.js +54 -0
- package/lib/src/errors/exceptions/index.d.ts +10 -0
- package/lib/src/errors/exceptions/index.js +48 -0
- package/lib/src/errors/index.d.ts +31 -0
- package/lib/src/errors/index.js +111 -0
- package/lib/src/file/Download.d.ts +11 -0
- package/lib/src/file/Download.js +118 -0
- package/lib/src/file/File.d.ts +20 -0
- package/lib/src/file/File.js +82 -0
- package/lib/src/file/Upload.d.ts +19 -0
- package/lib/src/file/Upload.js +250 -0
- package/lib/src/file/index.d.ts +3 -0
- package/lib/src/file/index.js +11 -0
- package/lib/src/helpers.d.ts +34 -0
- package/lib/src/helpers.js +358 -0
- package/lib/src/index.d.ts +16 -0
- package/lib/src/index.js +56 -0
- package/lib/src/platform.node.d.ts +36 -0
- package/lib/src/platform.node.js +109 -0
- package/lib/src/raw/All.d.ts +2400 -0
- package/lib/src/raw/All.js +2403 -0
- package/lib/src/raw/Raw.d.ts +29195 -0
- package/lib/src/raw/Raw.js +97277 -0
- package/lib/src/raw/core/BytesIO.d.ts +33 -0
- package/lib/src/raw/core/BytesIO.js +145 -0
- package/lib/src/raw/core/GzipPacked.d.ts +10 -0
- package/lib/src/raw/core/GzipPacked.js +60 -0
- package/lib/src/raw/core/Message.d.ts +13 -0
- package/lib/src/raw/core/Message.js +81 -0
- package/lib/src/raw/core/MsgContainer.d.ts +11 -0
- package/lib/src/raw/core/MsgContainer.js +69 -0
- package/lib/src/raw/core/TLObject.d.ts +19 -0
- package/lib/src/raw/core/TLObject.js +108 -0
- package/lib/src/raw/core/UpdateSecretChat.d.ts +40 -0
- package/lib/src/raw/core/UpdateSecretChat.js +88 -0
- package/lib/src/raw/core/index.d.ts +8 -0
- package/lib/src/raw/core/index.js +52 -0
- package/lib/src/raw/core/primitive/Bool.d.ts +20 -0
- package/lib/src/raw/core/primitive/Bool.js +41 -0
- package/lib/src/raw/core/primitive/Bytes.d.ts +7 -0
- package/lib/src/raw/core/primitive/Bytes.js +41 -0
- package/lib/src/raw/core/primitive/Double.d.ts +7 -0
- package/lib/src/raw/core/primitive/Double.js +24 -0
- package/lib/src/raw/core/primitive/Float.d.ts +7 -0
- package/lib/src/raw/core/primitive/Float.js +24 -0
- package/lib/src/raw/core/primitive/Int.d.ts +23 -0
- package/lib/src/raw/core/primitive/Int.js +122 -0
- package/lib/src/raw/core/primitive/String.d.ts +7 -0
- package/lib/src/raw/core/primitive/String.js +15 -0
- package/lib/src/raw/core/primitive/Vector.d.ts +9 -0
- package/lib/src/raw/core/primitive/Vector.js +50 -0
- package/lib/src/raw/core/primitive/index.d.ts +7 -0
- package/lib/src/raw/core/primitive/index.js +22 -0
- package/lib/src/raw/index.d.ts +3 -0
- package/lib/src/raw/index.js +17 -0
- package/lib/src/session/Auth.d.ts +15 -0
- package/lib/src/session/Auth.js +254 -0
- package/lib/src/session/Session.d.ts +58 -0
- package/lib/src/session/Session.js +571 -0
- package/lib/src/session/index.d.ts +7 -0
- package/lib/src/session/index.js +49 -0
- package/lib/src/session/internals/DataCenter.d.ts +42 -0
- package/lib/src/session/internals/DataCenter.js +80 -0
- package/lib/src/session/internals/MsgFactory.d.ts +3 -0
- package/lib/src/session/internals/MsgFactory.js +23 -0
- package/lib/src/session/internals/MsgId.d.ts +9 -0
- package/lib/src/session/internals/MsgId.js +24 -0
- package/lib/src/session/internals/SeqNo.d.ts +6 -0
- package/lib/src/session/internals/SeqNo.js +18 -0
- package/lib/src/session/secretChats/SecretChat.d.ts +29 -0
- package/lib/src/session/secretChats/SecretChat.js +527 -0
- package/lib/src/session/secretChats/index.d.ts +1 -0
- package/lib/src/session/secretChats/index.js +5 -0
- package/lib/src/storage/Abstract.d.ts +68 -0
- package/lib/src/storage/Abstract.js +6 -0
- package/lib/src/storage/SecretChat.d.ts +42 -0
- package/lib/src/storage/SecretChat.js +99 -0
- package/lib/src/storage/Session.d.ts +63 -0
- package/lib/src/storage/Session.js +245 -0
- package/lib/src/storage/StringSession.d.ts +4 -0
- package/lib/src/storage/StringSession.js +77 -0
- package/lib/src/storage/index.d.ts +4 -0
- package/lib/src/storage/index.js +12 -0
- package/package.json +46 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { Buffer } from '../../platform.node.js';
|
|
2
|
+
export declare class BytesIO {
|
|
3
|
+
private _buffer;
|
|
4
|
+
private _post;
|
|
5
|
+
constructor(buffer?: Buffer);
|
|
6
|
+
seek(offset: number, whence?: number): number;
|
|
7
|
+
slice(...args: Array<any>): BytesIO;
|
|
8
|
+
toJSON(): {
|
|
9
|
+
type: "Buffer";
|
|
10
|
+
data: number[];
|
|
11
|
+
};
|
|
12
|
+
toString(...args: Array<any>): string;
|
|
13
|
+
read(length?: number): Buffer;
|
|
14
|
+
readInt32LE(size?: number): number;
|
|
15
|
+
readInt32BE(size?: number): number;
|
|
16
|
+
readUInt32LE(size?: number): number;
|
|
17
|
+
readUInt32BE(size?: number): number;
|
|
18
|
+
readBigInt64LE(size?: number): bigint;
|
|
19
|
+
readBigInt64BE(size?: number): bigint;
|
|
20
|
+
readBigUInt64LE(size?: number): bigint;
|
|
21
|
+
readBigUInt64BE(size?: number): bigint;
|
|
22
|
+
readDoubleLE(size?: number): number;
|
|
23
|
+
readDoubleBE(size?: number): number;
|
|
24
|
+
readFloatLE(size?: number): number;
|
|
25
|
+
readFloatBE(size?: number): number;
|
|
26
|
+
write(data: Buffer): BytesIO;
|
|
27
|
+
static alloc(size: number): BytesIO;
|
|
28
|
+
static from(input: any, encode?: any): BytesIO;
|
|
29
|
+
static concat(data: Array<Buffer>): BytesIO;
|
|
30
|
+
get length(): number;
|
|
31
|
+
get buffer(): Buffer;
|
|
32
|
+
get post(): number;
|
|
33
|
+
}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BytesIO = void 0;
|
|
4
|
+
const platform_node_js_1 = require("../../platform.node.js");
|
|
5
|
+
class BytesIO {
|
|
6
|
+
_buffer;
|
|
7
|
+
_post;
|
|
8
|
+
constructor(buffer = platform_node_js_1.Buffer.alloc(0)) {
|
|
9
|
+
this._post = 0;
|
|
10
|
+
this._buffer = buffer;
|
|
11
|
+
return this;
|
|
12
|
+
}
|
|
13
|
+
seek(offset, whence = 0) {
|
|
14
|
+
if (whence === 0) {
|
|
15
|
+
if (offset < 0) {
|
|
16
|
+
throw new Error(`offset of BytesIO.seek must be zero or positive value when whence is 0`);
|
|
17
|
+
}
|
|
18
|
+
this._post = whence;
|
|
19
|
+
}
|
|
20
|
+
else if (whence === 1) {
|
|
21
|
+
this._post += offset;
|
|
22
|
+
}
|
|
23
|
+
else if (whence === 2) {
|
|
24
|
+
if (offset >= 0) {
|
|
25
|
+
throw new Error(`offset of BytesIO.seek must be less than zero or negative value when whence is 2`);
|
|
26
|
+
}
|
|
27
|
+
if (platform_node_js_1.Buffer.byteLength(this._buffer) + offset < 0) {
|
|
28
|
+
throw new Error(`offset out of range, offset ${offset} is less than the available buffer length.`);
|
|
29
|
+
}
|
|
30
|
+
this._post = platform_node_js_1.Buffer.byteLength(this._buffer) + offset;
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
throw new Error(`whence must be 0 or 1 or 2, but receive ${whence}`);
|
|
34
|
+
}
|
|
35
|
+
return this._post;
|
|
36
|
+
}
|
|
37
|
+
slice(...args) {
|
|
38
|
+
return new BytesIO(this._buffer.subarray(...args));
|
|
39
|
+
}
|
|
40
|
+
toJSON() {
|
|
41
|
+
return this._buffer.toJSON();
|
|
42
|
+
}
|
|
43
|
+
toString(...args) {
|
|
44
|
+
return this._buffer.toString(...args);
|
|
45
|
+
}
|
|
46
|
+
read(length) {
|
|
47
|
+
if (length === undefined) {
|
|
48
|
+
const results = this._buffer.subarray(this._post);
|
|
49
|
+
this.seek(platform_node_js_1.Buffer.byteLength(results), 1);
|
|
50
|
+
return results;
|
|
51
|
+
}
|
|
52
|
+
if (length >= 1 && this._post <= platform_node_js_1.Buffer.byteLength(this._buffer)) {
|
|
53
|
+
const results = this._buffer.subarray(this._post, this._post + length);
|
|
54
|
+
this.seek(length, 1);
|
|
55
|
+
return results;
|
|
56
|
+
}
|
|
57
|
+
return platform_node_js_1.Buffer.alloc(0);
|
|
58
|
+
}
|
|
59
|
+
readInt32LE(size = 4) {
|
|
60
|
+
const results = this._buffer.readInt32LE(this._post);
|
|
61
|
+
this.seek(size, 1);
|
|
62
|
+
return results;
|
|
63
|
+
}
|
|
64
|
+
readInt32BE(size = 4) {
|
|
65
|
+
const results = this._buffer.readInt32BE(this._post);
|
|
66
|
+
this.seek(size, 1);
|
|
67
|
+
return results;
|
|
68
|
+
}
|
|
69
|
+
readUInt32LE(size = 4) {
|
|
70
|
+
const results = this._buffer.readUInt32LE(this._post);
|
|
71
|
+
this.seek(size, 1);
|
|
72
|
+
return results;
|
|
73
|
+
}
|
|
74
|
+
readUInt32BE(size = 4) {
|
|
75
|
+
const results = this._buffer.readInt32BE(this._post);
|
|
76
|
+
this.seek(size, 1);
|
|
77
|
+
return results;
|
|
78
|
+
}
|
|
79
|
+
readBigInt64LE(size = 8) {
|
|
80
|
+
const results = this._buffer.readBigInt64LE(this._post);
|
|
81
|
+
this.seek(size, 1);
|
|
82
|
+
return results;
|
|
83
|
+
}
|
|
84
|
+
readBigInt64BE(size = 8) {
|
|
85
|
+
const results = this._buffer.readBigInt64BE(this._post);
|
|
86
|
+
this.seek(size, 1);
|
|
87
|
+
return results;
|
|
88
|
+
}
|
|
89
|
+
readBigUInt64LE(size = 8) {
|
|
90
|
+
const results = this._buffer.readBigUInt64LE(this._post);
|
|
91
|
+
this.seek(size, 1);
|
|
92
|
+
return results;
|
|
93
|
+
}
|
|
94
|
+
readBigUInt64BE(size = 8) {
|
|
95
|
+
const results = this._buffer.readBigUInt64BE(this._post);
|
|
96
|
+
this.seek(size, 1);
|
|
97
|
+
return results;
|
|
98
|
+
}
|
|
99
|
+
readDoubleLE(size = 8) {
|
|
100
|
+
const results = this._buffer.readDoubleLE(this._post);
|
|
101
|
+
this.seek(size, 1);
|
|
102
|
+
return results;
|
|
103
|
+
}
|
|
104
|
+
readDoubleBE(size = 8) {
|
|
105
|
+
const results = this._buffer.readDoubleBE(this._post);
|
|
106
|
+
this.seek(size, 1);
|
|
107
|
+
return results;
|
|
108
|
+
}
|
|
109
|
+
readFloatLE(size = 4) {
|
|
110
|
+
const results = this._buffer.readFloatLE(this._post);
|
|
111
|
+
this.seek(size, 1);
|
|
112
|
+
return results;
|
|
113
|
+
}
|
|
114
|
+
readFloatBE(size = 4) {
|
|
115
|
+
const results = this._buffer.readFloatBE(this._post);
|
|
116
|
+
this.seek(size, 1);
|
|
117
|
+
return results;
|
|
118
|
+
}
|
|
119
|
+
write(data) {
|
|
120
|
+
this._buffer = platform_node_js_1.Buffer.concat([
|
|
121
|
+
this._buffer,
|
|
122
|
+
data,
|
|
123
|
+
]);
|
|
124
|
+
return this;
|
|
125
|
+
}
|
|
126
|
+
static alloc(size) {
|
|
127
|
+
return new BytesIO(platform_node_js_1.Buffer.alloc(size));
|
|
128
|
+
}
|
|
129
|
+
static from(input, encode) {
|
|
130
|
+
return new BytesIO(platform_node_js_1.Buffer.from(input, encode));
|
|
131
|
+
}
|
|
132
|
+
static concat(data) {
|
|
133
|
+
return new BytesIO(platform_node_js_1.Buffer.concat(data));
|
|
134
|
+
}
|
|
135
|
+
get length() {
|
|
136
|
+
return platform_node_js_1.Buffer.byteLength(this._buffer);
|
|
137
|
+
}
|
|
138
|
+
get buffer() {
|
|
139
|
+
return this._buffer;
|
|
140
|
+
}
|
|
141
|
+
get post() {
|
|
142
|
+
return this._post;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
exports.BytesIO = BytesIO;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { BytesIO } from './BytesIO.js';
|
|
2
|
+
import { TLObject } from './TLObject.js';
|
|
3
|
+
import { Buffer } from '../../platform.node.js';
|
|
4
|
+
export declare class GzipPacked extends TLObject {
|
|
5
|
+
static ID: number;
|
|
6
|
+
packedData: TLObject;
|
|
7
|
+
constructor(packedData: TLObject);
|
|
8
|
+
static read(data: BytesIO, ..._args: Array<any>): Promise<GzipPacked>;
|
|
9
|
+
write(): Buffer;
|
|
10
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
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 () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.GzipPacked = void 0;
|
|
37
|
+
const BytesIO_js_1 = require("./BytesIO.js");
|
|
38
|
+
const TLObject_js_1 = require("./TLObject.js");
|
|
39
|
+
const Primitive = __importStar(require("./primitive/index.js"));
|
|
40
|
+
const platform_node_js_1 = require("../../platform.node.js");
|
|
41
|
+
class GzipPacked extends TLObject_js_1.TLObject {
|
|
42
|
+
static ID = 0x3072cfa1;
|
|
43
|
+
packedData;
|
|
44
|
+
constructor(packedData) {
|
|
45
|
+
super();
|
|
46
|
+
this.className = 'GzipPacked';
|
|
47
|
+
this._slots = ['packedData'];
|
|
48
|
+
this.packedData = packedData;
|
|
49
|
+
}
|
|
50
|
+
static async read(data, ..._args) {
|
|
51
|
+
return (await TLObject_js_1.TLObject.read(new BytesIO_js_1.BytesIO((0, platform_node_js_1.gunzipSync)(await Primitive.Bytes.read(data)))));
|
|
52
|
+
}
|
|
53
|
+
write() {
|
|
54
|
+
const bytes = new BytesIO_js_1.BytesIO();
|
|
55
|
+
bytes.write(Primitive.Int.write(GzipPacked.ID, false));
|
|
56
|
+
bytes.write(Primitive.Bytes.write((0, platform_node_js_1.gzipSync)(this.packedData.write())));
|
|
57
|
+
return platform_node_js_1.Buffer.from(bytes.buffer);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
exports.GzipPacked = GzipPacked;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { BytesIO } from './BytesIO.js';
|
|
2
|
+
import { TLObject } from './TLObject.js';
|
|
3
|
+
import { Buffer } from '../../platform.node.js';
|
|
4
|
+
export declare class Message extends TLObject {
|
|
5
|
+
static ID: number;
|
|
6
|
+
msgId: bigint;
|
|
7
|
+
seqNo: number;
|
|
8
|
+
length: number;
|
|
9
|
+
body: TLObject;
|
|
10
|
+
constructor(body: TLObject, msgId: bigint, seqNo: number, length: number);
|
|
11
|
+
static read(data: BytesIO, ..._args: Array<any>): Promise<Message>;
|
|
12
|
+
write(): Buffer;
|
|
13
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
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 () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.Message = void 0;
|
|
37
|
+
const BytesIO_js_1 = require("./BytesIO.js");
|
|
38
|
+
const TLObject_js_1 = require("./TLObject.js");
|
|
39
|
+
const Primitive = __importStar(require("./primitive/index.js"));
|
|
40
|
+
const platform_node_js_1 = require("../../platform.node.js");
|
|
41
|
+
function toBytes(value) {
|
|
42
|
+
const bytesArray = [];
|
|
43
|
+
for (let i = 0; i < 8; i++) {
|
|
44
|
+
let shift = value >> BigInt(8 * i);
|
|
45
|
+
shift &= BigInt(255);
|
|
46
|
+
bytesArray[i] = Number(String(shift));
|
|
47
|
+
}
|
|
48
|
+
return platform_node_js_1.Buffer.from(bytesArray);
|
|
49
|
+
}
|
|
50
|
+
class Message extends TLObject_js_1.TLObject {
|
|
51
|
+
static ID = 0x5bb8e511;
|
|
52
|
+
msgId;
|
|
53
|
+
seqNo;
|
|
54
|
+
length;
|
|
55
|
+
body;
|
|
56
|
+
constructor(body, msgId, seqNo, length) {
|
|
57
|
+
super();
|
|
58
|
+
this.className = 'Message';
|
|
59
|
+
this._slots = ['body', 'msgId', 'seqNo', 'length'];
|
|
60
|
+
this.msgId = msgId;
|
|
61
|
+
this.seqNo = seqNo;
|
|
62
|
+
this.length = length;
|
|
63
|
+
this.body = body;
|
|
64
|
+
}
|
|
65
|
+
static async read(data, ..._args) {
|
|
66
|
+
const msgId = await Primitive.Long.read(data);
|
|
67
|
+
const seqNo = await Primitive.Int.read(data);
|
|
68
|
+
const length = await Primitive.Int.read(data);
|
|
69
|
+
const body = data.read(length);
|
|
70
|
+
return new Message(await TLObject_js_1.TLObject.read(new BytesIO_js_1.BytesIO(body)), msgId, seqNo, length);
|
|
71
|
+
}
|
|
72
|
+
write() {
|
|
73
|
+
const bytes = new BytesIO_js_1.BytesIO();
|
|
74
|
+
bytes.write(toBytes(this.msgId));
|
|
75
|
+
bytes.write(Primitive.Int.write(this.seqNo));
|
|
76
|
+
bytes.write(Primitive.Int.write(this.length));
|
|
77
|
+
bytes.write(this.body.write());
|
|
78
|
+
return platform_node_js_1.Buffer.from(bytes.buffer);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
exports.Message = Message;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { BytesIO } from './BytesIO.js';
|
|
2
|
+
import { TLObject } from './TLObject.js';
|
|
3
|
+
import { Message } from './Message.js';
|
|
4
|
+
import { Buffer } from '../../platform.node.js';
|
|
5
|
+
export declare class MsgContainer extends TLObject {
|
|
6
|
+
static ID: number;
|
|
7
|
+
messages: Array<Message>;
|
|
8
|
+
constructor(messages: Array<Message>);
|
|
9
|
+
static read(data: BytesIO, ..._args: Array<any>): Promise<MsgContainer>;
|
|
10
|
+
write(): Buffer;
|
|
11
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
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 () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.MsgContainer = void 0;
|
|
37
|
+
const BytesIO_js_1 = require("./BytesIO.js");
|
|
38
|
+
const TLObject_js_1 = require("./TLObject.js");
|
|
39
|
+
const Primitive = __importStar(require("./primitive/index.js"));
|
|
40
|
+
const Message_js_1 = require("./Message.js");
|
|
41
|
+
const platform_node_js_1 = require("../../platform.node.js");
|
|
42
|
+
class MsgContainer extends TLObject_js_1.TLObject {
|
|
43
|
+
static ID = 0x73f1f8dc;
|
|
44
|
+
messages;
|
|
45
|
+
constructor(messages) {
|
|
46
|
+
super();
|
|
47
|
+
this._slots = ['messages'];
|
|
48
|
+
this.className = 'MsgContainer';
|
|
49
|
+
this.messages = messages;
|
|
50
|
+
}
|
|
51
|
+
static async read(data, ..._args) {
|
|
52
|
+
const count = await Primitive.Int.read(data);
|
|
53
|
+
const messages = [];
|
|
54
|
+
for (let i = 0; i < count; i++) {
|
|
55
|
+
messages.push(await Message_js_1.Message.read(data));
|
|
56
|
+
}
|
|
57
|
+
return new MsgContainer(messages);
|
|
58
|
+
}
|
|
59
|
+
write() {
|
|
60
|
+
const bytes = new BytesIO_js_1.BytesIO();
|
|
61
|
+
bytes.write(Primitive.Int.write(MsgContainer.ID, false));
|
|
62
|
+
bytes.write(Primitive.Int.write(this.messages.length));
|
|
63
|
+
for (const message of this.messages) {
|
|
64
|
+
bytes.write(message.write());
|
|
65
|
+
}
|
|
66
|
+
return platform_node_js_1.Buffer.from(bytes.buffer);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
exports.MsgContainer = MsgContainer;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { BytesIO } from './BytesIO.js';
|
|
2
|
+
import { Buffer } from '../../platform.node.js';
|
|
3
|
+
export declare class TLObject {
|
|
4
|
+
_slots: Array<string>;
|
|
5
|
+
cls: any;
|
|
6
|
+
constructorId: number;
|
|
7
|
+
subclassOfId: number;
|
|
8
|
+
className: string;
|
|
9
|
+
classType: string;
|
|
10
|
+
constructor();
|
|
11
|
+
static read(data: BytesIO, ...args: Array<any>): Promise<any>;
|
|
12
|
+
static write(..._args: Array<any>): Buffer;
|
|
13
|
+
read(data: BytesIO, ...args: Array<any>): Promise<any>;
|
|
14
|
+
write(...args: Array<any>): Buffer;
|
|
15
|
+
toJSON(): {
|
|
16
|
+
[key: string]: any;
|
|
17
|
+
};
|
|
18
|
+
toString(): string;
|
|
19
|
+
}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TLObject = void 0;
|
|
4
|
+
const All_js_1 = require("../All.js");
|
|
5
|
+
const Logger_js_1 = require("../../Logger.js");
|
|
6
|
+
const platform_node_js_1 = require("../../platform.node.js");
|
|
7
|
+
const index_js_1 = require("../index.js");
|
|
8
|
+
function getModule(name) {
|
|
9
|
+
if (!name) {
|
|
10
|
+
throw new Error("name of module can't be undefined");
|
|
11
|
+
}
|
|
12
|
+
if (name === 'Message') {
|
|
13
|
+
return index_js_1.Message;
|
|
14
|
+
}
|
|
15
|
+
else if (name === 'GzipPacked') {
|
|
16
|
+
return index_js_1.GzipPacked;
|
|
17
|
+
}
|
|
18
|
+
else if (name === 'MsgContainer') {
|
|
19
|
+
return index_js_1.MsgContainer;
|
|
20
|
+
}
|
|
21
|
+
else if (name.startsWith('Primitive')) {
|
|
22
|
+
return index_js_1.Primitive[name.split('.')[1]];
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
const split = name.split('.');
|
|
26
|
+
if (split.length == 3) {
|
|
27
|
+
return index_js_1.Raw[split[1]][split[2]];
|
|
28
|
+
}
|
|
29
|
+
return index_js_1.Raw[split[1]];
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
class TLObject {
|
|
33
|
+
_slots;
|
|
34
|
+
cls = this.constructor;
|
|
35
|
+
constructorId;
|
|
36
|
+
subclassOfId;
|
|
37
|
+
className;
|
|
38
|
+
classType;
|
|
39
|
+
constructor() {
|
|
40
|
+
this._slots = [];
|
|
41
|
+
this.constructorId = this.cls.ID ?? 0;
|
|
42
|
+
this.className = 'TLObject';
|
|
43
|
+
}
|
|
44
|
+
static async read(data, ...args) {
|
|
45
|
+
const id = data.readUInt32LE(4);
|
|
46
|
+
Logger_js_1.Logger.debug(`[10] Reading TLObject with id: ${id.toString(16)} (${All_js_1.AllTLObject[id]})`);
|
|
47
|
+
const _class = getModule(All_js_1.AllTLObject[id]);
|
|
48
|
+
return await _class.read(data, ...args);
|
|
49
|
+
}
|
|
50
|
+
static write(..._args) {
|
|
51
|
+
return platform_node_js_1.Buffer.alloc(0);
|
|
52
|
+
}
|
|
53
|
+
read(data, ...args) {
|
|
54
|
+
return this.cls.read(data, ...args);
|
|
55
|
+
}
|
|
56
|
+
write(...args) {
|
|
57
|
+
return this.cls.write(...args);
|
|
58
|
+
}
|
|
59
|
+
[Symbol.for('nodejs.util.inspect.custom')]() {
|
|
60
|
+
const toPrint = {
|
|
61
|
+
_: this.className,
|
|
62
|
+
};
|
|
63
|
+
const ignore = ['slots', 'className', 'constructorId', 'subclassOfId', 'classType', 'cls'];
|
|
64
|
+
for (const key in this) {
|
|
65
|
+
if (Object.prototype.hasOwnProperty.call(this, key)) {
|
|
66
|
+
const value = this[key];
|
|
67
|
+
if (ignore.includes(key))
|
|
68
|
+
continue;
|
|
69
|
+
if (!key.startsWith('_') && value !== undefined && value !== null) {
|
|
70
|
+
toPrint[key] = value;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return toPrint;
|
|
75
|
+
}
|
|
76
|
+
[Symbol.for('Deno.customInspect')]() {
|
|
77
|
+
return String((0, platform_node_js_1.inspect)(this[Symbol.for('nodejs.util.inspect.custom')](), { colors: true }));
|
|
78
|
+
}
|
|
79
|
+
toJSON() {
|
|
80
|
+
const toPrint = {
|
|
81
|
+
_: this.className,
|
|
82
|
+
};
|
|
83
|
+
const ignore = ['slots', 'className', 'constructorId', 'subclassOfId', 'classType', 'cls'];
|
|
84
|
+
for (const key in this) {
|
|
85
|
+
if (Object.prototype.hasOwnProperty.call(this, key)) {
|
|
86
|
+
const value = this[key];
|
|
87
|
+
if (ignore.includes(key))
|
|
88
|
+
continue;
|
|
89
|
+
if (!key.startsWith('_') && value !== undefined && value !== null) {
|
|
90
|
+
if (typeof value === 'bigint') {
|
|
91
|
+
toPrint[key] = String(value);
|
|
92
|
+
}
|
|
93
|
+
else if (Array.isArray(value)) {
|
|
94
|
+
toPrint[key] = value.map((v) => (typeof v === 'bigint' ? String(v) : v));
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
toPrint[key] = value;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
return toPrint;
|
|
103
|
+
}
|
|
104
|
+
toString() {
|
|
105
|
+
return `[constructor of ${this.className}] ${JSON.stringify(this, null, 2)}`;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
exports.TLObject = TLObject;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { Raw } from '../Raw.js';
|
|
2
|
+
import type { SecretChat } from '../../session/secretChats/SecretChat.js';
|
|
3
|
+
import { TLObject } from './TLObject.js';
|
|
4
|
+
export declare class UpdateSecretChatMessage extends TLObject {
|
|
5
|
+
message: SecretChatMessage | SecretChatMessageService;
|
|
6
|
+
qts: number;
|
|
7
|
+
_original: Raw.UpdateNewEncryptedMessage;
|
|
8
|
+
constructor(params: {
|
|
9
|
+
message: SecretChatMessage | SecretChatMessageService;
|
|
10
|
+
qts: number;
|
|
11
|
+
original: Raw.UpdateNewEncryptedMessage;
|
|
12
|
+
});
|
|
13
|
+
static generate(update: Raw.UpdateNewEncryptedMessage, secretChat: SecretChat): Promise<UpdateSecretChatMessage>;
|
|
14
|
+
}
|
|
15
|
+
export declare class SecretChatMessage extends TLObject {
|
|
16
|
+
randomId: bigint;
|
|
17
|
+
chatId: number;
|
|
18
|
+
date: number;
|
|
19
|
+
message: Raw.DecryptedMessage8 | Raw.DecryptedMessage17 | Raw.DecryptedMessage45 | Raw.DecryptedMessage73;
|
|
20
|
+
file: Raw.TypeEncryptedFile;
|
|
21
|
+
constructor(params: {
|
|
22
|
+
randomId: bigint;
|
|
23
|
+
chatId: number;
|
|
24
|
+
date: number;
|
|
25
|
+
message: Raw.DecryptedMessage8 | Raw.DecryptedMessage17 | Raw.DecryptedMessage45 | Raw.DecryptedMessage73;
|
|
26
|
+
file: Raw.TypeEncryptedFile;
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
export declare class SecretChatMessageService extends TLObject {
|
|
30
|
+
randomId: bigint;
|
|
31
|
+
chatId: number;
|
|
32
|
+
date: number;
|
|
33
|
+
message: Raw.DecryptedMessageService8 | Raw.DecryptedMessageService17;
|
|
34
|
+
constructor(params: {
|
|
35
|
+
randomId: bigint;
|
|
36
|
+
chatId: number;
|
|
37
|
+
date: number;
|
|
38
|
+
message: Raw.DecryptedMessageService8 | Raw.DecryptedMessageService17;
|
|
39
|
+
});
|
|
40
|
+
}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SecretChatMessageService = exports.SecretChatMessage = exports.UpdateSecretChatMessage = void 0;
|
|
4
|
+
const Raw_js_1 = require("../Raw.js");
|
|
5
|
+
const TLObject_js_1 = require("./TLObject.js");
|
|
6
|
+
class UpdateSecretChatMessage extends TLObject_js_1.TLObject {
|
|
7
|
+
message;
|
|
8
|
+
qts;
|
|
9
|
+
_original;
|
|
10
|
+
constructor(params) {
|
|
11
|
+
super();
|
|
12
|
+
this.classType = 'modified_types_UpdateNewEncryptedMessage';
|
|
13
|
+
this.className = 'UpdateSecretChatMessage';
|
|
14
|
+
this.constructorId = 1;
|
|
15
|
+
this.subclassOfId = 0x9f89304e;
|
|
16
|
+
this._slots = ['message', 'qts'];
|
|
17
|
+
this.message = params.message;
|
|
18
|
+
this.qts = params.qts;
|
|
19
|
+
this._original = params.original;
|
|
20
|
+
}
|
|
21
|
+
static async generate(update, secretChat) {
|
|
22
|
+
const decrypted = await secretChat.decrypt(update.message);
|
|
23
|
+
if (update.message instanceof Raw_js_1.Raw.EncryptedMessageService) {
|
|
24
|
+
return new UpdateSecretChatMessage({
|
|
25
|
+
message: new SecretChatMessageService({
|
|
26
|
+
randomId: update.message.randomId,
|
|
27
|
+
chatId: update.message.chatId,
|
|
28
|
+
date: update.message.date,
|
|
29
|
+
message: decrypted,
|
|
30
|
+
}),
|
|
31
|
+
qts: update.qts,
|
|
32
|
+
original: update,
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
return new UpdateSecretChatMessage({
|
|
36
|
+
message: new SecretChatMessage({
|
|
37
|
+
randomId: update.message.randomId,
|
|
38
|
+
chatId: update.message.chatId,
|
|
39
|
+
date: update.message.date,
|
|
40
|
+
file: update.message.file,
|
|
41
|
+
message: decrypted,
|
|
42
|
+
}),
|
|
43
|
+
qts: update.qts,
|
|
44
|
+
original: update,
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
exports.UpdateSecretChatMessage = UpdateSecretChatMessage;
|
|
49
|
+
class SecretChatMessage extends TLObject_js_1.TLObject {
|
|
50
|
+
randomId;
|
|
51
|
+
chatId;
|
|
52
|
+
date;
|
|
53
|
+
message;
|
|
54
|
+
file;
|
|
55
|
+
constructor(params) {
|
|
56
|
+
super();
|
|
57
|
+
this.classType = 'modified_types_EncryptedMessage';
|
|
58
|
+
this.className = 'SecretChatMessage';
|
|
59
|
+
this.constructorId = 2;
|
|
60
|
+
this.subclassOfId = 0x239f2e51;
|
|
61
|
+
this._slots = ['randomId', 'chatId', 'date', 'message', 'file'];
|
|
62
|
+
this.randomId = params.randomId;
|
|
63
|
+
this.chatId = params.chatId;
|
|
64
|
+
this.date = params.date;
|
|
65
|
+
this.message = params.message;
|
|
66
|
+
this.file = params.file;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
exports.SecretChatMessage = SecretChatMessage;
|
|
70
|
+
class SecretChatMessageService extends TLObject_js_1.TLObject {
|
|
71
|
+
randomId;
|
|
72
|
+
chatId;
|
|
73
|
+
date;
|
|
74
|
+
message;
|
|
75
|
+
constructor(params) {
|
|
76
|
+
super();
|
|
77
|
+
this.classType = 'modified_types_EncryptedMessageService';
|
|
78
|
+
this.className = 'SecretChatMessageService';
|
|
79
|
+
this.constructorId = 3;
|
|
80
|
+
this.subclassOfId = 0x239f2e51;
|
|
81
|
+
this._slots = ['randomId', 'chatId', 'date', 'message'];
|
|
82
|
+
this.randomId = params.randomId;
|
|
83
|
+
this.chatId = params.chatId;
|
|
84
|
+
this.date = params.date;
|
|
85
|
+
this.message = params.message;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
exports.SecretChatMessageService = SecretChatMessageService;
|