@mtcute/test 0.1.1

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 (52) hide show
  1. package/LICENSE +8 -0
  2. package/README.md +5 -0
  3. package/cjs/client.d.ts +43 -0
  4. package/cjs/client.js +217 -0
  5. package/cjs/client.js.map +1 -0
  6. package/cjs/index.d.ts +5 -0
  7. package/cjs/index.js +22 -0
  8. package/cjs/index.js.map +1 -0
  9. package/cjs/package.json +3 -0
  10. package/cjs/schema.d.ts +1 -0
  11. package/cjs/schema.js +32 -0
  12. package/cjs/schema.js.map +1 -0
  13. package/cjs/storage.d.ts +50 -0
  14. package/cjs/storage.js +58 -0
  15. package/cjs/storage.js.map +1 -0
  16. package/cjs/stub.d.ts +2 -0
  17. package/cjs/stub.js +71 -0
  18. package/cjs/stub.js.map +1 -0
  19. package/cjs/transport.d.ts +30 -0
  20. package/cjs/transport.js +52 -0
  21. package/cjs/transport.js.map +1 -0
  22. package/cjs/types.d.ts +8 -0
  23. package/cjs/types.js +3 -0
  24. package/cjs/types.js.map +1 -0
  25. package/cjs/utils.d.ts +2 -0
  26. package/cjs/utils.js +18 -0
  27. package/cjs/utils.js.map +1 -0
  28. package/esm/client.d.ts +43 -0
  29. package/esm/client.js +213 -0
  30. package/esm/client.js.map +1 -0
  31. package/esm/index.d.ts +5 -0
  32. package/esm/index.js +6 -0
  33. package/esm/index.js.map +1 -0
  34. package/esm/schema.d.ts +1 -0
  35. package/esm/schema.js +28 -0
  36. package/esm/schema.js.map +1 -0
  37. package/esm/storage.d.ts +50 -0
  38. package/esm/storage.js +54 -0
  39. package/esm/storage.js.map +1 -0
  40. package/esm/stub.d.ts +2 -0
  41. package/esm/stub.js +64 -0
  42. package/esm/stub.js.map +1 -0
  43. package/esm/transport.d.ts +30 -0
  44. package/esm/transport.js +45 -0
  45. package/esm/transport.js.map +1 -0
  46. package/esm/types.d.ts +8 -0
  47. package/esm/types.js +2 -0
  48. package/esm/types.js.map +1 -0
  49. package/esm/utils.d.ts +2 -0
  50. package/esm/utils.js +14 -0
  51. package/esm/utils.js.map +1 -0
  52. package/package.json +24 -0
