@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
|
@@ -19,6 +19,12 @@ const abstract_js_1 = require("./transports/abstract.js");
|
|
|
19
19
|
const TEMP_AUTH_KEY_EXPIRY = 86400;
|
|
20
20
|
// destroy_auth_key#d1435160 = DestroyAuthKeyRes;
|
|
21
21
|
// const DESTROY_AUTH_KEY = Buffer.from('605134d1', 'hex')
|
|
22
|
+
// gzip_packed#3072cfa1 packed_data:string = Object;
|
|
23
|
+
const GZIP_PACKED_ID = 0x3072cfa1;
|
|
24
|
+
// msg_container#73f1f8dc messages:vector<%Message> = MessageContainer;
|
|
25
|
+
const MSG_CONTAINER_ID = 0x73f1f8dc;
|
|
26
|
+
// rpc_result#f35c6d01 req_msg_id:long result:Object = RpcResult;
|
|
27
|
+
const RPC_RESULT_ID = 0xf35c6d01;
|
|
22
28
|
function makeNiceStack(error, stack, method) {
|
|
23
29
|
error.stack = `RpcError (${error.code} ${error.text}): ${error.message}\n at ${method}\n${stack
|
|
24
30
|
.split('\n')
|
|
@@ -43,6 +49,7 @@ class SessionConnection extends persistent_connection_js_1.PersistentConnection
|
|
|
43
49
|
this._flushTimer.onTimeout(this._flush.bind(this));
|
|
44
50
|
this._readerMap = params.readerMap;
|
|
45
51
|
this._writerMap = params.writerMap;
|
|
52
|
+
this._crypto = params.crypto;
|
|
46
53
|
this._handleRawMessage = this._handleRawMessage.bind(this);
|
|
47
54
|
}
|
|
48
55
|
getAuthKey(temp = false) {
|
|
@@ -178,9 +185,9 @@ class SessionConnection extends persistent_connection_js_1.PersistentConnection
|
|
|
178
185
|
}
|
|
179
186
|
this._session.authorizationPending = true;
|
|
180
187
|
this.emit('auth-begin');
|
|
181
|
-
(0, authorization_js_1.doAuthorization)(this, this.
|
|
182
|
-
.then(
|
|
183
|
-
|
|
188
|
+
(0, authorization_js_1.doAuthorization)(this, this._crypto)
|
|
189
|
+
.then(([authKey, serverSalt, timeOffset]) => {
|
|
190
|
+
this._session._authKey.setup(authKey);
|
|
184
191
|
this._session.serverSalt = serverSalt;
|
|
185
192
|
this._session._timeOffset = timeOffset;
|
|
186
193
|
this._session.authorizationPending = false;
|
|
@@ -218,14 +225,14 @@ class SessionConnection extends persistent_connection_js_1.PersistentConnection
|
|
|
218
225
|
else {
|
|
219
226
|
this._isPfsBindingPending = true;
|
|
220
227
|
}
|
|
221
|
-
(0, authorization_js_1.doAuthorization)(this, this.
|
|
228
|
+
(0, authorization_js_1.doAuthorization)(this, this._crypto, TEMP_AUTH_KEY_EXPIRY)
|
|
222
229
|
.then(async ([tempAuthKey, tempServerSalt]) => {
|
|
223
230
|
if (!this._usePfs) {
|
|
224
231
|
this.log.info('pfs has been disabled while generating temp key');
|
|
225
232
|
return;
|
|
226
233
|
}
|
|
227
234
|
const tempKey = this._session._authKeyTempSecondary;
|
|
228
|
-
|
|
235
|
+
tempKey.setup(tempAuthKey);
|
|
229
236
|
const msgId = this._session.getMessageId();
|
|
230
237
|
this.log.debug('binding temp_auth_key (%h) to perm_auth_key (%h), msg_id = %l...', tempKey.id, this._session._authKey.id, msgId);
|
|
231
238
|
// we now need to bind the key
|
|
@@ -240,18 +247,18 @@ class SessionConnection extends persistent_connection_js_1.PersistentConnection
|
|
|
240
247
|
// encrypt using mtproto v1 (fucking kill me plz)
|
|
241
248
|
const writer = tl_runtime_1.TlBinaryWriter.alloc(this.params.writerMap, 80);
|
|
242
249
|
// = 40 (inner length) + 32 (mtproto header) + 8 (pad 72 so mod 16 = 0)
|
|
243
|
-
writer.raw(
|
|
250
|
+
writer.raw(this._crypto.randomBytes(16));
|
|
244
251
|
writer.long(msgId);
|
|
245
252
|
writer.int(0); // seq_no
|
|
246
253
|
writer.int(40); // msg_len
|
|
247
254
|
writer.object(inner);
|
|
248
255
|
const msgWithoutPadding = writer.result();
|
|
249
|
-
writer.raw(
|
|
256
|
+
writer.raw(this._crypto.randomBytes(8));
|
|
250
257
|
const msgWithPadding = writer.result();
|
|
251
|
-
const hash =
|
|
258
|
+
const hash = this._crypto.sha1(msgWithoutPadding);
|
|
252
259
|
const msgKey = hash.subarray(4, 20);
|
|
253
|
-
const ige =
|
|
254
|
-
const encryptedData =
|
|
260
|
+
const ige = (0, mtproto_js_1.createAesIgeForMessageOld)(this._crypto, this._session._authKey.key, msgKey, true);
|
|
261
|
+
const encryptedData = ige.encrypt(msgWithPadding);
|
|
255
262
|
const encryptedMessage = (0, index_js_2.concatBuffers)([this._session._authKey.id, msgKey, encryptedData]);
|
|
256
263
|
const promise = (0, index_js_2.createControllablePromise)();
|
|
257
264
|
// encrypt the message using temp key and same msg id
|
|
@@ -283,7 +290,7 @@ class SessionConnection extends persistent_connection_js_1.PersistentConnection
|
|
|
283
290
|
reqWriter.uint(reqSize);
|
|
284
291
|
reqWriter.object(request);
|
|
285
292
|
// we can now send it as is
|
|
286
|
-
const requestEncrypted =
|
|
293
|
+
const requestEncrypted = tempKey.encryptMessage(reqWriter.result(), tempServerSalt, this._session._sessionId);
|
|
287
294
|
await this.send(requestEncrypted);
|
|
288
295
|
const res = await promise;
|
|
289
296
|
this._session.pendingMessages.delete(msgId);
|
|
@@ -335,7 +342,7 @@ class SessionConnection extends persistent_connection_js_1.PersistentConnection
|
|
|
335
342
|
this._pendingWaitForUnencrypted.push([promise, timeoutId]);
|
|
336
343
|
return promise;
|
|
337
344
|
}
|
|
338
|
-
|
|
345
|
+
onMessage(data) {
|
|
339
346
|
if (this._pendingWaitForUnencrypted.length) {
|
|
340
347
|
const int32 = new Int32Array(data.buffer, data.byteOffset, 2);
|
|
341
348
|
if (int32[0] === 0 && int32[1] === 0) {
|
|
@@ -354,23 +361,18 @@ class SessionConnection extends persistent_connection_js_1.PersistentConnection
|
|
|
354
361
|
return;
|
|
355
362
|
}
|
|
356
363
|
try {
|
|
357
|
-
|
|
364
|
+
this._session.decryptMessage(data, this._handleRawMessage);
|
|
358
365
|
}
|
|
359
366
|
catch (err) {
|
|
360
367
|
this.log.error('failed to decrypt message: %s\ndata: %h', err, data);
|
|
361
368
|
}
|
|
362
369
|
}
|
|
363
370
|
_handleRawMessage(messageId, seqNo, message) {
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
return this._handleRawMessage(messageId, seqNo, new tl_runtime_1.TlBinaryReader(this._readerMap, (0, tl_runtime_1.gzipInflate)(message.bytes())));
|
|
370
|
-
}
|
|
371
|
-
if (message.peekUint() === 0x73f1f8dc) {
|
|
372
|
-
// msg_container
|
|
373
|
-
message.uint();
|
|
371
|
+
const objectId = message.uint();
|
|
372
|
+
if (objectId === GZIP_PACKED_ID) {
|
|
373
|
+
return this._handleRawMessage(messageId, seqNo, new tl_runtime_1.TlBinaryReader(this._readerMap, this._crypto.gunzip(message.bytes())));
|
|
374
|
+
}
|
|
375
|
+
if (objectId === MSG_CONTAINER_ID) {
|
|
374
376
|
const count = message.uint();
|
|
375
377
|
for (let i = 0; i < count; i++) {
|
|
376
378
|
// msg_id:long seqno:int bytes:int
|
|
@@ -383,13 +385,11 @@ class SessionConnection extends persistent_connection_js_1.PersistentConnection
|
|
|
383
385
|
}
|
|
384
386
|
return;
|
|
385
387
|
}
|
|
386
|
-
if (
|
|
387
|
-
// rpc_result
|
|
388
|
-
message.uint();
|
|
388
|
+
if (objectId === RPC_RESULT_ID) {
|
|
389
389
|
return this._onRpcResult(messageId, message);
|
|
390
390
|
}
|
|
391
391
|
// we are safe.. i guess
|
|
392
|
-
this._handleMessage(messageId, message.object());
|
|
392
|
+
this._handleMessage(messageId, message.object(objectId));
|
|
393
393
|
}
|
|
394
394
|
_handleMessage(messageId, message_) {
|
|
395
395
|
if (messageId.isEven()) {
|
|
@@ -535,7 +535,21 @@ class SessionConnection extends persistent_connection_js_1.PersistentConnection
|
|
|
535
535
|
}
|
|
536
536
|
const rpc = msg.rpc;
|
|
537
537
|
const customReader = this._readerMap._results[rpc.method];
|
|
538
|
-
|
|
538
|
+
let result;
|
|
539
|
+
if (customReader) {
|
|
540
|
+
result = customReader(message);
|
|
541
|
+
}
|
|
542
|
+
else {
|
|
543
|
+
const objectId = message.uint();
|
|
544
|
+
if (objectId === GZIP_PACKED_ID) {
|
|
545
|
+
const inner = this._crypto.gunzip(message.bytes());
|
|
546
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
547
|
+
result = tl_runtime_1.TlBinaryReader.deserializeObject(this._readerMap, inner);
|
|
548
|
+
}
|
|
549
|
+
else {
|
|
550
|
+
result = message.object(objectId);
|
|
551
|
+
}
|
|
552
|
+
}
|
|
539
553
|
// initConnection call was definitely received and
|
|
540
554
|
// processed by the server, so we no longer need to use it
|
|
541
555
|
if (rpc.initConn) {
|
|
@@ -926,12 +940,13 @@ class SessionConnection extends persistent_connection_js_1.PersistentConnection
|
|
|
926
940
|
// test compression ratio for the middle part
|
|
927
941
|
// if it is less than 0.9, then try to compress the whole request
|
|
928
942
|
const middle = ~~((content.length - 1024) / 2);
|
|
929
|
-
const
|
|
943
|
+
const middlePart = content.subarray(middle, middle + 1024);
|
|
944
|
+
const gzipped = this._crypto.gzip(middlePart, Math.floor(middlePart.length * 0.9));
|
|
930
945
|
if (!gzipped)
|
|
931
946
|
shouldGzip = false;
|
|
932
947
|
}
|
|
933
948
|
if (shouldGzip) {
|
|
934
|
-
const gzipped = (
|
|
949
|
+
const gzipped = this._crypto.gzip(content, Math.floor(content.length * 0.9));
|
|
935
950
|
if (gzipped) {
|
|
936
951
|
this.log.debug('gzipped %s (%db -> %db)', method, content.length, gzipped.length);
|
|
937
952
|
content = gzipped;
|
|
@@ -1203,7 +1218,7 @@ class SessionConnection extends persistent_connection_js_1.PersistentConnection
|
|
|
1203
1218
|
// leave bytes for mtproto header (we'll write it later,
|
|
1204
1219
|
// since we need seqno and msg_id to be larger than the content)
|
|
1205
1220
|
writer.pos += 16;
|
|
1206
|
-
writer.uint(
|
|
1221
|
+
writer.uint(MSG_CONTAINER_ID);
|
|
1207
1222
|
writer.uint(messageCount);
|
|
1208
1223
|
}
|
|
1209
1224
|
const otherPendings = [];
|
|
@@ -1344,18 +1359,17 @@ class SessionConnection extends persistent_connection_js_1.PersistentConnection
|
|
|
1344
1359
|
});
|
|
1345
1360
|
}
|
|
1346
1361
|
const result = writer.result();
|
|
1347
|
-
// probably the easiest way lol
|
|
1348
1362
|
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);
|
|
1349
|
-
this._session
|
|
1350
|
-
|
|
1351
|
-
.then((enc) => this.send(enc))
|
|
1352
|
-
.catch((err) => {
|
|
1363
|
+
const enc = this._session.encryptMessage(result);
|
|
1364
|
+
this.send(enc).catch((err) => {
|
|
1353
1365
|
this.log.error('error while sending pending messages (root msg_id = %l): %s', rootMsgId, err.stack);
|
|
1354
1366
|
// put acks in the front so they are the first to be sent
|
|
1355
1367
|
if (ackMsgIds) {
|
|
1356
1368
|
this._session.queuedAcks.splice(0, 0, ...ackMsgIds);
|
|
1357
1369
|
}
|
|
1358
|
-
|
|
1370
|
+
if (rootMsgId) {
|
|
1371
|
+
this._onMessageFailed(rootMsgId, 'unknown error');
|
|
1372
|
+
}
|
|
1359
1373
|
});
|
|
1360
1374
|
}
|
|
1361
1375
|
}
|