n8n-nodes-the-mastodon 0.0.18 → 0.0.20
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/README.md +16 -1
- package/dist/__tests__/account.test.js.map +1 -1
- package/dist/__tests__/mastodon-length.test.d.ts +1 -0
- package/dist/__tests__/mastodon-length.test.js +34 -0
- package/dist/__tests__/mastodon-length.test.js.map +1 -0
- package/dist/__tests__/rate-limit-queue.test.js +16 -6
- package/dist/__tests__/rate-limit-queue.test.js.map +1 -1
- package/dist/__tests__/status.test.js +56 -0
- package/dist/__tests__/status.test.js.map +1 -1
- package/dist/__tests__/url-extraction.test.d.ts +1 -0
- package/dist/__tests__/url-extraction.test.js +64 -0
- package/dist/__tests__/url-extraction.test.js.map +1 -0
- package/dist/__tests__/url-truncation.test.d.ts +1 -0
- package/dist/__tests__/url-truncation.test.js +75 -0
- package/dist/__tests__/url-truncation.test.js.map +1 -0
- package/dist/credentials/MastodonOAuth2Api.credentials.d.ts +1 -1
- package/dist/credentials/MastodonOAuth2Api.credentials.js +31 -26
- package/dist/credentials/MastodonOAuth2Api.credentials.js.map +1 -1
- package/dist/nodes/Mastodon/Mastodon_Methods.d.ts +12 -9
- package/dist/nodes/Mastodon/Mastodon_Methods.js +71 -99
- package/dist/nodes/Mastodon/Mastodon_Methods.js.map +1 -1
- package/dist/nodes/Mastodon/account/AccountMethods.d.ts +1 -1
- package/dist/nodes/Mastodon/account/AccountMethods.js +9 -9
- package/dist/nodes/Mastodon/account/AccountMethods.js.map +1 -1
- package/dist/nodes/Mastodon/apps/AppsMethods.d.ts +1 -1
- package/dist/nodes/Mastodon/apps/AppsMethods.js +2 -2
- package/dist/nodes/Mastodon/apps/AppsMethods.js.map +1 -1
- package/dist/nodes/Mastodon/authentication/AuthenticationMethods.d.ts +1 -1
- package/dist/nodes/Mastodon/authentication/AuthenticationMethods.js +3 -3
- package/dist/nodes/Mastodon/authentication/AuthenticationMethods.js.map +1 -1
- package/dist/nodes/Mastodon/bookmarks/BookmarksMethods.d.ts +4 -4
- package/dist/nodes/Mastodon/bookmarks/BookmarksMethods.js +3 -3
- package/dist/nodes/Mastodon/bookmarks/BookmarksMethods.js.map +1 -1
- package/dist/nodes/Mastodon/status/StatusMethods.d.ts +1 -1
- package/dist/nodes/Mastodon/status/StatusMethods.js +19 -9
- package/dist/nodes/Mastodon/status/StatusMethods.js.map +1 -1
- package/dist/nodes/Mastodon/status/index.js +16 -19
- package/dist/nodes/Mastodon/status/index.js.map +1 -1
- package/dist/package.json +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -80,7 +80,22 @@ Before using the Mastodon node, you must configure OAuth2 credentials for your t
|
|
|
80
80
|
- **Scope**: `read write push`
|
|
81
81
|
- Save and **Connect**. Authorize when prompted.
|
|
82
82
|
|
|
83
|
-
|
|
83
|
+
### Note about deprecated scopes and server compatibility
|
|
84
|
+
|
|
85
|
+
Some Mastodon instances have deprecated or removed scopes such as `follow` (and may not accept `push` in some configurations). If you see an error like:
|
|
86
|
+
|
|
87
|
+
```text
|
|
88
|
+
The requested scope is invalid, unknown, or malformed.
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
It usually means the authorization URL requested scopes the server doesn't support. If that happens you can:
|
|
92
|
+
|
|
93
|
+
- Edit the **Scope** value in the credential to only request `read write` before initiating the Connect flow.
|
|
94
|
+
- Or, after the Connect URL opens, remove unsupported scopes from the `scope` query param (e.g. change `read write follow push` → `read write`) and continue.
|
|
95
|
+
|
|
96
|
+
The node will try to prefer the currently granted scopes when available to avoid requesting deprecated/unsupported scopes automatically.
|
|
97
|
+
|
|
98
|
+

|
|
84
99
|
|
|
85
100
|
---
|
|
86
101
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account.test.js","sourceRoot":"","sources":["../../__tests__/account.test.ts"],"names":[],"mappings":";;AAAA,mEAA2D;AAG3D,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACxC,IAAI,IAAc,CAAC;IACnB,IAAI,GAA+B,CAAC;IAEpC,UAAU,CAAC,GAAG,EAAE;QACf,IAAI,GAAG,IAAI,wBAAQ,EAAE,CAAC;QACtB,GAAG,GAAG;YACL,gBAAgB,EAAE,IAAI,CAAC,EAAE,EAAE;YAC3B,YAAY,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YACvD,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"account.test.js","sourceRoot":"","sources":["../../__tests__/account.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const Mastodon_Methods_1 = require("../nodes/Mastodon/Mastodon_Methods");
|
|
4
|
+
describe('ValidationUtils.calculateMastodonLength', () => {
|
|
5
|
+
it('should return 0 for empty string', () => {
|
|
6
|
+
expect(Mastodon_Methods_1.ValidationUtils.calculateMastodonLength('')).toBe(0);
|
|
7
|
+
});
|
|
8
|
+
it('should return 23 for text that is only a URL', () => {
|
|
9
|
+
const text = 'https://example.com/very/long/path';
|
|
10
|
+
const length = Mastodon_Methods_1.ValidationUtils.calculateMastodonLength(text);
|
|
11
|
+
expect(length).toBe(23);
|
|
12
|
+
});
|
|
13
|
+
it('should return actual length when no URLs present', () => {
|
|
14
|
+
const text = 'Hello world';
|
|
15
|
+
const length = Mastodon_Methods_1.ValidationUtils.calculateMastodonLength(text);
|
|
16
|
+
expect(length).toBe(11);
|
|
17
|
+
});
|
|
18
|
+
it('should count short URL as 23 characters', () => {
|
|
19
|
+
const text = 'Check https://example.com out';
|
|
20
|
+
const length = Mastodon_Methods_1.ValidationUtils.calculateMastodonLength(text);
|
|
21
|
+
expect(length).toBe(33);
|
|
22
|
+
});
|
|
23
|
+
it('should count long URL as only 23 characters', () => {
|
|
24
|
+
const text = 'Read https://example.com/very/long/path/to/article/with/many/segments?param1=value1¶m2=value2';
|
|
25
|
+
const length = Mastodon_Methods_1.ValidationUtils.calculateMastodonLength(text);
|
|
26
|
+
expect(length).toBe(28);
|
|
27
|
+
});
|
|
28
|
+
it('should count multiple URLs correctly', () => {
|
|
29
|
+
const text = 'Check https://example.com and https://test.org for info';
|
|
30
|
+
const length = Mastodon_Methods_1.ValidationUtils.calculateMastodonLength(text);
|
|
31
|
+
expect(length).toBe(66);
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
//# sourceMappingURL=mastodon-length.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mastodon-length.test.js","sourceRoot":"","sources":["../../__tests__/mastodon-length.test.ts"],"names":[],"mappings":";;AAAA,yEAAqE;AAErE,QAAQ,CAAC,yCAAyC,EAAE,GAAG,EAAE;IACxD,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC3C,MAAM,CAAC,kCAAe,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACvD,MAAM,IAAI,GAAG,oCAAoC,CAAC;QAClD,MAAM,MAAM,GAAG,kCAAe,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;QAE7D,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC3D,MAAM,IAAI,GAAG,aAAa,CAAC;QAE3B,MAAM,MAAM,GAAG,kCAAe,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;QAE7D,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QAElD,MAAM,IAAI,GAAG,+BAA+B,CAAC;QAE7C,MAAM,MAAM,GAAG,kCAAe,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;QAI7D,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QAEtD,MAAM,IAAI,GAAG,mGAAmG,CAAC;QAEjH,MAAM,MAAM,GAAG,kCAAe,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;QAI7D,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC/C,MAAM,IAAI,GAAG,yDAAyD,CAAC;QAEvE,MAAM,MAAM,GAAG,kCAAe,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;QAI7D,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -32,6 +32,8 @@ describe('RequestQueue Rate Limit Handling', () => {
|
|
|
32
32
|
jest.useRealTimers();
|
|
33
33
|
});
|
|
34
34
|
it('should handle rate limit properly', async () => {
|
|
35
|
+
if (!queue)
|
|
36
|
+
throw new Error('RequestQueue instance not initialized');
|
|
35
37
|
const resetTime = Math.floor(Date.now() / 1000) + 2;
|
|
36
38
|
queue.updateRateLimits(0, resetTime);
|
|
37
39
|
const startTime = Date.now();
|
|
@@ -45,6 +47,8 @@ describe('RequestQueue Rate Limit Handling', () => {
|
|
|
45
47
|
it('should process requests sequentially', async () => {
|
|
46
48
|
const results = [];
|
|
47
49
|
const promises = [];
|
|
50
|
+
if (!queue)
|
|
51
|
+
throw new Error('RequestQueue instance not initialized');
|
|
48
52
|
for (let i = 0; i < 5; i++) {
|
|
49
53
|
promises.push(queue.add(async () => {
|
|
50
54
|
await new Promise(resolve => setTimeout(resolve, 100));
|
|
@@ -56,6 +60,8 @@ describe('RequestQueue Rate Limit Handling', () => {
|
|
|
56
60
|
expect(results).toEqual([0, 1, 2, 3, 4]);
|
|
57
61
|
});
|
|
58
62
|
it('should track rate limit usage correctly', () => {
|
|
63
|
+
if (!queue)
|
|
64
|
+
throw new Error('RequestQueue instance not initialized');
|
|
59
65
|
queue.updateRateLimits(10, Math.floor(Date.now() / 1000) + 300);
|
|
60
66
|
const status = queue.getStatus();
|
|
61
67
|
expect(status.rateLimitRemaining).toBe(10);
|
|
@@ -63,16 +69,20 @@ describe('RequestQueue Rate Limit Handling', () => {
|
|
|
63
69
|
expect(status.processing).toBe(false);
|
|
64
70
|
});
|
|
65
71
|
it('should have queue overflow protection', () => {
|
|
66
|
-
|
|
72
|
+
if (!queue)
|
|
73
|
+
throw new Error('RequestQueue instance not initialized');
|
|
74
|
+
const internal = queue;
|
|
75
|
+
const MAX_QUEUE_SIZE = internal.MAX_QUEUE_SIZE;
|
|
67
76
|
expect(MAX_QUEUE_SIZE).toBe(1000);
|
|
68
|
-
|
|
69
|
-
expect(status.queueLength).toBeDefined();
|
|
70
|
-
expect(typeof status.queueLength).toBe('number');
|
|
77
|
+
expect(typeof internal.getStatus).toBe('function');
|
|
71
78
|
});
|
|
72
79
|
it('should have timeout mechanism for queued requests', () => {
|
|
73
|
-
|
|
80
|
+
if (!queue)
|
|
81
|
+
throw new Error('RequestQueue instance not initialized');
|
|
82
|
+
const internal = queue;
|
|
83
|
+
const REQUEST_TIMEOUT = internal.REQUEST_TIMEOUT;
|
|
74
84
|
expect(REQUEST_TIMEOUT).toBe(60000);
|
|
75
|
-
expect(typeof
|
|
85
|
+
expect(typeof internal.cleanupExpiredRequests).toBe('function');
|
|
76
86
|
});
|
|
77
87
|
});
|
|
78
88
|
//# sourceMappingURL=rate-limit-queue.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rate-limit-queue.test.js","sourceRoot":"","sources":["../../__tests__/rate-limit-queue.test.ts"],"names":[],"mappings":";;AAAA,yEAAkE;AAGlE,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC;IAChC,WAAW,EAAE;QACZ,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE;QAChB,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;QACf,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;QACf,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE;KAChB;CACD,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"rate-limit-queue.test.js","sourceRoot":"","sources":["../../__tests__/rate-limit-queue.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,37 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
36
|
const Mastodon_node_1 = require("../nodes/Mastodon/Mastodon.node");
|
|
4
37
|
describe('Mastodon Node - Status', () => {
|
|
@@ -160,5 +193,28 @@ describe('Mastodon Node - Status', () => {
|
|
|
160
193
|
}));
|
|
161
194
|
expect((_b = result === null || result === void 0 ? void 0 : result[0]) === null || _b === void 0 ? void 0 : _b[0].json).toEqual(unboostResponse);
|
|
162
195
|
});
|
|
196
|
+
it('should count URLs as 23 characters no matter their length, per Mastodon character counting ', async () => {
|
|
197
|
+
const { ValidationUtils } = await Promise.resolve().then(() => __importStar(require('../nodes/Mastodon/Mastodon_Methods')));
|
|
198
|
+
const text = 'https://example.com/' + 'a'.repeat(500);
|
|
199
|
+
ctx.getNodeParameter.mockImplementation((param) => {
|
|
200
|
+
if (param === 'resource')
|
|
201
|
+
return 'status';
|
|
202
|
+
if (param === 'operation')
|
|
203
|
+
return 'create';
|
|
204
|
+
if (param === 'status')
|
|
205
|
+
return text;
|
|
206
|
+
if (param === 'additionalFields')
|
|
207
|
+
return {};
|
|
208
|
+
return undefined;
|
|
209
|
+
});
|
|
210
|
+
ctx.getInputData.mockReturnValue([{ json: {} }]);
|
|
211
|
+
ctx.helpers.requestOAuth2.mockResolvedValue({ id: '1', content: text });
|
|
212
|
+
await node.execute.call(ctx);
|
|
213
|
+
const requestCall = ctx.helpers.requestOAuth2.mock.calls[0][1];
|
|
214
|
+
const sentStatus = requestCall.body.status;
|
|
215
|
+
expect(sentStatus).toContain(text);
|
|
216
|
+
const effectiveLength = ValidationUtils.calculateMastodonLength(sentStatus);
|
|
217
|
+
expect(effectiveLength).toEqual(23);
|
|
218
|
+
});
|
|
163
219
|
});
|
|
164
220
|
//# sourceMappingURL=status.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.test.js","sourceRoot":"","sources":["../../__tests__/status.test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"status.test.js","sourceRoot":"","sources":["../../__tests__/status.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const Mastodon_Methods_1 = require("../nodes/Mastodon/Mastodon_Methods");
|
|
4
|
+
describe('ValidationUtils.extractUrls', () => {
|
|
5
|
+
it('should return empty array when no URLs present', () => {
|
|
6
|
+
const text = 'Just some regular text without any links';
|
|
7
|
+
const urls = Mastodon_Methods_1.ValidationUtils.extractUrls(text);
|
|
8
|
+
expect(urls).toHaveLength(0);
|
|
9
|
+
});
|
|
10
|
+
it('should extract a simple HTTP URL', () => {
|
|
11
|
+
const text = 'Check out https://example.com for more info';
|
|
12
|
+
const urls = Mastodon_Methods_1.ValidationUtils.extractUrls(text);
|
|
13
|
+
expect(urls).toHaveLength(1);
|
|
14
|
+
expect(urls[0]).toEqual({
|
|
15
|
+
url: 'https://example.com',
|
|
16
|
+
startIndex: 10,
|
|
17
|
+
endIndex: 29,
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
it('should extract multiple URLs', () => {
|
|
21
|
+
const text = 'Visit https://example.com and http://test.org today';
|
|
22
|
+
const urls = Mastodon_Methods_1.ValidationUtils.extractUrls(text);
|
|
23
|
+
expect(urls).toHaveLength(2);
|
|
24
|
+
expect(urls[0].url).toBe('https://example.com');
|
|
25
|
+
expect(urls[1].url).toBe('http://test.org');
|
|
26
|
+
});
|
|
27
|
+
it('should extract URL with path and query parameters', () => {
|
|
28
|
+
const text = 'See https://example.com/path/to/page?id=123&ref=test#section2';
|
|
29
|
+
const urls = Mastodon_Methods_1.ValidationUtils.extractUrls(text);
|
|
30
|
+
expect(urls).toHaveLength(1);
|
|
31
|
+
expect(urls[0].url).toBe('https://example.com/path/to/page?id=123&ref=test#section2');
|
|
32
|
+
});
|
|
33
|
+
it('should extract URL at the start of text', () => {
|
|
34
|
+
const text = 'https://example.com is a great site';
|
|
35
|
+
const urls = Mastodon_Methods_1.ValidationUtils.extractUrls(text);
|
|
36
|
+
expect(urls).toHaveLength(1);
|
|
37
|
+
expect(urls[0].startIndex).toBe(0);
|
|
38
|
+
});
|
|
39
|
+
it('should extract URL at the end of text', () => {
|
|
40
|
+
const text = 'Visit https://example.com';
|
|
41
|
+
const urls = Mastodon_Methods_1.ValidationUtils.extractUrls(text);
|
|
42
|
+
expect(urls).toHaveLength(1);
|
|
43
|
+
expect(urls[0].endIndex).toBe(text.length);
|
|
44
|
+
});
|
|
45
|
+
it('should not include trailing punctuation in extracted URL', () => {
|
|
46
|
+
const text = 'Check this out: https://example.com!';
|
|
47
|
+
const urls = Mastodon_Methods_1.ValidationUtils.extractUrls(text);
|
|
48
|
+
expect(urls).toHaveLength(1);
|
|
49
|
+
expect(urls[0].url).toBe('https://example.com');
|
|
50
|
+
});
|
|
51
|
+
it('should extract URL inside parentheses without trailing paren', () => {
|
|
52
|
+
const text = 'See (https://example.com/page) for details';
|
|
53
|
+
const urls = Mastodon_Methods_1.ValidationUtils.extractUrls(text);
|
|
54
|
+
expect(urls).toHaveLength(1);
|
|
55
|
+
expect(urls[0].url).toBe('https://example.com/page');
|
|
56
|
+
});
|
|
57
|
+
it('should extract URL with port and fragment', () => {
|
|
58
|
+
const text = 'Connect to https://example.com:8080/path#section';
|
|
59
|
+
const urls = Mastodon_Methods_1.ValidationUtils.extractUrls(text);
|
|
60
|
+
expect(urls).toHaveLength(1);
|
|
61
|
+
expect(urls[0].url).toBe('https://example.com:8080/path#section');
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
//# sourceMappingURL=url-extraction.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"url-extraction.test.js","sourceRoot":"","sources":["../../__tests__/url-extraction.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const Mastodon_Methods_1 = require("../nodes/Mastodon/Mastodon_Methods");
|
|
4
|
+
describe('ValidationUtils.truncateWithUrlPreservation', () => {
|
|
5
|
+
it('should raise an error when passed non-string input', () => {
|
|
6
|
+
expect(() => Mastodon_Methods_1.ValidationUtils.truncateWithUrlPreservation(123, 500))
|
|
7
|
+
.toThrow('Expected string parameter, got number');
|
|
8
|
+
});
|
|
9
|
+
it('should not truncate text within the character limit', () => {
|
|
10
|
+
const text = 'Short text with https://example.com';
|
|
11
|
+
const result = Mastodon_Methods_1.ValidationUtils.truncateWithUrlPreservation(text, 500);
|
|
12
|
+
expect(result).toBe(text);
|
|
13
|
+
});
|
|
14
|
+
it('should truncate plain text over the character characters', () => {
|
|
15
|
+
const text = 'a'.repeat(600);
|
|
16
|
+
const result = Mastodon_Methods_1.ValidationUtils.truncateWithUrlPreservation(text, 500);
|
|
17
|
+
expect(result.length).toBe(500);
|
|
18
|
+
expect(result).toBe('a'.repeat(500));
|
|
19
|
+
});
|
|
20
|
+
it('should preserve complete URL when truncating text after it', () => {
|
|
21
|
+
const prefix = 'a'.repeat(460);
|
|
22
|
+
const url = 'https://example.com/very/long/path/that/is/way/over/23/characters/long';
|
|
23
|
+
const suffix = 'b'.repeat(50);
|
|
24
|
+
const text = `${prefix} ${url} ${suffix}`;
|
|
25
|
+
const result = Mastodon_Methods_1.ValidationUtils.truncateWithUrlPreservation(text, 500);
|
|
26
|
+
expect(result).toBe(text.substring(0, 547));
|
|
27
|
+
expect(Mastodon_Methods_1.ValidationUtils.calculateMastodonLength(text)).toBe(535);
|
|
28
|
+
});
|
|
29
|
+
it('should truncate *before* URLs if we need to truncate a URL', () => {
|
|
30
|
+
const prefix = 'a'.repeat(495);
|
|
31
|
+
const url = 'https://example.com/long/path';
|
|
32
|
+
const text = `${prefix} ${url}`;
|
|
33
|
+
const result = Mastodon_Methods_1.ValidationUtils.truncateWithUrlPreservation(text, 500);
|
|
34
|
+
expect(result).toEqual(`${prefix} `);
|
|
35
|
+
expect(Mastodon_Methods_1.ValidationUtils.calculateMastodonLength(result)).toBe(496);
|
|
36
|
+
});
|
|
37
|
+
it('should preserve first URL and truncate after second URL', () => {
|
|
38
|
+
const text = 'Check https://example.com and https://test.org ' + 'x'.repeat(500);
|
|
39
|
+
const result = Mastodon_Methods_1.ValidationUtils.truncateWithUrlPreservation(text, 500);
|
|
40
|
+
expect(result).not.toBe(text);
|
|
41
|
+
expect(result).toBe(text.substring(0, 500 - 4 - 7));
|
|
42
|
+
expect(Mastodon_Methods_1.ValidationUtils.calculateMastodonLength(result)).toBe(500);
|
|
43
|
+
});
|
|
44
|
+
it('should handle URL at the end of long text', () => {
|
|
45
|
+
const prefix = 'a'.repeat(476);
|
|
46
|
+
const url = 'https://example.com/some/path';
|
|
47
|
+
const text = `${prefix} ${url}`;
|
|
48
|
+
const result = Mastodon_Methods_1.ValidationUtils.truncateWithUrlPreservation(text, 500);
|
|
49
|
+
expect(result).toBe(text);
|
|
50
|
+
expect(Mastodon_Methods_1.ValidationUtils.calculateMastodonLength(text)).toBe(500);
|
|
51
|
+
});
|
|
52
|
+
it('should handle internationalized domain names (punycode) correctly', () => {
|
|
53
|
+
const prefix = 'a'.repeat(450);
|
|
54
|
+
const idn = 'https://xn--d1acpjx3f.xn--p1ai/path';
|
|
55
|
+
const text = `${prefix} ${idn} ${'b'.repeat(100)}`;
|
|
56
|
+
const result = Mastodon_Methods_1.ValidationUtils.truncateWithUrlPreservation(text, 500);
|
|
57
|
+
expect(Mastodon_Methods_1.ValidationUtils.calculateMastodonLength(result)).toBeLessThanOrEqual(500);
|
|
58
|
+
});
|
|
59
|
+
it('should not treat protocol-less text as URL (no leading http)', () => {
|
|
60
|
+
const text = 'Visit example.com/test today';
|
|
61
|
+
const result = Mastodon_Methods_1.ValidationUtils.truncateWithUrlPreservation(text, 20);
|
|
62
|
+
expect(result.length).toBe(20);
|
|
63
|
+
});
|
|
64
|
+
it('should handle adjacent punctuation after URL', () => {
|
|
65
|
+
const text = 'See https://example.com,' + 'x'.repeat(480);
|
|
66
|
+
const result = Mastodon_Methods_1.ValidationUtils.truncateWithUrlPreservation(text, 500);
|
|
67
|
+
expect(Mastodon_Methods_1.ValidationUtils.calculateMastodonLength(result)).toBeLessThanOrEqual(500);
|
|
68
|
+
});
|
|
69
|
+
it('should handle multiple consecutive URLs and truncate appropriately', () => {
|
|
70
|
+
const text = 'https://a.com https://b.com https://c.com ' + 'x'.repeat(470);
|
|
71
|
+
const result = Mastodon_Methods_1.ValidationUtils.truncateWithUrlPreservation(text, 500);
|
|
72
|
+
expect(Mastodon_Methods_1.ValidationUtils.calculateMastodonLength(result)).toBeLessThanOrEqual(500);
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
//# sourceMappingURL=url-truncation.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"url-truncation.test.js","sourceRoot":"","sources":["../../__tests__/url-truncation.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { IAuthenticate, Icon, ICredentialDataDecryptedObject, ICredentialTestRequest, ICredentialType, IDataObject, IHttpRequestHelper, INodeProperties } from 'n8n-workflow';
|
|
2
2
|
export declare class MastodonOAuth2Api implements ICredentialType {
|
|
3
3
|
name: string;
|
|
4
4
|
extends: string[];
|
|
@@ -60,7 +60,7 @@ class MastodonOAuth2Api {
|
|
|
60
60
|
displayName: 'Scope',
|
|
61
61
|
name: 'scope',
|
|
62
62
|
type: 'hidden',
|
|
63
|
-
default: 'read write
|
|
63
|
+
default: 'read write',
|
|
64
64
|
description: 'The scopes to request. Multiple scopes can be separated by spaces.',
|
|
65
65
|
},
|
|
66
66
|
{
|
|
@@ -87,7 +87,7 @@ class MastodonOAuth2Api {
|
|
|
87
87
|
response_type: 'code',
|
|
88
88
|
client_id: '={{$credentials.clientId}}',
|
|
89
89
|
redirect_uri: '={{$credentials.redirectUri}}',
|
|
90
|
-
scope: 'read write
|
|
90
|
+
scope: '={{$credentials.currentScopes || $credentials.scope || "read write"}}',
|
|
91
91
|
state: '={{Date.now()}}',
|
|
92
92
|
force_login: true,
|
|
93
93
|
},
|
|
@@ -114,9 +114,9 @@ class MastodonOAuth2Api {
|
|
|
114
114
|
],
|
|
115
115
|
};
|
|
116
116
|
}
|
|
117
|
-
static storePKCE(clientId,
|
|
117
|
+
static storePKCE(clientId, codeVerifier) {
|
|
118
118
|
MastodonOAuth2Api.pkceStorage.set(clientId, {
|
|
119
|
-
|
|
119
|
+
codeVerifier,
|
|
120
120
|
expires: Date.now() + 10 * 60 * 1000,
|
|
121
121
|
});
|
|
122
122
|
}
|
|
@@ -129,13 +129,14 @@ class MastodonOAuth2Api {
|
|
|
129
129
|
return undefined;
|
|
130
130
|
}
|
|
131
131
|
MastodonOAuth2Api.pkceStorage.delete(clientId);
|
|
132
|
-
return stored.
|
|
132
|
+
return stored.codeVerifier;
|
|
133
133
|
}
|
|
134
134
|
async preAuthentication(credentials) {
|
|
135
135
|
var _a;
|
|
136
136
|
const mastodonCredentials = credentials;
|
|
137
137
|
const { code_verifier, code_challenge } = await (0, pkceWrapper_1.generatePKCE)();
|
|
138
|
-
|
|
138
|
+
const codeVerifier = code_verifier;
|
|
139
|
+
MastodonOAuth2Api.storePKCE(mastodonCredentials.clientId, codeVerifier);
|
|
139
140
|
try {
|
|
140
141
|
const response = await fetch(`${mastodonCredentials.baseUrl}/.well-known/oauth-authorization-server`);
|
|
141
142
|
if (response.ok) {
|
|
@@ -155,18 +156,17 @@ class MastodonOAuth2Api {
|
|
|
155
156
|
async postAuthentication(credentials) {
|
|
156
157
|
const mastodonCredentials = credentials;
|
|
157
158
|
let accessToken;
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
'
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
'
|
|
164
|
-
accessToken
|
|
159
|
+
const creds = credentials;
|
|
160
|
+
if (creds &&
|
|
161
|
+
typeof creds === 'object' &&
|
|
162
|
+
'oauth2' in creds &&
|
|
163
|
+
typeof creds['oauth2'] === 'object' &&
|
|
164
|
+
creds['oauth2'] !== null &&
|
|
165
|
+
'accessToken' in creds['oauth2']) {
|
|
166
|
+
accessToken = creds['oauth2']['accessToken'];
|
|
165
167
|
}
|
|
166
|
-
else if (typeof
|
|
167
|
-
|
|
168
|
-
'accessToken' in credentials) {
|
|
169
|
-
accessToken = credentials.accessToken;
|
|
168
|
+
else if (creds && typeof creds === 'object' && 'accessToken' in creds) {
|
|
169
|
+
accessToken = creds['accessToken'];
|
|
170
170
|
}
|
|
171
171
|
if (!accessToken)
|
|
172
172
|
return {};
|
|
@@ -191,18 +191,23 @@ class MastodonOAuth2Api {
|
|
|
191
191
|
return {};
|
|
192
192
|
}
|
|
193
193
|
async applyCredentials(requestOptions) {
|
|
194
|
-
var _a;
|
|
195
194
|
const credentials = requestOptions.credentials;
|
|
196
|
-
const
|
|
197
|
-
if (
|
|
198
|
-
requestOptions.body.
|
|
195
|
+
const codeVerifier = MastodonOAuth2Api.getStoredPKCE(credentials.clientId);
|
|
196
|
+
if (codeVerifier) {
|
|
197
|
+
if (!requestOptions.body || typeof requestOptions.body !== 'object') {
|
|
198
|
+
requestOptions.body = {};
|
|
199
|
+
}
|
|
200
|
+
requestOptions.body.code_verifier = codeVerifier;
|
|
199
201
|
}
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
202
|
+
const credRecord = credentials;
|
|
203
|
+
const oauth2 = credRecord['oauth2'];
|
|
204
|
+
if (!oauth2 || !('accessToken' in oauth2)) {
|
|
205
|
+
const oauthTokenData = credRecord['oauthTokenData'];
|
|
206
|
+
const accessToken = (oauthTokenData === null || oauthTokenData === void 0 ? void 0 : oauthTokenData['access_token']) ||
|
|
207
|
+
credRecord['access_token'] ||
|
|
208
|
+
credRecord['accessToken'];
|
|
204
209
|
if (accessToken) {
|
|
205
|
-
|
|
210
|
+
credRecord['oauth2'] = { accessToken };
|
|
206
211
|
}
|
|
207
212
|
}
|
|
208
213
|
return requestOptions;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MastodonOAuth2Api.credentials.js","sourceRoot":"","sources":["../../credentials/MastodonOAuth2Api.credentials.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"MastodonOAuth2Api.credentials.js","sourceRoot":"","sources":["../../credentials/MastodonOAuth2Api.credentials.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,18 +27,21 @@ export declare class RequestQueue {
|
|
|
27
27
|
export declare function handleApiRequest(this: IExecuteFunctions, method: string, endpoint: string, body?: IDataObject, qs?: IDataObject, options?: IDataObject, retryAttempt?: number): Promise<any>;
|
|
28
28
|
export declare function uploadAttachments(this: IExecuteFunctions, items: INodeExecutionData[], binaryProperties: string[], url: string, i: number): Promise<IDataObject[]>;
|
|
29
29
|
export declare class ValidationUtils {
|
|
30
|
+
static readonly MASTODON_MAX_STATUS_LENGTH = 500;
|
|
31
|
+
static readonly MASTODON_URL_LENGTH = 23;
|
|
32
|
+
private static readonly URL_REGEX;
|
|
33
|
+
static extractUrls(text: string): Array<{
|
|
34
|
+
url: string;
|
|
35
|
+
startIndex: number;
|
|
36
|
+
endIndex: number;
|
|
37
|
+
}>;
|
|
38
|
+
static calculateMastodonLength(text: string): number;
|
|
39
|
+
static truncateWithUrlPreservation(text: string, maxLength?: number): string;
|
|
30
40
|
static validateRequiredParameters(params: {
|
|
31
|
-
[key: string]:
|
|
41
|
+
[key: string]: unknown;
|
|
32
42
|
}, required: string[]): void;
|
|
33
|
-
static sanitizeStringParam(value:
|
|
34
|
-
static sanitizeNumberParam(value: any, min?: number, max?: number): number;
|
|
35
|
-
static validateUrl(url: string): void;
|
|
36
|
-
static validateDateParam(value: string): Date;
|
|
37
|
-
static sanitizeVisibility(visibility: string): string;
|
|
43
|
+
static sanitizeStringParam(value: unknown, maxLength?: number): string;
|
|
38
44
|
}
|
|
39
|
-
export declare function validateParams(requiredParams?: string[]): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
|
|
40
|
-
export declare function withRetry(maxRetries?: number, baseDelay?: number): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
|
|
41
|
-
export declare function batchRequests<T>(this: IExecuteFunctions, requests: Array<() => Promise<T>>, batchSize?: number): Promise<T[]>;
|
|
42
45
|
export declare function bulkOperation<T>(this: IExecuteFunctions, items: INodeExecutionData[], operation: (item: INodeExecutionData, index: number) => Promise<T>, options?: {
|
|
43
46
|
batchSize?: number;
|
|
44
47
|
continueOnError?: boolean;
|