@mtcute/core 0.1.0
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/LICENSE +8 -0
- package/README.md +26 -0
- package/cjs/base-client.d.ts +297 -0
- package/cjs/base-client.js +324 -0
- package/cjs/base-client.js.map +1 -0
- package/cjs/index.d.ts +10 -0
- package/cjs/index.js +30 -0
- package/cjs/index.js.map +1 -0
- package/cjs/network/auth-key.d.ts +21 -0
- package/cjs/network/auth-key.js +101 -0
- package/cjs/network/auth-key.js.map +1 -0
- package/cjs/network/authorization.d.ts +9 -0
- package/cjs/network/authorization.js +332 -0
- package/cjs/network/authorization.js.map +1 -0
- package/cjs/network/config-manager.d.ts +33 -0
- package/cjs/network/config-manager.js +93 -0
- package/cjs/network/config-manager.js.map +1 -0
- package/cjs/network/index.d.ts +4 -0
- package/cjs/network/index.js +20 -0
- package/cjs/network/index.js.map +1 -0
- package/cjs/network/mtproto-session.d.ts +116 -0
- package/cjs/network/mtproto-session.js +209 -0
- package/cjs/network/mtproto-session.js.map +1 -0
- package/cjs/network/multi-session-connection.d.ts +33 -0
- package/cjs/network/multi-session-connection.js +243 -0
- package/cjs/network/multi-session-connection.js.map +1 -0
- package/cjs/network/network-manager.d.ts +190 -0
- package/cjs/network/network-manager.js +547 -0
- package/cjs/network/network-manager.js.map +1 -0
- package/cjs/network/persistent-connection.d.ts +51 -0
- package/cjs/network/persistent-connection.js +173 -0
- package/cjs/network/persistent-connection.js.map +1 -0
- package/cjs/network/reconnection.d.ts +11 -0
- package/cjs/network/reconnection.js +18 -0
- package/cjs/network/reconnection.js.map +1 -0
- package/cjs/network/session-connection.d.ts +72 -0
- package/cjs/network/session-connection.js +1363 -0
- package/cjs/network/session-connection.js.map +1 -0
- package/cjs/network/transports/abstract.d.ts +99 -0
- package/cjs/network/transports/abstract.js +38 -0
- package/cjs/network/transports/abstract.js.map +1 -0
- package/cjs/network/transports/index.d.ts +8 -0
- package/cjs/network/transports/index.js +26 -0
- package/cjs/network/transports/index.js.map +1 -0
- package/cjs/network/transports/intermediate.d.ts +20 -0
- package/cjs/network/transports/intermediate.js +67 -0
- package/cjs/network/transports/intermediate.js.map +1 -0
- package/cjs/network/transports/obfuscated.d.ts +18 -0
- package/cjs/network/transports/obfuscated.js +83 -0
- package/cjs/network/transports/obfuscated.js.map +1 -0
- package/cjs/network/transports/streamed.d.ts +24 -0
- package/cjs/network/transports/streamed.js +32 -0
- package/cjs/network/transports/streamed.js.map +1 -0
- package/cjs/network/transports/tcp.d.ts +33 -0
- package/cjs/network/transports/tcp.js +130 -0
- package/cjs/network/transports/tcp.js.map +1 -0
- package/cjs/network/transports/websocket.d.ts +47 -0
- package/cjs/network/transports/websocket.js +124 -0
- package/cjs/network/transports/websocket.js.map +1 -0
- package/cjs/network/transports/wrapped.d.ts +11 -0
- package/cjs/network/transports/wrapped.js +26 -0
- package/cjs/network/transports/wrapped.js.map +1 -0
- package/cjs/package.json +3 -0
- package/cjs/storage/abstract.d.ts +174 -0
- package/cjs/storage/abstract.js +3 -0
- package/cjs/storage/abstract.js.map +1 -0
- package/cjs/storage/index.d.ts +5 -0
- package/cjs/storage/index.js +22 -0
- package/cjs/storage/index.js.map +1 -0
- package/cjs/storage/json-file.d.ts +31 -0
- package/cjs/storage/json-file.js +90 -0
- package/cjs/storage/json-file.js.map +1 -0
- package/cjs/storage/json.d.ts +9 -0
- package/cjs/storage/json.js +65 -0
- package/cjs/storage/json.js.map +1 -0
- package/cjs/storage/localstorage.d.ts +7 -0
- package/cjs/storage/localstorage.js +25 -0
- package/cjs/storage/localstorage.js.map +1 -0
- package/cjs/storage/memory.d.ts +98 -0
- package/cjs/storage/memory.js +299 -0
- package/cjs/storage/memory.js.map +1 -0
- package/cjs/types/errors.d.ts +53 -0
- package/cjs/types/errors.js +58 -0
- package/cjs/types/errors.js.map +1 -0
- package/cjs/types/index.d.ts +3 -0
- package/cjs/types/index.js +20 -0
- package/cjs/types/index.js.map +1 -0
- package/cjs/types/peers.d.ts +4 -0
- package/cjs/types/peers.js +3 -0
- package/cjs/types/peers.js.map +1 -0
- package/cjs/types/utils.d.ts +6 -0
- package/cjs/types/utils.js +9 -0
- package/cjs/types/utils.js.map +1 -0
- package/cjs/utils/async-lock.d.ts +10 -0
- package/cjs/utils/async-lock.js +43 -0
- package/cjs/utils/async-lock.js.map +1 -0
- package/cjs/utils/bigint-utils.d.ts +40 -0
- package/cjs/utils/bigint-utils.js +104 -0
- package/cjs/utils/bigint-utils.js.map +1 -0
- package/cjs/utils/binary/asn1-parser.d.ts +17 -0
- package/cjs/utils/binary/asn1-parser.js +121 -0
- package/cjs/utils/binary/asn1-parser.js.map +1 -0
- package/cjs/utils/buffer-utils.d.ts +21 -0
- package/cjs/utils/buffer-utils.js +63 -0
- package/cjs/utils/buffer-utils.js.map +1 -0
- package/cjs/utils/condition-variable.d.ts +9 -0
- package/cjs/utils/condition-variable.js +28 -0
- package/cjs/utils/condition-variable.js.map +1 -0
- package/cjs/utils/controllable-promise.d.ts +16 -0
- package/cjs/utils/controllable-promise.js +25 -0
- package/cjs/utils/controllable-promise.js.map +1 -0
- package/cjs/utils/crypto/abstract.d.ts +23 -0
- package/cjs/utils/crypto/abstract.js +19 -0
- package/cjs/utils/crypto/abstract.js.map +1 -0
- package/cjs/utils/crypto/common.d.ts +12 -0
- package/cjs/utils/crypto/common.js +54 -0
- package/cjs/utils/crypto/common.js.map +1 -0
- package/cjs/utils/crypto/factorization.d.ts +5 -0
- package/cjs/utils/crypto/factorization.js +69 -0
- package/cjs/utils/crypto/factorization.js.map +1 -0
- package/cjs/utils/crypto/index.d.ts +5 -0
- package/cjs/utils/crypto/index.js +23 -0
- package/cjs/utils/crypto/index.js.map +1 -0
- package/cjs/utils/crypto/keys.d.ts +27 -0
- package/cjs/utils/crypto/keys.js +70 -0
- package/cjs/utils/crypto/keys.js.map +1 -0
- package/cjs/utils/crypto/miller-rabin.d.ts +2 -0
- package/cjs/utils/crypto/miller-rabin.js +44 -0
- package/cjs/utils/crypto/miller-rabin.js.map +1 -0
- package/cjs/utils/crypto/mtproto.d.ts +31 -0
- package/cjs/utils/crypto/mtproto.js +66 -0
- package/cjs/utils/crypto/mtproto.js.map +1 -0
- package/cjs/utils/crypto/node-crypto.d.ts +10 -0
- package/cjs/utils/crypto/node-crypto.js +46 -0
- package/cjs/utils/crypto/node-crypto.js.map +1 -0
- package/cjs/utils/crypto/password.d.ts +29 -0
- package/cjs/utils/crypto/password.js +106 -0
- package/cjs/utils/crypto/password.js.map +1 -0
- package/cjs/utils/crypto/subtle.d.ts +12 -0
- package/cjs/utils/crypto/subtle.js +86 -0
- package/cjs/utils/crypto/subtle.js.map +1 -0
- package/cjs/utils/crypto/utils.d.ts +14 -0
- package/cjs/utils/crypto/utils.js +30 -0
- package/cjs/utils/crypto/utils.js.map +1 -0
- package/cjs/utils/default-dcs.d.ts +7 -0
- package/cjs/utils/default-dcs.js +76 -0
- package/cjs/utils/default-dcs.js.map +1 -0
- package/cjs/utils/deque.d.ts +29 -0
- package/cjs/utils/deque.js +210 -0
- package/cjs/utils/deque.js.map +1 -0
- package/cjs/utils/early-timer.d.ts +42 -0
- package/cjs/utils/early-timer.js +79 -0
- package/cjs/utils/early-timer.js.map +1 -0
- package/cjs/utils/flood-control.d.ts +14 -0
- package/cjs/utils/flood-control.js +65 -0
- package/cjs/utils/flood-control.js.map +1 -0
- package/cjs/utils/function-utils.d.ts +13 -0
- package/cjs/utils/function-utils.js +30 -0
- package/cjs/utils/function-utils.js.map +1 -0
- package/cjs/utils/index.d.ts +24 -0
- package/cjs/utils/index.js +41 -0
- package/cjs/utils/index.js.map +1 -0
- package/cjs/utils/linked-list.d.ts +21 -0
- package/cjs/utils/linked-list.js +73 -0
- package/cjs/utils/linked-list.js.map +1 -0
- package/cjs/utils/links/bots.d.ts +71 -0
- package/cjs/utils/links/bots.js +259 -0
- package/cjs/utils/links/bots.js.map +1 -0
- package/cjs/utils/links/bundle.d.ts +7 -0
- package/cjs/utils/links/bundle.js +24 -0
- package/cjs/utils/links/bundle.js.map +1 -0
- package/cjs/utils/links/calls.d.ts +16 -0
- package/cjs/utils/links/calls.js +59 -0
- package/cjs/utils/links/calls.js.map +1 -0
- package/cjs/utils/links/chat.d.ts +46 -0
- package/cjs/utils/links/chat.js +160 -0
- package/cjs/utils/links/chat.js.map +1 -0
- package/cjs/utils/links/common.d.ts +31 -0
- package/cjs/utils/links/common.js +60 -0
- package/cjs/utils/links/common.js.map +1 -0
- package/cjs/utils/links/index.d.ts +2 -0
- package/cjs/utils/links/index.js +29 -0
- package/cjs/utils/links/index.js.map +1 -0
- package/cjs/utils/links/misc.d.ts +19 -0
- package/cjs/utils/links/misc.js +77 -0
- package/cjs/utils/links/misc.js.map +1 -0
- package/cjs/utils/links/proxy.d.ts +17 -0
- package/cjs/utils/links/proxy.js +61 -0
- package/cjs/utils/links/proxy.js.map +1 -0
- package/cjs/utils/links/stickers.d.ts +9 -0
- package/cjs/utils/links/stickers.js +28 -0
- package/cjs/utils/links/stickers.js.map +1 -0
- package/cjs/utils/links/user.d.ts +27 -0
- package/cjs/utils/links/user.js +81 -0
- package/cjs/utils/links/user.js.map +1 -0
- package/cjs/utils/logger.d.ts +54 -0
- package/cjs/utils/logger.js +158 -0
- package/cjs/utils/logger.js.map +1 -0
- package/cjs/utils/long-utils.d.ts +75 -0
- package/cjs/utils/long-utils.js +161 -0
- package/cjs/utils/long-utils.js.map +1 -0
- package/cjs/utils/lru-map.d.ts +21 -0
- package/cjs/utils/lru-map.js +107 -0
- package/cjs/utils/lru-map.js.map +1 -0
- package/cjs/utils/lru-set.d.ts +22 -0
- package/cjs/utils/lru-set.js +48 -0
- package/cjs/utils/lru-set.js.map +1 -0
- package/cjs/utils/misc-utils.d.ts +7 -0
- package/cjs/utils/misc-utils.js +15 -0
- package/cjs/utils/misc-utils.js.map +1 -0
- package/cjs/utils/peer-utils.d.ts +35 -0
- package/cjs/utils/peer-utils.js +188 -0
- package/cjs/utils/peer-utils.js.map +1 -0
- package/cjs/utils/platform/crypto.d.ts +1 -0
- package/cjs/utils/platform/crypto.js +8 -0
- package/cjs/utils/platform/crypto.js.map +1 -0
- package/cjs/utils/platform/crypto.web.d.ts +1 -0
- package/cjs/utils/platform/crypto.web.js +14 -0
- package/cjs/utils/platform/crypto.web.js.map +1 -0
- package/cjs/utils/platform/error-reporting.d.ts +3 -0
- package/cjs/utils/platform/error-reporting.js +22 -0
- package/cjs/utils/platform/error-reporting.js.map +1 -0
- package/cjs/utils/platform/logging.d.ts +1 -0
- package/cjs/utils/platform/logging.js +35 -0
- package/cjs/utils/platform/logging.js.map +1 -0
- package/cjs/utils/platform/logging.web.d.ts +1 -0
- package/cjs/utils/platform/logging.web.js +35 -0
- package/cjs/utils/platform/logging.web.js.map +1 -0
- package/cjs/utils/platform/random.d.ts +1 -0
- package/cjs/utils/platform/random.js +7 -0
- package/cjs/utils/platform/random.js.map +1 -0
- package/cjs/utils/platform/random.web.d.ts +1 -0
- package/cjs/utils/platform/random.web.js +10 -0
- package/cjs/utils/platform/random.web.js.map +1 -0
- package/cjs/utils/platform/transport.d.ts +1 -0
- package/cjs/utils/platform/transport.js +8 -0
- package/cjs/utils/platform/transport.js.map +1 -0
- package/cjs/utils/platform/transport.web.d.ts +1 -0
- package/cjs/utils/platform/transport.web.js +15 -0
- package/cjs/utils/platform/transport.web.js.map +1 -0
- package/cjs/utils/sorted-array.d.ts +17 -0
- package/cjs/utils/sorted-array.js +83 -0
- package/cjs/utils/sorted-array.js.map +1 -0
- package/cjs/utils/string-session.d.ts +11 -0
- package/cjs/utils/string-session.js +73 -0
- package/cjs/utils/string-session.js.map +1 -0
- package/cjs/utils/tl-json.d.ts +13 -0
- package/cjs/utils/tl-json.js +62 -0
- package/cjs/utils/tl-json.js.map +1 -0
- package/cjs/utils/type-assertions.d.ts +37 -0
- package/cjs/utils/type-assertions.js +70 -0
- package/cjs/utils/type-assertions.js.map +1 -0
- package/esm/base-client.d.ts +297 -0
- package/esm/base-client.js +317 -0
- package/esm/base-client.js.map +1 -0
- package/esm/index.d.ts +10 -0
- package/esm/index.js +11 -0
- package/esm/index.js.map +1 -0
- package/esm/network/auth-key.d.ts +21 -0
- package/esm/network/auth-key.js +97 -0
- package/esm/network/auth-key.js.map +1 -0
- package/esm/network/authorization.d.ts +9 -0
- package/esm/network/authorization.js +325 -0
- package/esm/network/authorization.js.map +1 -0
- package/esm/network/config-manager.d.ts +33 -0
- package/esm/network/config-manager.js +89 -0
- package/esm/network/config-manager.js.map +1 -0
- package/esm/network/index.d.ts +4 -0
- package/esm/network/index.js +4 -0
- package/esm/network/index.js.map +1 -0
- package/esm/network/mtproto-session.d.ts +116 -0
- package/esm/network/mtproto-session.js +202 -0
- package/esm/network/mtproto-session.js.map +1 -0
- package/esm/network/multi-session-connection.d.ts +33 -0
- package/esm/network/multi-session-connection.js +236 -0
- package/esm/network/multi-session-connection.js.map +1 -0
- package/esm/network/network-manager.d.ts +190 -0
- package/esm/network/network-manager.js +542 -0
- package/esm/network/network-manager.js.map +1 -0
- package/esm/network/persistent-connection.d.ts +51 -0
- package/esm/network/persistent-connection.js +166 -0
- package/esm/network/persistent-connection.js.map +1 -0
- package/esm/network/reconnection.d.ts +11 -0
- package/esm/network/reconnection.js +14 -0
- package/esm/network/reconnection.js.map +1 -0
- package/esm/network/session-connection.d.ts +72 -0
- package/esm/network/session-connection.js +1356 -0
- package/esm/network/session-connection.js.map +1 -0
- package/esm/network/transports/abstract.d.ts +99 -0
- package/esm/network/transports/abstract.js +34 -0
- package/esm/network/transports/abstract.js.map +1 -0
- package/esm/network/transports/index.d.ts +8 -0
- package/esm/network/transports/index.js +9 -0
- package/esm/network/transports/index.js.map +1 -0
- package/esm/network/transports/intermediate.d.ts +20 -0
- package/esm/network/transports/intermediate.js +62 -0
- package/esm/network/transports/intermediate.js.map +1 -0
- package/esm/network/transports/obfuscated.d.ts +18 -0
- package/esm/network/transports/obfuscated.js +79 -0
- package/esm/network/transports/obfuscated.js.map +1 -0
- package/esm/network/transports/streamed.d.ts +24 -0
- package/esm/network/transports/streamed.js +25 -0
- package/esm/network/transports/streamed.js.map +1 -0
- package/esm/network/transports/tcp.d.ts +33 -0
- package/esm/network/transports/tcp.js +122 -0
- package/esm/network/transports/tcp.js.map +1 -0
- package/esm/network/transports/websocket.d.ts +47 -0
- package/esm/network/transports/websocket.js +116 -0
- package/esm/network/transports/websocket.js.map +1 -0
- package/esm/network/transports/wrapped.d.ts +11 -0
- package/esm/network/transports/wrapped.js +19 -0
- package/esm/network/transports/wrapped.js.map +1 -0
- package/esm/storage/abstract.d.ts +174 -0
- package/esm/storage/abstract.js +2 -0
- package/esm/storage/abstract.js.map +1 -0
- package/esm/storage/index.d.ts +5 -0
- package/esm/storage/index.js +6 -0
- package/esm/storage/index.js.map +1 -0
- package/esm/storage/json-file.d.ts +31 -0
- package/esm/storage/json-file.js +63 -0
- package/esm/storage/json-file.js.map +1 -0
- package/esm/storage/json.d.ts +9 -0
- package/esm/storage/json.js +61 -0
- package/esm/storage/json.js.map +1 -0
- package/esm/storage/localstorage.d.ts +7 -0
- package/esm/storage/localstorage.js +21 -0
- package/esm/storage/localstorage.js.map +1 -0
- package/esm/storage/memory.d.ts +98 -0
- package/esm/storage/memory.js +295 -0
- package/esm/storage/memory.js.map +1 -0
- package/esm/types/errors.d.ts +53 -0
- package/esm/types/errors.js +49 -0
- package/esm/types/errors.js.map +1 -0
- package/esm/types/index.d.ts +3 -0
- package/esm/types/index.js +4 -0
- package/esm/types/index.js.map +1 -0
- package/esm/types/peers.d.ts +4 -0
- package/esm/types/peers.js +2 -0
- package/esm/types/peers.js.map +1 -0
- package/esm/types/utils.d.ts +6 -0
- package/esm/types/utils.js +5 -0
- package/esm/types/utils.js.map +1 -0
- package/esm/utils/async-lock.d.ts +10 -0
- package/esm/utils/async-lock.js +39 -0
- package/esm/utils/async-lock.js.map +1 -0
- package/esm/utils/bigint-utils.d.ts +40 -0
- package/esm/utils/bigint-utils.js +92 -0
- package/esm/utils/bigint-utils.js.map +1 -0
- package/esm/utils/binary/asn1-parser.d.ts +17 -0
- package/esm/utils/binary/asn1-parser.js +116 -0
- package/esm/utils/binary/asn1-parser.js.map +1 -0
- package/esm/utils/buffer-utils.d.ts +21 -0
- package/esm/utils/buffer-utils.js +55 -0
- package/esm/utils/buffer-utils.js.map +1 -0
- package/esm/utils/condition-variable.d.ts +9 -0
- package/esm/utils/condition-variable.js +24 -0
- package/esm/utils/condition-variable.js.map +1 -0
- package/esm/utils/controllable-promise.d.ts +16 -0
- package/esm/utils/controllable-promise.js +20 -0
- package/esm/utils/controllable-promise.js.map +1 -0
- package/esm/utils/crypto/abstract.d.ts +23 -0
- package/esm/utils/crypto/abstract.js +15 -0
- package/esm/utils/crypto/abstract.js.map +1 -0
- package/esm/utils/crypto/common.d.ts +12 -0
- package/esm/utils/crypto/common.js +50 -0
- package/esm/utils/crypto/common.js.map +1 -0
- package/esm/utils/crypto/factorization.d.ts +5 -0
- package/esm/utils/crypto/factorization.js +62 -0
- package/esm/utils/crypto/factorization.js.map +1 -0
- package/esm/utils/crypto/index.d.ts +5 -0
- package/esm/utils/crypto/index.js +6 -0
- package/esm/utils/crypto/index.js.map +1 -0
- package/esm/utils/crypto/keys.d.ts +27 -0
- package/esm/utils/crypto/keys.js +64 -0
- package/esm/utils/crypto/keys.js.map +1 -0
- package/esm/utils/crypto/miller-rabin.d.ts +2 -0
- package/esm/utils/crypto/miller-rabin.js +37 -0
- package/esm/utils/crypto/miller-rabin.js.map +1 -0
- package/esm/utils/crypto/mtproto.d.ts +31 -0
- package/esm/utils/crypto/mtproto.js +60 -0
- package/esm/utils/crypto/mtproto.js.map +1 -0
- package/esm/utils/crypto/node-crypto.d.ts +10 -0
- package/esm/utils/crypto/node-crypto.js +42 -0
- package/esm/utils/crypto/node-crypto.js.map +1 -0
- package/esm/utils/crypto/password.d.ts +29 -0
- package/esm/utils/crypto/password.js +97 -0
- package/esm/utils/crypto/password.js.map +1 -0
- package/esm/utils/crypto/subtle.d.ts +12 -0
- package/esm/utils/crypto/subtle.js +59 -0
- package/esm/utils/crypto/subtle.js.map +1 -0
- package/esm/utils/crypto/utils.d.ts +14 -0
- package/esm/utils/crypto/utils.js +25 -0
- package/esm/utils/crypto/utils.js.map +1 -0
- package/esm/utils/default-dcs.d.ts +7 -0
- package/esm/utils/default-dcs.js +73 -0
- package/esm/utils/default-dcs.js.map +1 -0
- package/esm/utils/deque.d.ts +29 -0
- package/esm/utils/deque.js +206 -0
- package/esm/utils/deque.js.map +1 -0
- package/esm/utils/early-timer.d.ts +42 -0
- package/esm/utils/early-timer.js +75 -0
- package/esm/utils/early-timer.js.map +1 -0
- package/esm/utils/flood-control.d.ts +14 -0
- package/esm/utils/flood-control.js +61 -0
- package/esm/utils/flood-control.js.map +1 -0
- package/esm/utils/function-utils.d.ts +13 -0
- package/esm/utils/function-utils.js +26 -0
- package/esm/utils/function-utils.js.map +1 -0
- package/esm/utils/index.d.ts +24 -0
- package/esm/utils/index.js +25 -0
- package/esm/utils/index.js.map +1 -0
- package/esm/utils/linked-list.d.ts +21 -0
- package/esm/utils/linked-list.js +69 -0
- package/esm/utils/linked-list.js.map +1 -0
- package/esm/utils/links/bots.d.ts +71 -0
- package/esm/utils/links/bots.js +256 -0
- package/esm/utils/links/bots.js.map +1 -0
- package/esm/utils/links/bundle.d.ts +7 -0
- package/esm/utils/links/bundle.js +8 -0
- package/esm/utils/links/bundle.js.map +1 -0
- package/esm/utils/links/calls.d.ts +16 -0
- package/esm/utils/links/calls.js +56 -0
- package/esm/utils/links/calls.js.map +1 -0
- package/esm/utils/links/chat.d.ts +46 -0
- package/esm/utils/links/chat.js +157 -0
- package/esm/utils/links/chat.js.map +1 -0
- package/esm/utils/links/common.d.ts +31 -0
- package/esm/utils/links/common.js +56 -0
- package/esm/utils/links/common.js.map +1 -0
- package/esm/utils/links/index.d.ts +2 -0
- package/esm/utils/links/index.js +3 -0
- package/esm/utils/links/index.js.map +1 -0
- package/esm/utils/links/misc.d.ts +19 -0
- package/esm/utils/links/misc.js +74 -0
- package/esm/utils/links/misc.js.map +1 -0
- package/esm/utils/links/proxy.d.ts +17 -0
- package/esm/utils/links/proxy.js +58 -0
- package/esm/utils/links/proxy.js.map +1 -0
- package/esm/utils/links/stickers.d.ts +9 -0
- package/esm/utils/links/stickers.js +25 -0
- package/esm/utils/links/stickers.js.map +1 -0
- package/esm/utils/links/user.d.ts +27 -0
- package/esm/utils/links/user.js +78 -0
- package/esm/utils/links/user.js.map +1 -0
- package/esm/utils/logger.d.ts +54 -0
- package/esm/utils/logger.js +154 -0
- package/esm/utils/logger.js.map +1 -0
- package/esm/utils/long-utils.d.ts +75 -0
- package/esm/utils/long-utils.js +148 -0
- package/esm/utils/long-utils.js.map +1 -0
- package/esm/utils/lru-map.d.ts +21 -0
- package/esm/utils/lru-map.js +103 -0
- package/esm/utils/lru-map.js.map +1 -0
- package/esm/utils/lru-set.d.ts +22 -0
- package/esm/utils/lru-set.js +44 -0
- package/esm/utils/lru-set.js.map +1 -0
- package/esm/utils/misc-utils.d.ts +7 -0
- package/esm/utils/misc-utils.js +10 -0
- package/esm/utils/misc-utils.js.map +1 -0
- package/esm/utils/peer-utils.d.ts +35 -0
- package/esm/utils/peer-utils.js +179 -0
- package/esm/utils/peer-utils.js.map +1 -0
- package/esm/utils/platform/crypto.d.ts +1 -0
- package/esm/utils/platform/crypto.js +4 -0
- package/esm/utils/platform/crypto.js.map +1 -0
- package/esm/utils/platform/crypto.web.d.ts +1 -0
- package/esm/utils/platform/crypto.web.js +10 -0
- package/esm/utils/platform/crypto.web.js.map +1 -0
- package/esm/utils/platform/error-reporting.d.ts +3 -0
- package/esm/utils/platform/error-reporting.js +18 -0
- package/esm/utils/platform/error-reporting.js.map +1 -0
- package/esm/utils/platform/logging.d.ts +1 -0
- package/esm/utils/platform/logging.js +32 -0
- package/esm/utils/platform/logging.js.map +1 -0
- package/esm/utils/platform/logging.web.d.ts +1 -0
- package/esm/utils/platform/logging.web.js +31 -0
- package/esm/utils/platform/logging.web.js.map +1 -0
- package/esm/utils/platform/random.d.ts +1 -0
- package/esm/utils/platform/random.js +4 -0
- package/esm/utils/platform/random.js.map +1 -0
- package/esm/utils/platform/random.web.d.ts +1 -0
- package/esm/utils/platform/random.web.js +6 -0
- package/esm/utils/platform/random.web.js.map +1 -0
- package/esm/utils/platform/transport.d.ts +1 -0
- package/esm/utils/platform/transport.js +4 -0
- package/esm/utils/platform/transport.js.map +1 -0
- package/esm/utils/platform/transport.web.d.ts +1 -0
- package/esm/utils/platform/transport.web.js +12 -0
- package/esm/utils/platform/transport.web.js.map +1 -0
- package/esm/utils/sorted-array.d.ts +17 -0
- package/esm/utils/sorted-array.js +79 -0
- package/esm/utils/sorted-array.js.map +1 -0
- package/esm/utils/string-session.d.ts +11 -0
- package/esm/utils/string-session.js +68 -0
- package/esm/utils/string-session.js.map +1 -0
- package/esm/utils/tl-json.d.ts +13 -0
- package/esm/utils/tl-json.js +57 -0
- package/esm/utils/tl-json.js.map +1 -0
- package/esm/utils/type-assertions.d.ts +37 -0
- package/esm/utils/type-assertions.js +61 -0
- package/esm/utils/type-assertions.js.map +1 -0
- package/package.json +50 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
interface LinkedListItem<T> {
|
|
2
|
+
v: T;
|
|
3
|
+
n?: LinkedListItem<T>;
|
|
4
|
+
p?: LinkedListItem<T>;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* A sorted linked list.
|
|
8
|
+
*/
|
|
9
|
+
export declare class SortedLinkedList<T> {
|
|
10
|
+
private comparator;
|
|
11
|
+
_first?: LinkedListItem<T>;
|
|
12
|
+
_last?: LinkedListItem<T>;
|
|
13
|
+
_size: number;
|
|
14
|
+
constructor(comparator: (a: T, b: T) => number);
|
|
15
|
+
get length(): number;
|
|
16
|
+
_remove(item: LinkedListItem<T>): void;
|
|
17
|
+
popFront(): T | undefined;
|
|
18
|
+
add(item: T): void;
|
|
19
|
+
clear(): void;
|
|
20
|
+
}
|
|
21
|
+
export {};
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A sorted linked list.
|
|
3
|
+
*/
|
|
4
|
+
export class SortedLinkedList {
|
|
5
|
+
constructor(comparator) {
|
|
6
|
+
this.comparator = comparator;
|
|
7
|
+
this._size = 0;
|
|
8
|
+
}
|
|
9
|
+
get length() {
|
|
10
|
+
return this._size;
|
|
11
|
+
}
|
|
12
|
+
_remove(item) {
|
|
13
|
+
if (this._first === item) {
|
|
14
|
+
this._first = item.n;
|
|
15
|
+
}
|
|
16
|
+
if (this._last === item) {
|
|
17
|
+
this._last = item.p;
|
|
18
|
+
}
|
|
19
|
+
if (item.p)
|
|
20
|
+
item.p.n = item.n;
|
|
21
|
+
if (item.n)
|
|
22
|
+
item.n.p = item.p;
|
|
23
|
+
this._size -= 1;
|
|
24
|
+
}
|
|
25
|
+
popFront() {
|
|
26
|
+
if (!this._first)
|
|
27
|
+
return undefined;
|
|
28
|
+
const it = this._first;
|
|
29
|
+
this._first = this._first.n;
|
|
30
|
+
if (!this._first)
|
|
31
|
+
this._last = undefined;
|
|
32
|
+
this._size -= 1;
|
|
33
|
+
return it.v;
|
|
34
|
+
}
|
|
35
|
+
add(item) {
|
|
36
|
+
const it = { v: item };
|
|
37
|
+
if (!this._first) {
|
|
38
|
+
this._first = this._last = it;
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
let cur = this._first;
|
|
42
|
+
while (cur && this.comparator(cur.v, it.v) < 0) {
|
|
43
|
+
cur = cur.n;
|
|
44
|
+
}
|
|
45
|
+
if (!cur) {
|
|
46
|
+
// reached end, the item should be new last
|
|
47
|
+
this._last.n = it;
|
|
48
|
+
it.p = this._last;
|
|
49
|
+
this._last = it;
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
// `cur` is the first item greater or equal than the given
|
|
53
|
+
it.n = cur;
|
|
54
|
+
it.p = cur.p;
|
|
55
|
+
if (cur.p)
|
|
56
|
+
cur.p.n = it;
|
|
57
|
+
cur.p = it;
|
|
58
|
+
if (cur === this._first)
|
|
59
|
+
this._first = it;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
this._size += 1;
|
|
63
|
+
}
|
|
64
|
+
clear() {
|
|
65
|
+
this._first = this._last = undefined;
|
|
66
|
+
this._size = 0;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=linked-list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linked-list.js","sourceRoot":"","sources":["../../../src/utils/linked-list.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,MAAM,OAAO,gBAAgB;IAKzB,YAAoB,UAAkC;QAAlC,eAAU,GAAV,UAAU,CAAwB;QAFtD,UAAK,GAAG,CAAC,CAAA;IAEgD,CAAC;IAE1D,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,KAAK,CAAA;IACrB,CAAC;IAED,OAAO,CAAC,IAAuB;QAC3B,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE;YACtB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAA;SACvB;QAED,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE;YACrB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAA;SACtB;QAED,IAAI,IAAI,CAAC,CAAC;YAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAA;QAC7B,IAAI,IAAI,CAAC,CAAC;YAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAA;QAE7B,IAAI,CAAC,KAAK,IAAI,CAAC,CAAA;IACnB,CAAC;IAED,QAAQ;QACJ,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO,SAAS,CAAA;QAElC,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAA;QACtB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;QAC3B,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,IAAI,CAAC,KAAK,GAAG,SAAS,CAAA;QAExC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAA;QAEf,OAAO,EAAE,CAAC,CAAC,CAAA;IACf,CAAC;IAED,GAAG,CAAC,IAAO;QACP,MAAM,EAAE,GAAsB,EAAE,CAAC,EAAE,IAAI,EAAE,CAAA;QAEzC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YACd,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE,CAAA;SAChC;aAAM;YACH,IAAI,GAAG,GAAkC,IAAI,CAAC,MAAM,CAAA;YAEpD,OAAO,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;gBAC5C,GAAG,GAAG,GAAG,CAAC,CAAC,CAAA;aACd;YAED,IAAI,CAAC,GAAG,EAAE;gBACN,2CAA2C;gBAE3C,IAAI,CAAC,KAAM,CAAC,CAAC,GAAG,EAAE,CAAA;gBAClB,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAA;gBACjB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAA;aAClB;iBAAM;gBACH,0DAA0D;gBAC1D,EAAE,CAAC,CAAC,GAAG,GAAG,CAAA;gBACV,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAA;gBACZ,IAAI,GAAG,CAAC,CAAC;oBAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAA;gBACvB,GAAG,CAAC,CAAC,GAAG,EAAE,CAAA;gBAEV,IAAI,GAAG,KAAK,IAAI,CAAC,MAAM;oBAAE,IAAI,CAAC,MAAM,GAAG,EAAE,CAAA;aAC5C;SACJ;QAED,IAAI,CAAC,KAAK,IAAI,CAAC,CAAA;IACnB,CAAC;IAED,KAAK;QACD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,GAAG,SAAS,CAAA;QACpC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAA;IAClB,CAAC;CACJ","sourcesContent":["interface LinkedListItem<T> {\n v: T\n n?: LinkedListItem<T>\n p?: LinkedListItem<T>\n}\n\n/**\n * A sorted linked list.\n */\nexport class SortedLinkedList<T> {\n _first?: LinkedListItem<T>\n _last?: LinkedListItem<T>\n _size = 0\n\n constructor(private comparator: (a: T, b: T) => number) {}\n\n get length(): number {\n return this._size\n }\n\n _remove(item: LinkedListItem<T>): void {\n if (this._first === item) {\n this._first = item.n\n }\n\n if (this._last === item) {\n this._last = item.p\n }\n\n if (item.p) item.p.n = item.n\n if (item.n) item.n.p = item.p\n\n this._size -= 1\n }\n\n popFront(): T | undefined {\n if (!this._first) return undefined\n\n const it = this._first\n this._first = this._first.n\n if (!this._first) this._last = undefined\n\n this._size -= 1\n\n return it.v\n }\n\n add(item: T): void {\n const it: LinkedListItem<T> = { v: item }\n\n if (!this._first) {\n this._first = this._last = it\n } else {\n let cur: LinkedListItem<T> | undefined = this._first\n\n while (cur && this.comparator(cur.v, it.v) < 0) {\n cur = cur.n\n }\n\n if (!cur) {\n // reached end, the item should be new last\n\n this._last!.n = it\n it.p = this._last\n this._last = it\n } else {\n // `cur` is the first item greater or equal than the given\n it.n = cur\n it.p = cur.p\n if (cur.p) cur.p.n = it\n cur.p = it\n\n if (cur === this._first) this._first = it\n }\n }\n\n this._size += 1\n }\n\n clear(): void {\n this._first = this._last = undefined\n this._size = 0\n }\n}\n"]}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { tl } from '@mtcute/tl';
|
|
2
|
+
/**
|
|
3
|
+
* Bot deeplinks
|
|
4
|
+
*
|
|
5
|
+
* Used to link to bots with a start parameter
|
|
6
|
+
*/
|
|
7
|
+
export declare const botStart: import("./common.js").Deeplink<{
|
|
8
|
+
/** Bot username */
|
|
9
|
+
username: string;
|
|
10
|
+
/** Start parameter */
|
|
11
|
+
parameter: string;
|
|
12
|
+
}>;
|
|
13
|
+
type BotAdminRight = Exclude<keyof tl.RawChatAdminRights, '_'>;
|
|
14
|
+
/**
|
|
15
|
+
* Bot add to group links
|
|
16
|
+
*
|
|
17
|
+
* Used to ask the user to add a bot to a group, optionally asking for admin rights.
|
|
18
|
+
* Note that the user is still free to choose which rights to grant, and
|
|
19
|
+
* whether to grant them at all.
|
|
20
|
+
*/
|
|
21
|
+
export declare const botAddToGroup: import("./common.js").Deeplink<{
|
|
22
|
+
/** Bot username */
|
|
23
|
+
bot: string;
|
|
24
|
+
/** If specified, the client will call `/start parameter` on the bot once the bot has been added */
|
|
25
|
+
parameter?: string | undefined;
|
|
26
|
+
/** Admin rights to request */
|
|
27
|
+
admin?: BotAdminRight[] | undefined;
|
|
28
|
+
}>;
|
|
29
|
+
/**
|
|
30
|
+
* Bot add to channel links
|
|
31
|
+
*
|
|
32
|
+
* Used to ask the user to add a bot to a channel, optionally with admin rights.
|
|
33
|
+
* Note that the user is still free to choose which rights to grant, and
|
|
34
|
+
* whether to grant them at all.
|
|
35
|
+
*/
|
|
36
|
+
export declare const botAddToChannel: import("./common.js").Deeplink<{
|
|
37
|
+
/** Bot username */
|
|
38
|
+
bot: string;
|
|
39
|
+
/** Admin rights to request */
|
|
40
|
+
admin?: BotAdminRight[] | undefined;
|
|
41
|
+
}>;
|
|
42
|
+
/**
|
|
43
|
+
* Game links
|
|
44
|
+
*
|
|
45
|
+
* Used to share games.
|
|
46
|
+
*/
|
|
47
|
+
export declare const botGame: import("./common.js").Deeplink<{
|
|
48
|
+
/** Bot username */
|
|
49
|
+
bot: string;
|
|
50
|
+
/** Game short name */
|
|
51
|
+
game: string;
|
|
52
|
+
}>;
|
|
53
|
+
/**
|
|
54
|
+
* Named bot web app links
|
|
55
|
+
*
|
|
56
|
+
* Used to share named bot web apps.
|
|
57
|
+
*
|
|
58
|
+
* These links are different from bot attachment menu deep links,
|
|
59
|
+
* because they don't require the user to install an attachment menu,
|
|
60
|
+
* and a single bot can offer multiple named web apps, distinguished by
|
|
61
|
+
* their `short_name`.
|
|
62
|
+
*/
|
|
63
|
+
export declare const botWebApp: import("./common.js").Deeplink<{
|
|
64
|
+
/** Bot username */
|
|
65
|
+
bot: string;
|
|
66
|
+
/** App short name */
|
|
67
|
+
app: string;
|
|
68
|
+
/** Parameter to be passed by the client to messages.requestAppWebView as `start_param` */
|
|
69
|
+
parameter?: string | undefined;
|
|
70
|
+
}>;
|
|
71
|
+
export {};
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
import { isPresent } from '../type-assertions.js';
|
|
2
|
+
import { deeplinkBuilder } from './common.js';
|
|
3
|
+
/**
|
|
4
|
+
* Bot deeplinks
|
|
5
|
+
*
|
|
6
|
+
* Used to link to bots with a start parameter
|
|
7
|
+
*/
|
|
8
|
+
export const botStart = deeplinkBuilder({
|
|
9
|
+
internalBuild: ({ username, parameter }) => ['resolve', { domain: username, start: parameter }],
|
|
10
|
+
internalParse: (path, query) => {
|
|
11
|
+
if (path !== 'resolve')
|
|
12
|
+
return null;
|
|
13
|
+
const username = query.get('domain');
|
|
14
|
+
const parameter = query.get('start');
|
|
15
|
+
if (!username || !parameter)
|
|
16
|
+
return null;
|
|
17
|
+
return { username, parameter };
|
|
18
|
+
},
|
|
19
|
+
externalBuild: ({ username, parameter }) => [username, { start: parameter }],
|
|
20
|
+
externalParse: (path, query) => {
|
|
21
|
+
if (path.includes('/') || path[0] === '+' || path.length <= 2)
|
|
22
|
+
return null;
|
|
23
|
+
const username = path;
|
|
24
|
+
const parameter = query.get('start');
|
|
25
|
+
if (!parameter)
|
|
26
|
+
return null;
|
|
27
|
+
return { username, parameter };
|
|
28
|
+
},
|
|
29
|
+
});
|
|
30
|
+
function normalizeBotAdmin(rights) {
|
|
31
|
+
if (!rights?.length)
|
|
32
|
+
return;
|
|
33
|
+
return rights
|
|
34
|
+
.map((it) => {
|
|
35
|
+
switch (it) {
|
|
36
|
+
case 'changeInfo':
|
|
37
|
+
return 'change_info';
|
|
38
|
+
case 'postMessages':
|
|
39
|
+
return 'post_messages';
|
|
40
|
+
case 'editMessages':
|
|
41
|
+
return 'edit_messages';
|
|
42
|
+
case 'deleteMessages':
|
|
43
|
+
return 'delete_messages';
|
|
44
|
+
case 'banUsers':
|
|
45
|
+
return 'restrict_members';
|
|
46
|
+
case 'inviteUsers':
|
|
47
|
+
return 'invite_users';
|
|
48
|
+
case 'pinMessages':
|
|
49
|
+
return 'pin_messages';
|
|
50
|
+
case 'manageTopics':
|
|
51
|
+
return 'manage_topics';
|
|
52
|
+
case 'addAdmins':
|
|
53
|
+
return 'promote_members';
|
|
54
|
+
case 'manageCall':
|
|
55
|
+
return 'manage_video_chats';
|
|
56
|
+
case 'anonymous':
|
|
57
|
+
return 'anonymous';
|
|
58
|
+
case 'other':
|
|
59
|
+
return 'manage_chat';
|
|
60
|
+
case 'postStories':
|
|
61
|
+
return 'post_stories';
|
|
62
|
+
case 'editStories':
|
|
63
|
+
return 'edit_stories';
|
|
64
|
+
case 'deleteStories':
|
|
65
|
+
return 'delete_stories';
|
|
66
|
+
}
|
|
67
|
+
})
|
|
68
|
+
.join('+');
|
|
69
|
+
}
|
|
70
|
+
function parseBotAdmin(rights) {
|
|
71
|
+
if (!rights)
|
|
72
|
+
return;
|
|
73
|
+
return rights
|
|
74
|
+
.split('+')
|
|
75
|
+
.map((it) => {
|
|
76
|
+
switch (it) {
|
|
77
|
+
case 'change_info':
|
|
78
|
+
return 'changeInfo';
|
|
79
|
+
case 'post_messages':
|
|
80
|
+
return 'postMessages';
|
|
81
|
+
case 'edit_messages':
|
|
82
|
+
return 'editMessages';
|
|
83
|
+
case 'delete_messages':
|
|
84
|
+
return 'deleteMessages';
|
|
85
|
+
case 'restrict_members':
|
|
86
|
+
return 'banUsers';
|
|
87
|
+
case 'invite_users':
|
|
88
|
+
return 'inviteUsers';
|
|
89
|
+
case 'pin_messages':
|
|
90
|
+
return 'pinMessages';
|
|
91
|
+
case 'manage_topics':
|
|
92
|
+
return 'manageTopics';
|
|
93
|
+
case 'promote_members':
|
|
94
|
+
return 'addAdmins';
|
|
95
|
+
case 'manage_video_chats':
|
|
96
|
+
return 'manageCall';
|
|
97
|
+
case 'anonymous':
|
|
98
|
+
return 'anonymous';
|
|
99
|
+
case 'manage_chat':
|
|
100
|
+
return 'other';
|
|
101
|
+
case 'post_stories':
|
|
102
|
+
return 'postStories';
|
|
103
|
+
case 'edit_stories':
|
|
104
|
+
return 'editStories';
|
|
105
|
+
case 'delete_stories':
|
|
106
|
+
return 'deleteStories';
|
|
107
|
+
default:
|
|
108
|
+
return null;
|
|
109
|
+
}
|
|
110
|
+
})
|
|
111
|
+
.filter(isPresent);
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Bot add to group links
|
|
115
|
+
*
|
|
116
|
+
* Used to ask the user to add a bot to a group, optionally asking for admin rights.
|
|
117
|
+
* Note that the user is still free to choose which rights to grant, and
|
|
118
|
+
* whether to grant them at all.
|
|
119
|
+
*/
|
|
120
|
+
export const botAddToGroup = deeplinkBuilder({
|
|
121
|
+
internalBuild: ({ bot, parameter, admin }) => [
|
|
122
|
+
'resolve',
|
|
123
|
+
{ domain: bot, startgroup: parameter ?? true, admin: normalizeBotAdmin(admin) },
|
|
124
|
+
],
|
|
125
|
+
internalParse: (path, query) => {
|
|
126
|
+
if (path !== 'resolve')
|
|
127
|
+
return null;
|
|
128
|
+
const bot = query.get('domain');
|
|
129
|
+
const parameter = query.get('startgroup');
|
|
130
|
+
const admin = query.get('admin');
|
|
131
|
+
if (!bot || parameter === null)
|
|
132
|
+
return null;
|
|
133
|
+
return {
|
|
134
|
+
bot,
|
|
135
|
+
parameter: parameter === '' ? undefined : parameter,
|
|
136
|
+
admin: parseBotAdmin(admin),
|
|
137
|
+
};
|
|
138
|
+
},
|
|
139
|
+
externalBuild: ({ bot, parameter, admin }) => [
|
|
140
|
+
bot,
|
|
141
|
+
{ startgroup: parameter ?? true, admin: normalizeBotAdmin(admin) },
|
|
142
|
+
],
|
|
143
|
+
externalParse: (path, query) => {
|
|
144
|
+
if (path.includes('/') || path[0] === '+' || path.length <= 2)
|
|
145
|
+
return null;
|
|
146
|
+
const bot = path;
|
|
147
|
+
const parameter = query.get('startgroup');
|
|
148
|
+
const admin = query.get('admin');
|
|
149
|
+
if (parameter === null)
|
|
150
|
+
return null;
|
|
151
|
+
return {
|
|
152
|
+
bot,
|
|
153
|
+
parameter: parameter === '' ? undefined : parameter,
|
|
154
|
+
admin: parseBotAdmin(admin),
|
|
155
|
+
};
|
|
156
|
+
},
|
|
157
|
+
});
|
|
158
|
+
/**
|
|
159
|
+
* Bot add to channel links
|
|
160
|
+
*
|
|
161
|
+
* Used to ask the user to add a bot to a channel, optionally with admin rights.
|
|
162
|
+
* Note that the user is still free to choose which rights to grant, and
|
|
163
|
+
* whether to grant them at all.
|
|
164
|
+
*/
|
|
165
|
+
export const botAddToChannel = deeplinkBuilder({
|
|
166
|
+
internalBuild: ({ bot, admin }) => [
|
|
167
|
+
'resolve',
|
|
168
|
+
{ domain: bot, startchannel: true, admin: normalizeBotAdmin(admin) },
|
|
169
|
+
],
|
|
170
|
+
internalParse: (path, query) => {
|
|
171
|
+
if (path !== 'resolve')
|
|
172
|
+
return null;
|
|
173
|
+
const bot = query.get('domain');
|
|
174
|
+
const parameter = query.get('startchannel');
|
|
175
|
+
const admin = query.get('admin');
|
|
176
|
+
if (!bot || parameter === null)
|
|
177
|
+
return null;
|
|
178
|
+
return {
|
|
179
|
+
bot,
|
|
180
|
+
admin: parseBotAdmin(admin),
|
|
181
|
+
};
|
|
182
|
+
},
|
|
183
|
+
externalBuild: ({ bot, admin }) => [bot, { startchannel: true, admin: normalizeBotAdmin(admin) }],
|
|
184
|
+
externalParse: (path, query) => {
|
|
185
|
+
if (path.includes('/') || path[0] === '+' || path.length <= 2)
|
|
186
|
+
return null;
|
|
187
|
+
const bot = path;
|
|
188
|
+
const parameter = query.get('startchannel');
|
|
189
|
+
const admin = query.get('admin');
|
|
190
|
+
if (parameter === null)
|
|
191
|
+
return null;
|
|
192
|
+
return {
|
|
193
|
+
bot,
|
|
194
|
+
admin: parseBotAdmin(admin),
|
|
195
|
+
};
|
|
196
|
+
},
|
|
197
|
+
});
|
|
198
|
+
/**
|
|
199
|
+
* Game links
|
|
200
|
+
*
|
|
201
|
+
* Used to share games.
|
|
202
|
+
*/
|
|
203
|
+
export const botGame = deeplinkBuilder({
|
|
204
|
+
internalBuild: ({ bot, game }) => ['resolve', { domain: bot, game }],
|
|
205
|
+
internalParse: (path, query) => {
|
|
206
|
+
if (path !== 'resolve')
|
|
207
|
+
return null;
|
|
208
|
+
const bot = query.get('domain');
|
|
209
|
+
const game = query.get('game');
|
|
210
|
+
if (!bot || !game)
|
|
211
|
+
return null;
|
|
212
|
+
return { bot, game };
|
|
213
|
+
},
|
|
214
|
+
externalBuild: ({ bot, game }) => [bot, { game }],
|
|
215
|
+
externalParse: (path, query) => {
|
|
216
|
+
if (path.includes('/') || path[0] === '+' || path.length <= 2)
|
|
217
|
+
return null;
|
|
218
|
+
const bot = path;
|
|
219
|
+
const game = query.get('game');
|
|
220
|
+
if (!game)
|
|
221
|
+
return null;
|
|
222
|
+
return { bot, game };
|
|
223
|
+
},
|
|
224
|
+
});
|
|
225
|
+
/**
|
|
226
|
+
* Named bot web app links
|
|
227
|
+
*
|
|
228
|
+
* Used to share named bot web apps.
|
|
229
|
+
*
|
|
230
|
+
* These links are different from bot attachment menu deep links,
|
|
231
|
+
* because they don't require the user to install an attachment menu,
|
|
232
|
+
* and a single bot can offer multiple named web apps, distinguished by
|
|
233
|
+
* their `short_name`.
|
|
234
|
+
*/
|
|
235
|
+
export const botWebApp = deeplinkBuilder({
|
|
236
|
+
internalBuild: ({ bot, app, parameter }) => ['resolve', { domain: bot, appname: app, startapp: parameter }],
|
|
237
|
+
internalParse: (path, query) => {
|
|
238
|
+
if (path !== 'resolve')
|
|
239
|
+
return null;
|
|
240
|
+
const bot = query.get('domain');
|
|
241
|
+
const app = query.get('appname');
|
|
242
|
+
const parameter = query.get('startapp');
|
|
243
|
+
if (!bot || !app)
|
|
244
|
+
return null;
|
|
245
|
+
return { bot, app, parameter: parameter || undefined };
|
|
246
|
+
},
|
|
247
|
+
externalBuild: ({ bot, app, parameter }) => [`${bot}/${app}`, { startapp: parameter }],
|
|
248
|
+
externalParse: (path, query) => {
|
|
249
|
+
const [bot, app, rest] = path.split('/');
|
|
250
|
+
if (!app || rest)
|
|
251
|
+
return null;
|
|
252
|
+
const parameter = query.get('startapp');
|
|
253
|
+
return { bot, app, parameter: parameter || undefined };
|
|
254
|
+
},
|
|
255
|
+
});
|
|
256
|
+
//# sourceMappingURL=bots.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bots.js","sourceRoot":"","sources":["../../../../src/utils/links/bots.ts"],"names":[],"mappings":"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","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { isPresent } from '../type-assertions.js'\nimport { deeplinkBuilder } from './common.js'\n\n/**\n * Bot deeplinks\n *\n * Used to link to bots with a start parameter\n */\nexport const botStart = deeplinkBuilder<{\n /** Bot username */\n username: string\n /** Start parameter */\n parameter: string\n}>({\n internalBuild: ({ username, parameter }) => ['resolve', { domain: username, start: parameter }],\n internalParse: (path, query) => {\n if (path !== 'resolve') return null\n\n const username = query.get('domain')\n const parameter = query.get('start')\n\n if (!username || !parameter) return null\n\n return { username, parameter }\n },\n externalBuild: ({ username, parameter }) => [username, { start: parameter }],\n externalParse: (path, query) => {\n if (path.includes('/') || path[0] === '+' || path.length <= 2) return null\n\n const username = path\n const parameter = query.get('start')\n\n if (!parameter) return null\n\n return { username, parameter }\n },\n})\n\ntype BotAdminRight = Exclude<keyof tl.RawChatAdminRights, '_'>\n\nfunction normalizeBotAdmin(rights?: BotAdminRight[]): string | undefined {\n if (!rights?.length) return\n\n return rights\n .map((it) => {\n switch (it) {\n case 'changeInfo':\n return 'change_info'\n case 'postMessages':\n return 'post_messages'\n case 'editMessages':\n return 'edit_messages'\n case 'deleteMessages':\n return 'delete_messages'\n case 'banUsers':\n return 'restrict_members'\n case 'inviteUsers':\n return 'invite_users'\n case 'pinMessages':\n return 'pin_messages'\n case 'manageTopics':\n return 'manage_topics'\n case 'addAdmins':\n return 'promote_members'\n case 'manageCall':\n return 'manage_video_chats'\n case 'anonymous':\n return 'anonymous'\n case 'other':\n return 'manage_chat'\n case 'postStories':\n return 'post_stories'\n case 'editStories':\n return 'edit_stories'\n case 'deleteStories':\n return 'delete_stories'\n }\n })\n .join('+')\n}\n\nfunction parseBotAdmin(rights: string | null): BotAdminRight[] | undefined {\n if (!rights) return\n\n return rights\n .split('+')\n .map((it) => {\n switch (it) {\n case 'change_info':\n return 'changeInfo'\n case 'post_messages':\n return 'postMessages'\n case 'edit_messages':\n return 'editMessages'\n case 'delete_messages':\n return 'deleteMessages'\n case 'restrict_members':\n return 'banUsers'\n case 'invite_users':\n return 'inviteUsers'\n case 'pin_messages':\n return 'pinMessages'\n case 'manage_topics':\n return 'manageTopics'\n case 'promote_members':\n return 'addAdmins'\n case 'manage_video_chats':\n return 'manageCall'\n case 'anonymous':\n return 'anonymous'\n case 'manage_chat':\n return 'other'\n case 'post_stories':\n return 'postStories'\n case 'edit_stories':\n return 'editStories'\n case 'delete_stories':\n return 'deleteStories'\n default:\n return null\n }\n })\n .filter(isPresent)\n}\n\n/**\n * Bot add to group links\n *\n * Used to ask the user to add a bot to a group, optionally asking for admin rights.\n * Note that the user is still free to choose which rights to grant, and\n * whether to grant them at all.\n */\nexport const botAddToGroup = deeplinkBuilder<{\n /** Bot username */\n bot: string\n /** If specified, the client will call `/start parameter` on the bot once the bot has been added */\n parameter?: string\n /** Admin rights to request */\n admin?: BotAdminRight[]\n}>({\n internalBuild: ({ bot, parameter, admin }) => [\n 'resolve',\n { domain: bot, startgroup: parameter ?? true, admin: normalizeBotAdmin(admin) },\n ],\n internalParse: (path, query) => {\n if (path !== 'resolve') return null\n\n const bot = query.get('domain')\n const parameter = query.get('startgroup')\n const admin = query.get('admin')\n\n if (!bot || parameter === null) return null\n\n return {\n bot,\n parameter: parameter === '' ? undefined : parameter,\n admin: parseBotAdmin(admin),\n }\n },\n\n externalBuild: ({ bot, parameter, admin }) => [\n bot,\n { startgroup: parameter ?? true, admin: normalizeBotAdmin(admin) },\n ],\n externalParse: (path, query) => {\n if (path.includes('/') || path[0] === '+' || path.length <= 2) return null\n\n const bot = path\n const parameter = query.get('startgroup')\n const admin = query.get('admin')\n\n if (parameter === null) return null\n\n return {\n bot,\n parameter: parameter === '' ? undefined : parameter,\n admin: parseBotAdmin(admin),\n }\n },\n})\n\n/**\n * Bot add to channel links\n *\n * Used to ask the user to add a bot to a channel, optionally with admin rights.\n * Note that the user is still free to choose which rights to grant, and\n * whether to grant them at all.\n */\nexport const botAddToChannel = deeplinkBuilder<{\n /** Bot username */\n bot: string\n /** Admin rights to request */\n admin?: BotAdminRight[]\n}>({\n internalBuild: ({ bot, admin }) => [\n 'resolve',\n { domain: bot, startchannel: true, admin: normalizeBotAdmin(admin) },\n ],\n internalParse: (path, query) => {\n if (path !== 'resolve') return null\n\n const bot = query.get('domain')\n const parameter = query.get('startchannel')\n const admin = query.get('admin')\n\n if (!bot || parameter === null) return null\n\n return {\n bot,\n admin: parseBotAdmin(admin),\n }\n },\n\n externalBuild: ({ bot, admin }) => [bot, { startchannel: true, admin: normalizeBotAdmin(admin) }],\n externalParse: (path, query) => {\n if (path.includes('/') || path[0] === '+' || path.length <= 2) return null\n\n const bot = path\n const parameter = query.get('startchannel')\n const admin = query.get('admin')\n\n if (parameter === null) return null\n\n return {\n bot,\n admin: parseBotAdmin(admin),\n }\n },\n})\n\n/**\n * Game links\n *\n * Used to share games.\n */\nexport const botGame = deeplinkBuilder<{\n /** Bot username */\n bot: string\n /** Game short name */\n game: string\n}>({\n internalBuild: ({ bot, game }) => ['resolve', { domain: bot, game }],\n internalParse: (path, query) => {\n if (path !== 'resolve') return null\n\n const bot = query.get('domain')\n const game = query.get('game')\n\n if (!bot || !game) return null\n\n return { bot, game }\n },\n externalBuild: ({ bot, game }) => [bot, { game }],\n externalParse: (path, query) => {\n if (path.includes('/') || path[0] === '+' || path.length <= 2) return null\n\n const bot = path\n const game = query.get('game')\n\n if (!game) return null\n\n return { bot, game }\n },\n})\n\n/**\n * Named bot web app links\n *\n * Used to share named bot web apps.\n *\n * These links are different from bot attachment menu deep links,\n * because they don't require the user to install an attachment menu,\n * and a single bot can offer multiple named web apps, distinguished by\n * their `short_name`.\n */\nexport const botWebApp = deeplinkBuilder<{\n /** Bot username */\n bot: string\n /** App short name */\n app: string\n /** Parameter to be passed by the client to messages.requestAppWebView as `start_param` */\n parameter?: string\n}>({\n internalBuild: ({ bot, app, parameter }) => ['resolve', { domain: bot, appname: app, startapp: parameter }],\n internalParse: (path, query) => {\n if (path !== 'resolve') return null\n\n const bot = query.get('domain')\n const app = query.get('appname')\n const parameter = query.get('startapp')\n\n if (!bot || !app) return null\n\n return { bot, app, parameter: parameter || undefined }\n },\n\n externalBuild: ({ bot, app, parameter }) => [`${bot}/${app}`, { startapp: parameter }],\n externalParse: (path, query) => {\n const [bot, app, rest] = path.split('/')\n\n if (!app || rest) return null\n\n const parameter = query.get('startapp')\n\n return { bot, app, parameter: parameter || undefined }\n },\n})\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bundle.js","sourceRoot":"","sources":["../../../../src/utils/links/bundle.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,eAAe,CAAA;AAC7B,cAAc,WAAW,CAAA","sourcesContent":["export * from './bots.js'\nexport * from './calls.js'\nexport * from './chat.js'\nexport * from './misc.js'\nexport * from './proxy.js'\nexport * from './stickers.js'\nexport * from './user.js'\n"]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Video chat/Livestream links
|
|
3
|
+
*
|
|
4
|
+
* Used to join video/voice chats in groups, and livestreams in channels.
|
|
5
|
+
* Such links are generated using phone.exportGroupCallInvite.
|
|
6
|
+
*/
|
|
7
|
+
export declare const videoChat: import("./common.js").Deeplink<{
|
|
8
|
+
username: string;
|
|
9
|
+
/**
|
|
10
|
+
* Invite hash exported if the `can_self_unmute` flag is set when calling `phone.exportGroupCallInvite`:
|
|
11
|
+
* should be passed to `phone.joinGroupCall`, allows the user to speak in livestreams
|
|
12
|
+
* or muted group chats.
|
|
13
|
+
*/
|
|
14
|
+
inviteHash?: string | undefined;
|
|
15
|
+
isLivestream?: boolean | undefined;
|
|
16
|
+
}>;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { deeplinkBuilder } from './common.js';
|
|
2
|
+
/**
|
|
3
|
+
* Video chat/Livestream links
|
|
4
|
+
*
|
|
5
|
+
* Used to join video/voice chats in groups, and livestreams in channels.
|
|
6
|
+
* Such links are generated using phone.exportGroupCallInvite.
|
|
7
|
+
*/
|
|
8
|
+
export const videoChat = deeplinkBuilder({
|
|
9
|
+
internalBuild: ({ username, inviteHash, isLivestream }) => [
|
|
10
|
+
'resolve',
|
|
11
|
+
{
|
|
12
|
+
domain: username,
|
|
13
|
+
[isLivestream ? 'livestream' : 'videochat']: inviteHash || true,
|
|
14
|
+
},
|
|
15
|
+
],
|
|
16
|
+
externalBuild: ({ username, inviteHash, isLivestream }) => [
|
|
17
|
+
username,
|
|
18
|
+
{
|
|
19
|
+
[isLivestream ? 'livestream' : 'videochat']: inviteHash || true,
|
|
20
|
+
},
|
|
21
|
+
],
|
|
22
|
+
internalParse: (path, query) => {
|
|
23
|
+
if (path !== 'resolve')
|
|
24
|
+
return null;
|
|
25
|
+
const domain = query.get('domain');
|
|
26
|
+
if (!domain)
|
|
27
|
+
return null;
|
|
28
|
+
const livestream = query.get('livestream');
|
|
29
|
+
const videochat = query.get('videochat');
|
|
30
|
+
const voicechat = query.get('voicechat');
|
|
31
|
+
if (livestream === null && videochat === null && voicechat === null)
|
|
32
|
+
return null;
|
|
33
|
+
const inviteHash = livestream || videochat || voicechat;
|
|
34
|
+
return {
|
|
35
|
+
username: domain,
|
|
36
|
+
inviteHash: inviteHash || undefined,
|
|
37
|
+
isLivestream: livestream !== null,
|
|
38
|
+
};
|
|
39
|
+
},
|
|
40
|
+
externalParse: (path, query) => {
|
|
41
|
+
if (path.length <= 1 || path.includes('/') || path[0] === '+')
|
|
42
|
+
return null;
|
|
43
|
+
const livestream = query.get('livestream');
|
|
44
|
+
const videochat = query.get('videochat');
|
|
45
|
+
const voicechat = query.get('voicechat');
|
|
46
|
+
if (livestream === null && videochat === null && voicechat === null)
|
|
47
|
+
return null;
|
|
48
|
+
const inviteHash = livestream || videochat || voicechat;
|
|
49
|
+
return {
|
|
50
|
+
username: path,
|
|
51
|
+
inviteHash: inviteHash || undefined,
|
|
52
|
+
isLivestream: livestream !== null,
|
|
53
|
+
};
|
|
54
|
+
},
|
|
55
|
+
});
|
|
56
|
+
//# sourceMappingURL=calls.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calls.js","sourceRoot":"","sources":["../../../../src/utils/links/calls.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAE7C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,eAAe,CASrC;IACC,aAAa,EAAE,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;QACvD,SAAS;QACT;YACI,MAAM,EAAE,QAAQ;YAChB,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,UAAU,IAAI,IAAI;SAClE;KACJ;IACD,aAAa,EAAE,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;QACvD,QAAQ;QACR;YACI,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,UAAU,IAAI,IAAI;SAClE;KACJ;IACD,aAAa,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC3B,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,IAAI,CAAA;QAEnC,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAClC,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAA;QAExB,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;QAC1C,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;QACxC,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;QAExC,IAAI,UAAU,KAAK,IAAI,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,IAAI;YAAE,OAAO,IAAI,CAAA;QAEhF,MAAM,UAAU,GAAG,UAAU,IAAI,SAAS,IAAI,SAAS,CAAA;QAEvD,OAAO;YACH,QAAQ,EAAE,MAAM;YAChB,UAAU,EAAE,UAAU,IAAI,SAAS;YACnC,YAAY,EAAE,UAAU,KAAK,IAAI;SACpC,CAAA;IACL,CAAC;IACD,aAAa,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC3B,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG;YAAE,OAAO,IAAI,CAAA;QAE1E,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;QAC1C,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;QACxC,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;QAExC,IAAI,UAAU,KAAK,IAAI,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,IAAI;YAAE,OAAO,IAAI,CAAA;QAEhF,MAAM,UAAU,GAAG,UAAU,IAAI,SAAS,IAAI,SAAS,CAAA;QAEvD,OAAO;YACH,QAAQ,EAAE,IAAI;YACd,UAAU,EAAE,UAAU,IAAI,SAAS;YACnC,YAAY,EAAE,UAAU,KAAK,IAAI;SACpC,CAAA;IACL,CAAC;CACJ,CAAC,CAAA","sourcesContent":["import { deeplinkBuilder } from './common.js'\n\n/**\n * Video chat/Livestream links\n *\n * Used to join video/voice chats in groups, and livestreams in channels.\n * Such links are generated using phone.exportGroupCallInvite.\n */\nexport const videoChat = deeplinkBuilder<{\n username: string\n /**\n * Invite hash exported if the `can_self_unmute` flag is set when calling `phone.exportGroupCallInvite`:\n * should be passed to `phone.joinGroupCall`, allows the user to speak in livestreams\n * or muted group chats.\n */\n inviteHash?: string\n isLivestream?: boolean\n}>({\n internalBuild: ({ username, inviteHash, isLivestream }) => [\n 'resolve',\n {\n domain: username,\n [isLivestream ? 'livestream' : 'videochat']: inviteHash || true,\n },\n ],\n externalBuild: ({ username, inviteHash, isLivestream }) => [\n username,\n {\n [isLivestream ? 'livestream' : 'videochat']: inviteHash || true,\n },\n ],\n internalParse: (path, query) => {\n if (path !== 'resolve') return null\n\n const domain = query.get('domain')\n if (!domain) return null\n\n const livestream = query.get('livestream')\n const videochat = query.get('videochat')\n const voicechat = query.get('voicechat')\n\n if (livestream === null && videochat === null && voicechat === null) return null\n\n const inviteHash = livestream || videochat || voicechat\n\n return {\n username: domain,\n inviteHash: inviteHash || undefined,\n isLivestream: livestream !== null,\n }\n },\n externalParse: (path, query) => {\n if (path.length <= 1 || path.includes('/') || path[0] === '+') return null\n\n const livestream = query.get('livestream')\n const videochat = query.get('videochat')\n const voicechat = query.get('voicechat')\n\n if (livestream === null && videochat === null && voicechat === null) return null\n\n const inviteHash = livestream || videochat || voicechat\n\n return {\n username: path,\n inviteHash: inviteHash || undefined,\n isLivestream: livestream !== null,\n }\n },\n})\n"]}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Chat invite links
|
|
3
|
+
*
|
|
4
|
+
* Used to invite users to private groups and channels
|
|
5
|
+
*/
|
|
6
|
+
export declare const chatInvite: import("./common.js").Deeplink<{
|
|
7
|
+
hash: string;
|
|
8
|
+
}>;
|
|
9
|
+
/**
|
|
10
|
+
* Chat folder links
|
|
11
|
+
*/
|
|
12
|
+
export declare const chatFolder: import("./common.js").Deeplink<{
|
|
13
|
+
slug: string;
|
|
14
|
+
}>;
|
|
15
|
+
/**
|
|
16
|
+
* Message links
|
|
17
|
+
*
|
|
18
|
+
* Used to link to specific messages in public or private groups and channels.
|
|
19
|
+
*
|
|
20
|
+
* Note: `channelId` is a non-marked channel ID
|
|
21
|
+
*/
|
|
22
|
+
export declare const message: import("./common.js").Deeplink<({
|
|
23
|
+
username: string;
|
|
24
|
+
} | {
|
|
25
|
+
channelId: number;
|
|
26
|
+
}) & {
|
|
27
|
+
/** Message ID */
|
|
28
|
+
id: number;
|
|
29
|
+
/** Thread ID */
|
|
30
|
+
threadId?: number | undefined;
|
|
31
|
+
/**
|
|
32
|
+
* For comments, `id` will contain the message ID of the channel message that started
|
|
33
|
+
* the comment section and this field will contain the message ID of the comment in
|
|
34
|
+
* the discussion group.
|
|
35
|
+
*/
|
|
36
|
+
commentId?: number | undefined;
|
|
37
|
+
/**
|
|
38
|
+
* Timestamp at which to start playing the media file present
|
|
39
|
+
* in the body or in the webpage preview of the message
|
|
40
|
+
*/
|
|
41
|
+
mediaTimestamp?: number | undefined;
|
|
42
|
+
/**
|
|
43
|
+
* Whether this is a link to a specific message in the album or to the entire album
|
|
44
|
+
*/
|
|
45
|
+
single?: boolean | undefined;
|
|
46
|
+
}>;
|