@@ -0,0 +1,30 @@
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ import EventEmitter from 'events';
3
+ import { ITelegramTransport, TransportState } from '@mtcute/core';
4
+ import { ICryptoProvider, Logger } from '@mtcute/core/utils.js';
5
+ import { tl } from '@mtcute/tl';
6
+ export declare class StubTelegramTransport extends EventEmitter implements ITelegramTransport {
7
+ readonly params: {
8
+ getMtproxyInfo?: () => tl.RawInputClientProxy;
9
+ onConnect?: (dc: tl.RawDcOption, testMode: boolean) => void;
10
+ onClose?: () => void;
11
+ onMessage?: (msg: Uint8Array) => void;
12
+ };
13
+ constructor(params: {
14
+ getMtproxyInfo?: () => tl.RawInputClientProxy;
15
+ onConnect?: (dc: tl.RawDcOption, testMode: boolean) => void;
16
+ onClose?: () => void;
17
+ onMessage?: (msg: Uint8Array) => void;
18
+ });
19
+ _state: TransportState;
20
+ _currentDc: tl.RawDcOption | null;
21
+ _crypto: ICryptoProvider;
22
+ _log: Logger;
23
+ write(data: Uint8Array): void;
24
+ setup(crypto: ICryptoProvider, log: Logger): void;
25
+ state(): TransportState;
26
+ currentDc(): tl.RawDcOption | null;
27
+ connect(dc: tl.RawDcOption, testMode: boolean): void;
28
+ close(): void;
29
+ send(data: Uint8Array): Promise<void>;
30
+ }
@@ -0,0 +1,45 @@
1
+ import EventEmitter from 'events';
2
+ import { TransportState } from '@mtcute/core';
3
+ export class StubTelegramTransport extends EventEmitter {
4
+ constructor(params) {
5
+ super();
6
+ this.params = params;
7
+ this._state = TransportState.Idle;
8
+ this._currentDc = null;
9
+ if (params.getMtproxyInfo) {
10
+ this.getMtproxyInfo = params.getMtproxyInfo;
11
+ }
12
+ }
13
+ write(data) {
14
+ this.emit('message', data);
15
+ }
16
+ setup(crypto, log) {
17
+ this._crypto = crypto;
18
+ this._log = log;
19
+ }
20
+ state() {
21
+ return this._state;
22
+ }
23
+ currentDc() {
24
+ return this._currentDc;
25
+ }
26
+ connect(dc, testMode) {
27
+ this._currentDc = dc;
28
+ this._state = TransportState.Ready;
29
+ this.emit('ready');
30
+ this._log.debug('stubbing connection to %s:%d', dc.ipAddress, dc.port);
31
+ this.params.onConnect?.(dc, testMode);
32
+ }
33
+ close() {
34
+ this._currentDc = null;
35
+ this._state = TransportState.Idle;
36
+ this.emit('close');
37
+ this._log.debug('stub connection closed');
38
+ this.params.onClose?.();
39
+ }
40
+ // eslint-disable-next-line @typescript-eslint/require-await
41
+ async send(data) {
42
+ this.params.onMessage?.(data);
43
+ }
44
+ }
45
+ //# sourceMappingURL=transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../src/transport.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,QAAQ,CAAA;AAEjC,OAAO,EAAsB,cAAc,EAAE,MAAM,cAAc,CAAA;AAIjE,MAAM,OAAO,qBAAsB,SAAQ,YAAY;IACnD,YACa,MAKR;QAED,KAAK,EAAE,CAAA;QAPE,WAAM,GAAN,MAAM,CAKd;QASL,WAAM,GAAG,cAAc,CAAC,IAAI,CAAA;QAC5B,eAAU,GAA0B,IAAI,CAAA;QANpC,IAAI,MAAM,CAAC,cAAc,EAAE;YACtB,IAA2B,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAA;SACtE;IACL,CAAC;IAOD,KAAK,CAAC,IAAgB;QAClB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;IAC9B,CAAC;IAED,KAAK,CAAC,MAAuB,EAAE,GAAW;QACtC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;QACrB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAA;IACnB,CAAC;IAED,KAAK;QACD,OAAO,IAAI,CAAC,MAAM,CAAA;IACtB,CAAC;IAED,SAAS;QACL,OAAO,IAAI,CAAC,UAAU,CAAA;IAC1B,CAAC;IAED,OAAO,CAAC,EAAkB,EAAE,QAAiB;QACzC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAA;QACpB,IAAI,CAAC,MAAM,GAAG,cAAc,CAAC,KAAK,CAAA;QAClC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAClB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,8BAA8B,EAAE,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,CAAA;QAEtE,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAA;IACzC,CAAC;IAED,KAAK;QACD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;QACtB,IAAI,CAAC,MAAM,GAAG,cAAc,CAAC,IAAI,CAAA;QACjC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAClB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAA;QAEzC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAA;IAC3B,CAAC;IAED,4DAA4D;IAC5D,KAAK,CAAC,IAAI,CAAC,IAAgB;QACvB,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAA;IACjC,CAAC;CACJ","sourcesContent":["import EventEmitter from 'events'\n\nimport { ITelegramTransport, TransportState } from '@mtcute/core'\nimport { ICryptoProvider, Logger } from '@mtcute/core/utils.js'\nimport { tl } from '@mtcute/tl'\n\nexport class StubTelegramTransport extends EventEmitter implements ITelegramTransport {\n constructor(\n readonly params: {\n getMtproxyInfo?: () => tl.RawInputClientProxy\n onConnect?: (dc: tl.RawDcOption, testMode: boolean) => void\n onClose?: () => void\n onMessage?: (msg: Uint8Array) => void\n },\n ) {\n super()\n\n if (params.getMtproxyInfo) {\n (this as ITelegramTransport).getMtproxyInfo = params.getMtproxyInfo\n }\n }\n\n _state = TransportState.Idle\n _currentDc: tl.RawDcOption | null = null\n _crypto!: ICryptoProvider\n _log!: Logger\n\n write(data: Uint8Array): void {\n this.emit('message', data)\n }\n\n setup(crypto: ICryptoProvider, log: Logger): void {\n this._crypto = crypto\n this._log = log\n }\n\n state(): TransportState {\n return this._state\n }\n\n currentDc(): tl.RawDcOption | null {\n return this._currentDc\n }\n\n connect(dc: tl.RawDcOption, testMode: boolean): void {\n this._currentDc = dc\n this._state = TransportState.Ready\n this.emit('ready')\n this._log.debug('stubbing connection to %s:%d', dc.ipAddress, dc.port)\n\n this.params.onConnect?.(dc, testMode)\n }\n\n close(): void {\n this._currentDc = null\n this._state = TransportState.Idle\n this.emit('close')\n this._log.debug('stub connection closed')\n\n this.params.onClose?.()\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n async send(data: Uint8Array): Promise<void> {\n this.params.onMessage?.(data)\n }\n}\n"]}
package/esm/types.d.ts ADDED
@@ -0,0 +1,8 @@
1
+ import { tl } from '@mtcute/tl';
2
+ import type { StubTelegramClient } from './client.js';
3
+ export type Responder<Method extends tl.RpcMethod['_']> = [
4
+ Method,
5
+ (req: tl.FindByName<tl.RpcMethod, Method>) => tl.RpcCallReturn[Method]
6
+ ];
7
+ export type ResponderFactory<Method extends tl.RpcMethod['_']> = (client: StubTelegramClient) => Responder<Method>;
8
+ export type InputResponder<Method extends tl.RpcMethod['_']> = Responder<Method> | ResponderFactory<Method> | InputResponder<Method>[];
package/esm/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport type { StubTelegramClient } from './client.js'\n\nexport type Responder<Method extends tl.RpcMethod['_']> = [\n Method,\n (req: tl.FindByName<tl.RpcMethod, Method>) => tl.RpcCallReturn[Method],\n]\nexport type ResponderFactory<Method extends tl.RpcMethod['_']> = (client: StubTelegramClient) => Responder<Method>\nexport type InputResponder<Method extends tl.RpcMethod['_']> =\n | Responder<Method>\n | ResponderFactory<Method>\n | InputResponder<Method>[]\n"]}
package/esm/utils.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ import { tl } from '@mtcute/core';
2
+ export declare function markedIdToPeer(id: number): tl.TypePeer;
package/esm/utils.js ADDED
@@ -0,0 +1,14 @@
1
+ import { getBasicPeerType, markedPeerIdToBare } from '@mtcute/core';
2
+ export function markedIdToPeer(id) {
3
+ const type = getBasicPeerType(id);
4
+ const bareId = markedPeerIdToBare(id);
5
+ switch (type) {
6
+ case 'user':
7
+ return { _: 'peerUser', userId: bareId };
8
+ case 'chat':
9
+ return { _: 'peerChat', chatId: bareId };
10
+ case 'channel':
11
+ return { _: 'peerChannel', channelId: bareId };
12
+ }
13
+ }
14
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAM,MAAM,cAAc,CAAA;AAEvE,MAAM,UAAU,cAAc,CAAC,EAAU;IACrC,MAAM,IAAI,GAAG,gBAAgB,CAAC,EAAE,CAAC,CAAA;IACjC,MAAM,MAAM,GAAG,kBAAkB,CAAC,EAAE,CAAC,CAAA;IAErC,QAAQ,IAAI,EAAE;QACV,KAAK,MAAM;YACP,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,CAAA;QAC5C,KAAK,MAAM;YACP,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,CAAA;QAC5C,KAAK,SAAS;YACV,OAAO,EAAE,CAAC,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE,CAAA;KACrD;AACL,CAAC","sourcesContent":["import { getBasicPeerType, markedPeerIdToBare, tl } from '@mtcute/core'\n\nexport function markedIdToPeer(id: number): tl.TypePeer {\n const type = getBasicPeerType(id)\n const bareId = markedPeerIdToBare(id)\n\n switch (type) {\n case 'user':\n return { _: 'peerUser', userId: bareId }\n case 'chat':\n return { _: 'peerChat', chatId: bareId }\n case 'channel':\n return { _: 'peerChannel', channelId: bareId }\n }\n}\n"]}
package/package.json ADDED
@@ -0,0 +1,24 @@
1
+ {
2
+ "name": "@mtcute/test",
3
+ "version": "0.1.1",
4
+ "description": "Test utilities for mtcute",
5
+ "author": "Alina Sireneva <alina@tei.su>",
6
+ "license": "MIT",
7
+ "main": "cjs/index.js",
8
+ "type": "module",
9
+ "scripts": {},
10
+ "dependencies": {
11
+ "long": "5.2.3"
12
+ },
13
+ "peerDependencies": {
14
+ "@mtcute/core": "^0.1.1",
15
+ "@mtcute/tl": "^*"
16
+ },
17
+ "module": "esm/index.js",
18
+ "exports": {
19
+ ".": {
20
+ "import": "./esm/index.js",
21
+ "require": "./cjs/index.js"
22
+ }
23
+ }
24
+ }