@mtkruto/node 0.0.835 → 0.0.901

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.
Files changed (75) hide show
  1. package/esm/client/client.d.ts +23 -3
  2. package/esm/client/client.js +497 -76
  3. package/esm/client/client_abstract.d.ts +2 -0
  4. package/esm/client/client_abstract.js +14 -3
  5. package/esm/client/client_plain.js +18 -4
  6. package/esm/constants.d.ts +7 -5
  7. package/esm/constants.js +10 -6
  8. package/esm/deps/deno.land/std@0.190.0/encoding/base64.d.ts +11 -0
  9. package/esm/deps/deno.land/std@0.190.0/encoding/base64.js +140 -0
  10. package/esm/deps/deno.land/x/q@v0.0.1/mod.d.ts +6 -0
  11. package/esm/deps/deno.land/x/q@v0.0.1/mod.js +71 -0
  12. package/esm/deps.d.ts +2 -0
  13. package/esm/deps.js +2 -0
  14. package/esm/mod.d.ts +3 -3
  15. package/esm/mod.js +3 -3
  16. package/esm/storage/storage.d.ts +18 -0
  17. package/esm/storage/storage.js +103 -0
  18. package/esm/tl/1_tl_object.d.ts +0 -1
  19. package/esm/tl/1_tl_object.js +1 -1
  20. package/esm/tl/4_tl_writer.d.ts +5 -0
  21. package/esm/tl/5_rpc_result.d.ts +9 -0
  22. package/esm/tl/6_message.d.ts +10 -0
  23. package/esm/tl/{5_message.js → 6_message.js} +2 -2
  24. package/esm/tl/{6_message_container.d.ts → 7_message_container.d.ts} +1 -1
  25. package/esm/tl/{6_message_container.js → 7_message_container.js} +2 -2
  26. package/esm/transport/transport_provider.d.ts +7 -4
  27. package/esm/transport/transport_provider.js +11 -8
  28. package/esm/types/3_message.d.ts +5 -1
  29. package/esm/types/3_message.js +26 -22
  30. package/esm/utilities/1_message.d.ts +2 -2
  31. package/esm/utilities/1_message.js +3 -3
  32. package/esm/utilities/1_password.js +1 -1
  33. package/package.json +1 -1
  34. package/script/client/client.d.ts +23 -3
  35. package/script/client/client.js +497 -76
  36. package/script/client/client_abstract.d.ts +2 -0
  37. package/script/client/client_abstract.js +14 -3
  38. package/script/client/client_plain.js +18 -4
  39. package/script/constants.d.ts +7 -5
  40. package/script/constants.js +34 -7
  41. package/script/deps/deno.land/std@0.190.0/encoding/base64.d.ts +11 -0
  42. package/script/deps/deno.land/std@0.190.0/encoding/base64.js +145 -0
  43. package/script/deps/deno.land/x/q@v0.0.1/mod.d.ts +6 -0
  44. package/script/deps/deno.land/x/q@v0.0.1/mod.js +75 -0
  45. package/script/deps.d.ts +2 -0
  46. package/script/deps.js +6 -1
  47. package/script/mod.d.ts +3 -3
  48. package/script/mod.js +3 -3
  49. package/script/storage/storage.d.ts +18 -0
  50. package/script/storage/storage.js +126 -0
  51. package/script/tl/1_tl_object.d.ts +0 -1
  52. package/script/tl/1_tl_object.js +1 -1
  53. package/script/tl/4_tl_writer.d.ts +5 -0
  54. package/script/tl/5_rpc_result.d.ts +9 -0
  55. package/script/tl/6_message.d.ts +10 -0
  56. package/script/tl/{5_message.js → 6_message.js} +6 -6
  57. package/script/tl/{6_message_container.d.ts → 7_message_container.d.ts} +1 -1
  58. package/script/tl/{6_message_container.js → 7_message_container.js} +4 -4
  59. package/script/transport/transport_provider.d.ts +7 -4
  60. package/script/transport/transport_provider.js +11 -8
  61. package/script/types/3_message.d.ts +5 -1
  62. package/script/types/3_message.js +26 -22
  63. package/script/utilities/1_message.d.ts +2 -2
  64. package/script/utilities/1_message.js +9 -9
  65. package/script/utilities/1_password.js +1 -1
  66. package/esm/tl/3_tl_writer.d.ts +0 -5
  67. package/esm/tl/4_rpc_result.d.ts +0 -8
  68. package/esm/tl/5_message.d.ts +0 -11
  69. package/script/tl/3_tl_writer.d.ts +0 -5
  70. package/script/tl/4_rpc_result.d.ts +0 -8
  71. package/script/tl/5_message.d.ts +0 -11
  72. /package/esm/tl/{3_tl_writer.js → 4_tl_writer.js} +0 -0
  73. /package/esm/tl/{4_rpc_result.js → 5_rpc_result.js} +0 -0
  74. /package/script/tl/{3_tl_writer.js → 4_tl_writer.js} +0 -0
  75. /package/script/tl/{4_rpc_result.js → 5_rpc_result.js} +0 -0
