@jam-nodes/nodes 0.2.8 → 0.2.10
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 +147 -0
- package/dist/ai/draft-emails.d.ts +1 -1
- package/dist/index.d.ts +199 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +21 -3
- package/dist/index.js.map +1 -1
- package/dist/integrations/apollo/search-contacts.d.ts +4 -4
- package/dist/integrations/dataforseo/keyword-research.d.ts +6 -6
- package/dist/integrations/dataforseo/keyword-research.d.ts.map +1 -1
- package/dist/integrations/dataforseo/keyword-research.js +2 -8
- package/dist/integrations/dataforseo/keyword-research.js.map +1 -1
- package/dist/integrations/devto/create-article.d.ts +20 -0
- package/dist/integrations/devto/create-article.d.ts.map +1 -0
- package/dist/integrations/devto/create-article.js +67 -0
- package/dist/integrations/devto/create-article.js.map +1 -0
- package/dist/integrations/devto/credentials.d.ts +2 -0
- package/dist/integrations/devto/credentials.d.ts.map +1 -0
- package/dist/integrations/devto/credentials.js +17 -0
- package/dist/integrations/devto/credentials.js.map +1 -0
- package/dist/integrations/devto/get-articles.d.ts +21 -0
- package/dist/integrations/devto/get-articles.d.ts.map +1 -0
- package/dist/integrations/devto/get-articles.js +78 -0
- package/dist/integrations/devto/get-articles.js.map +1 -0
- package/dist/integrations/devto/index.d.ts +6 -0
- package/dist/integrations/devto/index.d.ts.map +1 -0
- package/dist/integrations/devto/index.js +6 -0
- package/dist/integrations/devto/index.js.map +1 -0
- package/dist/integrations/devto/schemas.d.ts +243 -0
- package/dist/integrations/devto/schemas.d.ts.map +1 -0
- package/dist/integrations/devto/schemas.js +69 -0
- package/dist/integrations/devto/schemas.js.map +1 -0
- package/dist/integrations/devto/update-article.d.ts +19 -0
- package/dist/integrations/devto/update-article.d.ts.map +1 -0
- package/dist/integrations/devto/update-article.js +65 -0
- package/dist/integrations/devto/update-article.js.map +1 -0
- package/dist/integrations/discord/schemas.d.ts +2 -2
- package/dist/integrations/discord/send-message.d.ts +1 -1
- package/dist/integrations/firecrawl/crawl.d.ts +3 -3
- package/dist/integrations/firecrawl/extract.d.ts +3 -3
- package/dist/integrations/firecrawl/scrape.d.ts +10 -10
- package/dist/integrations/index.d.ts +3 -1
- package/dist/integrations/index.d.ts.map +1 -1
- package/dist/integrations/index.js +5 -1
- package/dist/integrations/index.js.map +1 -1
- package/dist/integrations/social/credentials.d.ts +2 -0
- package/dist/integrations/social/credentials.d.ts.map +1 -0
- package/dist/integrations/social/credentials.js +36 -0
- package/dist/integrations/social/credentials.js.map +1 -0
- package/dist/integrations/social/index.d.ts +8 -0
- package/dist/integrations/social/index.d.ts.map +1 -1
- package/dist/integrations/social/index.js +8 -0
- package/dist/integrations/social/index.js.map +1 -1
- package/dist/integrations/social/twitter-client.d.ts +6 -0
- package/dist/integrations/social/twitter-client.d.ts.map +1 -0
- package/dist/integrations/social/twitter-client.js +140 -0
- package/dist/integrations/social/twitter-client.js.map +1 -0
- package/dist/integrations/social/twitter-create-tweet.d.ts +61 -0
- package/dist/integrations/social/twitter-create-tweet.d.ts.map +1 -0
- package/dist/integrations/social/twitter-create-tweet.js +83 -0
- package/dist/integrations/social/twitter-create-tweet.js.map +1 -0
- package/dist/integrations/social/twitter-delete-tweet.d.ts +23 -0
- package/dist/integrations/social/twitter-delete-tweet.d.ts.map +1 -0
- package/dist/integrations/social/twitter-delete-tweet.js +41 -0
- package/dist/integrations/social/twitter-delete-tweet.js.map +1 -0
- package/dist/integrations/social/twitter-get-user-by-username.d.ts +39 -0
- package/dist/integrations/social/twitter-get-user-by-username.d.ts.map +1 -0
- package/dist/integrations/social/twitter-get-user-by-username.js +56 -0
- package/dist/integrations/social/twitter-get-user-by-username.js.map +1 -0
- package/dist/integrations/social/twitter-like-tweet.d.ts +23 -0
- package/dist/integrations/social/twitter-like-tweet.d.ts.map +1 -0
- package/dist/integrations/social/twitter-like-tweet.js +48 -0
- package/dist/integrations/social/twitter-like-tweet.js.map +1 -0
- package/dist/integrations/social/twitter-retweet.d.ts +23 -0
- package/dist/integrations/social/twitter-retweet.d.ts.map +1 -0
- package/dist/integrations/social/twitter-retweet.js +48 -0
- package/dist/integrations/social/twitter-retweet.js.map +1 -0
- package/dist/integrations/social/twitter-search-tweets.d.ts +77 -0
- package/dist/integrations/social/twitter-search-tweets.d.ts.map +1 -0
- package/dist/integrations/social/twitter-search-tweets.js +76 -0
- package/dist/integrations/social/twitter-search-tweets.js.map +1 -0
- package/dist/integrations/social/twitter-send-dm.d.ts +39 -0
- package/dist/integrations/social/twitter-send-dm.d.ts.map +1 -0
- package/dist/integrations/social/twitter-send-dm.js +67 -0
- package/dist/integrations/social/twitter-send-dm.js.map +1 -0
- package/dist/integrations/wordpress/createPost.d.ts +25 -0
- package/dist/integrations/wordpress/createPost.d.ts.map +1 -0
- package/dist/integrations/wordpress/createPost.js +67 -0
- package/dist/integrations/wordpress/createPost.js.map +1 -0
- package/dist/integrations/wordpress/credentials.d.ts +2 -0
- package/dist/integrations/wordpress/credentials.d.ts.map +1 -0
- package/dist/integrations/wordpress/credentials.js +25 -0
- package/dist/integrations/wordpress/credentials.js.map +1 -0
- package/dist/integrations/wordpress/getPosts.d.ts +28 -0
- package/dist/integrations/wordpress/getPosts.d.ts.map +1 -0
- package/dist/integrations/wordpress/getPosts.js +70 -0
- package/dist/integrations/wordpress/getPosts.js.map +1 -0
- package/dist/integrations/wordpress/index.d.ts +8 -0
- package/dist/integrations/wordpress/index.d.ts.map +1 -0
- package/dist/integrations/wordpress/index.js +7 -0
- package/dist/integrations/wordpress/index.js.map +1 -0
- package/dist/integrations/wordpress/schemas.d.ts +411 -0
- package/dist/integrations/wordpress/schemas.d.ts.map +1 -0
- package/dist/integrations/wordpress/schemas.js +110 -0
- package/dist/integrations/wordpress/schemas.js.map +1 -0
- package/dist/integrations/wordpress/updatePost.d.ts +21 -0
- package/dist/integrations/wordpress/updatePost.d.ts.map +1 -0
- package/dist/integrations/wordpress/updatePost.js +59 -0
- package/dist/integrations/wordpress/updatePost.js.map +1 -0
- package/dist/integrations/wordpress/uploadMedia.d.ts +15 -0
- package/dist/integrations/wordpress/uploadMedia.d.ts.map +1 -0
- package/dist/integrations/wordpress/uploadMedia.js +56 -0
- package/dist/integrations/wordpress/uploadMedia.js.map +1 -0
- package/dist/integrations/wordpress/utils.d.ts +15 -0
- package/dist/integrations/wordpress/utils.d.ts.map +1 -0
- package/dist/integrations/wordpress/utils.js +15 -0
- package/dist/integrations/wordpress/utils.js.map +1 -0
- package/dist/schemas/ai.d.ts +6 -6
- package/package.json +2 -1
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export declare const devtoUpdateArticleNode: import("@jam-nodes/core").NodeDefinition<{
|
|
2
|
+
id: number;
|
|
3
|
+
title?: string | undefined;
|
|
4
|
+
description?: string | undefined;
|
|
5
|
+
published?: boolean | undefined;
|
|
6
|
+
tags?: string[] | undefined;
|
|
7
|
+
bodyMarkdown?: string | undefined;
|
|
8
|
+
}, {
|
|
9
|
+
url: string;
|
|
10
|
+
id: number;
|
|
11
|
+
title: string;
|
|
12
|
+
description: string | null;
|
|
13
|
+
slug: string;
|
|
14
|
+
published: boolean;
|
|
15
|
+
publishedAt: string | null;
|
|
16
|
+
tags: string[];
|
|
17
|
+
readingTimeMinutes: number;
|
|
18
|
+
}>;
|
|
19
|
+
//# sourceMappingURL=update-article.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-article.d.ts","sourceRoot":"","sources":["../../../src/integrations/devto/update-article.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;EAkEjC,CAAA"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { defineNode } from '@jam-nodes/core';
|
|
2
|
+
import { fetchWithRetry } from '../../utils/http.js';
|
|
3
|
+
import { DevtoUpdateArticleInputSchema, DevtoUpdateArticleOutputSchema, normalizeDevtoArticle, } from './schemas.js';
|
|
4
|
+
const DEVTO_API_BASE = 'https://dev.to/api';
|
|
5
|
+
export const devtoUpdateArticleNode = defineNode({
|
|
6
|
+
type: 'devto_update_article',
|
|
7
|
+
name: 'Dev.to Update Article',
|
|
8
|
+
description: 'Update an existing article on Dev.to by its ID',
|
|
9
|
+
category: 'integration',
|
|
10
|
+
inputSchema: DevtoUpdateArticleInputSchema,
|
|
11
|
+
outputSchema: DevtoUpdateArticleOutputSchema,
|
|
12
|
+
estimatedDuration: 5,
|
|
13
|
+
capabilities: {
|
|
14
|
+
supportsRerun: true,
|
|
15
|
+
},
|
|
16
|
+
executor: async (input, context) => {
|
|
17
|
+
try {
|
|
18
|
+
const apiKey = context.credentials?.devto?.apiKey;
|
|
19
|
+
if (!apiKey) {
|
|
20
|
+
return {
|
|
21
|
+
success: false,
|
|
22
|
+
error: 'Dev.to API key not configured. Please provide context.credentials.devto.apiKey.',
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
const articleBody = {};
|
|
26
|
+
if (input.title !== undefined)
|
|
27
|
+
articleBody['title'] = input.title;
|
|
28
|
+
if (input.bodyMarkdown !== undefined)
|
|
29
|
+
articleBody['body_markdown'] = input.bodyMarkdown;
|
|
30
|
+
if (input.published !== undefined)
|
|
31
|
+
articleBody['published'] = input.published;
|
|
32
|
+
if (input.tags !== undefined)
|
|
33
|
+
articleBody['tags'] = input.tags;
|
|
34
|
+
if (input.description !== undefined)
|
|
35
|
+
articleBody['description'] = input.description;
|
|
36
|
+
const response = await fetchWithRetry(`${DEVTO_API_BASE}/articles/${input.id}`, {
|
|
37
|
+
method: 'PUT',
|
|
38
|
+
headers: {
|
|
39
|
+
'api-key': apiKey,
|
|
40
|
+
'Content-Type': 'application/json',
|
|
41
|
+
},
|
|
42
|
+
body: JSON.stringify({ article: articleBody }),
|
|
43
|
+
}, { maxRetries: 3, backoffMs: 1000, timeoutMs: 30000 });
|
|
44
|
+
if (!response.ok) {
|
|
45
|
+
const errorText = await response.text();
|
|
46
|
+
return {
|
|
47
|
+
success: false,
|
|
48
|
+
error: `Dev.to API error ${response.status}: ${errorText}`,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
const data = (await response.json());
|
|
52
|
+
return {
|
|
53
|
+
success: true,
|
|
54
|
+
output: normalizeDevtoArticle(data),
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
return {
|
|
59
|
+
success: false,
|
|
60
|
+
error: error instanceof Error ? error.message : 'Unknown error',
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
});
|
|
65
|
+
//# sourceMappingURL=update-article.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-article.js","sourceRoot":"","sources":["../../../src/integrations/devto/update-article.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EACL,6BAA6B,EAC7B,8BAA8B,EAG9B,qBAAqB,GACtB,MAAM,cAAc,CAAA;AAErB,MAAM,cAAc,GAAG,oBAAoB,CAAA;AAE3C,MAAM,CAAC,MAAM,sBAAsB,GAAG,UAAU,CAAC;IAC/C,IAAI,EAAE,sBAAsB;IAC5B,IAAI,EAAE,uBAAuB;IAC7B,WAAW,EAAE,gDAAgD;IAC7D,QAAQ,EAAE,aAAa;IACvB,WAAW,EAAE,6BAA6B;IAC1C,YAAY,EAAE,8BAA8B;IAC5C,iBAAiB,EAAE,CAAC;IACpB,YAAY,EAAE;QACZ,aAAa,EAAE,IAAI;KACpB;IACD,QAAQ,EAAE,KAAK,EAAE,KAA8B,EAAE,OAAO,EAAE,EAAE;QAC1D,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,KAAK,EAAE,MAAM,CAAA;YACjD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EACH,iFAAiF;iBACpF,CAAA;YACH,CAAC;YAED,MAAM,WAAW,GAA4B,EAAE,CAAA;YAC/C,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;gBAAE,WAAW,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,KAAK,CAAA;YACjE,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS;gBAClC,WAAW,CAAC,eAAe,CAAC,GAAG,KAAK,CAAC,YAAY,CAAA;YACnD,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS;gBAC/B,WAAW,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC,SAAS,CAAA;YAC5C,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS;gBAAE,WAAW,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAA;YAC9D,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS;gBACjC,WAAW,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC,WAAW,CAAA;YAEhD,MAAM,QAAQ,GAAG,MAAM,cAAc,CACnC,GAAG,cAAc,aAAa,KAAK,CAAC,EAAE,EAAE,EACxC;gBACE,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE;oBACP,SAAS,EAAE,MAAM;oBACjB,cAAc,EAAE,kBAAkB;iBACnC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;aAC/C,EACD,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CACrD,CAAA;YAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;gBACvC,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,oBAAoB,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE;iBAC3D,CAAA;YACH,CAAC;YAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAoB,CAAA;YAEvD,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,qBAAqB,CAAC,IAAI,CAAC;aACpC,CAAA;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;aAChE,CAAA;QACH,CAAC;IACH,CAAC;CACF,CAAC,CAAA"}
|
|
@@ -238,6 +238,7 @@ export declare const DiscordSendMessageInputSchema: z.ZodObject<{
|
|
|
238
238
|
}, "strip", z.ZodTypeAny, {
|
|
239
239
|
content: string;
|
|
240
240
|
channelId: string;
|
|
241
|
+
username?: string | undefined;
|
|
241
242
|
embeds?: {
|
|
242
243
|
url?: string | undefined;
|
|
243
244
|
title?: string | undefined;
|
|
@@ -265,11 +266,11 @@ export declare const DiscordSendMessageInputSchema: z.ZodObject<{
|
|
|
265
266
|
inline?: boolean | undefined;
|
|
266
267
|
}[] | undefined;
|
|
267
268
|
}[] | undefined;
|
|
268
|
-
username?: string | undefined;
|
|
269
269
|
avatarUrl?: string | undefined;
|
|
270
270
|
}, {
|
|
271
271
|
content: string;
|
|
272
272
|
channelId: string;
|
|
273
|
+
username?: string | undefined;
|
|
273
274
|
embeds?: {
|
|
274
275
|
url?: string | undefined;
|
|
275
276
|
title?: string | undefined;
|
|
@@ -297,7 +298,6 @@ export declare const DiscordSendMessageInputSchema: z.ZodObject<{
|
|
|
297
298
|
inline?: boolean | undefined;
|
|
298
299
|
}[] | undefined;
|
|
299
300
|
}[] | undefined;
|
|
300
|
-
username?: string | undefined;
|
|
301
301
|
avatarUrl?: string | undefined;
|
|
302
302
|
}>;
|
|
303
303
|
export declare const DiscordSendMessageOutputSchema: z.ZodObject<{
|
|
@@ -2,6 +2,7 @@ export { DiscordSendMessageInputSchema, DiscordSendMessageOutputSchema, type Dis
|
|
|
2
2
|
export declare const discordSendMessageNode: import("@jam-nodes/core").NodeDefinition<{
|
|
3
3
|
content: string;
|
|
4
4
|
channelId: string;
|
|
5
|
+
username?: string | undefined;
|
|
5
6
|
embeds?: {
|
|
6
7
|
url?: string | undefined;
|
|
7
8
|
title?: string | undefined;
|
|
@@ -29,7 +30,6 @@ export declare const discordSendMessageNode: import("@jam-nodes/core").NodeDefin
|
|
|
29
30
|
inline?: boolean | undefined;
|
|
30
31
|
}[] | undefined;
|
|
31
32
|
}[] | undefined;
|
|
32
|
-
username?: string | undefined;
|
|
33
33
|
avatarUrl?: string | undefined;
|
|
34
34
|
}, {
|
|
35
35
|
url: string;
|
|
@@ -55,6 +55,7 @@ export declare const FirecrawlCrawlOutputSchema: z.ZodObject<{
|
|
|
55
55
|
}, "strip", z.ZodTypeAny, {
|
|
56
56
|
status: "completed" | "failed";
|
|
57
57
|
completed: number;
|
|
58
|
+
expiresAt: string;
|
|
58
59
|
data: {
|
|
59
60
|
links?: string[] | undefined;
|
|
60
61
|
markdown?: string | undefined;
|
|
@@ -65,10 +66,10 @@ export declare const FirecrawlCrawlOutputSchema: z.ZodObject<{
|
|
|
65
66
|
}[];
|
|
66
67
|
total: number;
|
|
67
68
|
creditsUsed: number;
|
|
68
|
-
expiresAt: string;
|
|
69
69
|
}, {
|
|
70
70
|
status: "completed" | "failed";
|
|
71
71
|
completed: number;
|
|
72
|
+
expiresAt: string;
|
|
72
73
|
data: {
|
|
73
74
|
links?: string[] | undefined;
|
|
74
75
|
markdown?: string | undefined;
|
|
@@ -79,7 +80,6 @@ export declare const FirecrawlCrawlOutputSchema: z.ZodObject<{
|
|
|
79
80
|
}[];
|
|
80
81
|
total: number;
|
|
81
82
|
creditsUsed: number;
|
|
82
|
-
expiresAt: string;
|
|
83
83
|
}>;
|
|
84
84
|
export type FirecrawlCrawlOutput = z.infer<typeof FirecrawlCrawlOutputSchema>;
|
|
85
85
|
/**
|
|
@@ -106,6 +106,7 @@ export declare const firecrawlCrawlNode: import("@jam-nodes/core").NodeDefinitio
|
|
|
106
106
|
}, {
|
|
107
107
|
status: "completed" | "failed";
|
|
108
108
|
completed: number;
|
|
109
|
+
expiresAt: string;
|
|
109
110
|
data: {
|
|
110
111
|
links?: string[] | undefined;
|
|
111
112
|
markdown?: string | undefined;
|
|
@@ -116,6 +117,5 @@ export declare const firecrawlCrawlNode: import("@jam-nodes/core").NodeDefinitio
|
|
|
116
117
|
}[];
|
|
117
118
|
total: number;
|
|
118
119
|
creditsUsed: number;
|
|
119
|
-
expiresAt: string;
|
|
120
120
|
}>;
|
|
121
121
|
//# sourceMappingURL=crawl.d.ts.map
|
|
@@ -8,12 +8,12 @@ export declare const FirecrawlExtractInputSchema: z.ZodObject<{
|
|
|
8
8
|
schema: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
9
9
|
}, "strip", z.ZodTypeAny, {
|
|
10
10
|
urls: string[];
|
|
11
|
-
prompt?: string | undefined;
|
|
12
11
|
schema?: Record<string, unknown> | undefined;
|
|
12
|
+
prompt?: string | undefined;
|
|
13
13
|
}, {
|
|
14
14
|
urls: string[];
|
|
15
|
-
prompt?: string | undefined;
|
|
16
15
|
schema?: Record<string, unknown> | undefined;
|
|
16
|
+
prompt?: string | undefined;
|
|
17
17
|
}>;
|
|
18
18
|
export type FirecrawlExtractInput = z.infer<typeof FirecrawlExtractInputSchema>;
|
|
19
19
|
export declare const FirecrawlExtractOutputSchema: z.ZodObject<{
|
|
@@ -70,8 +70,8 @@ export type FirecrawlExtractOutput = z.infer<typeof FirecrawlExtractOutputSchema
|
|
|
70
70
|
*/
|
|
71
71
|
export declare const firecrawlExtractNode: import("@jam-nodes/core").NodeDefinition<{
|
|
72
72
|
urls: string[];
|
|
73
|
-
prompt?: string | undefined;
|
|
74
73
|
schema?: Record<string, unknown> | undefined;
|
|
74
|
+
prompt?: string | undefined;
|
|
75
75
|
}, {
|
|
76
76
|
status: "completed" | "failed" | "cancelled";
|
|
77
77
|
success: boolean;
|
|
@@ -44,12 +44,12 @@ export declare const FirecrawlScrapeInputSchema: z.ZodObject<{
|
|
|
44
44
|
prompt: z.ZodOptional<z.ZodString>;
|
|
45
45
|
}, "strip", z.ZodTypeAny, {
|
|
46
46
|
type: "json";
|
|
47
|
-
prompt?: string | undefined;
|
|
48
47
|
schema?: Record<string, unknown> | undefined;
|
|
48
|
+
prompt?: string | undefined;
|
|
49
49
|
}, {
|
|
50
50
|
type: "json";
|
|
51
|
-
prompt?: string | undefined;
|
|
52
51
|
schema?: Record<string, unknown> | undefined;
|
|
52
|
+
prompt?: string | undefined;
|
|
53
53
|
}>, z.ZodObject<{
|
|
54
54
|
type: z.ZodLiteral<"changeTracking">;
|
|
55
55
|
/** Tracking modes */
|
|
@@ -63,13 +63,13 @@ export declare const FirecrawlScrapeInputSchema: z.ZodObject<{
|
|
|
63
63
|
}, "strip", z.ZodTypeAny, {
|
|
64
64
|
type: "changeTracking";
|
|
65
65
|
tag: string | null;
|
|
66
|
-
prompt?: string | undefined;
|
|
67
66
|
schema?: Record<string, unknown> | undefined;
|
|
67
|
+
prompt?: string | undefined;
|
|
68
68
|
modes?: ("json" | "git-diff")[] | undefined;
|
|
69
69
|
}, {
|
|
70
70
|
type: "changeTracking";
|
|
71
|
-
prompt?: string | undefined;
|
|
72
71
|
schema?: Record<string, unknown> | undefined;
|
|
72
|
+
prompt?: string | undefined;
|
|
73
73
|
modes?: ("json" | "git-diff")[] | undefined;
|
|
74
74
|
tag?: string | null | undefined;
|
|
75
75
|
}>]>, "many">>;
|
|
@@ -89,13 +89,13 @@ export declare const FirecrawlScrapeInputSchema: z.ZodObject<{
|
|
|
89
89
|
} | undefined;
|
|
90
90
|
} | {
|
|
91
91
|
type: "json";
|
|
92
|
-
prompt?: string | undefined;
|
|
93
92
|
schema?: Record<string, unknown> | undefined;
|
|
93
|
+
prompt?: string | undefined;
|
|
94
94
|
} | {
|
|
95
95
|
type: "changeTracking";
|
|
96
96
|
tag: string | null;
|
|
97
|
-
prompt?: string | undefined;
|
|
98
97
|
schema?: Record<string, unknown> | undefined;
|
|
98
|
+
prompt?: string | undefined;
|
|
99
99
|
modes?: ("json" | "git-diff")[] | undefined;
|
|
100
100
|
})[];
|
|
101
101
|
onlyMainContent: boolean;
|
|
@@ -112,12 +112,12 @@ export declare const FirecrawlScrapeInputSchema: z.ZodObject<{
|
|
|
112
112
|
} | undefined;
|
|
113
113
|
} | {
|
|
114
114
|
type: "json";
|
|
115
|
-
prompt?: string | undefined;
|
|
116
115
|
schema?: Record<string, unknown> | undefined;
|
|
116
|
+
prompt?: string | undefined;
|
|
117
117
|
} | {
|
|
118
118
|
type: "changeTracking";
|
|
119
|
-
prompt?: string | undefined;
|
|
120
119
|
schema?: Record<string, unknown> | undefined;
|
|
120
|
+
prompt?: string | undefined;
|
|
121
121
|
modes?: ("json" | "git-diff")[] | undefined;
|
|
122
122
|
tag?: string | null | undefined;
|
|
123
123
|
})[] | undefined;
|
|
@@ -1081,12 +1081,12 @@ export declare const firecrawlScrapeNode: import("@jam-nodes/core").NodeDefiniti
|
|
|
1081
1081
|
} | undefined;
|
|
1082
1082
|
} | {
|
|
1083
1083
|
type: "json";
|
|
1084
|
-
prompt?: string | undefined;
|
|
1085
1084
|
schema?: Record<string, unknown> | undefined;
|
|
1085
|
+
prompt?: string | undefined;
|
|
1086
1086
|
} | {
|
|
1087
1087
|
type: "changeTracking";
|
|
1088
|
-
prompt?: string | undefined;
|
|
1089
1088
|
schema?: Record<string, unknown> | undefined;
|
|
1089
|
+
prompt?: string | undefined;
|
|
1090
1090
|
modes?: ("json" | "git-diff")[] | undefined;
|
|
1091
1091
|
tag?: string | null | undefined;
|
|
1092
1092
|
})[] | undefined;
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
export { redditMonitorNode, RedditMonitorInputSchema, RedditMonitorOutputSchema, type RedditMonitorInput, type RedditMonitorOutput, type RedditPost, twitterMonitorNode, TwitterMonitorInputSchema, TwitterMonitorOutputSchema, type TwitterMonitorInput, type TwitterMonitorOutput, type TwitterPost, linkedinMonitorNode, LinkedInMonitorInputSchema, LinkedInMonitorOutputSchema, type LinkedInMonitorInput, type LinkedInMonitorOutput, type LinkedInPost, } from './social/index.js';
|
|
1
|
+
export { redditMonitorNode, RedditMonitorInputSchema, RedditMonitorOutputSchema, type RedditMonitorInput, type RedditMonitorOutput, type RedditPost, twitterMonitorNode, TwitterMonitorInputSchema, TwitterMonitorOutputSchema, type TwitterMonitorInput, type TwitterMonitorOutput, type TwitterPost, twitterCredential, twitterCreateTweetNode, TwitterCreateTweetInputSchema, TwitterCreateTweetOutputSchema, type TwitterCreateTweetInput, type TwitterCreateTweetOutput, twitterDeleteTweetNode, TwitterDeleteTweetInputSchema, TwitterDeleteTweetOutputSchema, type TwitterDeleteTweetInput, type TwitterDeleteTweetOutput, twitterLikeTweetNode, TwitterLikeTweetInputSchema, TwitterLikeTweetOutputSchema, type TwitterLikeTweetInput, type TwitterLikeTweetOutput, twitterRetweetNode, TwitterRetweetInputSchema, TwitterRetweetOutputSchema, type TwitterRetweetInput, type TwitterRetweetOutput, twitterSearchTweetsNode, TwitterSearchTweetsInputSchema, TwitterSearchTweetsOutputSchema, type TwitterSearchTweetsInput, type TwitterSearchTweetsOutput, twitterSendDMNode, TwitterSendDMInputSchema, TwitterSendDMOutputSchema, type TwitterSendDMInput, type TwitterSendDMOutput, twitterGetUserByUsernameNode, TwitterGetUserByUsernameInputSchema, TwitterGetUserByUsernameOutputSchema, type TwitterGetUserByUsernameInput, type TwitterGetUserByUsernameOutput, linkedinMonitorNode, LinkedInMonitorInputSchema, LinkedInMonitorOutputSchema, type LinkedInMonitorInput, type LinkedInMonitorOutput, type LinkedInPost, } from './social/index.js';
|
|
2
2
|
export { soraVideoNode, SoraVideoInputSchema, SoraVideoOutputSchema, type SoraVideoInput, type SoraVideoOutput, } from './openai/index.js';
|
|
3
3
|
export { seoKeywordResearchNode, SeoKeywordResearchInputSchema, SeoKeywordResearchOutputSchema, type SeoKeywordResearchInput, type SeoKeywordResearchOutput, seoAuditNode, SeoAuditInputSchema, SeoAuditOutputSchema, type SeoAuditInput, type SeoAuditOutput, type SeoIssue, } from './dataforseo/index.js';
|
|
4
4
|
export { searchContactsNode, SearchContactsInputSchema, SearchContactsOutputSchema, type SearchContactsInput, type SearchContactsOutput, } from './apollo/index.js';
|
|
5
5
|
export { discordSendMessageNode, DiscordSendMessageInputSchema, DiscordSendMessageOutputSchema, type DiscordSendMessageInput, type DiscordSendMessageOutput, discordSendWebhookNode, DiscordSendWebhookInputSchema, DiscordSendWebhookOutputSchema, type DiscordSendWebhookInput, type DiscordSendWebhookOutput, discordCreateThreadNode, DiscordCreateThreadInputSchema, DiscordCreateThreadOutputSchema, type DiscordCreateThreadInput, type DiscordCreateThreadOutput, DiscordEmbedSchema, type DiscordEmbed, discordBotCredential, discordWebhookCredential, } from './discord/index.js';
|
|
6
6
|
export { firecrawlScrapeNode, FirecrawlScrapeInputSchema, FirecrawlScrapeOutputSchema, type FirecrawlScrapeInput, type FirecrawlScrapeOutput, firecrawlCrawlNode, FirecrawlCrawlInputSchema, FirecrawlCrawlOutputSchema, type FirecrawlCrawlInput, type FirecrawlCrawlOutput, firecrawlExtractNode, FirecrawlExtractInputSchema, FirecrawlExtractOutputSchema, type FirecrawlExtractInput, type FirecrawlExtractOutput, } from './firecrawl/index.js';
|
|
7
|
+
export { devtoCreateArticleNode, devtoUpdateArticleNode, devtoGetArticlesNode, DevtoArticleSchema, DevtoCreateArticleInputSchema, DevtoCreateArticleOutputSchema, DevtoUpdateArticleInputSchema, DevtoUpdateArticleOutputSchema, DevtoGetArticlesInputSchema, DevtoGetArticlesOutputSchema, normalizeDevtoArticle, devtoCredential, type DevtoArticle, type DevtoCreateArticleInput, type DevtoCreateArticleOutput, type DevtoUpdateArticleInput, type DevtoUpdateArticleOutput, type DevtoGetArticlesInput, type DevtoGetArticlesOutput, } from './devto/index.js';
|
|
8
|
+
export { wordpressCreatePostNode, wordpressUpdatePostNode, wordpressGetPostsNode, wordpressUploadMediaNode, WordPressCredential, WordPressPostSchema, WordPressCreatePostInputSchema, WordPressCreatePostOutputSchema, WordPressUpdatePostInputSchema, WordPressUpdatePostOutputSchema, WordPressGetPostsInputSchema, WordPressGetPostsOutputSchema, WordPressMediaSchema, WordPressUploadMediaInputSchema, WordPressUploadMediaOutputSchema, normalizeWordPressPost, type WordPressPost, type WordPressCreatePostInput, type WordPressCreatePostOutput, type WordPressUpdatePostInput, type WordPressUpdatePostOutput, type WordPressGetPostsInput, type WordPressGetPostsOutput, type WordPressMedia, type WordPressUploadMediaInput, type WordPressUploadMediaOutput, } from './wordpress/index.js';
|
|
7
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/integrations/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,yBAAyB,EACzB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,UAAU,EACf,kBAAkB,EAClB,yBAAyB,EACzB,0BAA0B,EAC1B,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,WAAW,EAChB,mBAAmB,EACnB,0BAA0B,EAC1B,2BAA2B,EAC3B,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,YAAY,GAClB,MAAM,mBAAmB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/integrations/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// Social integrations
|
|
2
|
-
export { redditMonitorNode, RedditMonitorInputSchema, RedditMonitorOutputSchema, twitterMonitorNode, TwitterMonitorInputSchema, TwitterMonitorOutputSchema, linkedinMonitorNode, LinkedInMonitorInputSchema, LinkedInMonitorOutputSchema, } from './social/index.js';
|
|
2
|
+
export { redditMonitorNode, RedditMonitorInputSchema, RedditMonitorOutputSchema, twitterMonitorNode, TwitterMonitorInputSchema, TwitterMonitorOutputSchema, twitterCredential, twitterCreateTweetNode, TwitterCreateTweetInputSchema, TwitterCreateTweetOutputSchema, twitterDeleteTweetNode, TwitterDeleteTweetInputSchema, TwitterDeleteTweetOutputSchema, twitterLikeTweetNode, TwitterLikeTweetInputSchema, TwitterLikeTweetOutputSchema, twitterRetweetNode, TwitterRetweetInputSchema, TwitterRetweetOutputSchema, twitterSearchTweetsNode, TwitterSearchTweetsInputSchema, TwitterSearchTweetsOutputSchema, twitterSendDMNode, TwitterSendDMInputSchema, TwitterSendDMOutputSchema, twitterGetUserByUsernameNode, TwitterGetUserByUsernameInputSchema, TwitterGetUserByUsernameOutputSchema, linkedinMonitorNode, LinkedInMonitorInputSchema, LinkedInMonitorOutputSchema, } from './social/index.js';
|
|
3
3
|
// OpenAI integrations
|
|
4
4
|
export { soraVideoNode, SoraVideoInputSchema, SoraVideoOutputSchema, } from './openai/index.js';
|
|
5
5
|
// DataForSEO integrations
|
|
@@ -10,4 +10,8 @@ export { searchContactsNode, SearchContactsInputSchema, SearchContactsOutputSche
|
|
|
10
10
|
export { discordSendMessageNode, DiscordSendMessageInputSchema, DiscordSendMessageOutputSchema, discordSendWebhookNode, DiscordSendWebhookInputSchema, DiscordSendWebhookOutputSchema, discordCreateThreadNode, DiscordCreateThreadInputSchema, DiscordCreateThreadOutputSchema, DiscordEmbedSchema, discordBotCredential, discordWebhookCredential, } from './discord/index.js';
|
|
11
11
|
// Firecrawl integrations
|
|
12
12
|
export { firecrawlScrapeNode, FirecrawlScrapeInputSchema, FirecrawlScrapeOutputSchema, firecrawlCrawlNode, FirecrawlCrawlInputSchema, FirecrawlCrawlOutputSchema, firecrawlExtractNode, FirecrawlExtractInputSchema, FirecrawlExtractOutputSchema, } from './firecrawl/index.js';
|
|
13
|
+
// Dev.to integrations
|
|
14
|
+
export { devtoCreateArticleNode, devtoUpdateArticleNode, devtoGetArticlesNode, DevtoArticleSchema, DevtoCreateArticleInputSchema, DevtoCreateArticleOutputSchema, DevtoUpdateArticleInputSchema, DevtoUpdateArticleOutputSchema, DevtoGetArticlesInputSchema, DevtoGetArticlesOutputSchema, normalizeDevtoArticle, devtoCredential, } from './devto/index.js';
|
|
15
|
+
// WordPress integrations
|
|
16
|
+
export { wordpressCreatePostNode, wordpressUpdatePostNode, wordpressGetPostsNode, wordpressUploadMediaNode, WordPressCredential, WordPressPostSchema, WordPressCreatePostInputSchema, WordPressCreatePostOutputSchema, WordPressUpdatePostInputSchema, WordPressUpdatePostOutputSchema, WordPressGetPostsInputSchema, WordPressGetPostsOutputSchema, WordPressMediaSchema, WordPressUploadMediaInputSchema, WordPressUploadMediaOutputSchema, normalizeWordPressPost, } from './wordpress/index.js';
|
|
13
17
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/integrations/index.ts"],"names":[],"mappings":"AAAA,sBAAsB;AACtB,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,yBAAyB,EAIzB,kBAAkB,EAClB,yBAAyB,EACzB,0BAA0B,EAI1B,mBAAmB,EACnB,0BAA0B,EAC1B,2BAA2B,GAI5B,MAAM,mBAAmB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/integrations/index.ts"],"names":[],"mappings":"AAAA,sBAAsB;AACtB,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,yBAAyB,EAIzB,kBAAkB,EAClB,yBAAyB,EACzB,0BAA0B,EAI1B,iBAAiB,EACjB,sBAAsB,EACtB,6BAA6B,EAC7B,8BAA8B,EAG9B,sBAAsB,EACtB,6BAA6B,EAC7B,8BAA8B,EAG9B,oBAAoB,EACpB,2BAA2B,EAC3B,4BAA4B,EAG5B,kBAAkB,EAClB,yBAAyB,EACzB,0BAA0B,EAG1B,uBAAuB,EACvB,8BAA8B,EAC9B,+BAA+B,EAG/B,iBAAiB,EACjB,wBAAwB,EACxB,yBAAyB,EAGzB,4BAA4B,EAC5B,mCAAmC,EACnC,oCAAoC,EAGpC,mBAAmB,EACnB,0BAA0B,EAC1B,2BAA2B,GAI5B,MAAM,mBAAmB,CAAA;AAE1B,sBAAsB;AACtB,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,qBAAqB,GAGtB,MAAM,mBAAmB,CAAA;AAE1B,0BAA0B;AAC1B,OAAO,EACL,sBAAsB,EACtB,6BAA6B,EAC7B,8BAA8B,EAG9B,YAAY,EACZ,mBAAmB,EACnB,oBAAoB,GAIrB,MAAM,uBAAuB,CAAA;AAE9B,sBAAsB;AACtB,OAAO,EACL,kBAAkB,EAClB,yBAAyB,EACzB,0BAA0B,GAG3B,MAAM,mBAAmB,CAAA;AAE1B,uBAAuB;AACvB,OAAO,EACL,sBAAsB,EACtB,6BAA6B,EAC7B,8BAA8B,EAG9B,sBAAsB,EACtB,6BAA6B,EAC7B,8BAA8B,EAG9B,uBAAuB,EACvB,8BAA8B,EAC9B,+BAA+B,EAG/B,kBAAkB,EAElB,oBAAoB,EACpB,wBAAwB,GACzB,MAAM,oBAAoB,CAAA;AAE3B,yBAAyB;AACzB,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,2BAA2B,EAG3B,kBAAkB,EAClB,yBAAyB,EACzB,0BAA0B,EAG1B,oBAAoB,EACpB,2BAA2B,EAC3B,4BAA4B,GAG7B,MAAM,sBAAsB,CAAA;AAE7B,sBAAsB;AACtB,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACpB,kBAAkB,EAClB,6BAA6B,EAC7B,8BAA8B,EAC9B,6BAA6B,EAC7B,8BAA8B,EAC9B,2BAA2B,EAC3B,4BAA4B,EAC5B,qBAAqB,EACrB,eAAe,GAQhB,MAAM,kBAAkB,CAAA;AAEzB,yBAAyB;AACzB,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,qBAAqB,EACrB,wBAAwB,EACxB,mBAAmB,EACnB,mBAAmB,EACnB,8BAA8B,EAC9B,+BAA+B,EAC/B,8BAA8B,EAC9B,+BAA+B,EAC/B,4BAA4B,EAC5B,6BAA6B,EAC7B,oBAAoB,EACpB,+BAA+B,EAC/B,gCAAgC,EAChC,sBAAsB,GAWvB,MAAM,sBAAsB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../../src/integrations/social/credentials.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,iBAAiB,sDAgC5B,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { defineOAuth2Credential } from '@jam-nodes/core';
|
|
3
|
+
export const twitterCredential = defineOAuth2Credential({
|
|
4
|
+
pkce: true,
|
|
5
|
+
name: 'twitter',
|
|
6
|
+
displayName: 'Twitter/X OAuth2',
|
|
7
|
+
documentationUrl: 'https://developer.twitter.com/en/docs',
|
|
8
|
+
config: {
|
|
9
|
+
authorizationUrl: 'https://twitter.com/i/oauth2/authorize',
|
|
10
|
+
tokenUrl: 'https://api.twitter.com/2/oauth2/token',
|
|
11
|
+
scopes: [
|
|
12
|
+
'tweet.read',
|
|
13
|
+
'tweet.write',
|
|
14
|
+
'users.read',
|
|
15
|
+
'dm.read',
|
|
16
|
+
'dm.write',
|
|
17
|
+
'like.read',
|
|
18
|
+
'like.write',
|
|
19
|
+
'offline.access',
|
|
20
|
+
],
|
|
21
|
+
pkce: true,
|
|
22
|
+
},
|
|
23
|
+
schema: z.object({
|
|
24
|
+
clientId: z.string(),
|
|
25
|
+
clientSecret: z.string(),
|
|
26
|
+
accessToken: z.string(),
|
|
27
|
+
refreshToken: z.string().optional(),
|
|
28
|
+
expiresAt: z.number().optional(),
|
|
29
|
+
// OAuth 1.0a — enables read + write operations
|
|
30
|
+
consumerKey: z.string().optional(),
|
|
31
|
+
consumerSecret: z.string().optional(),
|
|
32
|
+
accessTokenSecret: z.string().optional(),
|
|
33
|
+
bearerToken: z.string().optional(),
|
|
34
|
+
}),
|
|
35
|
+
});
|
|
36
|
+
//# sourceMappingURL=credentials.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../../src/integrations/social/credentials.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,MAAM,CAAC,MAAM,iBAAiB,GAAG,sBAAsB,CAAC;IACtD,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,SAAS;IACf,WAAW,EAAE,kBAAkB;IAC/B,gBAAgB,EAAE,uCAAuC;IACzD,MAAM,EAAE;QACN,gBAAgB,EAAE,wCAAwC;QAC1D,QAAQ,EAAE,wCAAwC;QAClD,MAAM,EAAE;YACN,YAAY;YACZ,aAAa;YACb,YAAY;YACZ,SAAS;YACT,UAAU;YACV,WAAW;YACX,YAAY;YACZ,gBAAgB;SACjB;QACD,IAAI,EAAE,IAAI;KACX;IACD,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;QACpB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;QACxB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;QACvB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACnC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAChC,+CAA+C;QAC/C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAClC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACrC,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACxC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KACnC,CAAC;CACH,CAAC,CAAC"}
|
|
@@ -1,4 +1,12 @@
|
|
|
1
1
|
export { redditMonitorNode, RedditMonitorInputSchema, RedditMonitorOutputSchema, type RedditMonitorInput, type RedditMonitorOutput, type RedditPost, } from './reddit-monitor.js';
|
|
2
2
|
export { twitterMonitorNode, TwitterMonitorInputSchema, TwitterMonitorOutputSchema, type TwitterMonitorInput, type TwitterMonitorOutput, type TwitterPost, } from './twitter-monitor.js';
|
|
3
|
+
export { twitterCredential, } from './credentials.js';
|
|
4
|
+
export { twitterCreateTweetNode, TwitterCreateTweetInputSchema, TwitterCreateTweetOutputSchema, type TwitterCreateTweetInput, type TwitterCreateTweetOutput, } from './twitter-create-tweet.js';
|
|
5
|
+
export { twitterDeleteTweetNode, TwitterDeleteTweetInputSchema, TwitterDeleteTweetOutputSchema, type TwitterDeleteTweetInput, type TwitterDeleteTweetOutput, } from './twitter-delete-tweet.js';
|
|
6
|
+
export { twitterLikeTweetNode, TwitterLikeTweetInputSchema, TwitterLikeTweetOutputSchema, type TwitterLikeTweetInput, type TwitterLikeTweetOutput, } from './twitter-like-tweet.js';
|
|
7
|
+
export { twitterRetweetNode, TwitterRetweetInputSchema, TwitterRetweetOutputSchema, type TwitterRetweetInput, type TwitterRetweetOutput, } from './twitter-retweet.js';
|
|
8
|
+
export { twitterSearchTweetsNode, TwitterSearchTweetsInputSchema, TwitterSearchTweetsOutputSchema, type TwitterSearchTweetsInput, type TwitterSearchTweetsOutput, } from './twitter-search-tweets.js';
|
|
9
|
+
export { twitterSendDMNode, TwitterSendDMInputSchema, TwitterSendDMOutputSchema, type TwitterSendDMInput, type TwitterSendDMOutput, } from './twitter-send-dm.js';
|
|
10
|
+
export { twitterGetUserByUsernameNode, TwitterGetUserByUsernameInputSchema, TwitterGetUserByUsernameOutputSchema, type TwitterGetUserByUsernameInput, type TwitterGetUserByUsernameOutput, } from './twitter-get-user-by-username.js';
|
|
3
11
|
export { linkedinMonitorNode, LinkedInMonitorInputSchema, LinkedInMonitorOutputSchema, type LinkedInMonitorInput, type LinkedInMonitorOutput, type LinkedInPost, } from './linkedin-monitor.js';
|
|
4
12
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/integrations/social/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,yBAAyB,EACzB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,UAAU,GAChB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,kBAAkB,EAClB,yBAAyB,EACzB,0BAA0B,EAC1B,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,WAAW,GACjB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,2BAA2B,EAC3B,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,YAAY,GAClB,MAAM,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/integrations/social/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,yBAAyB,EACzB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,UAAU,GAChB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,kBAAkB,EAClB,yBAAyB,EACzB,0BAA0B,EAC1B,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,WAAW,GACjB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,sBAAsB,EACtB,6BAA6B,EAC7B,8BAA8B,EAC9B,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,GAC9B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,sBAAsB,EACtB,6BAA6B,EAC7B,8BAA8B,EAC9B,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,GAC9B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,oBAAoB,EACpB,2BAA2B,EAC3B,4BAA4B,EAC5B,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,GAC5B,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,kBAAkB,EAClB,yBAAyB,EACzB,0BAA0B,EAC1B,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,GAC1B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,uBAAuB,EACvB,8BAA8B,EAC9B,+BAA+B,EAC/B,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,GAC/B,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,yBAAyB,EACzB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,GACzB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,4BAA4B,EAC5B,mCAAmC,EACnC,oCAAoC,EACpC,KAAK,6BAA6B,EAClC,KAAK,8BAA8B,GACpC,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,2BAA2B,EAC3B,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,YAAY,GAClB,MAAM,uBAAuB,CAAC"}
|
|
@@ -1,4 +1,12 @@
|
|
|
1
1
|
export { redditMonitorNode, RedditMonitorInputSchema, RedditMonitorOutputSchema, } from './reddit-monitor.js';
|
|
2
2
|
export { twitterMonitorNode, TwitterMonitorInputSchema, TwitterMonitorOutputSchema, } from './twitter-monitor.js';
|
|
3
|
+
export { twitterCredential, } from './credentials.js';
|
|
4
|
+
export { twitterCreateTweetNode, TwitterCreateTweetInputSchema, TwitterCreateTweetOutputSchema, } from './twitter-create-tweet.js';
|
|
5
|
+
export { twitterDeleteTweetNode, TwitterDeleteTweetInputSchema, TwitterDeleteTweetOutputSchema, } from './twitter-delete-tweet.js';
|
|
6
|
+
export { twitterLikeTweetNode, TwitterLikeTweetInputSchema, TwitterLikeTweetOutputSchema, } from './twitter-like-tweet.js';
|
|
7
|
+
export { twitterRetweetNode, TwitterRetweetInputSchema, TwitterRetweetOutputSchema, } from './twitter-retweet.js';
|
|
8
|
+
export { twitterSearchTweetsNode, TwitterSearchTweetsInputSchema, TwitterSearchTweetsOutputSchema, } from './twitter-search-tweets.js';
|
|
9
|
+
export { twitterSendDMNode, TwitterSendDMInputSchema, TwitterSendDMOutputSchema, } from './twitter-send-dm.js';
|
|
10
|
+
export { twitterGetUserByUsernameNode, TwitterGetUserByUsernameInputSchema, TwitterGetUserByUsernameOutputSchema, } from './twitter-get-user-by-username.js';
|
|
3
11
|
export { linkedinMonitorNode, LinkedInMonitorInputSchema, LinkedInMonitorOutputSchema, } from './linkedin-monitor.js';
|
|
4
12
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/integrations/social/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,yBAAyB,GAI1B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,kBAAkB,EAClB,yBAAyB,EACzB,0BAA0B,GAI3B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,2BAA2B,GAI5B,MAAM,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/integrations/social/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,yBAAyB,GAI1B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,kBAAkB,EAClB,yBAAyB,EACzB,0BAA0B,GAI3B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,sBAAsB,EACtB,6BAA6B,EAC7B,8BAA8B,GAG/B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,sBAAsB,EACtB,6BAA6B,EAC7B,8BAA8B,GAG/B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,oBAAoB,EACpB,2BAA2B,EAC3B,4BAA4B,GAG7B,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,kBAAkB,EAClB,yBAAyB,EACzB,0BAA0B,GAG3B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,uBAAuB,EACvB,8BAA8B,EAC9B,+BAA+B,GAGhC,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,yBAAyB,GAG1B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,4BAA4B,EAC5B,mCAAmC,EACnC,oCAAoC,GAGrC,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,2BAA2B,GAI5B,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { NodeExecutionContext } from '@jam-nodes/core';
|
|
2
|
+
export declare function getTwitterAccessToken(context: NodeExecutionContext): string | null;
|
|
3
|
+
export declare function getTwitterAuthHeaders(context: NodeExecutionContext): Record<string, string>;
|
|
4
|
+
export declare function twitterRequest<T>(context: NodeExecutionContext, path: string, init: RequestInit): Promise<T>;
|
|
5
|
+
export declare function getAuthenticatedTwitterUserId(context: NodeExecutionContext): Promise<string>;
|
|
6
|
+
//# sourceMappingURL=twitter-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"twitter-client.d.ts","sourceRoot":"","sources":["../../../src/integrations/social/twitter-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAkI5D,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,oBAAoB,GAAG,MAAM,GAAG,IAAI,CAGlF;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,oBAAoB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAW3F;AAMD,wBAAsB,cAAc,CAAC,CAAC,EACpC,OAAO,EAAE,oBAAoB,EAC7B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,WAAW,GAChB,OAAO,CAAC,CAAC,CAAC,CA4CZ;AAED,wBAAsB,6BAA6B,CACjD,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,MAAM,CAAC,CAejB"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { fetchWithRetry } from '../../utils/http.js';
|
|
2
|
+
import { createHmac, randomBytes } from 'crypto';
|
|
3
|
+
const TWITTER_API_BASE_URL = 'https://api.twitter.com';
|
|
4
|
+
// =============================================================================
|
|
5
|
+
// OAuth 1.0a Signature Generation
|
|
6
|
+
// =============================================================================
|
|
7
|
+
/**
|
|
8
|
+
* Percent-encode a string per RFC 3986
|
|
9
|
+
*/
|
|
10
|
+
function percentEncode(str) {
|
|
11
|
+
return encodeURIComponent(str).replace(/[!'()*]/g, (c) => `%${c.charCodeAt(0).toString(16).toUpperCase()}`);
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Generate a random nonce for OAuth 1.0a
|
|
15
|
+
*/
|
|
16
|
+
function generateNonce() {
|
|
17
|
+
return randomBytes(16).toString('hex');
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Build the OAuth 1.0a Authorization header value.
|
|
21
|
+
*
|
|
22
|
+
* @see https://developer.twitter.com/en/docs/authentication/oauth-1-0a/creating-a-signature
|
|
23
|
+
*/
|
|
24
|
+
function buildOAuth1Header(method, url, consumerKey, consumerSecret, accessToken, accessTokenSecret, extraParams) {
|
|
25
|
+
const timestamp = Math.floor(Date.now() / 1000).toString();
|
|
26
|
+
const nonce = generateNonce();
|
|
27
|
+
// OAuth parameters (without oauth_signature)
|
|
28
|
+
const oauthParams = {
|
|
29
|
+
oauth_consumer_key: consumerKey,
|
|
30
|
+
oauth_nonce: nonce,
|
|
31
|
+
oauth_signature_method: 'HMAC-SHA1',
|
|
32
|
+
oauth_timestamp: timestamp,
|
|
33
|
+
oauth_token: accessToken,
|
|
34
|
+
oauth_version: '1.0',
|
|
35
|
+
};
|
|
36
|
+
// Collect all params (OAuth + query string + body form params if applicable)
|
|
37
|
+
const allParams = { ...oauthParams };
|
|
38
|
+
// Parse query string params from the URL
|
|
39
|
+
const urlObj = new URL(url);
|
|
40
|
+
urlObj.searchParams.forEach((value, key) => {
|
|
41
|
+
allParams[key] = value;
|
|
42
|
+
});
|
|
43
|
+
// Include extra params (e.g., from form-encoded body)
|
|
44
|
+
if (extraParams) {
|
|
45
|
+
Object.assign(allParams, extraParams);
|
|
46
|
+
}
|
|
47
|
+
// Sort and encode parameters
|
|
48
|
+
const paramString = Object.keys(allParams)
|
|
49
|
+
.sort()
|
|
50
|
+
.map((key) => `${percentEncode(key)}=${percentEncode(allParams[key])}`)
|
|
51
|
+
.join('&');
|
|
52
|
+
// Base URL without query string
|
|
53
|
+
const baseUrl = `${urlObj.origin}${urlObj.pathname}`;
|
|
54
|
+
// Signature base string
|
|
55
|
+
const signatureBaseString = `${method.toUpperCase()}&${percentEncode(baseUrl)}&${percentEncode(paramString)}`;
|
|
56
|
+
// Signing key
|
|
57
|
+
const signingKey = `${percentEncode(consumerSecret)}&${percentEncode(accessTokenSecret)}`;
|
|
58
|
+
// HMAC-SHA1 signature
|
|
59
|
+
const signature = createHmac('sha1', signingKey)
|
|
60
|
+
.update(signatureBaseString)
|
|
61
|
+
.digest('base64');
|
|
62
|
+
oauthParams['oauth_signature'] = signature;
|
|
63
|
+
// Build the header value
|
|
64
|
+
const headerParams = Object.keys(oauthParams)
|
|
65
|
+
.sort()
|
|
66
|
+
.map((key) => `${percentEncode(key)}="${percentEncode(oauthParams[key])}"`)
|
|
67
|
+
.join(', ');
|
|
68
|
+
return `OAuth ${headerParams}`;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Check if OAuth 1.0a credentials are available in context.
|
|
72
|
+
* Returns the credentials object or null.
|
|
73
|
+
*/
|
|
74
|
+
function getOAuth1Credentials(context) {
|
|
75
|
+
const creds = (context.credentials?.twitter || {});
|
|
76
|
+
const consumerKey = creds['consumerKey'];
|
|
77
|
+
const consumerSecret = creds['consumerSecret'];
|
|
78
|
+
const accessToken = creds['accessToken'];
|
|
79
|
+
const accessTokenSecret = creds['accessTokenSecret'];
|
|
80
|
+
if (consumerKey && consumerSecret && accessToken && accessTokenSecret) {
|
|
81
|
+
return { consumerKey, consumerSecret, accessToken, accessTokenSecret };
|
|
82
|
+
}
|
|
83
|
+
return null;
|
|
84
|
+
}
|
|
85
|
+
export function getTwitterAccessToken(context) {
|
|
86
|
+
const twitterCredentials = (context.credentials?.twitter || {});
|
|
87
|
+
return twitterCredentials['accessToken'] || twitterCredentials['bearerToken'] || null;
|
|
88
|
+
}
|
|
89
|
+
export function getTwitterAuthHeaders(context) {
|
|
90
|
+
const accessToken = getTwitterAccessToken(context);
|
|
91
|
+
if (!accessToken) {
|
|
92
|
+
throw new Error('Twitter access token not configured. Please provide context.credentials.twitter.accessToken.');
|
|
93
|
+
}
|
|
94
|
+
return {
|
|
95
|
+
Authorization: `Bearer ${accessToken}`,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
// =============================================================================
|
|
99
|
+
// Twitter API Request
|
|
100
|
+
// =============================================================================
|
|
101
|
+
export async function twitterRequest(context, path, init) {
|
|
102
|
+
const fullUrl = `${TWITTER_API_BASE_URL}${path}`;
|
|
103
|
+
const method = (init.method || 'GET').toUpperCase();
|
|
104
|
+
// Build auth headers — prefer OAuth 1.0a (supports read + write)
|
|
105
|
+
const oauth1 = getOAuth1Credentials(context);
|
|
106
|
+
let authHeaders;
|
|
107
|
+
if (oauth1) {
|
|
108
|
+
const oauthHeader = buildOAuth1Header(method, fullUrl, oauth1.consumerKey, oauth1.consumerSecret, oauth1.accessToken, oauth1.accessTokenSecret);
|
|
109
|
+
authHeaders = { Authorization: oauthHeader };
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
authHeaders = getTwitterAuthHeaders(context);
|
|
113
|
+
}
|
|
114
|
+
const response = await fetchWithRetry(fullUrl, {
|
|
115
|
+
...init,
|
|
116
|
+
headers: {
|
|
117
|
+
...authHeaders,
|
|
118
|
+
...(init.headers || {}),
|
|
119
|
+
},
|
|
120
|
+
}, { maxRetries: 3, backoffMs: 1000, timeoutMs: 30000 });
|
|
121
|
+
if (!response.ok) {
|
|
122
|
+
const errorText = await response.text();
|
|
123
|
+
throw new Error(`Twitter API error: ${response.status} - ${errorText}`);
|
|
124
|
+
}
|
|
125
|
+
if (response.status === 204) {
|
|
126
|
+
return undefined;
|
|
127
|
+
}
|
|
128
|
+
return response.json();
|
|
129
|
+
}
|
|
130
|
+
export async function getAuthenticatedTwitterUserId(context) {
|
|
131
|
+
const response = await twitterRequest(context, '/2/users/me', {
|
|
132
|
+
method: 'GET',
|
|
133
|
+
});
|
|
134
|
+
const userId = response.data?.id;
|
|
135
|
+
if (!userId) {
|
|
136
|
+
throw new Error('Twitter API error: failed to resolve authenticated user id.');
|
|
137
|
+
}
|
|
138
|
+
return userId;
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=twitter-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"twitter-client.js","sourceRoot":"","sources":["../../../src/integrations/social/twitter-client.ts"],"names":[],"mappings":"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"}
|