Commit graph

274 commits

Author SHA1 Message Date
c538c2b059
fix(core): allow storage reset to be async 2023-12-19 23:44:39 +03:00
02a6a0e133
fix(core): proper exit cleanup in json file 2023-12-19 02:24:19 +03:00
4f7fd24dd9
chore(core): expose init params in .params field 2023-12-16 20:00:31 +03:00
dfed3c2761
chore(core)!: disallow passing api id as string 2023-12-16 19:55:29 +03:00
7a0d8ecef2
chore(core): various improvements 2023-12-16 19:52:44 +03:00
712c1e8348
fix(client): added true assertions to methods returning Bool 2023-12-16 19:00:13 +03:00
38358622e7
feat(core): allow passing rpc call options by proxy 2023-12-13 18:30:28 +03:00
314bfa0fec
fix(core): export MemoryStorage 2023-12-13 17:19:10 +03:00
56c2085190
feat(core)!: future salts storage
breaking: `ITelegramStorage` interface changed
2023-12-12 00:23:34 +03:00
987de6571a
feat(core): handle future salts 2023-12-11 06:15:31 +03:00
ce2d1b0a9a
fix(core): getState requests not scheduling properly 2023-12-11 01:03:19 +03:00
d1e4a15f81
feat(core): requests chaining 2023-12-11 00:07:41 +03:00
aaa2875fe1
fix(core): support opting out of -503 resending 2023-12-08 20:33:41 +03:00
b6fac0785c
fix(core): cleanly close connection on inactivity timeout 2023-12-08 06:31:17 +03:00
e42a73fd07
fix(core): session exporting while on default dc 2023-12-04 16:28:25 +03:00
d4555f107e
fix(core): apparently re-export from tl
apparently due to some issue in vite `export *` from cjs module doesnt export shit
2023-12-04 15:40:17 +03:00
7a89e5049e
fix(client): save storage after each api call
idk might rollback later
2023-12-04 15:10:13 +03:00
c42c629475
feat(client): allow implicit storage usage 2023-11-30 23:53:33 +03:00
93ddc6a58c
chore!: do not default to MemoryStorage 2023-11-30 22:57:10 +03:00
8214750055
chore: deprecated json-based storages 2023-11-30 22:40:38 +03:00
1f53923dfc
feat(core): indexeddb storage 2023-11-30 22:20:16 +03:00
a36cdf1d20
test: run tests in browser 2023-11-30 00:20:37 +03:00
b25f9dddfa
feat!: support min updates
breaking: changed `ITelegramStorage` interface, changed tl schema a bit
2023-11-27 06:33:32 +03:00
48411323af
fix(core): fixes for highload bots 2023-11-25 18:15:34 +03:00
0d3c18b885
fix(core): some dumb null checks 2023-11-17 18:09:35 +03:00
484149eae9
test(core): more tests! 2023-11-14 04:37:00 +03:00
13be8482e0
refactor: moved test utils to @mtcute/test 2023-11-13 20:14:32 +03:00
08d3afadd8
test(core): more transport tests 2023-11-13 10:43:56 +03:00
f525c12f83
fix: auth storage fixes
- .reset() no longer resets auth keys by default
- auth keys are stored immediately in sqlite
- update loop fixes for logout
- tests for sqlite storage

