@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.
Files changed (85) hide show
  1. package/cjs/highlevel/base.js +2 -2
  2. package/cjs/highlevel/base.js.map +1 -1
  3. package/cjs/highlevel/base.test.js +14 -0
  4. package/cjs/highlevel/base.test.js.map +1 -0
  5. package/cjs/highlevel/client.d.ts +1 -1
  6. package/cjs/highlevel/client.js.map +1 -1
  7. package/cjs/highlevel/client.types.d.ts +1 -1
  8. package/cjs/highlevel/client.types.js.map +1 -1
  9. package/cjs/highlevel/methods/_imports.js.map +1 -1
  10. package/cjs/highlevel/methods/auth/start.d.ts +1 -1
  11. package/cjs/highlevel/methods/auth/start.js.map +1 -1
  12. package/cjs/highlevel/methods.d.ts +239 -0
  13. package/cjs/highlevel/methods.js +487 -0
  14. package/cjs/highlevel/methods.js.map +1 -0
  15. package/cjs/highlevel/utils/index.d.ts +1 -0
  16. package/cjs/highlevel/utils/index.js +2 -1
  17. package/cjs/highlevel/utils/index.js.map +1 -1
  18. package/cjs/highlevel/utils/stream-utils.test.js +1 -1
  19. package/cjs/highlevel/utils/stream-utils.test.js.map +1 -1
  20. package/cjs/highlevel/utils/string-session.d.ts +12 -0
  21. package/cjs/{utils → highlevel/utils}/string-session.js +32 -10
  22. package/cjs/highlevel/utils/string-session.js.map +1 -0
  23. package/cjs/{utils → highlevel/utils}/string-session.test.js +85 -18
  24. package/cjs/highlevel/utils/string-session.test.js.map +1 -0
  25. package/cjs/highlevel/worker/port.d.ts +1 -1
  26. package/cjs/network/network-manager.js +1 -1
  27. package/cjs/network/transports/tcp.test.js +1 -1
  28. package/cjs/network/transports/tcp.test.js.map +1 -1
  29. package/cjs/utils/crypto/node.test.js +1 -1
  30. package/cjs/utils/crypto/node.test.js.map +1 -1
  31. package/cjs/utils/index.d.ts +0 -1
  32. package/cjs/utils/index.js +0 -1
  33. package/cjs/utils/index.js.map +1 -1
  34. package/cjs/utils/logger.test.js +1 -1
  35. package/cjs/utils/logger.test.js.map +1 -1
  36. package/cjs/utils/platform/logging.js +1 -2
  37. package/cjs/utils/platform/logging.js.map +1 -1
  38. package/esm/highlevel/base.js +2 -2
  39. package/esm/highlevel/base.js.map +1 -1
  40. package/esm/highlevel/base.test.d.ts +1 -0
  41. package/esm/highlevel/base.test.js +12 -0
  42. package/esm/highlevel/base.test.js.map +1 -0
  43. package/esm/highlevel/client.d.ts +1 -1
  44. package/esm/highlevel/client.js.map +1 -1
  45. package/esm/highlevel/client.types.d.ts +1 -1
  46. package/esm/highlevel/client.types.js.map +1 -1
  47. package/esm/highlevel/methods/_imports.js.map +1 -1
  48. package/esm/highlevel/methods/auth/start.d.ts +1 -1
  49. package/esm/highlevel/methods/auth/start.js.map +1 -1
  50. package/esm/highlevel/methods.d.ts +239 -0
  51. package/esm/highlevel/methods.js +241 -0
  52. package/esm/highlevel/methods.js.map +1 -0
  53. package/esm/highlevel/utils/index.d.ts +1 -0
  54. package/esm/highlevel/utils/index.js +2 -1
  55. package/esm/highlevel/utils/index.js.map +1 -1
  56. package/esm/highlevel/utils/stream-utils.test.js +1 -1
  57. package/esm/highlevel/utils/stream-utils.test.js.map +1 -1
  58. package/esm/highlevel/utils/string-session.d.ts +12 -0
  59. package/esm/{utils → highlevel/utils}/string-session.js +33 -11
  60. package/esm/highlevel/utils/string-session.js.map +1 -0
  61. package/esm/highlevel/utils/string-session.test.d.ts +1 -0
  62. package/esm/{utils → highlevel/utils}/string-session.test.js +85 -18
  63. package/esm/highlevel/utils/string-session.test.js.map +1 -0
  64. package/esm/highlevel/worker/port.d.ts +1 -1
  65. package/esm/network/network-manager.js +1 -1
  66. package/esm/network/transports/tcp.test.js +1 -1
  67. package/esm/network/transports/tcp.test.js.map +1 -1
  68. package/esm/utils/crypto/node.test.js +1 -1
  69. package/esm/utils/crypto/node.test.js.map +1 -1
  70. package/esm/utils/index.d.ts +0 -1
  71. package/esm/utils/index.js +0 -1
  72. package/esm/utils/index.js.map +1 -1
  73. package/esm/utils/logger.test.js +1 -1
  74. package/esm/utils/logger.test.js.map +1 -1
  75. package/esm/utils/platform/logging.js +1 -2
  76. package/esm/utils/platform/logging.js.map +1 -1
  77. package/package.json +5 -5
  78. package/cjs/utils/string-session.d.ts +0 -12
  79. package/cjs/utils/string-session.js.map +0 -1
  80. package/cjs/utils/string-session.test.js.map +0 -1
  81. package/esm/utils/string-session.d.ts +0 -12
  82. package/esm/utils/string-session.js.map +0 -1
  83. package/esm/utils/string-session.test.js.map +0 -1
  84. /package/cjs/{utils/string-session.test.d.ts → highlevel/base.test.d.ts} +0 -0
  85. /package/{esm → cjs/highlevel}/utils/string-session.test.d.ts +0 -0
