@mtcute/web 0.18.0-rc.5 → 0.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/client.d.cts ADDED
@@ -0,0 +1,23 @@
1
+ import { ITelegramStorageProvider, PartialOnly } from '@mtcute/core';
2
+ import { BaseTelegramClientOptions as BaseTelegramClientOptionsBase, TelegramClientOptions, BaseTelegramClient as BaseTelegramClientBase, TelegramClient as TelegramClientBase } from '@mtcute/core/client.js';
3
+ export type { TelegramClientOptions };
4
+ export interface BaseTelegramClientOptions extends PartialOnly<Omit<BaseTelegramClientOptionsBase, 'storage'>, 'transport' | 'crypto' | 'platform'> {
5
+ /**
6
+ * Storage to use for this client.
7
+ *
8
+ * If a string is passed, it will be used as
9
+ * a name for an IndexedDB database.
10
+ *
11
+ * @default `"client.session"`
12
+ */
13
+ storage?: string | ITelegramStorageProvider;
14
+ }
15
+ export declare class BaseTelegramClient extends BaseTelegramClientBase {
16
+ constructor(opts: BaseTelegramClientOptions);
17
+ }
18
+ /**
19
+ * Telegram client for use in Node.js
20
+ */
21
+ export declare class TelegramClient extends TelegramClientBase {
22
+ constructor(opts: TelegramClientOptions);
23
+ }
@@ -0,0 +1,2 @@
1
+ /** @internal */
2
+ export declare const defaultLoggingHandler: (color: number, level: number, tag: string, fmt: string, args: unknown[]) => void;
package/crypto.d.cts ADDED
@@ -0,0 +1,21 @@
1
+ import { IAesCtr, ICryptoProvider, IEncryptionScheme, BaseCryptoProvider } from '@mtcute/core/utils.js';
2
+ import { WasmInitInput } from './wasm.js';
3
+ export interface WebCryptoProviderOptions {
4
+ crypto?: Crypto;
5
+ wasmInput?: WasmInitInput;
6
+ }
7
+ export declare class WebCryptoProvider extends BaseCryptoProvider implements ICryptoProvider {
8
+ readonly crypto: Crypto;
9
+ private _wasmInput?;
10
+ sha1(data: Uint8Array): Uint8Array;
11
+ sha256(data: Uint8Array): Uint8Array;
12
+ createAesCtr(key: Uint8Array, iv: Uint8Array): IAesCtr;
13
+ createAesIge(key: Uint8Array, iv: Uint8Array): IEncryptionScheme;
14
+ gzip(data: Uint8Array, maxSize: number): Uint8Array | null;
15
+ gunzip(data: Uint8Array): Uint8Array;
16
+ constructor(params?: WebCryptoProviderOptions);
17
+ initialize(): Promise<void>;
18
+ pbkdf2(password: Uint8Array, salt: Uint8Array, iterations: number, keylen?: number | undefined, algo?: string | undefined): Promise<Uint8Array>;
19
+ hmacSha256(data: Uint8Array, key: Uint8Array): Promise<Uint8Array>;
20
+ randomFill(buf: Uint8Array): void;
21
+ }
@@ -0,0 +1 @@
1
+ export declare function beforeExit(fn: () => void): () => void;
@@ -0,0 +1,18 @@
1
+ import { BaseStorageDriver } from '@mtcute/core';
2
+ export type PostMigrationFunction = (db: IDBDatabase) => Promise<void>;
3
+ type MigrationFunction = (db: IDBDatabase) => void | PostMigrationFunction;
4
+ export declare class IdbStorageDriver extends BaseStorageDriver {
5
+ readonly _dbName: string;
6
+ db: IDBDatabase;
7
+ constructor(_dbName: string);
8
+ private _pendingWrites;
9
+ private _pendingWritesOses;
10
+ private _migrations;
11
+ private _maxVersion;
12
+ registerMigration(repo: string, version: number, migration: MigrationFunction): void;
13
+ writeLater(os: string, obj: unknown): void;
14
+ _load(): Promise<void>;
15
+ _save(): Promise<void>;
16
+ _destroy(): void;
17
+ }
18
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,22 @@
1
+ import { IMtStorageProvider } from '@mtcute/core';
2
+ import { IdbStorageDriver } from './driver.js';
3
+ import { IdbAuthKeysRepository } from './repository/auth-keys.js';
4
+ import { IdbKvRepository } from './repository/kv.js';
5
+ import { IdbPeersRepository } from './repository/peers.js';
6
+ import { IdbRefMsgRepository } from './repository/ref-messages.js';
7
+ export { IdbStorageDriver } from './driver.js';
8
+ /**
9
+ * mtcute storage that uses IndexedDB as a backend.
10
+ *
11
+ * This storage is the default one for browsers, and is generally
12
+ * recommended over local storage based one.
13
+ */
14
+ export declare class IdbStorage implements IMtStorageProvider {
15
+ readonly dbName: string;
16
+ readonly driver: IdbStorageDriver;
17
+ readonly kv: IdbKvRepository;
18
+ readonly authKeys: IdbAuthKeysRepository;
19
+ readonly peers: IdbPeersRepository;
20
+ readonly refMessages: IdbRefMsgRepository;
21
+ constructor(dbName: string);
22
+ }
@@ -0,0 +1,14 @@
1
+ import { IAuthKeysRepository } from '@mtcute/core';
2
+ import { IdbStorageDriver } from '../driver.js';
3
+ export declare class IdbAuthKeysRepository implements IAuthKeysRepository {
4
+ readonly _driver: IdbStorageDriver;
5
+ constructor(_driver: IdbStorageDriver);
6
+ private os;
7
+ set(dc: number, key: Uint8Array | null): Promise<void>;
8
+ get(dc: number): Promise<Uint8Array | null>;
9
+ private osTemp;
10
+ setTemp(dc: number, idx: number, key: Uint8Array | null, expires: number): Promise<void>;
11
+ getTemp(dc: number, idx: number, now: number): Promise<Uint8Array | null>;
12
+ deleteByDc(dc: number): Promise<void>;
13
+ deleteAll(): Promise<void>;
14
+ }
@@ -0,0 +1,11 @@
1
+ import { IKeyValueRepository } from '@mtcute/core';
2
+ import { IdbStorageDriver } from '../driver.js';
3
+ export declare class IdbKvRepository implements IKeyValueRepository {
4
+ readonly _driver: IdbStorageDriver;
5
+ constructor(_driver: IdbStorageDriver);
6
+ set(key: string, value: Uint8Array): void;
7
+ private os;
8
+ get(key: string): Promise<Uint8Array | null>;
9
+ delete(key: string): Promise<void>;
10
+ deleteAll(): Promise<void>;
11
+ }
@@ -0,0 +1,12 @@
1
+ import { IPeersRepository } from '@mtcute/core';
2
+ import { IdbStorageDriver } from '../driver.js';
3
+ export declare class IdbPeersRepository implements IPeersRepository {
4
+ readonly _driver: IdbStorageDriver;
5
+ constructor(_driver: IdbStorageDriver);
6
+ store(peer: IPeersRepository.PeerInfo): void;
7
+ private os;
8
+ getById(id: number, allowMin: boolean): Promise<IPeersRepository.PeerInfo | null>;
9
+ getByUsername(username: string): Promise<IPeersRepository.PeerInfo | null>;
10
+ getByPhone(phone: string): Promise<IPeersRepository.PeerInfo | null>;
11
+ deleteAll(): Promise<void>;
12
+ }
@@ -0,0 +1,12 @@
1
+ import { IReferenceMessagesRepository } from '@mtcute/core';
2
+ import { IdbStorageDriver } from '../driver.js';
3
+ export declare class IdbRefMsgRepository implements IReferenceMessagesRepository {
4
+ readonly _driver: IdbStorageDriver;
5
+ constructor(_driver: IdbStorageDriver);
6
+ private os;
7
+ store(peerId: number, chatId: number, msgId: number): Promise<void>;
8
+ getByPeer(peerId: number): Promise<[number, number] | null>;
9
+ delete(chatId: number, msgIds: number[]): Promise<void>;
10
+ deleteByPeer(peerId: number): Promise<void>;
11
+ deleteAll(): Promise<void>;
12
+ }
@@ -0,0 +1,2 @@
1
+ export declare function txToPromise(tx: IDBTransaction): Promise<void>;
2
+ export declare function reqToPromise<T>(req: IDBRequest<T>): Promise<T>;
package/index.d.cts ADDED
@@ -0,0 +1,7 @@
1
+ export * from './client.js';
2
+ export * from './crypto.js';
3
+ export * from './idb/index.js';
4
+ export * from './platform.js';
5
+ export * from './websocket.js';
6
+ export * from './worker.js';
7
+ export * from '@mtcute/core';
package/methods.d.cts ADDED
@@ -0,0 +1 @@
1
+ export * from '@mtcute/core/methods.js';
package/package.json CHANGED
@@ -1,19 +1,13 @@
1
1
  {
2
2
  "name": "@mtcute/web",
3
3
  "type": "module",
4
- "version": "0.18.0-rc.5",
4
+ "version": "0.18.0",
5
5
  "description": "Meta-package for the web platform",
6
6
  "license": "MIT",
7
- "homepage": "https://mtcute.dev",
8
- "repository": {
9
- "type": "git",
10
- "url": "git+https://github.com/mtcute/mtcute.git"
11
- },
12
- "scripts": {},
13
7
  "dependencies": {
14
- "@mtcute/core": "0.18.0-rc.5",
15
- "@mtcute/wasm": "0.18.0-rc.5",
16
- "@fuman/net": "0.0.3",
8
+ "@mtcute/core": "^0.18.0",
9
+ "@mtcute/wasm": "^0.18.0",
10
+ "@fuman/net": "0.0.4",
17
11
  "events": "3.2.0"
18
12
  },
19
13
  "exports": {
@@ -58,5 +52,11 @@
58
52
  "WebWorker"
59
53
  ]
60
54
  }