likely closes #13 (?)
2023-11-12 07:51:30 +03:00
8204dc86a4
chore: removed dispatcher dep from core (again), improved build script 2023-11-12 01:17:20 +03:00
964f47497c
chore(core): moved random to crypto provider, added tests for functions relying on rng 2023-11-12 00:36:00 +03:00
e31ecbd3d1
test(core): improved test coverage 2023-11-11 18:38:57 +03:00
96a443f8d3
test: moved to vitest from mocha/chai
damn vitest is so good
2023-11-09 00:20:43 +03:00
1abf35e30c
feat: basic test utils 2023-11-08 17:28:45 +03:00
18178b438d
feat(wasm): added sha1/256 to wasm, removed most of async in crypto 2023-11-08 00:53:15 +03:00
70f4e40ef5
chore: embraced native bigints 2023-11-06 02:28:35 +03:00
eec142f0e5
feat: wasm! 🚀 2023-11-04 06:44:18 +03:00
73cd1e7dc9
docs: use @default jsdoc tag 2023-10-29 20:25:06 +03:00
9791f8faae
docs: updated typedoc, added ci, fixed some docs 2023-10-27 14:25:21 +03:00
c061581abb
chore: various surface api improvements & fixes 2023-10-24 11:49:17 +03:00
21d7488788
fix(core): allow empty startgroup parameter 2023-10-23 19:17:04 +03:00
0054491665
feat(core): helpers for deeplinks 2023-10-22 23:42:10 +03:00
15c855df84
fix: more fixes for web 2023-10-21 01:42:27 +03:00
dafe631435
fix: migrated to web streams 2023-10-20 00:41:47 +03:00
Alina Tumanova
f5976a2d74
ESM + end-to-end tests (#11)
* feat: moved tl-runtime to esm and native ArrayBuffers

* feat: migration to esm

* fix(core): web-related fixes

* test: finally, some good fucking e2e

* chore: fixed linters etc

* ci: added e2e to ci

* build(tl): fixed gen-code on node 20

* fix: codegen Uint8Array, not Buffer

never `git reset --hard` kids

* build: only do type-aware linting for `packages/*`

* build: ignore no-unresolved in ci for e2e

* fix: node 16 doesn't have subtle crypto apparently?

* fix(tests): use Uint8Array

for gods sake please can i just merge this already

* ci: don't parallel tasks in ci

because machines are utter garbage and it may just randomly break

* ci: pass secrets to e2e tests

* ci: separate cli command for ci

apparently im retarded

* fix: run codegen in e2e

im actually retarded

* ci: more fixes for e2e

* ci: debugging stuff

* ci: still debugging

* ci: hopefully fix ci???
2023-10-16 19:23:53 +03:00
337418a34c feat: contexts 2023-10-11 08:42:37 +03:00
a03d73503a refactor: initial support for esm
also fixed all circular imports and added checking for them via dpdm
2023-10-11 08:42:37 +03:00
a6726ccb40 build(deps): bumped prettier to 3.0.3 2023-10-11 08:42:37 +03:00
85ca3b4603
feat: abort signals 2023-10-05 18:10:15 +03:00
ec55cb37f7
chore: export Long from core 2023-10-05 01:47:14 +03:00
544e5a68dc
feat: opt-in error reporting 2023-10-03 02:49:53 +03:00
82994408a2
feat: refactor some iterable methods to have non-iterable counterpart 2023-09-29 17:02:36 +03:00
e771e592fd
feat: assertTypeIsNot
closes MTQ-64
2023-09-24 02:40:41 +03:00
befbceaf8a
chore: changed prettier width to 120 2023-09-24 01:32:22 +03:00
976c25141c
refactor: move errors to core 2023-09-22 15:32:28 +03:00
7a6a30ea5c
chore: export core utils from @mtcute/core/utils 2023-09-21 13:18:09 +03:00
5a3b101c9f
chore: avoid using {}, use Maps instead 2023-09-19 01:33:47 +03:00
80d4c59c69
fix: lru map doesn't update links
closes #8
2023-09-18 19:40:09 +03:00
7bf63b2507
fix: dont export everything on first connection 2023-09-18 03:16:29 +03:00
aa863c6a2f
chore: added no-console rule 2023-09-07 22:25:50 +03:00
4b7d7d2e35
refactor: reworked errors codegen 2023-09-06 23:54:51 +03:00
81ce550604
chore: improved eslint config
closes MTQ-54
2023-09-03 02:37:51 +03:00
a679f364fd
fix: fixed upload and download for new networking 2023-08-23 23:49:47 +03:00
4a0d6fbc88
fix: fixed upload and download for new networking 2023-08-23 22:11:42 +03:00
85c43d804d
fix: client and updates fixes 2023-08-12 22:40:37 +03:00
2b1bac053e
feat: support for tmp_sessions 2023-08-12 18:26:46 +03:00
01d476d19a
feat: support for dc switches, session import/export, rpc sending 2023-08-11 23:59:24 +03:00
743058a020
fix: rebase fixes 2023-07-24 00:14:37 +03:00
eb585fc3f1
build: fixes after rebase 2023-07-24 00:14:37 +03:00
teidesu
0b4edbf70e
feat(core): update connection count and pfs usage on the go
holy shit i actually made it 🫣
2023-07-24 00:14:37 +03:00
teidesu
f68d83da06
feat(core): sync keys between connections, exclusive lock for auth
in other words, only one main connection does authorization, others wait
2023-07-24 00:14:37 +03:00
teidesu
bd5130c77b
fix(core): use existing auth_key from storage 2023-07-24 00:14:37 +03:00
teidesu
a23197df91
feat(core): (initial) support pfs 2023-07-24 00:14:37 +03:00
teidesu
c9a86c28f0
feat(core): support %h for non-buffer types in logger 2023-07-24 00:14:37 +03:00
teidesu
27d3058408
fix(core): destroy_session requests not being sent
i am actually retarded
2023-07-24 00:14:36 +03:00
teidesu
6eed69ad02
refactor: extracted auth key management to AuthKey class 2023-07-24 00:14:36 +03:00
teidesu
4f834afc6a
refactor: (initial) extracted connection management to NetworkManager 2023-07-24 00:14:29 +03:00
teidesu
76639d2993
fix(early-timer): rescheduling inside handler getting instantly reset 2023-07-24 00:13:44 +03:00
teidesu
4848c4e62d
refactor: extracted dc config management to separate class 2023-07-24 00:13:42 +03:00
6a2c5d90b7
fix: error on extra fields in TelegramClient#call + related fixes 2023-07-24 00:12:17 +03:00
6221a8716f
fix: handle vectors of primitives in rpc_result 2023-07-20 22:07:07 +03:00
d3338f6614
fix: build fixes + updated to 160 schema 2023-07-20 17:51:24 +03:00
d88bc0ea60
chore: code quality improvements
improved eslint config, fixed linter issues, added husky
2023-06-05 00:30:48 +00:00
c591f96b81
fix: local floodwait handler fix
im actually retarded lmao
2023-06-04 16:04:46 +00:00
teidesu
7d10e65ecc fix: properly handle peers without access hash 2022-10-30 20:25:49 +03:00
teidesu
416b3d9ef9 refactor: exported string session parsing/serialization to a module 2022-10-09 20:49:39 +03:00
teidesu
d0ea4ed5ca refactor: changed stylizing of the name (MTCute -> mtcute) 2022-09-14 16:18:56 +03:00
teidesu
ea299cacca docs: improve documentation 2022-08-29 16:22:57 +03:00
teidesu
390b65f796 build(docs): api reference generation improvements
- added readme in each package
- updated typedoc, fixed related issues
- use @link instead of @see
- moved configs to typedoc.js, improved exclusion of unneeded stuff
- custom plugin for typedoc for cross-package references
- preparing to move documentation to separate repository
2022-08-24 23:37:26 +03:00
teidesu
537b7d0462 feat(core): support overwriting existing session with session strings 2022-07-31 08:01:40 +03:00
teidesu
2a97616d80 fix(codegen): fixed typings codegen, added a test 2022-07-23 05:03:38 +03:00
teidesu
715f4f8a68 fix(core): write buffers to log as trimmed base64 2022-07-10 01:11:24 +03:00
teidesu
e68c9f4bb5 refactor: prettier-ed code, rearranged imports, fixed tests 2022-06-30 16:32:56 +03:00
teidesu
fdcd9e0c5b fix(core): fixed orphan timer when multiple usable events are emitted 2022-06-30 15:56:58 +03:00
teidesu
967c10b25c fix(core): never use ipv6 dc when not using ipv6 2022-06-28 23:13:56 +03:00
teidesu
a864eacfd4 feat(core): added keylen and algo in pbkdf2 (attempt 2, i am retarded) 2022-06-12 19:29:38 +03:00
teidesu
e98b8f8855 feat(core): added keylen and algo in pbkdf2 2022-06-12 19:26:24 +03:00
teidesu
ae07583161 feat(core): added mtproto v1 message key derivation 2022-06-11 18:51:47 +03:00
teidesu
fa8ed6da10 fix(core): ignore duplicate messages 2022-05-18 13:04:40 +03:00
teidesu
96300a795e fix(core): removed unnecessary import 2022-05-11 13:17:39 +03:00
teidesu
a7e866f3eb refactor: assertNever util, use it in most places
haven't used it in some just yet because not everything is implemented (particularly, newer attachment types, typings, admin events, etc.)
2022-05-06 13:50:30 +03:00
teidesu
ffafb3e5db build: improved publish script, fixed imports/exports, added note about private repo 2022-05-06 13:23:29 +03:00
teidesu
2289cc690d build: migrated to pnpm, updated and cleaned up deps 2022-04-28 16:58:09 +03:00
teidesu
9493759572 build: updated to layer 139
didn't add any new layers' features, only bumped layer
2022-04-01 22:17:10 +03:00
teidesu
ec736f8590 some changes
i've been wanting to name a commit like this for my entire life, lol. seriously though, a lot has changed:
 - extracted TL-related stuff to `@mtcute/tl-utils` and `@mtcute/tl-runtime`, rewrote codegen in TS
 - updated to layer 134, moved to int64 identifiers
 - rewritten networking (mtproto), rewritten updates handling
 - *lots* of refactoring

 still a very early version though, there are a lot of improvements to be made, but at least it runs, lol

 also tl-reference will not be updated anytime soon because i want to rewrite it
2021-11-23 00:03:59 +03:00
teidesu
a834fbfa8d refactor(core): moved to PollardRhoBrent for PQ factorization (thanks @mytecor!)
also removed leemon from deps since it's no longer used
2021-09-23 23:11:43 +03:00
teidesu
49eda8f0e3 fix(core): fix bare types and mt_message writing 2021-08-19 23:09:44 +03:00
teidesu
9b5ca0cb2a refactor: improved logging, moved to custom logger instead of debug 2021-08-14 12:57:26 +03:00
teidesu
64aae43572 fix(core): support caching peers from array results 2021-08-14 12:37:22 +03:00
teidesu
4b22ee5b25 rename back to mtcute
idk lol
2021-08-05 20:38:24 +03:00
teidesu
b7751f0a57 fix: various fixes, improved updates handing 2021-08-05 20:14:19 +03:00
teidesu
42d7a2286c fix(core): do not save storage after caching peers 2021-08-05 14:23:18 +03:00
teidesu
a3cf0c526a fix(client): reworked updates, added support for qts 2021-08-04 12:58:57 +03:00
teidesu
a8d3543e64 build: preparing for publish, moved to strict typescript, fixed some stuff 2021-07-30 17:40:50 +03:00
teidesu
1cf9929e3f fix(core): fixed test servers, fixed tests, slight refactor 2021-07-27 15:32:18 +03:00
teidesu
2f1c8548a0 build: renamed to mtqt 2021-07-25 21:03:40 +03:00
teidesu
7f112f51a2 fix(core): updated for newer mtproto schema 2021-07-25 15:44:55 +03:00
teidesu
f3e7de5c8c feat(core): override layer number 2021-07-24 17:00:20 +03:00
teidesu
627fdbed2f refactor(dispatcher): big refactor, moved updates parsing to client, separated raw updates from parsed, moved Conversation to client package 2021-07-17 17:26:31 +03:00
teidesu
8fb099cfeb fix(core): proper browser support
not much really, fixed exports for webpack, fixed binary mode for websocket
2021-07-16 04:31:04 +03:00
teidesu
6d8c7fee78 refactor: less obscure transport names 2021-07-14 21:08:13 +03:00
teidesu
c8dae335e8 feat: vacuum storage to reduce its size 2021-06-20 18:18:06 +03:00
teidesu
b45cc0df69 feat: rate limiting 2021-06-20 17:54:28 +03:00
teidesu
5849ce0e1b fix(core): better handling for additional connections 2021-06-16 18:21:17 +03:00
teidesu
77022e29c9 tests(core): added e2e and fuzzing tests 2021-06-15 03:12:22 +03:00
teidesu
0a45f5e71a fix(core): check for correct padding 2021-06-15 03:11:52 +03:00
teidesu
9928a9156a fix(client): redundant resends 2021-06-15 03:11:11 +03:00
teidesu
bcce752dfd build: preparing for publish x4
at this point i'm too tired to describe what happened
2021-06-08 00:37:13 +03:00
teidesu
280c9f51aa build: preparing to publish (part 2)
fixed imports, package.json files, improved package generation for certain packages, and more (i'm too lazy to describe all the magic that i've done)
2021-06-06 19:23:43 +03:00
teidesu
ae2dbcf03f build: fixed scripts, eslintignore, fixed linter warnings and re-formatted with prettier 2021-06-06 15:20:41 +03:00
teidesu
2cd443d6d1 feat(client): string sessions 2021-06-05 20:25:08 +03:00
teidesu
68ea4080df feat(core): handle AUTH_KEY_UNREGISTERED error 2021-06-05 18:56:43 +03:00
teidesu
a0294b9a64 feat(dispatcher): fsm and scenes 2021-05-27 01:02:31 +03:00
teidesu
60162c88bc fix(client): avoid redundant help.getConfig call 2021-05-24 23:03:29 +03:00
teidesu
2bd94782e9 feat: mtproxy support
also some refactor in core transports
2021-05-24 20:29:18 +03:00
teidesu
a2013acaf6 refactor: moved urlsafe base64 functions to core and exported them 2021-05-23 20:33:10 +03:00
teidesu
1b3f02f5f4 refactor: use Buffer.isBuffer 2021-05-23 13:42:38 +03:00
teidesu
1c4d9c1ab3 feat(core): change transport at runtime 2021-05-23 13:35:03 +03:00
teidesu
a46c6e8894 feat: support http(s) proxies 2021-05-23 01:56:59 +03:00
teidesu
3ecef3bde4 feat(core): exported debounce function, implemented and exported throttle function. 2021-05-22 16:52:35 +03:00
teidesu
c228085bfe feat(client): improved min peers and short updates handling 2021-05-22 14:41:11 +03:00
teidesu
19d675e0fb feat(core): utf string length calculation optimization
only has effect on in-browser use when the Buffer is polyfilled, since with BrowserBuffer we had to write it twice.
2021-05-21 23:24:52 +03:00
teidesu
ee369a1c83 feat(core): int64 write optimization
this optimization gives about 10x performance boost on systems that support BigInt, and about 2x on those that don't
2021-05-21 22:15:25 +03:00
teidesu
c3fce178b6 feat: only update changed updates state (i.e. dont save pts if it hasnt changed) 2021-05-21 00:24:54 +03:00
teidesu
2660120e8f feat(core): support seq in updates 2021-05-19 21:21:12 +03:00
teidesu
910361ccab feat(core): implemented and exported lru map 2021-05-19 20:30:23 +03:00
teidesu
82fb3d7e44 refactor: moved async lock to core and exported it 2021-05-16 23:05:53 +03:00
teidesu
e6e28399b0 refactor: prefer switches over ifs when possible 2021-05-16 14:32:36 +03:00
teidesu
b4f731d831 feat(core): support rpc timeouts (for real) 2021-05-16 12:50:09 +03:00
teidesu
4852fe0301 feat(core): support rpc timeouts 2021-05-16 02:52:13 +03:00