@mtcute/dispatcher 0.16.0 → 0.16.9

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 (239) hide show
  1. package/README.md +2 -2
  2. package/callback-data-builder.test.d.ts +1 -0
  3. package/{esm/context → context}/business-message.d.ts +17 -17
  4. package/{esm/context → context}/callback-query.d.ts +4 -4
  5. package/{cjs/context → context}/chat-join-request.d.ts +1 -1
  6. package/{esm/context → context}/chosen-inline-result.d.ts +1 -1
  7. package/{esm/context → context}/inline-query.d.ts +2 -2
  8. package/{cjs/context → context}/message.d.ts +3 -3
  9. package/context/parse.d.ts +13 -0
  10. package/{esm/context → context}/pre-checkout-query.d.ts +1 -1
  11. package/{cjs/dispatcher.d.ts → dispatcher.d.ts} +2 -2
  12. package/{cjs/filters → filters}/bots.d.ts +13 -23
  13. package/filters/bots.test.d.ts +1 -0
  14. package/{esm/filters → filters}/chat.d.ts +2 -2
  15. package/filters/logic.test.d.ts +1 -0
  16. package/filters/message.d.ts +214 -0
  17. package/{cjs/filters → filters}/state.d.ts +1 -1
  18. package/{esm/filters → filters}/text.d.ts +5 -5
  19. package/{esm/filters → filters}/user.d.ts +1 -1
  20. package/{esm/handler.d.ts → handler.d.ts} +1 -1
  21. package/index.cjs +2510 -0
  22. package/index.d.ts +8 -1
  23. package/index.js +2505 -1
  24. package/package.json +28 -24
  25. package/{esm/state → state}/repository.d.ts +6 -6
  26. package/{esm/state → state}/service.d.ts +3 -2
  27. package/{cjs/state → state}/update-state.d.ts +1 -1
  28. package/{esm/wizard.d.ts → wizard.d.ts} +4 -4
  29. package/cjs/callback-data-builder.js +0 -139
  30. package/cjs/callback-data-builder.js.map +0 -1
  31. package/cjs/context/base.js +0 -3
  32. package/cjs/context/base.js.map +0 -1
  33. package/cjs/context/business-message.d.ts +0 -60
  34. package/cjs/context/business-message.js +0 -146
  35. package/cjs/context/business-message.js.map +0 -1
  36. package/cjs/context/callback-query.d.ts +0 -62
  37. package/cjs/context/callback-query.js +0 -109
  38. package/cjs/context/callback-query.js.map +0 -1
  39. package/cjs/context/chat-join-request.js +0 -35
  40. package/cjs/context/chat-join-request.js.map +0 -1
  41. package/cjs/context/chosen-inline-result.d.ts +0 -22
  42. package/cjs/context/chosen-inline-result.js +0 -36
  43. package/cjs/context/chosen-inline-result.js.map +0 -1
  44. package/cjs/context/index.js +0 -25
  45. package/cjs/context/index.js.map +0 -1
  46. package/cjs/context/inline-query.d.ts +0 -15
  47. package/cjs/context/inline-query.js +0 -23
  48. package/cjs/context/inline-query.js.map +0 -1
  49. package/cjs/context/message.js +0 -171
  50. package/cjs/context/message.js.map +0 -1
  51. package/cjs/context/parse.d.ts +0 -13
  52. package/cjs/context/parse.js +0 -43
  53. package/cjs/context/parse.js.map +0 -1
  54. package/cjs/context/pre-checkout-query.d.ts +0 -17
  55. package/cjs/context/pre-checkout-query.js +0 -27
  56. package/cjs/context/pre-checkout-query.js.map +0 -1
  57. package/cjs/context/scene-transition.js +0 -52
  58. package/cjs/context/scene-transition.js.map +0 -1
  59. package/cjs/dispatcher.js +0 -905
  60. package/cjs/dispatcher.js.map +0 -1
  61. package/cjs/filters/bots.js +0 -133
  62. package/cjs/filters/bots.js.map +0 -1
  63. package/cjs/filters/bundle.js +0 -27
  64. package/cjs/filters/bundle.js.map +0 -1
  65. package/cjs/filters/chat.d.ts +0 -27
  66. package/cjs/filters/chat.js +0 -55
  67. package/cjs/filters/chat.js.map +0 -1
  68. package/cjs/filters/group.js +0 -72
  69. package/cjs/filters/group.js.map +0 -1
  70. package/cjs/filters/index.js +0 -29
  71. package/cjs/filters/index.js.map +0 -1
  72. package/cjs/filters/logic.js +0 -114
  73. package/cjs/filters/logic.js.map +0 -1
  74. package/cjs/filters/message.d.ts +0 -332
  75. package/cjs/filters/message.js +0 -179
  76. package/cjs/filters/message.js.map +0 -1
  77. package/cjs/filters/state.js +0 -32
  78. package/cjs/filters/state.js.map +0 -1
  79. package/cjs/filters/text.d.ts +0 -64
  80. package/cjs/filters/text.js +0 -135
  81. package/cjs/filters/text.js.map +0 -1
  82. package/cjs/filters/types.js +0 -6
  83. package/cjs/filters/types.js.map +0 -1
  84. package/cjs/filters/updates.js +0 -40
  85. package/cjs/filters/updates.js.map +0 -1
  86. package/cjs/filters/user.d.ts +0 -24
  87. package/cjs/filters/user.js +0 -78
  88. package/cjs/filters/user.js.map +0 -1
  89. package/cjs/handler.d.ts +0 -41
  90. package/cjs/handler.js +0 -4
  91. package/cjs/handler.js.map +0 -1
  92. package/cjs/index.js +0 -31
  93. package/cjs/index.js.map +0 -1
  94. package/cjs/package.json +0 -3
  95. package/cjs/propagation.js +0 -27
  96. package/cjs/propagation.js.map +0 -1
  97. package/cjs/state/index.js +0 -22
  98. package/cjs/state/index.js.map +0 -1
  99. package/cjs/state/key.js +0 -43
  100. package/cjs/state/key.js.map +0 -1
  101. package/cjs/state/provider.js +0 -3
  102. package/cjs/state/provider.js.map +0 -1
  103. package/cjs/state/providers/index.js +0 -19
  104. package/cjs/state/providers/index.js.map +0 -1
  105. package/cjs/state/providers/memory.js +0 -81
  106. package/cjs/state/providers/memory.js.map +0 -1
  107. package/cjs/state/providers/sqlite.js +0 -100
  108. package/cjs/state/providers/sqlite.js.map +0 -1
  109. package/cjs/state/repository.d.ts +0 -62
  110. package/cjs/state/repository.js +0 -3
  111. package/cjs/state/repository.js.map +0 -1
  112. package/cjs/state/service.d.ts +0 -19
  113. package/cjs/state/service.js +0 -70
  114. package/cjs/state/service.js.map +0 -1
  115. package/cjs/state/update-state.js +0 -220
  116. package/cjs/state/update-state.js.map +0 -1
  117. package/cjs/wizard.d.ts +0 -64
  118. package/cjs/wizard.js +0 -103
  119. package/cjs/wizard.js.map +0 -1
  120. package/esm/callback-data-builder.d.ts +0 -49
  121. package/esm/callback-data-builder.js +0 -135
  122. package/esm/callback-data-builder.js.map +0 -1
  123. package/esm/context/base.d.ts +0 -9
  124. package/esm/context/base.js +0 -2
  125. package/esm/context/base.js.map +0 -1
  126. package/esm/context/business-message.js +0 -142
  127. package/esm/context/business-message.js.map +0 -1
  128. package/esm/context/callback-query.js +0 -103
  129. package/esm/context/callback-query.js.map +0 -1
  130. package/esm/context/chat-join-request.d.ts +0 -17
  131. package/esm/context/chat-join-request.js +0 -31
  132. package/esm/context/chat-join-request.js.map +0 -1
  133. package/esm/context/chosen-inline-result.js +0 -32
  134. package/esm/context/chosen-inline-result.js.map +0 -1
  135. package/esm/context/index.d.ts +0 -9
  136. package/esm/context/index.js +0 -9
  137. package/esm/context/index.js.map +0 -1
  138. package/esm/context/inline-query.js +0 -19
  139. package/esm/context/inline-query.js.map +0 -1
  140. package/esm/context/message.d.ts +0 -76
  141. package/esm/context/message.js +0 -167
  142. package/esm/context/message.js.map +0 -1
  143. package/esm/context/parse.d.ts +0 -13
  144. package/esm/context/parse.js +0 -39
  145. package/esm/context/parse.js.map +0 -1
  146. package/esm/context/pre-checkout-query.js +0 -23
  147. package/esm/context/pre-checkout-query.js.map +0 -1
  148. package/esm/context/scene-transition.d.ts +0 -24
  149. package/esm/context/scene-transition.js +0 -48
  150. package/esm/context/scene-transition.js.map +0 -1
  151. package/esm/dispatcher.d.ts +0 -880
  152. package/esm/dispatcher.js +0 -901
  153. package/esm/dispatcher.js.map +0 -1
  154. package/esm/filters/bots.d.ts +0 -74
  155. package/esm/filters/bots.js +0 -129
  156. package/esm/filters/bots.js.map +0 -1
  157. package/esm/filters/bundle.d.ts +0 -10
  158. package/esm/filters/bundle.js +0 -11
  159. package/esm/filters/bundle.js.map +0 -1
  160. package/esm/filters/chat.js +0 -50
  161. package/esm/filters/chat.js.map +0 -1
  162. package/esm/filters/group.d.ts +0 -26
  163. package/esm/filters/group.js +0 -67
  164. package/esm/filters/group.js.map +0 -1
  165. package/esm/filters/index.d.ts +0 -4
  166. package/esm/filters/index.js +0 -3
  167. package/esm/filters/index.js.map +0 -1
  168. package/esm/filters/logic.d.ts +0 -29
  169. package/esm/filters/logic.js +0 -107
  170. package/esm/filters/logic.js.map +0 -1
  171. package/esm/filters/message.d.ts +0 -332
  172. package/esm/filters/message.js +0 -156
  173. package/esm/filters/message.js.map +0 -1
  174. package/esm/filters/state.d.ts +0 -15
  175. package/esm/filters/state.js +0 -27
  176. package/esm/filters/state.js.map +0 -1
  177. package/esm/filters/text.js +0 -127
  178. package/esm/filters/text.js.map +0 -1
  179. package/esm/filters/types.d.ts +0 -91
  180. package/esm/filters/types.js +0 -5
  181. package/esm/filters/types.js.map +0 -1
  182. package/esm/filters/updates.d.ts +0 -39
  183. package/esm/filters/updates.js +0 -34
  184. package/esm/filters/updates.js.map +0 -1
  185. package/esm/filters/user.js +0 -72
  186. package/esm/filters/user.js.map +0 -1
  187. package/esm/handler.js +0 -3
  188. package/esm/handler.js.map +0 -1
  189. package/esm/index.d.ts +0 -8
  190. package/esm/index.js +0 -9
  191. package/esm/index.js.map +0 -1
  192. package/esm/propagation.d.ts +0 -22
  193. package/esm/propagation.js +0 -24
  194. package/esm/propagation.js.map +0 -1
  195. package/esm/state/index.d.ts +0 -5
  196. package/esm/state/index.js +0 -6
  197. package/esm/state/index.js.map +0 -1
  198. package/esm/state/key.d.ts +0 -24
  199. package/esm/state/key.js +0 -39
  200. package/esm/state/key.js.map +0 -1
  201. package/esm/state/provider.d.ts +0 -5
  202. package/esm/state/provider.js +0 -2
  203. package/esm/state/provider.js.map +0 -1
  204. package/esm/state/providers/index.d.ts +0 -2
  205. package/esm/state/providers/index.js +0 -3
  206. package/esm/state/providers/index.js.map +0 -1
  207. package/esm/state/providers/memory.d.ts +0 -29
  208. package/esm/state/providers/memory.js +0 -77
  209. package/esm/state/providers/memory.js.map +0 -1
  210. package/esm/state/providers/sqlite.d.ts +0 -28
  211. package/esm/state/providers/sqlite.js +0 -96
  212. package/esm/state/providers/sqlite.js.map +0 -1
  213. package/esm/state/repository.js +0 -2
  214. package/esm/state/repository.js.map +0 -1
  215. package/esm/state/service.js +0 -66
  216. package/esm/state/service.js.map +0 -1
  217. package/esm/state/update-state.d.ts +0 -151
  218. package/esm/state/update-state.js +0 -215
  219. package/esm/state/update-state.js.map +0 -1
  220. package/esm/wizard.js +0 -99
  221. package/esm/wizard.js.map +0 -1
  222. /package/{cjs/callback-data-builder.d.ts → callback-data-builder.d.ts} +0 -0
  223. /package/{cjs/context → context}/base.d.ts +0 -0
  224. /package/{cjs/context → context}/index.d.ts +0 -0
  225. /package/{cjs/context → context}/scene-transition.d.ts +0 -0
  226. /package/{cjs/filters → filters}/bundle.d.ts +0 -0
  227. /package/{cjs/filters → filters}/group.d.ts +0 -0
  228. /package/{cjs/filters → filters}/index.d.ts +0 -0
  229. /package/{cjs/filters → filters}/logic.d.ts +0 -0
  230. /package/{cjs/filters → filters}/types.d.ts +0 -0
  231. /package/{cjs/filters → filters}/updates.d.ts +0 -0
  232. /package/{cjs/index.d.ts → index.d.cts} +0 -0
  233. /package/{cjs/propagation.d.ts → propagation.d.ts} +0 -0
  234. /package/{cjs/state → state}/index.d.ts +0 -0
  235. /package/{cjs/state → state}/key.d.ts +0 -0
  236. /package/{cjs/state → state}/provider.d.ts +0 -0
  237. /package/{cjs/state → state}/providers/index.d.ts +0 -0
  238. /package/{cjs/state → state}/providers/memory.d.ts +0 -0
  239. /package/{cjs/state → state}/providers/sqlite.d.ts +0 -0
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @mtcute/dispatcher
2
2
 
