@mtcute/convert 0.17.0 → 0.18.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.
Files changed (113) hide show
  1. package/convert/src/dcs.cjs +119 -0
  2. package/convert/src/dcs.js +114 -0
  3. package/convert/src/gramjs/convert.cjs +30 -0
  4. package/convert/src/gramjs/convert.js +25 -0
  5. package/convert/src/gramjs/parse.cjs +33 -0
  6. package/convert/src/gramjs/parse.js +28 -0
  7. package/convert/src/gramjs/serialize.cjs +26 -0
  8. package/convert/src/gramjs/serialize.js +21 -0
  9. package/convert/src/mtkruto/convert.cjs +33 -0
  10. package/convert/src/mtkruto/convert.js +28 -0
  11. package/convert/src/mtkruto/parse.cjs +31 -0
  12. package/convert/src/mtkruto/parse.js +26 -0
  13. package/convert/src/mtkruto/serialize.cjs +18 -0
  14. package/convert/src/mtkruto/serialize.js +13 -0
  15. package/convert/src/pyrogram/convert.cjs +42 -0
  16. package/convert/src/pyrogram/convert.js +37 -0
  17. package/convert/src/pyrogram/parse.cjs +52 -0
  18. package/convert/src/pyrogram/parse.js +47 -0
  19. package/convert/src/pyrogram/serialize.cjs +40 -0
  20. package/convert/src/pyrogram/serialize.js +35 -0
  21. package/convert/src/tdesktop/convert.cjs +66 -0
  22. package/convert/src/tdesktop/convert.js +61 -0
  23. package/convert/src/tdesktop/qt-bundle.cjs +11 -0
  24. package/convert/src/tdesktop/qt-bundle.js +6 -0
  25. package/convert/src/tdesktop/qt-reader.cjs +38 -0
  26. package/convert/src/tdesktop/qt-reader.js +33 -0
  27. package/convert/src/tdesktop/qt-writer.cjs +34 -0
  28. package/convert/src/tdesktop/qt-writer.js +29 -0
  29. package/convert/src/tdesktop/tdata.cjs +359 -0
  30. package/convert/src/tdesktop/tdata.js +332 -0
  31. package/convert/src/telethon/convert.cjs +47 -0
  32. package/convert/src/telethon/convert.js +42 -0
  33. package/convert/src/telethon/parse.cjs +39 -0
  34. package/convert/src/telethon/parse.js +34 -0
  35. package/convert/src/telethon/serialize.cjs +34 -0
  36. package/convert/src/telethon/serialize.js +29 -0
  37. package/convert/src/utils/crypto.cjs +53 -0
  38. package/convert/src/utils/crypto.js +26 -0
  39. package/convert/src/utils/rle.cjs +49 -0
  40. package/convert/src/utils/rle.js +44 -0
  41. package/dcs.d.cts +4 -0
  42. package/gramjs/__fixtures__/session.d.cts +1 -0
  43. package/gramjs/convert.d.cts +4 -0
  44. package/gramjs/convert.test.d.cts +1 -0
  45. package/gramjs/index.d.cts +4 -0
  46. package/gramjs/parse.d.cts +2 -0
  47. package/gramjs/parse.test.d.cts +1 -0
  48. package/gramjs/serialize.d.cts +2 -0
  49. package/gramjs/serialize.test.d.cts +1 -0
  50. package/gramjs/types.d.cts +7 -0
  51. package/index.cjs +41 -488
  52. package/index.d.cts +1 -0
  53. package/index.d.ts +1 -0
  54. package/index.js +20 -467
  55. package/mtkruto/__fixtures__/session.d.cts +1 -0
  56. package/mtkruto/convert.d.cts +4 -0
  57. package/mtkruto/convert.test.d.cts +1 -0
  58. package/mtkruto/index.d.cts +4 -0
  59. package/mtkruto/parse.d.cts +2 -0
  60. package/mtkruto/parse.test.d.cts +1 -0
  61. package/mtkruto/serialize.d.cts +2 -0
  62. package/mtkruto/serialize.test.d.cts +1 -0
  63. package/mtkruto/types.d.cts +5 -0
  64. package/node/src/utils/crypto.cjs +75 -0
  65. package/node/src/utils/crypto.js +69 -0
  66. package/node/src/utils.cjs +34 -0
  67. package/node/src/utils.js +7 -0
  68. package/package.json +12 -9
  69. package/pyrogram/__fixtures__/session.d.cts +1 -0
  70. package/pyrogram/__fixtures__/session_old.d.cts +1 -0
  71. package/pyrogram/convert.d.cts +6 -0
  72. package/pyrogram/convert.test.d.cts +1 -0
  73. package/pyrogram/index.d.cts +4 -0
  74. package/pyrogram/parse.d.cts +2 -0
  75. package/pyrogram/parse.test.d.cts +1 -0
  76. package/pyrogram/serialize.d.cts +2 -0
  77. package/pyrogram/serialize.test.d.cts +1 -0
  78. package/pyrogram/types.d.cts +8 -0
  79. package/tdesktop/convert.d.cts +5 -0
  80. package/tdesktop/convert.d.ts +5 -0
  81. package/tdesktop/index.d.cts +5 -0
  82. package/tdesktop/index.d.ts +5 -0
  83. package/tdesktop/qt-bundle.d.cts +3 -0
  84. package/tdesktop/qt-bundle.d.ts +3 -0
  85. package/tdesktop/qt-reader.d.cts +6 -0
  86. package/tdesktop/qt-reader.d.ts +6 -0
  87. package/tdesktop/qt-writer.d.cts +6 -0
  88. package/tdesktop/qt-writer.d.ts +6 -0
  89. package/tdesktop/tdata.d.cts +65 -0
  90. package/tdesktop/tdata.d.ts +65 -0
  91. package/tdesktop/tdata.test.d.cts +1 -0
  92. package/tdesktop/tdata.test.d.ts +1 -0
  93. package/tdesktop/types.d.cts +22 -0
  94. package/tdesktop/types.d.ts +22 -0
  95. package/telethon/__fixtures__/session.d.cts +1 -0
  96. package/telethon/__fixtures__/session_v6.d.cts +1 -0
  97. package/telethon/convert.d.cts +4 -0
  98. package/telethon/convert.test.d.cts +1 -0
  99. package/telethon/index.d.cts +4 -0
  100. package/telethon/parse.d.cts +2 -0
  101. package/telethon/parse.test.d.cts +1 -0
  102. package/telethon/serialize.d.cts +2 -0
  103. package/telethon/serialize.test.d.cts +1 -0
  104. package/telethon/types.d.cts +7 -0
  105. package/types.d.cts +0 -0
  106. package/utils/crypto.d.cts +9 -0
  107. package/utils/crypto.d.ts +9 -0
  108. package/utils/fs.d.cts +11 -0
  109. package/utils/fs.d.ts +11 -0
  110. package/utils/rle.d.cts +3 -0
  111. package/wasm/src/index.cjs +64 -0
  112. package/wasm/src/index.js +59 -0
  113. package/utils/ip.d.ts +0 -3
