@mtcute/core 0.7.0 → 0.7.2
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/cjs/highlevel/base.js +2 -2
- package/cjs/highlevel/base.js.map +1 -1
- package/cjs/highlevel/base.test.js +14 -0
- package/cjs/highlevel/base.test.js.map +1 -0
- package/cjs/highlevel/client.d.ts +1 -1
- package/cjs/highlevel/client.js.map +1 -1
- package/cjs/highlevel/client.types.d.ts +1 -1
- package/cjs/highlevel/client.types.js.map +1 -1
- package/cjs/highlevel/methods/_imports.js.map +1 -1
- package/cjs/highlevel/methods/auth/start.d.ts +1 -1
- package/cjs/highlevel/methods/auth/start.js.map +1 -1
- package/cjs/highlevel/methods.d.ts +239 -0
- package/cjs/highlevel/methods.js +487 -0
- package/cjs/highlevel/methods.js.map +1 -0
- package/cjs/highlevel/utils/index.d.ts +1 -0
- package/cjs/highlevel/utils/index.js +2 -1
- package/cjs/highlevel/utils/index.js.map +1 -1
- package/cjs/highlevel/utils/stream-utils.test.js +1 -1
- package/cjs/highlevel/utils/stream-utils.test.js.map +1 -1
- package/cjs/highlevel/utils/string-session.d.ts +12 -0
- package/cjs/{utils → highlevel/utils}/string-session.js +32 -10
- package/cjs/highlevel/utils/string-session.js.map +1 -0
- package/cjs/{utils → highlevel/utils}/string-session.test.js +85 -18
- package/cjs/highlevel/utils/string-session.test.js.map +1 -0
- package/cjs/highlevel/worker/port.d.ts +1 -1
- package/cjs/network/network-manager.js +1 -1
- package/cjs/network/transports/tcp.test.js +1 -1
- package/cjs/network/transports/tcp.test.js.map +1 -1
- package/cjs/utils/crypto/node.test.js +1 -1
- package/cjs/utils/crypto/node.test.js.map +1 -1
- package/cjs/utils/index.d.ts +0 -1
- package/cjs/utils/index.js +0 -1
- package/cjs/utils/index.js.map +1 -1
- package/cjs/utils/logger.test.js +1 -1
- package/cjs/utils/logger.test.js.map +1 -1
- package/cjs/utils/platform/logging.js +1 -2
- package/cjs/utils/platform/logging.js.map +1 -1
- package/esm/highlevel/base.js +2 -2
- package/esm/highlevel/base.js.map +1 -1
- package/esm/highlevel/base.test.d.ts +1 -0
- package/esm/highlevel/base.test.js +12 -0
- package/esm/highlevel/base.test.js.map +1 -0
- package/esm/highlevel/client.d.ts +1 -1
- package/esm/highlevel/client.js.map +1 -1
- package/esm/highlevel/client.types.d.ts +1 -1
- package/esm/highlevel/client.types.js.map +1 -1
- package/esm/highlevel/methods/_imports.js.map +1 -1
- package/esm/highlevel/methods/auth/start.d.ts +1 -1
- package/esm/highlevel/methods/auth/start.js.map +1 -1
- package/esm/highlevel/methods.d.ts +239 -0
- package/esm/highlevel/methods.js +241 -0
- package/esm/highlevel/methods.js.map +1 -0
- package/esm/highlevel/utils/index.d.ts +1 -0
- package/esm/highlevel/utils/index.js +2 -1
- package/esm/highlevel/utils/index.js.map +1 -1
- package/esm/highlevel/utils/stream-utils.test.js +1 -1
- package/esm/highlevel/utils/stream-utils.test.js.map +1 -1
- package/esm/highlevel/utils/string-session.d.ts +12 -0
- package/esm/{utils → highlevel/utils}/string-session.js +33 -11
- package/esm/highlevel/utils/string-session.js.map +1 -0
- package/esm/highlevel/utils/string-session.test.d.ts +1 -0
- package/esm/{utils → highlevel/utils}/string-session.test.js +85 -18
- package/esm/highlevel/utils/string-session.test.js.map +1 -0
- package/esm/highlevel/worker/port.d.ts +1 -1
- package/esm/network/network-manager.js +1 -1
- package/esm/network/transports/tcp.test.js +1 -1
- package/esm/network/transports/tcp.test.js.map +1 -1
- package/esm/utils/crypto/node.test.js +1 -1
- package/esm/utils/crypto/node.test.js.map +1 -1
- package/esm/utils/index.d.ts +0 -1
- package/esm/utils/index.js +0 -1
- package/esm/utils/index.js.map +1 -1
- package/esm/utils/logger.test.js +1 -1
- package/esm/utils/logger.test.js.map +1 -1
- package/esm/utils/platform/logging.js +1 -2
- package/esm/utils/platform/logging.js.map +1 -1
- package/package.json +5 -5
- package/cjs/utils/string-session.d.ts +0 -12
- package/cjs/utils/string-session.js.map +0 -1
- package/cjs/utils/string-session.test.js.map +0 -1
- package/esm/utils/string-session.d.ts +0 -12
- package/esm/utils/string-session.js.map +0 -1
- package/esm/utils/string-session.test.js.map +0 -1
- /package/cjs/{utils/string-session.test.d.ts → highlevel/base.test.d.ts} +0 -0
- /package/{esm → cjs/highlevel}/utils/string-session.test.d.ts +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
// todo: merge this with the main utils dir
|
|
2
|
+
// todo: merge this with the main utils dir?
|
|
3
3
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
4
|
if (k2 === undefined) k2 = k;
|
|
5
5
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
@@ -22,5 +22,6 @@ __exportStar(require("./misc-utils.js"), exports);
|
|
|
22
22
|
__exportStar(require("./peer-utils.js"), exports);
|
|
23
23
|
__exportStar(require("./rps-meter.js"), exports);
|
|
24
24
|
__exportStar(require("./stream-utils.js"), exports);
|
|
25
|
+
__exportStar(require("./string-session.js"), exports);
|
|
25
26
|
__exportStar(require("./voice-utils.js"), exports);
|
|
26
27
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/highlevel/utils/index.ts"],"names":[],"mappings":";AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/highlevel/utils/index.ts"],"names":[],"mappings":";AAAA,4CAA4C;;;;;;;;;;;;;;;;AAE5C,kDAA+B;AAC/B,oDAAiC;AACjC,mDAAgC;AAChC,kDAA+B;AAC/B,kDAA+B;AAC/B,iDAA8B;AAC9B,oDAAiC;AACjC,sDAAmC;AACnC,mDAAgC","sourcesContent":["// todo: merge this with the main utils dir?\n\nexport * from './file-utils.js'\nexport * from './inline-utils.js'\nexport * from './inspectable.js'\nexport * from './misc-utils.js'\nexport * from './peer-utils.js'\nexport * from './rps-meter.js'\nexport * from './stream-utils.js'\nexport * from './string-session.js'\nexport * from './voice-utils.js'\n"]}
|
|
@@ -75,7 +75,7 @@ const stream_utils_js_1 = require("./stream-utils.js");
|
|
|
75
75
|
(0, vitest_1.expect)(await reader.read()).to.be.null;
|
|
76
76
|
});
|
|
77
77
|
});
|
|
78
|
-
if (import.meta.env.TEST_ENV === 'node') {
|
|
78
|
+
if (import.meta.env.TEST_ENV === 'node' || import.meta.env.TEST_ENV === 'bun') {
|
|
79
79
|
(0, vitest_1.describe)('nodeReadableToWeb', () => {
|
|
80
80
|
(0, vitest_1.it)('should correctly convert a readable stream', async () => {
|
|
81
81
|
const stream = new node_stream_1.Readable({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream-utils.test.js","sourceRoot":"","sources":["../../../../src/highlevel/utils/stream-utils.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { Readable } from 'node:stream'\nimport { describe, expect, it } from 'vitest'\n\nimport { createChunkedReader, nodeReadableToWeb } from './stream-utils.js'\n\ndescribe('createChunkedReader', () => {\n it('should correctly handle chunks smaller than chunkSize', async () => {\n const stream = new ReadableStream<Uint8Array>({\n start(controller) {\n controller.enqueue(new Uint8Array([1, 2, 3]))\n controller.enqueue(new Uint8Array([4, 5, 6]))\n controller.close()\n },\n })\n const reader = createChunkedReader(stream, 4)\n\n expect(await reader.read()).to.deep.equal(new Uint8Array([1, 2, 3, 4]))\n expect(reader.ended()).to.be.false\n expect(await reader.read()).to.deep.equal(new Uint8Array([5, 6]))\n expect(reader.ended()).to.be.true\n expect(await reader.read()).to.be.null\n })\n\n it('should correctly handle chunks larger than chunkSize', async () => {\n const stream = new ReadableStream<Uint8Array>({\n start(controller) {\n controller.enqueue(new Uint8Array([1, 2, 3]))\n controller.enqueue(new Uint8Array([4, 5, 6, 7]))\n controller.close()\n },\n })\n const reader = createChunkedReader(stream, 2)\n\n expect(await reader.read()).to.deep.equal(new Uint8Array([1, 2]))\n expect(reader.ended()).to.be.false\n expect(await reader.read()).to.deep.equal(new Uint8Array([3, 4]))\n expect(reader.ended()).to.be.false\n expect(await reader.read()).to.deep.equal(new Uint8Array([5, 6]))\n expect(reader.ended()).to.be.false\n expect(await reader.read()).to.deep.equal(new Uint8Array([7]))\n expect(reader.ended()).to.be.true\n expect(await reader.read()).to.be.null\n })\n\n it('should correctly handle chunks equal to chunkSize', async () => {\n const stream = new ReadableStream<Uint8Array>({\n start(controller) {\n controller.enqueue(new Uint8Array([1, 2, 3]))\n controller.enqueue(new Uint8Array([4, 5, 6]))\n controller.close()\n },\n })\n const reader = createChunkedReader(stream, 3)\n\n expect(await reader.read()).to.deep.equal(new Uint8Array([1, 2, 3]))\n expect(reader.ended()).to.be.false\n expect(await reader.read()).to.deep.equal(new Uint8Array([4, 5, 6]))\n expect(reader.ended()).to.be.true\n expect(await reader.read()).to.be.null\n })\n\n it('should correctly handle mixed chunks', async () => {\n const stream = new ReadableStream<Uint8Array>({\n start(controller) {\n controller.enqueue(new Uint8Array([1, 2, 3]))\n controller.enqueue(new Uint8Array([4, 5, 6, 7]))\n controller.enqueue(new Uint8Array([8, 9]))\n controller.enqueue(new Uint8Array([10, 11, 12, 13, 14]))\n controller.close()\n },\n })\n const reader = createChunkedReader(stream, 4)\n\n expect(await reader.read()).to.deep.equal(new Uint8Array([1, 2, 3, 4]))\n expect(reader.ended()).to.be.false\n expect(await reader.read()).to.deep.equal(new Uint8Array([5, 6, 7, 8]))\n expect(reader.ended()).to.be.false\n expect(await reader.read()).to.deep.equal(new Uint8Array([9, 10, 11, 12]))\n expect(reader.ended()).to.be.false\n expect(await reader.read()).to.deep.equal(new Uint8Array([13, 14]))\n expect(reader.ended()).to.be.true\n expect(await reader.read()).to.be.null\n })\n})\n\nif (import.meta.env.TEST_ENV === 'node') {\n describe('nodeReadableToWeb', () => {\n it('should correctly convert a readable stream', async () => {\n const stream = new Readable({\n read() {\n // eslint-disable-next-line no-restricted-globals\n this.push(Buffer.from([1, 2, 3]))\n // eslint-disable-next-line no-restricted-globals\n this.push(Buffer.from([4, 5, 6]))\n this.push(null)\n },\n })\n\n const webStream = nodeReadableToWeb(stream)\n const reader = webStream.getReader()\n\n expect(await reader.read()).to.deep.equal({ value: new Uint8Array([1, 2, 3]), done: false })\n expect(await reader.read()).to.deep.equal({ value: new Uint8Array([4, 5, 6]), done: false })\n expect(await reader.read()).to.deep.equal({ value: undefined, done: true })\n })\n })\n}\n"]}
|
|
1
|
+
{"version":3,"file":"stream-utils.test.js","sourceRoot":"","sources":["../../../../src/highlevel/utils/stream-utils.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { Readable } from 'node:stream'\nimport { describe, expect, it } from 'vitest'\n\nimport { createChunkedReader, nodeReadableToWeb } from './stream-utils.js'\n\ndescribe('createChunkedReader', () => {\n it('should correctly handle chunks smaller than chunkSize', async () => {\n const stream = new ReadableStream<Uint8Array>({\n start(controller) {\n controller.enqueue(new Uint8Array([1, 2, 3]))\n controller.enqueue(new Uint8Array([4, 5, 6]))\n controller.close()\n },\n })\n const reader = createChunkedReader(stream, 4)\n\n expect(await reader.read()).to.deep.equal(new Uint8Array([1, 2, 3, 4]))\n expect(reader.ended()).to.be.false\n expect(await reader.read()).to.deep.equal(new Uint8Array([5, 6]))\n expect(reader.ended()).to.be.true\n expect(await reader.read()).to.be.null\n })\n\n it('should correctly handle chunks larger than chunkSize', async () => {\n const stream = new ReadableStream<Uint8Array>({\n start(controller) {\n controller.enqueue(new Uint8Array([1, 2, 3]))\n controller.enqueue(new Uint8Array([4, 5, 6, 7]))\n controller.close()\n },\n })\n const reader = createChunkedReader(stream, 2)\n\n expect(await reader.read()).to.deep.equal(new Uint8Array([1, 2]))\n expect(reader.ended()).to.be.false\n expect(await reader.read()).to.deep.equal(new Uint8Array([3, 4]))\n expect(reader.ended()).to.be.false\n expect(await reader.read()).to.deep.equal(new Uint8Array([5, 6]))\n expect(reader.ended()).to.be.false\n expect(await reader.read()).to.deep.equal(new Uint8Array([7]))\n expect(reader.ended()).to.be.true\n expect(await reader.read()).to.be.null\n })\n\n it('should correctly handle chunks equal to chunkSize', async () => {\n const stream = new ReadableStream<Uint8Array>({\n start(controller) {\n controller.enqueue(new Uint8Array([1, 2, 3]))\n controller.enqueue(new Uint8Array([4, 5, 6]))\n controller.close()\n },\n })\n const reader = createChunkedReader(stream, 3)\n\n expect(await reader.read()).to.deep.equal(new Uint8Array([1, 2, 3]))\n expect(reader.ended()).to.be.false\n expect(await reader.read()).to.deep.equal(new Uint8Array([4, 5, 6]))\n expect(reader.ended()).to.be.true\n expect(await reader.read()).to.be.null\n })\n\n it('should correctly handle mixed chunks', async () => {\n const stream = new ReadableStream<Uint8Array>({\n start(controller) {\n controller.enqueue(new Uint8Array([1, 2, 3]))\n controller.enqueue(new Uint8Array([4, 5, 6, 7]))\n controller.enqueue(new Uint8Array([8, 9]))\n controller.enqueue(new Uint8Array([10, 11, 12, 13, 14]))\n controller.close()\n },\n })\n const reader = createChunkedReader(stream, 4)\n\n expect(await reader.read()).to.deep.equal(new Uint8Array([1, 2, 3, 4]))\n expect(reader.ended()).to.be.false\n expect(await reader.read()).to.deep.equal(new Uint8Array([5, 6, 7, 8]))\n expect(reader.ended()).to.be.false\n expect(await reader.read()).to.deep.equal(new Uint8Array([9, 10, 11, 12]))\n expect(reader.ended()).to.be.false\n expect(await reader.read()).to.deep.equal(new Uint8Array([13, 14]))\n expect(reader.ended()).to.be.true\n expect(await reader.read()).to.be.null\n })\n})\n\nif (import.meta.env.TEST_ENV === 'node' || import.meta.env.TEST_ENV === 'bun') {\n describe('nodeReadableToWeb', () => {\n it('should correctly convert a readable stream', async () => {\n const stream = new Readable({\n read() {\n // eslint-disable-next-line no-restricted-globals\n this.push(Buffer.from([1, 2, 3]))\n // eslint-disable-next-line no-restricted-globals\n this.push(Buffer.from([4, 5, 6]))\n this.push(null)\n },\n })\n\n const webStream = nodeReadableToWeb(stream)\n const reader = webStream.getReader()\n\n expect(await reader.read()).to.deep.equal({ value: new Uint8Array([1, 2, 3]), done: false })\n expect(await reader.read()).to.deep.equal({ value: new Uint8Array([4, 5, 6]), done: false })\n expect(await reader.read()).to.deep.equal({ value: undefined, done: true })\n })\n })\n}\n"]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { TlReaderMap } from '@mtcute/tl-runtime';
|
|
2
|
+
import { DcOptions } from '../../utils/dcs.js';
|
|
3
|
+
import { CurrentUserInfo } from '../storage/service/current-user.js';
|
|
4
|
+
export interface StringSessionData {
|
|
5
|
+
version: number;
|
|
6
|
+
testMode: boolean;
|
|
7
|
+
primaryDcs: DcOptions;
|
|
8
|
+
self?: CurrentUserInfo | null;
|
|
9
|
+
authKey: Uint8Array;
|
|
10
|
+
}
|
|
11
|
+
export declare function writeStringSession(data: StringSessionData): string;
|
|
12
|
+
export declare function readStringSession(readerMap: TlReaderMap, data: string): StringSessionData;
|
|
@@ -2,11 +2,12 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.readStringSession = exports.writeStringSession = void 0;
|
|
4
4
|
const tl_runtime_1 = require("@mtcute/tl-runtime");
|
|
5
|
-
const index_js_1 = require("
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
const index_js_1 = require("../../types/index.js");
|
|
6
|
+
const dcs_js_1 = require("../../utils/dcs.js");
|
|
7
|
+
function writeStringSession(data) {
|
|
8
|
+
const writer = tl_runtime_1.TlBinaryWriter.manual(512);
|
|
8
9
|
const version = data.version;
|
|
9
|
-
if (version !==
|
|
10
|
+
if (version !== 3) {
|
|
10
11
|
throw new index_js_1.MtArgumentError(`Unsupported string session version: ${version}`);
|
|
11
12
|
}
|
|
12
13
|
let flags = 0;
|
|
@@ -22,9 +23,9 @@ function writeStringSession(writerMap, data) {
|
|
|
22
23
|
flags |= 4;
|
|
23
24
|
}
|
|
24
25
|
writer.int(flags);
|
|
25
|
-
writer.
|
|
26
|
+
writer.bytes((0, dcs_js_1.serializeBasicDcOption)(data.primaryDcs.main));
|
|
26
27
|
if (version >= 2 && data.primaryDcs.media !== data.primaryDcs.main) {
|
|
27
|
-
writer.
|
|
28
|
+
writer.bytes((0, dcs_js_1.serializeBasicDcOption)(data.primaryDcs.media));
|
|
28
29
|
}
|
|
29
30
|
if (data.self) {
|
|
30
31
|
writer.int53(data.self.userId);
|
|
@@ -45,10 +46,31 @@ function readStringSession(readerMap, data) {
|
|
|
45
46
|
const hasSelf = flags & 1;
|
|
46
47
|
const testMode = Boolean(flags & 2);
|
|
47
48
|
const hasMedia = version >= 2 && Boolean(flags & 4);
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
if (
|
|
51
|
-
|
|
49
|
+
let primaryDc;
|
|
50
|
+
let primaryMediaDc;
|
|
51
|
+
if (version <= 2) {
|
|
52
|
+
const primaryDc_ = reader.object();
|
|
53
|
+
const primaryMediaDc_ = hasMedia ? reader.object() : primaryDc_;
|
|
54
|
+
if (primaryDc_._ !== 'dcOption') {
|
|
55
|
+
throw new index_js_1.MtArgumentError(`Invalid session string (dc._ = ${primaryDc_._})`);
|
|
56
|
+
}
|
|
57
|
+
primaryDc = primaryDc_;
|
|
58
|
+
primaryMediaDc = primaryMediaDc_;
|
|
59
|
+
}
|
|
60
|
+
else if (version === 3) {
|
|
61
|
+
const primaryDc_ = (0, dcs_js_1.parseBasicDcOption)(reader.bytes());
|
|
62
|
+
if (primaryDc_ === null) {
|
|
63
|
+
throw new index_js_1.MtArgumentError('Invalid session string (failed to parse primaryDc)');
|
|
64
|
+
}
|
|
65
|
+
const primaryMediaDc_ = hasMedia ? (0, dcs_js_1.parseBasicDcOption)(reader.bytes()) : primaryDc_;
|
|
66
|
+
if (primaryMediaDc_ === null) {
|
|
67
|
+
throw new index_js_1.MtArgumentError('Invalid session string (failed to parse primaryMediaDc)');
|
|
68
|
+
}
|
|
69
|
+
primaryDc = primaryDc_;
|
|
70
|
+
primaryMediaDc = primaryMediaDc_;
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
throw new Error(); // unreachable
|
|
52
74
|
}
|
|
53
75
|
let self = null;
|
|
54
76
|
if (hasSelf) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"string-session.js","sourceRoot":"","sources":["../../../../src/highlevel/utils/string-session.ts"],"names":[],"mappings":"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","sourcesContent":["import { tl } from '@mtcute/tl'\nimport { base64DecodeToBuffer, base64Encode, TlBinaryReader, TlBinaryWriter, TlReaderMap } from '@mtcute/tl-runtime'\n\nimport { MtArgumentError } from '../../types/index.js'\nimport { BasicDcOption, DcOptions, parseBasicDcOption, serializeBasicDcOption } from '../../utils/dcs.js'\nimport { CurrentUserInfo } from '../storage/service/current-user.js'\n\nexport interface StringSessionData {\n version: number\n testMode: boolean\n primaryDcs: DcOptions\n self?: CurrentUserInfo | null\n authKey: Uint8Array\n}\n\nexport function writeStringSession(data: StringSessionData): string {\n const writer = TlBinaryWriter.manual(512)\n\n const version = data.version\n\n if (version !== 3) {\n throw new MtArgumentError(`Unsupported string session version: ${version}`)\n }\n\n let flags = 0\n\n if (data.self) {\n flags |= 1\n }\n\n if (data.testMode) {\n flags |= 2\n }\n\n writer.uint8View[0] = version\n writer.pos += 1\n\n if (version >= 2 && data.primaryDcs.media !== data.primaryDcs.main) {\n flags |= 4\n }\n\n writer.int(flags)\n writer.bytes(serializeBasicDcOption(data.primaryDcs.main))\n\n if (version >= 2 && data.primaryDcs.media !== data.primaryDcs.main) {\n writer.bytes(serializeBasicDcOption(data.primaryDcs.media))\n }\n\n if (data.self) {\n writer.int53(data.self.userId)\n writer.boolean(data.self.isBot)\n }\n\n writer.bytes(data.authKey)\n\n return base64Encode(writer.result(), true)\n}\n\nexport function readStringSession(readerMap: TlReaderMap, data: string): StringSessionData {\n const buf = base64DecodeToBuffer(data, true)\n\n const version = buf[0]\n\n if (version !== 1 && version !== 2 && version !== 3) {\n throw new Error(`Invalid session string (version = ${version})`)\n }\n\n const reader = new TlBinaryReader(readerMap, buf, 1)\n\n const flags = reader.int()\n const hasSelf = flags & 1\n const testMode = Boolean(flags & 2)\n const hasMedia = version >= 2 && Boolean(flags & 4)\n\n let primaryDc: BasicDcOption\n let primaryMediaDc: BasicDcOption\n\n if (version <= 2) {\n const primaryDc_ = reader.object() as tl.TypeDcOption\n const primaryMediaDc_ = hasMedia ? (reader.object() as tl.TypeDcOption) : primaryDc_\n\n if (primaryDc_._ !== 'dcOption') {\n throw new MtArgumentError(`Invalid session string (dc._ = ${primaryDc_._})`)\n }\n\n primaryDc = primaryDc_\n primaryMediaDc = primaryMediaDc_\n } else if (version === 3) {\n const primaryDc_ = parseBasicDcOption(reader.bytes())\n\n if (primaryDc_ === null) {\n throw new MtArgumentError('Invalid session string (failed to parse primaryDc)')\n }\n\n const primaryMediaDc_ = hasMedia ? parseBasicDcOption(reader.bytes()) : primaryDc_\n\n if (primaryMediaDc_ === null) {\n throw new MtArgumentError('Invalid session string (failed to parse primaryMediaDc)')\n }\n\n primaryDc = primaryDc_\n primaryMediaDc = primaryMediaDc_\n } else {\n throw new Error() // unreachable\n }\n\n let self: CurrentUserInfo | null = null\n\n if (hasSelf) {\n const selfId = reader.int53()\n const selfBot = reader.boolean()\n\n self = {\n userId: selfId,\n isBot: selfBot,\n // todo: we should make sure we fetch this from the server at first start\n isPremium: false,\n usernames: [],\n }\n }\n\n const key = reader.bytes()\n\n return {\n version,\n testMode,\n primaryDcs: {\n main: primaryDc,\n media: primaryMediaDc,\n },\n self,\n authKey: key,\n }\n}\n"]}
|
|
@@ -3,40 +3,59 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const vitest_1 = require("vitest");
|
|
4
4
|
const test_1 = require("@mtcute/test");
|
|
5
5
|
const reader_js_1 = require("@mtcute/tl/binary/reader.js");
|
|
6
|
-
const
|
|
7
|
-
const dcs_js_1 = require("./dcs.js");
|
|
6
|
+
const dcs_js_1 = require("../../utils/dcs.js");
|
|
8
7
|
const string_session_js_1 = require("./string-session.js");
|
|
9
8
|
const stubAuthKey = new Uint8Array(32);
|
|
10
9
|
const stubDcs = {
|
|
11
10
|
main: (0, test_1.createStub)('dcOption', dcs_js_1.defaultProductionDc.main),
|
|
12
11
|
media: (0, test_1.createStub)('dcOption', dcs_js_1.defaultProductionDc.media),
|
|
13
12
|
};
|
|
13
|
+
const stubDcsBasic = {
|
|
14
|
+
main: {
|
|
15
|
+
id: 2,
|
|
16
|
+
ipAddress: dcs_js_1.defaultProductionDc.main.ipAddress,
|
|
17
|
+
ipv6: false,
|
|
18
|
+
mediaOnly: false,
|
|
19
|
+
port: 443,
|
|
20
|
+
},
|
|
21
|
+
media: {
|
|
22
|
+
id: 2,
|
|
23
|
+
ipAddress: dcs_js_1.defaultProductionDc.media.ipAddress,
|
|
24
|
+
ipv6: false,
|
|
25
|
+
mediaOnly: true,
|
|
26
|
+
port: 443,
|
|
27
|
+
},
|
|
28
|
+
};
|
|
14
29
|
const stubDcsSameMedia = {
|
|
15
30
|
main: stubDcs.main,
|
|
16
31
|
media: stubDcs.main,
|
|
17
32
|
};
|
|
33
|
+
const stubDcsBasicSameMedia = {
|
|
34
|
+
main: stubDcsBasic.main,
|
|
35
|
+
media: stubDcsBasic.main,
|
|
36
|
+
};
|
|
18
37
|
(0, vitest_1.describe)('writeStringSession', () => {
|
|
19
38
|
(0, vitest_1.it)('should write production string session without user', () => {
|
|
20
|
-
(0, vitest_1.expect)((0, string_session_js_1.writeStringSession)(
|
|
21
|
-
version:
|
|
39
|
+
(0, vitest_1.expect)((0, string_session_js_1.writeStringSession)({
|
|
40
|
+
version: 3,
|
|
22
41
|
testMode: false,
|
|
23
|
-
primaryDcs:
|
|
42
|
+
primaryDcs: stubDcsBasic,
|
|
24
43
|
authKey: stubAuthKey,
|
|
25
|
-
})).toMatchInlineSnapshot('"
|
|
44
|
+
})).toMatchInlineSnapshot('"AwQAAAAXAQIADjE0OS4xNTQuMTY3LjUwALsBAAAXAQICDzE0OS4xNTQuMTY3LjIyMrsBAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"');
|
|
26
45
|
});
|
|
27
46
|
(0, vitest_1.it)('should write production string session without user with same dc for media', () => {
|
|
28
|
-
(0, vitest_1.expect)((0, string_session_js_1.writeStringSession)(
|
|
29
|
-
version:
|
|
47
|
+
(0, vitest_1.expect)((0, string_session_js_1.writeStringSession)({
|
|
48
|
+
version: 3,
|
|
30
49
|
testMode: false,
|
|
31
|
-
primaryDcs:
|
|
50
|
+
primaryDcs: stubDcsBasicSameMedia,
|
|
32
51
|
authKey: stubAuthKey,
|
|
33
|
-
})).toMatchInlineSnapshot('"
|
|
52
|
+
})).toMatchInlineSnapshot('"AwAAAAAXAQIADjE0OS4xNTQuMTY3LjUwALsBAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"');
|
|
34
53
|
});
|
|
35
54
|
(0, vitest_1.it)('should write production string session with user', () => {
|
|
36
|
-
(0, vitest_1.expect)((0, string_session_js_1.writeStringSession)(
|
|
37
|
-
version:
|
|
55
|
+
(0, vitest_1.expect)((0, string_session_js_1.writeStringSession)({
|
|
56
|
+
version: 3,
|
|
38
57
|
testMode: false,
|
|
39
|
-
primaryDcs:
|
|
58
|
+
primaryDcs: stubDcsBasic,
|
|
40
59
|
authKey: stubAuthKey,
|
|
41
60
|
self: {
|
|
42
61
|
userId: 12345,
|
|
@@ -44,13 +63,13 @@ const stubDcsSameMedia = {
|
|
|
44
63
|
isPremium: false,
|
|
45
64
|
usernames: [],
|
|
46
65
|
},
|
|
47
|
-
})).toMatchInlineSnapshot('"
|
|
66
|
+
})).toMatchInlineSnapshot('"AwUAAAAXAQIADjE0OS4xNTQuMTY3LjUwALsBAAAXAQICDzE0OS4xNTQuMTY3LjIyMrsBAAA5MAAAAAAAADeXebwgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"');
|
|
48
67
|
});
|
|
49
68
|
(0, vitest_1.it)('should write test dc string session with user', () => {
|
|
50
|
-
(0, vitest_1.expect)((0, string_session_js_1.writeStringSession)(
|
|
51
|
-
version:
|
|
69
|
+
(0, vitest_1.expect)((0, string_session_js_1.writeStringSession)({
|
|
70
|
+
version: 3,
|
|
52
71
|
testMode: true,
|
|
53
|
-
primaryDcs:
|
|
72
|
+
primaryDcs: stubDcsBasic,
|
|
54
73
|
authKey: stubAuthKey,
|
|
55
74
|
self: {
|
|
56
75
|
userId: 12345,
|
|
@@ -58,10 +77,58 @@ const stubDcsSameMedia = {
|
|
|
58
77
|
isPremium: false,
|
|
59
78
|
usernames: [],
|
|
60
79
|
},
|
|
61
|
-
})).toMatchInlineSnapshot('"
|
|
80
|
+
})).toMatchInlineSnapshot('"AwcAAAAXAQIADjE0OS4xNTQuMTY3LjUwALsBAAAXAQICDzE0OS4xNTQuMTY3LjIyMrsBAAA5MAAAAAAAADeXebwgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"');
|
|
62
81
|
});
|
|
63
82
|
});
|
|
64
83
|
(0, vitest_1.describe)('readStringSession', () => {
|
|
84
|
+
(0, vitest_1.describe)('v3', () => {
|
|
85
|
+
(0, vitest_1.it)('should read production string session without user', () => {
|
|
86
|
+
(0, vitest_1.expect)((0, string_session_js_1.readStringSession)(reader_js_1.__tlReaderMap, 'AwQAAAAXAQIADjE0OS4xNTQuMTY3LjUwALsBAAAXAQICDzE0OS4xNTQuMTY3LjIyMrsBAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA')).toEqual({
|
|
87
|
+
version: 3,
|
|
88
|
+
testMode: false,
|
|
89
|
+
primaryDcs: stubDcsBasic,
|
|
90
|
+
authKey: stubAuthKey,
|
|
91
|
+
self: null,
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
(0, vitest_1.it)('should read production string session without user with same dc for media', () => {
|
|
95
|
+
(0, vitest_1.expect)((0, string_session_js_1.readStringSession)(reader_js_1.__tlReaderMap, 'AwAAAAAXAQIADjE0OS4xNTQuMTY3LjUwALsBAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA')).toEqual({
|
|
96
|
+
version: 3,
|
|
97
|
+
testMode: false,
|
|
98
|
+
primaryDcs: stubDcsBasicSameMedia,
|
|
99
|
+
authKey: stubAuthKey,
|
|
100
|
+
self: null,
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
(0, vitest_1.it)('should read production string session with user', () => {
|
|
104
|
+
(0, vitest_1.expect)((0, string_session_js_1.readStringSession)(reader_js_1.__tlReaderMap, 'AwUAAAAXAQIADjE0OS4xNTQuMTY3LjUwALsBAAAXAQICDzE0OS4xNTQuMTY3LjIyMrsBAAA5MAAAAAAAADeXebwgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA')).toEqual({
|
|
105
|
+
version: 3,
|
|
106
|
+
testMode: false,
|
|
107
|
+
primaryDcs: stubDcsBasic,
|
|
108
|
+
authKey: stubAuthKey,
|
|
109
|
+
self: {
|
|
110
|
+
userId: 12345,
|
|
111
|
+
isBot: false,
|
|
112
|
+
isPremium: false,
|
|
113
|
+
usernames: [],
|
|
114
|
+
},
|
|
115
|
+
});
|
|
116
|
+
});
|
|
117
|
+
(0, vitest_1.it)('should read test dc string session with user', () => {
|
|
118
|
+
(0, vitest_1.expect)((0, string_session_js_1.readStringSession)(reader_js_1.__tlReaderMap, 'AwcAAAAXAQIADjE0OS4xNTQuMTY3LjUwALsBAAAXAQICDzE0OS4xNTQuMTY3LjIyMrsBAAA5MAAAAAAAADeXebwgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA')).toEqual({
|
|
119
|
+
version: 3,
|
|
120
|
+
testMode: true,
|
|
121
|
+
primaryDcs: stubDcsBasic,
|
|
122
|
+
authKey: stubAuthKey,
|
|
123
|
+
self: {
|
|
124
|
+
userId: 12345,
|
|
125
|
+
isBot: false,
|
|
126
|
+
isPremium: false,
|
|
127
|
+
usernames: [],
|
|
128
|
+
},
|
|
129
|
+
});
|
|
130
|
+
});
|
|
131
|
+
});
|
|
65
132
|
(0, vitest_1.describe)('v2', () => {
|
|
66
133
|
(0, vitest_1.it)('should read production string session without user', () => {
|
|
67
134
|
(0, vitest_1.expect)((0, string_session_js_1.readStringSession)(reader_js_1.__tlReaderMap, 'AgQAAAANobcYAAAAAAIAAAAOMTQ5LjE1NC4xNjcuNTAAuwEAAA2htxgCAAAAAgAAAA8xNDkuMTU0LjE2Ny4yMjK7AQAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA')).toEqual({
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"string-session.test.js","sourceRoot":"","sources":["../../../../src/highlevel/utils/string-session.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { describe, expect, it } from 'vitest'\n\nimport { createStub } from '@mtcute/test'\nimport { __tlReaderMap } from '@mtcute/tl/binary/reader.js'\nimport { __tlWriterMap } from '@mtcute/tl/binary/writer.js'\n\nimport { defaultProductionDc } from '../../utils/dcs.js'\nimport { readStringSession, writeStringSession } from './string-session.js'\n\nconst stubAuthKey = new Uint8Array(32)\nconst stubDcs = {\n main: createStub('dcOption', defaultProductionDc.main),\n media: createStub('dcOption', defaultProductionDc.media),\n}\nconst stubDcsBasic = {\n main: {\n id: 2,\n ipAddress: defaultProductionDc.main.ipAddress,\n ipv6: false,\n mediaOnly: false,\n port: 443,\n },\n media: {\n id: 2,\n ipAddress: defaultProductionDc.media.ipAddress,\n ipv6: false,\n mediaOnly: true,\n port: 443,\n },\n}\nconst stubDcsSameMedia = {\n main: stubDcs.main,\n media: stubDcs.main,\n}\nconst stubDcsBasicSameMedia = {\n main: stubDcsBasic.main,\n media: stubDcsBasic.main,\n}\n\ndescribe('writeStringSession', () => {\n it('should write production string session without user', () => {\n expect(\n writeStringSession({\n version: 3,\n testMode: false,\n primaryDcs: stubDcsBasic,\n authKey: stubAuthKey,\n }),\n ).toMatchInlineSnapshot(\n '\"AwQAAAAXAQIADjE0OS4xNTQuMTY3LjUwALsBAAAXAQICDzE0OS4xNTQuMTY3LjIyMrsBAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\"',\n )\n })\n it('should write production string session without user with same dc for media', () => {\n expect(\n writeStringSession({\n version: 3,\n testMode: false,\n primaryDcs: stubDcsBasicSameMedia,\n authKey: stubAuthKey,\n }),\n ).toMatchInlineSnapshot(\n '\"AwAAAAAXAQIADjE0OS4xNTQuMTY3LjUwALsBAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\"',\n )\n })\n\n it('should write production string session with user', () => {\n expect(\n writeStringSession({\n version: 3,\n testMode: false,\n primaryDcs: stubDcsBasic,\n authKey: stubAuthKey,\n self: {\n userId: 12345,\n isBot: false,\n isPremium: false,\n usernames: [],\n },\n }),\n ).toMatchInlineSnapshot(\n '\"AwUAAAAXAQIADjE0OS4xNTQuMTY3LjUwALsBAAAXAQICDzE0OS4xNTQuMTY3LjIyMrsBAAA5MAAAAAAAADeXebwgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\"',\n )\n })\n\n it('should write test dc string session with user', () => {\n expect(\n writeStringSession({\n version: 3,\n testMode: true,\n primaryDcs: stubDcsBasic,\n authKey: stubAuthKey,\n self: {\n userId: 12345,\n isBot: false,\n isPremium: false,\n usernames: [],\n },\n }),\n ).toMatchInlineSnapshot(\n '\"AwcAAAAXAQIADjE0OS4xNTQuMTY3LjUwALsBAAAXAQICDzE0OS4xNTQuMTY3LjIyMrsBAAA5MAAAAAAAADeXebwgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\"',\n )\n })\n})\n\ndescribe('readStringSession', () => {\n describe('v3', () => {\n it('should read production string session without user', () => {\n expect(\n readStringSession(\n __tlReaderMap,\n 'AwQAAAAXAQIADjE0OS4xNTQuMTY3LjUwALsBAAAXAQICDzE0OS4xNTQuMTY3LjIyMrsBAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA',\n ),\n ).toEqual({\n version: 3,\n testMode: false,\n primaryDcs: stubDcsBasic,\n authKey: stubAuthKey,\n self: null,\n })\n })\n\n it('should read production string session without user with same dc for media', () => {\n expect(\n readStringSession(\n __tlReaderMap,\n 'AwAAAAAXAQIADjE0OS4xNTQuMTY3LjUwALsBAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA',\n ),\n ).toEqual({\n version: 3,\n testMode: false,\n primaryDcs: stubDcsBasicSameMedia,\n authKey: stubAuthKey,\n self: null,\n })\n })\n\n it('should read production string session with user', () => {\n expect(\n readStringSession(\n __tlReaderMap,\n 'AwUAAAAXAQIADjE0OS4xNTQuMTY3LjUwALsBAAAXAQICDzE0OS4xNTQuMTY3LjIyMrsBAAA5MAAAAAAAADeXebwgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA',\n ),\n ).toEqual({\n version: 3,\n testMode: false,\n primaryDcs: stubDcsBasic,\n authKey: stubAuthKey,\n self: {\n userId: 12345,\n isBot: false,\n isPremium: false,\n usernames: [],\n },\n })\n })\n\n it('should read test dc string session with user', () => {\n expect(\n readStringSession(\n __tlReaderMap,\n 'AwcAAAAXAQIADjE0OS4xNTQuMTY3LjUwALsBAAAXAQICDzE0OS4xNTQuMTY3LjIyMrsBAAA5MAAAAAAAADeXebwgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA',\n ),\n ).toEqual({\n version: 3,\n testMode: true,\n primaryDcs: stubDcsBasic,\n authKey: stubAuthKey,\n self: {\n userId: 12345,\n isBot: false,\n isPremium: false,\n usernames: [],\n },\n })\n })\n })\n\n describe('v2', () => {\n it('should read production string session without user', () => {\n expect(\n readStringSession(\n __tlReaderMap,\n 'AgQAAAANobcYAAAAAAIAAAAOMTQ5LjE1NC4xNjcuNTAAuwEAAA2htxgCAAAAAgAAAA8xNDkuMTU0LjE2Ny4yMjK7AQAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA',\n ),\n ).toEqual({\n version: 2,\n testMode: false,\n primaryDcs: stubDcs,\n authKey: stubAuthKey,\n self: null,\n })\n })\n\n it('should read production string session without user with same dc for media', () => {\n expect(\n readStringSession(\n __tlReaderMap,\n 'AgAAAAANobcYAAAAAAIAAAAOMTQ5LjE1NC4xNjcuNTAAuwEAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA',\n ),\n ).toEqual({\n version: 2,\n testMode: false,\n primaryDcs: stubDcsSameMedia,\n authKey: stubAuthKey,\n self: null,\n })\n })\n\n it('should read production string session with user', () => {\n expect(\n readStringSession(\n __tlReaderMap,\n 'AgUAAAANobcYAAAAAAIAAAAOMTQ5LjE1NC4xNjcuNTAAuwEAAA2htxgCAAAAAgAAAA8xNDkuMTU0LjE2Ny4yMjK7AQAAOTAAAAAAAAA3l3m8IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA',\n ),\n ).toEqual({\n version: 2,\n testMode: false,\n primaryDcs: stubDcs,\n authKey: stubAuthKey,\n self: {\n userId: 12345,\n isBot: false,\n isPremium: false,\n usernames: [],\n },\n })\n })\n\n it('should read test dc string session with user', () => {\n expect(\n readStringSession(\n __tlReaderMap,\n 'AgcAAAANobcYAAAAAAIAAAAOMTQ5LjE1NC4xNjcuNTAAuwEAAA2htxgCAAAAAgAAAA8xNDkuMTU0LjE2Ny4yMjK7AQAAOTAAAAAAAAA3l3m8IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA',\n ),\n ).toEqual({\n version: 2,\n testMode: true,\n primaryDcs: stubDcs,\n authKey: stubAuthKey,\n self: {\n userId: 12345,\n isBot: false,\n isPremium: false,\n usernames: [],\n },\n })\n })\n })\n\n describe('v1', () => {\n it('should read string session with user', () => {\n expect(\n readStringSession(\n __tlReaderMap,\n 'AQEAAAANobcYAAAAAAIAAAAOMTQ5LjE1NC4xNjcuNTAAuwEAADkwAAAAAAAAN5d5vCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA',\n ),\n ).toEqual({\n version: 1,\n testMode: false,\n // v1 didn't have separate media dc\n primaryDcs: stubDcsSameMedia,\n authKey: stubAuthKey,\n self: {\n userId: 12345,\n isBot: false,\n isPremium: false,\n usernames: [],\n },\n })\n })\n })\n})\n"]}
|
|
@@ -37,7 +37,7 @@ export declare class TelegramWorkerPort<Custom extends WorkerCustomMethods> impl
|
|
|
37
37
|
readonly notifyChannelOpened: (channelId: number, pts?: number | undefined) => Promise<boolean>;
|
|
38
38
|
readonly notifyChannelClosed: (channelId: number) => Promise<boolean>;
|
|
39
39
|
readonly call: <T extends tl.RpcMethod>(message: import("../../index.js").MustEqual<T, tl.RpcMethod>, params?: import("../../index.js").RpcCallOptions | undefined) => Promise<tl.RpcCallReturn[T["_"]]>;
|
|
40
|
-
readonly importSession: (session: string | import("
|
|
40
|
+
readonly importSession: (session: string | import("../utils/string-session.js").StringSessionData, force?: boolean | undefined) => Promise<void>;
|
|
41
41
|
readonly exportSession: () => Promise<string>;
|
|
42
42
|
readonly handleClientUpdate: (updates: tl.TypeUpdates, noDispatch?: boolean | undefined) => void;
|
|
43
43
|
readonly getApiCrenetials: () => Promise<{
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const vitest_1 = require("vitest");
|
|
4
|
-
if (import.meta.env.TEST_ENV === 'node') {
|
|
4
|
+
if (import.meta.env.TEST_ENV === 'node' || import.meta.env.TEST_ENV === 'bun') {
|
|
5
5
|
vitest_1.vi.doMock('net', () => ({
|
|
6
6
|
connect: vitest_1.vi.fn().mockImplementation((port, ip, cb) => {
|
|
7
7
|
cb();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tcp.test.js","sourceRoot":"","sources":["../../../../src/network/transports/tcp.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { Socket } from 'net'\nimport { describe, expect, it, MockedObject, vi } from 'vitest'\n\nif (import.meta.env.TEST_ENV === 'node') {\n vi.doMock('net', () => ({\n connect: vi.fn().mockImplementation((port: number, ip: string, cb: () => void) => {\n cb()\n\n return {\n on: vi.fn(),\n write: vi.fn().mockImplementation((data: Uint8Array, cb: () => void) => {\n cb()\n }),\n end: vi.fn(),\n removeAllListeners: vi.fn(),\n destroy: vi.fn(),\n }\n }),\n }))\n\n const net = await import('net')\n const connect = vi.mocked(net.connect)\n\n // we need to do these imports here because basically all of them import `net`\n const { defaultTestCryptoProvider, u8HexDecode } = await import('@mtcute/test')\n\n const { TcpTransport } = await import('./tcp.js')\n const { defaultProductionDc, hexDecodeToBuffer, LogManager } = await import('../../utils/index.js')\n const { TransportState } = await import('./abstract.js')\n\n describe('TcpTransport', () => {\n const getLastSocket = () => {\n return connect.mock.results[connect.mock.results.length - 1].value as MockedObject<Socket>\n }\n\n const create = async () => {\n const transport = new TcpTransport()\n const logger = new LogManager()\n logger.level = 0\n transport.setup(await defaultTestCryptoProvider(), logger)\n\n return transport\n }\n\n it('should initiate a tcp connection to the given dc', async () => {\n const t = await create()\n\n t.connect(defaultProductionDc.main, false)\n\n expect(connect).toHaveBeenCalledOnce()\n expect(connect).toHaveBeenCalledWith(\n defaultProductionDc.main.port,\n defaultProductionDc.main.ipAddress,\n expect.any(Function),\n )\n await vi.waitFor(() => expect(t.state()).toEqual(TransportState.Ready))\n })\n\n it('should set up event handlers', async () => {\n const t = await create()\n\n t.connect(defaultProductionDc.main, false)\n\n const socket = getLastSocket()\n\n expect(socket.on).toHaveBeenCalledTimes(3)\n expect(socket.on).toHaveBeenCalledWith('data', expect.any(Function))\n expect(socket.on).toHaveBeenCalledWith('error', expect.any(Function))\n expect(socket.on).toHaveBeenCalledWith('close', expect.any(Function))\n })\n\n it('should write packet codec tag once connected', async () => {\n const t = await create()\n\n t.connect(defaultProductionDc.main, false)\n\n const socket = getLastSocket()\n\n await vi.waitFor(() =>\n expect(socket.write).toHaveBeenCalledWith(\n u8HexDecode('eeeeeeee'), // intermediate\n expect.any(Function),\n ),\n )\n })\n\n it('should write to the underlying socket', async () => {\n const t = await create()\n\n t.connect(defaultProductionDc.main, false)\n await vi.waitFor(() => expect(t.state()).toEqual(TransportState.Ready))\n\n await t.send(hexDecodeToBuffer('00010203040506070809'))\n\n const socket = getLastSocket()\n\n expect(socket.write).toHaveBeenCalledWith(u8HexDecode('0a00000000010203040506070809'), expect.any(Function))\n })\n\n it('should correctly close', async () => {\n const t = await create()\n\n t.connect(defaultProductionDc.main, false)\n await vi.waitFor(() => expect(t.state()).toEqual(TransportState.Ready))\n\n t.close()\n\n const socket = getLastSocket()\n\n expect(socket.removeAllListeners).toHaveBeenCalledOnce()\n expect(socket.destroy).toHaveBeenCalledOnce()\n })\n\n it('should feed data to the packet codec', async () => {\n const t = await create()\n const codec = t._packetCodec\n\n const spyFeed = vi.spyOn(codec, 'feed')\n\n t.connect(defaultProductionDc.main, false)\n await vi.waitFor(() => expect(t.state()).toEqual(TransportState.Ready))\n\n const socket = getLastSocket()\n\n const onDataCall = socket.on.mock.calls.find((c) => (c as string[])[0] === 'data') as unknown as [\n string,\n (data: Uint8Array) => void,\n ]\n onDataCall[1](u8HexDecode('00010203040506070809'))\n\n expect(spyFeed).toHaveBeenCalledWith(u8HexDecode('00010203040506070809'))\n })\n\n it('should propagate errors', async () => {\n const t = await create()\n\n const spyEmit = vi.spyOn(t, 'emit').mockImplementation(() => true)\n\n t.connect(defaultProductionDc.main, false)\n await vi.waitFor(() => expect(t.state()).toEqual(TransportState.Ready))\n\n const socket = getLastSocket()\n\n const onErrorCall = socket.on.mock.calls.find((c) => (c as string[])[0] === 'error') as unknown as [\n string,\n (error: Error) => void,\n ]\n onErrorCall[1](new Error('test error'))\n\n expect(spyEmit).toHaveBeenCalledWith('error', new Error('test error'))\n })\n })\n} else {\n describe.skip('TcpTransport', () => {})\n}\n"]}
|
|
1
|
+
{"version":3,"file":"tcp.test.js","sourceRoot":"","sources":["../../../../src/network/transports/tcp.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { Socket } from 'net'\nimport { describe, expect, it, MockedObject, vi } from 'vitest'\n\nif (import.meta.env.TEST_ENV === 'node' || import.meta.env.TEST_ENV === 'bun') {\n vi.doMock('net', () => ({\n connect: vi.fn().mockImplementation((port: number, ip: string, cb: () => void) => {\n cb()\n\n return {\n on: vi.fn(),\n write: vi.fn().mockImplementation((data: Uint8Array, cb: () => void) => {\n cb()\n }),\n end: vi.fn(),\n removeAllListeners: vi.fn(),\n destroy: vi.fn(),\n }\n }),\n }))\n\n const net = await import('net')\n const connect = vi.mocked(net.connect)\n\n // we need to do these imports here because basically all of them import `net`\n const { defaultTestCryptoProvider, u8HexDecode } = await import('@mtcute/test')\n\n const { TcpTransport } = await import('./tcp.js')\n const { defaultProductionDc, hexDecodeToBuffer, LogManager } = await import('../../utils/index.js')\n const { TransportState } = await import('./abstract.js')\n\n describe('TcpTransport', () => {\n const getLastSocket = () => {\n return connect.mock.results[connect.mock.results.length - 1].value as MockedObject<Socket>\n }\n\n const create = async () => {\n const transport = new TcpTransport()\n const logger = new LogManager()\n logger.level = 0\n transport.setup(await defaultTestCryptoProvider(), logger)\n\n return transport\n }\n\n it('should initiate a tcp connection to the given dc', async () => {\n const t = await create()\n\n t.connect(defaultProductionDc.main, false)\n\n expect(connect).toHaveBeenCalledOnce()\n expect(connect).toHaveBeenCalledWith(\n defaultProductionDc.main.port,\n defaultProductionDc.main.ipAddress,\n expect.any(Function),\n )\n await vi.waitFor(() => expect(t.state()).toEqual(TransportState.Ready))\n })\n\n it('should set up event handlers', async () => {\n const t = await create()\n\n t.connect(defaultProductionDc.main, false)\n\n const socket = getLastSocket()\n\n expect(socket.on).toHaveBeenCalledTimes(3)\n expect(socket.on).toHaveBeenCalledWith('data', expect.any(Function))\n expect(socket.on).toHaveBeenCalledWith('error', expect.any(Function))\n expect(socket.on).toHaveBeenCalledWith('close', expect.any(Function))\n })\n\n it('should write packet codec tag once connected', async () => {\n const t = await create()\n\n t.connect(defaultProductionDc.main, false)\n\n const socket = getLastSocket()\n\n await vi.waitFor(() =>\n expect(socket.write).toHaveBeenCalledWith(\n u8HexDecode('eeeeeeee'), // intermediate\n expect.any(Function),\n ),\n )\n })\n\n it('should write to the underlying socket', async () => {\n const t = await create()\n\n t.connect(defaultProductionDc.main, false)\n await vi.waitFor(() => expect(t.state()).toEqual(TransportState.Ready))\n\n await t.send(hexDecodeToBuffer('00010203040506070809'))\n\n const socket = getLastSocket()\n\n expect(socket.write).toHaveBeenCalledWith(u8HexDecode('0a00000000010203040506070809'), expect.any(Function))\n })\n\n it('should correctly close', async () => {\n const t = await create()\n\n t.connect(defaultProductionDc.main, false)\n await vi.waitFor(() => expect(t.state()).toEqual(TransportState.Ready))\n\n t.close()\n\n const socket = getLastSocket()\n\n expect(socket.removeAllListeners).toHaveBeenCalledOnce()\n expect(socket.destroy).toHaveBeenCalledOnce()\n })\n\n it('should feed data to the packet codec', async () => {\n const t = await create()\n const codec = t._packetCodec\n\n const spyFeed = vi.spyOn(codec, 'feed')\n\n t.connect(defaultProductionDc.main, false)\n await vi.waitFor(() => expect(t.state()).toEqual(TransportState.Ready))\n\n const socket = getLastSocket()\n\n const onDataCall = socket.on.mock.calls.find((c) => (c as string[])[0] === 'data') as unknown as [\n string,\n (data: Uint8Array) => void,\n ]\n onDataCall[1](u8HexDecode('00010203040506070809'))\n\n expect(spyFeed).toHaveBeenCalledWith(u8HexDecode('00010203040506070809'))\n })\n\n it('should propagate errors', async () => {\n const t = await create()\n\n const spyEmit = vi.spyOn(t, 'emit').mockImplementation(() => true)\n\n t.connect(defaultProductionDc.main, false)\n await vi.waitFor(() => expect(t.state()).toEqual(TransportState.Ready))\n\n const socket = getLastSocket()\n\n const onErrorCall = socket.on.mock.calls.find((c) => (c as string[])[0] === 'error') as unknown as [\n string,\n (error: Error) => void,\n ]\n onErrorCall[1](new Error('test error'))\n\n expect(spyEmit).toHaveBeenCalledWith('error', new Error('test error'))\n })\n })\n} else {\n describe.skip('TcpTransport', () => {})\n}\n"]}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const vitest_1 = require("vitest");
|
|
4
4
|
const test_1 = require("@mtcute/test");
|
|
5
|
-
if (import.meta.env.TEST_ENV === 'node') {
|
|
5
|
+
if (import.meta.env.TEST_ENV === 'node' || import.meta.env.TEST_ENV === 'bun') {
|
|
6
6
|
(0, vitest_1.describe)('NodeCryptoProvider', async () => {
|
|
7
7
|
const { NodeCryptoProvider } = await import('./node.js');
|
|
8
8
|
(0, test_1.testCryptoProvider)(new NodeCryptoProvider());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.test.js","sourceRoot":"","sources":["../../../../src/utils/crypto/node.test.ts"],"names":[],"mappings":";;AAAA,mCAAiC;AAEjC,uCAAiD;AAEjD,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,EAAE;
|
|
1
|
+
{"version":3,"file":"node.test.js","sourceRoot":"","sources":["../../../../src/utils/crypto/node.test.ts"],"names":[],"mappings":";;AAAA,mCAAiC;AAEjC,uCAAiD;AAEjD,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,KAAK,KAAK,EAAE;IAC3E,IAAA,iBAAQ,EAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE;QACtC,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAA;QAExD,IAAA,yBAAkB,EAAC,IAAI,kBAAkB,EAAE,CAAC,CAAA;IAChD,CAAC,CAAC,CAAA;CACL;KAAM;IACH,iBAAQ,CAAC,IAAI,CAAC,oBAAoB,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;CAChD","sourcesContent":["import { describe } from 'vitest'\n\nimport { testCryptoProvider } from '@mtcute/test'\n\nif (import.meta.env.TEST_ENV === 'node' || import.meta.env.TEST_ENV === 'bun') {\n describe('NodeCryptoProvider', async () => {\n const { NodeCryptoProvider } = await import('./node.js')\n\n testCryptoProvider(new NodeCryptoProvider())\n })\n} else {\n describe.skip('NodeCryptoProvider', () => {})\n}\n"]}
|
package/cjs/utils/index.d.ts
CHANGED
|
@@ -19,7 +19,6 @@ export * from './misc-utils.js';
|
|
|
19
19
|
export * from './peer-utils.js';
|
|
20
20
|
export * from './platform/exit-hook.js';
|
|
21
21
|
export * from './sorted-array.js';
|
|
22
|
-
export * from './string-session.js';
|
|
23
22
|
export * from './tl-json.js';
|
|
24
23
|
export * from './type-assertions.js';
|
|
25
24
|
export * from '@mtcute/tl-runtime';
|
package/cjs/utils/index.js
CHANGED
|
@@ -35,7 +35,6 @@ __exportStar(require("./misc-utils.js"), exports);
|
|
|
35
35
|
__exportStar(require("./peer-utils.js"), exports);
|
|
36
36
|
__exportStar(require("./platform/exit-hook.js"), exports);
|
|
37
37
|
__exportStar(require("./sorted-array.js"), exports);
|
|
38
|
-
__exportStar(require("./string-session.js"), exports);
|
|
39
38
|
__exportStar(require("./tl-json.js"), exports);
|
|
40
39
|
__exportStar(require("./type-assertions.js"), exports);
|
|
41
40
|
__exportStar(require("@mtcute/tl-runtime"), exports);
|
package/cjs/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8DAA2C;AAC3C,kDAA+B;AAC/B,oDAAiC;AACjC,oDAAiC;AACjC,0DAAuC;AACvC,4DAAyC;AACzC,oDAAiC;AACjC,2CAAwB;AACxB,6CAA0B;AAC1B,mDAAgC;AAChC,sDAAmC;AACnC,mDAAgC;AAChC,mDAAgC;AAChC,8CAA2B;AAC3B,kDAA+B;AAC/B,+CAA4B;AAC5B,+CAA4B;AAC5B,kDAA+B;AAC/B,kDAA+B;AAC/B,0DAAuC;AACvC,oDAAiC;AACjC
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8DAA2C;AAC3C,kDAA+B;AAC/B,oDAAiC;AACjC,oDAAiC;AACjC,0DAAuC;AACvC,4DAAyC;AACzC,oDAAiC;AACjC,2CAAwB;AACxB,6CAA0B;AAC1B,mDAAgC;AAChC,sDAAmC;AACnC,mDAAgC;AAChC,mDAAgC;AAChC,8CAA2B;AAC3B,kDAA+B;AAC/B,+CAA4B;AAC5B,+CAA4B;AAC5B,kDAA+B;AAC/B,kDAA+B;AAC/B,0DAAuC;AACvC,oDAAiC;AACjC,+CAA4B;AAC5B,uDAAoC;AACpC,qDAAkC","sourcesContent":["export * from '../highlevel/utils/index.js'\nexport * from './async-lock.js'\nexport * from './bigint-utils.js'\nexport * from './buffer-utils.js'\nexport * from './condition-variable.js'\nexport * from './controllable-promise.js'\nexport * from './crypto/index.js'\nexport * from './dcs.js'\nexport * from './deque.js'\nexport * from './early-timer.js'\nexport * from './function-utils.js'\nexport * from './linked-list.js'\nexport * from './links/index.js'\nexport * from './logger.js'\nexport * from './long-utils.js'\nexport * from './lru-map.js'\nexport * from './lru-set.js'\nexport * from './misc-utils.js'\nexport * from './peer-utils.js'\nexport * from './platform/exit-hook.js'\nexport * from './sorted-array.js'\nexport * from './tl-json.js'\nexport * from './type-assertions.js'\nexport * from '@mtcute/tl-runtime'\n"]}
|
package/cjs/utils/logger.test.js
CHANGED
|
@@ -93,7 +93,7 @@ const logger_js_1 = require("./logger.js");
|
|
|
93
93
|
mgr.info('test %j', { a: 1 });
|
|
94
94
|
(0, vitest_1.expect)(spy).toHaveBeenCalledWith(3, 3, 'base', 'test {"a":1}', []);
|
|
95
95
|
});
|
|
96
|
-
if (import.meta.env.TEST_ENV === 'node') {
|
|
96
|
+
if (import.meta.env.TEST_ENV === 'node' || import.meta.env.TEST_ENV === 'bun') {
|
|
97
97
|
(0, vitest_1.it)('should format Buffers inside as hex strings', () => {
|
|
98
98
|
const [mgr, spy] = createManager();
|
|
99
99
|
// eslint-disable-next-line no-restricted-globals
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.test.js","sourceRoot":"","sources":["../../../src/utils/logger.test.ts"],"names":[],"mappings":"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","sourcesContent":["import Long from 'long'\nimport { describe, expect, it, vi } from 'vitest'\n\nimport { LogManager } from './logger.js'\n\ndescribe('logger', () => {\n const createManager = () => {\n const mgr = new LogManager()\n\n const spy = vi.fn<Parameters<typeof mgr.handler>>()\n mgr.handler = spy\n\n return [mgr, spy] as const\n }\n\n it('should only log messages below the set level', () => {\n const [mgr, spy] = createManager()\n\n mgr.level = LogManager.INFO\n mgr.error('test error')\n mgr.warn('test warn')\n mgr.info('test info')\n mgr.debug('test debug')\n mgr.verbose('test verbose')\n\n expect(spy).toHaveBeenCalledTimes(3)\n expect(spy).toHaveBeenCalledWith(3, 1, 'base', 'test error', [])\n expect(spy).toHaveBeenCalledWith(3, 2, 'base', 'test warn', [])\n expect(spy).toHaveBeenCalledWith(3, 3, 'base', 'test info', [])\n })\n\n it('should create child loggers', () => {\n const [mgr, spy] = createManager()\n\n mgr.create('child').info('test info')\n\n expect(spy).toHaveBeenCalledWith(0, 3, 'child', 'test info', [])\n })\n\n it('should apply filtering by tags', () => {\n const [mgr, spy] = createManager()\n\n const test1 = mgr.create('test1')\n const test2 = mgr.create('test2')\n\n mgr.filter((tag) => tag === 'test1')\n\n test1.info('test1 info')\n test2.info('test2 info')\n\n expect(spy).toHaveBeenCalledTimes(1)\n expect(spy).toHaveBeenCalledWith(5, 3, 'test1', 'test1 info', [])\n })\n\n it('should recursively add prefixes', () => {\n const [mgr, spy] = createManager()\n\n const test = mgr.create('test1')\n const test2 = test.create('test2')\n\n test.prefix = '[TEST] '\n test2.prefix = '[TEST2] '\n\n test2.create('test3').info('test info')\n\n expect(spy).toHaveBeenCalledWith(1, 3, 'test3', '[TEST] [TEST2] test info', [])\n })\n\n describe('formatting', () => {\n it('should pass generic format strings through', () => {\n const [mgr, spy] = createManager()\n\n mgr.info('test %s', 'info')\n\n expect(spy).toHaveBeenCalledWith(3, 3, 'base', 'test %s', ['info'])\n })\n\n describe('%h', () => {\n it('should format buffers as hex strings', () => {\n const [mgr, spy] = createManager()\n\n mgr.info('test %h', new Uint8Array([0x01, 0x02, 0x03]))\n\n expect(spy).toHaveBeenCalledWith(3, 3, 'base', 'test 010203', [])\n })\n\n it('should format numbers as hex', () => {\n const [mgr, spy] = createManager()\n\n mgr.info('test %h', 0x010203)\n mgr.info('test bigint %h', 0x010203n)\n\n expect(spy).toHaveBeenCalledWith(3, 3, 'base', 'test 10203', [])\n expect(spy).toHaveBeenCalledWith(3, 3, 'base', 'test bigint 10203', [])\n })\n\n it('should format everything else as normal strings', () => {\n const [mgr, spy] = createManager()\n\n mgr.info('test %h', {})\n\n expect(spy).toHaveBeenCalledWith(3, 3, 'base', 'test [object Object]', [])\n })\n })\n\n describe('%b', () => {\n it('should format booleans as strings', () => {\n const [mgr, spy] = createManager()\n\n mgr.info('test %b', true)\n\n expect(spy).toHaveBeenCalledWith(3, 3, 'base', 'test true', [])\n })\n\n it('should coerce everything to boolean', () => {\n const [mgr, spy] = createManager()\n\n mgr.info('test %b', 123)\n\n expect(spy).toHaveBeenCalledWith(3, 3, 'base', 'test true', [])\n })\n })\n\n describe('%j', () => {\n it('should format objects as JSON', () => {\n const [mgr, spy] = createManager()\n\n mgr.info('test %j', { a: 1 })\n\n expect(spy).toHaveBeenCalledWith(3, 3, 'base', 'test {\"a\":1}', [])\n })\n\n if (import.meta.env.TEST_ENV === 'node') {\n it('should format Buffers inside as hex strings', () => {\n const [mgr, spy] = createManager()\n\n // eslint-disable-next-line no-restricted-globals\n mgr.info('test %j', { a: Buffer.from([1, 2, 3]) })\n mgr.info('test Uint8Array %j', { a: new Uint8Array([1, 2, 3]) })\n\n expect(spy).toHaveBeenCalledWith(3, 3, 'base', 'test {\"a\":\"010203\"}', [])\n expect(spy).toHaveBeenCalledWith(3, 3, 'base', 'test Uint8Array {\"a\":\"010203\"}', [])\n })\n }\n\n it('should trim long buffers', () => {\n const [mgr, spy] = createManager()\n\n const _150hexZeros = Array(150).fill('00').join('')\n\n mgr.info('test %j', { a: new Uint8Array(300) })\n\n expect(spy).toHaveBeenCalledWith(3, 3, 'base', `test {\"a\":\"${_150hexZeros}...\"}`, [])\n })\n\n it('should have %J variation accepting iterators', () => {\n const [mgr, spy] = createManager()\n\n mgr.info('test %J', new Set([1, 2, 3]))\n\n expect(spy).toHaveBeenCalledWith(3, 3, 'base', 'test [1,2,3]', [])\n })\n })\n\n describe('%l', () => {\n it('should format Longs as strings', () => {\n const [mgr, spy] = createManager()\n\n mgr.info('test %l', Long.fromInt(123))\n\n expect(spy).toHaveBeenCalledWith(3, 3, 'base', 'test 123', [])\n })\n })\n\n describe('%L', () => {\n it('should format Long arrays as strings', () => {\n const [mgr, spy] = createManager()\n\n mgr.info('test %L', [Long.fromInt(123), Long.fromInt(456)])\n\n expect(spy).toHaveBeenCalledWith(3, 3, 'base', 'test [123, 456]', [])\n })\n\n it('should format everything else as n/a', () => {\n const [mgr, spy] = createManager()\n\n mgr.info('test %L', 123)\n\n expect(spy).toHaveBeenCalledWith(3, 3, 'base', 'test n/a', [])\n })\n })\n })\n})\n"]}
|
|
1
|
+
{"version":3,"file":"logger.test.js","sourceRoot":"","sources":["../../../src/utils/logger.test.ts"],"names":[],"mappings":";;;;;AAAA,gDAAuB;AACvB,mCAAiD;AAEjD,2CAAwC;AAExC,IAAA,iBAAQ,EAAC,QAAQ,EAAE,GAAG,EAAE;IACpB,MAAM,aAAa,GAAG,GAAG,EAAE;QACvB,MAAM,GAAG,GAAG,IAAI,sBAAU,EAAE,CAAA;QAE5B,MAAM,GAAG,GAAG,WAAE,CAAC,EAAE,EAAkC,CAAA;QACnD,GAAG,CAAC,OAAO,GAAG,GAAG,CAAA;QAEjB,OAAO,CAAC,GAAG,EAAE,GAAG,CAAU,CAAA;IAC9B,CAAC,CAAA;IAED,IAAA,WAAE,EAAC,8CAA8C,EAAE,GAAG,EAAE;QACpD,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,aAAa,EAAE,CAAA;QAElC,GAAG,CAAC,KAAK,GAAG,sBAAU,CAAC,IAAI,CAAA;QAC3B,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;QACvB,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QACrB,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QACrB,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;QACvB,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;QAE3B,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAA;QACpC,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,CAAC,CAAA;QAChE,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,CAAC,CAAA;QAC/D,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,CAAC,CAAA;IACnE,CAAC,CAAC,CAAA;IAEF,IAAA,WAAE,EAAC,6BAA6B,EAAE,GAAG,EAAE;QACnC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,aAAa,EAAE,CAAA;QAElC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QAErC,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,CAAC,CAAA;IACpE,CAAC,CAAC,CAAA;IAEF,IAAA,WAAE,EAAC,gCAAgC,EAAE,GAAG,EAAE;QACtC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,aAAa,EAAE,CAAA;QAElC,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QACjC,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QAEjC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,OAAO,CAAC,CAAA;QAEpC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QACxB,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QAExB,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAA;QACpC,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,CAAC,CAAA;IACrE,CAAC,CAAC,CAAA;IAEF,IAAA,WAAE,EAAC,iCAAiC,EAAE,GAAG,EAAE;QACvC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,aAAa,EAAE,CAAA;QAElC,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QAElC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAA;QACvB,KAAK,CAAC,MAAM,GAAG,UAAU,CAAA;QAEzB,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QAEvC,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,0BAA0B,EAAE,EAAE,CAAC,CAAA;IACnF,CAAC,CAAC,CAAA;IAEF,IAAA,iBAAQ,EAAC,YAAY,EAAE,GAAG,EAAE;QACxB,IAAA,WAAE,EAAC,4CAA4C,EAAE,GAAG,EAAE;YAClD,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,aAAa,EAAE,CAAA;YAElC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;YAE3B,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA;QACvE,CAAC,CAAC,CAAA;QAEF,IAAA,iBAAQ,EAAC,IAAI,EAAE,GAAG,EAAE;YAChB,IAAA,WAAE,EAAC,sCAAsC,EAAE,GAAG,EAAE;gBAC5C,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,aAAa,EAAE,CAAA;gBAElC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;gBAEvD,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,CAAC,CAAA;YACrE,CAAC,CAAC,CAAA;YAEF,IAAA,WAAE,EAAC,8BAA8B,EAAE,GAAG,EAAE;gBACpC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,aAAa,EAAE,CAAA;gBAElC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;gBAC7B,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAA;gBAErC,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,CAAC,CAAA;gBAChE,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,mBAAmB,EAAE,EAAE,CAAC,CAAA;YAC3E,CAAC,CAAC,CAAA;YAEF,IAAA,WAAE,EAAC,iDAAiD,EAAE,GAAG,EAAE;gBACvD,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,aAAa,EAAE,CAAA;gBAElC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;gBAEvB,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,sBAAsB,EAAE,EAAE,CAAC,CAAA;YAC9E,CAAC,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;QAEF,IAAA,iBAAQ,EAAC,IAAI,EAAE,GAAG,EAAE;YAChB,IAAA,WAAE,EAAC,mCAAmC,EAAE,GAAG,EAAE;gBACzC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,aAAa,EAAE,CAAA;gBAElC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;gBAEzB,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,CAAC,CAAA;YACnE,CAAC,CAAC,CAAA;YAEF,IAAA,WAAE,EAAC,qCAAqC,EAAE,GAAG,EAAE;gBAC3C,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,aAAa,EAAE,CAAA;gBAElC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;gBAExB,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,CAAC,CAAA;YACnE,CAAC,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;QAEF,IAAA,iBAAQ,EAAC,IAAI,EAAE,GAAG,EAAE;YAChB,IAAA,WAAE,EAAC,+BAA+B,EAAE,GAAG,EAAE;gBACrC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,aAAa,EAAE,CAAA;gBAElC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;gBAE7B,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,EAAE,CAAC,CAAA;YACtE,CAAC,CAAC,CAAA;YAEF,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,KAAK,KAAK,EAAE;gBAC3E,IAAA,WAAE,EAAC,6CAA6C,EAAE,GAAG,EAAE;oBACnD,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,aAAa,EAAE,CAAA;oBAElC,iDAAiD;oBACjD,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;oBAClD,GAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,CAAC,EAAE,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;oBAEhE,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,qBAAqB,EAAE,EAAE,CAAC,CAAA;oBACzE,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,gCAAgC,EAAE,EAAE,CAAC,CAAA;gBACxF,CAAC,CAAC,CAAA;aACL;YAED,IAAA,WAAE,EAAC,0BAA0B,EAAE,GAAG,EAAE;gBAChC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,aAAa,EAAE,CAAA;gBAElC,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;gBAEnD,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;gBAE/C,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,cAAc,YAAY,OAAO,EAAE,EAAE,CAAC,CAAA;YACzF,CAAC,CAAC,CAAA;YAEF,IAAA,WAAE,EAAC,8CAA8C,EAAE,GAAG,EAAE;gBACpD,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,aAAa,EAAE,CAAA;gBAElC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;gBAEvC,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,EAAE,CAAC,CAAA;YACtE,CAAC,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;QAEF,IAAA,iBAAQ,EAAC,IAAI,EAAE,GAAG,EAAE;YAChB,IAAA,WAAE,EAAC,gCAAgC,EAAE,GAAG,EAAE;gBACtC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,aAAa,EAAE,CAAA;gBAElC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,cAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAA;gBAEtC,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,CAAC,CAAA;YAClE,CAAC,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;QAEF,IAAA,iBAAQ,EAAC,IAAI,EAAE,GAAG,EAAE;YAChB,IAAA,WAAE,EAAC,sCAAsC,EAAE,GAAG,EAAE;gBAC5C,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,aAAa,EAAE,CAAA;gBAElC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,cAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,cAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;gBAE3D,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,iBAAiB,EAAE,EAAE,CAAC,CAAA;YACzE,CAAC,CAAC,CAAA;YAEF,IAAA,WAAE,EAAC,sCAAsC,EAAE,GAAG,EAAE;gBAC5C,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,aAAa,EAAE,CAAA;gBAElC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;gBAExB,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,CAAC,CAAA;YAClE,CAAC,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;AACN,CAAC,CAAC,CAAA","sourcesContent":["import Long from 'long'\nimport { describe, expect, it, vi } from 'vitest'\n\nimport { LogManager } from './logger.js'\n\ndescribe('logger', () => {\n const createManager = () => {\n const mgr = new LogManager()\n\n const spy = vi.fn<Parameters<typeof mgr.handler>>()\n mgr.handler = spy\n\n return [mgr, spy] as const\n }\n\n it('should only log messages below the set level', () => {\n const [mgr, spy] = createManager()\n\n mgr.level = LogManager.INFO\n mgr.error('test error')\n mgr.warn('test warn')\n mgr.info('test info')\n mgr.debug('test debug')\n mgr.verbose('test verbose')\n\n expect(spy).toHaveBeenCalledTimes(3)\n expect(spy).toHaveBeenCalledWith(3, 1, 'base', 'test error', [])\n expect(spy).toHaveBeenCalledWith(3, 2, 'base', 'test warn', [])\n expect(spy).toHaveBeenCalledWith(3, 3, 'base', 'test info', [])\n })\n\n it('should create child loggers', () => {\n const [mgr, spy] = createManager()\n\n mgr.create('child').info('test info')\n\n expect(spy).toHaveBeenCalledWith(0, 3, 'child', 'test info', [])\n })\n\n it('should apply filtering by tags', () => {\n const [mgr, spy] = createManager()\n\n const test1 = mgr.create('test1')\n const test2 = mgr.create('test2')\n\n mgr.filter((tag) => tag === 'test1')\n\n test1.info('test1 info')\n test2.info('test2 info')\n\n expect(spy).toHaveBeenCalledTimes(1)\n expect(spy).toHaveBeenCalledWith(5, 3, 'test1', 'test1 info', [])\n })\n\n it('should recursively add prefixes', () => {\n const [mgr, spy] = createManager()\n\n const test = mgr.create('test1')\n const test2 = test.create('test2')\n\n test.prefix = '[TEST] '\n test2.prefix = '[TEST2] '\n\n test2.create('test3').info('test info')\n\n expect(spy).toHaveBeenCalledWith(1, 3, 'test3', '[TEST] [TEST2] test info', [])\n })\n\n describe('formatting', () => {\n it('should pass generic format strings through', () => {\n const [mgr, spy] = createManager()\n\n mgr.info('test %s', 'info')\n\n expect(spy).toHaveBeenCalledWith(3, 3, 'base', 'test %s', ['info'])\n })\n\n describe('%h', () => {\n it('should format buffers as hex strings', () => {\n const [mgr, spy] = createManager()\n\n mgr.info('test %h', new Uint8Array([0x01, 0x02, 0x03]))\n\n expect(spy).toHaveBeenCalledWith(3, 3, 'base', 'test 010203', [])\n })\n\n it('should format numbers as hex', () => {\n const [mgr, spy] = createManager()\n\n mgr.info('test %h', 0x010203)\n mgr.info('test bigint %h', 0x010203n)\n\n expect(spy).toHaveBeenCalledWith(3, 3, 'base', 'test 10203', [])\n expect(spy).toHaveBeenCalledWith(3, 3, 'base', 'test bigint 10203', [])\n })\n\n it('should format everything else as normal strings', () => {\n const [mgr, spy] = createManager()\n\n mgr.info('test %h', {})\n\n expect(spy).toHaveBeenCalledWith(3, 3, 'base', 'test [object Object]', [])\n })\n })\n\n describe('%b', () => {\n it('should format booleans as strings', () => {\n const [mgr, spy] = createManager()\n\n mgr.info('test %b', true)\n\n expect(spy).toHaveBeenCalledWith(3, 3, 'base', 'test true', [])\n })\n\n it('should coerce everything to boolean', () => {\n const [mgr, spy] = createManager()\n\n mgr.info('test %b', 123)\n\n expect(spy).toHaveBeenCalledWith(3, 3, 'base', 'test true', [])\n })\n })\n\n describe('%j', () => {\n it('should format objects as JSON', () => {\n const [mgr, spy] = createManager()\n\n mgr.info('test %j', { a: 1 })\n\n expect(spy).toHaveBeenCalledWith(3, 3, 'base', 'test {\"a\":1}', [])\n })\n\n if (import.meta.env.TEST_ENV === 'node' || import.meta.env.TEST_ENV === 'bun') {\n it('should format Buffers inside as hex strings', () => {\n const [mgr, spy] = createManager()\n\n // eslint-disable-next-line no-restricted-globals\n mgr.info('test %j', { a: Buffer.from([1, 2, 3]) })\n mgr.info('test Uint8Array %j', { a: new Uint8Array([1, 2, 3]) })\n\n expect(spy).toHaveBeenCalledWith(3, 3, 'base', 'test {\"a\":\"010203\"}', [])\n expect(spy).toHaveBeenCalledWith(3, 3, 'base', 'test Uint8Array {\"a\":\"010203\"}', [])\n })\n }\n\n it('should trim long buffers', () => {\n const [mgr, spy] = createManager()\n\n const _150hexZeros = Array(150).fill('00').join('')\n\n mgr.info('test %j', { a: new Uint8Array(300) })\n\n expect(spy).toHaveBeenCalledWith(3, 3, 'base', `test {\"a\":\"${_150hexZeros}...\"}`, [])\n })\n\n it('should have %J variation accepting iterators', () => {\n const [mgr, spy] = createManager()\n\n mgr.info('test %J', new Set([1, 2, 3]))\n\n expect(spy).toHaveBeenCalledWith(3, 3, 'base', 'test [1,2,3]', [])\n })\n })\n\n describe('%l', () => {\n it('should format Longs as strings', () => {\n const [mgr, spy] = createManager()\n\n mgr.info('test %l', Long.fromInt(123))\n\n expect(spy).toHaveBeenCalledWith(3, 3, 'base', 'test 123', [])\n })\n })\n\n describe('%L', () => {\n it('should format Long arrays as strings', () => {\n const [mgr, spy] = createManager()\n\n mgr.info('test %L', [Long.fromInt(123), Long.fromInt(456)])\n\n expect(spy).toHaveBeenCalledWith(3, 3, 'base', 'test [123, 456]', [])\n })\n\n it('should format everything else as n/a', () => {\n const [mgr, spy] = createManager()\n\n mgr.info('test %L', 123)\n\n expect(spy).toHaveBeenCalledWith(3, 3, 'base', 'test n/a', [])\n })\n })\n })\n})\n"]}
|