katanakit-js 6.2.0 → 6.6.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 (116) hide show
  1. package/README.md +11 -3
  2. package/dist/adapters/better-auth/better-auth.service.d.ts +83 -0
  3. package/dist/adapters/better-auth/better-auth.service.d.ts.map +1 -0
  4. package/dist/adapters/better-auth/better-auth.service.js +110 -0
  5. package/dist/adapters/better-auth/better-auth.service.js.map +1 -0
  6. package/dist/adapters/better-auth/client.d.ts +51 -0
  7. package/dist/adapters/better-auth/client.d.ts.map +1 -0
  8. package/dist/adapters/better-auth/client.js +67 -0
  9. package/dist/adapters/better-auth/client.js.map +1 -0
  10. package/dist/adapters/better-auth/index.d.ts +3 -0
  11. package/dist/adapters/better-auth/index.d.ts.map +1 -0
  12. package/dist/adapters/better-auth/index.js +3 -0
  13. package/dist/adapters/better-auth/index.js.map +1 -0
  14. package/dist/adapters/express/server.d.ts +133 -1
  15. package/dist/adapters/express/server.d.ts.map +1 -1
  16. package/dist/adapters/express/server.js +199 -97
  17. package/dist/adapters/express/server.js.map +1 -1
  18. package/dist/adapters/index.d.ts +2 -0
  19. package/dist/adapters/index.d.ts.map +1 -1
  20. package/dist/adapters/index.js +2 -0
  21. package/dist/adapters/index.js.map +1 -1
  22. package/dist/adapters/insforge/insforge.service.d.ts +139 -4
  23. package/dist/adapters/insforge/insforge.service.d.ts.map +1 -1
  24. package/dist/adapters/insforge/insforge.service.js +383 -213
  25. package/dist/adapters/insforge/insforge.service.js.map +1 -1
  26. package/dist/adapters/notion/notion.service.d.ts +130 -144
  27. package/dist/adapters/notion/notion.service.d.ts.map +1 -1
  28. package/dist/adapters/notion/notion.service.js +330 -341
  29. package/dist/adapters/notion/notion.service.js.map +1 -1
  30. package/dist/adapters/photoswipe/index.d.ts +2 -0
  31. package/dist/adapters/photoswipe/index.d.ts.map +1 -0
  32. package/dist/adapters/photoswipe/index.js +2 -0
  33. package/dist/adapters/photoswipe/index.js.map +1 -0
  34. package/dist/adapters/photoswipe/photoswipe.service.d.ts +99 -0
  35. package/dist/adapters/photoswipe/photoswipe.service.d.ts.map +1 -0
  36. package/dist/adapters/photoswipe/photoswipe.service.js +150 -0
  37. package/dist/adapters/photoswipe/photoswipe.service.js.map +1 -0
  38. package/dist/adapters/telegram/telegram.service.d.ts +82 -13
  39. package/dist/adapters/telegram/telegram.service.d.ts.map +1 -1
  40. package/dist/adapters/telegram/telegram.service.js +133 -55
  41. package/dist/adapters/telegram/telegram.service.js.map +1 -1
  42. package/dist/adapters/wordpress/wordpress.service.d.ts +181 -110
  43. package/dist/adapters/wordpress/wordpress.service.d.ts.map +1 -1
  44. package/dist/adapters/wordpress/wordpress.service.js +556 -465
  45. package/dist/adapters/wordpress/wordpress.service.js.map +1 -1
  46. package/dist/config/seo.service.d.ts +1 -1
  47. package/dist/config/seo.service.d.ts.map +1 -1
  48. package/dist/config/seo.service.js +1 -1
  49. package/dist/config/seo.service.js.map +1 -1
  50. package/dist/core/services/access.service.d.ts +167 -4
  51. package/dist/core/services/access.service.d.ts.map +1 -1
  52. package/dist/core/services/access.service.js +241 -31
  53. package/dist/core/services/access.service.js.map +1 -1
  54. package/dist/core/services/agent.service.d.ts +182 -27
  55. package/dist/core/services/agent.service.d.ts.map +1 -1
  56. package/dist/core/services/agent.service.js +296 -164
  57. package/dist/core/services/agent.service.js.map +1 -1
  58. package/dist/core/services/assistant.service.d.ts +96 -5
  59. package/dist/core/services/assistant.service.d.ts.map +1 -1
  60. package/dist/core/services/assistant.service.js +171 -66
  61. package/dist/core/services/assistant.service.js.map +1 -1
  62. package/dist/core/services/dates.service.d.ts +183 -11
  63. package/dist/core/services/dates.service.d.ts.map +1 -1
  64. package/dist/core/services/dates.service.js +256 -57
  65. package/dist/core/services/dates.service.js.map +1 -1
  66. package/dist/core/services/http.service.d.ts +172 -133
  67. package/dist/core/services/http.service.d.ts.map +1 -1
  68. package/dist/core/services/http.service.js +367 -310
  69. package/dist/core/services/http.service.js.map +1 -1
  70. package/dist/core/services/logger.service.d.ts +96 -34
  71. package/dist/core/services/logger.service.d.ts.map +1 -1
  72. package/dist/core/services/logger.service.js +128 -41
  73. package/dist/core/services/logger.service.js.map +1 -1
  74. package/dist/core/services/query.service.d.ts +101 -0
  75. package/dist/core/services/query.service.d.ts.map +1 -1
  76. package/dist/core/services/query.service.js +131 -14
  77. package/dist/core/services/query.service.js.map +1 -1
  78. package/dist/core/services/utils.service.d.ts +286 -131
  79. package/dist/core/services/utils.service.d.ts.map +1 -1
  80. package/dist/core/services/utils.service.js +417 -227
  81. package/dist/core/services/utils.service.js.map +1 -1
  82. package/dist/core/services/validation.service.d.ts +48 -3
  83. package/dist/core/services/validation.service.d.ts.map +1 -1
  84. package/dist/core/services/validation.service.js +75 -23
  85. package/dist/core/services/validation.service.js.map +1 -1
  86. package/dist/infrastructure/decorators/cache.decorator.d.ts +53 -0
  87. package/dist/infrastructure/decorators/cache.decorator.d.ts.map +1 -0
  88. package/dist/infrastructure/decorators/cache.decorator.js +47 -0
  89. package/dist/infrastructure/decorators/cache.decorator.js.map +1 -0
  90. package/dist/infrastructure/decorators/index.d.ts +4 -0
  91. package/dist/infrastructure/decorators/index.d.ts.map +1 -0
  92. package/dist/infrastructure/decorators/index.js +4 -0
  93. package/dist/infrastructure/decorators/index.js.map +1 -0
  94. package/dist/infrastructure/decorators/logger.decorator.d.ts +38 -0
  95. package/dist/infrastructure/decorators/logger.decorator.d.ts.map +1 -0
  96. package/dist/infrastructure/decorators/logger.decorator.js +66 -0
  97. package/dist/infrastructure/decorators/logger.decorator.js.map +1 -0
  98. package/dist/infrastructure/decorators/retry.decorator.d.ts +37 -0
  99. package/dist/infrastructure/decorators/retry.decorator.d.ts.map +1 -0
  100. package/dist/infrastructure/decorators/retry.decorator.js +54 -0
  101. package/dist/infrastructure/decorators/retry.decorator.js.map +1 -0
  102. package/dist/infrastructure/index.d.ts +1 -0
  103. package/dist/infrastructure/index.d.ts.map +1 -1
  104. package/dist/infrastructure/index.js +1 -0
  105. package/dist/infrastructure/index.js.map +1 -1
  106. package/dist/styles.css +2 -0
  107. package/package.json +49 -14
  108. package/scss/_flags.scss +179 -0
  109. package/scss/_functions.scss +168 -0
  110. package/scss/_mixins.scss +658 -0
  111. package/scss/_reset.scss +275 -0
  112. package/scss/_utilities.scss +449 -0
  113. package/scss/_variables.scss +539 -0
  114. package/scss/components/_index.scss +50 -0
  115. package/scss/demo.scss +12 -0
  116. package/scss/main.scss +56 -0
