@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.
Files changed (163) hide show
  1. package/cjs/highlevel/base.d.ts +3 -3
  2. package/cjs/highlevel/base.js.map +1 -1
  3. package/cjs/highlevel/methods/files/download-iterable.js +1 -1
  4. package/cjs/highlevel/methods/files/download-iterable.js.map +1 -1
  5. package/cjs/highlevel/methods/users/resolve-peer-many.js +1 -1
  6. package/cjs/highlevel/methods/users/resolve-peer-many.js.map +1 -1
  7. package/cjs/highlevel/types/messages/dialog.d.ts +4 -2
  8. package/cjs/highlevel/types/messages/dialog.js +4 -2
  9. package/cjs/highlevel/types/messages/dialog.js.map +1 -1
  10. package/cjs/highlevel/types/messages/message-action.d.ts +15 -1
  11. package/cjs/highlevel/types/messages/message-action.js +10 -0
  12. package/cjs/highlevel/types/messages/message-action.js.map +1 -1
  13. package/cjs/highlevel/types/peers/full-chat.d.ts +2 -0
  14. package/cjs/highlevel/types/peers/full-chat.js +4 -0
  15. package/cjs/highlevel/types/peers/full-chat.js.map +1 -1
  16. package/cjs/highlevel/updates/manager.js +3 -3
  17. package/cjs/highlevel/updates/manager.js.map +1 -1
  18. package/cjs/highlevel/worker/invoker.js +2 -1
  19. package/cjs/highlevel/worker/invoker.js.map +1 -1
  20. package/cjs/highlevel/worker/port.js +4 -3
  21. package/cjs/highlevel/worker/port.js.map +1 -1
  22. package/cjs/highlevel/worker/protocol.d.ts +10 -5
  23. package/cjs/highlevel/worker/protocol.js +66 -0
  24. package/cjs/highlevel/worker/protocol.js.map +1 -1
  25. package/cjs/highlevel/worker/worker.js +6 -5
  26. package/cjs/highlevel/worker/worker.js.map +1 -1
  27. package/cjs/network/client.d.ts +0 -16
  28. package/cjs/network/client.js +0 -2
  29. package/cjs/network/client.js.map +1 -1
  30. package/cjs/network/index.d.ts +2 -1
  31. package/cjs/network/index.js +1 -0
  32. package/cjs/network/index.js.map +1 -1
  33. package/cjs/network/middlewares/bundle.d.ts +3 -0
  34. package/cjs/network/middlewares/bundle.js +20 -0
  35. package/cjs/network/middlewares/bundle.js.map +1 -0
  36. package/cjs/network/middlewares/default.d.ts +8 -0
  37. package/cjs/network/middlewares/default.js +10 -0
  38. package/cjs/network/middlewares/default.js.map +1 -0
  39. package/cjs/network/middlewares/flood-waiter.d.ts +37 -0
  40. package/cjs/network/middlewares/flood-waiter.js +70 -0
  41. package/cjs/network/middlewares/flood-waiter.js.map +1 -0
  42. package/cjs/network/middlewares/index.d.ts +2 -0
  43. package/cjs/network/middlewares/index.js +29 -0
  44. package/cjs/network/middlewares/index.js.map +1 -0
  45. package/cjs/network/middlewares/internal-errors.d.ts +17 -0
  46. package/cjs/network/middlewares/internal-errors.js +41 -0
  47. package/cjs/network/middlewares/internal-errors.js.map +1 -0
  48. package/cjs/network/middlewares/on-error.d.ts +30 -0
  49. package/cjs/network/middlewares/on-error.js +44 -0
  50. package/cjs/network/middlewares/on-error.js.map +1 -0
  51. package/cjs/network/middlewares/on-method.d.ts +39 -0
  52. package/cjs/network/middlewares/on-method.js +45 -0
  53. package/cjs/network/middlewares/on-method.js.map +1 -0
  54. package/cjs/network/mtproto-session.js +1 -1
  55. package/cjs/network/mtproto-session.js.map +1 -1
  56. package/cjs/network/multi-session-connection.js +1 -1
  57. package/cjs/network/multi-session-connection.js.map +1 -1
  58. package/cjs/network/network-manager.d.ts +23 -6
  59. package/cjs/network/network-manager.js +55 -102
  60. package/cjs/network/network-manager.js.map +1 -1
  61. package/cjs/network/persistent-connection.js +5 -5
  62. package/cjs/network/persistent-connection.js.map +1 -1
  63. package/cjs/network/session-connection.js +6 -6
  64. package/cjs/network/session-connection.js.map +1 -1
  65. package/cjs/storage/driver.js +1 -1
  66. package/cjs/storage/driver.js.map +1 -1
  67. package/cjs/storage/storage.js +1 -1
  68. package/cjs/storage/storage.js.map +1 -1
  69. package/cjs/utils/abort-signal.d.ts +1 -0
  70. package/cjs/utils/abort-signal.js +13 -0
  71. package/cjs/utils/abort-signal.js.map +1 -0
  72. package/cjs/utils/composer.d.ts +3 -0
  73. package/cjs/utils/composer.js +22 -0
  74. package/cjs/utils/composer.js.map +1 -0
  75. package/cjs/utils/error-reporting.js +1 -1
  76. package/cjs/utils/error-reporting.js.map +1 -1
  77. package/cjs/utils/index.d.ts +1 -0
  78. package/cjs/utils/index.js +1 -0
  79. package/cjs/utils/index.js.map +1 -1
  80. package/cjs/utils/logger.js +15 -3
  81. package/cjs/utils/logger.js.map +1 -1
  82. package/esm/highlevel/base.d.ts +3 -3
  83. package/esm/highlevel/base.js.map +1 -1
  84. package/esm/highlevel/methods/files/download-iterable.js +1 -1
  85. package/esm/highlevel/methods/files/download-iterable.js.map +1 -1
  86. package/esm/highlevel/methods/users/resolve-peer-many.js +1 -1
  87. package/esm/highlevel/methods/users/resolve-peer-many.js.map +1 -1
  88. package/esm/highlevel/types/messages/dialog.d.ts +4 -2
  89. package/esm/highlevel/types/messages/dialog.js +4 -2
  90. package/esm/highlevel/types/messages/dialog.js.map +1 -1
  91. package/esm/highlevel/types/messages/message-action.d.ts +15 -1
  92. package/esm/highlevel/types/messages/message-action.js +10 -0
  93. package/esm/highlevel/types/messages/message-action.js.map +1 -1
  94. package/esm/highlevel/types/peers/full-chat.d.ts +2 -0
  95. package/esm/highlevel/types/peers/full-chat.js +4 -0
  96. package/esm/highlevel/types/peers/full-chat.js.map +1 -1
  97. package/esm/highlevel/updates/manager.js +3 -3
  98. package/esm/highlevel/updates/manager.js.map +1 -1
  99. package/esm/highlevel/worker/invoker.js +2 -1
  100. package/esm/highlevel/worker/invoker.js.map +1 -1
  101. package/esm/highlevel/worker/port.js +4 -3
  102. package/esm/highlevel/worker/port.js.map +1 -1
  103. package/esm/highlevel/worker/protocol.d.ts +10 -5
  104. package/esm/highlevel/worker/protocol.js +60 -1
  105. package/esm/highlevel/worker/protocol.js.map +1 -1
  106. package/esm/highlevel/worker/worker.js +6 -5
  107. package/esm/highlevel/worker/worker.js.map +1 -1
  108. package/esm/network/client.d.ts +0 -16
  109. package/esm/network/client.js +0 -2
  110. package/esm/network/client.js.map +1 -1
  111. package/esm/network/index.d.ts +2 -1
  112. package/esm/network/index.js +1 -0
  113. package/esm/network/index.js.map +1 -1
  114. package/esm/network/middlewares/bundle.d.ts +3 -0
  115. package/esm/network/middlewares/bundle.js +4 -0
  116. package/esm/network/middlewares/bundle.js.map +1 -0
  117. package/esm/network/middlewares/default.d.ts +8 -0
  118. package/esm/network/middlewares/default.js +6 -0
  119. package/esm/network/middlewares/default.js.map +1 -0
  120. package/esm/network/middlewares/flood-waiter.d.ts +37 -0
  121. package/esm/network/middlewares/flood-waiter.js +66 -0
  122. package/esm/network/middlewares/flood-waiter.js.map +1 -0
  123. package/esm/network/middlewares/index.d.ts +2 -0
  124. package/esm/network/middlewares/index.js +3 -0
  125. package/esm/network/middlewares/index.js.map +1 -0
  126. package/esm/network/middlewares/internal-errors.d.ts +17 -0
  127. package/esm/network/middlewares/internal-errors.js +37 -0
  128. package/esm/network/middlewares/internal-errors.js.map +1 -0
  129. package/esm/network/middlewares/on-error.d.ts +30 -0
  130. package/esm/network/middlewares/on-error.js +40 -0
  131. package/esm/network/middlewares/on-error.js.map +1 -0
  132. package/esm/network/middlewares/on-method.d.ts +39 -0
  133. package/esm/network/middlewares/on-method.js +41 -0
  134. package/esm/network/middlewares/on-method.js.map +1 -0
  135. package/esm/network/mtproto-session.js +1 -1
  136. package/esm/network/mtproto-session.js.map +1 -1
  137. package/esm/network/multi-session-connection.js +1 -1
  138. package/esm/network/multi-session-connection.js.map +1 -1
  139. package/esm/network/network-manager.d.ts +23 -6
  140. package/esm/network/network-manager.js +57 -104
  141. package/esm/network/network-manager.js.map +1 -1
  142. package/esm/network/persistent-connection.js +5 -5
  143. package/esm/network/persistent-connection.js.map +1 -1
  144. package/esm/network/session-connection.js +6 -6
  145. package/esm/network/session-connection.js.map +1 -1
  146. package/esm/storage/driver.js +1 -1
  147. package/esm/storage/driver.js.map +1 -1
  148. package/esm/storage/storage.js +1 -1
  149. package/esm/storage/storage.js.map +1 -1
  150. package/esm/utils/abort-signal.d.ts +1 -0
  151. package/esm/utils/abort-signal.js +9 -0
  152. package/esm/utils/abort-signal.js.map +1 -0
  153. package/esm/utils/composer.d.ts +3 -0
  154. package/esm/utils/composer.js +18 -0
  155. package/esm/utils/composer.js.map +1 -0
  156. package/esm/utils/error-reporting.js +1 -1
  157. package/esm/utils/error-reporting.js.map +1 -1
  158. package/esm/utils/index.d.ts +1 -0
  159. package/esm/utils/index.js +1 -0
  160. package/esm/utils/index.js.map +1 -1
  161. package/esm/utils/logger.js +15 -3
  162. package/esm/utils/logger.js.map +1 -1
  163. package/package.json +4 -4
