mtcute/packages/web
alina sireneva 220d297e11
Some checks failed
Tests / test-deno (push) Successful in 1m38s
Tests / test-node (node22) (push) Successful in 1m48s
Tests / test-node (node20) (push) Successful in 1m53s
Tests / test-bun (push) Successful in 1m52s
Tests / test-node (node18) (push) Successful in 1m58s
Tests / test-web (chromium) (push) Successful in 1m51s
Tests / test-web (firefox) (push) Successful in 1m12s
Docs / build (push) Successful in 6m6s
Tests / lint (push) Successful in 6m45s
Tests / e2e-deno (push) Successful in 50s
Tests / e2e (push) Failing after 55s
fix(web): use a persistent idb version number
2025-01-10 05:34:32 +03:00
..
src fix(web): use a persistent idb version number 2025-01-10 05:34:32 +03:00
build.config.js build: bumped typedoc and moved to fuman-build typedoc 2024-12-28 11:25:22 +03:00
package.json chore(release): v0.19.3 2025-01-06 15:10:21 +00:00
README.md chore: migrate to antfu eslint config (+ reformat) 2024-08-18 07:18:13 +03:00
tsconfig.json build: build with vite (initial) 2024-08-24 22:55:25 +03:00

@mtcute/web

📖 API Reference

Web support package for mtcute. Includes:

  • WASM crypto provider
  • Websocket transport
  • IndexedDB storage
  • TelegramClient implementation using the above

Usage

import { TelegramClient } from '@mtcute/web'

const tg = new TelegramClient({
    apiId: 12345,
    apiHash: 'abcdef',
    storage: 'my-account'
})

const self = await tg.start()
console.log(`✨ logged in as ${self.displayName}`)

Usage with workers

You can also use this package with web workers to offload most of the heavy lifting to a separate thread:

// worker.ts
import { BaseTelegramClient, TelegramWorker } from '@mtcute/web'

// main.ts
import { TelegramClient, TelegramWorkerPort } from '@mtcute/web'

const client = new BaseTelegramClient({
    apiId: 12345,
    apiHash: 'abcdef',
    storage: 'my-account'
})

new TelegramWorker({ client })

const worker = new Worker(new URL('./worker.ts', import.meta.url), { type: 'module' }) // or SharedWorker
const port = new TelegramWorkerPort({ worker })
const tg = new TelegramClient({ client: port })

const self = await tg.start()
console.log(`✨ logged in as ${user.displayName}`)