@mtcute/core 0.1.0 → 0.1.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.
- package/cjs/base-client.js +4 -1
- package/cjs/base-client.js.map +1 -1
- package/cjs/network/auth-key.d.ts +3 -3
- package/cjs/network/auth-key.js +12 -12
- package/cjs/network/auth-key.js.map +1 -1
- package/cjs/network/auth-key.test.d.ts +1 -0
- package/cjs/network/auth-key.test.js +111 -0
- package/cjs/network/auth-key.test.js.map +1 -0
- package/cjs/network/authorization.js +62 -57
- package/cjs/network/authorization.js.map +1 -1
- package/cjs/network/config-manager.js +2 -1
- package/cjs/network/config-manager.js.map +1 -1
- package/cjs/network/config-manager.test.d.ts +1 -0
- package/cjs/network/config-manager.test.js +170 -0
- package/cjs/network/config-manager.test.js.map +1 -0
- package/cjs/network/mtproto-session.d.ts +2 -2
- package/cjs/network/mtproto-session.js +2 -2
- package/cjs/network/mtproto-session.js.map +1 -1
- package/cjs/network/multi-session-connection.d.ts +1 -1
- package/cjs/network/multi-session-connection.js +2 -2
- package/cjs/network/multi-session-connection.js.map +1 -1
- package/cjs/network/network-manager.d.ts +1 -0
- package/cjs/network/network-manager.js +21 -27
- package/cjs/network/network-manager.js.map +1 -1
- package/cjs/network/persistent-connection.test.d.ts +1 -0
- package/cjs/network/persistent-connection.test.js +157 -0
- package/cjs/network/persistent-connection.test.js.map +1 -0
- package/cjs/network/session-connection.d.ts +2 -1
- package/cjs/network/session-connection.js +51 -37
- package/cjs/network/session-connection.js.map +1 -1
- package/cjs/network/transports/intermediate.d.ts +3 -0
- package/cjs/network/transports/intermediate.js +5 -3
- package/cjs/network/transports/intermediate.js.map +1 -1
- package/cjs/network/transports/intermediate.test.d.ts +1 -0
- package/cjs/network/transports/intermediate.test.js +86 -0
- package/cjs/network/transports/intermediate.test.js.map +1 -0
- package/cjs/network/transports/obfuscated.js +15 -19
- package/cjs/network/transports/obfuscated.js.map +1 -1
- package/cjs/network/transports/obfuscated.test.d.ts +1 -0
- package/cjs/network/transports/obfuscated.test.js +131 -0
- package/cjs/network/transports/obfuscated.test.js.map +1 -0
- package/cjs/network/transports/tcp.js +1 -1
- package/cjs/network/transports/tcp.js.map +1 -1
- package/cjs/network/transports/tcp.test.d.ts +1 -0
- package/cjs/network/transports/tcp.test.js +97 -0
- package/cjs/network/transports/tcp.test.js.map +1 -0
- package/cjs/network/transports/websocket.test.d.ts +1 -0
- package/cjs/network/transports/websocket.test.js +91 -0
- package/cjs/network/transports/websocket.test.js.map +1 -0
- package/cjs/storage/abstract.d.ts +23 -2
- package/cjs/storage/abstract.js.map +1 -1
- package/cjs/storage/json.js +8 -9
- package/cjs/storage/json.js.map +1 -1
- package/cjs/storage/json.test.d.ts +1 -0
- package/cjs/storage/json.test.js +37 -0
- package/cjs/storage/json.test.js.map +1 -0
- package/cjs/storage/localstorage.js +5 -2
- package/cjs/storage/localstorage.js.map +1 -1
- package/cjs/storage/localstorage.test.d.ts +1 -0
- package/cjs/storage/localstorage.test.js +23 -0
- package/cjs/storage/localstorage.test.js.map +1 -0
- package/cjs/storage/memory.d.ts +7 -8
- package/cjs/storage/memory.js +7 -7
- package/cjs/storage/memory.js.map +1 -1
- package/cjs/storage/memory.test.d.ts +1 -0
- package/cjs/storage/memory.test.js +47 -0
- package/cjs/storage/memory.test.js.map +1 -0
- package/cjs/utils/async-lock.test.d.ts +1 -0
- package/cjs/utils/async-lock.test.js +25 -0
- package/cjs/utils/async-lock.test.js.map +1 -0
- package/cjs/utils/bigint-utils.d.ts +18 -11
- package/cjs/utils/bigint-utils.js +148 -47
- package/cjs/utils/bigint-utils.js.map +1 -1
- package/cjs/utils/bigint-utils.test.d.ts +1 -0
- package/cjs/utils/bigint-utils.test.js +150 -0
- package/cjs/utils/bigint-utils.test.js.map +1 -0
- package/cjs/utils/buffer-utils.d.ts +7 -1
- package/cjs/utils/buffer-utils.js +16 -3
- package/cjs/utils/buffer-utils.js.map +1 -1
- package/cjs/utils/buffer-utils.test.d.ts +1 -0
- package/cjs/utils/buffer-utils.test.js +69 -0
- package/cjs/utils/buffer-utils.test.js.map +1 -0
- package/cjs/utils/condition-variable.test.d.ts +1 -0
- package/cjs/utils/condition-variable.test.js +27 -0
- package/cjs/utils/condition-variable.test.js.map +1 -0
- package/cjs/utils/controllable-promise.test.d.ts +1 -0
- package/cjs/utils/controllable-promise.test.js +17 -0
- package/cjs/utils/controllable-promise.test.js.map +1 -0
- package/cjs/utils/crypto/abstract.d.ts +16 -9
- package/cjs/utils/crypto/abstract.js +6 -9
- package/cjs/utils/crypto/abstract.js.map +1 -1
- package/cjs/utils/crypto/factorization.d.ts +2 -1
- package/cjs/utils/crypto/factorization.js +28 -36
- package/cjs/utils/crypto/factorization.js.map +1 -1
- package/cjs/utils/crypto/index.d.ts +4 -0
- package/cjs/utils/crypto/index.js +4 -0
- package/cjs/utils/crypto/index.js.map +1 -1
- package/cjs/utils/crypto/keys.d.ts +2 -2
- package/cjs/utils/crypto/keys.js +4 -4
- package/cjs/utils/crypto/keys.js.map +1 -1
- package/cjs/utils/crypto/keys.test.d.ts +1 -0
- package/cjs/utils/crypto/keys.test.js +40 -0
- package/cjs/utils/crypto/keys.test.js.map +1 -0
- package/cjs/utils/crypto/miller-rabin.d.ts +2 -2
- package/cjs/utils/crypto/miller-rabin.js +20 -22
- package/cjs/utils/crypto/miller-rabin.js.map +1 -1
- package/cjs/utils/crypto/miller-rabin.test.d.ts +1 -0
- package/cjs/utils/crypto/miller-rabin.test.js +60 -0
- package/cjs/utils/crypto/miller-rabin.test.js.map +1 -0
- package/cjs/utils/crypto/mtproto.d.ts +3 -3
- package/cjs/utils/crypto/mtproto.js +12 -12
- package/cjs/utils/crypto/mtproto.js.map +1 -1
- package/cjs/utils/crypto/mtproto.test.d.ts +1 -0
- package/cjs/utils/crypto/mtproto.test.js +47 -0
- package/cjs/utils/crypto/mtproto.test.js.map +1 -0
- package/cjs/utils/crypto/node.d.ts +21 -0
- package/cjs/utils/crypto/node.js +74 -0
- package/cjs/utils/crypto/node.js.map +1 -0
- package/cjs/utils/crypto/node.test.d.ts +1 -0
- package/cjs/utils/crypto/node.test.js +13 -0
- package/cjs/utils/crypto/node.test.js.map +1 -0
- package/cjs/utils/crypto/password.js +22 -33
- package/cjs/utils/crypto/password.js.map +1 -1
- package/cjs/utils/crypto/password.test.d.ts +1 -0
- package/cjs/utils/crypto/password.test.js +95 -0
- package/cjs/utils/crypto/password.test.js.map +1 -0
- package/cjs/utils/crypto/utils.test.d.ts +1 -0
- package/cjs/utils/crypto/utils.test.js +49 -0
- package/cjs/utils/crypto/utils.test.js.map +1 -0
- package/cjs/utils/crypto/wasm.d.ts +22 -0
- package/cjs/utils/crypto/wasm.js +41 -0
- package/cjs/utils/crypto/wasm.js.map +1 -0
- package/cjs/utils/crypto/web.d.ts +11 -0
- package/cjs/utils/crypto/web.js +40 -0
- package/cjs/utils/crypto/web.js.map +1 -0
- package/cjs/utils/crypto/web.test.d.ts +1 -0
- package/cjs/utils/crypto/web.test.js +17 -0
- package/cjs/utils/crypto/web.test.js.map +1 -0
- package/cjs/utils/deque.d.ts +1 -1
- package/cjs/utils/deque.js +9 -3
- package/cjs/utils/deque.js.map +1 -1
- package/cjs/utils/deque.test.d.ts +1 -0
- package/cjs/utils/deque.test.js +128 -0
- package/cjs/utils/deque.test.js.map +1 -0
- package/cjs/utils/function-utils.d.ts +4 -1
- package/cjs/utils/function-utils.js +8 -1
- package/cjs/utils/function-utils.js.map +1 -1
- package/cjs/utils/function-utils.test.d.ts +1 -0
- package/cjs/utils/function-utils.test.js +23 -0
- package/cjs/utils/function-utils.test.js.map +1 -0
- package/cjs/utils/index.d.ts +0 -1
- package/cjs/utils/index.js +0 -1
- package/cjs/utils/index.js.map +1 -1
- package/cjs/utils/linked-list.test.d.ts +1 -0
- package/cjs/utils/linked-list.test.js +36 -0
- package/cjs/utils/linked-list.test.js.map +1 -0
- package/cjs/utils/links/bots.test.d.ts +1 -0
- package/cjs/utils/links/bots.test.js +152 -0
- package/cjs/utils/links/bots.test.js.map +1 -0
- package/cjs/utils/links/chat.test.d.ts +1 -0
- package/cjs/utils/links/chat.test.js +84 -0
- package/cjs/utils/links/chat.test.js.map +1 -0
- package/cjs/utils/links/misc.test.d.ts +1 -0
- package/cjs/utils/links/misc.test.js +153 -0
- package/cjs/utils/links/misc.test.js.map +1 -0
- package/cjs/utils/links/proxy.test.d.ts +1 -0
- package/cjs/utils/links/proxy.test.js +74 -0
- package/cjs/utils/links/proxy.test.js.map +1 -0
- package/cjs/utils/links/user.test.d.ts +1 -0
- package/cjs/utils/links/user.test.js +63 -0
- package/cjs/utils/links/user.test.js.map +1 -0
- package/cjs/utils/logger.d.ts +0 -1
- package/cjs/utils/logger.js +3 -4
- package/cjs/utils/logger.js.map +1 -1
- package/cjs/utils/logger.test.d.ts +1 -0
- package/cjs/utils/logger.test.js +125 -0
- package/cjs/utils/logger.test.js.map +1 -0
- package/cjs/utils/long-utils.test.d.ts +1 -0
- package/cjs/utils/long-utils.test.js +158 -0
- package/cjs/utils/long-utils.test.js.map +1 -0
- package/cjs/utils/lru-map.d.ts +1 -0
- package/cjs/utils/lru-map.js +6 -0
- package/cjs/utils/lru-map.js.map +1 -1
- package/cjs/utils/lru-map.test.d.ts +1 -0
- package/cjs/utils/lru-map.test.js +96 -0
- package/cjs/utils/lru-map.test.js.map +1 -0
- package/cjs/utils/lru-set.test.d.ts +1 -0
- package/cjs/utils/lru-set.test.js +77 -0
- package/cjs/utils/lru-set.test.js.map +1 -0
- package/cjs/utils/peer-utils.js +5 -1
- package/cjs/utils/peer-utils.js.map +1 -1
- package/cjs/utils/peer-utils.test.d.ts +1 -0
- package/cjs/utils/peer-utils.test.js +122 -0
- package/cjs/utils/peer-utils.test.js.map +1 -0
- package/cjs/utils/platform/crypto.js +2 -2
- package/cjs/utils/platform/crypto.js.map +1 -1
- package/cjs/utils/platform/crypto.web.js +2 -2
- package/cjs/utils/platform/crypto.web.js.map +1 -1
- package/cjs/utils/sorted-array.test.d.ts +1 -0
- package/cjs/utils/sorted-array.test.js +66 -0
- package/cjs/utils/sorted-array.test.js.map +1 -0
- package/cjs/utils/string-session.js +4 -2
- package/cjs/utils/string-session.js.map +1 -1
- package/cjs/utils/string-session.test.d.ts +1 -0
- package/cjs/utils/string-session.test.js +106 -0
- package/cjs/utils/string-session.test.js.map +1 -0
- package/cjs/utils/tl-json.test.d.ts +1 -0
- package/cjs/utils/tl-json.test.js +83 -0
- package/cjs/utils/tl-json.test.js.map +1 -0
- package/cjs/utils/type-assertions.test.d.ts +1 -0
- package/cjs/utils/type-assertions.test.js +67 -0
- package/cjs/utils/type-assertions.test.js.map +1 -0
- package/esm/base-client.js +4 -1
- package/esm/base-client.js.map +1 -1
- package/esm/network/auth-key.d.ts +3 -3
- package/esm/network/auth-key.js +13 -13
- package/esm/network/auth-key.js.map +1 -1
- package/esm/network/auth-key.test.d.ts +1 -0
- package/esm/network/auth-key.test.js +106 -0
- package/esm/network/auth-key.test.js.map +1 -0
- package/esm/network/authorization.js +64 -59
- package/esm/network/authorization.js.map +1 -1
- package/esm/network/config-manager.js +2 -1
- package/esm/network/config-manager.js.map +1 -1
- package/esm/network/config-manager.test.d.ts +1 -0
- package/esm/network/config-manager.test.js +168 -0
- package/esm/network/config-manager.test.js.map +1 -0
- package/esm/network/mtproto-session.d.ts +2 -2
- package/esm/network/mtproto-session.js +2 -2
- package/esm/network/mtproto-session.js.map +1 -1
- package/esm/network/multi-session-connection.d.ts +1 -1
- package/esm/network/multi-session-connection.js +2 -2
- package/esm/network/multi-session-connection.js.map +1 -1
- package/esm/network/network-manager.d.ts +1 -0
- package/esm/network/network-manager.js +21 -27
- package/esm/network/network-manager.js.map +1 -1
- package/esm/network/persistent-connection.test.d.ts +1 -0
- package/esm/network/persistent-connection.test.js +155 -0
- package/esm/network/persistent-connection.test.js.map +1 -0
- package/esm/network/session-connection.d.ts +2 -1
- package/esm/network/session-connection.js +53 -39
- package/esm/network/session-connection.js.map +1 -1
- package/esm/network/transports/intermediate.d.ts +3 -0
- package/esm/network/transports/intermediate.js +6 -4
- package/esm/network/transports/intermediate.js.map +1 -1
- package/esm/network/transports/intermediate.test.d.ts +1 -0
- package/esm/network/transports/intermediate.test.js +84 -0
- package/esm/network/transports/intermediate.test.js.map +1 -0
- package/esm/network/transports/obfuscated.js +16 -20
- package/esm/network/transports/obfuscated.js.map +1 -1
- package/esm/network/transports/obfuscated.test.d.ts +1 -0
- package/esm/network/transports/obfuscated.test.js +129 -0
- package/esm/network/transports/obfuscated.test.js.map +1 -0
- package/esm/network/transports/tcp.js +1 -1
- package/esm/network/transports/tcp.js.map +1 -1
- package/esm/network/transports/tcp.test.d.ts +1 -0
- package/esm/network/transports/tcp.test.js +95 -0
- package/esm/network/transports/tcp.test.js.map +1 -0
- package/esm/network/transports/websocket.test.d.ts +1 -0
- package/esm/network/transports/websocket.test.js +89 -0
- package/esm/network/transports/websocket.test.js.map +1 -0
- package/esm/storage/abstract.d.ts +23 -2
- package/esm/storage/abstract.js.map +1 -1
- package/esm/storage/json.js +8 -9
- package/esm/storage/json.js.map +1 -1
- package/esm/storage/json.test.d.ts +1 -0
- package/esm/storage/json.test.js +35 -0
- package/esm/storage/json.test.js.map +1 -0
- package/esm/storage/localstorage.js +5 -2
- package/esm/storage/localstorage.js.map +1 -1
- package/esm/storage/localstorage.test.d.ts +1 -0
- package/esm/storage/localstorage.test.js +21 -0
- package/esm/storage/localstorage.test.js.map +1 -0
- package/esm/storage/memory.d.ts +7 -8
- package/esm/storage/memory.js +7 -7
- package/esm/storage/memory.js.map +1 -1
- package/esm/storage/memory.test.d.ts +1 -0
- package/esm/storage/memory.test.js +45 -0
- package/esm/storage/memory.test.js.map +1 -0
- package/esm/utils/async-lock.test.d.ts +1 -0
- package/esm/utils/async-lock.test.js +23 -0
- package/esm/utils/async-lock.test.js.map +1 -0
- package/esm/utils/bigint-utils.d.ts +18 -11
- package/esm/utils/bigint-utils.js +142 -44
- package/esm/utils/bigint-utils.js.map +1 -1
- package/esm/utils/bigint-utils.test.d.ts +1 -0
- package/esm/utils/bigint-utils.test.js +148 -0
- package/esm/utils/bigint-utils.test.js.map +1 -0
- package/esm/utils/buffer-utils.d.ts +7 -1
- package/esm/utils/buffer-utils.js +14 -1
- package/esm/utils/buffer-utils.js.map +1 -1
- package/esm/utils/buffer-utils.test.d.ts +1 -0
- package/esm/utils/buffer-utils.test.js +67 -0
- package/esm/utils/buffer-utils.test.js.map +1 -0
- package/esm/utils/condition-variable.test.d.ts +1 -0
- package/esm/utils/condition-variable.test.js +25 -0
- package/esm/utils/condition-variable.test.js.map +1 -0
- package/esm/utils/controllable-promise.test.d.ts +1 -0
- package/esm/utils/controllable-promise.test.js +15 -0
- package/esm/utils/controllable-promise.test.js.map +1 -0
- package/esm/utils/crypto/abstract.d.ts +16 -9
- package/esm/utils/crypto/abstract.js +6 -9
- package/esm/utils/crypto/abstract.js.map +1 -1
- package/esm/utils/crypto/factorization.d.ts +2 -1
- package/esm/utils/crypto/factorization.js +29 -34
- package/esm/utils/crypto/factorization.js.map +1 -1
- package/esm/utils/crypto/index.d.ts +4 -0
- package/esm/utils/crypto/index.js +4 -0
- package/esm/utils/crypto/index.js.map +1 -1
- package/esm/utils/crypto/keys.d.ts +2 -2
- package/esm/utils/crypto/keys.js +4 -4
- package/esm/utils/crypto/keys.js.map +1 -1
- package/esm/utils/crypto/keys.test.d.ts +1 -0
- package/esm/utils/crypto/keys.test.js +38 -0
- package/esm/utils/crypto/keys.test.js.map +1 -0
- package/esm/utils/crypto/miller-rabin.d.ts +2 -2
- package/esm/utils/crypto/miller-rabin.js +21 -20
- package/esm/utils/crypto/miller-rabin.js.map +1 -1
- package/esm/utils/crypto/miller-rabin.test.d.ts +1 -0
- package/esm/utils/crypto/miller-rabin.test.js +58 -0
- package/esm/utils/crypto/miller-rabin.test.js.map +1 -0
- package/esm/utils/crypto/mtproto.d.ts +3 -3
- package/esm/utils/crypto/mtproto.js +12 -12
- package/esm/utils/crypto/mtproto.js.map +1 -1
- package/esm/utils/crypto/mtproto.test.d.ts +1 -0
- package/esm/utils/crypto/mtproto.test.js +45 -0
- package/esm/utils/crypto/mtproto.test.js.map +1 -0
- package/esm/utils/crypto/node.d.ts +21 -0
- package/esm/utils/crypto/node.js +69 -0
- package/esm/utils/crypto/node.js.map +1 -0
- package/esm/utils/crypto/node.test.d.ts +1 -0
- package/esm/utils/crypto/node.test.js +11 -0
- package/esm/utils/crypto/node.test.js.map +1 -0
- package/esm/utils/crypto/password.js +24 -32
- package/esm/utils/crypto/password.js.map +1 -1
- package/esm/utils/crypto/password.test.d.ts +1 -0
- package/esm/utils/crypto/password.test.js +90 -0
- package/esm/utils/crypto/password.test.js.map +1 -0
- package/esm/utils/crypto/utils.test.d.ts +1 -0
- package/esm/utils/crypto/utils.test.js +47 -0
- package/esm/utils/crypto/utils.test.js.map +1 -0
- package/esm/utils/crypto/wasm.d.ts +22 -0
- package/esm/utils/crypto/wasm.js +37 -0
- package/esm/utils/crypto/wasm.js.map +1 -0
- package/esm/utils/crypto/web.d.ts +11 -0
- package/esm/utils/crypto/web.js +36 -0
- package/esm/utils/crypto/web.js.map +1 -0
- package/esm/utils/crypto/web.test.d.ts +1 -0
- package/esm/utils/crypto/web.test.js +15 -0
- package/esm/utils/crypto/web.test.js.map +1 -0
- package/esm/utils/deque.d.ts +1 -1
- package/esm/utils/deque.js +9 -3
- package/esm/utils/deque.js.map +1 -1
- package/esm/utils/deque.test.d.ts +1 -0
- package/esm/utils/deque.test.js +126 -0
- package/esm/utils/deque.test.js.map +1 -0
- package/esm/utils/function-utils.d.ts +4 -1
- package/esm/utils/function-utils.js +8 -1
- package/esm/utils/function-utils.js.map +1 -1
- package/esm/utils/function-utils.test.d.ts +1 -0
- package/esm/utils/function-utils.test.js +21 -0
- package/esm/utils/function-utils.test.js.map +1 -0
- package/esm/utils/index.d.ts +0 -1
- package/esm/utils/index.js +0 -1
- package/esm/utils/index.js.map +1 -1
- package/esm/utils/linked-list.test.d.ts +1 -0
- package/esm/utils/linked-list.test.js +34 -0
- package/esm/utils/linked-list.test.js.map +1 -0
- package/esm/utils/links/bots.test.d.ts +1 -0
- package/esm/utils/links/bots.test.js +150 -0
- package/esm/utils/links/bots.test.js.map +1 -0
- package/esm/utils/links/chat.test.d.ts +1 -0
- package/esm/utils/links/chat.test.js +82 -0
- package/esm/utils/links/chat.test.js.map +1 -0
- package/esm/utils/links/misc.test.d.ts +1 -0
- package/esm/utils/links/misc.test.js +151 -0
- package/esm/utils/links/misc.test.js.map +1 -0
- package/esm/utils/links/proxy.test.d.ts +1 -0
- package/esm/utils/links/proxy.test.js +72 -0
- package/esm/utils/links/proxy.test.js.map +1 -0
- package/esm/utils/links/user.test.d.ts +1 -0
- package/esm/utils/links/user.test.js +61 -0
- package/esm/utils/links/user.test.js.map +1 -0
- package/esm/utils/logger.d.ts +0 -1
- package/esm/utils/logger.js +3 -4
- package/esm/utils/logger.js.map +1 -1
- package/esm/utils/logger.test.d.ts +1 -0
- package/esm/utils/logger.test.js +120 -0
- package/esm/utils/logger.test.js.map +1 -0
- package/esm/utils/long-utils.test.d.ts +1 -0
- package/esm/utils/long-utils.test.js +153 -0
- package/esm/utils/long-utils.test.js.map +1 -0
- package/esm/utils/lru-map.d.ts +1 -0
- package/esm/utils/lru-map.js +6 -0
- package/esm/utils/lru-map.js.map +1 -1
- package/esm/utils/lru-map.test.d.ts +1 -0
- package/esm/utils/lru-map.test.js +94 -0
- package/esm/utils/lru-map.test.js.map +1 -0
- package/esm/utils/lru-set.test.d.ts +1 -0
- package/esm/utils/lru-set.test.js +72 -0
- package/esm/utils/lru-set.test.js.map +1 -0
- package/esm/utils/peer-utils.js +5 -1
- package/esm/utils/peer-utils.js.map +1 -1
- package/esm/utils/peer-utils.test.d.ts +1 -0
- package/esm/utils/peer-utils.test.js +117 -0
- package/esm/utils/peer-utils.test.js.map +1 -0
- package/esm/utils/platform/crypto.js +1 -1
- package/esm/utils/platform/crypto.js.map +1 -1
- package/esm/utils/platform/crypto.web.js +2 -2
- package/esm/utils/platform/crypto.web.js.map +1 -1
- package/esm/utils/sorted-array.test.d.ts +1 -0
- package/esm/utils/sorted-array.test.js +64 -0
- package/esm/utils/sorted-array.test.js.map +1 -0
- package/esm/utils/string-session.js +4 -2
- package/esm/utils/string-session.js.map +1 -1
- package/esm/utils/string-session.test.d.ts +1 -0
- package/esm/utils/string-session.test.js +104 -0
- package/esm/utils/string-session.test.js.map +1 -0
- package/esm/utils/tl-json.test.d.ts +1 -0
- package/esm/utils/tl-json.test.js +81 -0
- package/esm/utils/tl-json.test.js.map +1 -0
- package/esm/utils/type-assertions.test.d.ts +1 -0
- package/esm/utils/type-assertions.test.js +65 -0
- package/esm/utils/type-assertions.test.js.map +1 -0
- package/package.json +4 -5
- package/cjs/utils/crypto/common.d.ts +0 -12
- package/cjs/utils/crypto/common.js +0 -54
- package/cjs/utils/crypto/common.js.map +0 -1
- package/cjs/utils/crypto/node-crypto.d.ts +0 -10
- package/cjs/utils/crypto/node-crypto.js +0 -46
- package/cjs/utils/crypto/node-crypto.js.map +0 -1
- package/cjs/utils/crypto/subtle.d.ts +0 -12
- package/cjs/utils/crypto/subtle.js +0 -86
- package/cjs/utils/crypto/subtle.js.map +0 -1
- package/cjs/utils/flood-control.d.ts +0 -14
- package/cjs/utils/flood-control.js +0 -65
- package/cjs/utils/flood-control.js.map +0 -1
- package/cjs/utils/platform/random.d.ts +0 -1
- package/cjs/utils/platform/random.js +0 -7
- package/cjs/utils/platform/random.js.map +0 -1
- package/cjs/utils/platform/random.web.d.ts +0 -1
- package/cjs/utils/platform/random.web.js +0 -10
- package/cjs/utils/platform/random.web.js.map +0 -1
- package/esm/utils/crypto/common.d.ts +0 -12
- package/esm/utils/crypto/common.js +0 -50
- package/esm/utils/crypto/common.js.map +0 -1
- package/esm/utils/crypto/node-crypto.d.ts +0 -10
- package/esm/utils/crypto/node-crypto.js +0 -42
- package/esm/utils/crypto/node-crypto.js.map +0 -1
- package/esm/utils/crypto/subtle.d.ts +0 -12
- package/esm/utils/crypto/subtle.js +0 -59
- package/esm/utils/crypto/subtle.js.map +0 -1
- package/esm/utils/flood-control.d.ts +0 -14
- package/esm/utils/flood-control.js +0 -61
- package/esm/utils/flood-control.js.map +0 -1
- package/esm/utils/platform/random.d.ts +0 -1
- package/esm/utils/platform/random.js +0 -4
- package/esm/utils/platform/random.js.map +0 -1
- package/esm/utils/platform/random.web.d.ts +0 -1
- package/esm/utils/platform/random.web.js +0 -6
- package/esm/utils/platform/random.web.js.map +0 -1
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
// will be reworked in MTQ-32
|
|
3
3
|
import Long from 'long';
|
|
4
4
|
import { tl } from '@mtcute/tl';
|
|
5
|
-
import {
|
|
5
|
+
import { TlBinaryReader, TlBinaryWriter, TlSerializationCounter } from '@mtcute/tl-runtime';
|
|
6
6
|
import { MtArgumentError, MtcuteError, MtTimeoutError } from '../types/index.js';
|
|
7
7
|
import { createAesIgeForMessageOld } from '../utils/crypto/mtproto.js';
|
|
8
|
-
import { concatBuffers, createControllablePromise, EarlyTimer, longFromBuffer,
|
|
8
|
+
import { concatBuffers, createControllablePromise, EarlyTimer, longFromBuffer, randomLong, removeFromLongArray, } from '../utils/index.js';
|
|
9
9
|
import { reportUnknownError } from '../utils/platform/error-reporting.js';
|
|
10
10
|
import { doAuthorization } from './authorization.js';
|
|
11
11
|
import { PersistentConnection } from './persistent-connection.js';
|
|
@@ -13,6 +13,12 @@ import { TransportError } from './transports/abstract.js';
|
|
|
13
13
|
const TEMP_AUTH_KEY_EXPIRY = 86400;
|
|
14
14
|
// destroy_auth_key#d1435160 = DestroyAuthKeyRes;
|
|
15
15
|
// const DESTROY_AUTH_KEY = Buffer.from('605134d1', 'hex')
|
|
16
|
+
// gzip_packed#3072cfa1 packed_data:string = Object;
|
|
17
|
+
const GZIP_PACKED_ID = 0x3072cfa1;
|
|
18
|
+
// msg_container#73f1f8dc messages:vector<%Message> = MessageContainer;
|
|
19
|
+
const MSG_CONTAINER_ID = 0x73f1f8dc;
|
|
20
|
+
// rpc_result#f35c6d01 req_msg_id:long result:Object = RpcResult;
|
|
21
|
+
const RPC_RESULT_ID = 0xf35c6d01;
|
|
16
22
|
function makeNiceStack(error, stack, method) {
|
|
17
23
|
error.stack = `RpcError (${error.code} ${error.text}): ${error.message}\n at ${method}\n${stack
|
|
18
24
|
.split('\n')
|
|
@@ -37,6 +43,7 @@ export class SessionConnection extends PersistentConnection {
|
|
|
37
43
|
this._flushTimer.onTimeout(this._flush.bind(this));
|
|
38
44
|
this._readerMap = params.readerMap;
|
|
39
45
|
this._writerMap = params.writerMap;
|
|
46
|
+
this._crypto = params.crypto;
|
|
40
47
|
this._handleRawMessage = this._handleRawMessage.bind(this);
|
|
41
48
|
}
|
|
42
49
|
getAuthKey(temp = false) {
|
|
@@ -172,9 +179,9 @@ export class SessionConnection extends PersistentConnection {
|
|
|
172
179
|
}
|
|
173
180
|
this._session.authorizationPending = true;
|
|
174
181
|
this.emit('auth-begin');
|
|
175
|
-
doAuthorization(this, this.
|
|
176
|
-
.then(
|
|
177
|
-
|
|
182
|
+
doAuthorization(this, this._crypto)
|
|
183
|
+
.then(([authKey, serverSalt, timeOffset]) => {
|
|
184
|
+
this._session._authKey.setup(authKey);
|
|
178
185
|
this._session.serverSalt = serverSalt;
|
|
179
186
|
this._session._timeOffset = timeOffset;
|
|
180
187
|
this._session.authorizationPending = false;
|
|
@@ -212,14 +219,14 @@ export class SessionConnection extends PersistentConnection {
|
|
|
212
219
|
else {
|
|
213
220
|
this._isPfsBindingPending = true;
|
|
214
221
|
}
|
|
215
|
-
doAuthorization(this, this.
|
|
222
|
+
doAuthorization(this, this._crypto, TEMP_AUTH_KEY_EXPIRY)
|
|
216
223
|
.then(async ([tempAuthKey, tempServerSalt]) => {
|
|
217
224
|
if (!this._usePfs) {
|
|
218
225
|
this.log.info('pfs has been disabled while generating temp key');
|
|
219
226
|
return;
|
|
220
227
|
}
|
|
221
228
|
const tempKey = this._session._authKeyTempSecondary;
|
|
222
|
-
|
|
229
|
+
tempKey.setup(tempAuthKey);
|
|
223
230
|
const msgId = this._session.getMessageId();
|
|
224
231
|
this.log.debug('binding temp_auth_key (%h) to perm_auth_key (%h), msg_id = %l...', tempKey.id, this._session._authKey.id, msgId);
|
|
225
232
|
// we now need to bind the key
|
|
@@ -234,18 +241,18 @@ export class SessionConnection extends PersistentConnection {
|
|
|
234
241
|
// encrypt using mtproto v1 (fucking kill me plz)
|
|
235
242
|
const writer = TlBinaryWriter.alloc(this.params.writerMap, 80);
|
|
236
243
|
// = 40 (inner length) + 32 (mtproto header) + 8 (pad 72 so mod 16 = 0)
|
|
237
|
-
writer.raw(randomBytes(16));
|
|
244
|
+
writer.raw(this._crypto.randomBytes(16));
|
|
238
245
|
writer.long(msgId);
|
|
239
246
|
writer.int(0); // seq_no
|
|
240
247
|
writer.int(40); // msg_len
|
|
241
248
|
writer.object(inner);
|
|
242
249
|
const msgWithoutPadding = writer.result();
|
|
243
|
-
writer.raw(randomBytes(8));
|
|
250
|
+
writer.raw(this._crypto.randomBytes(8));
|
|
244
251
|
const msgWithPadding = writer.result();
|
|
245
|
-
const hash =
|
|
252
|
+
const hash = this._crypto.sha1(msgWithoutPadding);
|
|
246
253
|
const msgKey = hash.subarray(4, 20);
|
|
247
|
-
const ige =
|
|
248
|
-
const encryptedData =
|
|
254
|
+
const ige = createAesIgeForMessageOld(this._crypto, this._session._authKey.key, msgKey, true);
|
|
255
|
+
const encryptedData = ige.encrypt(msgWithPadding);
|
|
249
256
|
const encryptedMessage = concatBuffers([this._session._authKey.id, msgKey, encryptedData]);
|
|
250
257
|
const promise = createControllablePromise();
|
|
251
258
|
// encrypt the message using temp key and same msg id
|
|
@@ -277,7 +284,7 @@ export class SessionConnection extends PersistentConnection {
|
|
|
277
284
|
reqWriter.uint(reqSize);
|
|
278
285
|
reqWriter.object(request);
|
|
279
286
|
// we can now send it as is
|
|
280
|
-
const requestEncrypted =
|
|
287
|
+
const requestEncrypted = tempKey.encryptMessage(reqWriter.result(), tempServerSalt, this._session._sessionId);
|
|
281
288
|
await this.send(requestEncrypted);
|
|
282
289
|
const res = await promise;
|
|
283
290
|
this._session.pendingMessages.delete(msgId);
|
|
@@ -329,7 +336,7 @@ export class SessionConnection extends PersistentConnection {
|
|
|
329
336
|
this._pendingWaitForUnencrypted.push([promise, timeoutId]);
|
|
330
337
|
return promise;
|
|
331
338
|
}
|
|
332
|
-
|
|
339
|
+
onMessage(data) {
|
|
333
340
|
if (this._pendingWaitForUnencrypted.length) {
|
|
334
341
|
const int32 = new Int32Array(data.buffer, data.byteOffset, 2);
|
|
335
342
|
if (int32[0] === 0 && int32[1] === 0) {
|
|
@@ -348,23 +355,18 @@ export class SessionConnection extends PersistentConnection {
|
|
|
348
355
|
return;
|
|
349
356
|
}
|
|
350
357
|
try {
|
|
351
|
-
|
|
358
|
+
this._session.decryptMessage(data, this._handleRawMessage);
|
|
352
359
|
}
|
|
353
360
|
catch (err) {
|
|
354
361
|
this.log.error('failed to decrypt message: %s\ndata: %h', err, data);
|
|
355
362
|
}
|
|
356
363
|
}
|
|
357
364
|
_handleRawMessage(messageId, seqNo, message) {
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
return this._handleRawMessage(messageId, seqNo, new TlBinaryReader(this._readerMap, gzipInflate(message.bytes())));
|
|
364
|
-
}
|
|
365
|
-
if (message.peekUint() === 0x73f1f8dc) {
|
|
366
|
-
// msg_container
|
|
367
|
-
message.uint();
|
|
365
|
+
const objectId = message.uint();
|
|
366
|
+
if (objectId === GZIP_PACKED_ID) {
|
|
367
|
+
return this._handleRawMessage(messageId, seqNo, new TlBinaryReader(this._readerMap, this._crypto.gunzip(message.bytes())));
|
|
368
|
+
}
|
|
369
|
+
if (objectId === MSG_CONTAINER_ID) {
|
|
368
370
|
const count = message.uint();
|
|
369
371
|
for (let i = 0; i < count; i++) {
|
|
370
372
|
// msg_id:long seqno:int bytes:int
|
|
@@ -377,13 +379,11 @@ export class SessionConnection extends PersistentConnection {
|
|
|
377
379
|
}
|
|
378
380
|
return;
|
|
379
381
|
}
|
|
380
|
-
if (
|
|
381
|
-
// rpc_result
|
|
382
|
-
message.uint();
|
|
382
|
+
if (objectId === RPC_RESULT_ID) {
|
|
383
383
|
return this._onRpcResult(messageId, message);
|
|
384
384
|
}
|
|
385
385
|
// we are safe.. i guess
|
|
386
|
-
this._handleMessage(messageId, message.object());
|
|
386
|
+
this._handleMessage(messageId, message.object(objectId));
|
|
387
387
|
}
|
|
388
388
|
_handleMessage(messageId, message_) {
|
|
389
389
|
if (messageId.isEven()) {
|
|
@@ -529,7 +529,21 @@ export class SessionConnection extends PersistentConnection {
|
|
|
529
529
|
}
|
|
530
530
|
const rpc = msg.rpc;
|
|
531
531
|
const customReader = this._readerMap._results[rpc.method];
|
|
532
|
-
|
|
532
|
+
let result;
|
|
533
|
+
if (customReader) {
|
|
534
|
+
result = customReader(message);
|
|
535
|
+
}
|
|
536
|
+
else {
|
|
537
|
+
const objectId = message.uint();
|
|
538
|
+
if (objectId === GZIP_PACKED_ID) {
|
|
539
|
+
const inner = this._crypto.gunzip(message.bytes());
|
|
540
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
541
|
+
result = TlBinaryReader.deserializeObject(this._readerMap, inner);
|
|
542
|
+
}
|
|
543
|
+
else {
|
|
544
|
+
result = message.object(objectId);
|
|
545
|
+
}
|
|
546
|
+
}
|
|
533
547
|
// initConnection call was definitely received and
|
|
534
548
|
// processed by the server, so we no longer need to use it
|
|
535
549
|
if (rpc.initConn) {
|
|
@@ -920,12 +934,13 @@ export class SessionConnection extends PersistentConnection {
|
|
|
920
934
|
// test compression ratio for the middle part
|
|
921
935
|
// if it is less than 0.9, then try to compress the whole request
|
|
922
936
|
const middle = ~~((content.length - 1024) / 2);
|
|
923
|
-
const
|
|
937
|
+
const middlePart = content.subarray(middle, middle + 1024);
|
|
938
|
+
const gzipped = this._crypto.gzip(middlePart, Math.floor(middlePart.length * 0.9));
|
|
924
939
|
if (!gzipped)
|
|
925
940
|
shouldGzip = false;
|
|
926
941
|
}
|
|
927
942
|
if (shouldGzip) {
|
|
928
|
-
const gzipped =
|
|
943
|
+
const gzipped = this._crypto.gzip(content, Math.floor(content.length * 0.9));
|
|
929
944
|
if (gzipped) {
|
|
930
945
|
this.log.debug('gzipped %s (%db -> %db)', method, content.length, gzipped.length);
|
|
931
946
|
content = gzipped;
|
|
@@ -1197,7 +1212,7 @@ export class SessionConnection extends PersistentConnection {
|
|
|
1197
1212
|
// leave bytes for mtproto header (we'll write it later,
|
|
1198
1213
|
// since we need seqno and msg_id to be larger than the content)
|
|
1199
1214
|
writer.pos += 16;
|
|
1200
|
-
writer.uint(
|
|
1215
|
+
writer.uint(MSG_CONTAINER_ID);
|
|
1201
1216
|
writer.uint(messageCount);
|
|
1202
1217
|
}
|
|
1203
1218
|
const otherPendings = [];
|
|
@@ -1338,18 +1353,17 @@ export class SessionConnection extends PersistentConnection {
|
|
|
1338
1353
|
});
|
|
1339
1354
|
}
|
|
1340
1355
|
const result = writer.result();
|
|
1341
|
-
// probably the easiest way lol
|
|
1342
1356
|
this.log.debug('sending %d messages: size = %db, acks = %d (msg_id = %s), ping = %s (msg_id = %s), state_req = %s (msg_id = %s), resend = %s (msg_id = %s), cancels = %s (msg_id = %s), rpc = %s, container = %s, root msg_id = %l', messageCount, packetSize, ackMsgIds?.length || 'false', ackMsgIds?.map((it) => it.toString()), Boolean(pingRequest), pingMsgId, getStateMsgIds?.map((it) => it.toString()) || 'false', getStateMsgId, resendMsgIds?.map((it) => it.toString()) || 'false', cancelRpcs, cancelRpcs?.map((it) => it.toString()) || 'false', resendMsgId, rpcToSend.map((it) => it.method), useContainer, rootMsgId);
|
|
1343
|
-
this._session
|
|
1344
|
-
|
|
1345
|
-
.then((enc) => this.send(enc))
|
|
1346
|
-
.catch((err) => {
|
|
1357
|
+
const enc = this._session.encryptMessage(result);
|
|
1358
|
+
this.send(enc).catch((err) => {
|
|
1347
1359
|
this.log.error('error while sending pending messages (root msg_id = %l): %s', rootMsgId, err.stack);
|
|
1348
1360
|
// put acks in the front so they are the first to be sent
|
|
1349
1361
|
if (ackMsgIds) {
|
|
1350
1362
|
this._session.queuedAcks.splice(0, 0, ...ackMsgIds);
|
|
1351
1363
|
}
|
|
1352
|
-
|
|
1364
|
+
if (rootMsgId) {
|
|
1365
|
+
this._onMessageFailed(rootMsgId, 'unknown error');
|
|
1366
|
+
}
|
|
1353
1367
|
});
|
|
1354
1368
|
}
|
|
1355
1369
|
}
|