@@ -7,7 +7,7 @@ export class BaseStorageDriver {
7
7
  _destroyed = false;
8
8
  _log;
9
9
  setup(log) {
10
- this._log = log;
10
+ this._log = log.create('sqlite');
11
11
  }
12
12
  get loaded() {
13
13
  return this._loadedTimes > 0;
@@ -1 +1 @@
1
- {"version":3,"file":"driver.js","sourceRoot":"","sources":["../../../src/storage/driver.ts"],"names":[],"mappings":"AA0CA;;;GAGG;AACH,MAAM,OAAgB,iBAAiB;IAK3B,YAAY,GAAG,CAAC,CAAA;IAChB,UAAU,GAAG,KAAK,CAAA;IAEhB,IAAI,CAAS;IAEvB,KAAK,CAAC,GAAW;QACb,IAAI,CAAC,IAAI,GAAG,GAAG,CAAA;IACnB,CAAC;IAED,IAAc,MAAM;QAChB,OAAO,IAAI,CAAC,YAAY,GAAG,CAAC,CAAA;IAChC,CAAC;IAED,KAAK,CAAC,IAAI;QACN,IAAI,IAAI,CAAC,YAAY,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,CAAC,KAAK,EAAE,CAAA;YAClB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAA;QAC3B,CAAC;QAED,IAAI,CAAC,YAAY,EAAE,CAAA;IACvB,CAAC;IAED,KAAK,CAAC,OAAO;QACT,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,OAAM;QACV,CAAC;QAED,IAAI,CAAC,YAAY,EAAE,CAAA;QAEnB,IAAI,IAAI,CAAC,YAAY,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAA;YACrB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;QAC1B,CAAC;IACL,CAAC;IAED,IAAI;QACA,OAAO,IAAI,CAAC,KAAK,EAAE,EAAE,CAAA;IACzB,CAAC;CACJ","sourcesContent":["import { MaybePromise } from '../types/utils.js'\nimport { Logger } from '../utils/logger.js'\n\n/**\n * Basic storage driver interface,\n * describing the lifecycle of a storage driver\n */\nexport interface IStorageDriver {\n /**\n * Load session from some external storage.\n * Should be used either to load data from file/network/etc\n * to memory, or to open required connections to fetch data on demand\n *\n * May be called more than once, handle this with care\n * (or use {@link BaseStorageDriver} that handles this for you)\n */\n load?(): MaybePromise<void>\n /**\n * Save session to some external storage.\n * Should be used to commit pending changes in the session.\n * For example, saving session content to file/network/etc,\n * or committing a database transaction\n *\n * It is safe to batch all changes and only commit them here,\n * unless stated otherwise in the method description\n */\n save?(): MaybePromise<void>\n /**\n * Cleanup session and release all used resources.\n *\n * May be called more than once, handle this with care\n * (or use {@link BaseStorageDriver} that handles this for you)\n */\n destroy?(): MaybePromise<void>\n\n /**\n * Setup the driver, passing the logger instance,\n * in case your driver needs it\n */\n setup?(log: Logger): void\n}\n\n/**\n * Base storage driver class, implementing {@link IStorageDriver}\n * and handling the lifecycle for you\n */\nexport abstract class BaseStorageDriver implements IStorageDriver {\n abstract _load(): MaybePromise<void>\n abstract _destroy(): MaybePromise<void>\n abstract _save?(): MaybePromise<void>\n\n private _loadedTimes = 0\n private _destroyed = false\n\n protected _log!: Logger\n\n setup(log: Logger): void {\n this._log = log\n }\n\n protected get loaded(): boolean {\n return this._loadedTimes > 0\n }\n\n async load(): Promise<void> {\n if (this._loadedTimes === 0) {\n await this._load()\n this._destroyed = false\n }\n\n this._loadedTimes++\n }\n\n async destroy(): Promise<void> {\n if (this._destroyed) {\n return\n }\n\n this._loadedTimes--\n\n if (this._loadedTimes === 0) {\n await this._destroy()\n this._destroyed = true\n }\n }\n\n save(): MaybePromise<void> {\n return this._save?.()\n }\n}\n"]}
1
+ {"version":3,"file":"driver.js","sourceRoot":"","sources":["../../../src/storage/driver.ts"],"names":[],"mappings":"AA0CA;;;GAGG;AACH,MAAM,OAAgB,iBAAiB;IAK3B,YAAY,GAAG,CAAC,CAAA;IAChB,UAAU,GAAG,KAAK,CAAA;IAEhB,IAAI,CAAS;IAEvB,KAAK,CAAC,GAAW;QACb,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IACpC,CAAC;IAED,IAAc,MAAM;QAChB,OAAO,IAAI,CAAC,YAAY,GAAG,CAAC,CAAA;IAChC,CAAC;IAED,KAAK,CAAC,IAAI;QACN,IAAI,IAAI,CAAC,YAAY,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,CAAC,KAAK,EAAE,CAAA;YAClB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAA;QAC3B,CAAC;QAED,IAAI,CAAC,YAAY,EAAE,CAAA;IACvB,CAAC;IAED,KAAK,CAAC,OAAO;QACT,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,OAAM;QACV,CAAC;QAED,IAAI,CAAC,YAAY,EAAE,CAAA;QAEnB,IAAI,IAAI,CAAC,YAAY,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAA;YACrB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;QAC1B,CAAC;IACL,CAAC;IAED,IAAI;QACA,OAAO,IAAI,CAAC,KAAK,EAAE,EAAE,CAAA;IACzB,CAAC;CACJ","sourcesContent":["import { MaybePromise } from '../types/utils.js'\nimport { Logger } from '../utils/logger.js'\n\n/**\n * Basic storage driver interface,\n * describing the lifecycle of a storage driver\n */\nexport interface IStorageDriver {\n /**\n * Load session from some external storage.\n * Should be used either to load data from file/network/etc\n * to memory, or to open required connections to fetch data on demand\n *\n * May be called more than once, handle this with care\n * (or use {@link BaseStorageDriver} that handles this for you)\n */\n load?(): MaybePromise<void>\n /**\n * Save session to some external storage.\n * Should be used to commit pending changes in the session.\n * For example, saving session content to file/network/etc,\n * or committing a database transaction\n *\n * It is safe to batch all changes and only commit them here,\n * unless stated otherwise in the method description\n */\n save?(): MaybePromise<void>\n /**\n * Cleanup session and release all used resources.\n *\n * May be called more than once, handle this with care\n * (or use {@link BaseStorageDriver} that handles this for you)\n */\n destroy?(): MaybePromise<void>\n\n /**\n * Setup the driver, passing the logger instance,\n * in case your driver needs it\n */\n setup?(log: Logger): void\n}\n\n/**\n * Base storage driver class, implementing {@link IStorageDriver}\n * and handling the lifecycle for you\n */\nexport abstract class BaseStorageDriver implements IStorageDriver {\n abstract _load(): MaybePromise<void>\n abstract _destroy(): MaybePromise<void>\n abstract _save?(): MaybePromise<void>\n\n private _loadedTimes = 0\n private _destroyed = false\n\n protected _log!: Logger\n\n setup(log: Logger): void {\n this._log = log.create('sqlite')\n }\n\n protected get loaded(): boolean {\n return this._loadedTimes > 0\n }\n\n async load(): Promise<void> {\n if (this._loadedTimes === 0) {\n await this._load()\n this._destroyed = false\n }\n\n this._loadedTimes++\n }\n\n async destroy(): Promise<void> {\n if (this._destroyed) {\n return\n }\n\n this._loadedTimes--\n\n if (this._loadedTimes === 0) {\n await this._destroy()\n this._destroyed = true\n }\n }\n\n save(): MaybePromise<void> {\n return this._save?.()\n }\n}\n"]}
@@ -31,7 +31,7 @@ export class StorageManager {
31
31
  this.driver.setup?.(this.log);
32
32
  if (this.options.cleanup ?? true) {
33
33
  this._cleanupRestore = getPlatform().beforeExit(() => {
34
- this._destroy().catch((err) => this.log.error('cleanup error: %s', err));
34
+ this._destroy().catch((err) => this.log.error('cleanup error: %e', err));
35
35
  });
36
36
  }
37
37
  await this.driver.load?.();
@@ -1 +1 @@
1
- {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../../src/storage/storage.ts"],"names":[],"mappings":"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","sourcesContent":["import { TlReaderMap, TlWriterMap } from '@mtcute/tl-runtime'\n\nimport { getPlatform } from '../platform.js'\nimport { asyncResettable } from '../utils/index.js'\nimport { Logger } from '../utils/logger.js'\nimport { IMtStorageProvider } from './provider.js'\nimport { AuthKeysService } from './service/auth-keys.js'\nimport { ServiceOptions } from './service/base.js'\nimport { DefaultDcsService } from './service/default-dcs.js'\nimport { FutureSaltsService } from './service/future-salts.js'\n\ninterface StorageManagerOptions {\n provider: IMtStorageProvider\n log: Logger\n readerMap: TlReaderMap\n writerMap: TlWriterMap\n}\n\n/**\n * Additional options for {@link StorageManager}, that\n * can be customized by the user.\n *\n * @internal\n */\nexport interface StorageManagerExtraOptions {\n /**\n * Interval in milliseconds for saving the storage.\n *\n * When saving, the storage is expected to persist\n * all changes to disk, so that they are not lost.\n */\n saveInterval?: number\n\n /**\n * Whether to finalize database before exiting.\n *\n * @default `true`\n */\n cleanup?: boolean\n}\n\nexport class StorageManager {\n readonly provider\n readonly driver\n readonly log\n readonly dcs\n readonly salts\n readonly keys\n\n constructor(readonly options: StorageManagerOptions & StorageManagerExtraOptions) {\n this.provider = this.options.provider\n this.driver = this.provider.driver\n this.log = this.options.log.create('storage')\n\n const serviceOptions: ServiceOptions = {\n driver: this.driver,\n readerMap: this.options.readerMap,\n writerMap: this.options.writerMap,\n log: this.log,\n }\n\n this.dcs = new DefaultDcsService(this.provider.kv, serviceOptions)\n this.salts = new FutureSaltsService(this.provider.kv, serviceOptions)\n this.keys = new AuthKeysService(this.provider.authKeys, this.salts, serviceOptions)\n }\n\n private _cleanupRestore?: () => void\n\n private _load = asyncResettable(async () => {\n this.driver.setup?.(this.log)\n\n if (this.options.cleanup ?? true) {\n this._cleanupRestore = getPlatform().beforeExit(() => {\n this._destroy().catch((err) => this.log.error('cleanup error: %s', err))\n })\n }\n\n await this.driver.load?.()\n })\n load(): Promise<void> {\n return this._load.run()\n }\n\n async save(): Promise<void> {\n await this.driver.save?.()\n }\n\n async clear(withAuthKeys = false) {\n if (withAuthKeys) {\n await this.provider.authKeys.deleteAll()\n }\n await this.provider.kv.deleteAll()\n await this.save()\n }\n\n private async _destroy(): Promise<void> {\n if (!this._load.finished()) return\n await this._load.wait()\n\n await this.driver.destroy?.()\n this._load.reset()\n }\n\n async destroy(): Promise<void> {\n if (this._cleanupRestore) {\n this._cleanupRestore()\n this._cleanupRestore = undefined\n }\n\n await this._destroy()\n }\n}\n"]}
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../../src/storage/storage.ts"],"names":[],"mappings":"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","sourcesContent":["import { TlReaderMap, TlWriterMap } from '@mtcute/tl-runtime'\n\nimport { getPlatform } from '../platform.js'\nimport { asyncResettable } from '../utils/index.js'\nimport { Logger } from '../utils/logger.js'\nimport { IMtStorageProvider } from './provider.js'\nimport { AuthKeysService } from './service/auth-keys.js'\nimport { ServiceOptions } from './service/base.js'\nimport { DefaultDcsService } from './service/default-dcs.js'\nimport { FutureSaltsService } from './service/future-salts.js'\n\ninterface StorageManagerOptions {\n provider: IMtStorageProvider\n log: Logger\n readerMap: TlReaderMap\n writerMap: TlWriterMap\n}\n\n/**\n * Additional options for {@link StorageManager}, that\n * can be customized by the user.\n *\n * @internal\n */\nexport interface StorageManagerExtraOptions {\n /**\n * Interval in milliseconds for saving the storage.\n *\n * When saving, the storage is expected to persist\n * all changes to disk, so that they are not lost.\n */\n saveInterval?: number\n\n /**\n * Whether to finalize database before exiting.\n *\n * @default `true`\n */\n cleanup?: boolean\n}\n\nexport class StorageManager {\n readonly provider\n readonly driver\n readonly log\n readonly dcs\n readonly salts\n readonly keys\n\n constructor(readonly options: StorageManagerOptions & StorageManagerExtraOptions) {\n this.provider = this.options.provider\n this.driver = this.provider.driver\n this.log = this.options.log.create('storage')\n\n const serviceOptions: ServiceOptions = {\n driver: this.driver,\n readerMap: this.options.readerMap,\n writerMap: this.options.writerMap,\n log: this.log,\n }\n\n this.dcs = new DefaultDcsService(this.provider.kv, serviceOptions)\n this.salts = new FutureSaltsService(this.provider.kv, serviceOptions)\n this.keys = new AuthKeysService(this.provider.authKeys, this.salts, serviceOptions)\n }\n\n private _cleanupRestore?: () => void\n\n private _load = asyncResettable(async () => {\n this.driver.setup?.(this.log)\n\n if (this.options.cleanup ?? true) {\n this._cleanupRestore = getPlatform().beforeExit(() => {\n this._destroy().catch((err) => this.log.error('cleanup error: %e', err))\n })\n }\n\n await this.driver.load?.()\n })\n load(): Promise<void> {\n return this._load.run()\n }\n\n async save(): Promise<void> {\n await this.driver.save?.()\n }\n\n async clear(withAuthKeys = false) {\n if (withAuthKeys) {\n await this.provider.authKeys.deleteAll()\n }\n await this.provider.kv.deleteAll()\n await this.save()\n }\n\n private async _destroy(): Promise<void> {\n if (!this._load.finished()) return\n await this._load.wait()\n\n await this.driver.destroy?.()\n this._load.reset()\n }\n\n async destroy(): Promise<void> {\n if (this._cleanupRestore) {\n this._cleanupRestore()\n this._cleanupRestore = undefined\n }\n\n await this._destroy()\n }\n}\n"]}
@@ -0,0 +1 @@
1
+ export declare function combineAbortSignals(signal1: AbortSignal, signal2?: AbortSignal): AbortSignal;
@@ -0,0 +1,9 @@
1
+ export function combineAbortSignals(signal1, signal2) {
2
+ if (!signal2)
3
+ return signal1;
4
+ const controller = new AbortController();
5
+ signal1.addEventListener('abort', () => controller.abort());
6
+ signal2.addEventListener('abort', () => controller.abort());
7
+ return controller.signal;
8
+ }
9
+ //# sourceMappingURL=abort-signal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abort-signal.js","sourceRoot":"","sources":["../../../src/utils/abort-signal.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,mBAAmB,CAAC,OAAoB,EAAE,OAAqB;IAC3E,IAAI,CAAC,OAAO;QAAE,OAAO,OAAO,CAAA;IAE5B,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;IAExC,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAA;IAC3D,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAA;IAE3D,OAAO,UAAU,CAAC,MAAM,CAAA;AAC5B,CAAC","sourcesContent":["export function combineAbortSignals(signal1: AbortSignal, signal2?: AbortSignal): AbortSignal {\n if (!signal2) return signal1\n\n const controller = new AbortController()\n\n signal1.addEventListener('abort', () => controller.abort())\n signal2.addEventListener('abort', () => controller.abort())\n\n return controller.signal\n}\n"]}
@@ -0,0 +1,3 @@
1
+ export type Middleware<Context, Result = void> = (ctx: Context, next: (ctx: Context) => Promise<Result>) => Promise<Result>;
2
+ export type ComposedMiddleware<Context, Result = void> = (ctx: Context) => Promise<Result>;
3
+ export declare function composeMiddlewares<Context, Result = void>(middlewares: Middleware<Context, Result>[], final: ComposedMiddleware<Context, Result>): ComposedMiddleware<Context, Result>;
@@ -0,0 +1,18 @@
1
+ export function composeMiddlewares(middlewares, final) {
2
+ middlewares = middlewares.slice();
3
+ middlewares.push(final);
4
+ function dispatch(i, ctx) {
5
+ const fn = middlewares[i];
6
+ if (!fn)
7
+ return final(ctx);
8
+ return fn(ctx, boundDispatches[i + 1]);
9
+ }
10
+ const boundDispatches = [];
11
+ for (let i = 0; i < middlewares.length; i++) {
12
+ boundDispatches.push(dispatch.bind(null, i));
13
+ }
14
+ return function (context) {
15
+ return boundDispatches[0](context);
16
+ };
17
+ }
18
+ //# sourceMappingURL=composer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composer.js","sourceRoot":"","sources":["../../../src/utils/composer.ts"],"names":[],"mappings":"AAMA,MAAM,UAAU,kBAAkB,CAC9B,WAA0C,EAC1C,KAA0C;IAE1C,WAAW,GAAG,WAAW,CAAC,KAAK,EAAE,CAAA;IACjC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAEvB,SAAS,QAAQ,CAAC,CAAS,EAAE,GAAY;QACrC,MAAM,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC,CAAA;QACzB,IAAI,CAAC,EAAE;YAAE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAA;QAE1B,OAAO,EAAE,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IAC1C,CAAC;IAED,MAAM,eAAe,GAA6C,EAAE,CAAA;IAEpE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;IAChD,CAAC;IAED,OAAO,UAAU,OAAgB;QAC7B,OAAO,eAAe,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;IACtC,CAAC,CAAA;AACL,CAAC","sourcesContent":["export type Middleware<Context, Result = void> = (\n ctx: Context,\n next: (ctx: Context) => Promise<Result>,\n) => Promise<Result>\nexport type ComposedMiddleware<Context, Result = void> = (ctx: Context) => Promise<Result>\n\nexport function composeMiddlewares<Context, Result = void>(\n middlewares: Middleware<Context, Result>[],\n final: ComposedMiddleware<Context, Result>,\n): ComposedMiddleware<Context, Result> {\n middlewares = middlewares.slice()\n middlewares.push(final)\n\n function dispatch(i: number, ctx: Context): Promise<Result> {\n const fn = middlewares[i]\n if (!fn) return final(ctx)\n\n return fn(ctx, boundDispatches[i + 1])\n }\n\n const boundDispatches: Array<(ctx: Context) => Promise<Result>> = []\n\n for (let i = 0; i < middlewares.length; i++) {\n boundDispatches.push(dispatch.bind(null, i))\n }\n\n return function (context: Context): Promise<Result> {\n return boundDispatches[0](context)\n }\n}\n"]}
@@ -12,7 +12,7 @@ export function reportUnknownError(log, error, method) {
12
12
  }
13
13
  })
14
14
  .catch((e) => {
15
- log.debug('failed to report error %s to telerpc: %s', error.text, e);
15
+ log.debug('failed to report error %s to telerpc: %e', error.text, e);
16
16
  });
17
17
  }
18
18
  //# sourceMappingURL=error-reporting.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"error-reporting.js","sourceRoot":"","sources":["../../../src/utils/error-reporting.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,kBAAkB,CAAC,GAAW,EAAE,KAAkB,EAAE,MAAc;IAC9E,IAAI,OAAO,KAAK,KAAK,UAAU;QAAE,OAAM;IAEvC,KAAK,CAAC,qCAAqC,KAAK,CAAC,IAAI,WAAW,MAAM,UAAU,KAAK,CAAC,IAAI,EAAE,CAAC;SACxF,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACrB,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;QACR,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC;YACP,GAAG,CAAC,IAAI,CAAC,8CAA8C,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAA;QAClF,CAAC;aAAM,CAAC;YACJ,GAAG,CAAC,IAAI,CACJ,wFAAwF,EACxF,KAAK,CAAC,IAAI,CACb,CAAA;QACL,CAAC;IACL,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,GAAG,CAAC,KAAK,CAAC,0CAA0C,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IACxE,CAAC,CAAC,CAAA;AACV,CAAC","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { Logger } from './logger.js'\n\nexport function reportUnknownError(log: Logger, error: tl.RpcError, method: string): void {\n if (typeof fetch !== 'function') return\n\n fetch(`https://rpc.pwrtelegram.xyz/?code=${error.code}&method=${method}&error=${error.text}`)\n .then((r) => r.json())\n .then((r) => {\n if (r.ok) {\n log.info('telerpc responded with error info for %s: %s', error.text, r.result)\n } else {\n log.info(\n 'Reported error %s to telerpc. You can disable this using `enableErrorReporting: false`',\n error.text,\n )\n }\n })\n .catch((e) => {\n log.debug('failed to report error %s to telerpc: %s', error.text, e)\n })\n}\n"]}
1
+ {"version":3,"file":"error-reporting.js","sourceRoot":"","sources":["../../../src/utils/error-reporting.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,kBAAkB,CAAC,GAAW,EAAE,KAAkB,EAAE,MAAc;IAC9E,IAAI,OAAO,KAAK,KAAK,UAAU;QAAE,OAAM;IAEvC,KAAK,CAAC,qCAAqC,KAAK,CAAC,IAAI,WAAW,MAAM,UAAU,KAAK,CAAC,IAAI,EAAE,CAAC;SACxF,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACrB,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;QACR,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC;YACP,GAAG,CAAC,IAAI,CAAC,8CAA8C,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAA;QAClF,CAAC;aAAM,CAAC;YACJ,GAAG,CAAC,IAAI,CACJ,wFAAwF,EACxF,KAAK,CAAC,IAAI,CACb,CAAA;QACL,CAAC;IACL,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,GAAG,CAAC,KAAK,CAAC,0CAA0C,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IACxE,CAAC,CAAC,CAAA;AACV,CAAC","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { Logger } from './logger.js'\n\nexport function reportUnknownError(log: Logger, error: tl.RpcError, method: string): void {\n if (typeof fetch !== 'function') return\n\n fetch(`https://rpc.pwrtelegram.xyz/?code=${error.code}&method=${method}&error=${error.text}`)\n .then((r) => r.json())\n .then((r) => {\n if (r.ok) {\n log.info('telerpc responded with error info for %s: %s', error.text, r.result)\n } else {\n log.info(\n 'Reported error %s to telerpc. You can disable this using `enableErrorReporting: false`',\n error.text,\n )\n }\n })\n .catch((e) => {\n log.debug('failed to report error %s to telerpc: %e', error.text, e)\n })\n}\n"]}
@@ -6,6 +6,7 @@ export * from '../storage/service/default-dcs.js';
6
6
  export * from './async-lock.js';
7
7
  export * from './bigint-utils.js';
8
8
  export * from './buffer-utils.js';
9
+ export * from './composer.js';
9
10
  export * from './condition-variable.js';
10
11
  export * from './controllable-promise.js';
11
12
  export * from './crypto/index.js';
@@ -8,6 +8,7 @@ export * from '../storage/service/default-dcs.js';
8
8
  export * from './async-lock.js';
9
9
  export * from './bigint-utils.js';
10
10
  export * from './buffer-utils.js';
11
+ export * from './composer.js';
11
12
  export * from './condition-variable.js';
12
13
  export * from './controllable-promise.js';
13
14
  export * from './crypto/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAA;AAC3C,2BAA2B;AAC3B,cAAc,8CAA8C,CAAA;AAC5D,cAAc,yCAAyC,CAAA;AACvD,cAAc,4BAA4B,CAAA;AAC1C,cAAc,mCAAmC,CAAA;AACjD,WAAW;AACX,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA;AACjC,cAAc,yBAAyB,CAAA;AACvC,cAAc,2BAA2B,CAAA;AACzC,cAAc,mBAAmB,CAAA;AACjC,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,kBAAkB,CAAA;AAChC,cAAc,qBAAqB,CAAA;AACnC,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AACjC,cAAc,cAAc,CAAA;AAC5B,cAAc,sBAAsB,CAAA;AACpC,cAAc,oBAAoB,CAAA","sourcesContent":["export * from '../highlevel/utils/index.js'\n// todo: remove after 1.0.0\nexport * from '../highlevel/storage/service/current-user.js'\nexport * from '../highlevel/storage/service/updates.js'\nexport * from '../storage/service/base.js'\nexport * from '../storage/service/default-dcs.js'\n// end todo\nexport * from './async-lock.js'\nexport * from './bigint-utils.js'\nexport * from './buffer-utils.js'\nexport * from './condition-variable.js'\nexport * from './controllable-promise.js'\nexport * from './crypto/index.js'\nexport * from './dcs.js'\nexport * from './deque.js'\nexport * from './early-timer.js'\nexport * from './function-utils.js'\nexport * from './linked-list.js'\nexport * from './links/index.js'\nexport * from './logger.js'\nexport * from './long-utils.js'\nexport * from './lru-map.js'\nexport * from './lru-set.js'\nexport * from './misc-utils.js'\nexport * from './peer-utils.js'\nexport * from './sorted-array.js'\nexport * from './tl-json.js'\nexport * from './type-assertions.js'\nexport * from '@mtcute/tl-runtime'\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAA;AAC3C,2BAA2B;AAC3B,cAAc,8CAA8C,CAAA;AAC5D,cAAc,yCAAyC,CAAA;AACvD,cAAc,4BAA4B,CAAA;AAC1C,cAAc,mCAAmC,CAAA;AACjD,WAAW;AACX,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA;AACjC,cAAc,eAAe,CAAA;AAC7B,cAAc,yBAAyB,CAAA;AACvC,cAAc,2BAA2B,CAAA;AACzC,cAAc,mBAAmB,CAAA;AACjC,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,kBAAkB,CAAA;AAChC,cAAc,qBAAqB,CAAA;AACnC,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AACjC,cAAc,cAAc,CAAA;AAC5B,cAAc,sBAAsB,CAAA;AACpC,cAAc,oBAAoB,CAAA","sourcesContent":["export * from '../highlevel/utils/index.js'\n// todo: remove after 1.0.0\nexport * from '../highlevel/storage/service/current-user.js'\nexport * from '../highlevel/storage/service/updates.js'\nexport * from '../storage/service/base.js'\nexport * from '../storage/service/default-dcs.js'\n// end todo\nexport * from './async-lock.js'\nexport * from './bigint-utils.js'\nexport * from './buffer-utils.js'\nexport * from './composer.js'\nexport * from './condition-variable.js'\nexport * from './controllable-promise.js'\nexport * from './crypto/index.js'\nexport * from './dcs.js'\nexport * from './deque.js'\nexport * from './early-timer.js'\nexport * from './function-utils.js'\nexport * from './linked-list.js'\nexport * from './links/index.js'\nexport * from './logger.js'\nexport * from './long-utils.js'\nexport * from './lru-map.js'\nexport * from './lru-set.js'\nexport * from './misc-utils.js'\nexport * from './peer-utils.js'\nexport * from './sorted-array.js'\nexport * from './tl-json.js'\nexport * from './type-assertions.js'\nexport * from '@mtcute/tl-runtime'\n"]}
@@ -1,5 +1,7 @@
1
+ import { tl } from '@mtcute/tl';
1
2
  import { getPlatform } from '../platform.js';
2
- const DEFAULT_LOG_LEVEL = 3;
3
+ import { isTlRpcError } from './type-assertions.js';
4
+ const DEFAULT_LOG_LEVEL = 2;
3
5
  const FORMATTER_RE = /%[a-zA-Z]/g;
4
6
  /**
5
7
  * Logger created by {@link LogManager}
@@ -44,10 +46,11 @@ export class Logger {
44
46
  fmt.includes('%j') ||
45
47
  fmt.includes('%J') ||
46
48
  fmt.includes('%l') ||
47
- fmt.includes('%L')) {
49
+ fmt.includes('%L') ||
50
+ fmt.includes('%e')) {
48
51
  let idx = 0;
49
52
  fmt = fmt.replace(FORMATTER_RE, (m) => {
50
- if (m === '%h' || m === '%b' || m === '%j' || m === '%J' || m === '%l' || m === '%L') {
53
+ if (m === '%h' || m === '%b' || m === '%j' || m === '%J' || m === '%l' || m === '%L' || m === '%e') {
51
54
  let val = args[idx];
52
55
  args.splice(idx, 1);
53
56
  if (m === '%h') {
@@ -85,6 +88,15 @@ export class Logger {
85
88
  return 'n/a';
86
89
  return `[${val.map(String).join(', ')}]`;
87
90
  }
91
+ if (m === '%e') {
92
+ if (isTlRpcError(val)) {
93
+ return `${val.errorCode} ${val.errorMessage}`;
94
+ }
95
+ if (tl.RpcError.is(val)) {
96
+ return `${val.code} ${val.text}`;
97
+ }
98
+ return val && typeof val === 'object' ? val.stack || val.message : String(val);
99
+ }
88
100
  }
89
101
  idx++;
90
102
  return m;
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/utils/logger.ts"],"names":[],"mappings":"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","sourcesContent":["import { getPlatform } from '../platform.js'\n\nconst DEFAULT_LOG_LEVEL = 3\nconst FORMATTER_RE = /%[a-zA-Z]/g\n\n/**\n * Logger created by {@link LogManager}\n */\nexport class Logger {\n private color: number\n\n prefix = ''\n\n constructor(\n readonly mgr: LogManager,\n readonly tag: string,\n readonly parent: Logger = mgr,\n ) {\n let hash = 0\n\n for (let i = 0; i < tag.length; i++) {\n hash = (hash << 5) - hash + tag.charCodeAt(i)\n hash |= 0 // convert to 32bit int\n }\n\n this.color = Math.abs(hash) % 6\n }\n\n getPrefix(): string {\n let s = ''\n\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n let obj: Logger | undefined = this\n\n while (obj) {\n if (obj.prefix) s = obj.prefix + s\n obj = obj.parent\n }\n\n return s\n }\n\n log(level: number, fmt: string, ...args: unknown[]): void {\n if (level > this.mgr.level) return\n // eslint-disable-next-line dot-notation\n if (!this.mgr['_filter'](this.tag)) return\n\n // custom formatters\n if (\n fmt.includes('%h') ||\n fmt.includes('%b') ||\n fmt.includes('%j') ||\n fmt.includes('%J') ||\n fmt.includes('%l') ||\n fmt.includes('%L')\n ) {\n let idx = 0\n fmt = fmt.replace(FORMATTER_RE, (m) => {\n if (m === '%h' || m === '%b' || m === '%j' || m === '%J' || m === '%l' || m === '%L') {\n let val = args[idx]\n\n args.splice(idx, 1)\n\n if (m === '%h') {\n if (ArrayBuffer.isView(val)) return this.mgr.platform.hexEncode(val as Uint8Array)\n if (typeof val === 'number' || typeof val === 'bigint') return val.toString(16)\n\n return String(val)\n }\n if (m === '%b') return String(Boolean(val))\n\n if (m === '%j' || m === '%J') {\n if (m === '%J') {\n val = [...(val as IterableIterator<unknown>)]\n }\n\n return JSON.stringify(val, (k, v) => {\n if (\n ArrayBuffer.isView(v) ||\n (typeof v === 'object' && v.type === 'Buffer' && Array.isArray(v.data)) // todo: how can we do this better?\n ) {\n // eslint-disable-next-line\n let str = v.data ? Buffer.from(v.data as number[]).toString('hex') : this.mgr.platform.hexEncode(v)\n\n if (str.length > 300) {\n str = str.slice(0, 300) + '...'\n }\n\n return str\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return v\n })\n }\n if (m === '%l') return String(val)\n\n if (m === '%L') {\n if (!Array.isArray(val)) return 'n/a'\n\n return `[${(val as unknown[]).map(String).join(', ')}]`\n }\n }\n\n idx++\n\n return m\n })\n }\n\n this.mgr.handler(this.color, level, this.tag, this.getPrefix() + fmt, args)\n }\n\n readonly error = this.log.bind(this, LogManager.ERROR)\n readonly warn = this.log.bind(this, LogManager.WARN)\n readonly info = this.log.bind(this, LogManager.INFO)\n readonly debug = this.log.bind(this, LogManager.DEBUG)\n readonly verbose = this.log.bind(this, LogManager.VERBOSE)\n\n /**\n * Create a {@link Logger} with the given tag\n * from the same {@link LogManager} as the current\n * Logger.\n *\n * @param tag Logger tag\n */\n create(tag: string): Logger {\n return new Logger(this.mgr, tag, this)\n }\n}\n\nconst defaultFilter = () => true\n\n/**\n * Log manager. A logger that allows managing child loggers\n */\nexport class LogManager extends Logger {\n static OFF = 0\n static ERROR = 1\n static WARN = 2\n static INFO = 3\n static DEBUG = 4\n static VERBOSE = 5\n\n readonly platform\n level: number\n handler\n\n constructor(tag = 'base') {\n // workaround because we cant pass this to super\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,@typescript-eslint/no-unsafe-argument\n super(null as any, tag)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ;(this as any).mgr = this\n\n this.platform = getPlatform()\n this.level = this.platform.getDefaultLogLevel() ?? DEFAULT_LOG_LEVEL\n this.handler = this.platform.log.bind(this.platform)\n }\n\n private _filter: (tag: string) => boolean = defaultFilter\n\n /**\n * Create a {@link Logger} with the given tag\n *\n * @param tag Logger tag\n */\n create(tag: string): Logger {\n return new Logger(this, tag)\n }\n\n /**\n * Filter logging by tags.\n *\n * @param cb\n */\n filter(cb: ((tag: string) => boolean) | null): void {\n this._filter = cb ?? defaultFilter\n }\n}\n"]}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/utils/logger.ts"],"names":[],"mappings":"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","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { getPlatform } from '../platform.js'\nimport { isTlRpcError } from './type-assertions.js'\n\nconst DEFAULT_LOG_LEVEL = 2\nconst FORMATTER_RE = /%[a-zA-Z]/g\n\n/**\n * Logger created by {@link LogManager}\n */\nexport class Logger {\n private color: number\n\n prefix = ''\n\n constructor(\n readonly mgr: LogManager,\n readonly tag: string,\n readonly parent: Logger = mgr,\n ) {\n let hash = 0\n\n for (let i = 0; i < tag.length; i++) {\n hash = (hash << 5) - hash + tag.charCodeAt(i)\n hash |= 0 // convert to 32bit int\n }\n\n this.color = Math.abs(hash) % 6\n }\n\n getPrefix(): string {\n let s = ''\n\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n let obj: Logger | undefined = this\n\n while (obj) {\n if (obj.prefix) s = obj.prefix + s\n obj = obj.parent\n }\n\n return s\n }\n\n log(level: number, fmt: string, ...args: unknown[]): void {\n if (level > this.mgr.level) return\n // eslint-disable-next-line dot-notation\n if (!this.mgr['_filter'](this.tag)) return\n\n // custom formatters\n if (\n fmt.includes('%h') ||\n fmt.includes('%b') ||\n fmt.includes('%j') ||\n fmt.includes('%J') ||\n fmt.includes('%l') ||\n fmt.includes('%L') ||\n fmt.includes('%e')\n ) {\n let idx = 0\n fmt = fmt.replace(FORMATTER_RE, (m) => {\n if (m === '%h' || m === '%b' || m === '%j' || m === '%J' || m === '%l' || m === '%L' || m === '%e') {\n let val = args[idx]\n\n args.splice(idx, 1)\n\n if (m === '%h') {\n if (ArrayBuffer.isView(val)) return this.mgr.platform.hexEncode(val as Uint8Array)\n if (typeof val === 'number' || typeof val === 'bigint') return val.toString(16)\n\n return String(val)\n }\n if (m === '%b') return String(Boolean(val))\n\n if (m === '%j' || m === '%J') {\n if (m === '%J') {\n val = [...(val as IterableIterator<unknown>)]\n }\n\n return JSON.stringify(val, (k, v) => {\n if (\n ArrayBuffer.isView(v) ||\n (typeof v === 'object' && v.type === 'Buffer' && Array.isArray(v.data)) // todo: how can we do this better?\n ) {\n // eslint-disable-next-line\n let str = v.data ? Buffer.from(v.data as number[]).toString('hex') : this.mgr.platform.hexEncode(v)\n\n if (str.length > 300) {\n str = str.slice(0, 300) + '...'\n }\n\n return str\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return v\n })\n }\n if (m === '%l') return String(val)\n\n if (m === '%L') {\n if (!Array.isArray(val)) return 'n/a'\n\n return `[${(val as unknown[]).map(String).join(', ')}]`\n }\n\n if (m === '%e') {\n if (isTlRpcError(val)) {\n return `${val.errorCode} ${val.errorMessage}`\n }\n\n if (tl.RpcError.is(val)) {\n return `${val.code} ${val.text}`\n }\n\n return val && typeof val === 'object' ? (val as Error).stack || (val as Error).message : String(val)\n }\n }\n\n idx++\n\n return m\n })\n }\n\n this.mgr.handler(this.color, level, this.tag, this.getPrefix() + fmt, args)\n }\n\n readonly error = this.log.bind(this, LogManager.ERROR)\n readonly warn = this.log.bind(this, LogManager.WARN)\n readonly info = this.log.bind(this, LogManager.INFO)\n readonly debug = this.log.bind(this, LogManager.DEBUG)\n readonly verbose = this.log.bind(this, LogManager.VERBOSE)\n\n /**\n * Create a {@link Logger} with the given tag\n * from the same {@link LogManager} as the current\n * Logger.\n *\n * @param tag Logger tag\n */\n create(tag: string): Logger {\n return new Logger(this.mgr, tag, this)\n }\n}\n\nconst defaultFilter = () => true\n\n/**\n * Log manager. A logger that allows managing child loggers\n */\nexport class LogManager extends Logger {\n static OFF = 0\n static ERROR = 1\n static WARN = 2\n static INFO = 3\n static DEBUG = 4\n static VERBOSE = 5\n\n readonly platform\n level: number\n handler\n\n constructor(tag = 'base') {\n // workaround because we cant pass this to super\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,@typescript-eslint/no-unsafe-argument\n super(null as any, tag)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ;(this as any).mgr = this\n\n this.platform = getPlatform()\n this.level = this.platform.getDefaultLogLevel() ?? DEFAULT_LOG_LEVEL\n this.handler = this.platform.log.bind(this.platform)\n }\n\n private _filter: (tag: string) => boolean = defaultFilter\n\n /**\n * Create a {@link Logger} with the given tag\n *\n * @param tag Logger tag\n */\n create(tag: string): Logger {\n return new Logger(this, tag)\n }\n\n /**\n * Filter logging by tags.\n *\n * @param cb\n */\n filter(cb: ((tag: string) => boolean) | null): void {\n this._filter = cb ?? defaultFilter\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mtcute/core",
3
- "version": "0.15.2",
3
+ "version": "0.16.0",
4
4
  "description": "Type-safe library for MTProto (Telegram API)",
5
5
  "author": "alina sireneva <alina@tei.su>",
6
6
  "license": "MIT",
@@ -34,9 +34,9 @@
34
34
  }
35
35
  },
36
36
  "dependencies": {
37
- "@mtcute/tl": "^183.0.0",
38
- "@mtcute/tl-runtime": "^0.15.0",
39
- "@mtcute/file-id": "^0.15.0",
37
+ "@mtcute/tl": "^184.0.0",
38
+ "@mtcute/tl-runtime": "^0.16.0",
39
+ "@mtcute/file-id": "^0.16.0",
40
40
  "@types/events": "3.0.0",
41
41
  "events": "3.2.0",
42
42
  "long": "5.2.3"