@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,285 +0,0 @@
1
- // Higher number = more verbose. `silent` must sort BELOW `error` so that every
2
- // message level is filtered out (a value above all others would let every
3
- // message through, including errors).
4
- const priorities = { silent: -1, error: 0, warn: 1, info: 2, debug: 3, trace: 4 };
5
- const defaultRedactKeys = ["token", "secret", "password", "authorization", "cookie", "private_key", "api_key", "npm_token", "bot_token"];
6
- const ANSI = {
7
- reset: "\u001b[0m",
8
- dim: "\u001b[2m",
9
- red: "\u001b[31m",
10
- yellow: "\u001b[33m",
11
- green: "\u001b[32m",
12
- cyan: "\u001b[36m",
13
- blue: "\u001b[34m",
14
- magenta: "\u001b[35m",
15
- };
16
- function isObject(value) { return typeof value === "object" && value !== null; }
17
- function shouldRedact(key, keys) { const normalized = key.toLowerCase().replace(/[-_]/g, ""); return keys.some((candidate) => normalized.includes(candidate.toLowerCase().replace(/[-_]/g, ""))); }
18
- function redactString(value) {
19
- return value
20
- .replace(/\b\d{6,12}:[A-Za-z0-9_-]{20,}\b/g, "[REDACTED_TELEGRAM_TOKEN]")
21
- .replace(/\bnpm_[A-Za-z0-9]{20,}\b/g, "[REDACTED_NPM_TOKEN]");
22
- }
23
- function safeValue(value, keys, seen = new WeakSet()) {
24
- if (typeof value === "string")
25
- return redactString(value);
26
- if (typeof value === "bigint")
27
- return `${value}n`;
28
- if (value instanceof Error)
29
- return safeValue({ name: value.name, message: value.message, stack: value.stack }, keys, seen);
30
- if (Array.isArray(value)) {
31
- if (seen.has(value))
32
- return "[Circular]";
33
- seen.add(value);
34
- return value.map((item) => safeValue(item, keys, seen));
35
- }
36
- if (!isObject(value))
37
- return value;
38
- if (seen.has(value))
39
- return "[Circular]";
40
- seen.add(value);
41
- const result = {};
42
- for (const [key, nested] of Object.entries(value))
43
- result[key] = shouldRedact(key, keys) ? "[REDACTED]" : safeValue(nested, keys, seen);
44
- return result;
45
- }
46
- export function redact(value, keys = defaultRedactKeys) { return safeValue(value, keys); }
47
- function updateType(update) {
48
- if (update.callback_query)
49
- return "callback_query";
50
- if (update.inline_query)
51
- return "inline_query";
52
- if (update.business_message)
53
- return "business_message";
54
- if (update.edited_business_message)
55
- return "edited_business_message";
56
- if (update.guest_message)
57
- return "guest_message";
58
- if (update.edited_guest_message)
59
- return "edited_guest_message";
60
- if (update.message_reaction)
61
- return "message_reaction";
62
- if (update.message_reaction_count)
63
- return "message_reaction_count";
64
- if (update.chat_boost)
65
- return "chat_boost";
66
- if (update.removed_chat_boost)
67
- return "removed_chat_boost";
68
- if (update.message)
69
- return "message";
70
- if (update.edited_message)
71
- return "edited_message";
72
- if (update.channel_post)
73
- return "channel_post";
74
- if (update.edited_channel_post)
75
- return "edited_channel_post";
76
- if (update.my_chat_member)
77
- return "my_chat_member";
78
- if (update.chat_member)
79
- return "chat_member";
80
- if (update.chat_join_request)
81
- return "chat_join_request";
82
- if (update.poll)
83
- return "poll";
84
- if (update.poll_answer)
85
- return "poll_answer";
86
- return "unknown";
87
- }
88
- export const INCOMING_TEXT_LIMIT = 50;
89
- function padNumber(value) { return String(value).padStart(2, "0"); }
90
- /** Formats a date as `dd/mm/yyyy hh:mm:ss` in local time. */
91
- export function formatLocalStamp(date = new Date()) {
92
- return `${padNumber(date.getDate())}/${padNumber(date.getMonth() + 1)}/${date.getFullYear()} ${padNumber(date.getHours())}:${padNumber(date.getMinutes())}:${padNumber(date.getSeconds())}`;
93
- }
94
- function truncateForDisplay(value, limit = INCOMING_TEXT_LIMIT) {
95
- if (value.length <= limit)
96
- return { text: value, truncated: false };
97
- return { text: `${value.slice(0, limit)}…`, truncated: true };
98
- }
99
- function nicknameFromUser(user) {
100
- if (!user)
101
- return undefined;
102
- const name = [user.first_name, user.last_name].filter(Boolean).join(" ").trim();
103
- return name.length > 0 ? name : user.username ?? String(user.id);
104
- }
105
- function messageMediaType(message) {
106
- for (const key of ["photo", "video", "video_note", "animation", "document", "audio", "voice", "sticker", "location", "venue", "contact", "dice", "poll", "story", "paid_media"]) {
107
- if (message[key] !== undefined)
108
- return key;
109
- }
110
- return undefined;
111
- }
112
- /**
113
- * Builds the human-readable description of an incoming update used for the
114
- * `[ => ] Message From ...` terminal lines. Text messages and commands are
115
- * truncated to 50 characters; callback button data is shown in full.
116
- */
117
- export function describeIncomingUpdate(update) {
118
- const callback = update.callback_query;
119
- if (callback) {
120
- const result = { kind: "Callback", fromId: callback.from.id, nickname: nicknameFromUser(callback.from), contentLabel: "Data", content: callback.data };
121
- return result;
122
- }
123
- const message = (update.message ?? update.edited_message ?? update.channel_post ?? update.edited_channel_post ?? update.business_message ?? update.edited_business_message ?? update.guest_message ?? update.edited_guest_message);
124
- if (message) {
125
- const from = message.from;
126
- const nickname = nicknameFromUser(from) ?? (message.chat.title !== undefined ? String(message.chat.title) : message.chat.id !== undefined ? String(message.chat.id) : undefined);
127
- const input = { kind: "Message", fromId: from?.id ?? message.chat.id, nickname };
128
- const text = message.text;
129
- if (text !== undefined) {
130
- const truncated = truncateForDisplay(text);
131
- input.contentLabel = "Text";
132
- input.content = truncated.text;
133
- input.truncated = truncated.truncated;
134
- }
135
- else if (message.caption !== undefined) {
136
- const truncated = truncateForDisplay(message.caption);
137
- input.contentLabel = "Caption";
138
- input.content = truncated.text;
139
- input.truncated = truncated.truncated;
140
- }
141
- else {
142
- const media = messageMediaType(message);
143
- if (media !== undefined)
144
- input.contentLabel = media === "photo" ? "Photo" : media.replace(/_/g, " ").replace(/^./, (character) => character.toUpperCase());
145
- }
146
- return input;
147
- }
148
- const inline = update.inline_query;
149
- if (inline) {
150
- const truncated = truncateForDisplay(inline.query);
151
- return { kind: "Inline Query", fromId: inline.from.id, nickname: nicknameFromUser(inline.from), contentLabel: "Query", content: truncated.text, truncated: truncated.truncated };
152
- }
153
- const chosen = update.chosen_inline_result;
154
- if (chosen)
155
- return { kind: "Inline Result", fromId: chosen.from.id, nickname: nicknameFromUser(chosen.from), contentLabel: "Result", content: chosen.result_id };
156
- const chatScoped = update.chat_member ?? update.my_chat_member ?? update.chat_join_request;
157
- if (chatScoped) {
158
- return { kind: "Update", fromId: chatScoped.from.id, nickname: nicknameFromUser(chatScoped.from), contentLabel: "Chat", content: chatScoped.chat.title ?? String(chatScoped.chat.id) };
159
- }
160
- const reaction = update.message_reaction;
161
- const reactor = nicknameFromUser(reaction?.from);
162
- if (reactor)
163
- return { kind: "Reaction", fromId: reaction?.from?.id, nickname: reactor };
164
- return { kind: "Update", context: { type: updateType(update) } };
165
- }
166
- export function summarizeUpdate(update, includeContent = false) {
167
- const callback = update.callback_query;
168
- const message = (update.message ?? update.edited_message ?? update.channel_post ?? update.edited_channel_post ?? update.business_message ?? update.edited_business_message ?? update.guest_message ?? update.edited_guest_message ?? callback?.message);
169
- const summary = { updateId: update.update_id, type: updateType(update) };
170
- if (message?.chat?.id !== undefined)
171
- summary.chatId = message.chat.id;
172
- if (message?.from?.id !== undefined)
173
- summary.fromUserId = message.from.id;
174
- if (message?.message_id !== undefined)
175
- summary.messageId = message.message_id;
176
- if (includeContent) {
177
- const text = message?.text ?? message?.caption;
178
- if (text !== undefined)
179
- summary.text = text;
180
- if (callback?.data !== undefined)
181
- summary.callbackData = callback.data;
182
- }
183
- return summary;
184
- }
185
- function levelColor(level) {
186
- if (level === "error")
187
- return ANSI.red;
188
- if (level === "warn")
189
- return ANSI.yellow;
190
- if (level === "debug")
191
- return ANSI.blue;
192
- if (level === "trace")
193
- return ANSI.magenta;
194
- return ANSI.green;
195
- }
196
- function formatEntry(entry, color, format) {
197
- if (format === "json") {
198
- const line = JSON.stringify(entry);
199
- return color ? `${ANSI.dim}${line}${ANSI.reset}` : line;
200
- }
201
- const time = entry.timestamp.slice(11, 23);
202
- const label = entry.level.toUpperCase().padEnd(5, " ");
203
- const context = entry.context && Object.keys(entry.context).length ? ` ${JSON.stringify(entry.context)}` : "";
204
- const line = `${time} ${label} ${entry.event}${context}`;
205
- return color ? `${levelColor(entry.level)}${line}${ANSI.reset}` : line;
206
- }
207
- function createDefaultSink(options, redactKeys) {
208
- const stream = options.stream ?? process.stdout;
209
- const color = options.color ?? Boolean(stream.isTTY && !process.env.NO_COLOR);
210
- const format = options.format ?? "pretty";
211
- return (entry) => {
212
- if (typeof entry.text === "string") {
213
- stream.write(`${redactString(entry.text)}\n`);
214
- return;
215
- }
216
- const safeEntry = redact(entry, redactKeys);
217
- const line = formatEntry(safeEntry, color, format);
218
- stream.write(`${line}\n`);
219
- };
220
- }
221
- export class Logger {
222
- level;
223
- format;
224
- color;
225
- includeUpdateContent;
226
- sink;
227
- redactKeys;
228
- baseContext;
229
- constructor(options = {}) {
230
- this.level = options.level ?? "info";
231
- this.format = options.format ?? "pretty";
232
- const stream = options.stream ?? process.stdout;
233
- this.color = options.color ?? Boolean(stream.isTTY && !process.env.NO_COLOR);
234
- this.includeUpdateContent = options.includeUpdateContent ?? false;
235
- this.redactKeys = options.redactKeys ?? defaultRedactKeys;
236
- this.sink = options.sink ?? createDefaultSink({ color: this.color, format: this.format, stream }, this.redactKeys);
237
- this.baseContext = options.context ?? {};
238
- }
239
- child(context) { return new Logger({ level: this.level, format: this.format, color: this.color, sink: this.sink, includeUpdateContent: this.includeUpdateContent, redactKeys: this.redactKeys, context: { ...this.baseContext, ...context } }); }
240
- trace(event, context) { this.write("trace", event, context); }
241
- debug(event, context) { this.write("debug", event, context); }
242
- info(event, context) { this.write("info", event, context); }
243
- warn(event, context) { this.write("warn", event, context); }
244
- error(event, context) { this.write("error", event, context); }
245
- /**
246
- * Logs an incoming update as the human-readable terminal line:
247
- * `[ => ] Message From {id} {nickname} {dd/mm/yyyy} {hh:mm:ss}` followed by
248
- * an indented content line. In `json` format it emits a structured entry
249
- * with the event name `update.received`.
250
- */
251
- incoming(input) {
252
- if (priorities.info > priorities[this.level])
253
- return;
254
- if (this.format === "json") {
255
- const context = { kind: input.kind, ...(input.fromId !== undefined ? { fromId: input.fromId } : {}), ...(input.nickname !== undefined ? { nickname: input.nickname } : {}), ...(input.content !== undefined ? { content: input.content } : {}), ...(input.truncated ? { truncated: true } : {}), ...input.context };
256
- this.write("info", "update.received", context);
257
- return;
258
- }
259
- const stamp = formatLocalStamp();
260
- const identity = [input.fromId !== undefined ? String(input.fromId) : undefined, input.nickname].filter(Boolean).join(" ");
261
- const arrow = this.color ? `\u001b[36m\u001b[1m[ => ]\u001b[0m` : "[ => ]";
262
- const kind = this.color ? `\u001b[1m${input.kind}\u001b[0m` : input.kind;
263
- const header = `${arrow} ${kind} From ${identity} ${this.color ? `\u001b[2m${stamp}\u001b[0m` : stamp}`;
264
- const lines = [redactString(header)];
265
- if (input.content !== undefined || input.contentLabel !== undefined) {
266
- const label = input.contentLabel ?? "Content";
267
- const value = input.content ?? "";
268
- const contentLine = ` ↳ ${label}: ${value}`;
269
- lines.push(this.color ? `\u001b[2m${redactString(contentLine)}\u001b[0m` : redactString(contentLine));
270
- }
271
- this.sink({ timestamp: new Date().toISOString(), level: "info", event: "update.received", text: lines.join("\n") });
272
- }
273
- write(level, event, context = {}) {
274
- if (priorities[level] > priorities[this.level])
275
- return;
276
- const merged = { ...this.baseContext, ...context };
277
- const safe = redact(merged, this.redactKeys);
278
- const entry = { timestamp: new Date().toISOString(), level, event };
279
- if (Object.keys(safe).length)
280
- entry.context = safe;
281
- this.sink(entry);
282
- }
283
- }
284
- export function createLogger(options) { return new Logger(options); }
285
- //# sourceMappingURL=logger.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/observability/logger.ts"],"names":[],"mappings":"AAQA,+EAA+E;AAC/E,0EAA0E;AAC1E,sCAAsC;AACtC,MAAM,UAAU,GAA6B,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;AAC5G,MAAM,iBAAiB,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,eAAe,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;AACzI,MAAM,IAAI,GAAG;IACX,KAAK,EAAE,WAAW;IAClB,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,YAAY;IACjB,MAAM,EAAE,YAAY;IACpB,KAAK,EAAE,YAAY;IACnB,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,YAAY;IAClB,OAAO,EAAE,YAAY;CACb,CAAC;AAaX,SAAS,QAAQ,CAAC,KAAc,IAAsC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC;AAC3H,SAAS,YAAY,CAAC,GAAW,EAAE,IAAuB,IAAa,MAAM,UAAU,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvO,SAAS,YAAY,CAAC,KAAa;IACjC,OAAO,KAAK;SACT,OAAO,CAAC,kCAAkC,EAAE,2BAA2B,CAAC;SACxE,OAAO,CAAC,2BAA2B,EAAE,sBAAsB,CAAC,CAAC;AAClE,CAAC;AAED,SAAS,SAAS,CAAC,KAAc,EAAE,IAAuB,EAAE,OAAO,IAAI,OAAO,EAAU;IACtF,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC;IAC1D,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,GAAG,KAAK,GAAG,CAAC;IAClD,IAAI,KAAK,YAAY,KAAK;QAAE,OAAO,SAAS,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC3H,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,OAAO,YAAY,CAAC;QACzC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAChB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACnC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;QAAE,OAAO,YAAY,CAAC;IACzC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAChB,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,MAAM,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACxI,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,KAAc,EAAE,OAA0B,iBAAiB,IAAa,OAAO,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AAE/H,SAAS,UAAU,CAAC,MAAc;IAChC,IAAI,MAAM,CAAC,cAAc;QAAE,OAAO,gBAAgB,CAAC;IACnD,IAAI,MAAM,CAAC,YAAY;QAAE,OAAO,cAAc,CAAC;IAC/C,IAAI,MAAM,CAAC,gBAAgB;QAAE,OAAO,kBAAkB,CAAC;IACvD,IAAI,MAAM,CAAC,uBAAuB;QAAE,OAAO,yBAAyB,CAAC;IACrE,IAAI,MAAM,CAAC,aAAa;QAAE,OAAO,eAAe,CAAC;IACjD,IAAI,MAAM,CAAC,oBAAoB;QAAE,OAAO,sBAAsB,CAAC;IAC/D,IAAI,MAAM,CAAC,gBAAgB;QAAE,OAAO,kBAAkB,CAAC;IACvD,IAAI,MAAM,CAAC,sBAAsB;QAAE,OAAO,wBAAwB,CAAC;IACnE,IAAI,MAAM,CAAC,UAAU;QAAE,OAAO,YAAY,CAAC;IAC3C,IAAI,MAAM,CAAC,kBAAkB;QAAE,OAAO,oBAAoB,CAAC;IAC3D,IAAI,MAAM,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IACrC,IAAI,MAAM,CAAC,cAAc;QAAE,OAAO,gBAAgB,CAAC;IACnD,IAAI,MAAM,CAAC,YAAY;QAAE,OAAO,cAAc,CAAC;IAC/C,IAAI,MAAM,CAAC,mBAAmB;QAAE,OAAO,qBAAqB,CAAC;IAC7D,IAAI,MAAM,CAAC,cAAc;QAAE,OAAO,gBAAgB,CAAC;IACnD,IAAI,MAAM,CAAC,WAAW;QAAE,OAAO,aAAa,CAAC;IAC7C,IAAI,MAAM,CAAC,iBAAiB;QAAE,OAAO,mBAAmB,CAAC;IACzD,IAAI,MAAM,CAAC,IAAI;QAAE,OAAO,MAAM,CAAC;IAC/B,IAAI,MAAM,CAAC,WAAW;QAAE,OAAO,aAAa,CAAC;IAC7C,OAAO,SAAS,CAAC;AACnB,CAAC;AAeD,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAEtC,SAAS,SAAS,CAAC,KAAa,IAAY,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AAEpF,6DAA6D;AAC7D,MAAM,UAAU,gBAAgB,CAAC,IAAI,GAAG,IAAI,IAAI,EAAE;IAChD,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC;AAC9L,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAa,EAAE,KAAK,GAAG,mBAAmB;IACpE,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK;QAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IACpE,OAAO,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AAChE,CAAC;AAED,SAAS,gBAAgB,CAAC,IAA4F;IACpH,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5B,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAChF,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAgB;IACxC,KAAK,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,CAAC;QAChL,IAAI,OAAO,CAAC,GAAoB,CAAC,KAAK,SAAS;YAAE,OAAO,GAAG,CAAC;IAC9D,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAAc;IACnD,MAAM,QAAQ,GAAG,MAAM,CAAC,cAAc,CAAC;IACvC,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,MAAM,GAAgB,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;QACpK,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,mBAAmB,IAAI,MAAM,CAAC,gBAAgB,IAAI,MAAM,CAAC,uBAAuB,IAAI,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,oBAAoB,CAAwB,CAAC;IAC1P,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QAC1B,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACjL,MAAM,KAAK,GAAgB,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC;QAC9F,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QAC1B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,MAAM,SAAS,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAC3C,KAAK,CAAC,YAAY,GAAG,MAAM,CAAC;YAC5B,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC;YAC/B,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;QACxC,CAAC;aAAM,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YACzC,MAAM,SAAS,GAAG,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACtD,KAAK,CAAC,YAAY,GAAG,SAAS,CAAC;YAC/B,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC;YAC/B,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,MAAM,KAAK,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;YACxC,IAAI,KAAK,KAAK,SAAS;gBAAE,KAAK,CAAC,YAAY,GAAG,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;QAC7J,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC;IACnC,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,SAAS,GAAG,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnD,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE,CAAC;IACnL,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,oBAAoB,CAAC;IAC3C,IAAI,MAAM;QAAE,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;IACjK,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,iBAAiB,CAAC;IAC3F,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;IACzL,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,CAAC,gBAAqH,CAAC;IAC9I,MAAM,OAAO,GAAG,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACjD,IAAI,OAAO;QAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;IACxF,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAc,EAAE,cAAc,GAAG,KAAK;IACpE,MAAM,QAAQ,GAA8B,MAAM,CAAC,cAAc,CAAC;IAClE,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,mBAAmB,IAAI,MAAM,CAAC,gBAAgB,IAAI,MAAM,CAAC,uBAAuB,IAAI,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,oBAAoB,IAAI,QAAQ,EAAE,OAAO,CAAwB,CAAC;IAC/Q,MAAM,OAAO,GAAkB,EAAE,QAAQ,EAAE,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;IACxF,IAAI,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,SAAS;QAAE,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;IACtE,IAAI,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,SAAS;QAAE,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;IAC1E,IAAI,OAAO,EAAE,UAAU,KAAK,SAAS;QAAE,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC;IAC9E,IAAI,cAAc,EAAE,CAAC;QACnB,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,OAAO,EAAE,OAAO,CAAC;QAC/C,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;QAC5C,IAAI,QAAQ,EAAE,IAAI,KAAK,SAAS;YAAE,OAAO,CAAC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC;IACzE,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,UAAU,CAAC,KAAwB;IAC1C,IAAI,KAAK,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC,GAAG,CAAC;IACvC,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC,MAAM,CAAC;IACzC,IAAI,KAAK,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC,IAAI,CAAC;IACxC,IAAI,KAAK,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC,OAAO,CAAC;IAC3C,OAAO,IAAI,CAAC,KAAK,CAAC;AACpB,CAAC;AAED,SAAS,WAAW,CAAC,KAAe,EAAE,KAAc,EAAE,MAAiB;IACrE,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACnC,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1D,CAAC;IACD,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9G,MAAM,IAAI,GAAG,GAAG,IAAI,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,GAAG,OAAO,EAAE,CAAC;IACzD,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACzE,CAAC;AAED,SAAS,iBAAiB,CAAC,OAA2D,EAAE,UAA6B;IACnH,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;IAChD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC9E,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,QAAQ,CAAC;IAC1C,OAAO,CAAC,KAAK,EAAE,EAAE;QACf,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACnC,MAAM,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9C,OAAO;QACT,CAAC;QACD,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,EAAE,UAAU,CAAa,CAAC;QACxD,MAAM,IAAI,GAAG,WAAW,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QACnD,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC;IAC5B,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,OAAO,MAAM;IACR,KAAK,CAAW;IAChB,MAAM,CAAY;IAClB,KAAK,CAAU;IACf,oBAAoB,CAAU;IACtB,IAAI,CAAa;IACjB,UAAU,CAAoB;IAC9B,WAAW,CAAa;IAEzC,YAAY,UAAyB,EAAE;QACrC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC;QACrC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,QAAQ,CAAC;QACzC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;QAChD,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7E,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,IAAI,KAAK,CAAC;QAClE,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,iBAAiB,CAAC;QAC1D,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,iBAAiB,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACnH,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,OAAmB,IAAY,OAAO,IAAI,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,oBAAoB,EAAE,IAAI,CAAC,oBAAoB,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IACrQ,KAAK,CAAC,KAAa,EAAE,OAAoB,IAAU,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACzF,KAAK,CAAC,KAAa,EAAE,OAAoB,IAAU,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACzF,IAAI,CAAC,KAAa,EAAE,OAAoB,IAAU,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACvF,IAAI,CAAC,KAAa,EAAE,OAAoB,IAAU,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACvF,KAAK,CAAC,KAAa,EAAE,OAAoB,IAAU,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAEzF;;;;;OAKG;IACH,QAAQ,CAAC,KAAkB;QACzB,IAAI,UAAU,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO;QACrD,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC3B,MAAM,OAAO,GAAe,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;YAChU,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,iBAAiB,EAAE,OAAO,CAAC,CAAC;YAC/C,OAAO;QACT,CAAC;QACD,MAAM,KAAK,GAAG,gBAAgB,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3H,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC3E,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;QACzE,MAAM,MAAM,GAAG,GAAG,KAAK,IAAI,IAAI,SAAS,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,KAAK,WAAW,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;QACxG,MAAM,KAAK,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;QACrC,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACpE,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,IAAI,SAAS,CAAC;YAC9C,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;YAClC,MAAM,WAAW,GAAG,aAAa,KAAK,KAAK,KAAK,EAAE,CAAC;YACnD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,YAAY,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC;QACxG,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACtH,CAAC;IAEO,KAAK,CAAC,KAAkC,EAAE,KAAa,EAAE,UAAsB,EAAE;QACvF,IAAI,UAAU,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO;QACvD,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,OAAO,EAAE,CAAC;QACnD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAe,CAAC;QAC3D,MAAM,KAAK,GAAa,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QAC9E,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM;YAAE,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;QACnD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC;CACF;AAED,MAAM,UAAU,YAAY,CAAC,OAAuB,IAAY,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC"}
@@ -1,38 +0,0 @@
1
- export interface Plugin<Context = unknown> {
2
- name: string;
3
- version?: string;
4
- install?: (api: PluginApi<Context>) => void | Promise<void>;
5
- setup?: (api: PluginApi<Context>) => void | Promise<void>;
6
- onStart?: (api: PluginApi<Context>) => void | Promise<void>;
7
- onUpdate?: (context: Context) => void | Promise<void>;
8
- onStop?: (api: PluginApi<Context>) => void | Promise<void>;
9
- dispose?: (api: PluginApi<Context>) => void | Promise<void>;
10
- }
11
- export interface PluginApi<Context> {
12
- bot: unknown;
13
- services: ServiceContainer;
14
- registerMiddleware: (middleware: unknown) => void;
15
- registerRoute: (route: unknown) => void;
16
- }
17
- export declare class ServiceContainer {
18
- private readonly values;
19
- register<T>(name: string | symbol, value: T): this;
20
- get<T>(name: string | symbol): T;
21
- has(name: string | symbol): boolean;
22
- delete(name: string | symbol): boolean;
23
- }
24
- export declare class PluginManager<Context> {
25
- private readonly plugins;
26
- private readonly api;
27
- private setupComplete;
28
- constructor(bot: unknown);
29
- use(plugin: Plugin<Context>): this;
30
- /** Installs plugins once; re-running setup after a restart must not double-register middleware. */
31
- setup(): Promise<void>;
32
- start(): Promise<void>;
33
- update(context: Context): Promise<void>;
34
- stop(): Promise<void>;
35
- dispose(): Promise<void>;
36
- list(): readonly Plugin<Context>[];
37
- }
38
- //# sourceMappingURL=plugin.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/plugins/plugin.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,MAAM,CAAC,OAAO,GAAG,OAAO;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,SAAS,CAAC,OAAO,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5D,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,SAAS,CAAC,OAAO,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,SAAS,CAAC,OAAO,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5D,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,SAAS,CAAC,OAAO,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,SAAS,CAAC,OAAO,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7D;AAED,MAAM,WAAW,SAAS,CAAC,OAAO;IAChC,GAAG,EAAE,OAAO,CAAC;IACb,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,kBAAkB,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC;IAClD,aAAa,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACzC;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuC;IAC9D,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAClD,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC;IAChC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO;IACnC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO;CACvC;AAED,qBAAa,aAAa,CAAC,OAAO;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;IACjD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAqB;IACzC,OAAO,CAAC,aAAa,CAAS;gBAClB,GAAG,EAAE,OAAO;IAqBxB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI;IAClC,mGAAmG;IAC7F,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IACtB,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IACvC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IACrB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAC9B,IAAI,IAAI,SAAS,MAAM,CAAC,OAAO,CAAC,EAAE;CACnC"}
@@ -1,59 +0,0 @@
1
- export class ServiceContainer {
2
- values = new Map();
3
- register(name, value) { this.values.set(name, value); return this; }
4
- get(name) { if (!this.values.has(name))
5
- throw new Error(`Service not registered: ${String(name)}`); return this.values.get(name); }
6
- has(name) { return this.values.has(name); }
7
- delete(name) { return this.values.delete(name); }
8
- }
9
- export class PluginManager {
10
- plugins = [];
11
- api;
12
- setupComplete = false;
13
- constructor(bot) {
14
- const host = bot;
15
- this.api = {
16
- bot,
17
- services: new ServiceContainer(),
18
- registerMiddleware: (middleware) => {
19
- if (typeof middleware !== "function" || !host.use)
20
- throw new TypeError("Plugin middleware must be a function and the bot must support use().");
21
- host.use(middleware);
22
- },
23
- registerRoute: (route) => {
24
- if (typeof route === "function") {
25
- route(bot);
26
- return;
27
- }
28
- if (!route || typeof route !== "object" || !host.router?.route)
29
- throw new TypeError("Plugin route must be a registration function or route descriptor.");
30
- const descriptor = route;
31
- if (typeof descriptor.matcher !== "function" || !Array.isArray(descriptor.middleware) || descriptor.middleware.some((item) => typeof item !== "function"))
32
- throw new TypeError("Plugin route descriptor is invalid.");
33
- host.router.route(descriptor.matcher, ...descriptor.middleware);
34
- },
35
- };
36
- }
37
- use(plugin) { if (this.plugins.some((existing) => existing.name === plugin.name))
38
- throw new Error(`Plugin already registered: ${plugin.name}`); this.plugins.push(plugin); return this; }
39
- /** Installs plugins once; re-running setup after a restart must not double-register middleware. */
40
- async setup() {
41
- if (this.setupComplete)
42
- return;
43
- for (const plugin of this.plugins) {
44
- await plugin.install?.(this.api);
45
- await plugin.setup?.(this.api);
46
- }
47
- this.setupComplete = true;
48
- }
49
- async start() { for (const plugin of this.plugins)
50
- await plugin.onStart?.(this.api); }
51
- async update(context) { for (const plugin of this.plugins)
52
- await plugin.onUpdate?.(context); }
53
- async stop() { for (const plugin of this.plugins)
54
- await plugin.onStop?.(this.api); }
55
- async dispose() { for (const plugin of [...this.plugins].reverse())
56
- await plugin.dispose?.(this.api); }
57
- list() { return this.plugins; }
58
- }
59
- //# sourceMappingURL=plugin.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../src/plugins/plugin.ts"],"names":[],"mappings":"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"}
@@ -1,77 +0,0 @@
1
- export interface Job<T = unknown> {
2
- id: string;
3
- data: T;
4
- attempts: number;
5
- priority: number;
6
- runAt: number;
7
- status: "queued" | "running" | "completed" | "failed" | "cancelled";
8
- error?: unknown;
9
- }
10
- export interface QueueOptions {
11
- concurrency?: number;
12
- retries?: number;
13
- backoffMs?: number;
14
- maxBackoffMs?: number;
15
- onError?: (error: unknown, job: Job) => void | Promise<void>;
16
- }
17
- type Worker<T> = (job: Job<T>, signal: AbortSignal) => Promise<void>;
18
- export declare class TaskQueue<T = unknown> {
19
- private readonly worker;
20
- private readonly options;
21
- private readonly pending;
22
- private readonly jobs;
23
- private readonly controllers;
24
- private active;
25
- private sequence;
26
- private draining;
27
- private closed;
28
- constructor(worker: Worker<T>, options?: QueueOptions);
29
- add(data: T, options?: {
30
- id?: string;
31
- priority?: number;
32
- delayMs?: number;
33
- }): Job<T>;
34
- get(id: string): Job<T> | undefined;
35
- cancel(id: string): boolean;
36
- onIdle(): Promise<void>;
37
- close(): Promise<void>;
38
- private drain;
39
- private run;
40
- }
41
- export interface ScheduledJob {
42
- id: string;
43
- cancel: () => void;
44
- nextRunAt?: Date | undefined;
45
- }
46
- export interface SchedulerOptions {
47
- onError?: (error: unknown, id: string) => void | Promise<void>;
48
- }
49
- interface CronField {
50
- min: number;
51
- max: number;
52
- values: Set<number>;
53
- }
54
- export interface CronExpression {
55
- minute: CronField;
56
- hour: CronField;
57
- dayOfMonth: CronField;
58
- month: CronField;
59
- dayOfWeek: CronField;
60
- }
61
- export declare function parseCronExpression(expression: string): CronExpression;
62
- export declare function nextCronOccurrence(expression: string | CronExpression, from?: Date): Date;
63
- export declare class Scheduler {
64
- private readonly options;
65
- private readonly timers;
66
- private readonly nextRuns;
67
- constructor(options?: SchedulerOptions);
68
- every(id: string, intervalMs: number, task: () => void | Promise<void>): ScheduledJob;
69
- after(id: string, delayMs: number, task: () => void | Promise<void>): ScheduledJob;
70
- cron(id: string, expression: string, task: () => void | Promise<void>): ScheduledJob;
71
- getNextRun(id: string): Date | undefined;
72
- cancel(id: string): boolean;
73
- clear(): void;
74
- private run;
75
- }
76
- export {};
77
- //# sourceMappingURL=queue.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../../src/queue/queue.ts"],"names":[],"mappings":"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"}