@mtcute/core 0.15.2 → 0.16.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/cjs/highlevel/base.d.ts +3 -3
- package/cjs/highlevel/base.js.map +1 -1
- package/cjs/highlevel/methods/files/download-iterable.js +1 -1
- package/cjs/highlevel/methods/files/download-iterable.js.map +1 -1
- package/cjs/highlevel/methods/users/resolve-peer-many.js +1 -1
- package/cjs/highlevel/methods/users/resolve-peer-many.js.map +1 -1
- package/cjs/highlevel/types/messages/dialog.d.ts +4 -2
- package/cjs/highlevel/types/messages/dialog.js +4 -2
- package/cjs/highlevel/types/messages/dialog.js.map +1 -1
- package/cjs/highlevel/types/messages/message-action.d.ts +15 -1
- package/cjs/highlevel/types/messages/message-action.js +10 -0
- package/cjs/highlevel/types/messages/message-action.js.map +1 -1
- package/cjs/highlevel/types/peers/full-chat.d.ts +2 -0
- package/cjs/highlevel/types/peers/full-chat.js +4 -0
- package/cjs/highlevel/types/peers/full-chat.js.map +1 -1
- package/cjs/highlevel/updates/manager.js +3 -3
- package/cjs/highlevel/updates/manager.js.map +1 -1
- package/cjs/highlevel/worker/invoker.js +2 -1
- package/cjs/highlevel/worker/invoker.js.map +1 -1
- package/cjs/highlevel/worker/port.js +4 -3
- package/cjs/highlevel/worker/port.js.map +1 -1
- package/cjs/highlevel/worker/protocol.d.ts +10 -5
- package/cjs/highlevel/worker/protocol.js +66 -0
- package/cjs/highlevel/worker/protocol.js.map +1 -1
- package/cjs/highlevel/worker/worker.js +6 -5
- package/cjs/highlevel/worker/worker.js.map +1 -1
- package/cjs/network/client.d.ts +0 -16
- package/cjs/network/client.js +0 -2
- package/cjs/network/client.js.map +1 -1
- package/cjs/network/index.d.ts +2 -1
- package/cjs/network/index.js +1 -0
- package/cjs/network/index.js.map +1 -1
- package/cjs/network/middlewares/bundle.d.ts +3 -0
- package/cjs/network/middlewares/bundle.js +20 -0
- package/cjs/network/middlewares/bundle.js.map +1 -0
- package/cjs/network/middlewares/default.d.ts +8 -0
- package/cjs/network/middlewares/default.js +10 -0
- package/cjs/network/middlewares/default.js.map +1 -0
- package/cjs/network/middlewares/flood-waiter.d.ts +37 -0
- package/cjs/network/middlewares/flood-waiter.js +70 -0
- package/cjs/network/middlewares/flood-waiter.js.map +1 -0
- package/cjs/network/middlewares/index.d.ts +2 -0
- package/cjs/network/middlewares/index.js +29 -0
- package/cjs/network/middlewares/index.js.map +1 -0
- package/cjs/network/middlewares/internal-errors.d.ts +17 -0
- package/cjs/network/middlewares/internal-errors.js +41 -0
- package/cjs/network/middlewares/internal-errors.js.map +1 -0
- package/cjs/network/middlewares/on-error.d.ts +30 -0
- package/cjs/network/middlewares/on-error.js +44 -0
- package/cjs/network/middlewares/on-error.js.map +1 -0
- package/cjs/network/middlewares/on-method.d.ts +39 -0
- package/cjs/network/middlewares/on-method.js +45 -0
- package/cjs/network/middlewares/on-method.js.map +1 -0
- package/cjs/network/mtproto-session.js +1 -1
- package/cjs/network/mtproto-session.js.map +1 -1
- package/cjs/network/multi-session-connection.js +1 -1
- package/cjs/network/multi-session-connection.js.map +1 -1
- package/cjs/network/network-manager.d.ts +23 -6
- package/cjs/network/network-manager.js +55 -102
- package/cjs/network/network-manager.js.map +1 -1
- package/cjs/network/persistent-connection.js +5 -5
- package/cjs/network/persistent-connection.js.map +1 -1
- package/cjs/network/session-connection.js +6 -6
- package/cjs/network/session-connection.js.map +1 -1
- package/cjs/storage/driver.js +1 -1
- package/cjs/storage/driver.js.map +1 -1
- package/cjs/storage/storage.js +1 -1
- package/cjs/storage/storage.js.map +1 -1
- package/cjs/utils/abort-signal.d.ts +1 -0
- package/cjs/utils/abort-signal.js +13 -0
- package/cjs/utils/abort-signal.js.map +1 -0
- package/cjs/utils/composer.d.ts +3 -0
- package/cjs/utils/composer.js +22 -0
- package/cjs/utils/composer.js.map +1 -0
- package/cjs/utils/error-reporting.js +1 -1
- package/cjs/utils/error-reporting.js.map +1 -1
- package/cjs/utils/index.d.ts +1 -0
- package/cjs/utils/index.js +1 -0
- package/cjs/utils/index.js.map +1 -1
- package/cjs/utils/logger.js +15 -3
- package/cjs/utils/logger.js.map +1 -1
- package/esm/highlevel/base.d.ts +3 -3
- package/esm/highlevel/base.js.map +1 -1
- package/esm/highlevel/methods/files/download-iterable.js +1 -1
- package/esm/highlevel/methods/files/download-iterable.js.map +1 -1
- package/esm/highlevel/methods/users/resolve-peer-many.js +1 -1
- package/esm/highlevel/methods/users/resolve-peer-many.js.map +1 -1
- package/esm/highlevel/types/messages/dialog.d.ts +4 -2
- package/esm/highlevel/types/messages/dialog.js +4 -2
- package/esm/highlevel/types/messages/dialog.js.map +1 -1
- package/esm/highlevel/types/messages/message-action.d.ts +15 -1
- package/esm/highlevel/types/messages/message-action.js +10 -0
- package/esm/highlevel/types/messages/message-action.js.map +1 -1
- package/esm/highlevel/types/peers/full-chat.d.ts +2 -0
- package/esm/highlevel/types/peers/full-chat.js +4 -0
- package/esm/highlevel/types/peers/full-chat.js.map +1 -1
- package/esm/highlevel/updates/manager.js +3 -3
- package/esm/highlevel/updates/manager.js.map +1 -1
- package/esm/highlevel/worker/invoker.js +2 -1
- package/esm/highlevel/worker/invoker.js.map +1 -1
- package/esm/highlevel/worker/port.js +4 -3
- package/esm/highlevel/worker/port.js.map +1 -1
- package/esm/highlevel/worker/protocol.d.ts +10 -5
- package/esm/highlevel/worker/protocol.js +60 -1
- package/esm/highlevel/worker/protocol.js.map +1 -1
- package/esm/highlevel/worker/worker.js +6 -5
- package/esm/highlevel/worker/worker.js.map +1 -1
- package/esm/network/client.d.ts +0 -16
- package/esm/network/client.js +0 -2
- package/esm/network/client.js.map +1 -1
- package/esm/network/index.d.ts +2 -1
- package/esm/network/index.js +1 -0
- package/esm/network/index.js.map +1 -1
- package/esm/network/middlewares/bundle.d.ts +3 -0
- package/esm/network/middlewares/bundle.js +4 -0
- package/esm/network/middlewares/bundle.js.map +1 -0
- package/esm/network/middlewares/default.d.ts +8 -0
- package/esm/network/middlewares/default.js +6 -0
- package/esm/network/middlewares/default.js.map +1 -0
- package/esm/network/middlewares/flood-waiter.d.ts +37 -0
- package/esm/network/middlewares/flood-waiter.js +66 -0
- package/esm/network/middlewares/flood-waiter.js.map +1 -0
- package/esm/network/middlewares/index.d.ts +2 -0
- package/esm/network/middlewares/index.js +3 -0
- package/esm/network/middlewares/index.js.map +1 -0
- package/esm/network/middlewares/internal-errors.d.ts +17 -0
- package/esm/network/middlewares/internal-errors.js +37 -0
- package/esm/network/middlewares/internal-errors.js.map +1 -0
- package/esm/network/middlewares/on-error.d.ts +30 -0
- package/esm/network/middlewares/on-error.js +40 -0
- package/esm/network/middlewares/on-error.js.map +1 -0
- package/esm/network/middlewares/on-method.d.ts +39 -0
- package/esm/network/middlewares/on-method.js +41 -0
- package/esm/network/middlewares/on-method.js.map +1 -0
- package/esm/network/mtproto-session.js +1 -1
- package/esm/network/mtproto-session.js.map +1 -1
- package/esm/network/multi-session-connection.js +1 -1
- package/esm/network/multi-session-connection.js.map +1 -1
- package/esm/network/network-manager.d.ts +23 -6
- package/esm/network/network-manager.js +57 -104
- package/esm/network/network-manager.js.map +1 -1
- package/esm/network/persistent-connection.js +5 -5
- package/esm/network/persistent-connection.js.map +1 -1
- package/esm/network/session-connection.js +6 -6
- package/esm/network/session-connection.js.map +1 -1
- package/esm/storage/driver.js +1 -1
- package/esm/storage/driver.js.map +1 -1
- package/esm/storage/storage.js +1 -1
- package/esm/storage/storage.js.map +1 -1
- package/esm/utils/abort-signal.d.ts +1 -0
- package/esm/utils/abort-signal.js +9 -0
- package/esm/utils/abort-signal.js.map +1 -0
- package/esm/utils/composer.d.ts +3 -0
- package/esm/utils/composer.js +18 -0
- package/esm/utils/composer.js.map +1 -0
- package/esm/utils/error-reporting.js +1 -1
- package/esm/utils/error-reporting.js.map +1 -1
- package/esm/utils/index.d.ts +1 -0
- package/esm/utils/index.js +1 -0
- package/esm/utils/index.js.map +1 -1
- package/esm/utils/logger.js +15 -3
- package/esm/utils/logger.js.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persistent-connection.js","sourceRoot":"","sources":["../../../src/network/persistent-connection.ts"],"names":[],"mappings":"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","sourcesContent":["import EventEmitter from 'events'\n\nimport { MtcuteError } from '../types/index.js'\nimport { BasicDcOption, ICryptoProvider, Logger } from '../utils/index.js'\nimport { ReconnectionStrategy } from './reconnection.js'\nimport { ITelegramTransport, TransportFactory, TransportState } from './transports/index.js'\n\nexport interface PersistentConnectionParams {\n crypto: ICryptoProvider\n transportFactory: TransportFactory\n dc: BasicDcOption\n testMode: boolean\n reconnectionStrategy: ReconnectionStrategy<PersistentConnectionParams>\n inactivityTimeout?: number\n}\n\nlet nextConnectionUid = 0\n\n/**\n * Base class for persistent connections.\n * Only used for {@link PersistentConnection} and used as a mean of code splitting.\n * This class doesn't know anything about MTProto, it just manages the transport.\n */\nexport abstract class PersistentConnection extends EventEmitter {\n private _uid = nextConnectionUid++\n\n readonly params: PersistentConnectionParams\n protected _transport!: ITelegramTransport\n\n private _sendOnceConnected: Uint8Array[] = []\n\n // reconnection\n private _lastError: Error | null = null\n private _consequentFails = 0\n private _previousWait: number | null = null\n private _reconnectionTimeout: NodeJS.Timeout | null = null\n private _shouldReconnectImmediately = false\n protected _disconnectedManually = false\n\n // inactivity timeout\n private _inactivityTimeout: NodeJS.Timeout | null = null\n private _inactive = true\n\n _destroyed = false\n _usable = false\n\n protected abstract onConnected(): void\n\n protected abstract onError(err: Error): void\n\n protected abstract onMessage(data: Uint8Array): void\n\n protected constructor(\n params: PersistentConnectionParams,\n readonly log: Logger,\n ) {\n super()\n this.params = params\n this.changeTransport(params.transportFactory)\n\n this.log.prefix = `[UID ${this._uid}] `\n\n this._onInactivityTimeout = this._onInactivityTimeout.bind(this)\n }\n\n get isConnected(): boolean {\n return this._transport.state() !== TransportState.Idle\n }\n\n changeTransport(factory: TransportFactory): void {\n if (this._transport) {\n Promise.resolve(this._transport.close()).catch((err) => {\n this.log.warn('error closing previous transport: %s', err)\n })\n }\n\n this._transport = factory()\n this._transport.setup?.(this.params.crypto, this.log)\n\n this._transport.on('ready', this.onTransportReady.bind(this))\n this._transport.on('message', this.onMessage.bind(this))\n this._transport.on('error', this.onTransportError.bind(this))\n this._transport.on('close', this.onTransportClose.bind(this))\n }\n\n onTransportReady(): void {\n // transport ready does not mean actual mtproto is ready\n if (this._sendOnceConnected.length) {\n const sendNext = () => {\n if (!this._sendOnceConnected.length) {\n this.onConnected()\n\n return\n }\n\n const data = this._sendOnceConnected.shift()!\n this._transport\n .send(data)\n .then(sendNext)\n .catch((err) => {\n this.log.error('error sending queued data: %s', err)\n this._sendOnceConnected.unshift(data)\n })\n }\n\n sendNext()\n\n return\n }\n\n this.onConnected()\n }\n\n protected onConnectionUsable(): void {\n const isReconnection = this._consequentFails > 0\n\n // reset reconnection related state\n this._lastError = null\n this._consequentFails = 0\n this._previousWait = null\n this._usable = true\n this.emit('usable', isReconnection)\n this._rescheduleInactivity()\n }\n\n onTransportError(err: Error): void {\n this._lastError = err\n this.onError(err)\n // transport is expected to emit `close` after `error`\n }\n\n onTransportClose(): void {\n // transport closed because of inactivity\n // obviously we dont want to reconnect then\n if (this._inactive || this._disconnectedManually) return\n\n if (this._shouldReconnectImmediately) {\n this._shouldReconnectImmediately = false\n this.connect()\n\n return\n }\n\n this._consequentFails += 1\n\n const wait = this.params.reconnectionStrategy(\n this.params,\n this._lastError,\n this._consequentFails,\n this._previousWait,\n )\n\n if (wait === false) {\n this.destroy().catch((err) => {\n this.log.warn('error destroying connection: %s', err)\n })\n\n return\n }\n\n this.emit('wait', wait)\n\n this._previousWait = wait\n\n if (this._reconnectionTimeout != null) {\n clearTimeout(this._reconnectionTimeout)\n }\n this._reconnectionTimeout = setTimeout(() => {\n if (this._destroyed) return\n this._reconnectionTimeout = null\n this.connect()\n }, wait)\n }\n\n connect(): void {\n if (this.isConnected) {\n throw new MtcuteError('Connection is already opened!')\n }\n if (this._destroyed) {\n throw new MtcuteError('Connection is already destroyed!')\n }\n\n if (this._reconnectionTimeout != null) {\n clearTimeout(this._reconnectionTimeout)\n this._reconnectionTimeout = null\n }\n\n this._inactive = false\n this._disconnectedManually = false\n this._transport.connect(this.params.dc, this.params.testMode)\n }\n\n reconnect(): void {\n if (this._inactive) return\n\n // if we are already connected\n if (this.isConnected) {\n this._shouldReconnectImmediately = true\n Promise.resolve(this._transport.close()).catch((err) => {\n this.log.error('error closing transport: %s', err)\n })\n\n return\n }\n\n // if reconnection timeout is pending, it will be cancelled in connect()\n this.connect()\n }\n\n async disconnectManual(): Promise<void> {\n this._disconnectedManually = true\n await this._transport.close()\n }\n\n async destroy(): Promise<void> {\n if (this._reconnectionTimeout != null) {\n clearTimeout(this._reconnectionTimeout)\n }\n if (this._inactivityTimeout != null) {\n clearTimeout(this._inactivityTimeout)\n }\n\n await this._transport.close()\n this._transport.removeAllListeners()\n this._destroyed = true\n }\n\n protected _rescheduleInactivity(): void {\n if (!this.params.inactivityTimeout) return\n if (this._inactivityTimeout) clearTimeout(this._inactivityTimeout)\n this._inactivityTimeout = setTimeout(this._onInactivityTimeout, this.params.inactivityTimeout)\n }\n\n protected _onInactivityTimeout(): void {\n this.log.info('disconnected because of inactivity for %d', this.params.inactivityTimeout)\n this._inactive = true\n this._inactivityTimeout = null\n Promise.resolve(this._transport.close()).catch((err) => {\n this.log.warn('error closing transport: %s', err)\n })\n }\n\n setInactivityTimeout(timeout?: number): void {\n this.params.inactivityTimeout = timeout\n\n if (this._inactivityTimeout) {\n clearTimeout(this._inactivityTimeout)\n }\n\n if (timeout) {\n this._rescheduleInactivity()\n }\n }\n\n async send(data: Uint8Array): Promise<void> {\n if (this._inactive) {\n this.connect()\n }\n\n if (this._transport.state() === TransportState.Ready) {\n await this._transport.send(data)\n } else {\n this._sendOnceConnected.push(data)\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"persistent-connection.js","sourceRoot":"","sources":["../../../src/network/persistent-connection.ts"],"names":[],"mappings":"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","sourcesContent":["import EventEmitter from 'events'\n\nimport { MtcuteError } from '../types/index.js'\nimport { BasicDcOption, ICryptoProvider, Logger } from '../utils/index.js'\nimport { ReconnectionStrategy } from './reconnection.js'\nimport { ITelegramTransport, TransportFactory, TransportState } from './transports/index.js'\n\nexport interface PersistentConnectionParams {\n crypto: ICryptoProvider\n transportFactory: TransportFactory\n dc: BasicDcOption\n testMode: boolean\n reconnectionStrategy: ReconnectionStrategy<PersistentConnectionParams>\n inactivityTimeout?: number\n}\n\nlet nextConnectionUid = 0\n\n/**\n * Base class for persistent connections.\n * Only used for {@link PersistentConnection} and used as a mean of code splitting.\n * This class doesn't know anything about MTProto, it just manages the transport.\n */\nexport abstract class PersistentConnection extends EventEmitter {\n private _uid = nextConnectionUid++\n\n readonly params: PersistentConnectionParams\n protected _transport!: ITelegramTransport\n\n private _sendOnceConnected: Uint8Array[] = []\n\n // reconnection\n private _lastError: Error | null = null\n private _consequentFails = 0\n private _previousWait: number | null = null\n private _reconnectionTimeout: NodeJS.Timeout | null = null\n private _shouldReconnectImmediately = false\n protected _disconnectedManually = false\n\n // inactivity timeout\n private _inactivityTimeout: NodeJS.Timeout | null = null\n private _inactive = true\n\n _destroyed = false\n _usable = false\n\n protected abstract onConnected(): void\n\n protected abstract onError(err: Error): void\n\n protected abstract onMessage(data: Uint8Array): void\n\n protected constructor(\n params: PersistentConnectionParams,\n readonly log: Logger,\n ) {\n super()\n this.params = params\n this.changeTransport(params.transportFactory)\n\n this.log.prefix = `[UID ${this._uid}] `\n\n this._onInactivityTimeout = this._onInactivityTimeout.bind(this)\n }\n\n get isConnected(): boolean {\n return this._transport.state() !== TransportState.Idle\n }\n\n changeTransport(factory: TransportFactory): void {\n if (this._transport) {\n Promise.resolve(this._transport.close()).catch((err) => {\n this.log.warn('error closing previous transport: %e', err)\n })\n }\n\n this._transport = factory()\n this._transport.setup?.(this.params.crypto, this.log)\n\n this._transport.on('ready', this.onTransportReady.bind(this))\n this._transport.on('message', this.onMessage.bind(this))\n this._transport.on('error', this.onTransportError.bind(this))\n this._transport.on('close', this.onTransportClose.bind(this))\n }\n\n onTransportReady(): void {\n // transport ready does not mean actual mtproto is ready\n if (this._sendOnceConnected.length) {\n const sendNext = () => {\n if (!this._sendOnceConnected.length) {\n this.onConnected()\n\n return\n }\n\n const data = this._sendOnceConnected.shift()!\n this._transport\n .send(data)\n .then(sendNext)\n .catch((err) => {\n this.log.error('error sending queued data: %e', err)\n this._sendOnceConnected.unshift(data)\n })\n }\n\n sendNext()\n\n return\n }\n\n this.onConnected()\n }\n\n protected onConnectionUsable(): void {\n const isReconnection = this._consequentFails > 0\n\n // reset reconnection related state\n this._lastError = null\n this._consequentFails = 0\n this._previousWait = null\n this._usable = true\n this.emit('usable', isReconnection)\n this._rescheduleInactivity()\n }\n\n onTransportError(err: Error): void {\n this._lastError = err\n this.onError(err)\n // transport is expected to emit `close` after `error`\n }\n\n onTransportClose(): void {\n // transport closed because of inactivity\n // obviously we dont want to reconnect then\n if (this._inactive || this._disconnectedManually) return\n\n if (this._shouldReconnectImmediately) {\n this._shouldReconnectImmediately = false\n this.connect()\n\n return\n }\n\n this._consequentFails += 1\n\n const wait = this.params.reconnectionStrategy(\n this.params,\n this._lastError,\n this._consequentFails,\n this._previousWait,\n )\n\n if (wait === false) {\n this.destroy().catch((err) => {\n this.log.warn('error destroying connection: %e', err)\n })\n\n return\n }\n\n this.emit('wait', wait)\n\n this._previousWait = wait\n\n if (this._reconnectionTimeout != null) {\n clearTimeout(this._reconnectionTimeout)\n }\n this._reconnectionTimeout = setTimeout(() => {\n if (this._destroyed) return\n this._reconnectionTimeout = null\n this.connect()\n }, wait)\n }\n\n connect(): void {\n if (this.isConnected) {\n throw new MtcuteError('Connection is already opened!')\n }\n if (this._destroyed) {\n throw new MtcuteError('Connection is already destroyed!')\n }\n\n if (this._reconnectionTimeout != null) {\n clearTimeout(this._reconnectionTimeout)\n this._reconnectionTimeout = null\n }\n\n this._inactive = false\n this._disconnectedManually = false\n this._transport.connect(this.params.dc, this.params.testMode)\n }\n\n reconnect(): void {\n if (this._inactive) return\n\n // if we are already connected\n if (this.isConnected) {\n this._shouldReconnectImmediately = true\n Promise.resolve(this._transport.close()).catch((err) => {\n this.log.error('error closing transport: %e', err)\n })\n\n return\n }\n\n // if reconnection timeout is pending, it will be cancelled in connect()\n this.connect()\n }\n\n async disconnectManual(): Promise<void> {\n this._disconnectedManually = true\n await this._transport.close()\n }\n\n async destroy(): Promise<void> {\n if (this._reconnectionTimeout != null) {\n clearTimeout(this._reconnectionTimeout)\n }\n if (this._inactivityTimeout != null) {\n clearTimeout(this._inactivityTimeout)\n }\n\n await this._transport.close()\n this._transport.removeAllListeners()\n this._destroyed = true\n }\n\n protected _rescheduleInactivity(): void {\n if (!this.params.inactivityTimeout) return\n if (this._inactivityTimeout) clearTimeout(this._inactivityTimeout)\n this._inactivityTimeout = setTimeout(this._onInactivityTimeout, this.params.inactivityTimeout)\n }\n\n protected _onInactivityTimeout(): void {\n this.log.info('disconnected because of inactivity for %d', this.params.inactivityTimeout)\n this._inactive = true\n this._inactivityTimeout = null\n Promise.resolve(this._transport.close()).catch((err) => {\n this.log.warn('error closing transport: %e', err)\n })\n }\n\n setInactivityTimeout(timeout?: number): void {\n this.params.inactivityTimeout = timeout\n\n if (this._inactivityTimeout) {\n clearTimeout(this._inactivityTimeout)\n }\n\n if (timeout) {\n this._rescheduleInactivity()\n }\n }\n\n async send(data: Uint8Array): Promise<void> {\n if (this._inactive) {\n this.connect()\n }\n\n if (this._transport.state() === TransportState.Ready) {\n await this._transport.send(data)\n } else {\n this._sendOnceConnected.push(data)\n }\n }\n}\n"]}
|
|
@@ -192,7 +192,7 @@ class SessionConnection extends persistent_connection_js_1.PersistentConnection
|
|
|
192
192
|
this.sendRpc({ _: 'updates.getState' }).catch((err) => {
|
|
193
193
|
if (this._destroyed || tl_1.tl.RpcError.is(err, 'AUTH_KEY_UNREGISTERED'))
|
|
194
194
|
return; // silently fail
|
|
195
|
-
this.log.warn('failed to send updates.getState: %
|
|
195
|
+
this.log.warn('failed to send updates.getState: %e', err);
|
|
196
196
|
});
|
|
197
197
|
}
|
|
198
198
|
// just in case
|
|
@@ -227,7 +227,7 @@ class SessionConnection extends persistent_connection_js_1.PersistentConnection
|
|
|
227
227
|
this._session.authorizationPending = false;
|
|
228
228
|
if (this._destroyed)
|
|
229
229
|
return;
|
|
230
|
-
this.log.error('Authorization error: %
|
|
230
|
+
this.log.error('Authorization error: %e', err);
|
|
231
231
|
this.onError(err);
|
|
232
232
|
this.reconnect();
|
|
233
233
|
});
|
|
@@ -352,7 +352,7 @@ class SessionConnection extends persistent_connection_js_1.PersistentConnection
|
|
|
352
352
|
.catch((err) => {
|
|
353
353
|
if (this._destroyed)
|
|
354
354
|
return;
|
|
355
|
-
this.log.error('PFS Authorization error: %
|
|
355
|
+
this.log.error('PFS Authorization error: %e', err);
|
|
356
356
|
if (this._isPfsBindingPendingInBackground) {
|
|
357
357
|
this._isPfsBindingPendingInBackground = false;
|
|
358
358
|
// if we are in background, we can just retry
|
|
@@ -627,7 +627,7 @@ class SessionConnection extends persistent_connection_js_1.PersistentConnection
|
|
|
627
627
|
this.log.debug('additional help.getNearestDc for initConnection ok');
|
|
628
628
|
})
|
|
629
629
|
.catch((err) => {
|
|
630
|
-
this.log.debug('additional help.getNearestDc for initConnection error: %
|
|
630
|
+
this.log.debug('additional help.getNearestDc for initConnection error: %e', err);
|
|
631
631
|
});
|
|
632
632
|
return;
|
|
633
633
|
}
|
|
@@ -1102,7 +1102,7 @@ class SessionConnection extends persistent_connection_js_1.PersistentConnection
|
|
|
1102
1102
|
}
|
|
1103
1103
|
else {
|
|
1104
1104
|
this.disconnectManual().catch((err) => {
|
|
1105
|
-
this.log.warn('error while disconnecting: %
|
|
1105
|
+
this.log.warn('error while disconnecting: %e', err);
|
|
1106
1106
|
});
|
|
1107
1107
|
}
|
|
1108
1108
|
}
|
|
@@ -1534,7 +1534,7 @@ class SessionConnection extends persistent_connection_js_1.PersistentConnection
|
|
|
1534
1534
|
this.log.debug('sending %d messages: size = %db, acks = %L, ping = %b (msg_id = %l), state_req = %L (msg_id = %l), resend = %L (msg_id = %l), cancels = %L (msg_id = %l), salts_req = %b (msg_id = %l), rpc = %s, container = %b, root msg_id = %l', messageCount, packetSize, ackMsgIds, pingRequest, pingMsgId, getStateMsgIds, getStateMsgId, resendMsgIds, cancelRpcs, cancelRpcs, resendMsgId, getFutureSaltsRequest, getFutureSaltsMsgId, rpcToSend.map((it) => it.method), useContainer, rootMsgId);
|
|
1535
1535
|
const enc = this._session.encryptMessage(result);
|
|
1536
1536
|
const promise = this.send(enc).catch((err) => {
|
|
1537
|
-
this.log.error('error while sending pending messages (root msg_id = %l): %
|
|
1537
|
+
this.log.error('error while sending pending messages (root msg_id = %l): %e', rootMsgId, err);
|
|
1538
1538
|
// put acks in the front so they are the first to be sent
|
|
1539
1539
|
if (ackMsgIds) {
|
|
1540
1540
|
this._session.queuedAcks.splice(0, 0, ...ackMsgIds);
|