@jam-nodes/nodes 0.2.7 → 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.
Files changed (132) hide show
  1. package/README.md +147 -0
  2. package/dist/ai/analyze-posts.d.ts +3 -3
  3. package/dist/ai/draft-emails.d.ts +1 -1
  4. package/dist/index.d.ts +363 -8
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +26 -3
  7. package/dist/index.js.map +1 -1
  8. package/dist/integrations/apollo/search-contacts.d.ts +4 -4
  9. package/dist/integrations/dataforseo/keyword-research.d.ts +6 -6
  10. package/dist/integrations/dataforseo/keyword-research.d.ts.map +1 -1
  11. package/dist/integrations/dataforseo/keyword-research.js +2 -8
  12. package/dist/integrations/dataforseo/keyword-research.js.map +1 -1
  13. package/dist/integrations/devto/create-article.d.ts +20 -0
  14. package/dist/integrations/devto/create-article.d.ts.map +1 -0
  15. package/dist/integrations/devto/create-article.js +67 -0
  16. package/dist/integrations/devto/create-article.js.map +1 -0
  17. package/dist/integrations/devto/credentials.d.ts +2 -0
  18. package/dist/integrations/devto/credentials.d.ts.map +1 -0
  19. package/dist/integrations/devto/credentials.js +17 -0
  20. package/dist/integrations/devto/credentials.js.map +1 -0
  21. package/dist/integrations/devto/get-articles.d.ts +21 -0
  22. package/dist/integrations/devto/get-articles.d.ts.map +1 -0
  23. package/dist/integrations/devto/get-articles.js +78 -0
  24. package/dist/integrations/devto/get-articles.js.map +1 -0
  25. package/dist/integrations/devto/index.d.ts +6 -0
  26. package/dist/integrations/devto/index.d.ts.map +1 -0
  27. package/dist/integrations/devto/index.js +6 -0
  28. package/dist/integrations/devto/index.js.map +1 -0
  29. package/dist/integrations/devto/schemas.d.ts +243 -0
  30. package/dist/integrations/devto/schemas.d.ts.map +1 -0
  31. package/dist/integrations/devto/schemas.js +69 -0
  32. package/dist/integrations/devto/schemas.js.map +1 -0
  33. package/dist/integrations/devto/update-article.d.ts +19 -0
  34. package/dist/integrations/devto/update-article.d.ts.map +1 -0
  35. package/dist/integrations/devto/update-article.js +65 -0
  36. package/dist/integrations/devto/update-article.js.map +1 -0
  37. package/dist/integrations/discord/schemas.d.ts +2 -2
  38. package/dist/integrations/discord/send-message.d.ts +1 -1
  39. package/dist/integrations/firecrawl/crawl.d.ts +121 -0
  40. package/dist/integrations/firecrawl/crawl.d.ts.map +1 -0
  41. package/dist/integrations/firecrawl/crawl.js +168 -0
  42. package/dist/integrations/firecrawl/crawl.js.map +1 -0
  43. package/dist/integrations/firecrawl/extract.d.ts +82 -0
  44. package/dist/integrations/firecrawl/extract.d.ts.map +1 -0
  45. package/dist/integrations/firecrawl/extract.js +168 -0
  46. package/dist/integrations/firecrawl/extract.js.map +1 -0
  47. package/dist/integrations/firecrawl/index.d.ts +4 -0
  48. package/dist/integrations/firecrawl/index.d.ts.map +1 -0
  49. package/dist/integrations/firecrawl/index.js +4 -0
  50. package/dist/integrations/firecrawl/index.js.map +1 -0
  51. package/dist/integrations/firecrawl/scrape.d.ts +1208 -0
  52. package/dist/integrations/firecrawl/scrape.d.ts.map +1 -0
  53. package/dist/integrations/firecrawl/scrape.js +254 -0
  54. package/dist/integrations/firecrawl/scrape.js.map +1 -0
  55. package/dist/integrations/index.d.ts +4 -1
  56. package/dist/integrations/index.d.ts.map +1 -1
  57. package/dist/integrations/index.js +7 -1
  58. package/dist/integrations/index.js.map +1 -1
  59. package/dist/integrations/social/credentials.d.ts +2 -0
  60. package/dist/integrations/social/credentials.d.ts.map +1 -0
  61. package/dist/integrations/social/credentials.js +36 -0
  62. package/dist/integrations/social/credentials.js.map +1 -0
  63. package/dist/integrations/social/index.d.ts +8 -0
  64. package/dist/integrations/social/index.d.ts.map +1 -1
  65. package/dist/integrations/social/index.js +8 -0
  66. package/dist/integrations/social/index.js.map +1 -1
  67. package/dist/integrations/social/twitter-client.d.ts +6 -0
  68. package/dist/integrations/social/twitter-client.d.ts.map +1 -0
  69. package/dist/integrations/social/twitter-client.js +140 -0
  70. package/dist/integrations/social/twitter-client.js.map +1 -0
  71. package/dist/integrations/social/twitter-create-tweet.d.ts +61 -0
  72. package/dist/integrations/social/twitter-create-tweet.d.ts.map +1 -0
  73. package/dist/integrations/social/twitter-create-tweet.js +83 -0
  74. package/dist/integrations/social/twitter-create-tweet.js.map +1 -0
  75. package/dist/integrations/social/twitter-delete-tweet.d.ts +23 -0
  76. package/dist/integrations/social/twitter-delete-tweet.d.ts.map +1 -0
  77. package/dist/integrations/social/twitter-delete-tweet.js +41 -0
  78. package/dist/integrations/social/twitter-delete-tweet.js.map +1 -0
  79. package/dist/integrations/social/twitter-get-user-by-username.d.ts +39 -0
  80. package/dist/integrations/social/twitter-get-user-by-username.d.ts.map +1 -0
  81. package/dist/integrations/social/twitter-get-user-by-username.js +56 -0
  82. package/dist/integrations/social/twitter-get-user-by-username.js.map +1 -0
  83. package/dist/integrations/social/twitter-like-tweet.d.ts +23 -0
  84. package/dist/integrations/social/twitter-like-tweet.d.ts.map +1 -0
  85. package/dist/integrations/social/twitter-like-tweet.js +48 -0
  86. package/dist/integrations/social/twitter-like-tweet.js.map +1 -0
  87. package/dist/integrations/social/twitter-retweet.d.ts +23 -0
  88. package/dist/integrations/social/twitter-retweet.d.ts.map +1 -0
  89. package/dist/integrations/social/twitter-retweet.js +48 -0
  90. package/dist/integrations/social/twitter-retweet.js.map +1 -0
  91. package/dist/integrations/social/twitter-search-tweets.d.ts +77 -0
  92. package/dist/integrations/social/twitter-search-tweets.d.ts.map +1 -0
  93. package/dist/integrations/social/twitter-search-tweets.js +76 -0
  94. package/dist/integrations/social/twitter-search-tweets.js.map +1 -0
  95. package/dist/integrations/social/twitter-send-dm.d.ts +39 -0
  96. package/dist/integrations/social/twitter-send-dm.d.ts.map +1 -0
  97. package/dist/integrations/social/twitter-send-dm.js +67 -0
  98. package/dist/integrations/social/twitter-send-dm.js.map +1 -0
  99. package/dist/integrations/wordpress/createPost.d.ts +25 -0
  100. package/dist/integrations/wordpress/createPost.d.ts.map +1 -0
  101. package/dist/integrations/wordpress/createPost.js +67 -0
  102. package/dist/integrations/wordpress/createPost.js.map +1 -0
  103. package/dist/integrations/wordpress/credentials.d.ts +2 -0
  104. package/dist/integrations/wordpress/credentials.d.ts.map +1 -0
  105. package/dist/integrations/wordpress/credentials.js +25 -0
  106. package/dist/integrations/wordpress/credentials.js.map +1 -0
  107. package/dist/integrations/wordpress/getPosts.d.ts +28 -0
  108. package/dist/integrations/wordpress/getPosts.d.ts.map +1 -0
  109. package/dist/integrations/wordpress/getPosts.js +70 -0
  110. package/dist/integrations/wordpress/getPosts.js.map +1 -0
  111. package/dist/integrations/wordpress/index.d.ts +8 -0
  112. package/dist/integrations/wordpress/index.d.ts.map +1 -0
  113. package/dist/integrations/wordpress/index.js +7 -0
  114. package/dist/integrations/wordpress/index.js.map +1 -0
  115. package/dist/integrations/wordpress/schemas.d.ts +411 -0
  116. package/dist/integrations/wordpress/schemas.d.ts.map +1 -0
  117. package/dist/integrations/wordpress/schemas.js +110 -0
  118. package/dist/integrations/wordpress/schemas.js.map +1 -0
  119. package/dist/integrations/wordpress/updatePost.d.ts +21 -0
  120. package/dist/integrations/wordpress/updatePost.d.ts.map +1 -0
  121. package/dist/integrations/wordpress/updatePost.js +59 -0
  122. package/dist/integrations/wordpress/updatePost.js.map +1 -0
  123. package/dist/integrations/wordpress/uploadMedia.d.ts +15 -0
  124. package/dist/integrations/wordpress/uploadMedia.d.ts.map +1 -0
  125. package/dist/integrations/wordpress/uploadMedia.js +56 -0
  126. package/dist/integrations/wordpress/uploadMedia.js.map +1 -0
  127. package/dist/integrations/wordpress/utils.d.ts +15 -0
  128. package/dist/integrations/wordpress/utils.d.ts.map +1 -0
  129. package/dist/integrations/wordpress/utils.js +15 -0
  130. package/dist/integrations/wordpress/utils.js.map +1 -0
  131. package/dist/schemas/ai.d.ts +20 -20
  132. package/package.json +2 -1
