@xbibzlibrary/telebibz 0.4.4 → 3.0.1

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 (258) hide show
  1. package/CHANGELOG.md +35 -138
  2. package/LICENSE +1 -1
  3. package/NOTICE.md +9 -4
  4. package/README.md +173 -242
  5. package/examples/01-quickstart.js +13 -0
  6. package/examples/02-menu-tombol.js +22 -0
  7. package/examples/03-wizard.js +29 -0
  8. package/examples/04-broadcast.js +25 -0
  9. package/examples/05-kirim-file.js +19 -0
  10. package/examples/06-menu.js +35 -0
  11. package/examples/07-inline-query.js +18 -0
  12. package/index.d.ts +81 -0
  13. package/index.js +42 -0
  14. package/lib/api.js +154 -0
  15. package/lib/broadcast.js +35 -0
  16. package/lib/composer.js +174 -0
  17. package/lib/context.js +190 -0
  18. package/lib/errors.js +35 -0
  19. package/lib/file.js +41 -0
  20. package/lib/inline-query.js +28 -0
  21. package/lib/keyboard.js +83 -0
  22. package/lib/logger.js +38 -0
  23. package/lib/menus.js +90 -0
  24. package/lib/net.js +115 -0
  25. package/lib/ratelimit.js +61 -0
  26. package/lib/runner.js +45 -0
  27. package/lib/session.js +36 -0
  28. package/lib/telebibz.js +190 -0
  29. package/lib/wizard.js +81 -0
  30. package/package.json +35 -97
  31. package/test/all.test.js +334 -0
  32. package/CODE_OF_CONDUCT.md +0 -37
  33. package/CONTRIBUTING.md +0 -59
  34. package/CONTRIBUTION_RULES.md +0 -41
  35. package/GOVERNANCE.md +0 -47
  36. package/README.id.md +0 -292
  37. package/README.zh-CN.md +0 -292
  38. package/RELEASE_AUTOMATION.md +0 -78
  39. package/RELEASE_POLICY.md +0 -32
  40. package/SECURITY.md +0 -47
  41. package/SHOWCASE.md +0 -29
  42. package/SUPPORT.md +0 -30
  43. package/assets/readme-preview.html +0 -75
  44. package/assets/telebibz-logo.png +0 -0
  45. package/assets/telebibz-readme-preview.png +0 -0
  46. package/bin/telebibz.mjs +0 -3
  47. package/dist/generated/api.d.ts +0 -13
  48. package/dist/generated/api.d.ts.map +0 -1
  49. package/dist/generated/api.js +0 -192
  50. package/dist/generated/api.js.map +0 -1
  51. package/dist/src/api/client.d.ts +0 -62
  52. package/dist/src/api/client.d.ts.map +0 -1
  53. package/dist/src/api/client.js +0 -104
  54. package/dist/src/api/client.js.map +0 -1
  55. package/dist/src/api/errors.d.ts +0 -45
  56. package/dist/src/api/errors.d.ts.map +0 -1
  57. package/dist/src/api/errors.js +0 -65
  58. package/dist/src/api/errors.js.map +0 -1
  59. package/dist/src/api/index.d.ts +0 -6
  60. package/dist/src/api/index.d.ts.map +0 -1
  61. package/dist/src/api/index.js +0 -6
  62. package/dist/src/api/index.js.map +0 -1
  63. package/dist/src/api/telegram-types/LICENSE +0 -21
  64. package/dist/src/api/telegram-types/api.d.ts +0 -22
  65. package/dist/src/api/telegram-types/checklist.d.ts +0 -72
  66. package/dist/src/api/telegram-types/inline.d.ts +0 -692
  67. package/dist/src/api/telegram-types/langs.d.ts +0 -193
  68. package/dist/src/api/telegram-types/manage.d.ts +0 -1144
  69. package/dist/src/api/telegram-types/markup.d.ts +0 -268
  70. package/dist/src/api/telegram-types/message.d.ts +0 -1537
  71. package/dist/src/api/telegram-types/methods.d.ts +0 -2870
  72. package/dist/src/api/telegram-types/mod.d.ts +0 -14
  73. package/dist/src/api/telegram-types/passport.d.ts +0 -163
  74. package/dist/src/api/telegram-types/payment.d.ts +0 -570
  75. package/dist/src/api/telegram-types/rich.d.ts +0 -1010
  76. package/dist/src/api/telegram-types/settings.d.ts +0 -120
  77. package/dist/src/api/telegram-types/story.d.ts +0 -89
  78. package/dist/src/api/telegram-types/update.d.ts +0 -84
  79. package/dist/src/api/telegram.d.ts +0 -7
  80. package/dist/src/api/telegram.d.ts.map +0 -1
  81. package/dist/src/api/telegram.js +0 -2
  82. package/dist/src/api/telegram.js.map +0 -1
  83. package/dist/src/api/transport.d.ts +0 -68
  84. package/dist/src/api/transport.d.ts.map +0 -1
  85. package/dist/src/api/transport.js +0 -264
  86. package/dist/src/api/transport.js.map +0 -1
  87. package/dist/src/api/types.d.ts +0 -466
  88. package/dist/src/api/types.d.ts.map +0 -1
  89. package/dist/src/api/types.js +0 -2
  90. package/dist/src/api/types.js.map +0 -1
  91. package/dist/src/branding/terminal.d.ts +0 -77
  92. package/dist/src/branding/terminal.d.ts.map +0 -1
  93. package/dist/src/branding/terminal.js +0 -328
  94. package/dist/src/branding/terminal.js.map +0 -1
  95. package/dist/src/broadcast/broadcast.d.ts +0 -50
  96. package/dist/src/broadcast/broadcast.d.ts.map +0 -1
  97. package/dist/src/broadcast/broadcast.js +0 -56
  98. package/dist/src/broadcast/broadcast.js.map +0 -1
  99. package/dist/src/cache/cache.d.ts +0 -34
  100. package/dist/src/cache/cache.d.ts.map +0 -1
  101. package/dist/src/cache/cache.js +0 -41
  102. package/dist/src/cache/cache.js.map +0 -1
  103. package/dist/src/cli.d.ts +0 -2
  104. package/dist/src/cli.d.ts.map +0 -1
  105. package/dist/src/cli.js +0 -84
  106. package/dist/src/cli.js.map +0 -1
  107. package/dist/src/context/context.d.ts +0 -124
  108. package/dist/src/context/context.d.ts.map +0 -1
  109. package/dist/src/context/context.js +0 -302
  110. package/dist/src/context/context.js.map +0 -1
  111. package/dist/src/core/bot.d.ts +0 -204
  112. package/dist/src/core/bot.d.ts.map +0 -1
  113. package/dist/src/core/bot.js +0 -506
  114. package/dist/src/core/bot.js.map +0 -1
  115. package/dist/src/core/events.d.ts +0 -75
  116. package/dist/src/core/events.d.ts.map +0 -1
  117. package/dist/src/core/events.js +0 -35
  118. package/dist/src/core/events.js.map +0 -1
  119. package/dist/src/core/webhook-reply.d.ts +0 -34
  120. package/dist/src/core/webhook-reply.d.ts.map +0 -1
  121. package/dist/src/core/webhook-reply.js +0 -37
  122. package/dist/src/core/webhook-reply.js.map +0 -1
  123. package/dist/src/index.d.ts +0 -24
  124. package/dist/src/index.d.ts.map +0 -1
  125. package/dist/src/index.js +0 -24
  126. package/dist/src/index.js.map +0 -1
  127. package/dist/src/keyboard/index.d.ts +0 -46
  128. package/dist/src/keyboard/index.d.ts.map +0 -1
  129. package/dist/src/keyboard/index.js +0 -55
  130. package/dist/src/keyboard/index.js.map +0 -1
  131. package/dist/src/middleware/compose.d.ts +0 -5
  132. package/dist/src/middleware/compose.d.ts.map +0 -1
  133. package/dist/src/middleware/compose.js +0 -17
  134. package/dist/src/middleware/compose.js.map +0 -1
  135. package/dist/src/observability/logger.d.ts +0 -78
  136. package/dist/src/observability/logger.d.ts.map +0 -1
  137. package/dist/src/observability/logger.js +0 -285
  138. package/dist/src/observability/logger.js.map +0 -1
  139. package/dist/src/plugins/plugin.d.ts +0 -38
  140. package/dist/src/plugins/plugin.d.ts.map +0 -1
  141. package/dist/src/plugins/plugin.js +0 -59
  142. package/dist/src/plugins/plugin.js.map +0 -1
  143. package/dist/src/queue/queue.d.ts +0 -77
  144. package/dist/src/queue/queue.d.ts.map +0 -1
  145. package/dist/src/queue/queue.js +0 -213
  146. package/dist/src/queue/queue.js.map +0 -1
  147. package/dist/src/router/router.d.ts +0 -61
  148. package/dist/src/router/router.d.ts.map +0 -1
  149. package/dist/src/router/router.js +0 -183
  150. package/dist/src/router/router.js.map +0 -1
  151. package/dist/src/state/conversation.d.ts +0 -56
  152. package/dist/src/state/conversation.d.ts.map +0 -1
  153. package/dist/src/state/conversation.js +0 -133
  154. package/dist/src/state/conversation.js.map +0 -1
  155. package/dist/src/state/forms.d.ts +0 -34
  156. package/dist/src/state/forms.d.ts.map +0 -1
  157. package/dist/src/state/forms.js +0 -44
  158. package/dist/src/state/forms.js.map +0 -1
  159. package/dist/src/state/menu.d.ts +0 -78
  160. package/dist/src/state/menu.d.ts.map +0 -1
  161. package/dist/src/state/menu.js +0 -127
  162. package/dist/src/state/menu.js.map +0 -1
  163. package/dist/src/storage/storage.d.ts +0 -146
  164. package/dist/src/storage/storage.d.ts.map +0 -1
  165. package/dist/src/storage/storage.js +0 -195
  166. package/dist/src/storage/storage.js.map +0 -1
  167. package/dist/src/telegram-features.d.ts +0 -33
  168. package/dist/src/telegram-features.d.ts.map +0 -1
  169. package/dist/src/telegram-features.js +0 -71
  170. package/dist/src/telegram-features.js.map +0 -1
  171. package/dist/src/testing.d.ts +0 -24
  172. package/dist/src/testing.d.ts.map +0 -1
  173. package/dist/src/testing.js +0 -38
  174. package/dist/src/testing.js.map +0 -1
  175. package/dist/src/utils/concurrency.d.ts +0 -25
  176. package/dist/src/utils/concurrency.d.ts.map +0 -1
  177. package/dist/src/utils/concurrency.js +0 -52
  178. package/dist/src/utils/concurrency.js.map +0 -1
  179. package/dist/src/utils/files.d.ts +0 -45
  180. package/dist/src/utils/files.d.ts.map +0 -1
  181. package/dist/src/utils/files.js +0 -53
  182. package/dist/src/utils/files.js.map +0 -1
  183. package/dist/src/utils/text.d.ts +0 -39
  184. package/dist/src/utils/text.d.ts.map +0 -1
  185. package/dist/src/utils/text.js +0 -56
  186. package/dist/src/utils/text.js.map +0 -1
  187. package/dist/src/webhook/handler.d.ts +0 -19
  188. package/dist/src/webhook/handler.d.ts.map +0 -1
  189. package/dist/src/webhook/handler.js +0 -141
  190. package/dist/src/webhook/handler.js.map +0 -1
  191. package/dist-cjs/generated/api.js +0 -194
  192. package/dist-cjs/package.json +0 -3
  193. package/dist-cjs/src/api/client.js +0 -107
  194. package/dist-cjs/src/api/errors.js +0 -74
  195. package/dist-cjs/src/api/index.js +0 -21
  196. package/dist-cjs/src/api/telegram-types/LICENSE +0 -21
  197. package/dist-cjs/src/api/telegram-types/api.d.ts +0 -22
  198. package/dist-cjs/src/api/telegram-types/checklist.d.ts +0 -72
  199. package/dist-cjs/src/api/telegram-types/inline.d.ts +0 -692
  200. package/dist-cjs/src/api/telegram-types/langs.d.ts +0 -193
  201. package/dist-cjs/src/api/telegram-types/manage.d.ts +0 -1144
  202. package/dist-cjs/src/api/telegram-types/markup.d.ts +0 -268
  203. package/dist-cjs/src/api/telegram-types/message.d.ts +0 -1537
  204. package/dist-cjs/src/api/telegram-types/methods.d.ts +0 -2870
  205. package/dist-cjs/src/api/telegram-types/mod.d.ts +0 -14
  206. package/dist-cjs/src/api/telegram-types/passport.d.ts +0 -163
  207. package/dist-cjs/src/api/telegram-types/payment.d.ts +0 -570
  208. package/dist-cjs/src/api/telegram-types/rich.d.ts +0 -1010
  209. package/dist-cjs/src/api/telegram-types/settings.d.ts +0 -120
  210. package/dist-cjs/src/api/telegram-types/story.d.ts +0 -89
  211. package/dist-cjs/src/api/telegram-types/update.d.ts +0 -84
  212. package/dist-cjs/src/api/telegram.js +0 -2
  213. package/dist-cjs/src/api/transport.js +0 -267
  214. package/dist-cjs/src/api/types.js +0 -2
  215. package/dist-cjs/src/branding/terminal.js +0 -338
  216. package/dist-cjs/src/broadcast/broadcast.js +0 -58
  217. package/dist-cjs/src/cache/cache.js +0 -45
  218. package/dist-cjs/src/cli.js +0 -86
  219. package/dist-cjs/src/context/context.js +0 -305
  220. package/dist-cjs/src/core/bot.js +0 -510
  221. package/dist-cjs/src/core/events.js +0 -38
  222. package/dist-cjs/src/core/webhook-reply.js +0 -42
  223. package/dist-cjs/src/index.js +0 -47
  224. package/dist-cjs/src/keyboard/index.js +0 -61
  225. package/dist-cjs/src/middleware/compose.js +0 -20
  226. package/dist-cjs/src/observability/logger.js +0 -293
  227. package/dist-cjs/src/plugins/plugin.js +0 -63
  228. package/dist-cjs/src/queue/queue.js +0 -219
  229. package/dist-cjs/src/router/router.js +0 -186
  230. package/dist-cjs/src/state/conversation.js +0 -139
  231. package/dist-cjs/src/state/forms.js +0 -47
  232. package/dist-cjs/src/state/menu.js +0 -133
  233. package/dist-cjs/src/storage/storage.js +0 -202
  234. package/dist-cjs/src/telegram-features.js +0 -76
  235. package/dist-cjs/src/testing.js +0 -45
  236. package/dist-cjs/src/utils/concurrency.js +0 -57
  237. package/dist-cjs/src/utils/files.js +0 -58
  238. package/dist-cjs/src/utils/text.js +0 -63
  239. package/dist-cjs/src/webhook/handler.js +0 -144
  240. package/docs/API.id.md +0 -1935
  241. package/docs/API.md +0 -1969
  242. package/docs/API.zh-CN.md +0 -1929
  243. package/docs/GETTING_STARTED.id.md +0 -85
  244. package/docs/GETTING_STARTED.md +0 -85
  245. package/docs/GETTING_STARTED.zh-CN.md +0 -85
  246. package/docs/GITHUB_PACKAGES.id.md +0 -82
  247. package/docs/GITHUB_PACKAGES.md +0 -82
  248. package/docs/GITHUB_PACKAGES.zh-CN.md +0 -82
  249. package/docs/README.md +0 -48
  250. package/docs/STORAGE.id.md +0 -105
  251. package/docs/STORAGE.md +0 -105
  252. package/docs/STORAGE.zh-CN.md +0 -105
  253. package/examples/README.md +0 -37
  254. package/examples/files.ts +0 -35
  255. package/examples/minimal.ts +0 -12
  256. package/examples/tsconfig.json +0 -9
  257. package/examples/webhook.ts +0 -42
  258. package/examples/wizard-registration.ts +0 -42