@@ -5,4 +5,5 @@ export * from './misc-utils.js';
5
5
  export * from './peer-utils.js';
6
6
  export * from './rps-meter.js';
7
7
  export * from './stream-utils.js';
8
+ export * from './string-session.js';
8
9
  export * from './voice-utils.js';
@@ -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,2CAA2C;;;;;;;;;;;;;;;;AAE3C,kDAA+B;AAC/B,oDAAiC;AACjC,mDAAgC;AAChC,kDAA+B;AAC/B,kDAA+B;AAC/B,iDAA8B;AAC9B,oDAAiC;AACjC,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 './voice-utils.js'\n"]}
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":";;AAAA,6CAAsC;AACtC,mCAA6C;AAE7C,uDAA0E;AAE1E,IAAA,iBAAQ,EAAC,qBAAqB,EAAE,GAAG,EAAE;IACjC,IAAA,WAAE,EAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;QACnE,MAAM,MAAM,GAAG,IAAI,cAAc,CAAa;YAC1C,KAAK,CAAC,UAAU;gBACZ,UAAU,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;gBAC7C,UAAU,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;gBAC7C,UAAU,CAAC,KAAK,EAAE,CAAA;YACtB,CAAC;SACJ,CAAC,CAAA;QACF,MAAM,MAAM,GAAG,IAAA,qCAAmB,EAAC,MAAM,EAAE,CAAC,CAAC,CAAA;QAE7C,IAAA,eAAM,EAAC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;QACvE,IAAA,eAAM,EAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAA;QAClC,IAAA,eAAM,EAAC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;QACjE,IAAA,eAAM,EAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAA;QACjC,IAAA,eAAM,EAAC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAA;IAC1C,CAAC,CAAC,CAAA;IAEF,IAAA,WAAE,EAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;QAClE,MAAM,MAAM,GAAG,IAAI,cAAc,CAAa;YAC1C,KAAK,CAAC,UAAU;gBACZ,UAAU,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;gBAC7C,UAAU,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;gBAChD,UAAU,CAAC,KAAK,EAAE,CAAA;YACtB,CAAC;SACJ,CAAC,CAAA;QACF,MAAM,MAAM,GAAG,IAAA,qCAAmB,EAAC,MAAM,EAAE,CAAC,CAAC,CAAA;QAE7C,IAAA,eAAM,EAAC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;QACjE,IAAA,eAAM,EAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAA;QAClC,IAAA,eAAM,EAAC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;QACjE,IAAA,eAAM,EAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAA;QAClC,IAAA,eAAM,EAAC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;QACjE,IAAA,eAAM,EAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAA;QAClC,IAAA,eAAM,EAAC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAC9D,IAAA,eAAM,EAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAA;QACjC,IAAA,eAAM,EAAC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAA;IAC1C,CAAC,CAAC,CAAA;IAEF,IAAA,WAAE,EAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;QAC/D,MAAM,MAAM,GAAG,IAAI,cAAc,CAAa;YAC1C,KAAK,CAAC,UAAU;gBACZ,UAAU,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;gBAC7C,UAAU,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;gBAC7C,UAAU,CAAC,KAAK,EAAE,CAAA;YACtB,CAAC;SACJ,CAAC,CAAA;QACF,MAAM,MAAM,GAAG,IAAA,qCAAmB,EAAC,MAAM,EAAE,CAAC,CAAC,CAAA;QAE7C,IAAA,eAAM,EAAC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;QACpE,IAAA,eAAM,EAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAA;QAClC,IAAA,eAAM,EAAC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;QACpE,IAAA,eAAM,EAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAA;QACjC,IAAA,eAAM,EAAC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAA;IAC1C,CAAC,CAAC,CAAA;IAEF,IAAA,WAAE,EAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,MAAM,GAAG,IAAI,cAAc,CAAa;YAC1C,KAAK,CAAC,UAAU;gBACZ,UAAU,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;gBAC7C,UAAU,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;gBAChD,UAAU,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;gBAC1C,UAAU,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;gBACxD,UAAU,CAAC,KAAK,EAAE,CAAA;YACtB,CAAC;SACJ,CAAC,CAAA;QACF,MAAM,MAAM,GAAG,IAAA,qCAAmB,EAAC,MAAM,EAAE,CAAC,CAAC,CAAA;QAE7C,IAAA,eAAM,EAAC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;QACvE,IAAA,eAAM,EAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAA;QAClC,IAAA,eAAM,EAAC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;QACvE,IAAA,eAAM,EAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAA;QAClC,IAAA,eAAM,EAAC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;QAC1E,IAAA,eAAM,EAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAA;QAClC,IAAA,eAAM,EAAC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;QACnE,IAAA,eAAM,EAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAA;QACjC,IAAA,eAAM,EAAC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAA;IAC1C,CAAC,CAAC,CAAA;AACN,CAAC,CAAC,CAAA;AAEF,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,mBAAmB,EAAE,GAAG,EAAE;QAC/B,IAAA,WAAE,EAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;YACxD,MAAM,MAAM,GAAG,IAAI,sBAAQ,CAAC;gBACxB,IAAI;oBACA,iDAAiD;oBACjD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;oBACjC,iDAAiD;oBACjD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;oBACjC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBACnB,CAAC;aACJ,CAAC,CAAA;YAEF,MAAM,SAAS,GAAG,IAAA,mCAAiB,EAAC,MAAM,CAAC,CAAA;YAC3C,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,EAAE,CAAA;YAEpC,IAAA,eAAM,EAAC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;YAC5F,IAAA,eAAM,EAAC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;YAC5F,IAAA,eAAM,EAAC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;QAC/E,CAAC,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;CACL","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("../types/index.js");
6
- function writeStringSession(writerMap, data) {
7
- const writer = tl_runtime_1.TlBinaryWriter.alloc(writerMap, 512);
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 !== 1 && version !== 2) {
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.object(data.primaryDcs.main);
26
+ writer.bytes((0, dcs_js_1.serializeBasicDcOption)(data.primaryDcs.main));
26
27
  if (version >= 2 && data.primaryDcs.media !== data.primaryDcs.main) {
27
- writer.object(data.primaryDcs.media);
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
- const primaryDc = reader.object();
49
- const primaryMediaDc = hasMedia ? reader.object() : primaryDc;
50
- if (primaryDc._ !== 'dcOption') {
51
- throw new index_js_1.MtArgumentError(`Invalid session string (dc._ = ${primaryDc._})`);
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 writer_js_1 = require("@mtcute/tl/binary/writer.js");
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)(writer_js_1.__tlWriterMap, {
21
- version: 2,
39
+ (0, vitest_1.expect)((0, string_session_js_1.writeStringSession)({
40
+ version: 3,
22
41
  testMode: false,
23
- primaryDcs: stubDcs,
42
+ primaryDcs: stubDcsBasic,
24
43
  authKey: stubAuthKey,
25
- })).toMatchInlineSnapshot('"AgQAAAANobcYAAAAAAIAAAAOMTQ5LjE1NC4xNjcuNTAAuwEAAA2htxgCAAAAAgAAAA8xNDkuMTU0LjE2Ny4yMjK7AQAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"');
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)(writer_js_1.__tlWriterMap, {
29
- version: 2,
47
+ (0, vitest_1.expect)((0, string_session_js_1.writeStringSession)({
48
+ version: 3,
30
49
  testMode: false,
31
- primaryDcs: stubDcsSameMedia,
50
+ primaryDcs: stubDcsBasicSameMedia,
32
51
  authKey: stubAuthKey,
33
- })).toMatchInlineSnapshot('"AgAAAAANobcYAAAAAAIAAAAOMTQ5LjE1NC4xNjcuNTAAuwEAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"');
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)(writer_js_1.__tlWriterMap, {
37
- version: 2,
55
+ (0, vitest_1.expect)((0, string_session_js_1.writeStringSession)({
56
+ version: 3,
38
57
  testMode: false,
39
- primaryDcs: stubDcs,
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('"AgUAAAANobcYAAAAAAIAAAAOMTQ5LjE1NC4xNjcuNTAAuwEAAA2htxgCAAAAAgAAAA8xNDkuMTU0LjE2Ny4yMjK7AQAAOTAAAAAAAAA3l3m8IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"');
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)(writer_js_1.__tlWriterMap, {
51
- version: 2,
69
+ (0, vitest_1.expect)((0, string_session_js_1.writeStringSession)({
70
+ version: 3,
52
71
  testMode: true,
53
- primaryDcs: stubDcs,
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('"AgcAAAANobcYAAAAAAIAAAAOMTQ5LjE1NC4xNjcuNTAAuwEAAA2htxgCAAAAAgAAAA8xNDkuMTU0LjE2Ny4yMjK7AQAAOTAAAAAAAAA3l3m8IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"');
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("../../utils/string-session.js").StringSessionData, force?: boolean | undefined) => Promise<void>;
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<{
@@ -244,7 +244,7 @@ class NetworkManager {
244
244
  _: 'initConnection',
245
245
  deviceModel,
246
246
  systemVersion: '1.0',
247
- appVersion: '0.7.0',
247
+ appVersion: '0.7.2',
248
248
  systemLangCode: 'en',
249
249
  langPack: '',
250
250
  langCode: 'en',
@@ -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":";;AACA,mCAA+D;AAE/D,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,EAAE;IACrC,WAAE,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QACpB,OAAO,EAAE,WAAE,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,IAAY,EAAE,EAAU,EAAE,EAAc,EAAE,EAAE;YAC7E,EAAE,EAAE,CAAA;YAEJ,OAAO;gBACH,EAAE,EAAE,WAAE,CAAC,EAAE,EAAE;gBACX,KAAK,EAAE,WAAE,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,IAAgB,EAAE,EAAc,EAAE,EAAE;oBACnE,EAAE,EAAE,CAAA;gBACR,CAAC,CAAC;gBACF,GAAG,EAAE,WAAE,CAAC,EAAE,EAAE;gBACZ,kBAAkB,EAAE,WAAE,CAAC,EAAE,EAAE;gBAC3B,OAAO,EAAE,WAAE,CAAC,EAAE,EAAE;aACnB,CAAA;QACL,CAAC,CAAC;KACL,CAAC,CAAC,CAAA;IAEH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,CAAA;IAC/B,MAAM,OAAO,GAAG,WAAE,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IAEtC,8EAA8E;IAC9E,MAAM,EAAE,yBAAyB,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAA;IAE/E,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAA;IACjD,MAAM,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAA;IACnG,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAA;IAExD,IAAA,iBAAQ,EAAC,cAAc,EAAE,GAAG,EAAE;QAC1B,MAAM,aAAa,GAAG,GAAG,EAAE;YACvB,OAAO,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAA6B,CAAA;QAC9F,CAAC,CAAA;QAED,MAAM,MAAM,GAAG,KAAK,IAAI,EAAE;YACtB,MAAM,SAAS,GAAG,IAAI,YAAY,EAAE,CAAA;YACpC,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAA;YAC/B,MAAM,CAAC,KAAK,GAAG,CAAC,CAAA;YAChB,SAAS,CAAC,KAAK,CAAC,MAAM,yBAAyB,EAAE,EAAE,MAAM,CAAC,CAAA;YAE1D,OAAO,SAAS,CAAA;QACpB,CAAC,CAAA;QAED,IAAA,WAAE,EAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;YAC9D,MAAM,CAAC,GAAG,MAAM,MAAM,EAAE,CAAA;YAExB,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;YAE1C,IAAA,eAAM,EAAC,OAAO,CAAC,CAAC,oBAAoB,EAAE,CAAA;YACtC,IAAA,eAAM,EAAC,OAAO,CAAC,CAAC,oBAAoB,CAChC,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAC7B,mBAAmB,CAAC,IAAI,CAAC,SAAS,EAClC,eAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CACvB,CAAA;YACD,MAAM,WAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAA,eAAM,EAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAA;QAC3E,CAAC,CAAC,CAAA;QAEF,IAAA,WAAE,EAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;YAC1C,MAAM,CAAC,GAAG,MAAM,MAAM,EAAE,CAAA;YAExB,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;YAE1C,MAAM,MAAM,GAAG,aAAa,EAAE,CAAA;YAE9B,IAAA,eAAM,EAAC,MAAM,CAAC,EAAE,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAA;YAC1C,IAAA,eAAM,EAAC,MAAM,CAAC,EAAE,CAAC,CAAC,oBAAoB,CAAC,MAAM,EAAE,eAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAA;YACpE,IAAA,eAAM,EAAC,MAAM,CAAC,EAAE,CAAC,CAAC,oBAAoB,CAAC,OAAO,EAAE,eAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAA;YACrE,IAAA,eAAM,EAAC,MAAM,CAAC,EAAE,CAAC,CAAC,oBAAoB,CAAC,OAAO,EAAE,eAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAA;QACzE,CAAC,CAAC,CAAA;QAEF,IAAA,WAAE,EAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;YAC1D,MAAM,CAAC,GAAG,MAAM,MAAM,EAAE,CAAA;YAExB,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;YAE1C,MAAM,MAAM,GAAG,aAAa,EAAE,CAAA;YAE9B,MAAM,WAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAClB,IAAA,eAAM,EAAC,MAAM,CAAC,KAAK,CAAC,CAAC,oBAAoB,CACrC,WAAW,CAAC,UAAU,CAAC,EAAE,eAAe;YACxC,eAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CACvB,CACJ,CAAA;QACL,CAAC,CAAC,CAAA;QAEF,IAAA,WAAE,EAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;YACnD,MAAM,CAAC,GAAG,MAAM,MAAM,EAAE,CAAA;YAExB,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;YAC1C,MAAM,WAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAA,eAAM,EAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAA;YAEvE,MAAM,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,sBAAsB,CAAC,CAAC,CAAA;YAEvD,MAAM,MAAM,GAAG,aAAa,EAAE,CAAA;YAE9B,IAAA,eAAM,EAAC,MAAM,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAAC,WAAW,CAAC,8BAA8B,CAAC,EAAE,eAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAA;QAChH,CAAC,CAAC,CAAA;QAEF,IAAA,WAAE,EAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;YACpC,MAAM,CAAC,GAAG,MAAM,MAAM,EAAE,CAAA;YAExB,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;YAC1C,MAAM,WAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAA,eAAM,EAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAA;YAEvE,CAAC,CAAC,KAAK,EAAE,CAAA;YAET,MAAM,MAAM,GAAG,aAAa,EAAE,CAAA;YAE9B,IAAA,eAAM,EAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,oBAAoB,EAAE,CAAA;YACxD,IAAA,eAAM,EAAC,MAAM,CAAC,OAAO,CAAC,CAAC,oBAAoB,EAAE,CAAA;QACjD,CAAC,CAAC,CAAA;QAEF,IAAA,WAAE,EAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;YAClD,MAAM,CAAC,GAAG,MAAM,MAAM,EAAE,CAAA;YACxB,MAAM,KAAK,GAAG,CAAC,CAAC,YAAY,CAAA;YAE5B,MAAM,OAAO,GAAG,WAAE,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;YAEvC,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;YAC1C,MAAM,WAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAA,eAAM,EAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAA;YAEvE,MAAM,MAAM,GAAG,aAAa,EAAE,CAAA;YAE9B,MAAM,UAAU,GAAG,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAE,CAAc,CAAC,CAAC,CAAC,KAAK,MAAM,CAGhF,CAAA;YACD,UAAU,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC,CAAA;YAElD,IAAA,eAAM,EAAC,OAAO,CAAC,CAAC,oBAAoB,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC,CAAA;QAC7E,CAAC,CAAC,CAAA;QAEF,IAAA,WAAE,EAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;YACrC,MAAM,CAAC,GAAG,MAAM,MAAM,EAAE,CAAA;YAExB,MAAM,OAAO,GAAG,WAAE,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;YAElE,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;YAC1C,MAAM,WAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAA,eAAM,EAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAA;YAEvE,MAAM,MAAM,GAAG,aAAa,EAAE,CAAA;YAE9B,MAAM,WAAW,GAAG,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAE,CAAc,CAAC,CAAC,CAAC,KAAK,OAAO,CAGlF,CAAA;YACD,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,CAAA;YAEvC,IAAA,eAAM,EAAC,OAAO,CAAC,CAAC,oBAAoB,CAAC,OAAO,EAAE,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,CAAA;QAC1E,CAAC,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;CACL;KAAM;IACH,iBAAQ,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;CAC1C","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;IACrC,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') {\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"]}
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"]}
@@ -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';
@@ -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);
@@ -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,sDAAmC;AACnC,+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 './string-session.js'\nexport * from './tl-json.js'\nexport * from './type-assertions.js'\nexport * from '@mtcute/tl-runtime'\n"]}
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"]}
@@ -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":"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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' || 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"]}