@jam-nodes/nodes 0.2.5 → 0.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +88 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -2
- package/dist/index.js.map +1 -1
- package/dist/integrations/dataforseo/seo-audit.d.ts.map +1 -1
- package/dist/integrations/dataforseo/seo-audit.js +4 -1
- package/dist/integrations/dataforseo/seo-audit.js.map +1 -1
- package/dist/integrations/discord/create-thread.d.ts +13 -0
- package/dist/integrations/discord/create-thread.d.ts.map +1 -0
- package/dist/integrations/discord/create-thread.js +118 -0
- package/dist/integrations/discord/create-thread.js.map +1 -0
- package/dist/integrations/discord/credentials.d.ts +4 -0
- package/dist/integrations/discord/credentials.d.ts.map +1 -0
- package/dist/integrations/discord/credentials.js +26 -0
- package/dist/integrations/discord/credentials.js.map +1 -0
- package/dist/integrations/discord/index.d.ts +6 -0
- package/dist/integrations/discord/index.d.ts.map +1 -0
- package/dist/integrations/discord/index.js +6 -0
- package/dist/integrations/discord/index.js.map +1 -0
- package/dist/integrations/discord/schemas.d.ts +556 -0
- package/dist/integrations/discord/schemas.d.ts.map +1 -0
- package/dist/integrations/discord/schemas.js +77 -0
- package/dist/integrations/discord/schemas.js.map +1 -0
- package/dist/integrations/discord/send-message.d.ts +42 -0
- package/dist/integrations/discord/send-message.d.ts.map +1 -0
- package/dist/integrations/discord/send-message.js +79 -0
- package/dist/integrations/discord/send-message.js.map +1 -0
- package/dist/integrations/discord/send-webhook.d.ts +39 -0
- package/dist/integrations/discord/send-webhook.d.ts.map +1 -0
- package/dist/integrations/discord/send-webhook.js +77 -0
- package/dist/integrations/discord/send-webhook.js.map +1 -0
- package/dist/integrations/index.d.ts +1 -0
- package/dist/integrations/index.d.ts.map +1 -1
- package/dist/integrations/index.js +2 -0
- package/dist/integrations/index.js.map +1 -1
- package/dist/integrations/openai/sora-video.d.ts +3 -3
- package/dist/transform/filter.d.ts.map +1 -1
- package/dist/transform/filter.js +1 -18
- package/dist/transform/filter.js.map +1 -1
- package/dist/transform/map.d.ts.map +1 -1
- package/dist/transform/map.js +1 -26
- package/dist/transform/map.js.map +1 -1
- package/dist/utils/http.d.ts.map +1 -1
- package/dist/utils/http.js +3 -0
- package/dist/utils/http.js.map +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/resolve-path.d.ts +20 -0
- package/dist/utils/resolve-path.d.ts.map +1 -0
- package/dist/utils/resolve-path.js +58 -0
- package/dist/utils/resolve-path.js.map +1 -0
- package/package.json +4 -1
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { defineNode } from '@jam-nodes/core';
|
|
2
|
+
import { fetchWithRetry } from '../../utils/http.js';
|
|
3
|
+
import { DiscordSendMessageInputSchema, DiscordSendMessageOutputSchema, } from './schemas.js';
|
|
4
|
+
const DISCORD_API_BASE = 'https://discord.com/api/v10';
|
|
5
|
+
async function readDiscordError(response) {
|
|
6
|
+
const text = await response.text();
|
|
7
|
+
if (!text)
|
|
8
|
+
return `${response.status} ${response.statusText}`;
|
|
9
|
+
try {
|
|
10
|
+
const parsed = JSON.parse(text);
|
|
11
|
+
return parsed.message || text;
|
|
12
|
+
}
|
|
13
|
+
catch {
|
|
14
|
+
return text;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
export { DiscordSendMessageInputSchema, DiscordSendMessageOutputSchema, } from './schemas.js';
|
|
18
|
+
export const discordSendMessageNode = defineNode({
|
|
19
|
+
type: 'discord_send_message',
|
|
20
|
+
name: 'Discord Send Message',
|
|
21
|
+
description: 'Send a message to a Discord channel with optional embeds',
|
|
22
|
+
category: 'integration',
|
|
23
|
+
inputSchema: DiscordSendMessageInputSchema,
|
|
24
|
+
outputSchema: DiscordSendMessageOutputSchema,
|
|
25
|
+
estimatedDuration: 3,
|
|
26
|
+
capabilities: {
|
|
27
|
+
supportsRerun: true,
|
|
28
|
+
},
|
|
29
|
+
executor: async (input, context) => {
|
|
30
|
+
try {
|
|
31
|
+
const botToken = context.credentials?.discordBot?.botToken;
|
|
32
|
+
if (!botToken) {
|
|
33
|
+
return {
|
|
34
|
+
success: false,
|
|
35
|
+
error: 'Discord bot token not configured. Please provide context.credentials.discordBot.botToken.',
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
const response = await fetchWithRetry(`${DISCORD_API_BASE}/channels/${input.channelId}/messages`, {
|
|
39
|
+
method: 'POST',
|
|
40
|
+
headers: {
|
|
41
|
+
Authorization: `Bot ${botToken}`,
|
|
42
|
+
'Content-Type': 'application/json',
|
|
43
|
+
},
|
|
44
|
+
body: JSON.stringify({
|
|
45
|
+
content: input.content,
|
|
46
|
+
embeds: input.embeds ?? [],
|
|
47
|
+
}),
|
|
48
|
+
}, { maxRetries: 3, backoffMs: 1000, timeoutMs: 30000 });
|
|
49
|
+
if (!response.ok) {
|
|
50
|
+
return {
|
|
51
|
+
success: false,
|
|
52
|
+
error: `Discord API error: ${await readDiscordError(response)}`,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
const data = (await response.json());
|
|
56
|
+
const output = {
|
|
57
|
+
messageId: data.id,
|
|
58
|
+
channelId: data.channel_id,
|
|
59
|
+
guildId: data.guild_id ?? null,
|
|
60
|
+
url: data.guild_id
|
|
61
|
+
? `https://discord.com/channels/${data.guild_id}/${data.channel_id}/${data.id}`
|
|
62
|
+
: `https://discord.com/channels/@me/${data.channel_id}/${data.id}`,
|
|
63
|
+
content: data.content ?? null,
|
|
64
|
+
embedsCount: data.embeds?.length ?? 0,
|
|
65
|
+
};
|
|
66
|
+
return {
|
|
67
|
+
success: true,
|
|
68
|
+
output,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
return {
|
|
73
|
+
success: false,
|
|
74
|
+
error: error instanceof Error ? error.message : 'Failed to send Discord message',
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
});
|
|
79
|
+
//# sourceMappingURL=send-message.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"send-message.js","sourceRoot":"","sources":["../../../src/integrations/discord/send-message.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export { DiscordSendWebhookInputSchema, DiscordSendWebhookOutputSchema, type DiscordSendWebhookInput, type DiscordSendWebhookOutput, } from './schemas.js';
|
|
2
|
+
export declare const discordSendWebhookNode: import("@jam-nodes/core").NodeDefinition<{
|
|
3
|
+
content: string;
|
|
4
|
+
embeds?: {
|
|
5
|
+
url?: string | undefined;
|
|
6
|
+
title?: string | undefined;
|
|
7
|
+
description?: string | undefined;
|
|
8
|
+
timestamp?: string | undefined;
|
|
9
|
+
color?: number | undefined;
|
|
10
|
+
footer?: {
|
|
11
|
+
text: string;
|
|
12
|
+
icon_url?: string | undefined;
|
|
13
|
+
} | undefined;
|
|
14
|
+
image?: {
|
|
15
|
+
url: string;
|
|
16
|
+
} | undefined;
|
|
17
|
+
thumbnail?: {
|
|
18
|
+
url: string;
|
|
19
|
+
} | undefined;
|
|
20
|
+
author?: {
|
|
21
|
+
name: string;
|
|
22
|
+
url?: string | undefined;
|
|
23
|
+
icon_url?: string | undefined;
|
|
24
|
+
} | undefined;
|
|
25
|
+
fields?: {
|
|
26
|
+
value: string;
|
|
27
|
+
name: string;
|
|
28
|
+
inline?: boolean | undefined;
|
|
29
|
+
}[] | undefined;
|
|
30
|
+
}[] | undefined;
|
|
31
|
+
webhookUrl?: string | undefined;
|
|
32
|
+
}, {
|
|
33
|
+
content: string | null;
|
|
34
|
+
channelId: string;
|
|
35
|
+
messageId: string;
|
|
36
|
+
guildId: string | null;
|
|
37
|
+
embedsCount: number;
|
|
38
|
+
}>;
|
|
39
|
+
//# sourceMappingURL=send-webhook.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"send-webhook.d.ts","sourceRoot":"","sources":["../../../src/integrations/discord/send-webhook.ts"],"names":[],"mappings":"AA4BA,OAAO,EACL,6BAA6B,EAC7B,8BAA8B,EAC9B,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,GAC9B,MAAM,cAAc,CAAC;AAEtB,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqEjC,CAAC"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { defineNode } from '@jam-nodes/core';
|
|
2
|
+
import { fetchWithRetry } from '../../utils/http.js';
|
|
3
|
+
import { DiscordSendWebhookInputSchema, DiscordSendWebhookOutputSchema, } from './schemas.js';
|
|
4
|
+
async function readDiscordError(response) {
|
|
5
|
+
const text = await response.text();
|
|
6
|
+
if (!text)
|
|
7
|
+
return `${response.status} ${response.statusText}`;
|
|
8
|
+
try {
|
|
9
|
+
const parsed = JSON.parse(text);
|
|
10
|
+
return parsed.message || text;
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
return text;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
export { DiscordSendWebhookInputSchema, DiscordSendWebhookOutputSchema, } from './schemas.js';
|
|
17
|
+
export const discordSendWebhookNode = defineNode({
|
|
18
|
+
type: 'discord_send_webhook',
|
|
19
|
+
name: 'Discord Send Webhook',
|
|
20
|
+
description: 'Send a Discord webhook message with optional embeds',
|
|
21
|
+
category: 'integration',
|
|
22
|
+
inputSchema: DiscordSendWebhookInputSchema,
|
|
23
|
+
outputSchema: DiscordSendWebhookOutputSchema,
|
|
24
|
+
estimatedDuration: 2,
|
|
25
|
+
capabilities: {
|
|
26
|
+
supportsRerun: true,
|
|
27
|
+
},
|
|
28
|
+
executor: async (input, context) => {
|
|
29
|
+
try {
|
|
30
|
+
const webhookUrl = input.webhookUrl || context.credentials?.discordWebhook?.webhookUrl;
|
|
31
|
+
if (!webhookUrl) {
|
|
32
|
+
return {
|
|
33
|
+
success: false,
|
|
34
|
+
error: 'Discord webhook URL not configured. Provide input.webhookUrl or context.credentials.discordWebhook.webhookUrl.',
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
const requestUrl = webhookUrl.includes('?')
|
|
38
|
+
? `${webhookUrl}&wait=true`
|
|
39
|
+
: `${webhookUrl}?wait=true`;
|
|
40
|
+
const response = await fetchWithRetry(requestUrl, {
|
|
41
|
+
method: 'POST',
|
|
42
|
+
headers: {
|
|
43
|
+
'Content-Type': 'application/json',
|
|
44
|
+
},
|
|
45
|
+
body: JSON.stringify({
|
|
46
|
+
content: input.content,
|
|
47
|
+
embeds: input.embeds ?? [],
|
|
48
|
+
}),
|
|
49
|
+
}, { maxRetries: 3, backoffMs: 1000, timeoutMs: 30000 });
|
|
50
|
+
if (!response.ok) {
|
|
51
|
+
return {
|
|
52
|
+
success: false,
|
|
53
|
+
error: `Discord webhook error: ${await readDiscordError(response)}`,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
const data = (await response.json());
|
|
57
|
+
const output = {
|
|
58
|
+
messageId: data.id,
|
|
59
|
+
channelId: data.channel_id,
|
|
60
|
+
guildId: data.guild_id ?? null,
|
|
61
|
+
content: data.content ?? null,
|
|
62
|
+
embedsCount: data.embeds?.length ?? 0,
|
|
63
|
+
};
|
|
64
|
+
return {
|
|
65
|
+
success: true,
|
|
66
|
+
output,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
return {
|
|
71
|
+
success: false,
|
|
72
|
+
error: error instanceof Error ? error.message : 'Failed to send Discord webhook',
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
});
|
|
77
|
+
//# sourceMappingURL=send-webhook.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"send-webhook.js","sourceRoot":"","sources":["../../../src/integrations/discord/send-webhook.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,4 +2,5 @@ export { redditMonitorNode, RedditMonitorInputSchema, RedditMonitorOutputSchema,
|
|
|
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
|
+
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';
|
|
5
6
|
//# 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,CAAC;AAG3B,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,qBAAqB,EACrB,KAAK,cAAc,EACnB,KAAK,eAAe,GACrB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,sBAAsB,EACtB,6BAA6B,EAC7B,8BAA8B,EAC9B,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,YAAY,EACZ,mBAAmB,EACnB,oBAAoB,EACpB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,QAAQ,GACd,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,kBAAkB,EAClB,yBAAyB,EACzB,0BAA0B,EAC1B,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,GAC1B,MAAM,mBAAmB,CAAC"}
|
|
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,CAAC;AAG3B,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,qBAAqB,EACrB,KAAK,cAAc,EACnB,KAAK,eAAe,GACrB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,sBAAsB,EACtB,6BAA6B,EAC7B,8BAA8B,EAC9B,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,YAAY,EACZ,mBAAmB,EACnB,oBAAoB,EACpB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,QAAQ,GACd,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,kBAAkB,EAClB,yBAAyB,EACzB,0BAA0B,EAC1B,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,GAC1B,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,sBAAsB,EACtB,6BAA6B,EAC7B,8BAA8B,EAC9B,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,sBAAsB,EACtB,6BAA6B,EAC7B,8BAA8B,EAC9B,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,uBAAuB,EACvB,8BAA8B,EAC9B,+BAA+B,EAC/B,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,kBAAkB,EAClB,KAAK,YAAY,EACjB,oBAAoB,EACpB,wBAAwB,GACzB,MAAM,oBAAoB,CAAC"}
|
|
@@ -6,4 +6,6 @@ export { soraVideoNode, SoraVideoInputSchema, SoraVideoOutputSchema, } from './o
|
|
|
6
6
|
export { seoKeywordResearchNode, SeoKeywordResearchInputSchema, SeoKeywordResearchOutputSchema, seoAuditNode, SeoAuditInputSchema, SeoAuditOutputSchema, } from './dataforseo/index.js';
|
|
7
7
|
// Apollo integrations
|
|
8
8
|
export { searchContactsNode, SearchContactsInputSchema, SearchContactsOutputSchema, } from './apollo/index.js';
|
|
9
|
+
// Discord integrations
|
|
10
|
+
export { discordSendMessageNode, DiscordSendMessageInputSchema, DiscordSendMessageOutputSchema, discordSendWebhookNode, DiscordSendWebhookInputSchema, DiscordSendWebhookOutputSchema, discordCreateThreadNode, DiscordCreateThreadInputSchema, DiscordCreateThreadOutputSchema, DiscordEmbedSchema, discordBotCredential, discordWebhookCredential, } from './discord/index.js';
|
|
9
11
|
//# 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,CAAC;AAE3B,sBAAsB;AACtB,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,qBAAqB,GAGtB,MAAM,mBAAmB,CAAC;AAE3B,0BAA0B;AAC1B,OAAO,EACL,sBAAsB,EACtB,6BAA6B,EAC7B,8BAA8B,EAG9B,YAAY,EACZ,mBAAmB,EACnB,oBAAoB,GAIrB,MAAM,uBAAuB,CAAC;AAE/B,sBAAsB;AACtB,OAAO,EACL,kBAAkB,EAClB,yBAAyB,EACzB,0BAA0B,GAG3B,MAAM,mBAAmB,CAAC"}
|
|
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,CAAC;AAE3B,sBAAsB;AACtB,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,qBAAqB,GAGtB,MAAM,mBAAmB,CAAC;AAE3B,0BAA0B;AAC1B,OAAO,EACL,sBAAsB,EACtB,6BAA6B,EAC7B,8BAA8B,EAG9B,YAAY,EACZ,mBAAmB,EACnB,oBAAoB,GAIrB,MAAM,uBAAuB,CAAC;AAE/B,sBAAsB;AACtB,OAAO,EACL,kBAAkB,EAClB,yBAAyB,EACzB,0BAA0B,GAG3B,MAAM,mBAAmB,CAAC;AAE3B,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,CAAC"}
|
|
@@ -11,12 +11,12 @@ export declare const SoraVideoInputSchema: z.ZodObject<{
|
|
|
11
11
|
}, "strip", z.ZodTypeAny, {
|
|
12
12
|
prompt: string;
|
|
13
13
|
model: "sora-2" | "sora-2-pro";
|
|
14
|
-
seconds:
|
|
14
|
+
seconds: 4 | 8 | 12;
|
|
15
15
|
size: "720x1280" | "1280x720" | "1024x1792" | "1792x1024";
|
|
16
16
|
}, {
|
|
17
17
|
prompt: string;
|
|
18
18
|
model?: "sora-2" | "sora-2-pro" | undefined;
|
|
19
|
-
seconds?:
|
|
19
|
+
seconds?: 4 | 8 | 12 | undefined;
|
|
20
20
|
size?: "720x1280" | "1280x720" | "1024x1792" | "1792x1024" | undefined;
|
|
21
21
|
}>;
|
|
22
22
|
export type SoraVideoInput = z.infer<typeof SoraVideoInputSchema>;
|
|
@@ -75,7 +75,7 @@ export type SoraVideoOutput = z.infer<typeof SoraVideoOutputSchema>;
|
|
|
75
75
|
export declare const soraVideoNode: import("@jam-nodes/core").NodeDefinition<{
|
|
76
76
|
prompt: string;
|
|
77
77
|
model?: "sora-2" | "sora-2-pro" | undefined;
|
|
78
|
-
seconds?:
|
|
78
|
+
seconds?: 4 | 8 | 12 | undefined;
|
|
79
79
|
size?: "720x1280" | "1280x720" | "1024x1792" | "1792x1024" | undefined;
|
|
80
80
|
}, {
|
|
81
81
|
video: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../src/transform/filter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../src/transform/filter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB;;GAEG;AACH,eAAO,MAAM,oBAAoB,sHAS/B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE;;GAEG;AACH,eAAO,MAAM,iBAAiB;IAC5B,+BAA+B;;IAE/B,4CAA4C;;IAE5C,sBAAsB;;IAEtB,+BAA+B;;;;;;;;;;;;EAE/B,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;EAI7B,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AA4C9D;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,UAAU;;;;;;;;;EAiCrB,CAAC"}
|
package/dist/transform/filter.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { defineNode } from '@jam-nodes/core';
|
|
3
|
+
import { resolvePath } from '../utils/resolve-path.js';
|
|
3
4
|
/**
|
|
4
5
|
* Filter operator schema
|
|
5
6
|
*/
|
|
@@ -34,24 +35,6 @@ export const FilterOutputSchema = z.object({
|
|
|
34
35
|
count: z.number(),
|
|
35
36
|
originalCount: z.number(),
|
|
36
37
|
});
|
|
37
|
-
/**
|
|
38
|
-
* Resolve a nested path on an object
|
|
39
|
-
*/
|
|
40
|
-
function resolvePath(obj, path) {
|
|
41
|
-
// Empty path means use the item itself
|
|
42
|
-
if (!path) {
|
|
43
|
-
return obj;
|
|
44
|
-
}
|
|
45
|
-
const parts = path.split('.');
|
|
46
|
-
let current = obj;
|
|
47
|
-
for (const part of parts) {
|
|
48
|
-
if (current === null || current === undefined) {
|
|
49
|
-
return undefined;
|
|
50
|
-
}
|
|
51
|
-
current = current[part];
|
|
52
|
-
}
|
|
53
|
-
return current;
|
|
54
|
-
}
|
|
55
38
|
/**
|
|
56
39
|
* Evaluate filter condition
|
|
57
40
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter.js","sourceRoot":"","sources":["../../src/transform/filter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"filter.js","sourceRoot":"","sources":["../../src/transform/filter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map.d.ts","sourceRoot":"","sources":["../../src/transform/map.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"map.d.ts","sourceRoot":"","sources":["../../src/transform/map.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB;;GAEG;AACH,eAAO,MAAM,cAAc;IACzB,kCAAkC;;IAElC,6DAA6D;;;;;;;;EAE7D,CAAC;AAEH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAEtD;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;;;;EAG1B,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,OAAO;;;;;;EA6BlB,CAAC"}
|
package/dist/transform/map.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { defineNode } from '@jam-nodes/core';
|
|
3
|
+
import { resolvePath } from '../utils/resolve-path.js';
|
|
3
4
|
/**
|
|
4
5
|
* Input schema for map node
|
|
5
6
|
*/
|
|
@@ -16,32 +17,6 @@ export const MapOutputSchema = z.object({
|
|
|
16
17
|
results: z.array(z.unknown()),
|
|
17
18
|
count: z.number(),
|
|
18
19
|
});
|
|
19
|
-
/**
|
|
20
|
-
* Resolve a nested path on an object
|
|
21
|
-
*/
|
|
22
|
-
function resolvePath(obj, path) {
|
|
23
|
-
const parts = path.split('.');
|
|
24
|
-
let current = obj;
|
|
25
|
-
for (const part of parts) {
|
|
26
|
-
if (current === null || current === undefined) {
|
|
27
|
-
return undefined;
|
|
28
|
-
}
|
|
29
|
-
// Handle array access like "[0]"
|
|
30
|
-
const arrayMatch = part.match(/^\[(\d+)\]$/);
|
|
31
|
-
if (arrayMatch) {
|
|
32
|
-
if (Array.isArray(current)) {
|
|
33
|
-
current = current[parseInt(arrayMatch[1], 10)];
|
|
34
|
-
}
|
|
35
|
-
else {
|
|
36
|
-
return undefined;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
current = current[part];
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
return current;
|
|
44
|
-
}
|
|
45
20
|
/**
|
|
46
21
|
* Map node - extract a property from each item in an array.
|
|
47
22
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map.js","sourceRoot":"","sources":["../../src/transform/map.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"map.js","sourceRoot":"","sources":["../../src/transform/map.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,kCAAkC;IAClC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IAC3B,6DAA6D;IAC7D,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;CACjB,CAAC,CAAC;AAIH;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IAC7B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;CAClB,CAAC,CAAC;AAIH;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,UAAU,CAAC;IAChC,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,KAAK;IACX,WAAW,EAAE,+CAA+C;IAC5D,QAAQ,EAAE,WAAW;IACrB,WAAW,EAAE,cAAc;IAC3B,YAAY,EAAE,eAAe;IAC7B,iBAAiB,EAAE,CAAC;IACpB,YAAY,EAAE;QACZ,aAAa,EAAE,IAAI;KACpB;IACD,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;QACxB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YAEzE,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE;oBACN,OAAO;oBACP,KAAK,EAAE,OAAO,CAAC,MAAM;iBACtB;aACF,CAAC;QACJ,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,sBAAsB;aACvE,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAC,CAAC"}
|
package/dist/utils/http.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/utils/http.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/C;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,oDAAoD;IACpD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uDAAuD;IACvD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,KAAK;aAGtB,MAAM,CAAC,EAAE,MAAM;aACf,IAAI,CAAC,EAAE,MAAM;gBAF7B,OAAO,EAAE,MAAM,EACC,MAAM,CAAC,EAAE,MAAM,YAAA,EACf,IAAI,CAAC,EAAE,MAAM,YAAA;CAKhC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,WAAgB,EACzB,MAAM,GAAE,qBAA0B,GACjC,OAAO,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/utils/http.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/C;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,oDAAoD;IACpD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uDAAuD;IACvD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,KAAK;aAGtB,MAAM,CAAC,EAAE,MAAM;aACf,IAAI,CAAC,EAAE,MAAM;gBAF7B,OAAO,EAAE,MAAM,EACC,MAAM,CAAC,EAAE,MAAM,YAAA,EACf,IAAI,CAAC,EAAE,MAAM,YAAA;CAKhC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,WAAgB,EACzB,MAAM,GAAE,qBAA0B,GACjC,OAAO,CAAC,QAAQ,CAAC,CA4FnB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,CAWzE"}
|
package/dist/utils/http.js
CHANGED
|
@@ -75,6 +75,9 @@ export async function fetchWithRetry(url, options = {}, config = {}) {
|
|
|
75
75
|
await sleep(delayMs);
|
|
76
76
|
continue;
|
|
77
77
|
}
|
|
78
|
+
// All retries exhausted — throw instead of returning the 429 response
|
|
79
|
+
const errorText = await response.text();
|
|
80
|
+
throw new FetchRetryError(`Rate limit exceeded after ${maxRetries} attempts`, 429, errorText);
|
|
78
81
|
}
|
|
79
82
|
// Retry on server errors
|
|
80
83
|
if (response.status >= 500 && response.status < 600) {
|
package/dist/utils/http.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/utils/http.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,UAAU,KAAK,CAAC,EAAU;IAC9B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAcD;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,KAAK;IAGtB;IACA;IAHlB,YACE,OAAe,EACC,MAAe,EACf,IAAa;QAE7B,KAAK,CAAC,OAAO,CAAC,CAAC;QAHC,WAAM,GAAN,MAAM,CAAS;QACf,SAAI,GAAJ,IAAI,CAAS;QAG7B,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,GAAW,EACX,UAAuB,EAAE,EACzB,SAAgC,EAAE;IAElC,MAAM,EAAE,UAAU,GAAG,CAAC,EAAE,SAAS,GAAG,IAAI,EAAE,SAAS,GAAG,KAAK,EAAE,GAAG,MAAM,CAAC;IAEvE,IAAI,SAAS,GAAiB,IAAI,CAAC;IAEnC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC;QACtD,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;QAEhE,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAChC,GAAG,OAAO;gBACV,MAAM,EAAE,UAAU,CAAC,MAAM;aAC1B,CAAC,CAAC;YAEH,YAAY,CAAC,OAAO,CAAC,CAAC;YAEtB,6BAA6B;YAC7B,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBACvD,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACxC,MAAM,IAAI,eAAe,CACvB,yBAAyB,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,EACjE,QAAQ,CAAC,MAAM,EACf,SAAS,CACV,CAAC;YACJ,CAAC;YAED,uBAAuB;YACvB,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC5B,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;gBACvD,MAAM,OAAO,GAAG,UAAU;oBACxB,CAAC,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,GAAG,IAAI;oBACjC,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;gBAErC,IAAI,OAAO,GAAG,UAAU,GAAG,CAAC,EAAE,CAAC;oBAC7B,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC;oBACrB,SAAS;gBACX,CAAC;
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/utils/http.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,KAAK,EACL,eAAe,EACf,KAAK,qBAAqB,GAC3B,MAAM,WAAW,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,KAAK,EACL,eAAe,EACf,KAAK,qBAAqB,GAC3B,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
|
package/dist/utils/index.js
CHANGED
package/dist/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,KAAK,EACL,eAAe,GAEhB,MAAM,WAAW,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,KAAK,EACL,eAAe,GAEhB,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared path resolution utility for transform nodes.
|
|
3
|
+
*
|
|
4
|
+
* Resolves a dot-notation path string against an arbitrary object.
|
|
5
|
+
* This mirrors the same logic as `ExecutionContext.resolveNestedPath`,
|
|
6
|
+
* but operates on any object rather than the workflow variable store.
|
|
7
|
+
*
|
|
8
|
+
* Supported syntax:
|
|
9
|
+
* - Dot notation: "contact.email"
|
|
10
|
+
* - Keyed array access: "contacts[0].name"
|
|
11
|
+
* - Standalone array index: "[0].name" (when current value is an array)
|
|
12
|
+
* - Empty path returns the object itself
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* resolvePath({ a: { b: [1, 2] } }, 'a.b[1]') // → 2
|
|
16
|
+
* resolvePath([{ id: 1 }, { id: 2 }], '[0].id') // → 1
|
|
17
|
+
* resolvePath({ score: 42 }, '') // → { score: 42 }
|
|
18
|
+
*/
|
|
19
|
+
export declare function resolvePath(obj: unknown, path: string): unknown;
|
|
20
|
+
//# sourceMappingURL=resolve-path.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-path.d.ts","sourceRoot":"","sources":["../../src/utils/resolve-path.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CA0C/D"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared path resolution utility for transform nodes.
|
|
3
|
+
*
|
|
4
|
+
* Resolves a dot-notation path string against an arbitrary object.
|
|
5
|
+
* This mirrors the same logic as `ExecutionContext.resolveNestedPath`,
|
|
6
|
+
* but operates on any object rather than the workflow variable store.
|
|
7
|
+
*
|
|
8
|
+
* Supported syntax:
|
|
9
|
+
* - Dot notation: "contact.email"
|
|
10
|
+
* - Keyed array access: "contacts[0].name"
|
|
11
|
+
* - Standalone array index: "[0].name" (when current value is an array)
|
|
12
|
+
* - Empty path returns the object itself
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* resolvePath({ a: { b: [1, 2] } }, 'a.b[1]') // → 2
|
|
16
|
+
* resolvePath([{ id: 1 }, { id: 2 }], '[0].id') // → 1
|
|
17
|
+
* resolvePath({ score: 42 }, '') // → { score: 42 }
|
|
18
|
+
*/
|
|
19
|
+
export function resolvePath(obj, path) {
|
|
20
|
+
// Empty path means use the value itself
|
|
21
|
+
if (!path) {
|
|
22
|
+
return obj;
|
|
23
|
+
}
|
|
24
|
+
const parts = path.split('.');
|
|
25
|
+
let current = obj;
|
|
26
|
+
for (const part of parts) {
|
|
27
|
+
if (current === null || current === undefined) {
|
|
28
|
+
return undefined;
|
|
29
|
+
}
|
|
30
|
+
// Handle keyed array access like "contacts[0]"
|
|
31
|
+
const keyedArrayMatch = part.match(/^(\w+)\[(\d+)\]$/);
|
|
32
|
+
if (keyedArrayMatch) {
|
|
33
|
+
const [, key, index] = keyedArrayMatch;
|
|
34
|
+
current = current[key];
|
|
35
|
+
if (Array.isArray(current)) {
|
|
36
|
+
current = current[parseInt(index, 10)];
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
return undefined;
|
|
40
|
+
}
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
43
|
+
// Handle standalone array index like "[0]"
|
|
44
|
+
const standaloneIndexMatch = part.match(/^\[(\d+)\]$/);
|
|
45
|
+
if (standaloneIndexMatch) {
|
|
46
|
+
if (Array.isArray(current)) {
|
|
47
|
+
current = current[parseInt(standaloneIndexMatch[1], 10)];
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
return undefined;
|
|
51
|
+
}
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
current = current[part];
|
|
55
|
+
}
|
|
56
|
+
return current;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=resolve-path.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-path.js","sourceRoot":"","sources":["../../src/utils/resolve-path.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,WAAW,CAAC,GAAY,EAAE,IAAY;IACpD,wCAAwC;IACxC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,GAAG,CAAC;IACb,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,OAAO,GAAY,GAAG,CAAC;IAE3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC9C,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,+CAA+C;QAC/C,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACvD,IAAI,eAAe,EAAE,CAAC;YACpB,MAAM,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,eAAe,CAAC;YACvC,OAAO,GAAI,OAAmC,CAAC,GAAI,CAAC,CAAC;YACrD,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3B,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAM,EAAE,EAAE,CAAC,CAAC,CAAC;YAC1C,CAAC;iBAAM,CAAC;gBACN,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,SAAS;QACX,CAAC;QAED,2CAA2C;QAC3C,MAAM,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QACvD,IAAI,oBAAoB,EAAE,CAAC;YACzB,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3B,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YAC5D,CAAC;iBAAM,CAAC;gBACN,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,SAAS;QACX,CAAC;QAED,OAAO,GAAI,OAAmC,CAAC,IAAI,CAAC,CAAC;IACvD,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jam-nodes/nodes",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.6",
|
|
4
4
|
"description": "Built-in workflow nodes for jam-nodes framework",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -39,6 +39,8 @@
|
|
|
39
39
|
"build": "tsc",
|
|
40
40
|
"clean": "rm -rf dist",
|
|
41
41
|
"typecheck": "tsc --noEmit",
|
|
42
|
+
"test": "vitest run",
|
|
43
|
+
"test:watch": "vitest",
|
|
42
44
|
"prepublishOnly": "npm run build"
|
|
43
45
|
},
|
|
44
46
|
"dependencies": {
|
|
@@ -49,6 +51,7 @@
|
|
|
49
51
|
},
|
|
50
52
|
"devDependencies": {
|
|
51
53
|
"typescript": "^5.7.0",
|
|
54
|
+
"vitest": "^2.1.8",
|
|
52
55
|
"zod": "^3.24.0"
|
|
53
56
|
},
|
|
54
57
|
"keywords": [
|