3
- 📖 [API Reference](https://ref.mtcute.dev/modules/_mtcute_dispatcher.html)
3
+ 📖 [API Reference](https://ref.mtcute.dev/modules/_mtcute_dispatcher.html)
4
4
  🧐 [Guide](https://mtcute.dev/guide/dispatcher/intro.html)
5
5
 
6
6
  Dispatcher and bot framework based on @mtcute/core.
@@ -23,4 +23,4 @@ const dp = Dispatcher.for(tg)
23
23
  dp.onNewMessage(async (msg) => {
24
24
  await msg.replyText('Hello world!')
25
25
  })
26
- ```
26
+ ```
@@ -0,0 +1 @@
1
+ export {};
@@ -1,4 +1,4 @@
1
- import { BusinessMessage, OmitInputMessageId, ParametersSkip1 } from '@mtcute/core';
1
+ import { Message, OmitInputMessageId, ParametersSkip1, Sticker, BusinessMessage } from '@mtcute/core';
2
2
  import { TelegramClient } from '@mtcute/core/client.js';
3
3
  import { DeleteMessagesParams, ForwardMessageOptions, SendCopyGroupParams, SendCopyParams } from '@mtcute/core/methods.js';
4
4
  import { UpdateContext } from './base.js';
@@ -13,7 +13,7 @@ import { UpdateContext } from './base.js';
13
13
  */
14
14
  export declare class BusinessMessageContext extends BusinessMessage implements UpdateContext<BusinessMessage> {
15
15
  readonly client: TelegramClient;
16
- readonly _name = "new_business_message";
16
+ readonly _name: "new_business_message";
17
17
  /**
18
18
  * List of messages in the message group.
19
19
  *
@@ -24,37 +24,37 @@ export declare class BusinessMessageContext extends BusinessMessage implements U
24
24
  readonly isMessageGroup: boolean;
25
25
  constructor(client: TelegramClient, message: BusinessMessage | BusinessMessage[]);
26
26
  /** Get all custom emojis contained in this message (message group), if any */
27
- getCustomEmojis(): Promise<import("@mtcute/core").Sticker[]>;
27
+ getCustomEmojis(): Promise<Sticker[]>;
28
28
  /** Send a text message to the same chat (and topic, if applicable) as a given message */
29
- answerText(...params: ParametersSkip1<TelegramClient['answerText']>): Promise<import("@mtcute/core").Message>;
29
+ answerText(...params: ParametersSkip1<TelegramClient['answerText']>): Promise<Message>;
30
30
  /** Send a media to the same chat (and topic, if applicable) as a given message */
31
- answerMedia(...params: ParametersSkip1<TelegramClient['answerMedia']>): Promise<import("@mtcute/core").Message>;
31
+ answerMedia(...params: ParametersSkip1<TelegramClient['answerMedia']>): Promise<Message>;
32
32
  /** Send a media group to the same chat (and topic, if applicable) as a given message */
33
- answerMediaGroup(...params: ParametersSkip1<TelegramClient['answerMediaGroup']>): Promise<import("@mtcute/core").Message[]>;
33
+ answerMediaGroup(...params: ParametersSkip1<TelegramClient['answerMediaGroup']>): Promise<Message[]>;
34
34
  /** Send a text message in reply to this message */
35
- replyText(...params: ParametersSkip1<TelegramClient['replyText']>): Promise<import("@mtcute/core").Message>;
35
+ replyText(...params: ParametersSkip1<TelegramClient['replyText']>): Promise<Message>;
36
36
  /** Send a media in reply to this message */
37
- replyMedia(...params: ParametersSkip1<TelegramClient['replyMedia']>): Promise<import("@mtcute/core").Message>;
37
+ replyMedia(...params: ParametersSkip1<TelegramClient['replyMedia']>): Promise<Message>;
38
38
  /** Send a media group in reply to this message */
39
- replyMediaGroup(...params: ParametersSkip1<TelegramClient['replyMediaGroup']>): Promise<import("@mtcute/core").Message[]>;
39
+ replyMediaGroup(...params: ParametersSkip1<TelegramClient['replyMediaGroup']>): Promise<Message[]>;
40
40
  /** Send a text message in reply to this message */
41
- quoteWithText(params: Parameters<TelegramClient['quoteWithText']>[1]): Promise<import("@mtcute/core").Message>;
41
+ quoteWithText(params: Parameters<TelegramClient['quoteWithText']>[1]): Promise<Message>;
42
42
  /** Send a media in reply to this message */
43
- quoteWithMedia(params: Parameters<TelegramClient['quoteWithMedia']>[1]): Promise<import("@mtcute/core").Message>;
43
+ quoteWithMedia(params: Parameters<TelegramClient['quoteWithMedia']>[1]): Promise<Message>;
44
44
  /** Send a media group in reply to this message */
45
- quoteWithMediaGroup(params: Parameters<TelegramClient['quoteWithMediaGroup']>[1]): Promise<import("@mtcute/core").Message[]>;
45
+ quoteWithMediaGroup(params: Parameters<TelegramClient['quoteWithMediaGroup']>[1]): Promise<Message[]>;
46
46
  /** Delete this message (message group) */
47
47
  delete(params?: DeleteMessagesParams): Promise<void>;
48
48
  /** Pin this message */
49
- pin(params?: OmitInputMessageId<Parameters<TelegramClient['pinMessage']>[0]>): Promise<import("@mtcute/core").Message | null>;
49
+ pin(params?: OmitInputMessageId<Parameters<TelegramClient['pinMessage']>[0]>): Promise<Message | null>;
50
50
  /** Unpin this message */
51
51
  unpin(): Promise<void>;
52
52
  /** Edit this message */
53
- edit(params: OmitInputMessageId<Parameters<TelegramClient['editMessage']>[0]>): Promise<import("@mtcute/core").Message>;
53
+ edit(params: OmitInputMessageId<Parameters<TelegramClient['editMessage']>[0]>): Promise<Message>;
54
54
  /** Forward this message (message group) */
55
- forwardTo(params: ForwardMessageOptions): Promise<import("@mtcute/core").Message[]>;
55
+ forwardTo(params: ForwardMessageOptions): Promise<Message[]>;
56
56
  /** Send a copy of this message (message group) */
57
- copy(params: SendCopyParams & SendCopyGroupParams): Promise<import("@mtcute/core").Message> | Promise<import("@mtcute/core").Message[]>;
57
+ copy(params: SendCopyParams & SendCopyGroupParams): Promise<Message | Message[]>;
58
58
  /** React to this message */
59
- react(params: OmitInputMessageId<Parameters<TelegramClient['sendReaction']>[0]>): Promise<import("@mtcute/core").Message | null>;
59
+ react(params: OmitInputMessageId<Parameters<TelegramClient['sendReaction']>[0]>): Promise<Message | null>;
60
60
  }
@@ -1,4 +1,4 @@
1
- import { BusinessCallbackQuery, CallbackQuery, InlineCallbackQuery, MaybePromise, Message } from '@mtcute/core';
1
+ import { MaybePromise, Message, BusinessCallbackQuery, CallbackQuery, InlineCallbackQuery } from '@mtcute/core';
2
2
  import { TelegramClient } from '@mtcute/core/client.js';
3
3
  import { UpdateContext } from './base.js';
4
4
  /**
@@ -8,7 +8,7 @@ import { UpdateContext } from './base.js';
8
8
  */
9
9
  export declare class CallbackQueryContext extends CallbackQuery implements UpdateContext<CallbackQuery> {
10
10
  readonly client: TelegramClient;
11
- readonly _name = "callback_query";
11
+ readonly _name: "callback_query";
12
12
  constructor(client: TelegramClient, query: CallbackQuery);
13
13
  /** Answer to this callback query */
14
14
  answer(params: Parameters<TelegramClient['answerCallbackQuery']>[1]): Promise<void>;
@@ -35,7 +35,7 @@ export declare class CallbackQueryContext extends CallbackQuery implements Updat
35
35
  */
36
36
  export declare class InlineCallbackQueryContext extends InlineCallbackQuery implements UpdateContext<InlineCallbackQuery> {
37
37
  readonly client: TelegramClient;
38
- readonly _name = "inline_callback_query";
38
+ readonly _name: "inline_callback_query";
39
39
  constructor(client: TelegramClient, query: InlineCallbackQuery);
40
40
  /** Answer to this callback query */
41
41
  answer(params: Parameters<TelegramClient['answerCallbackQuery']>[1]): Promise<void>;
@@ -51,7 +51,7 @@ export declare class InlineCallbackQueryContext extends InlineCallbackQuery impl
51
51
  */
52
52
  export declare class BusinessCallbackQueryContext extends BusinessCallbackQuery implements UpdateContext<BusinessCallbackQuery> {
53
53
  readonly client: TelegramClient;
54
- readonly _name = "business_callback_query";
54
+ readonly _name: "business_callback_query";
55
55
  constructor(client: TelegramClient, query: BusinessCallbackQuery);
56
56
  /** Answer to this callback query */
57
57
  answer(params: Parameters<TelegramClient['answerCallbackQuery']>[1]): Promise<void>;
@@ -8,7 +8,7 @@ import { UpdateContext } from './base.js';
8
8
  */
9
9
  export declare class ChatJoinRequestUpdateContext extends BotChatJoinRequestUpdate implements UpdateContext<BotChatJoinRequestUpdate> {
10
10
  readonly client: TelegramClient;
11
- readonly _name = "bot_chat_join_request";
11
+ readonly _name: "bot_chat_join_request";
12
12
  constructor(client: TelegramClient, update: BotChatJoinRequestUpdate);
13
13
  /** Approve the request */
14
14
  approve(): Promise<void>;
@@ -11,7 +11,7 @@ import { UpdateContext } from './base.js';
11
11
  */
12
12
  export declare class ChosenInlineResultContext extends ChosenInlineResult implements UpdateContext<ChosenInlineResult> {
13
13
  readonly client: TelegramClient;
14
- readonly _name = "chosen_inline_result";
14
+ readonly _name: "chosen_inline_result";
15
15
  constructor(client: TelegramClient, result: ChosenInlineResult);
16
16
  /**
17
17
  * Edit the message that was sent when this inline result that was chosen.
@@ -1,4 +1,4 @@
1
- import { InlineQuery, ParametersSkip1 } from '@mtcute/core';
1
+ import { ParametersSkip1, InlineQuery } from '@mtcute/core';
2
2
  import { TelegramClient } from '@mtcute/core/client.js';
3
3
  import { UpdateContext } from './base.js';
4
4
  /**
@@ -8,7 +8,7 @@ import { UpdateContext } from './base.js';
8
8
  */
9
9
  export declare class InlineQueryContext extends InlineQuery implements UpdateContext<InlineQuery> {
10
10
  readonly client: TelegramClient;
11
- readonly _name = "inline_query";
11
+ readonly _name: "inline_query";
12
12
  constructor(client: TelegramClient, query: InlineQuery);
13
13
  /** Answer to this inline query */
14
14
  answer(...params: ParametersSkip1<TelegramClient['answerInlineQuery']>): Promise<void>;
@@ -1,4 +1,4 @@
1
- import { Message, OmitInputMessageId, ParametersSkip1, Peer } from '@mtcute/core';
1
+ import { OmitInputMessageId, ParametersSkip1, Peer, Sticker, Message } from '@mtcute/core';
2
2
  import { TelegramClient } from '@mtcute/core/client.js';
3
3
  import { DeleteMessagesParams, ForwardMessageOptions, SendCopyGroupParams, SendCopyParams } from '@mtcute/core/methods.js';
4
4
  import { UpdateContext } from './base.js';
@@ -13,7 +13,7 @@ import { UpdateContext } from './base.js';
13
13
  */
14
14
  export declare class MessageContext extends Message implements UpdateContext<Message> {
15
15
  readonly client: TelegramClient;
16
- readonly _name = "new_message";
16
+ readonly _name: "new_message";
17
17
  /**
18
18
  * List of messages in the message group.
19
19
  *
@@ -34,7 +34,7 @@ export declare class MessageContext extends Message implements UpdateContext<Mes
34
34
  /** If this is a channel post, get its automatic forward in the discussion group */
35
35
  getDiscussionMessage(): Promise<Message | null>;
36
36
  /** Get all custom emojis contained in this message (message group), if any */
37
- getCustomEmojis(): Promise<import("@mtcute/core").Sticker[]>;
37
+ getCustomEmojis(): Promise<Sticker[]>;
38
38
  /** Send a text message to the same chat (and topic, if applicable) as a given message */
39
39
  answerText(...params: ParametersSkip1<TelegramClient['answerText']>): Promise<Message>;
40
40
  /** Send a media to the same chat (and topic, if applicable) as a given message */
@@ -0,0 +1,13 @@
1
+ import { BotReactionCountUpdate, BotReactionUpdate, BotStoppedUpdate, BusinessConnection, ChatJoinRequestUpdate, ChatMemberUpdate, DeleteBusinessMessageUpdate, DeleteMessageUpdate, DeleteStoryUpdate, HistoryReadUpdate, ParsedUpdate, PollUpdate, PollVoteUpdate, StoryUpdate, UserStatusUpdate, UserTypingUpdate } from '@mtcute/core';
2
+ import { TelegramClient } from '@mtcute/core/client.js';
3
+ import { UpdateContextDistributed } from './base.js';
4
+ import { BusinessMessageContext } from './business-message.js';
5
+ import { BusinessCallbackQueryContext, CallbackQueryContext, InlineCallbackQueryContext } from './callback-query.js';
6
+ import { ChatJoinRequestUpdateContext } from './chat-join-request.js';
7
+ import { ChosenInlineResultContext } from './chosen-inline-result.js';
8
+ import { InlineQueryContext } from './inline-query.js';
9
+ import { MessageContext } from './message.js';
10
+ import { PreCheckoutQueryContext } from './pre-checkout-query.js';
11
+ export type UpdateContextType = MessageContext | InlineQueryContext | ChosenInlineResultContext | CallbackQueryContext | InlineCallbackQueryContext | BusinessCallbackQueryContext | ChatJoinRequestUpdateContext | PreCheckoutQueryContext | BusinessMessageContext | UpdateContextDistributed<DeleteMessageUpdate | ChatMemberUpdate | PollUpdate | PollVoteUpdate | UserStatusUpdate | UserTypingUpdate | HistoryReadUpdate | BotStoppedUpdate | ChatJoinRequestUpdate | StoryUpdate | DeleteStoryUpdate | BotReactionUpdate | BotReactionCountUpdate | BusinessConnection | DeleteBusinessMessageUpdate>;
12
+ /** @internal */
13
+ export declare function _parsedUpdateToContext(client: TelegramClient, update: ParsedUpdate): UpdateContextType;
@@ -8,7 +8,7 @@ import { UpdateContext } from './base.js';
8
8
  */
9
9
  export declare class PreCheckoutQueryContext extends PreCheckoutQuery implements UpdateContext<PreCheckoutQuery> {
10
10
  readonly client: TelegramClient;
11
- readonly _name = "pre_checkout_query";
11
+ readonly _name: "pre_checkout_query";
12
12
  constructor(client: TelegramClient, query: PreCheckoutQuery);
13
13
  /** Approve the query */
14
14
  approve(): Promise<void>;
@@ -1,10 +1,10 @@
1
- import { BotReactionCountUpdate, BotReactionUpdate, BotStoppedUpdate, BusinessConnection, ChatJoinRequestUpdate, ChatMemberUpdate, DeleteBusinessMessageUpdate, DeleteMessageUpdate, DeleteStoryUpdate, HistoryReadUpdate, MaybePromise, ParsedUpdate, PeersIndex, PollUpdate, PollVoteUpdate, StoryUpdate, tl, UserStatusUpdate, UserTypingUpdate } from '@mtcute/core';
1
+ import { BotReactionCountUpdate, BotReactionUpdate, BotStoppedUpdate, BusinessConnection, ChatJoinRequestUpdate, ChatMemberUpdate, DeleteBusinessMessageUpdate, DeleteMessageUpdate, DeleteStoryUpdate, HistoryReadUpdate, MaybePromise, ParsedUpdate, PeersIndex, PollUpdate, PollVoteUpdate, StoryUpdate, UserStatusUpdate, UserTypingUpdate, tl } from '@mtcute/core';
2
2
  import { TelegramClient } from '@mtcute/core/client.js';
3
3
  import { UpdateContext } from './context/base.js';
4
4
  import { BusinessMessageContext } from './context/business-message.js';
5
5
  import { BusinessCallbackQueryContext, CallbackQueryContext, ChatJoinRequestUpdateContext, ChosenInlineResultContext, InlineCallbackQueryContext, InlineQueryContext, MessageContext, PreCheckoutQueryContext } from './context/index.js';
6
6
  import { SceneTransitionContext } from './context/scene-transition.js';
7
- import { filters, UpdateFilter } from './filters/index.js';
7
+ import { UpdateFilter, filters } from './filters/index.js';
8
8
  import { BotChatJoinRequestHandler, BotReactionCountUpdateHandler, BotReactionUpdateHandler, BotStoppedHandler, BusinessCallbackQueryHandler, BusinessConnectionUpdateHandler, BusinessMessageGroupHandler, CallbackQueryHandler, ChatJoinRequestHandler, ChatMemberUpdateHandler, ChosenInlineResultHandler, DeleteBusinessMessageHandler, DeleteMessageHandler, DeleteStoryHandler, EditBusinessMessageHandler, EditMessageHandler, HistoryReadHandler, InlineCallbackQueryHandler, InlineQueryHandler, MessageGroupHandler, NewBusinessMessageHandler, NewMessageHandler, PollUpdateHandler, PollVoteHandler, PreCheckoutQueryHandler, RawUpdateHandler, StoryUpdateHandler, UpdateHandler, UserStatusUpdateHandler, UserTypingHandler } from './handler.js';
9
9
  import { PropagationAction } from './propagation.js';
10
10
  import { IStateStorageProvider, StateKeyDelegate, UpdateState } from './state/index.js';
@@ -1,7 +1,7 @@
1
- import { MaybeArray } from '@mtcute/core';
1
+ import { Chat, MaybeArray } from '@mtcute/core';
2
2
  import { BusinessMessageContext } from '../context/business-message.js';
3
3
  import { MessageContext } from '../context/message.js';
4
- import { UpdateFilter } from './types.js';
4
+ import { Modify, UpdateFilter } from './types.js';
5
5
  /**
6
6
  * Filter messages that call the given command(s)..
7
7
  *
@@ -18,40 +18,30 @@ import { UpdateFilter } from './types.js';
18
18
  * Can be `null` to disable prefixes altogether
19
19
  * @param caseSensitive
20
20
  */
21
- export declare const command: (commands: MaybeArray<string | RegExp>, { prefixes, caseSensitive, }?: {
22
- prefixes?: MaybeArray<string> | null | undefined;
23
- caseSensitive?: boolean | undefined;
24
- }) => UpdateFilter<MessageContext | BusinessMessageContext, {
21
+ export declare function command(commands: MaybeArray<string | RegExp>, { prefixes, caseSensitive, }?: {
22
+ prefixes?: MaybeArray<string> | null;
23
+ caseSensitive?: boolean;
24
+ }): UpdateFilter<MessageContext | BusinessMessageContext, {
25
25
  command: string[];
26
26
  }>;
27
27
  /**
28
28
  * Shorthand filter that matches /start commands sent to bot's
29
29
  * private messages.
30
30
  */
31
- export declare const start: UpdateFilter<{
32
- chat: import("@mtcute/core").Chat;
33
- } & (BusinessMessageContext | MessageContext), {
34
- chat: import("./types.js").Modify<import("@mtcute/core").Chat, {
35
- chatType: "private";
31
+ export declare const start: UpdateFilter<MessageContext | BusinessMessageContext, {
32
+ chat: Modify<Chat, {
33
+ chatType: 'private';
36
34
  }>;
37
- } & import("./types.js").EmptyObject & {
38
35
  command: string[];
39
- }, never>;
36
+ }>;
40
37
  /**
41
38
  * Shorthand filter that matches /start commands
42
39
  * sent in groups (i.e. using `?startgroup` parameter).
43
40
  */
44
- export declare const startGroup: UpdateFilter<{
45
- chat: import("@mtcute/core").Chat;
46
- } & (BusinessMessageContext | MessageContext), (({
47
- chat: import("./types.js").Modify<import("@mtcute/core").Chat, {
48
- chatType: "supergroup";
49
- }>;
50
- } & import("./types.js").EmptyObject) | ({
51
- chat: import("./types.js").Modify<import("@mtcute/core").Chat, {
52
- chatType: "group";
41
+ export declare const startGroup: UpdateFilter<MessageContext | BusinessMessageContext, {
42
+ chat: Modify<Chat, {
43
+ chatType: 'group' | 'supergroup';
53
44
  }>;
54
- } & import("./types.js").EmptyObject)) & {
55
45
  command: string[];
56
46
  }, never>;
57
47
  /**
@@ -0,0 +1 @@
1
+ export {};
@@ -4,9 +4,9 @@ import { EmptyObject, Modify, UpdateFilter } from './types.js';
4
4
  /**
5
5
  * Filter updates by type of the chat where they happened
6
6
  */
7
- export declare const chat: <T extends ChatType, Obj extends {
7
+ export declare function chat<T extends ChatType, Obj extends {
8
8
  chat: Chat;
9
- }>(type: T) => UpdateFilter<Obj, {
9
+ }>(type: T): UpdateFilter<Obj, {
10
10
  chat: Modify<Chat, {
11
11
  chatType: T;
12
12
  }>;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,214 @@
1
+ import { Audio, Contact, Dice, Document, Game, Invoice, LiveLocation, Location, MaybeArray, Message, MessageAction, MessageMediaType, Peer, Photo, Poll, RepliedMessageInfo, RepliedMessageOrigin, Sticker, StickerSourceType, StickerType, User, Venue, Video, Voice, WebPage, _RepliedMessageAssertionsByOrigin, RawDocument } from '@mtcute/core';
2
+ import { BusinessMessageContext } from '../context/business-message.js';
3
+ import { MessageContext } from '../index.js';
4
+ import { Modify, UpdateFilter } from './types.js';
5
+ /**
6
+ * Filter incoming messages.
7
+ *
8
+ * Messages sent to yourself (i.e. Saved Messages) are also "incoming"
9
+ */
10
+ export declare const incoming: UpdateFilter<Message, {
11
+ isOutgoing: false;
12
+ }>;
13
+ /**
14
+ * Filter outgoing messages.
15
+ *
16
+ * Messages sent to yourself (i.e. Saved Messages) are **not** "outgoing"
17
+ */
18
+ export declare const outgoing: UpdateFilter<Message, {
19
+ isOutgoing: true;
20
+ }>;
21
+ /**
22
+ * Filter for scheduled messages
23
+ */
24
+ export declare const scheduled: UpdateFilter<Message, {
25
+ isScheduled: true;
26
+ }>;
27
+ /**
28
+ * Filter messages that are replies to some other message
29
+ */
30
+ export declare const reply: UpdateFilter<Message, {
31
+ replyToMessage: RepliedMessageInfo;
32
+ }>;
33
+ /**
34
+ * Filter messages that are replies with the given origin type
35
+ */
36
+ export declare function replyOrigin<T extends RepliedMessageOrigin>(origin: T): UpdateFilter<Message, {
37
+ replyToMessage: Modify<RepliedMessageInfo, _RepliedMessageAssertionsByOrigin[T] & {
38
+ origin: T;
39
+ }>;
40
+ }>;
41
+ /**
42
+ * Filter messages containing some media
43
+ */
44
+ export declare const media: UpdateFilter<Message, {
45
+ media: Exclude<Message['media'], null>;
46
+ }>;
47
+ /**
48
+ * Filter messages containing media of given type
49
+ */
50
+ export declare function mediaOf<T extends MessageMediaType>(type: T): UpdateFilter<Message, {
51
+ media: Extract<Message['media'], {
52
+ type: T;
53
+ }>;
54
+ }>;
55
+ /** Filter messages containing a photo */
56
+ export declare const photo: UpdateFilter<Message, {
57
+ media: Photo;
58
+ }>;
59
+ /** Filter messages containing a dice */
60
+ export declare const dice: UpdateFilter<Message, {
61
+ media: Dice;
62
+ }>;
63
+ /** Filter messages containing a contact */
64
+ export declare const contact: UpdateFilter<Message, {
65
+ media: Contact;
66
+ }>;
67
+ /** Filter messages containing an audio file */
68
+ export declare const audio: UpdateFilter<Message, {
69
+ media: Audio;
70
+ }>;
71
+ /** Filter messages containing a voice message (audio-only) */
72
+ export declare const voice: UpdateFilter<Message, {
73
+ media: Voice;
74
+ }>;
75
+ /** Filter messages containing a sticker */
76
+ export declare const sticker: UpdateFilter<Message, {
77
+ media: Sticker;
78
+ }>;
79
+ /** Filter messages containing a document (a file) */
80
+ export declare const document: UpdateFilter<Message, {
81
+ media: Document;
82
+ }>;
83
+ /** Filter messages containing any video (videos, round messages and animations) */
84
+ export declare const anyVideo: UpdateFilter<Message, {
85
+ media: Video;
86
+ }>;
87
+ /** Filter messages containing a static location */
88
+ export declare const location: UpdateFilter<Message, {
89
+ media: Location;
90
+ }>;
91
+ /** Filter messages containing a live location */
92
+ export declare const liveLocation: UpdateFilter<Message, {
93
+ media: LiveLocation;
94
+ }>;
95
+ /** Filter messages containing a game */
96
+ export declare const game: UpdateFilter<Message, {
97
+ media: Game;
98
+ }>;
99
+ /** Filter messages containing a web page */
100
+ export declare const webpage: UpdateFilter<Message, {
101
+ media: WebPage;
102
+ }>;
103
+ /** Filter messages containing a venue */
104
+ export declare const venue: UpdateFilter<Message, {
105
+ media: Venue;
106
+ }>;
107
+ /** Filter messages containing a poll */
108
+ export declare const poll: UpdateFilter<Message, {
109
+ media: Poll;
110
+ }>;
111
+ /** Filter messages containing an invoice */
112
+ export declare const invoice: UpdateFilter<Message, {
113
+ media: Invoice;
114
+ }>;
115
+ /**
116
+ * Filter messages containing any location (live or static).
117
+ */
118
+ export declare const anyLocation: UpdateFilter<Message, {
119
+ media: Location;
120
+ }>;
121
+ /**
122
+ * Filter messages containing a document
123
+ *
124
+ * This will also match media like audio, video, voice
125
+ * that also use Documents
126
+ */
127
+ export declare const anyDocument: UpdateFilter<Message, {
128
+ media: RawDocument;
129
+ }>;
130
+ /**
131
+ * Filter messages containing a simple video.
132
+ *
133
+ * This does not include round messages and animations
134
+ */
135
+ export declare const video: UpdateFilter<Message, {
136
+ media: Modify<Video, {
137
+ isRound: false;
138
+ isAnimation: false;
139
+ }>;
140
+ }>;
141
+ /**
142
+ * Filter messages containing an animation.
143
+ *
144
+ * > **Note**: Legacy GIFs (i.e. documents with `image/gif` MIME)
145
+ * > are also considered animations.
146
+ */
147
+ export declare const animation: UpdateFilter<Message, {
148
+ media: Modify<Video, {
149
+ isRound: false;
150
+ isAnimation: true;
151
+ }>;
152
+ }>;
153
+ /**
154
+ * Filter messages containing a round message (aka video note).
155
+ */
156
+ export declare const roundMessage: UpdateFilter<Message, {
157
+ media: Modify<Video, {
158
+ isRound: true;
159
+ isAnimation: false;
160
+ }>;
161
+ }>;
162
+ /**
163
+ * Filter messages containing a sticker by its type
164
+ */
165
+ export declare function stickerByType(type: StickerType): UpdateFilter<Message, {
166
+ media: Sticker;
167
+ }>;
168
+ /**
169
+ * Filter messages containing a sticker by its source file type
170
+ */
171
+ export declare function stickerBySourceType(type: StickerSourceType): UpdateFilter<Message, {
172
+ media: Sticker;
173
+ }>;
174
+ /**
175
+ * Filter text-only messages non-service messages
176
+ */
177
+ export declare const text: UpdateFilter<Message, {
178
+ media: null;
179
+ isService: false;
180
+ }>;
181
+ /**
182
+ * Filter service messages
183
+ */
184
+ export declare const service: UpdateFilter<Message, {
185
+ isService: true;
186
+ }>;
187
+ /**
188
+ * Filter service messages by action type
189
+ */
190
+ export declare function action<T extends Exclude<MessageAction, null>['type']>(type: MaybeArray<T>): UpdateFilter<Message, {
191
+ action: Extract<MessageAction, {
192
+ type: T;
193
+ }>;
194
+ sender: T extends 'user_joined_link' | 'user_removed' | 'history_cleared' | 'contact_joined' | 'bot_allowed' ? User : Peer;
195
+ }>;
196
+ export declare function sender<T extends Message['sender']['type']>(type: T): UpdateFilter<Message, {
197
+ sender: Extract<Message['sender'], {
198
+ type: T;
199
+ }>;
200
+ }>;
201
+ /**
202
+ * Filter that matches messages that are replies to some other message that can be fetched
203
+ * (i.e. not `private` origin, and has not been deleted)
204
+ *
205
+ * Optionally, you can pass a filter that will be applied to the replied message.
206
+ */
207
+ export declare function replyTo<Mod, State extends object>(filter?: UpdateFilter<Message, Mod, State>): UpdateFilter<MessageContext | BusinessMessageContext, {
208
+ getReplyTo: () => Promise<Message & Mod>;
209
+ }, State>;
210
+ /**
211
+ * Middleware-like filter that will fetch the sender of the message
212
+ * and make it available to further filters, as well as the handler itself.
213
+ */
214
+ export declare function withCompleteSender<Mod, State extends object>(filter?: UpdateFilter<MessageContext, Mod, State>): UpdateFilter<MessageContext, Mod, State>;
@@ -12,4 +12,4 @@ export declare const stateEmpty: UpdateFilter<any>;
12
12
  *
13
13
  * @param predicate State predicate
14
14
  */
15
- export declare const state: <T extends object>(predicate: (state: T) => MaybePromise<boolean>) => UpdateFilter<any, {}, T>;
15
+ export declare function state<T extends object>(predicate: (state: T) => MaybePromise<boolean>): UpdateFilter<any, {}, T>;
@@ -14,7 +14,7 @@ type UpdatesWithText = UpdateContextDistributed<Message | BusinessMessage | Inli
14
14
  *
15
15
  * @param regex Regex to be matched
16
16
  */
17
- export declare const regex: (regex: RegExp) => UpdateFilter<UpdatesWithText, {
17
+ export declare function regex(regex: RegExp): UpdateFilter<UpdatesWithText, {
18
18
  match: RegExpMatchArray;
19
19
  }>;
20
20
  /**
@@ -27,7 +27,7 @@ export declare const regex: (regex: RegExp) => UpdateFilter<UpdatesWithText, {
27
27
  * @param str String to be matched
28
28
  * @param ignoreCase Whether string case should be ignored
29
29
  */
30
- export declare const equals: (str: string, ignoreCase?: boolean) => UpdateFilter<UpdatesWithText>;
30
+ export declare function equals(str: string, ignoreCase?: boolean): UpdateFilter<UpdatesWithText>;
31
31
  /**
32
32
  * Filter objects which contain the text given (as a substring)
33
33
  * - for `Message`, `Message.text` is used
@@ -38,7 +38,7 @@ export declare const equals: (str: string, ignoreCase?: boolean) => UpdateFilter
38
38
  * @param str Substring to be matched
39
39
  * @param ignoreCase Whether string case should be ignored
40
40
  */
41
- export declare const contains: (str: string, ignoreCase?: boolean) => UpdateFilter<UpdatesWithText>;
41
+ export declare function contains(str: string, ignoreCase?: boolean): UpdateFilter<UpdatesWithText>;
42
42
  /**
43
43
  * Filter objects which contain the text starting with a given string
44
44
  * - for `Message`, `Message.text` is used
@@ -49,7 +49,7 @@ export declare const contains: (str: string, ignoreCase?: boolean) => UpdateFilt
49
49
  * @param str Substring to be matched
50
50
  * @param ignoreCase Whether string case should be ignored
51
51
  */
52
- export declare const startsWith: (str: string, ignoreCase?: boolean) => UpdateFilter<UpdatesWithText>;
52
+ export declare function startsWith(str: string, ignoreCase?: boolean): UpdateFilter<UpdatesWithText>;
53
53
  /**
54
54
  * Filter objects which contain the text ending with a given string
55
55
  * - for `Message`, `Message.text` is used
@@ -60,5 +60,5 @@ export declare const startsWith: (str: string, ignoreCase?: boolean) => UpdateFi
60
60
  * @param str Substring to be matched
61
61
  * @param ignoreCase Whether string case should be ignored
62
62
  */
63
- export declare const endsWith: (str: string, ignoreCase?: boolean) => UpdateFilter<UpdatesWithText>;
63
+ export declare function endsWith(str: string, ignoreCase?: boolean): UpdateFilter<UpdatesWithText>;
64
64
  export {};
@@ -1,4 +1,4 @@
1
- import { BotChatJoinRequestUpdate, BusinessCallbackQuery, BusinessMessage, CallbackQuery, ChatMemberUpdate, ChosenInlineResult, DeleteStoryUpdate, HistoryReadUpdate, InlineCallbackQuery, InlineQuery, MaybeArray, Message, PollVoteUpdate, StoryUpdate, User, UserStatusUpdate, UserTypingUpdate } from '@mtcute/core';
1
+ import { BotChatJoinRequestUpdate, BusinessCallbackQuery, BusinessMessage, CallbackQuery, ChatMemberUpdate, ChosenInlineResult, DeleteStoryUpdate, HistoryReadUpdate, InlineCallbackQuery, InlineQuery, MaybeArray, Message, PollVoteUpdate, StoryUpdate, UserStatusUpdate, UserTypingUpdate, User } from '@mtcute/core';
2
2
  import { UpdateContextDistributed } from '../context/base.js';
3
3
  import { UpdateFilter } from './types.js';
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { BotReactionCountUpdate, BotReactionUpdate, BotStoppedUpdate, BusinessConnection, ChatJoinRequestUpdate, ChatMemberUpdate, DeleteBusinessMessageUpdate, DeleteMessageUpdate, DeleteStoryUpdate, HistoryReadUpdate, MaybePromise, PeersIndex, PollUpdate, PollVoteUpdate, StoryUpdate, tl, UserStatusUpdate, UserTypingUpdate } from '@mtcute/core';
1
+ import { BotReactionCountUpdate, BotReactionUpdate, BotStoppedUpdate, BusinessConnection, ChatJoinRequestUpdate, ChatMemberUpdate, DeleteBusinessMessageUpdate, DeleteMessageUpdate, DeleteStoryUpdate, HistoryReadUpdate, MaybePromise, PeersIndex, PollUpdate, PollVoteUpdate, StoryUpdate, UserStatusUpdate, UserTypingUpdate, tl } from '@mtcute/core';
2
2
  import { TelegramClient } from '@mtcute/core/client.js';
3
3
  import { UpdateContext } from './context/base.js';
4
4
  import { BusinessCallbackQueryContext, BusinessMessageContext, CallbackQueryContext, ChatJoinRequestUpdateContext, ChosenInlineResultContext, InlineCallbackQueryContext, InlineQueryContext, MessageContext, PreCheckoutQueryContext } from './context/index.js';