@@ -3,27 +3,142 @@ import { useLogger } from "../../core/services/logger.service.js";
3
3
  import { useSleep } from "../../core/services/utils.service.js";
4
4
  /** Default Telegram Bot API base URL. */
5
5
  export const TELEGRAM_API_BASE = "https://api.telegram.org";
6
- /** Module-level bot configuration. */
7
- let config = null;
8
- /** Retrieves the configured bot or throws. */
9
- function getConfig() {
10
- if (!config) {
11
- throw new Error("[Telegram] Not configured. Call defineTelegramConfig() first.");
6
+ /**
7
+ * TelegramService - Singleton para el bot de Telegram.
8
+ *
9
+ * Aplica el patrón Singleton: una única instancia centraliza la configuración,
10
+ * el envío de mensajes y el bucle de polling. La configuración se registra una
11
+ * sola vez y todas las operaciones comparten ese estado.
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * TelegramService.getInstance().useInit({ token: process.env.TELEGRAM_BOT_TOKEN });
16
+ * await TelegramService.getInstance().useSendMessage(chatId, "Hello");
17
+ * ```
18
+ */
19
+ export class TelegramService {
20
+ static instance;
21
+ /** Module-level bot configuration. */
22
+ config = null;
23
+ /**
24
+ * Constructor privado - enforce singleton.
25
+ */
26
+ constructor() { }
27
+ /**
28
+ * Obtiene la instancia única del TelegramService (Singleton).
29
+ *
30
+ * @returns La instancia única de {@link TelegramService}.
31
+ */
32
+ static getInstance() {
33
+ if (!TelegramService.instance) {
34
+ TelegramService.instance = new TelegramService();
35
+ }
36
+ return TelegramService.instance;
37
+ }
38
+ /** Retrieves the configured bot or throws. */
39
+ useGetConfig() {
40
+ if (!this.config) {
41
+ throw new Error("[Telegram] Not configured. Call defineTelegramConfig() first.");
42
+ }
43
+ return this.config;
44
+ }
45
+ /**
46
+ * Registers the Telegram bot configuration.
47
+ *
48
+ * @param cfg - Bot token (from BotFather) and optional API base URL.
49
+ *
50
+ * @example
51
+ * ```ts
52
+ * TelegramService.getInstance().useInit({ token: process.env.TELEGRAM_BOT_TOKEN });
53
+ * ```
54
+ */
55
+ useInit(cfg) {
56
+ this.config = { ...cfg };
57
+ }
58
+ /**
59
+ * Sends a text message to a Telegram chat.
60
+ *
61
+ * @param chatId - Destination chat id.
62
+ * @param text - Message body.
63
+ * @returns The Telegram API response.
64
+ */
65
+ async useSendMessage(chatId, text) {
66
+ const { token, apiBaseUrl } = this.useGetConfig();
67
+ return fetch(`${apiBaseUrl ?? TELEGRAM_API_BASE}/bot${token}/sendMessage`, {
68
+ method: "POST",
69
+ headers: { "Content-Type": "application/json" },
70
+ body: JSON.stringify({ chat_id: chatId, text }),
71
+ });
72
+ }
73
+ /**
74
+ * Handles a single Telegram update: replies to inbound text messages.
75
+ *
76
+ * @param update - A Telegram update object (from `getUpdates` or a webhook).
77
+ * @param reply - Reply callback. Defaults to the assistant `useReply`.
78
+ *
79
+ * @example
80
+ * ```ts
81
+ * await TelegramService.getInstance().useHandleUpdate(update);
82
+ * ```
83
+ */
84
+ async useHandleUpdate(update, reply = useReply) {
85
+ const message = update?.message;
86
+ if (!message?.text || message.text.trim() === "")
87
+ return;
88
+ const sessionId = `telegram:${message.chat.id}`;
89
+ const result = await reply(sessionId, message.text);
90
+ if (result.ok) {
91
+ await this.useSendMessage(message.chat.id, result.data.reply);
92
+ }
93
+ }
94
+ /**
95
+ * Starts the long-polling loop that keeps fetching and answering updates.
96
+ * Runs until the provided signal aborts (or forever).
97
+ *
98
+ * @param options - Polling cadence, abort signal and reply callback.
99
+ *
100
+ * @example
101
+ * ```ts
102
+ * await TelegramService.getInstance().useStartPolling();
103
+ * ```
104
+ */
105
+ async useStartPolling(options = {}) {
106
+ const { intervalMs = 2000, signal, reply = useReply } = options;
107
+ const { token, apiBaseUrl } = this.useGetConfig();
108
+ const base = apiBaseUrl ?? TELEGRAM_API_BASE;
109
+ let offset = 0;
110
+ while (!signal?.aborted) {
111
+ try {
112
+ const response = await fetch(`${base}/bot${token}/getUpdates?timeout=30&offset=${offset}`, {
113
+ signal,
114
+ });
115
+ if (!response.ok) {
116
+ throw new Error(`getUpdates HTTP ${response.status}`);
117
+ }
118
+ const data = (await response.json());
119
+ for (const update of data.result ?? []) {
120
+ offset = Math.max(offset, update.update_id + 1);
121
+ await this.useHandleUpdate(update, reply);
122
+ }
123
+ }
124
+ catch (error) {
125
+ if (signal?.aborted)
126
+ break;
127
+ const message = error instanceof Error ? error.message : String(error);
128
+ useLogger(`[Telegram] ${message}`, undefined, "error");
129
+ }
130
+ await useSleep(intervalMs);
131
+ }
12
132
  }
13
- return config;
14
133
  }
15
134
  /**
16
- * Registers the Telegram bot configuration — the config-file entry point.
135
+ * Registers the Telegram bot configuration - the config-file entry point.
17
136
  *
18
137
  * One call is the whole setup: the literal is registered and handed back on
19
138
  * `config`, so `export default defineTelegramConfig({ … })` is enough.
20
139
  *
21
- * Config-only service: it accepts {@link TelegramConfig} and nothing else, so
22
- * declaring methods here is a compile error (use the API, Notion, WordPress or
23
- * InsForge `define*Config` when you need them).
24
- *
25
140
  * @param input - Bot token (from BotFather) and optional API base URL.
26
- * @returns The registered config as a {@link ConfigFacade}.
141
+ * @returns The registered config as a `ConfigFacade`.
27
142
  *
28
143
  * @example
29
144
  * ```ts
@@ -50,7 +165,7 @@ export function defineTelegramConfig(input) {
50
165
  * ```
51
166
  */
52
167
  export function useInitTelegram(cfg) {
53
- config = { ...cfg };
168
+ TelegramService.getInstance().useInit(cfg);
54
169
  }
55
170
  /**
56
171
  * Sends a text message to a Telegram chat.
@@ -60,18 +175,13 @@ export function useInitTelegram(cfg) {
60
175
  * @returns The Telegram API response.
61
176
  */
62
177
  export async function useTelegramSendMessage(chatId, text) {
63
- const { token, apiBaseUrl } = getConfig();
64
- return fetch(`${apiBaseUrl ?? TELEGRAM_API_BASE}/bot${token}/sendMessage`, {
65
- method: "POST",
66
- headers: { "Content-Type": "application/json" },
67
- body: JSON.stringify({ chat_id: chatId, text }),
68
- });
178
+ return TelegramService.getInstance().useSendMessage(chatId, text);
69
179
  }
70
180
  /**
71
181
  * Handles a single Telegram update: replies to inbound text messages.
72
182
  *
73
183
  * @param update - A Telegram update object (from `getUpdates` or a webhook).
74
- * @param reply - Reply callback. Defaults to the assistant {@link useReply}.
184
+ * @param reply - Reply callback. Defaults to the assistant `useReply`.
75
185
  *
76
186
  * @example
77
187
  * ```ts
@@ -79,14 +189,7 @@ export async function useTelegramSendMessage(chatId, text) {
79
189
  * ```
80
190
  */
81
191
  export async function useHandleTelegramUpdate(update, reply = useReply) {
82
- const message = update?.message;
83
- if (!message?.text || message.text.trim() === "")
84
- return;
85
- const sessionId = `telegram:${message.chat.id}`;
86
- const result = await reply(sessionId, message.text);
87
- if (result.ok) {
88
- await useTelegramSendMessage(message.chat.id, result.data.reply);
89
- }
192
+ return TelegramService.getInstance().useHandleUpdate(update, reply);
90
193
  }
91
194
  /**
92
195
  * Starts the long-polling loop that keeps fetching and answering updates.
@@ -100,31 +203,6 @@ export async function useHandleTelegramUpdate(update, reply = useReply) {
100
203
  * ```
101
204
  */
102
205
  export async function useStartTelegramPolling(options = {}) {
103
- const { intervalMs = 2000, signal, reply = useReply } = options;
104
- const { token, apiBaseUrl } = getConfig();
105
- const base = apiBaseUrl ?? TELEGRAM_API_BASE;
106
- let offset = 0;
107
- while (!signal?.aborted) {
108
- try {
109
- const response = await fetch(`${base}/bot${token}/getUpdates?timeout=30&offset=${offset}`, {
110
- signal,
111
- });
112
- if (!response.ok) {
113
- throw new Error(`getUpdates HTTP ${response.status}`);
114
- }
115
- const data = (await response.json());
116
- for (const update of data.result ?? []) {
117
- offset = Math.max(offset, update.update_id + 1);
118
- await useHandleTelegramUpdate(update, reply);
119
- }
120
- }
121
- catch (error) {
122
- if (signal?.aborted)
123
- break;
124
- const message = error instanceof Error ? error.message : String(error);
125
- useLogger(`[Telegram] ${message}`, undefined, "error");
126
- }
127
- await useSleep(intervalMs);
128
- }
206
+ return TelegramService.getInstance().useStartPolling(options);
129
207
  }
130
208
  //# sourceMappingURL=telegram.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"telegram.service.js","sourceRoot":"","sources":["../../../src/adapters/telegram/telegram.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"telegram.service.js","sourceRoot":"","sources":["../../../src/adapters/telegram/telegram.service.ts"],"names":[],"mappings":"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"}