@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
package/cjs/utils/peer-utils.js
CHANGED
|
@@ -53,14 +53,18 @@ function getMarkedPeerId(peer, peerType) {
|
|
|
53
53
|
switch (peer._) {
|
|
54
54
|
case 'peerUser':
|
|
55
55
|
case 'inputPeerUser':
|
|
56
|
+
case 'inputPeerUserFromMessage':
|
|
56
57
|
case 'inputUser':
|
|
58
|
+
case 'inputUserFromMessage':
|
|
57
59
|
return peer.userId;
|
|
58
60
|
case 'peerChat':
|
|
59
61
|
case 'inputPeerChat':
|
|
60
62
|
return -peer.chatId;
|
|
61
63
|
case 'peerChannel':
|
|
62
64
|
case 'inputPeerChannel':
|
|
65
|
+
case 'inputPeerChannelFromMessage':
|
|
63
66
|
case 'inputChannel':
|
|
67
|
+
case 'inputChannelFromMessage':
|
|
64
68
|
return ZERO_CHANNEL_ID - peer.channelId;
|
|
65
69
|
}
|
|
66
70
|
throw new errors_js_1.MtArgumentError('Invalid peer');
|
|
@@ -87,7 +91,7 @@ function getBasicPeerType(peer) {
|
|
|
87
91
|
if (MIN_MARKED_CHANNEL_ID <= peer && peer !== ZERO_CHANNEL_ID) {
|
|
88
92
|
return 'channel';
|
|
89
93
|
}
|
|
90
|
-
if (MAX_SECRET_CHAT_ID
|
|
94
|
+
if (MAX_SECRET_CHAT_ID >= peer && peer !== ZERO_SECRET_CHAT_ID) {
|
|
91
95
|
// return 'secret'
|
|
92
96
|
throw new errors_js_1.MtUnsupportedError('Secret chats are not supported');
|
|
93
97
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"peer-utils.js","sourceRoot":"","sources":["../../../src/utils/peer-utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { MtArgumentError, MtUnsupportedError } from '../types/errors.js'\nimport { BasicPeerType } from '../types/peers.js'\n\n// src: https://github.com/tdlib/td/blob/master/td/telegram/DialogId.h\nconst ZERO_CHANNEL_ID = -1000000000000\nconst ZERO_SECRET_CHAT_ID = -2000000000000\nconst MAX_SECRET_CHAT_ID = -1997852516353 // ZERO_SECRET_CHAT_ID + 0x7fffffff\n// src: https://github.com/tdlib/td/blob/master/td/telegram/ChatId.h\n// const MAX_CHAT_ID = 999999999999\nconst MIN_MARKED_CHAT_ID = -999999999999 // -MAX_CHAT_ID\n// src: https://github.com/tdlib/td/blob/master/td/telegram/UserId.h\n// MAX_USER_ID = (1ll << 40) - 1\nconst MAX_USER_ID = 1099511627775\n// src: https://github.com/tdlib/td/blob/master/td/telegram/ChannelId.h\n// the last (1 << 31) - 1 identifiers will be used for secret chat dialog identifiers\n// MAX_CHANNEL_ID = 1000000000000ll - (1ll << 31)\n// const MAX_CHANNEL_ID = 997852516352\nconst MIN_MARKED_CHANNEL_ID = -1997852516352 // ZERO_CHANNEL_ID - MAX_CHANNEL_ID\n\n/**\n * Add or remove channel marker from ID\n */\nexport function toggleChannelIdMark(id: number): number {\n return ZERO_CHANNEL_ID - id\n}\n\n/**\n * Get the bare (non-marked) ID from a {@link tl.TypePeer}\n */\nexport function getBarePeerId(peer: tl.TypePeer): number {\n switch (peer._) {\n case 'peerUser':\n return peer.userId\n case 'peerChat':\n return peer.chatId\n case 'peerChannel':\n return peer.channelId\n }\n}\n\n// src: https://github.com/tdlib/td/blob/master/td/telegram/DialogId.cpp\n\n/**\n * Get the marked (non-bare) ID from a {@link tl.TypePeer}\n *\n * *Mark* is bot API compatible, which is:\n * - ID stays the same for users\n * - ID is negated for chats\n * - ID is negated and `-1e12` is subtracted for channels\n */\nexport function getMarkedPeerId(peerId: number, peerType: BasicPeerType): number\nexport function getMarkedPeerId(peer: tl.TypePeer | tl.TypeInputPeer | tl.TypeInputUser | tl.TypeInputChannel): number\n\nexport function getMarkedPeerId(\n peer: tl.TypePeer | tl.TypeInputPeer | tl.TypeInputUser | tl.TypeInputChannel | number,\n peerType?: BasicPeerType,\n): number {\n if (typeof peer === 'number') {\n switch (peerType) {\n case 'user':\n return peer\n case 'chat':\n return -peer\n case 'channel':\n return ZERO_CHANNEL_ID - peer\n }\n throw new MtArgumentError('Invalid peer type')\n }\n\n switch (peer._) {\n case 'peerUser':\n case 'inputPeerUser':\n case 'inputUser':\n return peer.userId\n case 'peerChat':\n case 'inputPeerChat':\n return -peer.chatId\n case 'peerChannel':\n case 'inputPeerChannel':\n case 'inputChannel':\n return ZERO_CHANNEL_ID - peer.channelId\n }\n\n throw new MtArgumentError('Invalid peer')\n}\n\n/**\n * Extract basic peer type from {@link tl.TypePeer} or its marked ID.\n */\nexport function getBasicPeerType(peer: tl.TypePeer | number): BasicPeerType {\n if (typeof peer !== 'number') {\n switch (peer._) {\n case 'peerUser':\n return 'user'\n case 'peerChat':\n return 'chat'\n case 'peerChannel':\n return 'channel'\n }\n }\n\n if (peer < 0) {\n if (MIN_MARKED_CHAT_ID <= peer) {\n return 'chat'\n }\n\n if (MIN_MARKED_CHANNEL_ID <= peer && peer !== ZERO_CHANNEL_ID) {\n return 'channel'\n }\n\n if (MAX_SECRET_CHAT_ID <= peer && peer !== ZERO_SECRET_CHAT_ID) {\n // return 'secret'\n throw new MtUnsupportedError('Secret chats are not supported')\n }\n } else if (peer > 0 && peer <= MAX_USER_ID) {\n return 'user'\n }\n\n throw new MtArgumentError(`Invalid marked peer id: ${peer}`)\n}\n\n/**\n * Extract bare peer ID from marked ID.\n *\n * @param peerId Marked peer ID\n */\nexport function markedPeerIdToBare(peerId: number): number {\n const type = getBasicPeerType(peerId)\n\n switch (type) {\n case 'user':\n return peerId\n case 'chat':\n return -peerId\n case 'channel':\n return toggleChannelIdMark(peerId)\n }\n}\n\n/**\n * Extracts all (cacheable) entities from a TlObject or a list of them.\n * Only checks `.user`, `.chat`, `.channel`, `.users` and `.chats` properties\n */\nexport function* getAllPeersFrom(obj: tl.TlObject | tl.TlObject[]): Iterable<tl.TypeUser | tl.TypeChat> {\n if (typeof obj !== 'object') return\n\n if (Array.isArray(obj)) {\n for (const it of obj) {\n yield* getAllPeersFrom(it)\n }\n\n return\n }\n\n switch (obj._) {\n case 'user':\n case 'chat':\n case 'channel':\n case 'chatForbidden':\n case 'channelForbidden':\n yield obj\n\n return\n }\n\n if ('user' in obj && typeof obj.user === 'object' && obj.user._ === 'user') {\n yield obj.user\n }\n\n if ('chat' in obj && typeof obj.chat === 'object') {\n switch (obj.chat._) {\n case 'chat':\n case 'channel':\n case 'chatForbidden':\n case 'channelForbidden':\n yield obj.chat\n break\n }\n }\n\n if ('channel' in obj && typeof obj.channel === 'object') {\n switch (obj.channel._) {\n case 'chat':\n case 'channel':\n case 'chatForbidden':\n case 'channelForbidden':\n yield obj.channel\n break\n }\n }\n\n if ('users' in obj && Array.isArray(obj.users) && obj.users.length) {\n for (const user of obj.users) {\n // .users is sometimes number[]\n if (typeof user === 'object' && user._ === 'user') {\n yield user\n }\n }\n }\n\n if ('chats' in obj && Array.isArray(obj.chats) && obj.chats.length) {\n for (const chat of obj.chats) {\n // .chats is sometimes number[]\n if (typeof chat === 'object') {\n switch (chat._) {\n case 'chat':\n case 'channel':\n case 'chatForbidden':\n case 'channelForbidden':\n yield chat\n break\n }\n }\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"peer-utils.js","sourceRoot":"","sources":["../../../src/utils/peer-utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { MtArgumentError, MtUnsupportedError } from '../types/errors.js'\nimport { BasicPeerType } from '../types/peers.js'\n\n// src: https://github.com/tdlib/td/blob/master/td/telegram/DialogId.h\nconst ZERO_CHANNEL_ID = -1000000000000\nconst ZERO_SECRET_CHAT_ID = -2000000000000\nconst MAX_SECRET_CHAT_ID = -1997852516353 // ZERO_SECRET_CHAT_ID + 0x7fffffff\n// src: https://github.com/tdlib/td/blob/master/td/telegram/ChatId.h\n// const MAX_CHAT_ID = 999999999999\nconst MIN_MARKED_CHAT_ID = -999999999999 // -MAX_CHAT_ID\n// src: https://github.com/tdlib/td/blob/master/td/telegram/UserId.h\n// MAX_USER_ID = (1ll << 40) - 1\nconst MAX_USER_ID = 1099511627775\n// src: https://github.com/tdlib/td/blob/master/td/telegram/ChannelId.h\n// the last (1 << 31) - 1 identifiers will be used for secret chat dialog identifiers\n// MAX_CHANNEL_ID = 1000000000000ll - (1ll << 31)\n// const MAX_CHANNEL_ID = 997852516352\nconst MIN_MARKED_CHANNEL_ID = -1997852516352 // ZERO_CHANNEL_ID - MAX_CHANNEL_ID\n\n/**\n * Add or remove channel marker from ID\n */\nexport function toggleChannelIdMark(id: number): number {\n return ZERO_CHANNEL_ID - id\n}\n\n/**\n * Get the bare (non-marked) ID from a {@link tl.TypePeer}\n */\nexport function getBarePeerId(peer: tl.TypePeer): number {\n switch (peer._) {\n case 'peerUser':\n return peer.userId\n case 'peerChat':\n return peer.chatId\n case 'peerChannel':\n return peer.channelId\n }\n}\n\n// src: https://github.com/tdlib/td/blob/master/td/telegram/DialogId.cpp\n\n/**\n * Get the marked (non-bare) ID from a {@link tl.TypePeer}\n *\n * *Mark* is bot API compatible, which is:\n * - ID stays the same for users\n * - ID is negated for chats\n * - ID is negated and `-1e12` is subtracted for channels\n */\nexport function getMarkedPeerId(peerId: number, peerType: BasicPeerType): number\nexport function getMarkedPeerId(peer: tl.TypePeer | tl.TypeInputPeer | tl.TypeInputUser | tl.TypeInputChannel): number\n\nexport function getMarkedPeerId(\n peer: tl.TypePeer | tl.TypeInputPeer | tl.TypeInputUser | tl.TypeInputChannel | number,\n peerType?: BasicPeerType,\n): number {\n if (typeof peer === 'number') {\n switch (peerType) {\n case 'user':\n return peer\n case 'chat':\n return -peer\n case 'channel':\n return ZERO_CHANNEL_ID - peer\n }\n throw new MtArgumentError('Invalid peer type')\n }\n\n switch (peer._) {\n case 'peerUser':\n case 'inputPeerUser':\n case 'inputPeerUserFromMessage':\n case 'inputUser':\n case 'inputUserFromMessage':\n return peer.userId\n case 'peerChat':\n case 'inputPeerChat':\n return -peer.chatId\n case 'peerChannel':\n case 'inputPeerChannel':\n case 'inputPeerChannelFromMessage':\n case 'inputChannel':\n case 'inputChannelFromMessage':\n return ZERO_CHANNEL_ID - peer.channelId\n }\n\n throw new MtArgumentError('Invalid peer')\n}\n\n/**\n * Extract basic peer type from {@link tl.TypePeer} or its marked ID.\n */\nexport function getBasicPeerType(peer: tl.TypePeer | number): BasicPeerType {\n if (typeof peer !== 'number') {\n switch (peer._) {\n case 'peerUser':\n return 'user'\n case 'peerChat':\n return 'chat'\n case 'peerChannel':\n return 'channel'\n }\n }\n\n if (peer < 0) {\n if (MIN_MARKED_CHAT_ID <= peer) {\n return 'chat'\n }\n\n if (MIN_MARKED_CHANNEL_ID <= peer && peer !== ZERO_CHANNEL_ID) {\n return 'channel'\n }\n\n if (MAX_SECRET_CHAT_ID >= peer && peer !== ZERO_SECRET_CHAT_ID) {\n // return 'secret'\n throw new MtUnsupportedError('Secret chats are not supported')\n }\n } else if (peer > 0 && peer <= MAX_USER_ID) {\n return 'user'\n }\n\n throw new MtArgumentError(`Invalid marked peer id: ${peer}`)\n}\n\n/**\n * Extract bare peer ID from marked ID.\n *\n * @param peerId Marked peer ID\n */\nexport function markedPeerIdToBare(peerId: number): number {\n const type = getBasicPeerType(peerId)\n\n switch (type) {\n case 'user':\n return peerId\n case 'chat':\n return -peerId\n case 'channel':\n return toggleChannelIdMark(peerId)\n }\n}\n\n/**\n * Extracts all (cacheable) entities from a TlObject or a list of them.\n * Only checks `.user`, `.chat`, `.channel`, `.users` and `.chats` properties\n */\nexport function* getAllPeersFrom(obj: tl.TlObject | tl.TlObject[]): Iterable<tl.TypeUser | tl.TypeChat> {\n if (typeof obj !== 'object') return\n\n if (Array.isArray(obj)) {\n for (const it of obj) {\n yield* getAllPeersFrom(it)\n }\n\n return\n }\n\n switch (obj._) {\n case 'user':\n case 'chat':\n case 'channel':\n case 'chatForbidden':\n case 'channelForbidden':\n yield obj\n\n return\n }\n\n if ('user' in obj && typeof obj.user === 'object' && obj.user._ === 'user') {\n yield obj.user\n }\n\n if ('chat' in obj && typeof obj.chat === 'object') {\n switch (obj.chat._) {\n case 'chat':\n case 'channel':\n case 'chatForbidden':\n case 'channelForbidden':\n yield obj.chat\n break\n }\n }\n\n if ('channel' in obj && typeof obj.channel === 'object') {\n switch (obj.channel._) {\n case 'chat':\n case 'channel':\n case 'chatForbidden':\n case 'channelForbidden':\n yield obj.channel\n break\n }\n }\n\n if ('users' in obj && Array.isArray(obj.users) && obj.users.length) {\n for (const user of obj.users) {\n // .users is sometimes number[]\n if (typeof user === 'object' && user._ === 'user') {\n yield user\n }\n }\n }\n\n if ('chats' in obj && Array.isArray(obj.chats) && obj.chats.length) {\n for (const chat of obj.chats) {\n // .chats is sometimes number[]\n if (typeof chat === 'object') {\n switch (chat._) {\n case 'chat':\n case 'channel':\n case 'chatForbidden':\n case 'channelForbidden':\n yield chat\n break\n }\n }\n }\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const long_1 = __importDefault(require("long"));
|
|
7
|
+
const vitest_1 = require("vitest");
|
|
8
|
+
const test_1 = require("@mtcute/test");
|
|
9
|
+
const peer_utils_js_1 = require("./peer-utils.js");
|
|
10
|
+
const SOME_CHANNEL_ID = 1183945448;
|
|
11
|
+
const SOME_CHANNEL_ID_MARKED = -1001183945448;
|
|
12
|
+
(0, vitest_1.describe)('toggleChannelIdMark', () => {
|
|
13
|
+
(0, vitest_1.it)('should turn marked channel id into bare', () => {
|
|
14
|
+
(0, vitest_1.expect)((0, peer_utils_js_1.toggleChannelIdMark)(SOME_CHANNEL_ID_MARKED)).toEqual(SOME_CHANNEL_ID);
|
|
15
|
+
});
|
|
16
|
+
(0, vitest_1.it)('should turn bare channel id into marked', () => {
|
|
17
|
+
(0, vitest_1.expect)((0, peer_utils_js_1.toggleChannelIdMark)(SOME_CHANNEL_ID)).toEqual(SOME_CHANNEL_ID_MARKED);
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
(0, vitest_1.describe)('getBarePeerId', () => {
|
|
21
|
+
(0, vitest_1.it)('should return bare peer id from Peer', () => {
|
|
22
|
+
(0, vitest_1.expect)((0, peer_utils_js_1.getBarePeerId)({ _: 'peerUser', userId: 123 })).toEqual(123);
|
|
23
|
+
(0, vitest_1.expect)((0, peer_utils_js_1.getBarePeerId)({ _: 'peerChat', chatId: 456 })).toEqual(456);
|
|
24
|
+
(0, vitest_1.expect)((0, peer_utils_js_1.getBarePeerId)({ _: 'peerChannel', channelId: 789 })).toEqual(789);
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
(0, vitest_1.describe)('getMarkedPeerId', () => {
|
|
28
|
+
(0, vitest_1.it)('should return marked peer id from bare and type', () => {
|
|
29
|
+
(0, vitest_1.expect)((0, peer_utils_js_1.getMarkedPeerId)(123, 'user')).toEqual(123);
|
|
30
|
+
(0, vitest_1.expect)((0, peer_utils_js_1.getMarkedPeerId)(456, 'chat')).toEqual(-456);
|
|
31
|
+
(0, vitest_1.expect)((0, peer_utils_js_1.getMarkedPeerId)(SOME_CHANNEL_ID, 'channel')).toEqual(SOME_CHANNEL_ID_MARKED);
|
|
32
|
+
});
|
|
33
|
+
(0, vitest_1.it)('should throw on invalid type', () => {
|
|
34
|
+
// eslint-disable-next-line
|
|
35
|
+
(0, vitest_1.expect)(() => (0, peer_utils_js_1.getMarkedPeerId)(123, 'invalid')).toThrow();
|
|
36
|
+
});
|
|
37
|
+
(0, vitest_1.it)('should return marked peer id from Peer', () => {
|
|
38
|
+
(0, vitest_1.expect)((0, peer_utils_js_1.getMarkedPeerId)({ _: 'peerUser', userId: 123 })).toEqual(123);
|
|
39
|
+
(0, vitest_1.expect)((0, peer_utils_js_1.getMarkedPeerId)({ _: 'peerChat', chatId: 456 })).toEqual(-456);
|
|
40
|
+
(0, vitest_1.expect)((0, peer_utils_js_1.getMarkedPeerId)({ _: 'peerChannel', channelId: SOME_CHANNEL_ID })).toEqual(SOME_CHANNEL_ID_MARKED);
|
|
41
|
+
});
|
|
42
|
+
(0, vitest_1.it)('should return marked peer id from Input*', () => {
|
|
43
|
+
(0, vitest_1.expect)((0, peer_utils_js_1.getMarkedPeerId)({ _: 'inputPeerUser', userId: 123, accessHash: long_1.default.ZERO })).toEqual(123);
|
|
44
|
+
(0, vitest_1.expect)((0, peer_utils_js_1.getMarkedPeerId)({ _: 'inputUser', userId: 123, accessHash: long_1.default.ZERO })).toEqual(123);
|
|
45
|
+
(0, vitest_1.expect)((0, peer_utils_js_1.getMarkedPeerId)({ _: 'inputPeerChat', chatId: 456 })).toEqual(-456);
|
|
46
|
+
(0, vitest_1.expect)((0, peer_utils_js_1.getMarkedPeerId)({ _: 'inputPeerChannel', channelId: SOME_CHANNEL_ID, accessHash: long_1.default.ZERO })).toEqual(SOME_CHANNEL_ID_MARKED);
|
|
47
|
+
(0, vitest_1.expect)((0, peer_utils_js_1.getMarkedPeerId)({ _: 'inputChannel', channelId: SOME_CHANNEL_ID, accessHash: long_1.default.ZERO })).toEqual(SOME_CHANNEL_ID_MARKED);
|
|
48
|
+
});
|
|
49
|
+
(0, vitest_1.it)('should throw if peer does not have id', () => {
|
|
50
|
+
(0, vitest_1.expect)(() => (0, peer_utils_js_1.getMarkedPeerId)({ _: 'inputPeerSelf' })).toThrow();
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
(0, vitest_1.describe)('getBasicPeerType', () => {
|
|
54
|
+
(0, vitest_1.it)('should return basic peer type from Peer', () => {
|
|
55
|
+
(0, vitest_1.expect)((0, peer_utils_js_1.getBasicPeerType)({ _: 'peerUser', userId: 123 })).toEqual('user');
|
|
56
|
+
(0, vitest_1.expect)((0, peer_utils_js_1.getBasicPeerType)({ _: 'peerChat', chatId: 456 })).toEqual('chat');
|
|
57
|
+
(0, vitest_1.expect)((0, peer_utils_js_1.getBasicPeerType)({ _: 'peerChannel', channelId: SOME_CHANNEL_ID })).toEqual('channel');
|
|
58
|
+
});
|
|
59
|
+
(0, vitest_1.it)('should return basic peer type from marked id', () => {
|
|
60
|
+
(0, vitest_1.expect)((0, peer_utils_js_1.getBasicPeerType)(123)).toEqual('user');
|
|
61
|
+
(0, vitest_1.expect)((0, peer_utils_js_1.getBasicPeerType)(-456)).toEqual('chat');
|
|
62
|
+
(0, vitest_1.expect)((0, peer_utils_js_1.getBasicPeerType)(SOME_CHANNEL_ID_MARKED)).toEqual('channel');
|
|
63
|
+
});
|
|
64
|
+
(0, vitest_1.it)('should throw for invalid marked ids', () => {
|
|
65
|
+
(0, vitest_1.expect)(() => (0, peer_utils_js_1.getBasicPeerType)(0)).toThrow('Invalid marked peer id');
|
|
66
|
+
// secret chats are not supported yet
|
|
67
|
+
(0, vitest_1.expect)(() => (0, peer_utils_js_1.getBasicPeerType)(-1997852516400)).toThrow('Secret chats are not supported');
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
(0, vitest_1.describe)('markedPeerIdToBare', () => {
|
|
71
|
+
(0, vitest_1.it)('should return bare peer id from marked id', () => {
|
|
72
|
+
(0, vitest_1.expect)((0, peer_utils_js_1.markedPeerIdToBare)(123)).toEqual(123);
|
|
73
|
+
(0, vitest_1.expect)((0, peer_utils_js_1.markedPeerIdToBare)(-456)).toEqual(456);
|
|
74
|
+
(0, vitest_1.expect)((0, peer_utils_js_1.markedPeerIdToBare)(SOME_CHANNEL_ID_MARKED)).toEqual(SOME_CHANNEL_ID);
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
(0, vitest_1.describe)('getAllPeersFrom', () => {
|
|
78
|
+
const stubUser1 = (0, test_1.createStub)('user', { id: 123 });
|
|
79
|
+
const stubUser2 = (0, test_1.createStub)('user', { id: 456 });
|
|
80
|
+
const stubChat = (0, test_1.createStub)('chat', { id: 789 });
|
|
81
|
+
const stubChannel = (0, test_1.createStub)('channel', { id: 101112 });
|
|
82
|
+
/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-argument */
|
|
83
|
+
(0, vitest_1.it)('should find all peers from objects containing users/chats fields', () => {
|
|
84
|
+
(0, vitest_1.expect)([...(0, peer_utils_js_1.getAllPeersFrom)({ users: [], chats: [] })]).toEqual([]);
|
|
85
|
+
(0, vitest_1.expect)([
|
|
86
|
+
...(0, peer_utils_js_1.getAllPeersFrom)({
|
|
87
|
+
users: [stubUser1, stubUser2],
|
|
88
|
+
chats: [stubChat, stubChannel],
|
|
89
|
+
}),
|
|
90
|
+
]).toEqual([stubUser1, stubUser2, stubChat, stubChannel]);
|
|
91
|
+
});
|
|
92
|
+
(0, vitest_1.it)('should extract peers from objects containing user/chat fields', () => {
|
|
93
|
+
(0, vitest_1.expect)([
|
|
94
|
+
...(0, peer_utils_js_1.getAllPeersFrom)({
|
|
95
|
+
user: stubUser2,
|
|
96
|
+
chat: stubChat,
|
|
97
|
+
channel: stubChannel,
|
|
98
|
+
}),
|
|
99
|
+
]).toEqual([stubUser2, stubChat, stubChannel]);
|
|
100
|
+
});
|
|
101
|
+
(0, vitest_1.it)('should work for arrays', () => {
|
|
102
|
+
(0, vitest_1.expect)([...(0, peer_utils_js_1.getAllPeersFrom)([{ user: stubUser1 }, { user: stubUser2 }])]).toEqual([stubUser1, stubUser2]);
|
|
103
|
+
});
|
|
104
|
+
(0, vitest_1.it)('should work for peer objects directly', () => {
|
|
105
|
+
(0, vitest_1.expect)([...(0, peer_utils_js_1.getAllPeersFrom)(stubUser1)]).toEqual([stubUser1]);
|
|
106
|
+
});
|
|
107
|
+
(0, vitest_1.it)('should ignore *Empty', () => {
|
|
108
|
+
(0, vitest_1.expect)([
|
|
109
|
+
...(0, peer_utils_js_1.getAllPeersFrom)({
|
|
110
|
+
users: [(0, test_1.createStub)('userEmpty')],
|
|
111
|
+
chats: [(0, test_1.createStub)('chatEmpty')],
|
|
112
|
+
}),
|
|
113
|
+
]).toEqual([]);
|
|
114
|
+
(0, vitest_1.expect)([...(0, peer_utils_js_1.getAllPeersFrom)({ user: (0, test_1.createStub)('userEmpty'), chat: (0, test_1.createStub)('chatEmpty') })]).toEqual([]);
|
|
115
|
+
(0, vitest_1.expect)([...(0, peer_utils_js_1.getAllPeersFrom)([(0, test_1.createStub)('userEmpty'), (0, test_1.createStub)('chatEmpty')])]).toEqual([]);
|
|
116
|
+
});
|
|
117
|
+
(0, vitest_1.it)('should correctly handle users/chats fields of type number[]', () => {
|
|
118
|
+
(0, vitest_1.expect)([...(0, peer_utils_js_1.getAllPeersFrom)({ users: [123, 456], chats: [123, 456] })]).toEqual([]);
|
|
119
|
+
});
|
|
120
|
+
/* eslint-enable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-argument */
|
|
121
|
+
});
|
|
122
|
+
//# sourceMappingURL=peer-utils.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"peer-utils.test.js","sourceRoot":"","sources":["../../../src/utils/peer-utils.test.ts"],"names":[],"mappings":"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","sourcesContent":["import Long from 'long'\nimport { describe, expect, it } from 'vitest'\n\nimport { createStub } from '@mtcute/test'\n\nimport {\n getAllPeersFrom,\n getBarePeerId,\n getBasicPeerType,\n getMarkedPeerId,\n markedPeerIdToBare,\n toggleChannelIdMark,\n} from './peer-utils.js'\n\nconst SOME_CHANNEL_ID = 1183945448\nconst SOME_CHANNEL_ID_MARKED = -1001183945448\n\ndescribe('toggleChannelIdMark', () => {\n it('should turn marked channel id into bare', () => {\n expect(toggleChannelIdMark(SOME_CHANNEL_ID_MARKED)).toEqual(SOME_CHANNEL_ID)\n })\n\n it('should turn bare channel id into marked', () => {\n expect(toggleChannelIdMark(SOME_CHANNEL_ID)).toEqual(SOME_CHANNEL_ID_MARKED)\n })\n})\n\ndescribe('getBarePeerId', () => {\n it('should return bare peer id from Peer', () => {\n expect(getBarePeerId({ _: 'peerUser', userId: 123 })).toEqual(123)\n expect(getBarePeerId({ _: 'peerChat', chatId: 456 })).toEqual(456)\n expect(getBarePeerId({ _: 'peerChannel', channelId: 789 })).toEqual(789)\n })\n})\n\ndescribe('getMarkedPeerId', () => {\n it('should return marked peer id from bare and type', () => {\n expect(getMarkedPeerId(123, 'user')).toEqual(123)\n expect(getMarkedPeerId(456, 'chat')).toEqual(-456)\n expect(getMarkedPeerId(SOME_CHANNEL_ID, 'channel')).toEqual(SOME_CHANNEL_ID_MARKED)\n })\n\n it('should throw on invalid type', () => {\n // eslint-disable-next-line\n expect(() => getMarkedPeerId(123, 'invalid' as any)).toThrow()\n })\n\n it('should return marked peer id from Peer', () => {\n expect(getMarkedPeerId({ _: 'peerUser', userId: 123 })).toEqual(123)\n expect(getMarkedPeerId({ _: 'peerChat', chatId: 456 })).toEqual(-456)\n expect(getMarkedPeerId({ _: 'peerChannel', channelId: SOME_CHANNEL_ID })).toEqual(SOME_CHANNEL_ID_MARKED)\n })\n\n it('should return marked peer id from Input*', () => {\n expect(getMarkedPeerId({ _: 'inputPeerUser', userId: 123, accessHash: Long.ZERO })).toEqual(123)\n expect(getMarkedPeerId({ _: 'inputUser', userId: 123, accessHash: Long.ZERO })).toEqual(123)\n expect(getMarkedPeerId({ _: 'inputPeerChat', chatId: 456 })).toEqual(-456)\n expect(getMarkedPeerId({ _: 'inputPeerChannel', channelId: SOME_CHANNEL_ID, accessHash: Long.ZERO })).toEqual(\n SOME_CHANNEL_ID_MARKED,\n )\n expect(getMarkedPeerId({ _: 'inputChannel', channelId: SOME_CHANNEL_ID, accessHash: Long.ZERO })).toEqual(\n SOME_CHANNEL_ID_MARKED,\n )\n })\n\n it('should throw if peer does not have id', () => {\n expect(() => getMarkedPeerId({ _: 'inputPeerSelf' })).toThrow()\n })\n})\n\ndescribe('getBasicPeerType', () => {\n it('should return basic peer type from Peer', () => {\n expect(getBasicPeerType({ _: 'peerUser', userId: 123 })).toEqual('user')\n expect(getBasicPeerType({ _: 'peerChat', chatId: 456 })).toEqual('chat')\n expect(getBasicPeerType({ _: 'peerChannel', channelId: SOME_CHANNEL_ID })).toEqual('channel')\n })\n\n it('should return basic peer type from marked id', () => {\n expect(getBasicPeerType(123)).toEqual('user')\n expect(getBasicPeerType(-456)).toEqual('chat')\n expect(getBasicPeerType(SOME_CHANNEL_ID_MARKED)).toEqual('channel')\n })\n\n it('should throw for invalid marked ids', () => {\n expect(() => getBasicPeerType(0)).toThrow('Invalid marked peer id')\n\n // secret chats are not supported yet\n expect(() => getBasicPeerType(-1997852516400)).toThrow('Secret chats are not supported')\n })\n})\n\ndescribe('markedPeerIdToBare', () => {\n it('should return bare peer id from marked id', () => {\n expect(markedPeerIdToBare(123)).toEqual(123)\n expect(markedPeerIdToBare(-456)).toEqual(456)\n expect(markedPeerIdToBare(SOME_CHANNEL_ID_MARKED)).toEqual(SOME_CHANNEL_ID)\n })\n})\n\ndescribe('getAllPeersFrom', () => {\n const stubUser1 = createStub('user', { id: 123 })\n const stubUser2 = createStub('user', { id: 456 })\n const stubChat = createStub('chat', { id: 789 })\n const stubChannel = createStub('channel', { id: 101112 })\n\n /* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-argument */\n it('should find all peers from objects containing users/chats fields', () => {\n expect([...getAllPeersFrom({ users: [], chats: [] } as any)]).toEqual([])\n expect([\n ...getAllPeersFrom({\n users: [stubUser1, stubUser2],\n chats: [stubChat, stubChannel],\n } as any),\n ]).toEqual([stubUser1, stubUser2, stubChat, stubChannel])\n })\n\n it('should extract peers from objects containing user/chat fields', () => {\n expect([\n ...getAllPeersFrom({\n user: stubUser2,\n chat: stubChat,\n channel: stubChannel,\n } as any),\n ]).toEqual([stubUser2, stubChat, stubChannel])\n })\n\n it('should work for arrays', () => {\n expect([...getAllPeersFrom([{ user: stubUser1 }, { user: stubUser2 }] as any)]).toEqual([stubUser1, stubUser2])\n })\n\n it('should work for peer objects directly', () => {\n expect([...getAllPeersFrom(stubUser1)]).toEqual([stubUser1])\n })\n\n it('should ignore *Empty', () => {\n expect([\n ...getAllPeersFrom({\n users: [createStub('userEmpty')],\n chats: [createStub('chatEmpty')],\n } as any),\n ]).toEqual([])\n expect([...getAllPeersFrom({ user: createStub('userEmpty'), chat: createStub('chatEmpty') } as any)]).toEqual(\n [],\n )\n expect([...getAllPeersFrom([createStub('userEmpty'), createStub('chatEmpty')])]).toEqual([])\n })\n\n it('should correctly handle users/chats fields of type number[]', () => {\n expect([...getAllPeersFrom({ users: [123, 456], chats: [123, 456] } as any)]).toEqual([])\n })\n\n /* eslint-enable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-argument */\n})\n"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports._defaultCryptoProviderFactory = void 0;
|
|
4
|
-
const
|
|
4
|
+
const node_js_1 = require("../crypto/node.js");
|
|
5
5
|
/** @internal */
|
|
6
|
-
const _defaultCryptoProviderFactory = () => new
|
|
6
|
+
const _defaultCryptoProviderFactory = () => new node_js_1.NodeCryptoProvider();
|
|
7
7
|
exports._defaultCryptoProviderFactory = _defaultCryptoProviderFactory;
|
|
8
8
|
//# sourceMappingURL=crypto.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../../../src/utils/platform/crypto.ts"],"names":[],"mappings":";;;AAAA
|
|
1
|
+
{"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../../../src/utils/platform/crypto.ts"],"names":[],"mappings":";;;AAAA,+CAAsD;AAEtD,gBAAgB;AACT,MAAM,6BAA6B,GAAG,GAAG,EAAE,CAAC,IAAI,4BAAkB,EAAE,CAAA;AAA9D,QAAA,6BAA6B,iCAAiC","sourcesContent":["import { NodeCryptoProvider } from '../crypto/node.js'\n\n/** @internal */\nexport const _defaultCryptoProviderFactory = () => new NodeCryptoProvider()\n"]}
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports._defaultCryptoProviderFactory = void 0;
|
|
4
4
|
const index_js_1 = require("../../index.js");
|
|
5
|
-
const
|
|
5
|
+
const web_js_1 = require("../crypto/web.js");
|
|
6
6
|
/** @internal */
|
|
7
7
|
const _defaultCryptoProviderFactory = () => {
|
|
8
8
|
if (typeof crypto === 'undefined' || typeof crypto.subtle === 'undefined') {
|
|
9
9
|
throw new index_js_1.MtUnsupportedError('WebCrypto API is not available');
|
|
10
10
|
}
|
|
11
|
-
return new
|
|
11
|
+
return new web_js_1.WebCryptoProvider({ crypto });
|
|
12
12
|
};
|
|
13
13
|
exports._defaultCryptoProviderFactory = _defaultCryptoProviderFactory;
|
|
14
14
|
//# sourceMappingURL=crypto.web.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crypto.web.js","sourceRoot":"","sources":["../../../../src/utils/platform/crypto.web.ts"],"names":[],"mappings":";;;AAAA,6CAAmD;AACnD,
|
|
1
|
+
{"version":3,"file":"crypto.web.js","sourceRoot":"","sources":["../../../../src/utils/platform/crypto.web.ts"],"names":[],"mappings":";;;AAAA,6CAAmD;AACnD,6CAAoD;AAEpD,gBAAgB;AACT,MAAM,6BAA6B,GAAG,GAAG,EAAE;IAC9C,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE;QACvE,MAAM,IAAI,6BAAkB,CAAC,gCAAgC,CAAC,CAAA;KACjE;IAED,OAAO,IAAI,0BAAiB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAA;AAC5C,CAAC,CAAA;AANY,QAAA,6BAA6B,iCAMzC","sourcesContent":["import { MtUnsupportedError } from '../../index.js'\nimport { WebCryptoProvider } from '../crypto/web.js'\n\n/** @internal */\nexport const _defaultCryptoProviderFactory = () => {\n if (typeof crypto === 'undefined' || typeof crypto.subtle === 'undefined') {\n throw new MtUnsupportedError('WebCrypto API is not available')\n }\n\n return new WebCryptoProvider({ crypto })\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const sorted_array_js_1 = require("./sorted-array.js");
|
|
5
|
+
(0, vitest_1.describe)('SortedArray', () => {
|
|
6
|
+
const ascendingComparator = (a, b) => a - b;
|
|
7
|
+
(0, vitest_1.it)('should insert items in accordance with comparator', () => {
|
|
8
|
+
const arr = new sorted_array_js_1.SortedArray([], ascendingComparator);
|
|
9
|
+
arr.insert(1);
|
|
10
|
+
arr.insert(2);
|
|
11
|
+
arr.insert(5);
|
|
12
|
+
arr.insert(3);
|
|
13
|
+
arr.insert(4);
|
|
14
|
+
(0, vitest_1.expect)(arr.raw).toEqual([1, 2, 3, 4, 5]);
|
|
15
|
+
});
|
|
16
|
+
(0, vitest_1.it)('should insert arrays', () => {
|
|
17
|
+
const arr = new sorted_array_js_1.SortedArray([], ascendingComparator);
|
|
18
|
+
arr.insert([1, 2, 5, 3, 4]);
|
|
19
|
+
(0, vitest_1.expect)(arr.raw).toEqual([1, 2, 3, 4, 5]);
|
|
20
|
+
});
|
|
21
|
+
(0, vitest_1.it)('should return length', () => {
|
|
22
|
+
const arr = new sorted_array_js_1.SortedArray([], ascendingComparator);
|
|
23
|
+
arr.insert(1);
|
|
24
|
+
arr.insert(2);
|
|
25
|
+
arr.insert(5);
|
|
26
|
+
(0, vitest_1.expect)(arr.length).toEqual(3);
|
|
27
|
+
});
|
|
28
|
+
(0, vitest_1.it)('should return index of the item', () => {
|
|
29
|
+
const arr = new sorted_array_js_1.SortedArray([], ascendingComparator);
|
|
30
|
+
arr.insert(1);
|
|
31
|
+
arr.insert(2);
|
|
32
|
+
arr.insert(5);
|
|
33
|
+
(0, vitest_1.expect)(arr.index(1)).toEqual(0);
|
|
34
|
+
(0, vitest_1.expect)(arr.index(2)).toEqual(1);
|
|
35
|
+
(0, vitest_1.expect)(arr.index(5)).toEqual(2);
|
|
36
|
+
(0, vitest_1.expect)(arr.index(10)).toEqual(-1);
|
|
37
|
+
});
|
|
38
|
+
(0, vitest_1.it)('should return closest index for an item not in the array', () => {
|
|
39
|
+
const arr = new sorted_array_js_1.SortedArray([], ascendingComparator);
|
|
40
|
+
arr.insert(1);
|
|
41
|
+
arr.insert(2);
|
|
42
|
+
arr.insert(5);
|
|
43
|
+
(0, vitest_1.expect)(arr.index(3, true)).toEqual(2);
|
|
44
|
+
(0, vitest_1.expect)(arr.index(4, true)).toEqual(2); // still 2, becuse left-hand side
|
|
45
|
+
(0, vitest_1.expect)(arr.index(6, true)).toEqual(3);
|
|
46
|
+
});
|
|
47
|
+
(0, vitest_1.it)('should remove items by value', () => {
|
|
48
|
+
const arr = new sorted_array_js_1.SortedArray([], ascendingComparator);
|
|
49
|
+
arr.insert(1);
|
|
50
|
+
arr.insert(2);
|
|
51
|
+
arr.insert(5);
|
|
52
|
+
arr.remove(2);
|
|
53
|
+
(0, vitest_1.expect)(arr.raw).toEqual([1, 5]);
|
|
54
|
+
});
|
|
55
|
+
(0, vitest_1.it)('should check if item is in array', () => {
|
|
56
|
+
const arr = new sorted_array_js_1.SortedArray([], ascendingComparator);
|
|
57
|
+
arr.insert(1);
|
|
58
|
+
arr.insert(2);
|
|
59
|
+
arr.insert(5);
|
|
60
|
+
(0, vitest_1.expect)(arr.includes(1)).toBeTruthy();
|
|
61
|
+
(0, vitest_1.expect)(arr.includes(2)).toBeTruthy();
|
|
62
|
+
(0, vitest_1.expect)(arr.includes(5)).toBeTruthy();
|
|
63
|
+
(0, vitest_1.expect)(arr.includes(10)).toBeFalsy();
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
//# sourceMappingURL=sorted-array.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sorted-array.test.js","sourceRoot":"","sources":["../../../src/utils/sorted-array.test.ts"],"names":[],"mappings":";;AAAA,mCAA6C;AAE7C,uDAA+C;AAE/C,IAAA,iBAAQ,EAAC,aAAa,EAAE,GAAG,EAAE;IACzB,MAAM,mBAAmB,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAA;IAE3D,IAAA,WAAE,EAAC,mDAAmD,EAAE,GAAG,EAAE;QACzD,MAAM,GAAG,GAAG,IAAI,6BAAW,CAAS,EAAE,EAAE,mBAAmB,CAAC,CAAA;QAE5D,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QACb,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QACb,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QACb,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QACb,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QAEb,IAAA,eAAM,EAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IAC5C,CAAC,CAAC,CAAA;IAEF,IAAA,WAAE,EAAC,sBAAsB,EAAE,GAAG,EAAE;QAC5B,MAAM,GAAG,GAAG,IAAI,6BAAW,CAAS,EAAE,EAAE,mBAAmB,CAAC,CAAA;QAE5D,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAE3B,IAAA,eAAM,EAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IAC5C,CAAC,CAAC,CAAA;IAEF,IAAA,WAAE,EAAC,sBAAsB,EAAE,GAAG,EAAE;QAC5B,MAAM,GAAG,GAAG,IAAI,6BAAW,CAAS,EAAE,EAAE,mBAAmB,CAAC,CAAA;QAE5D,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QACb,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QACb,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QAEb,IAAA,eAAM,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IACjC,CAAC,CAAC,CAAA;IAEF,IAAA,WAAE,EAAC,iCAAiC,EAAE,GAAG,EAAE;QACvC,MAAM,GAAG,GAAG,IAAI,6BAAW,CAAS,EAAE,EAAE,mBAAmB,CAAC,CAAA;QAE5D,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QACb,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QACb,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QAEb,IAAA,eAAM,EAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;QAC/B,IAAA,eAAM,EAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;QAC/B,IAAA,eAAM,EAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;QAC/B,IAAA,eAAM,EAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;IACrC,CAAC,CAAC,CAAA;IAEF,IAAA,WAAE,EAAC,0DAA0D,EAAE,GAAG,EAAE;QAChE,MAAM,GAAG,GAAG,IAAI,6BAAW,CAAS,EAAE,EAAE,mBAAmB,CAAC,CAAA;QAE5D,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QACb,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QACb,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QAEb,IAAA,eAAM,EAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;QACrC,IAAA,eAAM,EAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,CAAC,iCAAiC;QACvE,IAAA,eAAM,EAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IACzC,CAAC,CAAC,CAAA;IAEF,IAAA,WAAE,EAAC,8BAA8B,EAAE,GAAG,EAAE;QACpC,MAAM,GAAG,GAAG,IAAI,6BAAW,CAAS,EAAE,EAAE,mBAAmB,CAAC,CAAA;QAE5D,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QACb,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QACb,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QACb,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QAEb,IAAA,eAAM,EAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IACnC,CAAC,CAAC,CAAA;IAEF,IAAA,WAAE,EAAC,kCAAkC,EAAE,GAAG,EAAE;QACxC,MAAM,GAAG,GAAG,IAAI,6BAAW,CAAS,EAAE,EAAE,mBAAmB,CAAC,CAAA;QAE5D,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QACb,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QACb,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QAEb,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAA;QACpC,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAA;QACpC,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAA;QACpC,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,CAAA;IACxC,CAAC,CAAC,CAAA;AACN,CAAC,CAAC,CAAA","sourcesContent":["import { describe, expect, it } from 'vitest'\n\nimport { SortedArray } from './sorted-array.js'\n\ndescribe('SortedArray', () => {\n const ascendingComparator = (a: number, b: number) => a - b\n\n it('should insert items in accordance with comparator', () => {\n const arr = new SortedArray<number>([], ascendingComparator)\n\n arr.insert(1)\n arr.insert(2)\n arr.insert(5)\n arr.insert(3)\n arr.insert(4)\n\n expect(arr.raw).toEqual([1, 2, 3, 4, 5])\n })\n\n it('should insert arrays', () => {\n const arr = new SortedArray<number>([], ascendingComparator)\n\n arr.insert([1, 2, 5, 3, 4])\n\n expect(arr.raw).toEqual([1, 2, 3, 4, 5])\n })\n\n it('should return length', () => {\n const arr = new SortedArray<number>([], ascendingComparator)\n\n arr.insert(1)\n arr.insert(2)\n arr.insert(5)\n\n expect(arr.length).toEqual(3)\n })\n\n it('should return index of the item', () => {\n const arr = new SortedArray<number>([], ascendingComparator)\n\n arr.insert(1)\n arr.insert(2)\n arr.insert(5)\n\n expect(arr.index(1)).toEqual(0)\n expect(arr.index(2)).toEqual(1)\n expect(arr.index(5)).toEqual(2)\n expect(arr.index(10)).toEqual(-1)\n })\n\n it('should return closest index for an item not in the array', () => {\n const arr = new SortedArray<number>([], ascendingComparator)\n\n arr.insert(1)\n arr.insert(2)\n arr.insert(5)\n\n expect(arr.index(3, true)).toEqual(2)\n expect(arr.index(4, true)).toEqual(2) // still 2, becuse left-hand side\n expect(arr.index(6, true)).toEqual(3)\n })\n\n it('should remove items by value', () => {\n const arr = new SortedArray<number>([], ascendingComparator)\n\n arr.insert(1)\n arr.insert(2)\n arr.insert(5)\n arr.remove(2)\n\n expect(arr.raw).toEqual([1, 5])\n })\n\n it('should check if item is in array', () => {\n const arr = new SortedArray<number>([], ascendingComparator)\n\n arr.insert(1)\n arr.insert(2)\n arr.insert(5)\n\n expect(arr.includes(1)).toBeTruthy()\n expect(arr.includes(2)).toBeTruthy()\n expect(arr.includes(5)).toBeTruthy()\n expect(arr.includes(10)).toBeFalsy()\n })\n})\n"]}
|
|
@@ -18,10 +18,12 @@ function writeStringSession(writerMap, data) {
|
|
|
18
18
|
}
|
|
19
19
|
writer.uint8View[0] = version;
|
|
20
20
|
writer.pos += 1;
|
|
21
|
+
if (version >= 2 && data.primaryDcs.media !== data.primaryDcs.main) {
|
|
22
|
+
flags |= 4;
|
|
23
|
+
}
|
|
21
24
|
writer.int(flags);
|
|
22
25
|
writer.object(data.primaryDcs.main);
|
|
23
26
|
if (version >= 2 && data.primaryDcs.media !== data.primaryDcs.main) {
|
|
24
|
-
flags |= 4;
|
|
25
27
|
writer.object(data.primaryDcs.media);
|
|
26
28
|
}
|
|
27
29
|
if (data.self) {
|
|
@@ -59,7 +61,7 @@ function readStringSession(readerMap, data) {
|
|
|
59
61
|
}
|
|
60
62
|
const key = reader.bytes();
|
|
61
63
|
return {
|
|
62
|
-
version
|
|
64
|
+
version,
|
|
63
65
|
testMode,
|
|
64
66
|
primaryDcs: {
|
|
65
67
|
main: primaryDc,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"string-session.js","sourceRoot":"","sources":["../../../src/utils/string-session.ts"],"names":[],"mappings":";;;AACA,mDAO2B;AAG3B,gDAAmD;AAUnD,SAAgB,kBAAkB,CAAC,SAAsB,EAAE,IAAuB;IAC9E,MAAM,MAAM,GAAG,2BAAc,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;IAEnD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;IAE5B,IAAI,OAAO,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,EAAE;QAChC,MAAM,IAAI,0BAAe,CAAC,uCAAuC,OAAO,EAAE,CAAC,CAAA;KAC9E;IAED,IAAI,KAAK,GAAG,CAAC,CAAA;IAEb,IAAI,IAAI,CAAC,IAAI,EAAE;QACX,KAAK,IAAI,CAAC,CAAA;KACb;IAED,IAAI,IAAI,CAAC,QAAQ,EAAE;QACf,KAAK,IAAI,CAAC,CAAA;KACb;IAED,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,OAAO,CAAA;IAC7B,MAAM,CAAC,GAAG,IAAI,CAAC,CAAA;IAEf,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IACjB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;IAEnC,IAAI,OAAO,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;QAChE,
|
|
1
|
+
{"version":3,"file":"string-session.js","sourceRoot":"","sources":["../../../src/utils/string-session.ts"],"names":[],"mappings":"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","sourcesContent":["import { tl } from '@mtcute/tl'\nimport {\n base64DecodeToBuffer,\n base64Encode,\n TlBinaryReader,\n TlBinaryWriter,\n TlReaderMap,\n TlWriterMap,\n} from '@mtcute/tl-runtime'\n\nimport { ITelegramStorage } from '../storage/index.js'\nimport { MtArgumentError } from '../types/index.js'\n\nexport interface StringSessionData {\n version: number\n testMode: boolean\n primaryDcs: ITelegramStorage.DcOptions\n self?: ITelegramStorage.SelfInfo | null\n authKey: Uint8Array\n}\n\nexport function writeStringSession(writerMap: TlWriterMap, data: StringSessionData): string {\n const writer = TlBinaryWriter.alloc(writerMap, 512)\n\n const version = data.version\n\n if (version !== 1 && version !== 2) {\n throw new MtArgumentError(`Unsupported string session version: ${version}`)\n }\n\n let flags = 0\n\n if (data.self) {\n flags |= 1\n }\n\n if (data.testMode) {\n flags |= 2\n }\n\n writer.uint8View[0] = version\n writer.pos += 1\n\n if (version >= 2 && data.primaryDcs.media !== data.primaryDcs.main) {\n flags |= 4\n }\n\n writer.int(flags)\n writer.object(data.primaryDcs.main)\n\n if (version >= 2 && data.primaryDcs.media !== data.primaryDcs.main) {\n writer.object(data.primaryDcs.media)\n }\n\n if (data.self) {\n writer.int53(data.self.userId)\n writer.boolean(data.self.isBot)\n }\n\n writer.bytes(data.authKey)\n\n return base64Encode(writer.result(), true)\n}\n\nexport function readStringSession(readerMap: TlReaderMap, data: string): StringSessionData {\n const buf = base64DecodeToBuffer(data, true)\n\n const version = buf[0]\n\n if (version !== 1 && version !== 2) {\n throw new Error(`Invalid session string (version = ${version})`)\n }\n\n const reader = new TlBinaryReader(readerMap, buf, 1)\n\n const flags = reader.int()\n const hasSelf = flags & 1\n const testMode = Boolean(flags & 2)\n const hasMedia = version >= 2 && Boolean(flags & 4)\n\n const primaryDc = reader.object() as tl.TypeDcOption\n const primaryMediaDc = hasMedia ? (reader.object() as tl.TypeDcOption) : primaryDc\n\n if (primaryDc._ !== 'dcOption') {\n throw new MtArgumentError(`Invalid session string (dc._ = ${primaryDc._})`)\n }\n\n let self: ITelegramStorage.SelfInfo | null = null\n\n if (hasSelf) {\n const selfId = reader.int53()\n const selfBot = reader.boolean()\n\n self = {\n userId: selfId,\n isBot: selfBot,\n }\n }\n\n const key = reader.bytes()\n\n return {\n version,\n testMode,\n primaryDcs: {\n main: primaryDc,\n media: primaryMediaDc,\n },\n self,\n authKey: key,\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const test_1 = require("@mtcute/test");
|
|
5
|
+
const reader_js_1 = require("@mtcute/tl/binary/reader.js");
|
|
6
|
+
const writer_js_1 = require("@mtcute/tl/binary/writer.js");
|
|
7
|
+
const default_dcs_js_1 = require("./default-dcs.js");
|
|
8
|
+
const string_session_js_1 = require("./string-session.js");
|
|
9
|
+
const stubAuthKey = new Uint8Array(32);
|
|
10
|
+
const stubDcs = {
|
|
11
|
+
main: (0, test_1.createStub)('dcOption', default_dcs_js_1.defaultProductionDc.main),
|
|
12
|
+
media: (0, test_1.createStub)('dcOption', default_dcs_js_1.defaultProductionDc.media),
|
|
13
|
+
};
|
|
14
|
+
const stubDcsSameMedia = {
|
|
15
|
+
main: stubDcs.main,
|
|
16
|
+
media: stubDcs.main,
|
|
17
|
+
};
|
|
18
|
+
(0, vitest_1.describe)('writeStringSession', () => {
|
|
19
|
+
(0, vitest_1.it)('should write production string session without user', () => {
|
|
20
|
+
(0, vitest_1.expect)((0, string_session_js_1.writeStringSession)(writer_js_1.__tlWriterMap, {
|
|
21
|
+
version: 2,
|
|
22
|
+
testMode: false,
|
|
23
|
+
primaryDcs: stubDcs,
|
|
24
|
+
authKey: stubAuthKey,
|
|
25
|
+
})).toMatchInlineSnapshot('"AgQAAAANobcYAAAAAAIAAAAOMTQ5LjE1NC4xNjcuNTAAuwEAAA2htxgCAAAAAgAAAA8xNDkuMTU0LjE2Ny4yMjK7AQAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"');
|
|
26
|
+
});
|
|
27
|
+
(0, vitest_1.it)('should write production string session without user with same dc for media', () => {
|
|
28
|
+
(0, vitest_1.expect)((0, string_session_js_1.writeStringSession)(writer_js_1.__tlWriterMap, {
|
|
29
|
+
version: 2,
|
|
30
|
+
testMode: false,
|
|
31
|
+
primaryDcs: stubDcsSameMedia,
|
|
32
|
+
authKey: stubAuthKey,
|
|
33
|
+
})).toMatchInlineSnapshot('"AgAAAAANobcYAAAAAAIAAAAOMTQ5LjE1NC4xNjcuNTAAuwEAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"');
|
|
34
|
+
});
|
|
35
|
+
(0, vitest_1.it)('should write production string session with user', () => {
|
|
36
|
+
(0, vitest_1.expect)((0, string_session_js_1.writeStringSession)(writer_js_1.__tlWriterMap, {
|
|
37
|
+
version: 2,
|
|
38
|
+
testMode: false,
|
|
39
|
+
primaryDcs: stubDcs,
|
|
40
|
+
authKey: stubAuthKey,
|
|
41
|
+
self: { userId: 12345, isBot: false },
|
|
42
|
+
})).toMatchInlineSnapshot('"AgUAAAANobcYAAAAAAIAAAAOMTQ5LjE1NC4xNjcuNTAAuwEAAA2htxgCAAAAAgAAAA8xNDkuMTU0LjE2Ny4yMjK7AQAAOTAAAAAAAAA3l3m8IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"');
|
|
43
|
+
});
|
|
44
|
+
(0, vitest_1.it)('should write test dc string session with user', () => {
|
|
45
|
+
(0, vitest_1.expect)((0, string_session_js_1.writeStringSession)(writer_js_1.__tlWriterMap, {
|
|
46
|
+
version: 2,
|
|
47
|
+
testMode: true,
|
|
48
|
+
primaryDcs: stubDcs,
|
|
49
|
+
authKey: stubAuthKey,
|
|
50
|
+
self: { userId: 12345, isBot: false },
|
|
51
|
+
})).toMatchInlineSnapshot('"AgcAAAANobcYAAAAAAIAAAAOMTQ5LjE1NC4xNjcuNTAAuwEAAA2htxgCAAAAAgAAAA8xNDkuMTU0LjE2Ny4yMjK7AQAAOTAAAAAAAAA3l3m8IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"');
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
(0, vitest_1.describe)('readStringSession', () => {
|
|
55
|
+
(0, vitest_1.describe)('v2', () => {
|
|
56
|
+
(0, vitest_1.it)('should read production string session without user', () => {
|
|
57
|
+
(0, vitest_1.expect)((0, string_session_js_1.readStringSession)(reader_js_1.__tlReaderMap, 'AgQAAAANobcYAAAAAAIAAAAOMTQ5LjE1NC4xNjcuNTAAuwEAAA2htxgCAAAAAgAAAA8xNDkuMTU0LjE2Ny4yMjK7AQAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA')).toEqual({
|
|
58
|
+
version: 2,
|
|
59
|
+
testMode: false,
|
|
60
|
+
primaryDcs: stubDcs,
|
|
61
|
+
authKey: stubAuthKey,
|
|
62
|
+
self: null,
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
(0, vitest_1.it)('should read production string session without user with same dc for media', () => {
|
|
66
|
+
(0, vitest_1.expect)((0, string_session_js_1.readStringSession)(reader_js_1.__tlReaderMap, 'AgAAAAANobcYAAAAAAIAAAAOMTQ5LjE1NC4xNjcuNTAAuwEAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA')).toEqual({
|
|
67
|
+
version: 2,
|
|
68
|
+
testMode: false,
|
|
69
|
+
primaryDcs: stubDcsSameMedia,
|
|
70
|
+
authKey: stubAuthKey,
|
|
71
|
+
self: null,
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
(0, vitest_1.it)('should read production string session with user', () => {
|
|
75
|
+
(0, vitest_1.expect)((0, string_session_js_1.readStringSession)(reader_js_1.__tlReaderMap, 'AgUAAAANobcYAAAAAAIAAAAOMTQ5LjE1NC4xNjcuNTAAuwEAAA2htxgCAAAAAgAAAA8xNDkuMTU0LjE2Ny4yMjK7AQAAOTAAAAAAAAA3l3m8IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA')).toEqual({
|
|
76
|
+
version: 2,
|
|
77
|
+
testMode: false,
|
|
78
|
+
primaryDcs: stubDcs,
|
|
79
|
+
authKey: stubAuthKey,
|
|
80
|
+
self: { userId: 12345, isBot: false },
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
(0, vitest_1.it)('should read test dc string session with user', () => {
|
|
84
|
+
(0, vitest_1.expect)((0, string_session_js_1.readStringSession)(reader_js_1.__tlReaderMap, 'AgcAAAANobcYAAAAAAIAAAAOMTQ5LjE1NC4xNjcuNTAAuwEAAA2htxgCAAAAAgAAAA8xNDkuMTU0LjE2Ny4yMjK7AQAAOTAAAAAAAAA3l3m8IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA')).toEqual({
|
|
85
|
+
version: 2,
|
|
86
|
+
testMode: true,
|
|
87
|
+
primaryDcs: stubDcs,
|
|
88
|
+
authKey: stubAuthKey,
|
|
89
|
+
self: { userId: 12345, isBot: false },
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
(0, vitest_1.describe)('v1', () => {
|
|
94
|
+
(0, vitest_1.it)('should read string session with user', () => {
|
|
95
|
+
(0, vitest_1.expect)((0, string_session_js_1.readStringSession)(reader_js_1.__tlReaderMap, 'AQEAAAANobcYAAAAAAIAAAAOMTQ5LjE1NC4xNjcuNTAAuwEAADkwAAAAAAAAN5d5vCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA')).toEqual({
|
|
96
|
+
version: 1,
|
|
97
|
+
testMode: false,
|
|
98
|
+
// v1 didn't have separate media dc
|
|
99
|
+
primaryDcs: stubDcsSameMedia,
|
|
100
|
+
authKey: stubAuthKey,
|
|
101
|
+
self: { userId: 12345, isBot: false },
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
//# sourceMappingURL=string-session.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"string-session.test.js","sourceRoot":"","sources":["../../../src/utils/string-session.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { describe, expect, it } from 'vitest'\n\nimport { createStub } from '@mtcute/test'\nimport { __tlReaderMap } from '@mtcute/tl/binary/reader.js'\nimport { __tlWriterMap } from '@mtcute/tl/binary/writer.js'\n\nimport { defaultProductionDc } from './default-dcs.js'\nimport { readStringSession, writeStringSession } from './string-session.js'\n\nconst stubAuthKey = new Uint8Array(32)\nconst stubDcs = {\n main: createStub('dcOption', defaultProductionDc.main),\n media: createStub('dcOption', defaultProductionDc.media),\n}\nconst stubDcsSameMedia = {\n main: stubDcs.main,\n media: stubDcs.main,\n}\n\ndescribe('writeStringSession', () => {\n it('should write production string session without user', () => {\n expect(\n writeStringSession(__tlWriterMap, {\n version: 2,\n testMode: false,\n primaryDcs: stubDcs,\n authKey: stubAuthKey,\n }),\n ).toMatchInlineSnapshot(\n '\"AgQAAAANobcYAAAAAAIAAAAOMTQ5LjE1NC4xNjcuNTAAuwEAAA2htxgCAAAAAgAAAA8xNDkuMTU0LjE2Ny4yMjK7AQAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\"',\n )\n })\n it('should write production string session without user with same dc for media', () => {\n expect(\n writeStringSession(__tlWriterMap, {\n version: 2,\n testMode: false,\n primaryDcs: stubDcsSameMedia,\n authKey: stubAuthKey,\n }),\n ).toMatchInlineSnapshot(\n '\"AgAAAAANobcYAAAAAAIAAAAOMTQ5LjE1NC4xNjcuNTAAuwEAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\"',\n )\n })\n\n it('should write production string session with user', () => {\n expect(\n writeStringSession(__tlWriterMap, {\n version: 2,\n testMode: false,\n primaryDcs: stubDcs,\n authKey: stubAuthKey,\n self: { userId: 12345, isBot: false },\n }),\n ).toMatchInlineSnapshot(\n '\"AgUAAAANobcYAAAAAAIAAAAOMTQ5LjE1NC4xNjcuNTAAuwEAAA2htxgCAAAAAgAAAA8xNDkuMTU0LjE2Ny4yMjK7AQAAOTAAAAAAAAA3l3m8IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\"',\n )\n })\n\n it('should write test dc string session with user', () => {\n expect(\n writeStringSession(__tlWriterMap, {\n version: 2,\n testMode: true,\n primaryDcs: stubDcs,\n authKey: stubAuthKey,\n self: { userId: 12345, isBot: false },\n }),\n ).toMatchInlineSnapshot(\n '\"AgcAAAANobcYAAAAAAIAAAAOMTQ5LjE1NC4xNjcuNTAAuwEAAA2htxgCAAAAAgAAAA8xNDkuMTU0LjE2Ny4yMjK7AQAAOTAAAAAAAAA3l3m8IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\"',\n )\n })\n})\n\ndescribe('readStringSession', () => {\n describe('v2', () => {\n it('should read production string session without user', () => {\n expect(\n readStringSession(\n __tlReaderMap,\n 'AgQAAAANobcYAAAAAAIAAAAOMTQ5LjE1NC4xNjcuNTAAuwEAAA2htxgCAAAAAgAAAA8xNDkuMTU0LjE2Ny4yMjK7AQAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA',\n ),\n ).toEqual({\n version: 2,\n testMode: false,\n primaryDcs: stubDcs,\n authKey: stubAuthKey,\n self: null,\n })\n })\n\n it('should read production string session without user with same dc for media', () => {\n expect(\n readStringSession(\n __tlReaderMap,\n 'AgAAAAANobcYAAAAAAIAAAAOMTQ5LjE1NC4xNjcuNTAAuwEAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA',\n ),\n ).toEqual({\n version: 2,\n testMode: false,\n primaryDcs: stubDcsSameMedia,\n authKey: stubAuthKey,\n self: null,\n })\n })\n\n it('should read production string session with user', () => {\n expect(\n readStringSession(\n __tlReaderMap,\n 'AgUAAAANobcYAAAAAAIAAAAOMTQ5LjE1NC4xNjcuNTAAuwEAAA2htxgCAAAAAgAAAA8xNDkuMTU0LjE2Ny4yMjK7AQAAOTAAAAAAAAA3l3m8IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA',\n ),\n ).toEqual({\n version: 2,\n testMode: false,\n primaryDcs: stubDcs,\n authKey: stubAuthKey,\n self: { userId: 12345, isBot: false },\n })\n })\n\n it('should read test dc string session with user', () => {\n expect(\n readStringSession(\n __tlReaderMap,\n 'AgcAAAANobcYAAAAAAIAAAAOMTQ5LjE1NC4xNjcuNTAAuwEAAA2htxgCAAAAAgAAAA8xNDkuMTU0LjE2Ny4yMjK7AQAAOTAAAAAAAAA3l3m8IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA',\n ),\n ).toEqual({\n version: 2,\n testMode: true,\n primaryDcs: stubDcs,\n authKey: stubAuthKey,\n self: { userId: 12345, isBot: false },\n })\n })\n })\n\n describe('v1', () => {\n it('should read string session with user', () => {\n expect(\n readStringSession(\n __tlReaderMap,\n 'AQEAAAANobcYAAAAAAIAAAAOMTQ5LjE1NC4xNjcuNTAAuwEAADkwAAAAAAAAN5d5vCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA',\n ),\n ).toEqual({\n version: 1,\n testMode: false,\n // v1 didn't have separate media dc\n primaryDcs: stubDcsSameMedia,\n authKey: stubAuthKey,\n self: { userId: 12345, isBot: false },\n })\n })\n })\n})\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|