@@ -0,0 +1,243 @@
1
+ import { z } from 'zod';
2
+ export declare const DevtoArticleSchema: z.ZodObject<{
3
+ id: z.ZodNumber;
4
+ title: z.ZodString;
5
+ slug: z.ZodString;
6
+ url: z.ZodString;
7
+ published: z.ZodBoolean;
8
+ publishedAt: z.ZodNullable<z.ZodString>;
9
+ tags: z.ZodArray<z.ZodString, "many">;
10
+ description: z.ZodNullable<z.ZodString>;
11
+ readingTimeMinutes: z.ZodNumber;
12
+ }, "strip", z.ZodTypeAny, {
13
+ url: string;
14
+ id: number;
15
+ title: string;
16
+ description: string | null;
17
+ slug: string;
18
+ published: boolean;
19
+ publishedAt: string | null;
20
+ tags: string[];
21
+ readingTimeMinutes: number;
22
+ }, {
23
+ url: string;
24
+ id: number;
25
+ title: string;
26
+ description: string | null;
27
+ slug: string;
28
+ published: boolean;
29
+ publishedAt: string | null;
30
+ tags: string[];
31
+ readingTimeMinutes: number;
32
+ }>;
33
+ export declare const DevtoCreateArticleInputSchema: z.ZodObject<{
34
+ title: z.ZodString;
35
+ bodyMarkdown: z.ZodString;
36
+ published: z.ZodOptional<z.ZodBoolean>;
37
+ tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
38
+ series: z.ZodOptional<z.ZodString>;
39
+ canonicalUrl: z.ZodOptional<z.ZodString>;
40
+ description: z.ZodOptional<z.ZodString>;
41
+ }, "strip", z.ZodTypeAny, {
42
+ title: string;
43
+ bodyMarkdown: string;
44
+ description?: string | undefined;
45
+ published?: boolean | undefined;
46
+ tags?: string[] | undefined;
47
+ series?: string | undefined;
48
+ canonicalUrl?: string | undefined;
49
+ }, {
50
+ title: string;
51
+ bodyMarkdown: string;
52
+ description?: string | undefined;
53
+ published?: boolean | undefined;
54
+ tags?: string[] | undefined;
55
+ series?: string | undefined;
56
+ canonicalUrl?: string | undefined;
57
+ }>;
58
+ export declare const DevtoUpdateArticleInputSchema: z.ZodObject<{
59
+ id: z.ZodNumber;
60
+ title: z.ZodOptional<z.ZodString>;
61
+ bodyMarkdown: z.ZodOptional<z.ZodString>;
62
+ published: z.ZodOptional<z.ZodBoolean>;
63
+ tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
64
+ description: z.ZodOptional<z.ZodString>;
65
+ }, "strip", z.ZodTypeAny, {
66
+ id: number;
67
+ title?: string | undefined;
68
+ description?: string | undefined;
69
+ published?: boolean | undefined;
70
+ tags?: string[] | undefined;
71
+ bodyMarkdown?: string | undefined;
72
+ }, {
73
+ id: number;
74
+ title?: string | undefined;
75
+ description?: string | undefined;
76
+ published?: boolean | undefined;
77
+ tags?: string[] | undefined;
78
+ bodyMarkdown?: string | undefined;
79
+ }>;
80
+ export declare const DevtoGetArticlesInputSchema: z.ZodObject<{
81
+ username: z.ZodOptional<z.ZodString>;
82
+ page: z.ZodOptional<z.ZodNumber>;
83
+ perPage: z.ZodOptional<z.ZodNumber>;
84
+ }, "strip", z.ZodTypeAny, {
85
+ username?: string | undefined;
86
+ page?: number | undefined;
87
+ perPage?: number | undefined;
88
+ }, {
89
+ username?: string | undefined;
90
+ page?: number | undefined;
91
+ perPage?: number | undefined;
92
+ }>;
93
+ export declare const DevtoCreateArticleOutputSchema: z.ZodObject<{
94
+ id: z.ZodNumber;
95
+ title: z.ZodString;
96
+ slug: z.ZodString;
97
+ url: z.ZodString;
98
+ published: z.ZodBoolean;
99
+ publishedAt: z.ZodNullable<z.ZodString>;
100
+ tags: z.ZodArray<z.ZodString, "many">;
101
+ description: z.ZodNullable<z.ZodString>;
102
+ readingTimeMinutes: z.ZodNumber;
103
+ }, "strip", z.ZodTypeAny, {
104
+ url: string;
105
+ id: number;
106
+ title: string;
107
+ description: string | null;
108
+ slug: string;
109
+ published: boolean;
110
+ publishedAt: string | null;
111
+ tags: string[];
112
+ readingTimeMinutes: number;
113
+ }, {
114
+ url: string;
115
+ id: number;
116
+ title: string;
117
+ description: string | null;
118
+ slug: string;
119
+ published: boolean;
120
+ publishedAt: string | null;
121
+ tags: string[];
122
+ readingTimeMinutes: number;
123
+ }>;
124
+ export declare const DevtoUpdateArticleOutputSchema: z.ZodObject<{
125
+ id: z.ZodNumber;
126
+ title: z.ZodString;
127
+ slug: z.ZodString;
128
+ url: z.ZodString;
129
+ published: z.ZodBoolean;
130
+ publishedAt: z.ZodNullable<z.ZodString>;
131
+ tags: z.ZodArray<z.ZodString, "many">;
132
+ description: z.ZodNullable<z.ZodString>;
133
+ readingTimeMinutes: z.ZodNumber;
134
+ }, "strip", z.ZodTypeAny, {
135
+ url: string;
136
+ id: number;
137
+ title: string;
138
+ description: string | null;
139
+ slug: string;
140
+ published: boolean;
141
+ publishedAt: string | null;
142
+ tags: string[];
143
+ readingTimeMinutes: number;
144
+ }, {
145
+ url: string;
146
+ id: number;
147
+ title: string;
148
+ description: string | null;
149
+ slug: string;
150
+ published: boolean;
151
+ publishedAt: string | null;
152
+ tags: string[];
153
+ readingTimeMinutes: number;
154
+ }>;
155
+ export declare const DevtoGetArticlesOutputSchema: z.ZodObject<{
156
+ articles: z.ZodArray<z.ZodObject<{
157
+ id: z.ZodNumber;
158
+ title: z.ZodString;
159
+ slug: z.ZodString;
160
+ url: z.ZodString;
161
+ published: z.ZodBoolean;
162
+ publishedAt: z.ZodNullable<z.ZodString>;
163
+ tags: z.ZodArray<z.ZodString, "many">;
164
+ description: z.ZodNullable<z.ZodString>;
165
+ readingTimeMinutes: z.ZodNumber;
166
+ }, "strip", z.ZodTypeAny, {
167
+ url: string;
168
+ id: number;
169
+ title: string;
170
+ description: string | null;
171
+ slug: string;
172
+ published: boolean;
173
+ publishedAt: string | null;
174
+ tags: string[];
175
+ readingTimeMinutes: number;
176
+ }, {
177
+ url: string;
178
+ id: number;
179
+ title: string;
180
+ description: string | null;
181
+ slug: string;
182
+ published: boolean;
183
+ publishedAt: string | null;
184
+ tags: string[];
185
+ readingTimeMinutes: number;
186
+ }>, "many">;
187
+ page: z.ZodNumber;
188
+ perPage: z.ZodNumber;
189
+ count: z.ZodNumber;
190
+ }, "strip", z.ZodTypeAny, {
191
+ count: number;
192
+ page: number;
193
+ perPage: number;
194
+ articles: {
195
+ url: string;
196
+ id: number;
197
+ title: string;
198
+ description: string | null;
199
+ slug: string;
200
+ published: boolean;
201
+ publishedAt: string | null;
202
+ tags: string[];
203
+ readingTimeMinutes: number;
204
+ }[];
205
+ }, {
206
+ count: number;
207
+ page: number;
208
+ perPage: number;
209
+ articles: {
210
+ url: string;
211
+ id: number;
212
+ title: string;
213
+ description: string | null;
214
+ slug: string;
215
+ published: boolean;
216
+ publishedAt: string | null;
217
+ tags: string[];
218
+ readingTimeMinutes: number;
219
+ }[];
220
+ }>;
221
+ export interface DevtoApiArticle {
222
+ id: number;
223
+ title: string;
224
+ slug: string;
225
+ url: string;
226
+ published: boolean;
227
+ published_at: string | null;
228
+ tag_list: string[] | string;
229
+ description: string | null;
230
+ reading_time_minutes: number;
231
+ }
232
+ /**
233
+ * Normalize a raw Dev.to API article response into the minimal output shape.
234
+ */
235
+ export declare function normalizeDevtoArticle(raw: DevtoApiArticle): DevtoArticle;
236
+ export type DevtoArticle = z.infer<typeof DevtoArticleSchema>;
237
+ export type DevtoCreateArticleInput = z.infer<typeof DevtoCreateArticleInputSchema>;
238
+ export type DevtoCreateArticleOutput = z.infer<typeof DevtoCreateArticleOutputSchema>;
239
+ export type DevtoUpdateArticleInput = z.infer<typeof DevtoUpdateArticleInputSchema>;
240
+ export type DevtoUpdateArticleOutput = z.infer<typeof DevtoUpdateArticleOutputSchema>;
241
+ export type DevtoGetArticlesInput = z.infer<typeof DevtoGetArticlesInputSchema>;
242
+ export type DevtoGetArticlesOutput = z.infer<typeof DevtoGetArticlesOutputSchema>;
243
+ //# sourceMappingURL=schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../../src/integrations/devto/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAU7B,CAAA;AAIF,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;EAQxC,CAAA;AAEF,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;EAOxC,CAAA;AAEF,eAAO,MAAM,2BAA2B;;;;;;;;;;;;EAItC,CAAA;AAIF,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAqB,CAAA;AAEhE,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAqB,CAAA;AAEhE,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAKvC,CAAA;AAGF,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,EAAE,OAAO,CAAA;IAClB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAAA;IAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,oBAAoB,EAAE,MAAM,CAAA;CAC7B;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,eAAe,GAAG,YAAY,CAmBxE;AAGD,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAC7D,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAC3C,OAAO,6BAA6B,CACrC,CAAA;AACD,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAC5C,OAAO,8BAA8B,CACtC,CAAA;AACD,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAC3C,OAAO,6BAA6B,CACrC,CAAA;AACD,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAC5C,OAAO,8BAA8B,CACtC,CAAA;AACD,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAA;AAC/E,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAC1C,OAAO,4BAA4B,CACpC,CAAA"}
@@ -0,0 +1,69 @@
1
+ import { z } from 'zod';
2
+ // Normalized article shape shared across create/update/get
3
+ export const DevtoArticleSchema = z.object({
4
+ id: z.number(),
5
+ title: z.string(),
6
+ slug: z.string(),
7
+ url: z.string(),
8
+ published: z.boolean(),
9
+ publishedAt: z.string().nullable(),
10
+ tags: z.array(z.string()),
11
+ description: z.string().nullable(),
12
+ readingTimeMinutes: z.number(),
13
+ });
14
+ // Input schemas
15
+ export const DevtoCreateArticleInputSchema = z.object({
16
+ title: z.string().min(1),
17
+ bodyMarkdown: z.string().min(1),
18
+ published: z.boolean().optional(),
19
+ tags: z.array(z.string()).optional(),
20
+ series: z.string().optional(),
21
+ canonicalUrl: z.string().url().optional(),
22
+ description: z.string().optional(),
23
+ });
24
+ export const DevtoUpdateArticleInputSchema = z.object({
25
+ id: z.number().int().positive(),
26
+ title: z.string().min(1).optional(),
27
+ bodyMarkdown: z.string().min(1).optional(),
28
+ published: z.boolean().optional(),
29
+ tags: z.array(z.string()).optional(),
30
+ description: z.string().optional(),
31
+ });
32
+ export const DevtoGetArticlesInputSchema = z.object({
33
+ username: z.string().optional(),
34
+ page: z.number().int().positive().optional(),
35
+ perPage: z.number().int().positive().max(1000).optional(),
36
+ });
37
+ // Output schemas
38
+ export const DevtoCreateArticleOutputSchema = DevtoArticleSchema;
39
+ export const DevtoUpdateArticleOutputSchema = DevtoArticleSchema;
40
+ export const DevtoGetArticlesOutputSchema = z.object({
41
+ articles: z.array(DevtoArticleSchema),
42
+ page: z.number(),
43
+ perPage: z.number(),
44
+ count: z.number(),
45
+ });
46
+ /**
47
+ * Normalize a raw Dev.to API article response into the minimal output shape.
48
+ */
49
+ export function normalizeDevtoArticle(raw) {
50
+ return {
51
+ id: raw.id,
52
+ title: raw.title,
53
+ slug: raw.slug,
54
+ url: raw.url,
55
+ published: raw.published,
56
+ publishedAt: raw.published_at ?? null,
57
+ tags: Array.isArray(raw.tag_list)
58
+ ? raw.tag_list
59
+ : raw.tag_list
60
+ ? raw.tag_list
61
+ .split(',')
62
+ .map((t) => t.trim())
63
+ .filter(Boolean)
64
+ : [],
65
+ description: raw.description ?? null,
66
+ readingTimeMinutes: raw.reading_time_minutes ?? 0,
67
+ };
68
+ }
69
+ //# sourceMappingURL=schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../../src/integrations/devto/schemas.ts"],"names":[],"mappings":"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"}
@@ -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;
@@ -0,0 +1,121 @@
1
+ import { z } from 'zod';
2
+ export declare const FirecrawlCrawlInputSchema: z.ZodObject<{
3
+ /** The base URL to start crawling from */
4
+ url: z.ZodString;
5
+ /** URL pathname regex patterns to exclude from crawling */
6
+ excludePaths: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
7
+ /** URL pathname regex patterns to include in crawling */
8
+ includePaths: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
9
+ /** Maximum depth based on discovery order */
10
+ maxDiscoveryDepth: z.ZodOptional<z.ZodNumber>;
11
+ /** Maximum number of pages to crawl */
12
+ limit: z.ZodDefault<z.ZodNumber>;
13
+ }, "strip", z.ZodTypeAny, {
14
+ url: string;
15
+ limit: number;
16
+ excludePaths?: string[] | undefined;
17
+ includePaths?: string[] | undefined;
18
+ maxDiscoveryDepth?: number | undefined;
19
+ }, {
20
+ url: string;
21
+ limit?: number | undefined;
22
+ excludePaths?: string[] | undefined;
23
+ includePaths?: string[] | undefined;
24
+ maxDiscoveryDepth?: number | undefined;
25
+ }>;
26
+ export type FirecrawlCrawlInput = z.infer<typeof FirecrawlCrawlInputSchema>;
27
+ export declare const FirecrawlCrawlOutputSchema: z.ZodObject<{
28
+ status: z.ZodEnum<["completed", "failed"]>;
29
+ total: z.ZodNumber;
30
+ completed: z.ZodNumber;
31
+ creditsUsed: z.ZodNumber;
32
+ expiresAt: z.ZodString;
33
+ data: z.ZodArray<z.ZodObject<{
34
+ markdown: z.ZodOptional<z.ZodString>;
35
+ html: z.ZodOptional<z.ZodNullable<z.ZodString>>;
36
+ rawHtml: z.ZodOptional<z.ZodNullable<z.ZodString>>;
37
+ links: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
38
+ screenshot: z.ZodOptional<z.ZodNullable<z.ZodString>>;
39
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
40
+ }, "strip", z.ZodTypeAny, {
41
+ links?: string[] | undefined;
42
+ markdown?: string | undefined;
43
+ html?: string | null | undefined;
44
+ rawHtml?: string | null | undefined;
45
+ screenshot?: string | null | undefined;
46
+ metadata?: Record<string, unknown> | undefined;
47
+ }, {
48
+ links?: string[] | undefined;
49
+ markdown?: string | undefined;
50
+ html?: string | null | undefined;
51
+ rawHtml?: string | null | undefined;
52
+ screenshot?: string | null | undefined;
53
+ metadata?: Record<string, unknown> | undefined;
54
+ }>, "many">;
55
+ }, "strip", z.ZodTypeAny, {
56
+ status: "completed" | "failed";
57
+ completed: number;
58
+ expiresAt: string;
59
+ data: {
60
+ links?: string[] | undefined;
61
+ markdown?: string | undefined;
62
+ html?: string | null | undefined;
63
+ rawHtml?: string | null | undefined;
64
+ screenshot?: string | null | undefined;
65
+ metadata?: Record<string, unknown> | undefined;
66
+ }[];
67
+ total: number;
68
+ creditsUsed: number;
69
+ }, {
70
+ status: "completed" | "failed";
71
+ completed: number;
72
+ expiresAt: string;
73
+ data: {
74
+ links?: string[] | undefined;
75
+ markdown?: string | undefined;
76
+ html?: string | null | undefined;
77
+ rawHtml?: string | null | undefined;
78
+ screenshot?: string | null | undefined;
79
+ metadata?: Record<string, unknown> | undefined;
80
+ }[];
81
+ total: number;
82
+ creditsUsed: number;
83
+ }>;
84
+ export type FirecrawlCrawlOutput = z.infer<typeof FirecrawlCrawlOutputSchema>;
85
+ /**
86
+ * Firecrawl Crawl Node
87
+ *
88
+ * Crawls a website starting from a base URL, following links and scraping
89
+ * each discovered page. Starts a crawl job then polls until completion.
90
+ *
91
+ * @example
92
+ * ```typescript
93
+ * const result = await firecrawlCrawlNode.executor({
94
+ * url: 'https://example.com',
95
+ * limit: 50,
96
+ * includePaths: ['/docs/.*'],
97
+ * }, context);
98
+ * ```
99
+ */
100
+ export declare const firecrawlCrawlNode: import("@jam-nodes/core").NodeDefinition<{
101
+ url: string;
102
+ limit?: number | undefined;
103
+ excludePaths?: string[] | undefined;
104
+ includePaths?: string[] | undefined;
105
+ maxDiscoveryDepth?: number | undefined;
106
+ }, {
107
+ status: "completed" | "failed";
108
+ completed: number;
109
+ expiresAt: string;
110
+ data: {
111
+ links?: string[] | undefined;
112
+ markdown?: string | undefined;
113
+ html?: string | null | undefined;
114
+ rawHtml?: string | null | undefined;
115
+ screenshot?: string | null | undefined;
116
+ metadata?: Record<string, unknown> | undefined;
117
+ }[];
118
+ total: number;
119
+ creditsUsed: number;
120
+ }>;
121
+ //# sourceMappingURL=crawl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crawl.d.ts","sourceRoot":"","sources":["../../../src/integrations/firecrawl/crawl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAuDxB,eAAO,MAAM,yBAAyB;IACpC,0CAA0C;;IAE1C,2DAA2D;;IAE3D,yDAAyD;;IAEzD,6CAA6C;;IAE7C,uCAAuC;;;;;;;;;;;;;;EAEvC,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE5E,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAcrC,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAwF9E;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;EA8D7B,CAAC"}