@octo-cyber/workflow 0.5.0
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/controllers/ai-workflow-session.controller.d.ts +19 -0
- package/dist/controllers/ai-workflow-session.controller.d.ts.map +1 -0
- package/dist/controllers/ai-workflow-session.controller.js +135 -0
- package/dist/controllers/ai-workflow-session.controller.js.map +1 -0
- package/dist/controllers/credential.controller.d.ts +68 -0
- package/dist/controllers/credential.controller.d.ts.map +1 -0
- package/dist/controllers/credential.controller.js +303 -0
- package/dist/controllers/credential.controller.js.map +1 -0
- package/dist/controllers/index.d.ts +3 -0
- package/dist/controllers/index.d.ts.map +1 -0
- package/dist/controllers/index.js +8 -0
- package/dist/controllers/index.js.map +1 -0
- package/dist/controllers/workflow-ai.controller.d.ts +23 -0
- package/dist/controllers/workflow-ai.controller.d.ts.map +1 -0
- package/dist/controllers/workflow-ai.controller.js +164 -0
- package/dist/controllers/workflow-ai.controller.js.map +1 -0
- package/dist/controllers/workflow.controller.d.ts +66 -0
- package/dist/controllers/workflow.controller.d.ts.map +1 -0
- package/dist/controllers/workflow.controller.js +239 -0
- package/dist/controllers/workflow.controller.js.map +1 -0
- package/dist/core/expression-resolver.d.ts +49 -0
- package/dist/core/expression-resolver.d.ts.map +1 -0
- package/dist/core/expression-resolver.js +113 -0
- package/dist/core/expression-resolver.js.map +1 -0
- package/dist/core/node-registry.d.ts +24 -0
- package/dist/core/node-registry.d.ts.map +1 -0
- package/dist/core/node-registry.js +62 -0
- package/dist/core/node-registry.js.map +1 -0
- package/dist/core/workflow-executor.d.ts +50 -0
- package/dist/core/workflow-executor.d.ts.map +1 -0
- package/dist/core/workflow-executor.js +458 -0
- package/dist/core/workflow-executor.js.map +1 -0
- package/dist/entities/ai-workflow-session.entity.d.ts +17 -0
- package/dist/entities/ai-workflow-session.entity.d.ts.map +1 -0
- package/dist/entities/ai-workflow-session.entity.js +70 -0
- package/dist/entities/ai-workflow-session.entity.js.map +1 -0
- package/dist/entities/ai-workflow-version.entity.d.ts +18 -0
- package/dist/entities/ai-workflow-version.entity.d.ts.map +1 -0
- package/dist/entities/ai-workflow-version.entity.js +71 -0
- package/dist/entities/ai-workflow-version.entity.js.map +1 -0
- package/dist/entities/credential-definition.entity.d.ts +17 -0
- package/dist/entities/credential-definition.entity.d.ts.map +1 -0
- package/dist/entities/credential-definition.entity.js +66 -0
- package/dist/entities/credential-definition.entity.js.map +1 -0
- package/dist/entities/index.d.ts +9 -0
- package/dist/entities/index.d.ts.map +1 -0
- package/dist/entities/index.js +22 -0
- package/dist/entities/index.js.map +1 -0
- package/dist/entities/workflow-definition.entity.d.ts +20 -0
- package/dist/entities/workflow-definition.entity.d.ts.map +1 -0
- package/dist/entities/workflow-definition.entity.js +85 -0
- package/dist/entities/workflow-definition.entity.js.map +1 -0
- package/dist/entities/workflow-execution.entity.d.ts +26 -0
- package/dist/entities/workflow-execution.entity.d.ts.map +1 -0
- package/dist/entities/workflow-execution.entity.js +99 -0
- package/dist/entities/workflow-execution.entity.js.map +1 -0
- package/dist/index.d.ts +52 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +96 -0
- package/dist/index.js.map +1 -0
- package/dist/n8n/cipher/cipher.d.ts +11 -0
- package/dist/n8n/cipher/cipher.d.ts.map +1 -0
- package/dist/n8n/cipher/cipher.js +54 -0
- package/dist/n8n/cipher/cipher.js.map +1 -0
- package/dist/n8n/controllers/n8n-session.controller.d.ts +20 -0
- package/dist/n8n/controllers/n8n-session.controller.d.ts.map +1 -0
- package/dist/n8n/controllers/n8n-session.controller.js +84 -0
- package/dist/n8n/controllers/n8n-session.controller.js.map +1 -0
- package/dist/n8n/index.d.ts +8 -0
- package/dist/n8n/index.d.ts.map +1 -0
- package/dist/n8n/index.js +14 -0
- package/dist/n8n/index.js.map +1 -0
- package/dist/n8n/launcher/n8n-launcher.d.ts +41 -0
- package/dist/n8n/launcher/n8n-launcher.d.ts.map +1 -0
- package/dist/n8n/launcher/n8n-launcher.js +186 -0
- package/dist/n8n/launcher/n8n-launcher.js.map +1 -0
- package/dist/n8n/nodes/OctoClaudeCliTool.node.d.ts +13 -0
- package/dist/n8n/nodes/OctoClaudeCliTool.node.d.ts.map +1 -0
- package/dist/n8n/nodes/OctoClaudeCliTool.node.js +103 -0
- package/dist/n8n/nodes/OctoClaudeCliTool.node.js.map +1 -0
- package/dist/n8n/nodes/OctoCliChatModel.node.d.ts +14 -0
- package/dist/n8n/nodes/OctoCliChatModel.node.d.ts.map +1 -0
- package/dist/n8n/nodes/OctoCliChatModel.node.js +431 -0
- package/dist/n8n/nodes/OctoCliChatModel.node.js.map +1 -0
- package/dist/n8n/nodes/OctoCodexCliTool.node.d.ts +13 -0
- package/dist/n8n/nodes/OctoCodexCliTool.node.d.ts.map +1 -0
- package/dist/n8n/nodes/OctoCodexCliTool.node.js +100 -0
- package/dist/n8n/nodes/OctoCodexCliTool.node.js.map +1 -0
- package/dist/n8n/nodes/OctoGeminiCliTool.node.d.ts +13 -0
- package/dist/n8n/nodes/OctoGeminiCliTool.node.d.ts.map +1 -0
- package/dist/n8n/nodes/OctoGeminiCliTool.node.js +91 -0
- package/dist/n8n/nodes/OctoGeminiCliTool.node.js.map +1 -0
- package/dist/n8n/nodes/OctoKnowledge.node.d.ts +6 -0
- package/dist/n8n/nodes/OctoKnowledge.node.d.ts.map +1 -0
- package/dist/n8n/nodes/OctoKnowledge.node.js +95 -0
- package/dist/n8n/nodes/OctoKnowledge.node.js.map +1 -0
- package/dist/n8n/nodes/OctoNotification.node.d.ts +6 -0
- package/dist/n8n/nodes/OctoNotification.node.d.ts.map +1 -0
- package/dist/n8n/nodes/OctoNotification.node.js +72 -0
- package/dist/n8n/nodes/OctoNotification.node.js.map +1 -0
- package/dist/n8n/nodes/OctoSyncBridge.node.d.ts +6 -0
- package/dist/n8n/nodes/OctoSyncBridge.node.d.ts.map +1 -0
- package/dist/n8n/nodes/OctoSyncBridge.node.js +60 -0
- package/dist/n8n/nodes/OctoSyncBridge.node.js.map +1 -0
- package/dist/n8n/nodes/n8n-node-types.d.ts +111 -0
- package/dist/n8n/nodes/n8n-node-types.d.ts.map +1 -0
- package/dist/n8n/nodes/n8n-node-types.js +30 -0
- package/dist/n8n/nodes/n8n-node-types.js.map +1 -0
- package/dist/n8n/nodes/octo-cli-chat-model.svg +23 -0
- package/dist/n8n/nodes/package.json +16 -0
- package/dist/n8n/proxy/css-injector.d.ts +3 -0
- package/dist/n8n/proxy/css-injector.d.ts.map +1 -0
- package/dist/n8n/proxy/css-injector.js +62 -0
- package/dist/n8n/proxy/css-injector.js.map +1 -0
- package/dist/n8n/proxy/n8n-proxy.middleware.d.ts +12 -0
- package/dist/n8n/proxy/n8n-proxy.middleware.d.ts.map +1 -0
- package/dist/n8n/proxy/n8n-proxy.middleware.js +131 -0
- package/dist/n8n/proxy/n8n-proxy.middleware.js.map +1 -0
- package/dist/n8n/proxy/n8n-theme.css +45 -0
- package/dist/n8n/sync/n8n-user-sync.service.d.ts +75 -0
- package/dist/n8n/sync/n8n-user-sync.service.d.ts.map +1 -0
- package/dist/n8n/sync/n8n-user-sync.service.js +286 -0
- package/dist/n8n/sync/n8n-user-sync.service.js.map +1 -0
- package/dist/n8n/watcher/n8n-execution-watcher.d.ts +39 -0
- package/dist/n8n/watcher/n8n-execution-watcher.d.ts.map +1 -0
- package/dist/n8n/watcher/n8n-execution-watcher.js +110 -0
- package/dist/n8n/watcher/n8n-execution-watcher.js.map +1 -0
- package/dist/nodes/code.node.d.ts +24 -0
- package/dist/nodes/code.node.d.ts.map +1 -0
- package/dist/nodes/code.node.js +150 -0
- package/dist/nodes/code.node.js.map +1 -0
- package/dist/nodes/error-trigger.node.d.ts +15 -0
- package/dist/nodes/error-trigger.node.d.ts.map +1 -0
- package/dist/nodes/error-trigger.node.js +53 -0
- package/dist/nodes/error-trigger.node.js.map +1 -0
- package/dist/nodes/execute-command.node.d.ts +9 -0
- package/dist/nodes/execute-command.node.d.ts.map +1 -0
- package/dist/nodes/execute-command.node.js +81 -0
- package/dist/nodes/execute-command.node.js.map +1 -0
- package/dist/nodes/filter.node.d.ts +10 -0
- package/dist/nodes/filter.node.d.ts.map +1 -0
- package/dist/nodes/filter.node.js +95 -0
- package/dist/nodes/filter.node.js.map +1 -0
- package/dist/nodes/http-request.node.d.ts +11 -0
- package/dist/nodes/http-request.node.d.ts.map +1 -0
- package/dist/nodes/http-request.node.js +139 -0
- package/dist/nodes/http-request.node.js.map +1 -0
- package/dist/nodes/if.node.d.ts +13 -0
- package/dist/nodes/if.node.d.ts.map +1 -0
- package/dist/nodes/if.node.js +137 -0
- package/dist/nodes/if.node.js.map +1 -0
- package/dist/nodes/index.d.ts +12 -0
- package/dist/nodes/index.d.ts.map +1 -0
- package/dist/nodes/index.js +26 -0
- package/dist/nodes/index.js.map +1 -0
- package/dist/nodes/manual-trigger.node.d.ts +10 -0
- package/dist/nodes/manual-trigger.node.d.ts.map +1 -0
- package/dist/nodes/manual-trigger.node.js +36 -0
- package/dist/nodes/manual-trigger.node.js.map +1 -0
- package/dist/nodes/merge.node.d.ts +15 -0
- package/dist/nodes/merge.node.d.ts.map +1 -0
- package/dist/nodes/merge.node.js +99 -0
- package/dist/nodes/merge.node.js.map +1 -0
- package/dist/nodes/noop.node.d.ts +12 -0
- package/dist/nodes/noop.node.d.ts.map +1 -0
- package/dist/nodes/noop.node.js +32 -0
- package/dist/nodes/noop.node.js.map +1 -0
- package/dist/nodes/placeholder.node.d.ts +10 -0
- package/dist/nodes/placeholder.node.d.ts.map +1 -0
- package/dist/nodes/placeholder.node.js +50 -0
- package/dist/nodes/placeholder.node.js.map +1 -0
- package/dist/nodes/remove-duplicates.node.d.ts +9 -0
- package/dist/nodes/remove-duplicates.node.d.ts.map +1 -0
- package/dist/nodes/remove-duplicates.node.js +68 -0
- package/dist/nodes/remove-duplicates.node.js.map +1 -0
- package/dist/nodes/respond-to-webhook.node.d.ts +14 -0
- package/dist/nodes/respond-to-webhook.node.d.ts.map +1 -0
- package/dist/nodes/respond-to-webhook.node.js +116 -0
- package/dist/nodes/respond-to-webhook.node.js.map +1 -0
- package/dist/nodes/schedule-trigger.node.d.ts +9 -0
- package/dist/nodes/schedule-trigger.node.d.ts.map +1 -0
- package/dist/nodes/schedule-trigger.node.js +67 -0
- package/dist/nodes/schedule-trigger.node.js.map +1 -0
- package/dist/nodes/set.node.d.ts +12 -0
- package/dist/nodes/set.node.d.ts.map +1 -0
- package/dist/nodes/set.node.js +81 -0
- package/dist/nodes/set.node.js.map +1 -0
- package/dist/nodes/sort.node.d.ts +9 -0
- package/dist/nodes/sort.node.d.ts.map +1 -0
- package/dist/nodes/sort.node.js +61 -0
- package/dist/nodes/sort.node.js.map +1 -0
- package/dist/nodes/split-in-batches.node.d.ts +9 -0
- package/dist/nodes/split-in-batches.node.d.ts.map +1 -0
- package/dist/nodes/split-in-batches.node.js +53 -0
- package/dist/nodes/split-in-batches.node.js.map +1 -0
- package/dist/nodes/split-out.node.d.ts +9 -0
- package/dist/nodes/split-out.node.d.ts.map +1 -0
- package/dist/nodes/split-out.node.js +76 -0
- package/dist/nodes/split-out.node.js.map +1 -0
- package/dist/nodes/switch.node.d.ts +16 -0
- package/dist/nodes/switch.node.d.ts.map +1 -0
- package/dist/nodes/switch.node.js +156 -0
- package/dist/nodes/switch.node.js.map +1 -0
- package/dist/nodes/wait.node.d.ts +12 -0
- package/dist/nodes/wait.node.d.ts.map +1 -0
- package/dist/nodes/wait.node.js +81 -0
- package/dist/nodes/wait.node.js.map +1 -0
- package/dist/nodes/webhook.node.d.ts +9 -0
- package/dist/nodes/webhook.node.d.ts.map +1 -0
- package/dist/nodes/webhook.node.js +69 -0
- package/dist/nodes/webhook.node.js.map +1 -0
- package/dist/services/ai-workflow-session.service.d.ts +31 -0
- package/dist/services/ai-workflow-session.service.d.ts.map +1 -0
- package/dist/services/ai-workflow-session.service.js +118 -0
- package/dist/services/ai-workflow-session.service.js.map +1 -0
- package/dist/services/credential.service.d.ts +57 -0
- package/dist/services/credential.service.d.ts.map +1 -0
- package/dist/services/credential.service.js +155 -0
- package/dist/services/credential.service.js.map +1 -0
- package/dist/services/index.d.ts +10 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +14 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/push.service.d.ts +60 -0
- package/dist/services/push.service.d.ts.map +1 -0
- package/dist/services/push.service.js +121 -0
- package/dist/services/push.service.js.map +1 -0
- package/dist/services/workflow-ai.service.d.ts +61 -0
- package/dist/services/workflow-ai.service.d.ts.map +1 -0
- package/dist/services/workflow-ai.service.js +219 -0
- package/dist/services/workflow-ai.service.js.map +1 -0
- package/dist/services/workflow-context.service.d.ts +32 -0
- package/dist/services/workflow-context.service.d.ts.map +1 -0
- package/dist/services/workflow-context.service.js +155 -0
- package/dist/services/workflow-context.service.js.map +1 -0
- package/dist/services/workflow-engine.service.d.ts +90 -0
- package/dist/services/workflow-engine.service.d.ts.map +1 -0
- package/dist/services/workflow-engine.service.js +305 -0
- package/dist/services/workflow-engine.service.js.map +1 -0
- package/dist/services/workflow.service.d.ts +84 -0
- package/dist/services/workflow.service.d.ts.map +1 -0
- package/dist/services/workflow.service.js +241 -0
- package/dist/services/workflow.service.js.map +1 -0
- package/dist/triggers/cron-trigger.d.ts +39 -0
- package/dist/triggers/cron-trigger.d.ts.map +1 -0
- package/dist/triggers/cron-trigger.js +137 -0
- package/dist/triggers/cron-trigger.js.map +1 -0
- package/dist/triggers/index.d.ts +3 -0
- package/dist/triggers/index.d.ts.map +1 -0
- package/dist/triggers/index.js +8 -0
- package/dist/triggers/index.js.map +1 -0
- package/dist/triggers/webhook-trigger.d.ts +51 -0
- package/dist/triggers/webhook-trigger.d.ts.map +1 -0
- package/dist/triggers/webhook-trigger.js +122 -0
- package/dist/triggers/webhook-trigger.js.map +1 -0
- package/dist/types/index.d.ts +5 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +8 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/node.types.d.ts +313 -0
- package/dist/types/node.types.d.ts.map +1 -0
- package/dist/types/node.types.js +23 -0
- package/dist/types/node.types.js.map +1 -0
- package/dist/types/workflow.types.d.ts +153 -0
- package/dist/types/workflow.types.d.ts.map +1 -0
- package/dist/types/workflow.types.js +44 -0
- package/dist/types/workflow.types.js.map +1 -0
- package/dist/utils/n8n-converter.d.ts +52 -0
- package/dist/utils/n8n-converter.d.ts.map +1 -0
- package/dist/utils/n8n-converter.js +107 -0
- package/dist/utils/n8n-converter.js.map +1 -0
- package/dist/utils/n8n-node-map.d.ts +6 -0
- package/dist/utils/n8n-node-map.d.ts.map +1 -0
- package/dist/utils/n8n-node-map.js +59 -0
- package/dist/utils/n8n-node-map.js.map +1 -0
- package/dist/workflow.module.d.ts +40 -0
- package/dist/workflow.module.d.ts.map +1 -0
- package/dist/workflow.module.js +240 -0
- package/dist/workflow.module.js.map +1 -0
- package/package.json +97 -0
- package/web/components/ChatPanel.tsx +344 -0
- package/web/components/N8nIframe.tsx +119 -0
- package/web/components/SessionPanel.tsx +301 -0
- package/web/components/ToolPanel.tsx +404 -0
- package/web/components/WorkflowDiff.tsx +161 -0
- package/web/components/WorkflowGraph.tsx +158 -0
- package/web/components/WorkflowPreviewPanel.tsx +186 -0
- package/web/hooks/use-n8n-session.ts +46 -0
- package/web/index.ts +29 -0
- package/web/manifest.ts +16 -0
- package/web/messages/en-US.json +94 -0
- package/web/messages/zh-CN.json +94 -0
- package/web/pages/AiDesignPage.tsx +215 -0
- package/web/pages/CredentialsPage.tsx +7 -0
- package/web/pages/ExecutionsPage.tsx +7 -0
- package/web/pages/WorkflowsPage.tsx +7 -0
- package/web/services/workflow-ai-service.ts +173 -0
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ScheduleTriggerNode = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Schedule Trigger — starts a workflow on a cron schedule.
|
|
6
|
+
*/
|
|
7
|
+
class ScheduleTriggerNode {
|
|
8
|
+
description = {
|
|
9
|
+
displayName: 'Schedule Trigger',
|
|
10
|
+
name: 'scheduleTrigger',
|
|
11
|
+
group: ['trigger'],
|
|
12
|
+
version: 1,
|
|
13
|
+
description: 'Triggers the workflow on a schedule (cron expression)',
|
|
14
|
+
icon: 'timer',
|
|
15
|
+
category: 'trigger',
|
|
16
|
+
defaults: { name: 'Schedule Trigger', color: '#FF6D5A' },
|
|
17
|
+
inputs: [],
|
|
18
|
+
outputs: ['main'],
|
|
19
|
+
properties: [
|
|
20
|
+
{
|
|
21
|
+
displayName: 'Rule Type',
|
|
22
|
+
name: 'ruleType',
|
|
23
|
+
type: 'options',
|
|
24
|
+
default: 'interval',
|
|
25
|
+
options: [
|
|
26
|
+
{ name: 'Interval', value: 'interval' },
|
|
27
|
+
{ name: 'Cron Expression', value: 'cron' },
|
|
28
|
+
],
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
displayName: 'Interval Value',
|
|
32
|
+
name: 'intervalValue',
|
|
33
|
+
type: 'number',
|
|
34
|
+
default: 1,
|
|
35
|
+
description: 'The interval value',
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
displayName: 'Interval Unit',
|
|
39
|
+
name: 'intervalUnit',
|
|
40
|
+
type: 'options',
|
|
41
|
+
default: 'hours',
|
|
42
|
+
options: [
|
|
43
|
+
{ name: 'Seconds', value: 'seconds' },
|
|
44
|
+
{ name: 'Minutes', value: 'minutes' },
|
|
45
|
+
{ name: 'Hours', value: 'hours' },
|
|
46
|
+
{ name: 'Days', value: 'days' },
|
|
47
|
+
],
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
displayName: 'Cron Expression',
|
|
51
|
+
name: 'cronExpression',
|
|
52
|
+
type: 'string',
|
|
53
|
+
default: '0 * * * *',
|
|
54
|
+
description: 'Cron expression (when Rule Type is "cron")',
|
|
55
|
+
},
|
|
56
|
+
],
|
|
57
|
+
};
|
|
58
|
+
async execute(context) {
|
|
59
|
+
const inputData = context.getInputData();
|
|
60
|
+
if (inputData.length > 0) {
|
|
61
|
+
return [inputData];
|
|
62
|
+
}
|
|
63
|
+
return [[{ json: { triggeredAt: new Date().toISOString() } }]];
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
exports.ScheduleTriggerNode = ScheduleTriggerNode;
|
|
67
|
+
//# sourceMappingURL=schedule-trigger.node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schedule-trigger.node.js","sourceRoot":"","sources":["../../src/nodes/schedule-trigger.node.ts"],"names":[],"mappings":";;;AAOA;;GAEG;AACH,MAAa,mBAAmB;IAC9B,WAAW,GAAyB;QAClC,WAAW,EAAE,kBAAkB;QAC/B,IAAI,EAAE,iBAAiB;QACvB,KAAK,EAAE,CAAC,SAAS,CAAC;QAClB,OAAO,EAAE,CAAC;QACV,WAAW,EAAE,uDAAuD;QACpE,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,SAAS,EAAE;QACxD,MAAM,EAAE,EAAE;QACV,OAAO,EAAE,CAAC,MAAM,CAAC;QACjB,UAAU,EAAE;YACV;gBACE,WAAW,EAAE,WAAW;gBACxB,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,UAAU;gBACnB,OAAO,EAAE;oBACP,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;oBACvC,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE;iBAC3C;aACF;YACD;gBACE,WAAW,EAAE,gBAAgB;gBAC7B,IAAI,EAAE,eAAe;gBACrB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,CAAC;gBACV,WAAW,EAAE,oBAAoB;aAClC;YACD;gBACE,WAAW,EAAE,eAAe;gBAC5B,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,OAAO;gBAChB,OAAO,EAAE;oBACP,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;oBACrC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;oBACrC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;oBACjC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;iBAChC;aACF;YACD;gBACE,WAAW,EAAE,iBAAiB;gBAC9B,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,WAAW;gBACpB,WAAW,EAAE,4CAA4C;aAC1D;SACF;KACF,CAAC;IAEF,KAAK,CAAC,OAAO,CAAC,OAAwB;QACpC,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;QACzC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,SAAS,CAAC,CAAC;QACrB,CAAC;QACD,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IACjE,CAAC;CACF;AA3DD,kDA2DC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { INodeType, INodeTypeDescription, IExecuteContext, INodeExecutionData } from '../types/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Set Node — sets or overwrites data fields.
|
|
4
|
+
*
|
|
5
|
+
* Can either add new fields to existing data or replace all data
|
|
6
|
+
* with only the specified values.
|
|
7
|
+
*/
|
|
8
|
+
export declare class SetNode implements INodeType {
|
|
9
|
+
description: INodeTypeDescription;
|
|
10
|
+
execute(context: IExecuteContext): Promise<INodeExecutionData[][]>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=set.node.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set.node.d.ts","sourceRoot":"","sources":["../../src/nodes/set.node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,oBAAoB,EACpB,eAAe,EACf,kBAAkB,EACnB,MAAM,mBAAmB,CAAC;AAE3B;;;;;GAKG;AACH,qBAAa,OAAQ,YAAW,SAAS;IACvC,WAAW,EAAE,oBAAoB,CAiC/B;IAEI,OAAO,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;CAuCzE"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SetNode = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Set Node — sets or overwrites data fields.
|
|
6
|
+
*
|
|
7
|
+
* Can either add new fields to existing data or replace all data
|
|
8
|
+
* with only the specified values.
|
|
9
|
+
*/
|
|
10
|
+
class SetNode {
|
|
11
|
+
description = {
|
|
12
|
+
displayName: 'Set',
|
|
13
|
+
name: 'set',
|
|
14
|
+
group: ['transform'],
|
|
15
|
+
version: 1,
|
|
16
|
+
description: 'Set or overwrite data fields on each item.',
|
|
17
|
+
icon: 'edit',
|
|
18
|
+
category: 'transform',
|
|
19
|
+
defaults: {
|
|
20
|
+
name: 'Set',
|
|
21
|
+
color: '#0066FF',
|
|
22
|
+
},
|
|
23
|
+
inputs: ['main'],
|
|
24
|
+
outputs: ['main'],
|
|
25
|
+
properties: [
|
|
26
|
+
{
|
|
27
|
+
displayName: 'Values',
|
|
28
|
+
name: 'values',
|
|
29
|
+
type: 'json',
|
|
30
|
+
default: '{}',
|
|
31
|
+
description: 'JSON object of key-value pairs to set. Keys become field names, values become field values. Supports expressions.',
|
|
32
|
+
required: true,
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
displayName: 'Keep Only Set',
|
|
36
|
+
name: 'keepOnlySet',
|
|
37
|
+
type: 'boolean',
|
|
38
|
+
default: false,
|
|
39
|
+
description: 'If true, only the fields specified in Values will remain. Existing fields will be removed.',
|
|
40
|
+
},
|
|
41
|
+
],
|
|
42
|
+
};
|
|
43
|
+
async execute(context) {
|
|
44
|
+
const inputData = context.getInputData();
|
|
45
|
+
const valuesRaw = context.getParam('values');
|
|
46
|
+
const keepOnlySet = context.getParam('keepOnlySet');
|
|
47
|
+
// Parse values
|
|
48
|
+
let values = {};
|
|
49
|
+
if (typeof valuesRaw === 'string') {
|
|
50
|
+
try {
|
|
51
|
+
values = JSON.parse(valuesRaw);
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
throw new Error('Set node: "values" must be a valid JSON object');
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
else if (valuesRaw && typeof valuesRaw === 'object') {
|
|
58
|
+
values = valuesRaw;
|
|
59
|
+
}
|
|
60
|
+
const results = [];
|
|
61
|
+
const items = inputData.length > 0 ? inputData : [{ json: {} }];
|
|
62
|
+
for (const item of items) {
|
|
63
|
+
let newJson;
|
|
64
|
+
if (keepOnlySet) {
|
|
65
|
+
// Only keep the specified values
|
|
66
|
+
newJson = { ...values };
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
// Merge with existing data (new values overwrite existing)
|
|
70
|
+
newJson = { ...item.json, ...values };
|
|
71
|
+
}
|
|
72
|
+
results.push({
|
|
73
|
+
json: newJson,
|
|
74
|
+
binary: item.binary,
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
return [results];
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
exports.SetNode = SetNode;
|
|
81
|
+
//# sourceMappingURL=set.node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set.node.js","sourceRoot":"","sources":["../../src/nodes/set.node.ts"],"names":[],"mappings":";;;AAOA;;;;;GAKG;AACH,MAAa,OAAO;IAClB,WAAW,GAAyB;QAClC,WAAW,EAAE,KAAK;QAClB,IAAI,EAAE,KAAK;QACX,KAAK,EAAE,CAAC,WAAW,CAAC;QACpB,OAAO,EAAE,CAAC;QACV,WAAW,EAAE,4CAA4C;QACzD,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,WAAW;QACrB,QAAQ,EAAE;YACR,IAAI,EAAE,KAAK;YACX,KAAK,EAAE,SAAS;SACjB;QACD,MAAM,EAAE,CAAC,MAAM,CAAC;QAChB,OAAO,EAAE,CAAC,MAAM,CAAC;QACjB,UAAU,EAAE;YACV;gBACE,WAAW,EAAE,QAAQ;gBACrB,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,IAAI;gBACb,WAAW,EACT,mHAAmH;gBACrH,QAAQ,EAAE,IAAI;aACf;YACD;gBACE,WAAW,EAAE,eAAe;gBAC5B,IAAI,EAAE,aAAa;gBACnB,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,KAAK;gBACd,WAAW,EACT,4FAA4F;aAC/F;SACF;KACF,CAAC;IAEF,KAAK,CAAC,OAAO,CAAC,OAAwB;QACpC,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAmC,QAAQ,CAAC,CAAC;QAC/E,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAU,aAAa,CAAC,CAAC;QAE7D,eAAe;QACf,IAAI,MAAM,GAA4B,EAAE,CAAC;QACzC,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;YAClC,IAAI,CAAC;gBACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAA4B,CAAC;YAC5D,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;YACpE,CAAC;QACH,CAAC;aAAM,IAAI,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;YACtD,MAAM,GAAG,SAAS,CAAC;QACrB,CAAC;QAED,MAAM,OAAO,GAAyB,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QAEhE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,OAAgC,CAAC;YAErC,IAAI,WAAW,EAAE,CAAC;gBAChB,iCAAiC;gBACjC,OAAO,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;YAC1B,CAAC;iBAAM,CAAC;gBACN,2DAA2D;gBAC3D,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;YACxC,CAAC;YAED,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,OAAO;gBACb,MAAM,EAAE,IAAI,CAAC,MAAM;aACpB,CAAC,CAAC;QACL,CAAC;QAED,OAAO,CAAC,OAAO,CAAC,CAAC;IACnB,CAAC;CACF;AA3ED,0BA2EC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { INodeType, INodeTypeDescription, IExecuteContext, INodeExecutionData } from '../types/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Sort Node — sorts items by a field.
|
|
4
|
+
*/
|
|
5
|
+
export declare class SortNode implements INodeType {
|
|
6
|
+
description: INodeTypeDescription;
|
|
7
|
+
execute(context: IExecuteContext): Promise<INodeExecutionData[][]>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=sort.node.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sort.node.d.ts","sourceRoot":"","sources":["../../src/nodes/sort.node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,oBAAoB,EACpB,eAAe,EACf,kBAAkB,EACnB,MAAM,mBAAmB,CAAC;AAG3B;;GAEG;AACH,qBAAa,QAAS,YAAW,SAAS;IACxC,WAAW,EAAE,oBAAoB,CA+B/B;IAEI,OAAO,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;CAqBzE"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SortNode = void 0;
|
|
4
|
+
const index_js_1 = require("../types/index.js");
|
|
5
|
+
/**
|
|
6
|
+
* Sort Node — sorts items by a field.
|
|
7
|
+
*/
|
|
8
|
+
class SortNode {
|
|
9
|
+
description = {
|
|
10
|
+
displayName: 'Sort',
|
|
11
|
+
name: 'sort',
|
|
12
|
+
group: ['transform'],
|
|
13
|
+
version: 1,
|
|
14
|
+
description: 'Sort items by a field value',
|
|
15
|
+
icon: 'arrow-up-down',
|
|
16
|
+
category: 'transform',
|
|
17
|
+
defaults: { name: 'Sort', color: '#FF9922' },
|
|
18
|
+
inputs: [index_js_1.NodeConnectionType.Main],
|
|
19
|
+
outputs: [index_js_1.NodeConnectionType.Main],
|
|
20
|
+
properties: [
|
|
21
|
+
{
|
|
22
|
+
displayName: 'Sort Field',
|
|
23
|
+
name: 'sortField',
|
|
24
|
+
type: 'string',
|
|
25
|
+
default: '',
|
|
26
|
+
description: 'The field to sort by',
|
|
27
|
+
required: true,
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
displayName: 'Order',
|
|
31
|
+
name: 'order',
|
|
32
|
+
type: 'options',
|
|
33
|
+
default: 'ascending',
|
|
34
|
+
options: [
|
|
35
|
+
{ name: 'Ascending', value: 'ascending' },
|
|
36
|
+
{ name: 'Descending', value: 'descending' },
|
|
37
|
+
],
|
|
38
|
+
},
|
|
39
|
+
],
|
|
40
|
+
};
|
|
41
|
+
async execute(context) {
|
|
42
|
+
const items = [...context.getInputData()];
|
|
43
|
+
const sortField = context.getParam('sortField') || '';
|
|
44
|
+
const order = context.getParam('order') || 'ascending';
|
|
45
|
+
items.sort((a, b) => {
|
|
46
|
+
const aVal = a.json[sortField];
|
|
47
|
+
const bVal = b.json[sortField];
|
|
48
|
+
let comparison = 0;
|
|
49
|
+
if (typeof aVal === 'number' && typeof bVal === 'number') {
|
|
50
|
+
comparison = aVal - bVal;
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
comparison = String(aVal ?? '').localeCompare(String(bVal ?? ''));
|
|
54
|
+
}
|
|
55
|
+
return order === 'descending' ? -comparison : comparison;
|
|
56
|
+
});
|
|
57
|
+
return [items];
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
exports.SortNode = SortNode;
|
|
61
|
+
//# sourceMappingURL=sort.node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sort.node.js","sourceRoot":"","sources":["../../src/nodes/sort.node.ts"],"names":[],"mappings":";;;AAMA,gDAAuD;AAEvD;;GAEG;AACH,MAAa,QAAQ;IACnB,WAAW,GAAyB;QAClC,WAAW,EAAE,MAAM;QACnB,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,CAAC,WAAW,CAAC;QACpB,OAAO,EAAE,CAAC;QACV,WAAW,EAAE,6BAA6B;QAC1C,IAAI,EAAE,eAAe;QACrB,QAAQ,EAAE,WAAW;QACrB,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE;QAC5C,MAAM,EAAE,CAAC,6BAAkB,CAAC,IAAI,CAAC;QACjC,OAAO,EAAE,CAAC,6BAAkB,CAAC,IAAI,CAAC;QAClC,UAAU,EAAE;YACV;gBACE,WAAW,EAAE,YAAY;gBACzB,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,sBAAsB;gBACnC,QAAQ,EAAE,IAAI;aACf;YACD;gBACE,WAAW,EAAE,OAAO;gBACpB,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,WAAW;gBACpB,OAAO,EAAE;oBACP,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE;oBACzC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;iBAC5C;aACF;SACF;KACF,CAAC;IAEF,KAAK,CAAC,OAAO,CAAC,OAAwB;QACpC,MAAM,KAAK,GAAG,CAAC,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;QAC1C,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAS,WAAW,CAAC,IAAI,EAAE,CAAC;QAC9D,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAS,OAAO,CAAC,IAAI,WAAW,CAAC;QAE/D,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAClB,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC/B,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAE/B,IAAI,UAAU,GAAG,CAAC,CAAC;YACnB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACzD,UAAU,GAAG,IAAI,GAAG,IAAI,CAAC;YAC3B,CAAC;iBAAM,CAAC;gBACN,UAAU,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;YACpE,CAAC;YAED,OAAO,KAAK,KAAK,YAAY,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;QAC3D,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;CACF;AAvDD,4BAuDC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { INodeType, INodeTypeDescription, IExecuteContext, INodeExecutionData } from '../types/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Split In Batches (Loop Over Items) — processes items in batches.
|
|
4
|
+
*/
|
|
5
|
+
export declare class SplitInBatchesNode implements INodeType {
|
|
6
|
+
description: INodeTypeDescription;
|
|
7
|
+
execute(context: IExecuteContext): Promise<INodeExecutionData[][]>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=split-in-batches.node.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"split-in-batches.node.d.ts","sourceRoot":"","sources":["../../src/nodes/split-in-batches.node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,oBAAoB,EACpB,eAAe,EACf,kBAAkB,EACnB,MAAM,mBAAmB,CAAC;AAG3B;;GAEG;AACH,qBAAa,kBAAmB,YAAW,SAAS;IAClD,WAAW,EAAE,oBAAoB,CAyB/B;IAEI,OAAO,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;CAoBzE"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SplitInBatchesNode = void 0;
|
|
4
|
+
const index_js_1 = require("../types/index.js");
|
|
5
|
+
/**
|
|
6
|
+
* Split In Batches (Loop Over Items) — processes items in batches.
|
|
7
|
+
*/
|
|
8
|
+
class SplitInBatchesNode {
|
|
9
|
+
description = {
|
|
10
|
+
displayName: 'Loop Over Items',
|
|
11
|
+
name: 'splitInBatches',
|
|
12
|
+
group: ['flow'],
|
|
13
|
+
version: 1,
|
|
14
|
+
description: 'Split items into batches for processing',
|
|
15
|
+
icon: 'repeat',
|
|
16
|
+
category: 'flow',
|
|
17
|
+
defaults: { name: 'Loop Over Items', color: '#007755' },
|
|
18
|
+
inputs: [index_js_1.NodeConnectionType.Main],
|
|
19
|
+
outputs: [
|
|
20
|
+
{ type: index_js_1.NodeConnectionType.Main, displayName: 'Loop' },
|
|
21
|
+
{ type: index_js_1.NodeConnectionType.Main, displayName: 'Done' },
|
|
22
|
+
],
|
|
23
|
+
outputNames: ['Loop', 'Done'],
|
|
24
|
+
properties: [
|
|
25
|
+
{
|
|
26
|
+
displayName: 'Batch Size',
|
|
27
|
+
name: 'batchSize',
|
|
28
|
+
type: 'number',
|
|
29
|
+
default: 10,
|
|
30
|
+
description: 'Number of items per batch',
|
|
31
|
+
required: true,
|
|
32
|
+
},
|
|
33
|
+
],
|
|
34
|
+
};
|
|
35
|
+
async execute(context) {
|
|
36
|
+
const items = context.getInputData();
|
|
37
|
+
const batchSize = context.getParam('batchSize') || 10;
|
|
38
|
+
if (items.length === 0) {
|
|
39
|
+
return [[], items];
|
|
40
|
+
}
|
|
41
|
+
// For simple execution: output first batch to loop, rest as done
|
|
42
|
+
const batch = items.slice(0, batchSize);
|
|
43
|
+
const remaining = items.slice(batchSize);
|
|
44
|
+
if (remaining.length === 0) {
|
|
45
|
+
// All items processed, output to "Done"
|
|
46
|
+
return [[], batch];
|
|
47
|
+
}
|
|
48
|
+
// Output current batch to "Loop"
|
|
49
|
+
return [batch, []];
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
exports.SplitInBatchesNode = SplitInBatchesNode;
|
|
53
|
+
//# sourceMappingURL=split-in-batches.node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"split-in-batches.node.js","sourceRoot":"","sources":["../../src/nodes/split-in-batches.node.ts"],"names":[],"mappings":";;;AAMA,gDAAuD;AAEvD;;GAEG;AACH,MAAa,kBAAkB;IAC7B,WAAW,GAAyB;QAClC,WAAW,EAAE,iBAAiB;QAC9B,IAAI,EAAE,gBAAgB;QACtB,KAAK,EAAE,CAAC,MAAM,CAAC;QACf,OAAO,EAAE,CAAC;QACV,WAAW,EAAE,yCAAyC;QACtD,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,MAAM;QAChB,QAAQ,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,SAAS,EAAE;QACvD,MAAM,EAAE,CAAC,6BAAkB,CAAC,IAAI,CAAC;QACjC,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,6BAAkB,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE;YACtD,EAAE,IAAI,EAAE,6BAAkB,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE;SACvD;QACD,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;QAC7B,UAAU,EAAE;YACV;gBACE,WAAW,EAAE,YAAY;gBACzB,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,2BAA2B;gBACxC,QAAQ,EAAE,IAAI;aACf;SACF;KACF,CAAC;IAEF,KAAK,CAAC,OAAO,CAAC,OAAwB;QACpC,MAAM,KAAK,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;QACrC,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAS,WAAW,CAAC,IAAI,EAAE,CAAC;QAE9D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QACrB,CAAC;QAED,iEAAiE;QACjE,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QACxC,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAEzC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,wCAAwC;YACxC,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QACrB,CAAC;QAED,iCAAiC;QACjC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACrB,CAAC;CACF;AAhDD,gDAgDC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { INodeType, INodeTypeDescription, IExecuteContext, INodeExecutionData } from '../types/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Split Out — splits an array field into individual items.
|
|
4
|
+
*/
|
|
5
|
+
export declare class SplitOutNode implements INodeType {
|
|
6
|
+
description: INodeTypeDescription;
|
|
7
|
+
execute(context: IExecuteContext): Promise<INodeExecutionData[][]>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=split-out.node.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"split-out.node.d.ts","sourceRoot":"","sources":["../../src/nodes/split-out.node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,oBAAoB,EACpB,eAAe,EACf,kBAAkB,EACnB,MAAM,mBAAmB,CAAC;AAG3B;;GAEG;AACH,qBAAa,YAAa,YAAW,SAAS;IAC5C,WAAW,EAAE,oBAAoB,CA+B/B;IAEI,OAAO,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;CAoCzE"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SplitOutNode = void 0;
|
|
4
|
+
const index_js_1 = require("../types/index.js");
|
|
5
|
+
/**
|
|
6
|
+
* Split Out — splits an array field into individual items.
|
|
7
|
+
*/
|
|
8
|
+
class SplitOutNode {
|
|
9
|
+
description = {
|
|
10
|
+
displayName: 'Split Out',
|
|
11
|
+
name: 'splitOut',
|
|
12
|
+
group: ['transform'],
|
|
13
|
+
version: 1,
|
|
14
|
+
description: 'Split an array field into separate items',
|
|
15
|
+
icon: 'git-branch',
|
|
16
|
+
category: 'transform',
|
|
17
|
+
defaults: { name: 'Split Out', color: '#00CC88' },
|
|
18
|
+
inputs: [index_js_1.NodeConnectionType.Main],
|
|
19
|
+
outputs: [index_js_1.NodeConnectionType.Main],
|
|
20
|
+
properties: [
|
|
21
|
+
{
|
|
22
|
+
displayName: 'Field To Split Out',
|
|
23
|
+
name: 'fieldToSplitOut',
|
|
24
|
+
type: 'string',
|
|
25
|
+
default: '',
|
|
26
|
+
description: 'The name of the array field to split',
|
|
27
|
+
required: true,
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
displayName: 'Include Other Fields',
|
|
31
|
+
name: 'include',
|
|
32
|
+
type: 'options',
|
|
33
|
+
default: 'noOtherFields',
|
|
34
|
+
options: [
|
|
35
|
+
{ name: 'No Other Fields', value: 'noOtherFields' },
|
|
36
|
+
{ name: 'All Other Fields', value: 'allOtherFields' },
|
|
37
|
+
],
|
|
38
|
+
},
|
|
39
|
+
],
|
|
40
|
+
};
|
|
41
|
+
async execute(context) {
|
|
42
|
+
const items = context.getInputData();
|
|
43
|
+
const fieldName = context.getParam('fieldToSplitOut') || '';
|
|
44
|
+
const include = context.getParam('include') || 'noOtherFields';
|
|
45
|
+
const result = [];
|
|
46
|
+
for (const item of items) {
|
|
47
|
+
const arrayValue = item.json[fieldName];
|
|
48
|
+
if (!Array.isArray(arrayValue)) {
|
|
49
|
+
result.push(item);
|
|
50
|
+
continue;
|
|
51
|
+
}
|
|
52
|
+
for (const element of arrayValue) {
|
|
53
|
+
if (include === 'allOtherFields') {
|
|
54
|
+
const newJson = { ...item.json };
|
|
55
|
+
delete newJson[fieldName];
|
|
56
|
+
result.push({
|
|
57
|
+
json: {
|
|
58
|
+
...newJson,
|
|
59
|
+
...(typeof element === 'object' && element !== null ? element : { [fieldName]: element }),
|
|
60
|
+
},
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
result.push({
|
|
65
|
+
json: typeof element === 'object' && element !== null
|
|
66
|
+
? element
|
|
67
|
+
: { [fieldName]: element },
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return [result];
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
exports.SplitOutNode = SplitOutNode;
|
|
76
|
+
//# sourceMappingURL=split-out.node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"split-out.node.js","sourceRoot":"","sources":["../../src/nodes/split-out.node.ts"],"names":[],"mappings":";;;AAMA,gDAAuD;AAEvD;;GAEG;AACH,MAAa,YAAY;IACvB,WAAW,GAAyB;QAClC,WAAW,EAAE,WAAW;QACxB,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,CAAC,WAAW,CAAC;QACpB,OAAO,EAAE,CAAC;QACV,WAAW,EAAE,0CAA0C;QACvD,IAAI,EAAE,YAAY;QAClB,QAAQ,EAAE,WAAW;QACrB,QAAQ,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE;QACjD,MAAM,EAAE,CAAC,6BAAkB,CAAC,IAAI,CAAC;QACjC,OAAO,EAAE,CAAC,6BAAkB,CAAC,IAAI,CAAC;QAClC,UAAU,EAAE;YACV;gBACE,WAAW,EAAE,oBAAoB;gBACjC,IAAI,EAAE,iBAAiB;gBACvB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,sCAAsC;gBACnD,QAAQ,EAAE,IAAI;aACf;YACD;gBACE,WAAW,EAAE,sBAAsB;gBACnC,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,eAAe;gBACxB,OAAO,EAAE;oBACP,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,eAAe,EAAE;oBACnD,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,gBAAgB,EAAE;iBACtD;aACF;SACF;KACF,CAAC;IAEF,KAAK,CAAC,OAAO,CAAC,OAAwB;QACpC,MAAM,KAAK,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;QACrC,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAS,iBAAiB,CAAC,IAAI,EAAE,CAAC;QACpE,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAS,SAAS,CAAC,IAAI,eAAe,CAAC;QAEvE,MAAM,MAAM,GAAyB,EAAE,CAAC;QAExC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACxC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC/B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAClB,SAAS;YACX,CAAC;YAED,KAAK,MAAM,OAAO,IAAI,UAAU,EAAE,CAAC;gBACjC,IAAI,OAAO,KAAK,gBAAgB,EAAE,CAAC;oBACjC,MAAM,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;oBACjC,OAAO,OAAO,CAAC,SAAS,CAAC,CAAC;oBAC1B,MAAM,CAAC,IAAI,CAAC;wBACV,IAAI,EAAE;4BACJ,GAAG,OAAO;4BACV,GAAG,CAAC,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC;yBAC1F;qBACF,CAAC,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,IAAI,CAAC;wBACV,IAAI,EAAE,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI;4BACnD,CAAC,CAAC,OAAkC;4BACpC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE;qBAC7B,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,CAAC,MAAM,CAAC,CAAC;IAClB,CAAC;CACF;AAtED,oCAsEC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { INodeType, INodeTypeDescription, IExecuteContext, INodeExecutionData } from '../types/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Switch Node — multi-branch conditional routing.
|
|
4
|
+
*
|
|
5
|
+
* Routes data to one of multiple outputs based on matching rules.
|
|
6
|
+
* Similar to n8n's Switch node — evaluates conditions in order,
|
|
7
|
+
* routes to the first matching output, with a fallback output.
|
|
8
|
+
*/
|
|
9
|
+
export declare class SwitchNode implements INodeType {
|
|
10
|
+
description: INodeTypeDescription;
|
|
11
|
+
execute(context: IExecuteContext): Promise<INodeExecutionData[][]>;
|
|
12
|
+
private evaluateRules;
|
|
13
|
+
private getNestedValue;
|
|
14
|
+
private matchCondition;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=switch.node.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"switch.node.d.ts","sourceRoot":"","sources":["../../src/nodes/switch.node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,oBAAoB,EACpB,eAAe,EACf,kBAAkB,EACnB,MAAM,mBAAmB,CAAC;AAG3B;;;;;;GAMG;AACH,qBAAa,UAAW,YAAW,SAAS;IAC1C,WAAW,EAAE,oBAAoB,CAsE/B;IAEI,OAAO,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;IAsCxE,OAAO,CAAC,aAAa;IAgBrB,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,cAAc;CAsBvB"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SwitchNode = void 0;
|
|
4
|
+
const index_js_1 = require("../types/index.js");
|
|
5
|
+
/**
|
|
6
|
+
* Switch Node — multi-branch conditional routing.
|
|
7
|
+
*
|
|
8
|
+
* Routes data to one of multiple outputs based on matching rules.
|
|
9
|
+
* Similar to n8n's Switch node — evaluates conditions in order,
|
|
10
|
+
* routes to the first matching output, with a fallback output.
|
|
11
|
+
*/
|
|
12
|
+
class SwitchNode {
|
|
13
|
+
description = {
|
|
14
|
+
displayName: 'Switch',
|
|
15
|
+
name: 'switch',
|
|
16
|
+
group: ['transform'],
|
|
17
|
+
version: 1,
|
|
18
|
+
description: 'Route data to different outputs based on conditions.',
|
|
19
|
+
icon: 'git-merge',
|
|
20
|
+
category: 'flow',
|
|
21
|
+
defaults: {
|
|
22
|
+
name: 'Switch',
|
|
23
|
+
color: '#506000',
|
|
24
|
+
},
|
|
25
|
+
inputs: [index_js_1.NodeConnectionType.Main],
|
|
26
|
+
outputs: [
|
|
27
|
+
{ type: index_js_1.NodeConnectionType.Main, displayName: 'Output 0' },
|
|
28
|
+
{ type: index_js_1.NodeConnectionType.Main, displayName: 'Output 1' },
|
|
29
|
+
{ type: index_js_1.NodeConnectionType.Main, displayName: 'Output 2' },
|
|
30
|
+
{ type: index_js_1.NodeConnectionType.Main, displayName: 'Output 3' },
|
|
31
|
+
],
|
|
32
|
+
outputNames: ['Output 0', 'Output 1', 'Output 2', 'Output 3'],
|
|
33
|
+
properties: [
|
|
34
|
+
{
|
|
35
|
+
displayName: 'Mode',
|
|
36
|
+
name: 'mode',
|
|
37
|
+
type: 'options',
|
|
38
|
+
default: 'rules',
|
|
39
|
+
description: 'How to route items.',
|
|
40
|
+
options: [
|
|
41
|
+
{
|
|
42
|
+
name: 'Rules',
|
|
43
|
+
value: 'rules',
|
|
44
|
+
description: 'Route based on matching rules for each output.',
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
name: 'Expression',
|
|
48
|
+
value: 'expression',
|
|
49
|
+
description: 'Route based on an expression that returns the output index (0-3).',
|
|
50
|
+
},
|
|
51
|
+
],
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
displayName: 'Output Index Expression',
|
|
55
|
+
name: 'output',
|
|
56
|
+
type: 'string',
|
|
57
|
+
default: '0',
|
|
58
|
+
description: 'Expression that returns the output index (0-3). Items go to the fallback output if out of range.',
|
|
59
|
+
displayOptions: {
|
|
60
|
+
show: { mode: ['expression'] },
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
displayName: 'Routing Rules',
|
|
65
|
+
name: 'rules',
|
|
66
|
+
type: 'json',
|
|
67
|
+
default: '[]',
|
|
68
|
+
description: 'JSON array of rules: [{"output": 0, "field": "status", "operation": "equals", "value": "active"}, ...]. First matching rule wins.',
|
|
69
|
+
displayOptions: {
|
|
70
|
+
show: { mode: ['rules'] },
|
|
71
|
+
},
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
displayName: 'Fallback Output',
|
|
75
|
+
name: 'fallbackOutput',
|
|
76
|
+
type: 'number',
|
|
77
|
+
default: 3,
|
|
78
|
+
description: 'Output index for items that do not match any rule (0-3).',
|
|
79
|
+
},
|
|
80
|
+
],
|
|
81
|
+
};
|
|
82
|
+
async execute(context) {
|
|
83
|
+
const inputData = context.getInputData();
|
|
84
|
+
const mode = context.getParam('mode');
|
|
85
|
+
const fallbackOutput = context.getParam('fallbackOutput');
|
|
86
|
+
// 4 output branches
|
|
87
|
+
const outputs = [[], [], [], []];
|
|
88
|
+
const maxOutput = outputs.length - 1;
|
|
89
|
+
for (let i = 0; i < inputData.length; i++) {
|
|
90
|
+
const item = inputData[i];
|
|
91
|
+
let targetOutput;
|
|
92
|
+
if (mode === 'expression') {
|
|
93
|
+
const outputRaw = context.getParam('output');
|
|
94
|
+
const resolved = typeof outputRaw === 'string' && outputRaw.includes('{{')
|
|
95
|
+
? context.resolveExpression(outputRaw, i)
|
|
96
|
+
: outputRaw;
|
|
97
|
+
targetOutput = Number(resolved);
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
// rules mode
|
|
101
|
+
const rulesRaw = context.getParam('rules');
|
|
102
|
+
const rules = typeof rulesRaw === 'string' ? JSON.parse(rulesRaw) : rulesRaw;
|
|
103
|
+
targetOutput = this.evaluateRules(item, rules);
|
|
104
|
+
}
|
|
105
|
+
// Clamp or fallback
|
|
106
|
+
if (isNaN(targetOutput) || targetOutput < 0 || targetOutput > maxOutput) {
|
|
107
|
+
targetOutput = Math.min(Math.max(fallbackOutput, 0), maxOutput);
|
|
108
|
+
}
|
|
109
|
+
outputs[targetOutput].push(item);
|
|
110
|
+
}
|
|
111
|
+
return outputs;
|
|
112
|
+
}
|
|
113
|
+
evaluateRules(item, rules) {
|
|
114
|
+
if (!Array.isArray(rules))
|
|
115
|
+
return -1;
|
|
116
|
+
for (const rule of rules) {
|
|
117
|
+
const fieldValue = this.getNestedValue(item.json, rule.field);
|
|
118
|
+
if (this.matchCondition(fieldValue, rule.operation, rule.value)) {
|
|
119
|
+
return rule.output;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
return -1; // No match → fallback
|
|
123
|
+
}
|
|
124
|
+
getNestedValue(obj, path) {
|
|
125
|
+
return path.split('.').reduce((curr, key) => {
|
|
126
|
+
if (curr && typeof curr === 'object') {
|
|
127
|
+
return curr[key];
|
|
128
|
+
}
|
|
129
|
+
return undefined;
|
|
130
|
+
}, obj);
|
|
131
|
+
}
|
|
132
|
+
matchCondition(fieldValue, operation, value) {
|
|
133
|
+
switch (operation) {
|
|
134
|
+
case 'equals':
|
|
135
|
+
return String(fieldValue) === String(value);
|
|
136
|
+
case 'notEquals':
|
|
137
|
+
return String(fieldValue) !== String(value);
|
|
138
|
+
case 'contains':
|
|
139
|
+
return String(fieldValue).includes(String(value));
|
|
140
|
+
case 'greaterThan':
|
|
141
|
+
return Number(fieldValue) > Number(value);
|
|
142
|
+
case 'lessThan':
|
|
143
|
+
return Number(fieldValue) < Number(value);
|
|
144
|
+
case 'isEmpty':
|
|
145
|
+
return fieldValue === null || fieldValue === undefined || fieldValue === '';
|
|
146
|
+
case 'isNotEmpty':
|
|
147
|
+
return fieldValue !== null && fieldValue !== undefined && fieldValue !== '';
|
|
148
|
+
case 'regex':
|
|
149
|
+
return new RegExp(String(value)).test(String(fieldValue));
|
|
150
|
+
default:
|
|
151
|
+
return false;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
exports.SwitchNode = SwitchNode;
|
|
156
|
+
//# sourceMappingURL=switch.node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"switch.node.js","sourceRoot":"","sources":["../../src/nodes/switch.node.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { INodeType, INodeTypeDescription, IExecuteContext, INodeExecutionData } from '../types/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Wait Node — pauses execution for a specified duration.
|
|
4
|
+
*
|
|
5
|
+
* Delays workflow execution. Useful for rate-limiting, polling intervals,
|
|
6
|
+
* or waiting for external systems to process.
|
|
7
|
+
*/
|
|
8
|
+
export declare class WaitNode implements INodeType {
|
|
9
|
+
description: INodeTypeDescription;
|
|
10
|
+
execute(context: IExecuteContext): Promise<INodeExecutionData[][]>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=wait.node.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wait.node.d.ts","sourceRoot":"","sources":["../../src/nodes/wait.node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,oBAAoB,EACpB,eAAe,EACf,kBAAkB,EACnB,MAAM,mBAAmB,CAAC;AAE3B;;;;;GAKG;AACH,qBAAa,QAAS,YAAW,SAAS;IACxC,WAAW,EAAE,oBAAoB,CAwC/B;IAEI,OAAO,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;CA+BzE"}
|