@@ -7,6 +7,8 @@ export declare abstract class ClientAbstract {
7
7
  protected connection: Connection;
8
8
  protected transport: Transport;
9
9
  private _dcId;
10
+ private _initialDc;
11
+ get initialDc(): DC;
10
12
  constructor(transportProvider?: import("../transport/transport_provider.js").TransportProvider);
11
13
  get dcId(): number;
12
14
  setDc(dc: DC): MaybePromise<void>;
@@ -5,6 +5,9 @@ const deps_js_1 = require("../deps.js");
5
5
  const constants_js_1 = require("../constants.js");
6
6
  const transport_provider_js_1 = require("../transport/transport_provider.js");
7
7
  class ClientAbstract {
8
+ get initialDc() {
9
+ return this._initialDc;
10
+ }
8
11
  constructor(transportProvider = (0, transport_provider_js_1.defaultTransportProvider)({ initialDc: constants_js_1.DEFAULT_INITIAL_DC })) {
9
12
  Object.defineProperty(this, "transportProvider", {
10
13
  enumerable: true,
@@ -30,7 +33,15 @@ class ClientAbstract {
30
33
  writable: true,
31
34
  value: void 0
32
35
  });
33
- const { connection, transport, dcId } = transportProvider({ cdn: false });
36
+ Object.defineProperty(this, "_initialDc", {
37
+ enumerable: true,
38
+ configurable: true,
39
+ writable: true,
40
+ value: void 0
41
+ });
42
+ const { initialDc, createTransport } = transportProvider;
43
+ this._initialDc = initialDc;
44
+ const { connection, transport, dcId } = createTransport({ cdn: false });
34
45
  this.connection = connection;
35
46
  this.transport = transport;
36
47
  this._dcId = dcId;
@@ -40,7 +51,7 @@ class ClientAbstract {
40
51
  }
41
52
  // MaybePromise since `Client` has to deal with `Storage.set()`
42
53
  setDc(dc) {
43
- const { connection, transport, dcId } = this.transportProvider({ dc, cdn: false });
54
+ const { connection, transport, dcId } = this.transportProvider.createTransport({ dc, cdn: false });
44
55
  this.connection = connection;
45
56
  this.transport = transport;
46
57
  this._dcId = dcId;
@@ -56,7 +67,7 @@ class ClientAbstract {
56
67
  async reconnect(dc) {
57
68
  await this.disconnect();
58
69
  if (dc) {
59
- this.setDc(dc);
70
+ await this.setDc(dc);
60
71
  }
61
72
  await this.connect();
62
73
  }
@@ -5,6 +5,7 @@ const deps_js_1 = require("../deps.js");
5
5
  const constants_js_1 = require("../constants.js");
6
6
  const _0_bigint_js_1 = require("../utilities/0_bigint.js");
7
7
  const _0_buffer_js_1 = require("../utilities/0_buffer.js");
8
+ const _0_control_js_1 = require("../utilities/0_control.js");
8
9
  const _0_hash_js_1 = require("../utilities/0_hash.js");
9
10
  const _1_auth_js_1 = require("../utilities/1_auth.js");
10
11
  const _1_tl_object_js_1 = require("../tl/1_tl_object.js");
@@ -31,10 +32,23 @@ class ClientPlain extends client_abstract_js_1.ClientAbstract {
31
32
  async createAuthKey() {
32
33
  const nonce = (0, _0_bigint_js_1.getRandomBigInt)(16, false, true);
33
34
  d("auth key creation started");
34
- const resPq = await this.invoke(new _3_functions_js_1.ReqPQMulti({ nonce }));
35
- (0, deps_js_1.assertInstanceOf)(resPq, _2_types_js_1.ResPQ);
36
- (0, deps_js_1.assertEquals)(resPq.nonce, nonce);
37
- d("got res_pq");
35
+ let resPq = null;
36
+ for (let i = 0; i < 10; i++) {
37
+ try {
38
+ d("req_pq_multi [%d]", i + 1);
39
+ resPq = await this.invoke(new _3_functions_js_1.ReqPQMulti({ nonce }));
40
+ (0, deps_js_1.assertInstanceOf)(resPq, _2_types_js_1.ResPQ);
41
+ (0, deps_js_1.assertEquals)(resPq.nonce, nonce);
42
+ d("got res_pq");
43
+ break;
44
+ }
45
+ catch (err) {
46
+ d("req_pq_multi error: %o", err);
47
+ }
48
+ }
49
+ if (!resPq) {
50
+ (0, _0_control_js_1.UNREACHABLE)();
51
+ }
38
52
  const pq_ = (0, _0_bigint_js_1.bigIntFromBuffer)(resPq.pq, false, false);
39
53
  const [p_, q_] = (0, deps_js_1.factorize)(pq_);
40
54
  d("factorized pq");
@@ -4,13 +4,15 @@ export declare const publicKeys: Map<bigint, [bigint, bigint]>;
4
4
  export declare const VECTOR_CONSTRUCTOR = 481674261;
5
5
  export declare const DEFAULT_INITIAL_DC: DC;
6
6
  export declare const LAYER = 158;
7
- export declare const DEFAULT_APP_VERSION = "MTKruto Unstable <v1.0.0";
8
- export declare const DEFAULT_DEVICE_MODEL = "Krutaya Device";
9
- export declare const DEFAULT_LANG_CODE = "en";
7
+ export declare const DEFAULT_APP_VERSION = "MTKruto 0.0.901";
8
+ export declare const DEFAULT_DEVICE_MODEL: string;
9
+ export declare const DEFAULT_LANG_CODE: string;
10
10
  export declare const DEFAULT_LANG_PACK = "";
11
- export declare const DEFAULT_SYSTEM_LANG_CODE = "en";
12
- export declare const DEFAULT_SYSTEM_VERSION = "1.0";
11
+ export declare const DEFAULT_SYSTEM_LANG_CODE: string;
12
+ export declare const DEFAULT_SYSTEM_VERSION: string;
13
13
  export declare const USERNAME_TTL = 86400;
14
14
  export declare const MAX_CHAT_ID = 999999999999;
15
15
  export declare const MAX_CHANNEL_ID = 997852516352;
16
16
  export declare const ZERO_CHANNEL_ID = -1000000000000;
17
+ export declare const CHANNEL_DIFFERENCE_LIMIT_USER = 100;
18
+ export declare const CHANNEL_DIFFERENCE_LIMIT_BOT = 100000;
@@ -1,6 +1,30 @@
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
+ };
2
25
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ZERO_CHANNEL_ID = exports.MAX_CHANNEL_ID = exports.MAX_CHAT_ID = exports.USERNAME_TTL = exports.DEFAULT_SYSTEM_VERSION = exports.DEFAULT_SYSTEM_LANG_CODE = exports.DEFAULT_LANG_PACK = exports.DEFAULT_LANG_CODE = exports.DEFAULT_DEVICE_MODEL = exports.DEFAULT_APP_VERSION = exports.LAYER = exports.DEFAULT_INITIAL_DC = exports.VECTOR_CONSTRUCTOR = exports.publicKeys = exports.ackThreshold = void 0;
26
+ exports.CHANNEL_DIFFERENCE_LIMIT_BOT = exports.CHANNEL_DIFFERENCE_LIMIT_USER = exports.ZERO_CHANNEL_ID = exports.MAX_CHANNEL_ID = exports.MAX_CHAT_ID = exports.USERNAME_TTL = exports.DEFAULT_SYSTEM_VERSION = exports.DEFAULT_SYSTEM_LANG_CODE = exports.DEFAULT_LANG_PACK = exports.DEFAULT_LANG_CODE = exports.DEFAULT_DEVICE_MODEL = exports.DEFAULT_APP_VERSION = exports.LAYER = exports.DEFAULT_INITIAL_DC = exports.VECTOR_CONSTRUCTOR = exports.publicKeys = exports.ackThreshold = void 0;
27
+ const dntShim = __importStar(require("./_dnt.shims.js"));
4
28
  exports.ackThreshold = 10;
5
29
  exports.publicKeys = new Map([
6
30
  [
@@ -64,14 +88,17 @@ exports.publicKeys = new Map([
64
88
  exports.VECTOR_CONSTRUCTOR = 0x1CB5C415;
65
89
  exports.DEFAULT_INITIAL_DC = "2-test";
66
90
  exports.LAYER = 158;
67
- // TODO
68
- exports.DEFAULT_APP_VERSION = "MTKruto Unstable <v1.0.0";
69
- exports.DEFAULT_DEVICE_MODEL = "Krutaya Device";
70
- exports.DEFAULT_LANG_CODE = "en";
91
+ exports.DEFAULT_APP_VERSION = "MTKruto 0.0.901";
92
+ // @ts-ignore: lib
93
+ exports.DEFAULT_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;
94
+ exports.DEFAULT_LANG_CODE = typeof navigator === "undefined" ? "en" : navigator.language.split("-")[0];
71
95
  exports.DEFAULT_LANG_PACK = "";
72
- exports.DEFAULT_SYSTEM_LANG_CODE = "en";
73
- exports.DEFAULT_SYSTEM_VERSION = "1.0";
96
+ exports.DEFAULT_SYSTEM_LANG_CODE = typeof navigator === "undefined" ? "en" : navigator.language.split("-")[0];
97
+ // @ts-ignore: lib
98
+ exports.DEFAULT_SYSTEM_VERSION = typeof navigator === "undefined" ? typeof process === "undefined" ? "Unknown" : "Node.js/" + process.versions.node : navigator.userAgent;
74
99
  exports.USERNAME_TTL = 86400;
75
100
  exports.MAX_CHAT_ID = 999999999999;
76
101
  exports.MAX_CHANNEL_ID = 997852516352;
77
102
  exports.ZERO_CHANNEL_ID = -1000000000000;
103
+ exports.CHANNEL_DIFFERENCE_LIMIT_USER = 100;
104
+ exports.CHANNEL_DIFFERENCE_LIMIT_BOT = 100000;
@@ -0,0 +1,11 @@
1
+ /**
2
+ * CREDIT: https://gist.github.com/enepomnyaschih/72c423f727d395eeaa09697058238727
3
+ * Encodes a given Uint8Array, ArrayBuffer or string into RFC4648 base64 representation
4
+ * @param data
5
+ */
6
+ export declare function encode(data: ArrayBuffer | string): string;
7
+ /**
8
+ * Decodes a given RFC4648 base64 encoded string
9
+ * @param b64
10
+ */
11
+ export declare function decode(b64: string): Uint8Array;
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+ // Copyright 2018-2023 the Deno authors. All rights reserved. MIT license.
3
+ // This module is browser compatible.
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.decode = exports.encode = void 0;
6
+ /**
7
+ * {@linkcode encode} and {@linkcode decode} for
8
+ * [base64](https://en.wikipedia.org/wiki/Base64) encoding.
9
+ *
10
+ * This module is browser compatible.
11
+ *
12
+ * @example
13
+ * ```ts
14
+ * import {
15
+ * decode,
16
+ * encode,
17
+ * } from "https://deno.land/std@$STD_VERSION/encoding/base64.ts";
18
+ *
19
+ * const b64Repr = "Zm9vYg==";
20
+ *
21
+ * const binaryData = decode(b64Repr);
22
+ * console.log(binaryData);
23
+ * // => Uint8Array [ 102, 111, 111, 98 ]
24
+ *
25
+ * console.log(encode(binaryData));
26
+ * // => Zm9vYg==
27
+ * ```
28
+ *
29
+ * @module
30
+ */
31
+ const base64abc = [
32
+ "A",
33
+ "B",
34
+ "C",
35
+ "D",
36
+ "E",
37
+ "F",
38
+ "G",
39
+ "H",
40
+ "I",
41
+ "J",
42
+ "K",
43
+ "L",
44
+ "M",
45
+ "N",
46
+ "O",
47
+ "P",
48
+ "Q",
49
+ "R",
50
+ "S",
51
+ "T",
52
+ "U",
53
+ "V",
54
+ "W",
55
+ "X",
56
+ "Y",
57
+ "Z",
58
+ "a",
59
+ "b",
60
+ "c",
61
+ "d",
62
+ "e",
63
+ "f",
64
+ "g",
65
+ "h",
66
+ "i",
67
+ "j",
68
+ "k",
69
+ "l",
70
+ "m",
71
+ "n",
72
+ "o",
73
+ "p",
74
+ "q",
75
+ "r",
76
+ "s",
77
+ "t",
78
+ "u",
79
+ "v",
80
+ "w",
81
+ "x",
82
+ "y",
83
+ "z",
84
+ "0",
85
+ "1",
86
+ "2",
87
+ "3",
88
+ "4",
89
+ "5",
90
+ "6",
91
+ "7",
92
+ "8",
93
+ "9",
94
+ "+",
95
+ "/",
96
+ ];
97
+ /**
98
+ * CREDIT: https://gist.github.com/enepomnyaschih/72c423f727d395eeaa09697058238727
99
+ * Encodes a given Uint8Array, ArrayBuffer or string into RFC4648 base64 representation
100
+ * @param data
101
+ */
102
+ function encode(data) {
103
+ const uint8 = typeof data === "string"
104
+ ? new TextEncoder().encode(data)
105
+ : data instanceof Uint8Array
106
+ ? data
107
+ : new Uint8Array(data);
108
+ let result = "", i;
109
+ const l = uint8.length;
110
+ for (i = 2; i < l; i += 3) {
111
+ result += base64abc[uint8[i - 2] >> 2];
112
+ result += base64abc[((uint8[i - 2] & 0x03) << 4) | (uint8[i - 1] >> 4)];
113
+ result += base64abc[((uint8[i - 1] & 0x0f) << 2) | (uint8[i] >> 6)];
114
+ result += base64abc[uint8[i] & 0x3f];
115
+ }
116
+ if (i === l + 1) {
117
+ // 1 octet yet to write
118
+ result += base64abc[uint8[i - 2] >> 2];
119
+ result += base64abc[(uint8[i - 2] & 0x03) << 4];
120
+ result += "==";
121
+ }
122
+ if (i === l) {
123
+ // 2 octets yet to write
124
+ result += base64abc[uint8[i - 2] >> 2];
125
+ result += base64abc[((uint8[i - 2] & 0x03) << 4) | (uint8[i - 1] >> 4)];
126
+ result += base64abc[(uint8[i - 1] & 0x0f) << 2];
127
+ result += "=";
128
+ }
129
+ return result;
130
+ }
131
+ exports.encode = encode;
132
+ /**
133
+ * Decodes a given RFC4648 base64 encoded string
134
+ * @param b64
135
+ */
136
+ function decode(b64) {
137
+ const binString = atob(b64);
138
+ const size = binString.length;
139
+ const bytes = new Uint8Array(size);
140
+ for (let i = 0; i < size; i++) {
141
+ bytes[i] = binString.charCodeAt(i);
142
+ }
143
+ return bytes;
144
+ }
145
+ exports.decode = decode;
@@ -0,0 +1,6 @@
1
+ export declare function queue<T, R>(runner: (task: T) => R, concurrency: number): {
2
+ push: (task: T | T[]) => void;
3
+ drain: (fn?: any) => void | Promise<any>;
4
+ onError: (fn: (task: T, error: Error) => any) => (task: T, error: Error) => any;
5
+ onDone: (fn: (task: T, result: R) => any) => (task: T, result: R) => any;
6
+ };
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.queue = void 0;
4
+ function queue(runner, concurrency) {
5
+ if (concurrency <= 0) {
6
+ throw new RangeError('concurrency can only be a positive integer');
7
+ }
8
+ if (!Number.isInteger(concurrency)) {
9
+ throw new RangeError('concurrency can only be a positive integer');
10
+ }
11
+ const tasks = [];
12
+ let running = 0;
13
+ let drains = [];
14
+ let onError = () => { };
15
+ let onDone = () => { };
16
+ let drainAwaiters = [];
17
+ function drained() {
18
+ drains.forEach((d) => d());
19
+ drains = [];
20
+ drainAwaiters.forEach((s) => s());
21
+ drainAwaiters = [];
22
+ }
23
+ async function runNext() {
24
+ if (running < concurrency && tasks.length > 0) {
25
+ running++;
26
+ const task = tasks.shift();
27
+ if (task) {
28
+ try {
29
+ const result = await runner(task);
30
+ onDone(task, result);
31
+ }
32
+ catch (err) {
33
+ onError(task, err);
34
+ }
35
+ }
36
+ running--;
37
+ if (tasks.length > 0) {
38
+ queueMicrotask(runNext); // to prevent "Maximum call stack size exceeded"
39
+ }
40
+ else if (running === 0) {
41
+ drained();
42
+ }
43
+ }
44
+ }
45
+ return {
46
+ push: (task) => {
47
+ let needed = 1;
48
+ if (Array.isArray(task)) {
49
+ tasks.push(...task);
50
+ needed = task.length;
51
+ }
52
+ else {
53
+ tasks.push(task);
54
+ }
55
+ const free = concurrency - running;
56
+ for (let i = 0; i < Math.max(free, needed); i++) {
57
+ runNext();
58
+ }
59
+ },
60
+ drain: (fn) => {
61
+ if (fn) {
62
+ drains.push(fn);
63
+ }
64
+ else if (tasks.length > 0 || running > 0) {
65
+ return new Promise((resolve) => drainAwaiters.push(resolve));
66
+ }
67
+ else {
68
+ return Promise.resolve();
69
+ }
70
+ },
71
+ onError: (fn) => (onError = fn),
72
+ onDone: (fn) => (onDone = fn),
73
+ };
74
+ }
75
+ exports.queue = queue;
package/script/deps.d.ts CHANGED
@@ -5,3 +5,5 @@ export { Mutex } from "async-mutex";
5
5
  export { Parser } from "./deps/deno.land/x/html_parser@v0.1.3/src/mod.js";
6
6
  import { debug as debug_ } from "./deps/raw.githubusercontent.com/MTKruto/debug/master/mod.js";
7
7
  export declare const debug: typeof debug_;
8
+ export { queue } from "./deps/deno.land/x/q@v0.0.1/mod.js";
9
+ export { decode as base64Decode, encode as base64Encode } from "./deps/deno.land/std@0.190.0/encoding/base64.js";
package/script/deps.js CHANGED
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.debug = exports.Parser = exports.Mutex = exports.gzip = exports.gunzip = exports.initTgCrypto = exports.ige256Encrypt = exports.ige256Decrypt = exports.factorize = exports.ctr256Encrypt = exports.ctr256Decrypt = void 0;
17
+ exports.base64Encode = exports.base64Decode = exports.queue = exports.debug = exports.Parser = exports.Mutex = exports.gzip = exports.gunzip = exports.initTgCrypto = exports.ige256Encrypt = exports.ige256Decrypt = exports.factorize = exports.ctr256Encrypt = exports.ctr256Decrypt = void 0;
18
18
  __exportStar(require("./deps/deno.land/std@0.190.0/testing/asserts.js"), exports);
19
19
  var mod_js_1 = require("./deps/deno.land/x/tgcrypto@0.1.3/mod.js");
20
20
  Object.defineProperty(exports, "ctr256Decrypt", { enumerable: true, get: function () { return mod_js_1.ctr256Decrypt; } });
@@ -33,3 +33,8 @@ Object.defineProperty(exports, "Parser", { enumerable: true, get: function () {
33
33
  const mod_js_3 = require("./deps/raw.githubusercontent.com/MTKruto/debug/master/mod.js");
34
34
  const debug = (v) => (0, mod_js_3.debug)(`mtkruto__${v}`);
35
35
  exports.debug = debug;
36
+ var mod_js_4 = require("./deps/deno.land/x/q@v0.0.1/mod.js");
37
+ Object.defineProperty(exports, "queue", { enumerable: true, get: function () { return mod_js_4.queue; } });
38
+ var base64_js_1 = require("./deps/deno.land/std@0.190.0/encoding/base64.js");
39
+ Object.defineProperty(exports, "base64Decode", { enumerable: true, get: function () { return base64_js_1.decode; } });
40
+ Object.defineProperty(exports, "base64Encode", { enumerable: true, get: function () { return base64_js_1.encode; } });
package/script/mod.d.ts CHANGED
@@ -7,9 +7,9 @@ export declare const utils: {
7
7
  export { as } from "./tl/1_tl_object.js";
8
8
  export * as types from "./tl/2_types.js";
9
9
  export * as functions from "./tl/3_functions.js";
10
- export * from "./tl/4_rpc_result.js";
11
- export * from "./tl/5_message.js";
12
- export * from "./tl/6_message_container.js";
10
+ export * from "./tl/5_rpc_result.js";
11
+ export * from "./tl/6_message.js";
12
+ export * from "./tl/7_message_container.js";
13
13
  export * from "./client/client_plain.js";
14
14
  export * from "./client/client.js";
15
15
  export * from "./storage/storage.js";
package/script/mod.js CHANGED
@@ -34,9 +34,9 @@ var _1_tl_object_js_1 = require("./tl/1_tl_object.js");
34
34
  Object.defineProperty(exports, "as", { enumerable: true, get: function () { return _1_tl_object_js_1.as; } });
35
35
  exports.types = __importStar(require("./tl/2_types.js"));
36
36
  exports.functions = __importStar(require("./tl/3_functions.js"));
37
- __exportStar(require("./tl/4_rpc_result.js"), exports);
38
- __exportStar(require("./tl/5_message.js"), exports);
39
- __exportStar(require("./tl/6_message_container.js"), exports);
37
+ __exportStar(require("./tl/5_rpc_result.js"), exports);
38
+ __exportStar(require("./tl/6_message.js"), exports);
39
+ __exportStar(require("./tl/7_message_container.js"), exports);
40
40
  __exportStar(require("./client/client_plain.js"), exports);
41
41
  __exportStar(require("./client/client.js"), exports);
42
42
  __exportStar(require("./storage/storage.js"), exports);
@@ -1,5 +1,6 @@
1
1
  import { MaybePromise } from "../utilities/0_types.js";
2
2
  import { DC } from "../transport/transport_provider.js";
3
+ import * as types from "../tl/2_types.js";
3
4
  export declare abstract class Storage {
4
5
  private _authKeyId;
5
6
  abstract init(): MaybePromise<void>;
@@ -20,4 +21,21 @@ export declare abstract class Storage {
20
21
  private readonly username__;
21
22
  updateUsernames(type: "user" | "channel", id: bigint, usernames: string[]): Promise<void>;
22
23
  getUsername(username: string): Promise<readonly ["channel" | "user", bigint, Date] | null>;
24
+ private readonly state__;
25
+ setState(state: types.UpdatesState): Promise<void>;
26
+ getState(): Promise<types.UpdatesState | null>;
27
+ private readonly channelPts__;
28
+ setChannelPts(channelId: bigint, pts: number): Promise<void>;
29
+ getChannelPts(channelId: bigint): Promise<number | null>;
30
+ private readonly peer__;
31
+ setEntity(peer: types.Channel): Promise<void>;
32
+ setEntity(peer: types.Chat): Promise<void>;
33
+ setEntity(peer: types.User): Promise<void>;
34
+ getEntity(type: "channel", id: bigint): Promise<types.Channel | null>;
35
+ getEntity(type: "chat", id: bigint): Promise<types.Chat | null>;
36
+ getEntity(type: "user", id: bigint): Promise<types.User | null>;
37
+ getEntity(type: "channel" | "chat" | "user", id: bigint): Promise<types.Channel | types.Chat | types.User | null>;
38
+ private readonly accountType__;
39
+ setAccountType(type: "user" | "bot"): Promise<void>;
40
+ getAccountType(): Promise<"bot" | "user">;
23
41
  }
@@ -1,8 +1,36 @@
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
+ };
2
25
  Object.defineProperty(exports, "__esModule", { value: true });
3
26
  exports.Storage = void 0;
27
+ const deps_js_1 = require("../deps.js");
28
+ const _0_control_js_1 = require("../utilities/0_control.js");
4
29
  const _0_hash_js_1 = require("../utilities/0_hash.js");
5
30
  const _0_bigint_js_1 = require("../utilities/0_bigint.js");
31
+ const _1_tl_object_js_1 = require("../tl/1_tl_object.js");
32
+ const types = __importStar(require("../tl/2_types.js"));
33
+ const _3_tl_reader_js_1 = require("../tl/3_tl_reader.js");
6
34
  class Storage {
7
35
  constructor() {
8
36
  Object.defineProperty(this, "_authKeyId", {
@@ -29,6 +57,30 @@ class Storage {
29
57
  writable: true,
30
58
  value: "username__"
31
59
  });
60
+ Object.defineProperty(this, "state__", {
61
+ enumerable: true,
62
+ configurable: true,
63
+ writable: true,
64
+ value: "state__"
65
+ });
66
+ Object.defineProperty(this, "channelPts__", {
67
+ enumerable: true,
68
+ configurable: true,
69
+ writable: true,
70
+ value: "channelPts__"
71
+ });
72
+ Object.defineProperty(this, "peer__", {
73
+ enumerable: true,
74
+ configurable: true,
75
+ writable: true,
76
+ value: "peer__"
77
+ });
78
+ Object.defineProperty(this, "accountType__", {
79
+ enumerable: true,
80
+ configurable: true,
81
+ writable: true,
82
+ value: "accountType__"
83
+ });
32
84
  }
33
85
  setDc(dc) {
34
86
  return this.set("dc", dc);
@@ -98,5 +150,79 @@ class Storage {
98
150
  return null;
99
151
  }
100
152
  }
153
+ async setState(state) {
154
+ await this.set(this.state__, JSON.stringify({
155
+ date: state.date,
156
+ pts: state.pts,
157
+ qts: state.qts,
158
+ seq: state.seq,
159
+ unreadCount: state.unreadCount,
160
+ }));
161
+ }
162
+ async getState() {
163
+ const state__ = await this.get(this.state__);
164
+ if (state__ != null) {
165
+ const state_ = JSON.parse(state__);
166
+ return new types.UpdatesState({
167
+ date: state_.date,
168
+ pts: state_.pts,
169
+ qts: state_.qts,
170
+ seq: state_.seq,
171
+ unreadCount: state_.unreadCount,
172
+ });
173
+ }
174
+ else {
175
+ return null;
176
+ }
177
+ }
178
+ async setChannelPts(channelId, pts) {
179
+ await this.set(`${this.channelPts__}${channelId}`, String(pts));
180
+ }
181
+ async getChannelPts(channelId) {
182
+ const pts = await this.get(`${this.channelPts__}${channelId}`);
183
+ if (pts != null) {
184
+ return Number(pts);
185
+ }
186
+ else {
187
+ return null;
188
+ }
189
+ }
190
+ async setEntity(peer) {
191
+ const type = peer instanceof types.Channel ? "channel" : peer instanceof types.Chat ? "chat" : peer instanceof types.User ? "user" : (0, _0_control_js_1.UNREACHABLE)();
192
+ await this.set(`${this.peer__}${type}${peer.id}`, (0, deps_js_1.base64Encode)(peer[_1_tl_object_js_1.serialize]()));
193
+ }
194
+ async getEntity(type, id) {
195
+ const peer_ = await this.get(`${this.peer__}${type}${id}`);
196
+ if (peer_ != null) {
197
+ const reader = new _3_tl_reader_js_1.TLReader((0, deps_js_1.base64Decode)(peer_));
198
+ return reader.readObject();
199
+ }
200
+ else {
201
+ return null;
202
+ }
203
+ }
204
+ async setAccountType(type) {
205
+ try {
206
+ await this.getAccountType();
207
+ (0, _0_control_js_1.UNREACHABLE)();
208
+ }
209
+ catch (err) {
210
+ if (!(err instanceof Error) || !(err.message == "Unreachable")) {
211
+ throw err;
212
+ }
213
+ else {
214
+ await this.set(this.accountType__, type);
215
+ }
216
+ }
217
+ }
218
+ async getAccountType() {
219
+ const accountType = await this.get(this.accountType__);
220
+ if (accountType != null) {
221
+ return accountType;
222
+ }
223
+ else {
224
+ (0, _0_control_js_1.UNREACHABLE)();
225
+ }
226
+ }
101
227
  }
102
228
  exports.Storage = Storage;
@@ -31,7 +31,6 @@ export declare abstract class TLObject {
31
31
  [serialize](): Uint8Array;
32
32
  [as]<T extends TLObjectConstructor<InstanceType<T>>>(constructor: T): InstanceType<T>;
33
33
  }
34
- export type MaybeVectorTLObject = TLObject | Array<MaybeVectorTLObject | TLObject>;
35
34
  export interface TLObjectConstructor<T = TLObject> {
36
35
  new (params: any): T;
37
36
  [paramDesc]: ParamDesc;
@@ -33,7 +33,7 @@ function serializeSingleParam(writer, value, type, ntype) {
33
33
  return;
34
34
  }
35
35
  else {
36
- throw new TypeError(`Expected ${type.name}`);
36
+ throw new TypeError(`Expected ${type.name} but received ${value == null ? null : value.constructor.name}`);
37
37
  }
38
38
  }
39
39
  if (type == Uint8Array) {
@@ -0,0 +1,5 @@
1
+ import { TLRawWriter } from "./0_tl_raw_writer.js";
2
+ import { ReadObject } from "./3_tl_reader.js";
3
+ export declare class TLWriter extends TLRawWriter {
4
+ writeObject(object: ReadObject): this;
5
+ }