@@ -0,0 +1,52 @@
1
+ if (typeof globalThis !== "undefined" && !globalThis._MTCUTE_CJS_DEPRECATION_WARNED) {
2
+ globalThis._MTCUTE_CJS_DEPRECATION_WARNED = true;
3
+ console.warn("[mtcute-workspace] CommonJS support is deprecated and will be removed in 0.20.0. Please consider switching to ESM, it's " + (/* @__PURE__ */ new Date()).getFullYear() + " already.");
4
+ console.warn("[mtcute-workspace] Learn more about switching to ESM: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c");
5
+ }
6
+ "use strict";
7
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
8
+ const utils = require("@fuman/utils");
9
+ const core = require("@mtcute/core");
10
+ const utils_js = require("@mtcute/core/utils.js");
11
+ const SESSION_STRING_SIZE = 351;
12
+ const SESSION_STRING_SIZE_64 = 356;
13
+ function parsePyrogramSession(session) {
14
+ const data = utils.base64.decode(session, true);
15
+ const dv = utils.typed.toDataView(data);
16
+ if (session.length === SESSION_STRING_SIZE || session.length === SESSION_STRING_SIZE_64) {
17
+ const dcId2 = dv.getUint8(0);
18
+ const isTest2 = dv.getUint8(1) !== 0;
19
+ const authKey2 = data.subarray(2, 258);
20
+ let userId2;
21
+ if (data.length === SESSION_STRING_SIZE) {
22
+ userId2 = dv.getUint32(258);
23
+ } else {
24
+ const high = dv.getUint32(258);
25
+ const low = dv.getUint32(262);
26
+ userId2 = core.Long.fromBits(low, high).toNumber();
27
+ }
28
+ const isBot2 = dv.getUint8(data.length - 1) !== 0;
29
+ return {
30
+ dcId: dcId2,
31
+ isTest: isTest2,
32
+ authKey: authKey2,
33
+ userId: userId2,
34
+ isBot: isBot2
35
+ };
36
+ }
37
+ const dcId = dv.getUint8(0);
38
+ const apiId = dv.getUint32(1);
39
+ const isTest = dv.getUint8(5) !== 0;
40
+ const authKey = data.subarray(6, 262);
41
+ const userId = utils_js.longFromBuffer(data.subarray(262, 270), true, false).toNumber();
42
+ const isBot = dv.getUint8(270) !== 0;
43
+ return {
44
+ dcId,
45
+ apiId,
46
+ isTest,
47
+ authKey,
48
+ userId,
49
+ isBot
50
+ };
51
+ }
52
+ exports.parsePyrogramSession = parsePyrogramSession;
@@ -0,0 +1,47 @@
1
+ import { base64, typed } from "@fuman/utils";
2
+ import { Long } from "@mtcute/core";
3
+ import { longFromBuffer } from "@mtcute/core/utils.js";
4
+ const SESSION_STRING_SIZE = 351;
5
+ const SESSION_STRING_SIZE_64 = 356;
6
+ function parsePyrogramSession(session) {
7
+ const data = base64.decode(session, true);
8
+ const dv = typed.toDataView(data);
9
+ if (session.length === SESSION_STRING_SIZE || session.length === SESSION_STRING_SIZE_64) {
10
+ const dcId2 = dv.getUint8(0);
11
+ const isTest2 = dv.getUint8(1) !== 0;
12
+ const authKey2 = data.subarray(2, 258);
13
+ let userId2;
14
+ if (data.length === SESSION_STRING_SIZE) {
15
+ userId2 = dv.getUint32(258);
16
+ } else {
17
+ const high = dv.getUint32(258);
18
+ const low = dv.getUint32(262);
19
+ userId2 = Long.fromBits(low, high).toNumber();
20
+ }
21
+ const isBot2 = dv.getUint8(data.length - 1) !== 0;
22
+ return {
23
+ dcId: dcId2,
24
+ isTest: isTest2,
25
+ authKey: authKey2,
26
+ userId: userId2,
27
+ isBot: isBot2
28
+ };
29
+ }
30
+ const dcId = dv.getUint8(0);
31
+ const apiId = dv.getUint32(1);
32
+ const isTest = dv.getUint8(5) !== 0;
33
+ const authKey = data.subarray(6, 262);
34
+ const userId = longFromBuffer(data.subarray(262, 270), true, false).toNumber();
35
+ const isBot = dv.getUint8(270) !== 0;
36
+ return {
37
+ dcId,
38
+ apiId,
39
+ isTest,
40
+ authKey,
41
+ userId,
42
+ isBot
43
+ };
44
+ }
45
+ export {
46
+ parsePyrogramSession
47
+ };
@@ -0,0 +1,40 @@
1
+ if (typeof globalThis !== "undefined" && !globalThis._MTCUTE_CJS_DEPRECATION_WARNED) {
2
+ globalThis._MTCUTE_CJS_DEPRECATION_WARNED = true;
3
+ console.warn("[mtcute-workspace] CommonJS support is deprecated and will be removed in 0.20.0. Please consider switching to ESM, it's " + (/* @__PURE__ */ new Date()).getFullYear() + " already.");
4
+ console.warn("[mtcute-workspace] Learn more about switching to ESM: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c");
5
+ }
6
+ "use strict";
7
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
8
+ const utils = require("@fuman/utils");
9
+ const core = require("@mtcute/core");
10
+ const SESSION_STRING_SIZE_OLD = 267;
11
+ const SESSION_STRING_SIZE = 271;
12
+ function serializePyrogramSession(session) {
13
+ if (session.authKey.length !== 256) {
14
+ throw new core.MtArgumentError("authKey must be 256 bytes long");
15
+ }
16
+ const userIdLong = core.Long.fromNumber(session.userId, true);
17
+ let buf;
18
+ if (session.apiId === void 0) {
19
+ buf = utils.u8.alloc(SESSION_STRING_SIZE_OLD);
20
+ const dv = utils.typed.toDataView(buf);
21
+ dv.setUint8(0, session.dcId);
22
+ dv.setUint8(1, session.isTest ? 1 : 0);
23
+ buf.set(session.authKey, 2);
24
+ dv.setUint32(258, userIdLong.high);
25
+ dv.setUint32(262, userIdLong.low);
26
+ dv.setUint8(266, session.isBot ? 1 : 0);
27
+ } else {
28
+ buf = utils.u8.alloc(SESSION_STRING_SIZE);
29
+ const dv = utils.typed.toDataView(buf);
30
+ dv.setUint8(0, session.dcId);
31
+ dv.setUint32(1, session.apiId);
32
+ dv.setUint8(5, session.isTest ? 1 : 0);
33
+ buf.set(session.authKey, 6);
34
+ dv.setUint32(262, userIdLong.high);
35
+ dv.setUint32(266, userIdLong.low);
36
+ dv.setUint8(270, session.isBot ? 1 : 0);
37
+ }
38
+ return utils.base64.encode(buf, true);
39
+ }
40
+ exports.serializePyrogramSession = serializePyrogramSession;
@@ -0,0 +1,35 @@
1
+ import { u8, typed, base64 } from "@fuman/utils";
2
+ import { MtArgumentError, Long } from "@mtcute/core";
3
+ const SESSION_STRING_SIZE_OLD = 267;
4
+ const SESSION_STRING_SIZE = 271;
5
+ function serializePyrogramSession(session) {
6
+ if (session.authKey.length !== 256) {
7
+ throw new MtArgumentError("authKey must be 256 bytes long");
8
+ }
9
+ const userIdLong = Long.fromNumber(session.userId, true);
10
+ let buf;
11
+ if (session.apiId === void 0) {
12
+ buf = u8.alloc(SESSION_STRING_SIZE_OLD);
13
+ const dv = typed.toDataView(buf);
14
+ dv.setUint8(0, session.dcId);
15
+ dv.setUint8(1, session.isTest ? 1 : 0);
16
+ buf.set(session.authKey, 2);
17
+ dv.setUint32(258, userIdLong.high);
18
+ dv.setUint32(262, userIdLong.low);
19
+ dv.setUint8(266, session.isBot ? 1 : 0);
20
+ } else {
21
+ buf = u8.alloc(SESSION_STRING_SIZE);
22
+ const dv = typed.toDataView(buf);
23
+ dv.setUint8(0, session.dcId);
24
+ dv.setUint32(1, session.apiId);
25
+ dv.setUint8(5, session.isTest ? 1 : 0);
26
+ buf.set(session.authKey, 6);
27
+ dv.setUint32(262, userIdLong.high);
28
+ dv.setUint32(266, userIdLong.low);
29
+ dv.setUint8(270, session.isBot ? 1 : 0);
30
+ }
31
+ return base64.encode(buf, true);
32
+ }
33
+ export {
34
+ serializePyrogramSession
35
+ };
@@ -0,0 +1,66 @@
1
+ if (typeof globalThis !== "undefined" && !globalThis._MTCUTE_CJS_DEPRECATION_WARNED) {
2
+ globalThis._MTCUTE_CJS_DEPRECATION_WARNED = true;
3
+ console.warn("[mtcute-workspace] CommonJS support is deprecated and will be removed in 0.20.0. Please consider switching to ESM, it's " + (/* @__PURE__ */ new Date()).getFullYear() + " already.");
4
+ console.warn("[mtcute-workspace] Learn more about switching to ESM: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c");
5
+ }
6
+ "use strict";
7
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
8
+ const core = require("@mtcute/core");
9
+ const utils_js = require("@mtcute/core/utils.js");
10
+ const dcs = require("../dcs.cjs");
11
+ const tdata = require("./tdata.cjs");
12
+ async function convertFromTdata(tdata$1, accountIdx = 0) {
13
+ if (!(tdata$1 instanceof tdata.Tdata)) {
14
+ tdata$1 = await tdata.Tdata.open(tdata$1);
15
+ }
16
+ const auth = await tdata$1.readMtpAuthorization(accountIdx);
17
+ const authKey = auth.authKeys.find((it) => it.dcId === auth.mainDcId);
18
+ if (!authKey) throw new Error("Failed to find auth key");
19
+ return {
20
+ version: 3,
21
+ primaryDcs: dcs.DC_MAPPING_PROD[auth.mainDcId],
22
+ authKey: authKey.key,
23
+ self: {
24
+ userId: auth.userId.toNumber(),
25
+ isBot: false,
26
+ isPremium: false,
27
+ usernames: []
28
+ }
29
+ };
30
+ }
31
+ async function convertToTdata(sessions, tdata$1) {
32
+ if (!Array.isArray(sessions)) {
33
+ sessions = [sessions];
34
+ }
35
+ if (!(tdata$1 instanceof tdata.Tdata)) {
36
+ const keyData = {
37
+ count: sessions.length,
38
+ order: Array.from({ length: sessions.length }, (_, i) => i),
39
+ active: 0
40
+ };
41
+ tdata$1 = await tdata.Tdata.create({
42
+ keyData,
43
+ ...tdata$1
44
+ });
45
+ }
46
+ for (let i = 0; i < sessions.length; i++) {
47
+ let session = sessions[i];
48
+ if (typeof session === "string") {
49
+ session = utils_js.readStringSession(session);
50
+ }
51
+ await tdata$1.writeMtpAuthorization({
52
+ userId: core.Long.fromNumber(session.self?.userId ?? 0),
53
+ mainDcId: session.primaryDcs.main.id,
54
+ authKeys: [
55
+ {
56
+ dcId: session.primaryDcs.main.id,
57
+ key: session.authKey
58
+ }
59
+ ],
60
+ authKeysToDestroy: []
61
+ }, i);
62
+ await tdata$1.writeEmptyMapFile(i);
63
+ }
64
+ }
65
+ exports.convertFromTdata = convertFromTdata;
66
+ exports.convertToTdata = convertToTdata;
@@ -0,0 +1,61 @@
1
+ import { Long } from "@mtcute/core";
2
+ import { readStringSession } from "@mtcute/core/utils.js";
3
+ import { DC_MAPPING_PROD } from "../dcs.js";
4
+ import { Tdata } from "./tdata.js";
5
+ async function convertFromTdata(tdata, accountIdx = 0) {
6
+ if (!(tdata instanceof Tdata)) {
7
+ tdata = await Tdata.open(tdata);
8
+ }
9
+ const auth = await tdata.readMtpAuthorization(accountIdx);
10
+ const authKey = auth.authKeys.find((it) => it.dcId === auth.mainDcId);
11
+ if (!authKey) throw new Error("Failed to find auth key");
12
+ return {
13
+ version: 3,
14
+ primaryDcs: DC_MAPPING_PROD[auth.mainDcId],
15
+ authKey: authKey.key,
16
+ self: {
17
+ userId: auth.userId.toNumber(),
18
+ isBot: false,
19
+ isPremium: false,
20
+ usernames: []
21
+ }
22
+ };
23
+ }
24
+ async function convertToTdata(sessions, tdata) {
25
+ if (!Array.isArray(sessions)) {
26
+ sessions = [sessions];
27
+ }
28
+ if (!(tdata instanceof Tdata)) {
29
+ const keyData = {
30
+ count: sessions.length,
31
+ order: Array.from({ length: sessions.length }, (_, i) => i),
32
+ active: 0
33
+ };
34
+ tdata = await Tdata.create({
35
+ keyData,
36
+ ...tdata
37
+ });
38
+ }
39
+ for (let i = 0; i < sessions.length; i++) {
40
+ let session = sessions[i];
41
+ if (typeof session === "string") {
42
+ session = readStringSession(session);
43
+ }
44
+ await tdata.writeMtpAuthorization({
45
+ userId: Long.fromNumber(session.self?.userId ?? 0),
46
+ mainDcId: session.primaryDcs.main.id,
47
+ authKeys: [
48
+ {
49
+ dcId: session.primaryDcs.main.id,
50
+ key: session.authKey
51
+ }
52
+ ],
53
+ authKeysToDestroy: []
54
+ }, i);
55
+ await tdata.writeEmptyMapFile(i);
56
+ }
57
+ }
58
+ export {
59
+ convertFromTdata,
60
+ convertToTdata
61
+ };
@@ -0,0 +1,11 @@
1
+ if (typeof globalThis !== "undefined" && !globalThis._MTCUTE_CJS_DEPRECATION_WARNED) {
2
+ globalThis._MTCUTE_CJS_DEPRECATION_WARNED = true;
3
+ console.warn("[mtcute-workspace] CommonJS support is deprecated and will be removed in 0.20.0. Please consider switching to ESM, it's " + (/* @__PURE__ */ new Date()).getFullYear() + " already.");
4
+ console.warn("[mtcute-workspace] Learn more about switching to ESM: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c");
5
+ }
6
+ "use strict";
7
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
8
+ const qtReader = require("./qt-reader.cjs");
9
+ const qtWriter = require("./qt-writer.cjs");
10
+ exports.read = qtReader;
11
+ exports.write = qtWriter;
@@ -0,0 +1,6 @@
1
+ import * as qtReader from "./qt-reader.js";
2
+ import * as qtWriter from "./qt-writer.js";
3
+ export {
4
+ qtReader as read,
5
+ qtWriter as write
6
+ };
@@ -0,0 +1,38 @@
1
+ if (typeof globalThis !== "undefined" && !globalThis._MTCUTE_CJS_DEPRECATION_WARNED) {
2
+ globalThis._MTCUTE_CJS_DEPRECATION_WARNED = true;
3
+ console.warn("[mtcute-workspace] CommonJS support is deprecated and will be removed in 0.20.0. Please consider switching to ESM, it's " + (/* @__PURE__ */ new Date()).getFullYear() + " already.");
4
+ console.warn("[mtcute-workspace] Learn more about switching to ESM: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c");
5
+ }
6
+ "use strict";
7
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
8
+ const io = require("@fuman/io");
9
+ const utils = require("@fuman/utils");
10
+ const core = require("@mtcute/core");
11
+ function readQByteArray(readable) {
12
+ const length = io.read.uint32be(readable);
13
+ if (length === 0 || length === 4294967295) {
14
+ return utils.u8.empty;
15
+ }
16
+ return io.read.exactly(readable, length);
17
+ }
18
+ function readLong(readable) {
19
+ const high = io.read.int32be(readable);
20
+ const low = io.read.int32be(readable);
21
+ return new core.Long(low, high);
22
+ }
23
+ function readCharArray(readable) {
24
+ const buf = readQByteArray(readable);
25
+ if (buf.length > 0) {
26
+ return buf.subarray(0, buf.length - 1);
27
+ }
28
+ return buf;
29
+ }
30
+ const u16Decoder = new TextDecoder("utf-16be");
31
+ function readQString(readable) {
32
+ const bytes = readQByteArray(readable);
33
+ return u16Decoder.decode(bytes);
34
+ }
35
+ exports.readCharArray = readCharArray;
36
+ exports.readLong = readLong;
37
+ exports.readQByteArray = readQByteArray;
38
+ exports.readQString = readQString;
@@ -0,0 +1,33 @@
1
+ import { read } from "@fuman/io";
2
+ import { u8 } from "@fuman/utils";
3
+ import { Long } from "@mtcute/core";
4
+ function readQByteArray(readable) {
5
+ const length = read.uint32be(readable);
6
+ if (length === 0 || length === 4294967295) {
7
+ return u8.empty;
8
+ }
9
+ return read.exactly(readable, length);
10
+ }
11
+ function readLong(readable) {
12
+ const high = read.int32be(readable);
13
+ const low = read.int32be(readable);
14
+ return new Long(low, high);
15
+ }
16
+ function readCharArray(readable) {
17
+ const buf = readQByteArray(readable);
18
+ if (buf.length > 0) {
19
+ return buf.subarray(0, buf.length - 1);
20
+ }
21
+ return buf;
22
+ }
23
+ const u16Decoder = new TextDecoder("utf-16be");
24
+ function readQString(readable) {
25
+ const bytes = readQByteArray(readable);
26
+ return u16Decoder.decode(bytes);
27
+ }
28
+ export {
29
+ readCharArray,
30
+ readLong,
31
+ readQByteArray,
32
+ readQString
33
+ };
@@ -0,0 +1,34 @@
1
+ if (typeof globalThis !== "undefined" && !globalThis._MTCUTE_CJS_DEPRECATION_WARNED) {
2
+ globalThis._MTCUTE_CJS_DEPRECATION_WARNED = true;
3
+ console.warn("[mtcute-workspace] CommonJS support is deprecated and will be removed in 0.20.0. Please consider switching to ESM, it's " + (/* @__PURE__ */ new Date()).getFullYear() + " already.");
4
+ console.warn("[mtcute-workspace] Learn more about switching to ESM: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c");
5
+ }
6
+ "use strict";
7
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
8
+ const io = require("@fuman/io");
9
+ const utils = require("@fuman/utils");
10
+ function writeQByteArray(into, buf) {
11
+ io.write.uint32be(into, buf.length);
12
+ io.write.bytes(into, buf);
13
+ }
14
+ function writeLong(into, long) {
15
+ io.write.int32be(into, long.high);
16
+ io.write.int32be(into, long.low);
17
+ }
18
+ function writeCharArray(into, buf) {
19
+ const bytes = utils.u8.alloc(buf.length + 1);
20
+ bytes.set(buf);
21
+ bytes[buf.length] = 0;
22
+ writeQByteArray(into, bytes);
23
+ }
24
+ function writeQString(into, str) {
25
+ const length = str.length * 2;
26
+ io.write.uint32be(into, length);
27
+ for (let i = 0; i < length; i++) {
28
+ io.write.uint16be(into, str.charCodeAt(i));
29
+ }
30
+ }
31
+ exports.writeCharArray = writeCharArray;
32
+ exports.writeLong = writeLong;
33
+ exports.writeQByteArray = writeQByteArray;
34
+ exports.writeQString = writeQString;
@@ -0,0 +1,29 @@
1
+ import { write } from "@fuman/io";
2
+ import { u8 } from "@fuman/utils";
3
+ function writeQByteArray(into, buf) {
4
+ write.uint32be(into, buf.length);
5
+ write.bytes(into, buf);
6
+ }
7
+ function writeLong(into, long) {
8
+ write.int32be(into, long.high);
9
+ write.int32be(into, long.low);
10
+ }
11
+ function writeCharArray(into, buf) {
12
+ const bytes = u8.alloc(buf.length + 1);
13
+ bytes.set(buf);
14
+ bytes[buf.length] = 0;
15
+ writeQByteArray(into, bytes);
16
+ }
17
+ function writeQString(into, str) {
18
+ const length = str.length * 2;
19
+ write.uint32be(into, length);
20
+ for (let i = 0; i < length; i++) {
21
+ write.uint16be(into, str.charCodeAt(i));
22
+ }
23
+ }
24
+ export {
25
+ writeCharArray,
26
+ writeLong,
27
+ writeQByteArray,
28
+ writeQString
29
+ };