@catalogicus-international/n8n-nodes-telegram-advance 0.2.1 → 0.2.2

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.
@@ -7,6 +7,40 @@ exports.readWebhookSecret = readWebhookSecret;
7
7
  exports.redisConfigId = redisConfigId;
8
8
  const crypto_1 = require("crypto");
9
9
  const shared_1 = require("./shared");
10
+ const WEBHOOK_SECRET_PATTERN = /^[A-Za-z0-9_-]{1,256}$/;
11
+ function isRecord(value) {
12
+ return typeof value === 'object' && value !== null;
13
+ }
14
+ function parseMaybeJson(value) {
15
+ if (typeof value !== 'string')
16
+ return value;
17
+ try {
18
+ return JSON.parse(value);
19
+ }
20
+ catch {
21
+ return value;
22
+ }
23
+ }
24
+ function telegramDescriptionFrom(value) {
25
+ if (!isRecord(value))
26
+ return undefined;
27
+ if (typeof value.description === 'string')
28
+ return value.description;
29
+ for (const key of ['data', 'body', 'error', 'response']) {
30
+ const nested = telegramDescriptionFrom(parseMaybeJson(value[key]));
31
+ if (nested)
32
+ return nested;
33
+ }
34
+ return undefined;
35
+ }
36
+ function formatTelegramRequestError(method, error) {
37
+ const description = telegramDescriptionFrom(error);
38
+ if (description)
39
+ return new Error(description);
40
+ if (error instanceof Error)
41
+ return error;
42
+ return new Error(`Telegram API method ${method} failed: ${String(error)}`);
43
+ }
10
44
  function computeBotHash(baseUrl, accessToken) {
11
45
  return (0, crypto_1.createHash)('sha256').update(`${baseUrl}\0${accessToken}`).digest('hex');
12
46
  }
@@ -18,13 +52,19 @@ class HttpTelegramTransport {
18
52
  this.botHash = computeBotHash(baseUrl, accessToken);
19
53
  }
20
54
  async call(method, body = {}, options = {}) {
21
- const response = (await this.httpRequest({
22
- method: 'POST',
23
- url: `${this.baseUrl}/bot${this.accessToken}/${method}`,
24
- body,
25
- json: true,
26
- ...(options.timeoutMs ? { timeout: options.timeoutMs } : {}),
27
- }));
55
+ let response;
56
+ try {
57
+ response = (await this.httpRequest({
58
+ method: 'POST',
59
+ url: `${this.baseUrl}/bot${this.accessToken}/${method}`,
60
+ body,
61
+ json: true,
62
+ ...(options.timeoutMs ? { timeout: options.timeoutMs } : {}),
63
+ }));
64
+ }
65
+ catch (error) {
66
+ throw formatTelegramRequestError(method, error);
67
+ }
28
68
  if (!response.ok) {
29
69
  throw new Error(response.description || `Telegram API method ${method} failed`);
30
70
  }
@@ -57,7 +97,11 @@ async function readRedisConfig(context) {
57
97
  async function readWebhookSecret(context) {
58
98
  var _a;
59
99
  const credentials = await context.getCredentials('telegramAdvanceApi');
60
- return String((_a = credentials.webhookSecret) !== null && _a !== void 0 ? _a : '').trim();
100
+ const secret = String((_a = credentials.webhookSecret) !== null && _a !== void 0 ? _a : '').trim();
101
+ if (secret && !WEBHOOK_SECRET_PATTERN.test(secret)) {
102
+ throw new Error('Webhook Secret Token is invalid. Telegram accepts only 1-256 characters: A-Z, a-z, 0-9, _ and -.');
103
+ }
104
+ return secret;
61
105
  }
62
106
  function redisConfigId(config) {
63
107
  return (0, crypto_1.createHash)('sha256').update(`${config.url}\0${config.namespace}`).digest('hex');
@@ -1 +1 @@
1
- {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../nodes/transport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../nodes/transport.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@catalogicus-international/n8n-nodes-telegram-advance",
3
- "version": "0.2.1",
3
+ "version": "0.2.2",
4
4
  "description": "Native Telegram approval, choice, and reply workflows for n8n without external response pages",
5
5
  "license": "MIT",
6
6
  "packageManager": "pnpm@9.15.0",