@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.
package/dist/nodes/transport.js
CHANGED
|
@@ -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
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
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
|
-
|
|
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":";;
|
|
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.
|
|
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",
|