@@ -1,213 +0,0 @@
1
- function sleep(delayMs) { return new Promise((resolve) => setTimeout(resolve, delayMs)); }
2
- export class TaskQueue {
3
- worker;
4
- options;
5
- pending = [];
6
- jobs = new Map();
7
- controllers = new Map();
8
- active = 0;
9
- sequence = 0;
10
- draining = false;
11
- closed = false;
12
- constructor(worker, options = {}) {
13
- this.worker = worker;
14
- this.options = options;
15
- if ((options.concurrency ?? 1) < 1 || !Number.isInteger(options.concurrency ?? 1))
16
- throw new RangeError("concurrency must be a positive integer");
17
- if ((options.retries ?? 0) < 0 || !Number.isInteger(options.retries ?? 0))
18
- throw new RangeError("retries must be a non-negative integer");
19
- }
20
- add(data, options = {}) {
21
- if (this.closed)
22
- throw new Error("TaskQueue is closed");
23
- const id = options.id ?? `job_${Date.now()}_${this.sequence++}`;
24
- if (this.jobs.has(id))
25
- throw new Error(`Job already exists: ${id}`);
26
- if (options.delayMs !== undefined && options.delayMs < 0)
27
- throw new RangeError("delayMs must be non-negative");
28
- const job = { id, data, attempts: 0, priority: options.priority ?? 0, runAt: Date.now() + (options.delayMs ?? 0), status: "queued" };
29
- this.jobs.set(id, job);
30
- this.pending.push(job);
31
- this.pending.sort((a, b) => b.priority - a.priority || a.runAt - b.runAt);
32
- void this.drain();
33
- return { ...job };
34
- }
35
- get(id) { const job = this.jobs.get(id); return job ? { ...job } : undefined; }
36
- cancel(id) { const job = this.jobs.get(id); if (!job || ["completed", "failed", "cancelled"].includes(job.status))
37
- return false; job.status = "cancelled"; this.controllers.get(id)?.abort(); return true; }
38
- async onIdle() { while (this.pending.some((job) => job.status === "queued") || this.active)
39
- await sleep(10); }
40
- async close() {
41
- this.closed = true;
42
- this.draining = false;
43
- for (const id of this.controllers.keys())
44
- this.cancel(id);
45
- for (const job of this.pending)
46
- if (job.status === "queued")
47
- job.status = "cancelled";
48
- this.pending.length = 0;
49
- await this.onIdle();
50
- }
51
- async drain() {
52
- if (this.draining || this.closed)
53
- return;
54
- this.draining = true;
55
- try {
56
- while (!this.closed && this.pending.some((job) => job.status === "queued") && this.active < (this.options.concurrency ?? 1)) {
57
- const index = this.pending.findIndex((job) => job.runAt <= Date.now() && job.status === "queued");
58
- if (index < 0) {
59
- const next = Math.min(...this.pending.filter((job) => job.status === "queued").map((job) => job.runAt));
60
- await sleep(Math.max(1, next - Date.now()));
61
- continue;
62
- }
63
- const [job] = this.pending.splice(index, 1);
64
- if (!job)
65
- continue;
66
- this.active += 1;
67
- void this.run(job).finally(() => { this.active -= 1; void this.drain(); });
68
- }
69
- }
70
- finally {
71
- this.draining = false;
72
- }
73
- }
74
- async run(job) {
75
- const maxAttempts = this.options.retries ?? 0;
76
- const controller = new AbortController();
77
- this.controllers.set(job.id, controller);
78
- try {
79
- while (job.attempts <= maxAttempts && job.status !== "cancelled") {
80
- job.status = "running";
81
- job.attempts += 1;
82
- try {
83
- await this.worker(job, controller.signal);
84
- job.status = "completed";
85
- return;
86
- }
87
- catch (error) {
88
- job.error = error;
89
- const wasCancelled = job.status === "cancelled";
90
- if (job.attempts > maxAttempts || wasCancelled) {
91
- job.status = wasCancelled ? "cancelled" : "failed";
92
- await this.options.onError?.(error, { ...job });
93
- return;
94
- }
95
- const delay = Math.min(this.options.maxBackoffMs ?? 30_000, (this.options.backoffMs ?? 250) * 2 ** (job.attempts - 1));
96
- await sleep(delay);
97
- }
98
- }
99
- }
100
- finally {
101
- this.controllers.delete(job.id);
102
- }
103
- }
104
- }
105
- function parseCronField(token, min, max, normalize) {
106
- if (!token)
107
- throw new Error("Cron fields cannot be empty");
108
- const values = new Set();
109
- for (const part of token.split(",")) {
110
- const [rangePart, stepPart] = part.split("/");
111
- const step = stepPart === undefined ? 1 : Number(stepPart);
112
- if (!Number.isInteger(step) || step < 1)
113
- throw new Error(`Invalid cron step: ${part}`);
114
- const bounds = rangePart === "*" ? [min, max] : rangePart?.split("-").map(Number);
115
- if (!bounds || bounds.length < 1 || bounds.some((value) => !Number.isInteger(value)))
116
- throw new Error(`Invalid cron range: ${part}`);
117
- const start = bounds[0];
118
- const end = (bounds[1] ?? start);
119
- if (start < min || end > max || start > end)
120
- throw new Error(`Cron value out of range: ${part}`);
121
- for (let value = start; value <= end; value += step)
122
- values.add(normalize ? normalize(value) : value);
123
- }
124
- return { min, max, values };
125
- }
126
- export function parseCronExpression(expression) {
127
- const fields = expression.trim().split(/\s+/);
128
- if (fields.length !== 5)
129
- throw new Error("Cron expression must contain exactly five fields: minute hour day-of-month month day-of-week");
130
- return {
131
- minute: parseCronField(fields[0], 0, 59),
132
- hour: parseCronField(fields[1], 0, 23),
133
- dayOfMonth: parseCronField(fields[2], 1, 31),
134
- month: parseCronField(fields[3], 1, 12),
135
- dayOfWeek: parseCronField(fields[4], 0, 7, (value) => value === 7 ? 0 : value),
136
- };
137
- }
138
- export function nextCronOccurrence(expression, from = new Date()) {
139
- const cron = typeof expression === "string" ? parseCronExpression(expression) : expression;
140
- const candidate = new Date(from);
141
- candidate.setSeconds(0, 0);
142
- candidate.setMinutes(candidate.getMinutes() + 1);
143
- const maxMinutes = 366 * 24 * 60 * 5;
144
- for (let index = 0; index < maxMinutes; index += 1) {
145
- const dayOfMonthMatches = cron.dayOfMonth.values.has(candidate.getDate());
146
- const dayOfWeekMatches = cron.dayOfWeek.values.has(candidate.getDay());
147
- const dayMatches = cron.dayOfMonth.values.size === cron.dayOfMonth.max - cron.dayOfMonth.min + 1
148
- || cron.dayOfWeek.values.size === cron.dayOfWeek.max - cron.dayOfWeek.min + 1
149
- ? dayOfMonthMatches && dayOfWeekMatches
150
- : dayOfMonthMatches || dayOfWeekMatches;
151
- if (cron.month.values.has(candidate.getMonth() + 1) && cron.hour.values.has(candidate.getHours()) && cron.minute.values.has(candidate.getMinutes()) && dayMatches)
152
- return new Date(candidate);
153
- candidate.setMinutes(candidate.getMinutes() + 1);
154
- }
155
- throw new Error(`Cron expression has no occurrence within five years: ${typeof expression === "string" ? expression : "[parsed]"}`);
156
- }
157
- export class Scheduler {
158
- options;
159
- timers = new Map();
160
- nextRuns = new Map();
161
- constructor(options = {}) {
162
- this.options = options;
163
- }
164
- every(id, intervalMs, task) {
165
- if (!Number.isFinite(intervalMs) || intervalMs <= 0)
166
- throw new RangeError("intervalMs must be positive");
167
- this.cancel(id);
168
- const timer = setInterval(() => { void this.run(id, task); }, intervalMs);
169
- this.timers.set(id, timer);
170
- return { id, cancel: () => this.cancel(id) };
171
- }
172
- after(id, delayMs, task) {
173
- if (!Number.isFinite(delayMs) || delayMs < 0)
174
- throw new RangeError("delayMs must be non-negative");
175
- this.cancel(id);
176
- const timer = setTimeout(() => { this.timers.delete(id); void this.run(id, task); }, delayMs);
177
- this.timers.set(id, timer);
178
- return { id, cancel: () => this.cancel(id) };
179
- }
180
- cron(id, expression, task) {
181
- const parsed = parseCronExpression(expression);
182
- this.cancel(id);
183
- const scheduleNext = () => {
184
- const nextRunAt = nextCronOccurrence(parsed);
185
- this.nextRuns.set(id, nextRunAt);
186
- const timer = setTimeout(() => {
187
- this.timers.delete(id);
188
- void this.run(id, task).finally(() => { if (this.nextRuns.has(id))
189
- scheduleNext(); });
190
- }, Math.max(1, nextRunAt.getTime() - Date.now()));
191
- this.timers.set(id, timer);
192
- };
193
- scheduleNext();
194
- const scheduler = this;
195
- return { id, cancel: () => scheduler.cancel(id), get nextRunAt() { return scheduler.nextRuns.get(id); } };
196
- }
197
- getNextRun(id) { const value = this.nextRuns.get(id); return value ? new Date(value) : undefined; }
198
- cancel(id) { const timer = this.timers.get(id); if (!timer) {
199
- this.nextRuns.delete(id);
200
- return false;
201
- } clearTimeout(timer); clearInterval(timer); this.timers.delete(id); this.nextRuns.delete(id); return true; }
202
- clear() { for (const id of [...this.timers.keys()])
203
- this.cancel(id); }
204
- async run(id, task) {
205
- try {
206
- await task();
207
- }
208
- catch (error) {
209
- await this.options.onError?.(error, id);
210
- }
211
- }
212
- }
213
- //# sourceMappingURL=queue.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"queue.js","sourceRoot":"","sources":["../../../src/queue/queue.ts"],"names":[],"mappings":"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"}
@@ -1,61 +0,0 @@
1
- import { type Middleware } from "../middleware/compose.js";
2
- export interface RoutableContext {
3
- update: {
4
- [key: string]: unknown;
5
- };
6
- message: {
7
- text?: string;
8
- caption?: string;
9
- chat?: {
10
- id: number | string;
11
- };
12
- [key: string]: unknown;
13
- } | undefined;
14
- callbackQuery: {
15
- data?: string;
16
- } | undefined;
17
- params: Record<string, string>;
18
- match?: RegExpMatchArray | undefined;
19
- args?: string[] | undefined;
20
- me?: {
21
- username?: string;
22
- id?: number;
23
- } | undefined;
24
- }
25
- type Matcher<Context> = (ctx: Context) => boolean | Promise<boolean>;
26
- type Handler<Context> = Middleware<Context>;
27
- export type RouterMatchMode = "first" | "all";
28
- export interface RouterOptions {
29
- /** `first` prevents accidental double replies; `all` runs every matching route explicitly. */
30
- matchMode?: RouterMatchMode;
31
- }
32
- /** Update types accepted by `on()` filters, mirroring the Telegram `Update` object. */
33
- export declare const UPDATE_FILTER_TYPES: readonly ["message", "edited_message", "channel_post", "edited_channel_post", "business_connection", "business_message", "edited_business_message", "deleted_business_messages", "guest_message", "message_reaction", "message_reaction_count", "inline_query", "chosen_inline_result", "callback_query", "shipping_query", "pre_checkout_query", "purchased_paid_media", "poll", "poll_answer", "my_chat_member", "chat_member", "chat_join_request", "chat_boost", "removed_chat_boost"];
34
- export type UpdateFilterType = typeof UPDATE_FILTER_TYPES[number];
35
- /** Filter grammar: an update type such as `message`, optionally narrowed by a payload field: `message:text`. */
36
- export type UpdateFilter = `${UpdateFilterType}` | `${UpdateFilterType}:${string}`;
37
- export declare class Router<Context extends RoutableContext> {
38
- private readonly middlewares;
39
- private readonly routes;
40
- private sequence;
41
- readonly matchMode: RouterMatchMode;
42
- constructor(options?: RouterOptions);
43
- use(...middleware: Handler<Context>[]): this;
44
- route(matcher: Matcher<Context>, ...middleware: Handler<Context>[]): this;
45
- command(name: string | RegExp, ...middleware: Handler<Context>[]): this;
46
- text(value: string, ...middleware: Handler<Context>[]): this;
47
- regex(expression: RegExp, ...middleware: Handler<Context>[]): this;
48
- callback(pattern: string | RegExp, ...middleware: Handler<Context>[]): this;
49
- chat(chatId: number | string, ...middleware: Handler<Context>[]): this;
50
- /**
51
- * Registers handlers for update types, with optional payload narrowing:
52
- * `on("message")`, `on("message:photo")`, `on("callback_query:data")`,
53
- * or an array such as `["message:text", "callback_query:data"]`.
54
- */
55
- on(filter: UpdateFilter | UpdateFilter[], ...middleware: Handler<Context>[]): this;
56
- predicate(matcher: Matcher<Context>, ...middleware: Handler<Context>[]): this;
57
- nest(child: Router<Context>): this;
58
- handle(ctx: Context, terminal?: () => Promise<void>): Promise<void>;
59
- }
60
- export {};
61
- //# sourceMappingURL=router.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../../src/router/router.ts"],"names":[],"mappings":"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"}
@@ -1,183 +0,0 @@
1
- import { compose } from "../middleware/compose.js";
2
- function testRegExp(expression, value) {
3
- expression.lastIndex = 0;
4
- return expression.test(value);
5
- }
6
- /** Update types accepted by `on()` filters, mirroring the Telegram `Update` object. */
7
- export const UPDATE_FILTER_TYPES = [
8
- "message",
9
- "edited_message",
10
- "channel_post",
11
- "edited_channel_post",
12
- "business_connection",
13
- "business_message",
14
- "edited_business_message",
15
- "deleted_business_messages",
16
- "guest_message",
17
- "message_reaction",
18
- "message_reaction_count",
19
- "inline_query",
20
- "chosen_inline_result",
21
- "callback_query",
22
- "shipping_query",
23
- "pre_checkout_query",
24
- "purchased_paid_media",
25
- "poll",
26
- "poll_answer",
27
- "my_chat_member",
28
- "chat_member",
29
- "chat_join_request",
30
- "chat_boost",
31
- "removed_chat_boost",
32
- ];
33
- const updateFilterTypes = new Set(UPDATE_FILTER_TYPES);
34
- function assertValidFilter(filter) {
35
- const type = filter.split(":", 1)[0] ?? "";
36
- if (!updateFilterTypes.has(type))
37
- throw new TypeError(`Unknown update type in filter "${filter}". Expected one of: ${UPDATE_FILTER_TYPES.join(", ")}.`);
38
- }
39
- function matchesFilter(ctx, filter) {
40
- const separator = filter.indexOf(":");
41
- const type = separator < 0 ? filter : filter.slice(0, separator);
42
- const field = separator < 0 ? undefined : filter.slice(separator + 1);
43
- const payload = ctx.update[type];
44
- if (payload === undefined || payload === null)
45
- return false;
46
- if (field === undefined || field === "")
47
- return true;
48
- return typeof payload === "object" && payload[field] !== undefined;
49
- }
50
- export class Router {
51
- middlewares = [];
52
- routes = [];
53
- sequence = 0;
54
- matchMode;
55
- constructor(options = {}) {
56
- this.matchMode = options.matchMode ?? "first";
57
- }
58
- use(...middleware) {
59
- if (middleware.length === 0)
60
- return this;
61
- this.middlewares.push(...middleware);
62
- return this;
63
- }
64
- route(matcher, ...middleware) {
65
- if (middleware.length === 0)
66
- throw new Error("A route requires at least one middleware handler.");
67
- this.routes.push({ priority: this.sequence++, matcher, middleware });
68
- return this;
69
- }
70
- command(name, ...middleware) {
71
- return this.route(async (ctx) => {
72
- const text = ctx.message?.text ?? ctx.message?.caption;
73
- if (!text?.startsWith("/"))
74
- return false;
75
- const parts = text.slice(1).split(/\s+/);
76
- const commandWithBot = parts[0] ?? "";
77
- const [command, botUsername] = commandWithBot.split("@");
78
- if (botUsername && ctx.me?.username && botUsername.toLowerCase() !== ctx.me.username.toLowerCase()) {
79
- return false;
80
- }
81
- const matched = typeof name === "string"
82
- ? command === name.replace(/^\//, "")
83
- : testRegExp(name, command ?? "");
84
- if (matched) {
85
- ctx.args = parts.slice(1);
86
- }
87
- return matched;
88
- }, ...middleware);
89
- }
90
- text(value, ...middleware) {
91
- return this.route((ctx) => {
92
- const text = ctx.message?.text ?? ctx.message?.caption;
93
- return text === value;
94
- }, ...middleware);
95
- }
96
- regex(expression, ...middleware) {
97
- return this.route((ctx) => {
98
- const text = ctx.message?.text ?? ctx.message?.caption ?? "";
99
- const match = text.match(expression);
100
- if (match) {
101
- ctx.match = match;
102
- return true;
103
- }
104
- return false;
105
- }, ...middleware);
106
- }
107
- callback(pattern, ...middleware) {
108
- return this.route((ctx) => {
109
- const data = ctx.callbackQuery?.data ?? "";
110
- if (typeof pattern === "string") {
111
- if (pattern.endsWith("*")) {
112
- const prefix = pattern.slice(0, -1);
113
- if (data.startsWith(prefix)) {
114
- ctx.params = { ...ctx.params, wildcard: data.slice(prefix.length) };
115
- return true;
116
- }
117
- return false;
118
- }
119
- return data === pattern;
120
- }
121
- const match = data.match(pattern);
122
- if (match) {
123
- ctx.match = match;
124
- return true;
125
- }
126
- return false;
127
- }, ...middleware);
128
- }
129
- chat(chatId, ...middleware) {
130
- return this.route((ctx) => {
131
- const id = ctx.message?.chat?.id;
132
- return id !== undefined && (id === chatId || String(id) === String(chatId));
133
- }, ...middleware);
134
- }
135
- /**
136
- * Registers handlers for update types, with optional payload narrowing:
137
- * `on("message")`, `on("message:photo")`, `on("callback_query:data")`,
138
- * or an array such as `["message:text", "callback_query:data"]`.
139
- */
140
- on(filter, ...middleware) {
141
- const filters = (Array.isArray(filter) ? filter : [filter]).map((value) => String(value));
142
- if (filters.length === 0)
143
- throw new Error("At least one update filter is required.");
144
- for (const value of filters)
145
- assertValidFilter(value);
146
- return this.route((ctx) => filters.some((value) => matchesFilter(ctx, value)), ...middleware);
147
- }
148
- predicate(matcher, ...middleware) {
149
- return this.route(matcher, ...middleware);
150
- }
151
- nest(child) {
152
- return this.route(() => true, async (ctx, next) => {
153
- await child.handle(ctx, next);
154
- });
155
- }
156
- async handle(ctx, terminal) {
157
- const routeDispatcher = async (currentCtx, next) => {
158
- const ordered = [...this.routes].sort((left, right) => left.priority - right.priority);
159
- let matched = false;
160
- for (const route of ordered) {
161
- if (!(await route.matcher(currentCtx)))
162
- continue;
163
- matched = true;
164
- await compose(route.middleware)(currentCtx);
165
- if (this.matchMode === "first")
166
- break;
167
- }
168
- if (!matched) {
169
- if (terminal)
170
- await terminal();
171
- else
172
- await next();
173
- }
174
- };
175
- if (this.middlewares.length === 0) {
176
- await routeDispatcher(ctx, async () => { });
177
- }
178
- else {
179
- await compose([...this.middlewares, routeDispatcher])(ctx);
180
- }
181
- }
182
- }
183
- //# sourceMappingURL=router.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"router.js","sourceRoot":"","sources":["../../../src/router/router.ts"],"names":[],"mappings":"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"}
@@ -1,56 +0,0 @@
1
- import type { Context } from "../context/context.js";
2
- import { type Storage } from "../storage/storage.js";
3
- export interface ConversationState {
4
- name: string;
5
- step: number;
6
- values: Record<string, unknown>;
7
- status: "active" | "completed" | "cancelled";
8
- updatedAt: number;
9
- }
10
- export declare function conversationKeyFromContext<S extends object>(ctx: Context<S>): string;
11
- export declare class ConversationFlow<S extends object = Record<string, unknown>> {
12
- readonly ctx: Context<S>;
13
- readonly state: ConversationState;
14
- constructor(ctx: Context<S>, state: ConversationState);
15
- get values(): Record<string, unknown>;
16
- set<T>(key: string, value: T): this;
17
- get<T>(key: string): T | undefined;
18
- next(): this;
19
- previous(): this;
20
- complete(): void;
21
- cancel(): void;
22
- }
23
- export declare class ConversationManager<S extends object = Record<string, unknown>> {
24
- private readonly active;
25
- readonly storage: Storage<string, ConversationState>;
26
- constructor(storage?: Storage<string, ConversationState>);
27
- start(key: string, name: string, values?: Record<string, unknown>): ConversationState;
28
- startAsync(key: string, name: string, values?: Record<string, unknown>): Promise<ConversationState>;
29
- get(key: string): ConversationState | undefined;
30
- getAsync(key: string): Promise<ConversationState | undefined>;
31
- cancel(key: string): boolean;
32
- cancelAsync(key: string): Promise<boolean>;
33
- clearExpired(maxAgeMs: number): number;
34
- clearExpiredAsync(maxAgeMs: number): Promise<number>;
35
- run(ctx: Context<S>, key: string, name: string, steps: Array<(flow: ConversationFlow<S>) => void | Promise<void>>): Promise<ConversationState>;
36
- }
37
- export interface WizardStep<S extends object = Record<string, unknown>> {
38
- id: string;
39
- run: (flow: ConversationFlow<S>) => void | Promise<void>;
40
- optional?: boolean;
41
- }
42
- export declare class Wizard<S extends object = Record<string, unknown>> {
43
- private readonly stepsList;
44
- private readonly defaultManager;
45
- constructor(manager?: ConversationManager<S>);
46
- step(step: WizardStep<S>): this;
47
- /**
48
- * Runs the active step for a conversation key. The default manager belongs to
49
- * this Wizard instance and is intentionally reused across updates; passing a
50
- * manager is useful when the application owns persistent storage explicitly.
51
- */
52
- run(ctx: Context<S>, key?: string, manager?: ConversationManager<S>): Promise<ConversationState>;
53
- get steps(): readonly WizardStep<S>[];
54
- get manager(): ConversationManager<S>;
55
- }
56
- //# sourceMappingURL=conversation.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"conversation.d.ts","sourceRoot":"","sources":["../../../src/state/conversation.ts"],"names":[],"mappings":"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"}