61
- }
55
+ },
56
+ "homepage": "https://mtcute.dev",
57
+ "repository": {
58
+ "type": "git",
59
+ "url": "git+https://github.com/mtcute/mtcute.git"
60
+ },
61
+ "scripts": {}
62
62
  }
package/platform.d.cts ADDED
@@ -0,0 +1,11 @@
1
+ import { ICorePlatform } from '@mtcute/core';
2
+ import { defaultLoggingHandler } from './common-internals-web/logging.js';
3
+ import { beforeExit } from './exit-hook.js';
4
+ export declare class WebPlatform implements ICorePlatform {
5
+ log: typeof defaultLoggingHandler;
6
+ beforeExit: typeof beforeExit;
7
+ getDeviceModel(): string;
8
+ getDefaultLogLevel(): number | null;
9
+ onNetworkChanged(fn: (connected: boolean) => void): () => void;
10
+ isOnline(): boolean;
11
+ }
package/utils.d.cts ADDED
@@ -0,0 +1 @@
1
+ export * from '@mtcute/core/utils.js';
package/wasm.d.cts ADDED
@@ -0,0 +1,2 @@
1
+ export type WasmInitInput = RequestInfo | URL | Response | BufferSource | WebAssembly.Module;
2
+ export declare function loadWasmBinary(input?: WasmInitInput): Promise<WebAssembly.Instance>;
@@ -0,0 +1,18 @@
1
+ import { WebSocketConstructor } from '@fuman/net';
2
+ import { IPacketCodec, ITelegramConnection, TelegramTransport } from '@mtcute/core';
3
+ import { BasicDcOption } from './utils.js';
4
+ export declare class WebSocketTransport implements TelegramTransport {
5
+ private _baseDomain;
6
+ private _subdomains;
7
+ private _WebSocket;
8
+ constructor({ ws, baseDomain, subdomains, }?: {
9
+ /** Custom implementation of WebSocket (e.g. https://npm.im/ws) */
10
+ ws?: WebSocketConstructor;
11
+ /** Base WebSocket domain */
12
+ baseDomain?: string;
13
+ /** Map of sub-domains (key is DC ID, value is string) */
14
+ subdomains?: Record<string, string>;
15
+ });
16
+ connect(dc: BasicDcOption): Promise<ITelegramConnection>;
17
+ packetCodec(): IPacketCodec;
18
+ }
package/worker.d.cts ADDED
@@ -0,0 +1,12 @@
1
+ import { ClientMessageHandler, RespondFn, SendFn, SomeWorker, TelegramWorkerOptions, WorkerCustomMethods, WorkerMessageHandler, TelegramWorker as TelegramWorkerBase, TelegramWorkerPort as TelegramWorkerPortBase } from '@mtcute/core/worker.js';
2
+ export type { TelegramWorkerOptions, WorkerCustomMethods };
3
+ export interface TelegramWorkerPortOptions {
4
+ worker: SomeWorker;
5
+ }
6
+ export declare class TelegramWorker<T extends WorkerCustomMethods> extends TelegramWorkerBase<T> {
7
+ registerWorker(handler: WorkerMessageHandler): RespondFn;
8
+ }
9
+ export declare class TelegramWorkerPort<T extends WorkerCustomMethods> extends TelegramWorkerPortBase<T> {
10
+ constructor(options: TelegramWorkerPortOptions);
11
+ connectToWorker(worker: SomeWorker, handler: ClientMessageHandler): [SendFn, () => void];
12
+ }