mirror of
https://github.com/n8n-io/n8n.git
synced 2025-01-11 04:47:29 -08:00
refactor: Use NodeConnectionType
consistently across the code base (no-changelog) (#10595)
This commit is contained in:
parent
1491cbd228
commit
c4eb3746d7
|
@ -1,6 +1,5 @@
|
||||||
import { NodeConnectionType, NodeOperationError } from 'n8n-workflow';
|
import { NodeConnectionType, NodeOperationError } from 'n8n-workflow';
|
||||||
import type {
|
import type {
|
||||||
ConnectionTypes,
|
|
||||||
INodeInputConfiguration,
|
INodeInputConfiguration,
|
||||||
INodeInputFilter,
|
INodeInputFilter,
|
||||||
IExecuteFunctions,
|
IExecuteFunctions,
|
||||||
|
@ -28,16 +27,16 @@ import { toolsAgentExecute } from './agents/ToolsAgent/execute';
|
||||||
function getInputs(
|
function getInputs(
|
||||||
agent: 'toolsAgent' | 'conversationalAgent' | 'openAiFunctionsAgent' | 'reActAgent' | 'sqlAgent',
|
agent: 'toolsAgent' | 'conversationalAgent' | 'openAiFunctionsAgent' | 'reActAgent' | 'sqlAgent',
|
||||||
hasOutputParser?: boolean,
|
hasOutputParser?: boolean,
|
||||||
): Array<ConnectionTypes | INodeInputConfiguration> {
|
): Array<NodeConnectionType | INodeInputConfiguration> {
|
||||||
interface SpecialInput {
|
interface SpecialInput {
|
||||||
type: ConnectionTypes;
|
type: NodeConnectionType;
|
||||||
filter?: INodeInputFilter;
|
filter?: INodeInputFilter;
|
||||||
required?: boolean;
|
required?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
const getInputData = (
|
const getInputData = (
|
||||||
inputs: SpecialInput[],
|
inputs: SpecialInput[],
|
||||||
): Array<ConnectionTypes | INodeInputConfiguration> => {
|
): Array<NodeConnectionType | INodeInputConfiguration> => {
|
||||||
const displayNames: { [key: string]: string } = {
|
const displayNames: { [key: string]: string } = {
|
||||||
[NodeConnectionType.AiLanguageModel]: 'Model',
|
[NodeConnectionType.AiLanguageModel]: 'Model',
|
||||||
[NodeConnectionType.AiMemory]: 'Memory',
|
[NodeConnectionType.AiMemory]: 'Memory',
|
||||||
|
|
|
@ -75,7 +75,7 @@ export class ChatTrigger extends Node {
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
})() }}`,
|
})() }}`,
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
credentials: [
|
credentials: [
|
||||||
{
|
{
|
||||||
// eslint-disable-next-line n8n-nodes-base/node-class-description-credentials-name-unsuffixed
|
// eslint-disable-next-line n8n-nodes-base/node-class-description-credentials-name-unsuffixed
|
||||||
|
|
|
@ -90,7 +90,7 @@ export const versionDescription: INodeTypeDescription = {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
inputs: `={{(${configureNodeInputs})($parameter.resource, $parameter.operation, $parameter.hideTools)}}`,
|
inputs: `={{(${configureNodeInputs})($parameter.resource, $parameter.operation, $parameter.hideTools)}}`,
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
credentials: [
|
credentials: [
|
||||||
{
|
{
|
||||||
name: 'openAiApi',
|
name: 'openAiApi',
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import { NodeOperationError, NodeConnectionType } from 'n8n-workflow';
|
import { NodeOperationError, NodeConnectionType } from 'n8n-workflow';
|
||||||
import type { ConnectionTypes, IExecuteFunctions, INodeExecutionData } from 'n8n-workflow';
|
import type { IExecuteFunctions, INodeExecutionData } from 'n8n-workflow';
|
||||||
|
|
||||||
import type { Tool } from '@langchain/core/tools';
|
import type { Tool } from '@langchain/core/tools';
|
||||||
import type { BaseMessage } from '@langchain/core/messages';
|
import type { BaseMessage } from '@langchain/core/messages';
|
||||||
|
@ -31,7 +31,7 @@ export async function callMethodAsync<T>(
|
||||||
this: T,
|
this: T,
|
||||||
parameters: {
|
parameters: {
|
||||||
executeFunctions: IExecuteFunctions;
|
executeFunctions: IExecuteFunctions;
|
||||||
connectionType: ConnectionTypes;
|
connectionType: NodeConnectionType;
|
||||||
currentNodeRunIndex: number;
|
currentNodeRunIndex: number;
|
||||||
method: (...args: any[]) => Promise<unknown>;
|
method: (...args: any[]) => Promise<unknown>;
|
||||||
arguments: unknown[];
|
arguments: unknown[];
|
||||||
|
@ -78,7 +78,7 @@ export function callMethodSync<T>(
|
||||||
this: T,
|
this: T,
|
||||||
parameters: {
|
parameters: {
|
||||||
executeFunctions: IExecuteFunctions;
|
executeFunctions: IExecuteFunctions;
|
||||||
connectionType: ConnectionTypes;
|
connectionType: NodeConnectionType;
|
||||||
currentNodeRunIndex: number;
|
currentNodeRunIndex: number;
|
||||||
method: (...args: any[]) => T;
|
method: (...args: any[]) => T;
|
||||||
arguments: unknown[];
|
arguments: unknown[];
|
||||||
|
@ -123,7 +123,7 @@ export function logWrapper(
|
||||||
) {
|
) {
|
||||||
return new Proxy(originalInstance, {
|
return new Proxy(originalInstance, {
|
||||||
get: (target, prop) => {
|
get: (target, prop) => {
|
||||||
let connectionType: ConnectionTypes | undefined;
|
let connectionType: NodeConnectionType | undefined;
|
||||||
// ========== BaseChatMemory ==========
|
// ========== BaseChatMemory ==========
|
||||||
if (isBaseChatMemory(originalInstance)) {
|
if (isBaseChatMemory(originalInstance)) {
|
||||||
if (prop === 'loadMemoryVariables' && 'loadMemoryVariables' in target) {
|
if (prop === 'loadMemoryVariables' && 'loadMemoryVariables' in target) {
|
||||||
|
|
|
@ -7,7 +7,7 @@ import type {
|
||||||
INode,
|
INode,
|
||||||
INodeProperties,
|
INodeProperties,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
import { deepCopy } from 'n8n-workflow';
|
import { NodeConnectionType, deepCopy } from 'n8n-workflow';
|
||||||
import { Workflow } from 'n8n-workflow';
|
import { Workflow } from 'n8n-workflow';
|
||||||
import { CredentialsHelper } from '@/credentials-helper';
|
import { CredentialsHelper } from '@/credentials-helper';
|
||||||
import { NodeTypes } from '@/node-types';
|
import { NodeTypes } from '@/node-types';
|
||||||
|
@ -34,8 +34,8 @@ describe('CredentialsHelper', () => {
|
||||||
name: 'Set',
|
name: 'Set',
|
||||||
color: '#0000FF',
|
color: '#0000FF',
|
||||||
},
|
},
|
||||||
inputs: ['main'],
|
inputs: [NodeConnectionType.Main],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
properties: [
|
properties: [
|
||||||
{
|
{
|
||||||
displayName: 'Value1',
|
displayName: 'Value1',
|
||||||
|
|
|
@ -1,6 +1,11 @@
|
||||||
import { readFileSync } from 'fs';
|
import { readFileSync } from 'fs';
|
||||||
import { agent as testAgent } from 'supertest';
|
import { agent as testAgent } from 'supertest';
|
||||||
import type { INodeType, INodeTypeDescription, IWebhookFunctions } from 'n8n-workflow';
|
import {
|
||||||
|
NodeConnectionType,
|
||||||
|
type INodeType,
|
||||||
|
type INodeTypeDescription,
|
||||||
|
type IWebhookFunctions,
|
||||||
|
} from 'n8n-workflow';
|
||||||
|
|
||||||
import { AbstractServer } from '@/abstract-server';
|
import { AbstractServer } from '@/abstract-server';
|
||||||
import { ExternalHooks } from '@/external-hooks';
|
import { ExternalHooks } from '@/external-hooks';
|
||||||
|
@ -182,7 +187,7 @@ describe('Webhook API', () => {
|
||||||
description: '',
|
description: '',
|
||||||
defaults: {},
|
defaults: {},
|
||||||
inputs: [],
|
inputs: [],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
webhooks: [
|
webhooks: [
|
||||||
{
|
{
|
||||||
name: 'default',
|
name: 'default',
|
||||||
|
|
|
@ -38,7 +38,6 @@ import { extension, lookup } from 'mime-types';
|
||||||
import type {
|
import type {
|
||||||
BinaryHelperFunctions,
|
BinaryHelperFunctions,
|
||||||
CloseFunction,
|
CloseFunction,
|
||||||
ConnectionTypes,
|
|
||||||
ContextType,
|
ContextType,
|
||||||
EventNamesAiNodesType,
|
EventNamesAiNodesType,
|
||||||
FieldType,
|
FieldType,
|
||||||
|
@ -105,6 +104,7 @@ import type {
|
||||||
SchedulingFunctions,
|
SchedulingFunctions,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
import {
|
import {
|
||||||
|
NodeConnectionType,
|
||||||
ExpressionError,
|
ExpressionError,
|
||||||
LoggerProxy as Logger,
|
LoggerProxy as Logger,
|
||||||
NodeApiError,
|
NodeApiError,
|
||||||
|
@ -2623,13 +2623,13 @@ const addExecutionDataFunctions = async (
|
||||||
nodeName: string,
|
nodeName: string,
|
||||||
data: INodeExecutionData[][] | ExecutionBaseError,
|
data: INodeExecutionData[][] | ExecutionBaseError,
|
||||||
runExecutionData: IRunExecutionData,
|
runExecutionData: IRunExecutionData,
|
||||||
connectionType: ConnectionTypes,
|
connectionType: NodeConnectionType,
|
||||||
additionalData: IWorkflowExecuteAdditionalData,
|
additionalData: IWorkflowExecuteAdditionalData,
|
||||||
sourceNodeName: string,
|
sourceNodeName: string,
|
||||||
sourceNodeRunIndex: number,
|
sourceNodeRunIndex: number,
|
||||||
currentNodeRunIndex: number,
|
currentNodeRunIndex: number,
|
||||||
): Promise<void> => {
|
): Promise<void> => {
|
||||||
if (connectionType === 'main') {
|
if (connectionType === NodeConnectionType.Main) {
|
||||||
throw new ApplicationError('Setting type is not supported for main connection', {
|
throw new ApplicationError('Setting type is not supported for main connection', {
|
||||||
extra: { type },
|
extra: { type },
|
||||||
});
|
});
|
||||||
|
@ -2732,7 +2732,7 @@ async function getInputConnectionData(
|
||||||
executeData: IExecuteData | undefined,
|
executeData: IExecuteData | undefined,
|
||||||
mode: WorkflowExecuteMode,
|
mode: WorkflowExecuteMode,
|
||||||
closeFunctions: CloseFunction[],
|
closeFunctions: CloseFunction[],
|
||||||
inputName: ConnectionTypes,
|
inputName: NodeConnectionType,
|
||||||
itemIndex: number,
|
itemIndex: number,
|
||||||
): Promise<unknown> {
|
): Promise<unknown> {
|
||||||
const node = this.getNode();
|
const node = this.getNode();
|
||||||
|
@ -3676,7 +3676,7 @@ export function getExecuteFunctions(
|
||||||
},
|
},
|
||||||
|
|
||||||
async getInputConnectionData(
|
async getInputConnectionData(
|
||||||
inputName: ConnectionTypes,
|
inputName: NodeConnectionType,
|
||||||
itemIndex: number,
|
itemIndex: number,
|
||||||
): Promise<unknown> {
|
): Promise<unknown> {
|
||||||
return await getInputConnectionData.call(
|
return await getInputConnectionData.call(
|
||||||
|
@ -3817,7 +3817,7 @@ export function getExecuteFunctions(
|
||||||
},
|
},
|
||||||
|
|
||||||
addInputData(
|
addInputData(
|
||||||
connectionType: ConnectionTypes,
|
connectionType: NodeConnectionType,
|
||||||
data: INodeExecutionData[][] | ExecutionBaseError,
|
data: INodeExecutionData[][] | ExecutionBaseError,
|
||||||
): { index: number } {
|
): { index: number } {
|
||||||
const nodeName = this.getNode().name;
|
const nodeName = this.getNode().name;
|
||||||
|
@ -3847,7 +3847,7 @@ export function getExecuteFunctions(
|
||||||
return { index: currentNodeRunIndex };
|
return { index: currentNodeRunIndex };
|
||||||
},
|
},
|
||||||
addOutputData(
|
addOutputData(
|
||||||
connectionType: ConnectionTypes,
|
connectionType: NodeConnectionType,
|
||||||
currentNodeRunIndex: number,
|
currentNodeRunIndex: number,
|
||||||
data: INodeExecutionData[][] | ExecutionBaseError,
|
data: INodeExecutionData[][] | ExecutionBaseError,
|
||||||
): void {
|
): void {
|
||||||
|
@ -4238,7 +4238,7 @@ export function getExecuteWebhookFunctions(
|
||||||
return additionalData.httpRequest.headers;
|
return additionalData.httpRequest.headers;
|
||||||
},
|
},
|
||||||
async getInputConnectionData(
|
async getInputConnectionData(
|
||||||
inputName: ConnectionTypes,
|
inputName: NodeConnectionType,
|
||||||
itemIndex: number,
|
itemIndex: number,
|
||||||
): Promise<unknown> {
|
): Promise<unknown> {
|
||||||
// To be able to use expressions like "$json.sessionId" set the
|
// To be able to use expressions like "$json.sessionId" set the
|
||||||
|
|
|
@ -623,7 +623,11 @@ export class WorkflowExecute {
|
||||||
|
|
||||||
// Check if any of the parent nodes does not have any inputs. That
|
// Check if any of the parent nodes does not have any inputs. That
|
||||||
// would mean that it has to get added to the list of nodes to process.
|
// would mean that it has to get added to the list of nodes to process.
|
||||||
const parentNodes = workflow.getParentNodes(inputData.node, 'main', -1);
|
const parentNodes = workflow.getParentNodes(
|
||||||
|
inputData.node,
|
||||||
|
NodeConnectionType.Main,
|
||||||
|
-1,
|
||||||
|
);
|
||||||
let nodeToAdd: string | undefined = inputData.node;
|
let nodeToAdd: string | undefined = inputData.node;
|
||||||
parentNodes.push(inputData.node);
|
parentNodes.push(inputData.node);
|
||||||
parentNodes.reverse();
|
parentNodes.reverse();
|
||||||
|
@ -988,7 +992,11 @@ export class WorkflowExecute {
|
||||||
connectionIndex++
|
connectionIndex++
|
||||||
) {
|
) {
|
||||||
if (
|
if (
|
||||||
workflow.getHighestNode(executionNode.name, 'main', connectionIndex).length === 0
|
workflow.getHighestNode(
|
||||||
|
executionNode.name,
|
||||||
|
NodeConnectionType.Main,
|
||||||
|
connectionIndex,
|
||||||
|
).length === 0
|
||||||
) {
|
) {
|
||||||
// If there is no valid incoming node (if all are disabled)
|
// If there is no valid incoming node (if all are disabled)
|
||||||
// then ignore that it has inputs and simply execute it as it is without
|
// then ignore that it has inputs and simply execute it as it is without
|
||||||
|
|
|
@ -45,8 +45,8 @@ export const predefinedNodesTypes: INodeTypeData = {
|
||||||
name: 'Version Test',
|
name: 'Version Test',
|
||||||
color: '#0000FF',
|
color: '#0000FF',
|
||||||
},
|
},
|
||||||
inputs: ['main'],
|
inputs: [NodeConnectionType.Main],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
properties: [
|
properties: [
|
||||||
{
|
{
|
||||||
displayName: 'Display V1',
|
displayName: 'Display V1',
|
||||||
|
|
|
@ -11,7 +11,7 @@ import type {
|
||||||
INodeTypeDescription,
|
INodeTypeDescription,
|
||||||
INodeIssues,
|
INodeIssues,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
import { NodeHelpers, Workflow } from 'n8n-workflow';
|
import { NodeConnectionType, NodeHelpers, Workflow } from 'n8n-workflow';
|
||||||
import { uuid } from '@jsplumb/util';
|
import { uuid } from '@jsplumb/util';
|
||||||
import { mock } from 'vitest-mock-extended';
|
import { mock } from 'vitest-mock-extended';
|
||||||
|
|
||||||
|
@ -52,8 +52,8 @@ export const mockNodeTypeDescription = ({
|
||||||
name,
|
name,
|
||||||
version = 1,
|
version = 1,
|
||||||
credentials = [],
|
credentials = [],
|
||||||
inputs = ['main'],
|
inputs = [NodeConnectionType.Main],
|
||||||
outputs = ['main'],
|
outputs = [NodeConnectionType.Main],
|
||||||
}: {
|
}: {
|
||||||
name: INodeTypeDescription['name'];
|
name: INodeTypeDescription['name'];
|
||||||
version?: INodeTypeDescription['version'];
|
version?: INodeTypeDescription['version'];
|
||||||
|
|
|
@ -11,6 +11,7 @@ import { createExpressionTelemetryPayload } from '@/utils/telemetryUtils';
|
||||||
import { useTelemetry } from '@/composables/useTelemetry';
|
import { useTelemetry } from '@/composables/useTelemetry';
|
||||||
import type { Segment } from '@/types/expressions';
|
import type { Segment } from '@/types/expressions';
|
||||||
import type { INodeProperties } from 'n8n-workflow';
|
import type { INodeProperties } from 'n8n-workflow';
|
||||||
|
import { NodeConnectionType } from 'n8n-workflow';
|
||||||
import { outputTheme } from './ExpressionEditorModal/theme';
|
import { outputTheme } from './ExpressionEditorModal/theme';
|
||||||
import ExpressionOutput from './InlineExpressionEditor/ExpressionOutput.vue';
|
import ExpressionOutput from './InlineExpressionEditor/ExpressionOutput.vue';
|
||||||
import RunDataSchema from './RunDataSchema.vue';
|
import RunDataSchema from './RunDataSchema.vue';
|
||||||
|
@ -152,7 +153,7 @@ async function onDrop(expression: string, event: MouseEvent) {
|
||||||
:nodes="parentNodes"
|
:nodes="parentNodes"
|
||||||
mapping-enabled
|
mapping-enabled
|
||||||
pane-type="input"
|
pane-type="input"
|
||||||
connection-type="main"
|
:connection-type="NodeConnectionType.Main"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,6 @@ import { useNodeTypesStore } from '@/stores/nodeTypes.store';
|
||||||
import { useUIStore } from '@/stores/ui.store';
|
import { useUIStore } from '@/stores/ui.store';
|
||||||
import { useWorkflowsStore } from '@/stores/workflows.store';
|
import { useWorkflowsStore } from '@/stores/workflows.store';
|
||||||
import type {
|
import type {
|
||||||
ConnectionTypes,
|
|
||||||
IConnectedNode,
|
IConnectedNode,
|
||||||
INodeInputConfiguration,
|
INodeInputConfiguration,
|
||||||
INodeOutputConfiguration,
|
INodeOutputConfiguration,
|
||||||
|
@ -121,10 +120,10 @@ export default defineComponent({
|
||||||
} else {
|
} else {
|
||||||
// If we can not figure out the node type we set no outputs
|
// If we can not figure out the node type we set no outputs
|
||||||
if (!Array.isArray(inputs)) {
|
if (!Array.isArray(inputs)) {
|
||||||
inputs = [] as ConnectionTypes[];
|
inputs = [] as NodeConnectionType[];
|
||||||
}
|
}
|
||||||
if (!Array.isArray(outputs)) {
|
if (!Array.isArray(outputs)) {
|
||||||
outputs = [] as ConnectionTypes[];
|
outputs = [] as NodeConnectionType[];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -184,7 +183,7 @@ export default defineComponent({
|
||||||
},
|
},
|
||||||
rootNodesParents() {
|
rootNodesParents() {
|
||||||
const workflow = this.workflow;
|
const workflow = this.workflow;
|
||||||
const parentNodes = [...workflow.getParentNodes(this.rootNode, 'main')]
|
const parentNodes = [...workflow.getParentNodes(this.rootNode, NodeConnectionType.Main)]
|
||||||
.reverse()
|
.reverse()
|
||||||
.map((parent): IConnectedNode => ({ name: parent, depth: 1, indicies: [] }));
|
.map((parent): IConnectedNode => ({ name: parent, depth: 1, indicies: [] }));
|
||||||
|
|
||||||
|
@ -274,8 +273,8 @@ export default defineComponent({
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
filterOutConnectionType(
|
filterOutConnectionType(
|
||||||
item: ConnectionTypes | INodeOutputConfiguration | INodeInputConfiguration,
|
item: NodeConnectionType | INodeOutputConfiguration | INodeInputConfiguration,
|
||||||
type: ConnectionTypes,
|
type: NodeConnectionType,
|
||||||
) {
|
) {
|
||||||
if (!item) return false;
|
if (!item) return false;
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@ import { useNodeTypesStore } from '@/stores/nodeTypes.store';
|
||||||
import { useWorkflowsStore } from '@/stores/workflows.store';
|
import { useWorkflowsStore } from '@/stores/workflows.store';
|
||||||
import { computed, onMounted, onBeforeUnmount } from 'vue';
|
import { computed, onMounted, onBeforeUnmount } from 'vue';
|
||||||
import NodeIcon from '@/components/NodeIcon.vue';
|
import NodeIcon from '@/components/NodeIcon.vue';
|
||||||
import type { INodeTypeDescription } from 'n8n-workflow';
|
import { NodeConnectionType, type INodeTypeDescription } from 'n8n-workflow';
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
rootNode: INodeUi;
|
rootNode: INodeUi;
|
||||||
|
@ -71,8 +71,12 @@ const connectedNodes = computed<
|
||||||
[FloatingNodePosition.top]: getINodesFromNames(
|
[FloatingNodePosition.top]: getINodesFromNames(
|
||||||
workflow.getChildNodes(rootName, 'ALL_NON_MAIN'),
|
workflow.getChildNodes(rootName, 'ALL_NON_MAIN'),
|
||||||
),
|
),
|
||||||
[FloatingNodePosition.right]: getINodesFromNames(workflow.getChildNodes(rootName, 'main', 1)),
|
[FloatingNodePosition.right]: getINodesFromNames(
|
||||||
[FloatingNodePosition.left]: getINodesFromNames(workflow.getParentNodes(rootName, 'main', 1)),
|
workflow.getChildNodes(rootName, NodeConnectionType.Main, 1),
|
||||||
|
),
|
||||||
|
[FloatingNodePosition.left]: getINodesFromNames(
|
||||||
|
workflow.getParentNodes(rootName, NodeConnectionType.Main, 1),
|
||||||
|
),
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,11 @@ import { NodeHelpers } from 'n8n-workflow';
|
||||||
import { useNodeHelpers } from '@/composables/useNodeHelpers';
|
import { useNodeHelpers } from '@/composables/useNodeHelpers';
|
||||||
import NodeIcon from '@/components/NodeIcon.vue';
|
import NodeIcon from '@/components/NodeIcon.vue';
|
||||||
import TitledList from '@/components/TitledList.vue';
|
import TitledList from '@/components/TitledList.vue';
|
||||||
import type { ConnectionTypes, INodeInputConfiguration, INodeTypeDescription } from 'n8n-workflow';
|
import type {
|
||||||
|
NodeConnectionType,
|
||||||
|
INodeInputConfiguration,
|
||||||
|
INodeTypeDescription,
|
||||||
|
} from 'n8n-workflow';
|
||||||
import { useDebounce } from '@/composables/useDebounce';
|
import { useDebounce } from '@/composables/useDebounce';
|
||||||
import { OnClickOutside } from '@vueuse/components';
|
import { OnClickOutside } from '@vueuse/components';
|
||||||
|
|
||||||
|
@ -22,7 +26,7 @@ const nodeHelpers = useNodeHelpers();
|
||||||
const { debounce } = useDebounce();
|
const { debounce } = useDebounce();
|
||||||
const emit = defineEmits<{
|
const emit = defineEmits<{
|
||||||
switchSelectedNode: [nodeName: string];
|
switchSelectedNode: [nodeName: string];
|
||||||
openConnectionNodeCreator: [nodeName: string, connectionType: ConnectionTypes];
|
openConnectionNodeCreator: [nodeName: string, connectionType: NodeConnectionType];
|
||||||
}>();
|
}>();
|
||||||
|
|
||||||
interface NodeConfig {
|
interface NodeConfig {
|
||||||
|
@ -33,7 +37,7 @@ interface NodeConfig {
|
||||||
|
|
||||||
const possibleConnections = ref<INodeInputConfiguration[]>([]);
|
const possibleConnections = ref<INodeInputConfiguration[]>([]);
|
||||||
|
|
||||||
const expandedGroups = ref<ConnectionTypes[]>([]);
|
const expandedGroups = ref<NodeConnectionType[]>([]);
|
||||||
const shouldShowNodeInputIssues = ref(false);
|
const shouldShowNodeInputIssues = ref(false);
|
||||||
|
|
||||||
const nodeType = computed(() =>
|
const nodeType = computed(() =>
|
||||||
|
@ -54,7 +58,7 @@ const nodeInputIssues = computed(() => {
|
||||||
return issues?.input ?? {};
|
return issues?.input ?? {};
|
||||||
});
|
});
|
||||||
|
|
||||||
const connectedNodes = computed<Record<ConnectionTypes, NodeConfig[]>>(() => {
|
const connectedNodes = computed<Record<NodeConnectionType, NodeConfig[]>>(() => {
|
||||||
return possibleConnections.value.reduce(
|
return possibleConnections.value.reduce(
|
||||||
(acc, connection) => {
|
(acc, connection) => {
|
||||||
const nodes = getINodesFromNames(
|
const nodes = getINodesFromNames(
|
||||||
|
@ -62,24 +66,24 @@ const connectedNodes = computed<Record<ConnectionTypes, NodeConfig[]>>(() => {
|
||||||
);
|
);
|
||||||
return { ...acc, [connection.type]: nodes };
|
return { ...acc, [connection.type]: nodes };
|
||||||
},
|
},
|
||||||
{} as Record<ConnectionTypes, NodeConfig[]>,
|
{} as Record<NodeConnectionType, NodeConfig[]>,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
function getConnectionConfig(connectionType: ConnectionTypes) {
|
function getConnectionConfig(connectionType: NodeConnectionType) {
|
||||||
return possibleConnections.value.find((c) => c.type === connectionType);
|
return possibleConnections.value.find((c) => c.type === connectionType);
|
||||||
}
|
}
|
||||||
|
|
||||||
function isMultiConnection(connectionType: ConnectionTypes) {
|
function isMultiConnection(connectionType: NodeConnectionType) {
|
||||||
const connectionConfig = getConnectionConfig(connectionType);
|
const connectionConfig = getConnectionConfig(connectionType);
|
||||||
return connectionConfig?.maxConnections !== 1;
|
return connectionConfig?.maxConnections !== 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
function shouldShowConnectionTooltip(connectionType: ConnectionTypes) {
|
function shouldShowConnectionTooltip(connectionType: NodeConnectionType) {
|
||||||
return isMultiConnection(connectionType) && !expandedGroups.value.includes(connectionType);
|
return isMultiConnection(connectionType) && !expandedGroups.value.includes(connectionType);
|
||||||
}
|
}
|
||||||
|
|
||||||
function expandConnectionGroup(connectionType: ConnectionTypes, isExpanded: boolean) {
|
function expandConnectionGroup(connectionType: NodeConnectionType, isExpanded: boolean) {
|
||||||
// If the connection is a single connection, we don't need to expand the group
|
// If the connection is a single connection, we don't need to expand the group
|
||||||
if (!isMultiConnection(connectionType)) {
|
if (!isMultiConnection(connectionType)) {
|
||||||
return;
|
return;
|
||||||
|
@ -109,14 +113,14 @@ function getINodesFromNames(names: string[]): NodeConfig[] {
|
||||||
.filter((n): n is NodeConfig => n !== null);
|
.filter((n): n is NodeConfig => n !== null);
|
||||||
}
|
}
|
||||||
|
|
||||||
function hasInputIssues(connectionType: ConnectionTypes) {
|
function hasInputIssues(connectionType: NodeConnectionType) {
|
||||||
return (
|
return (
|
||||||
shouldShowNodeInputIssues.value && (nodeInputIssues.value[connectionType] ?? []).length > 0
|
shouldShowNodeInputIssues.value && (nodeInputIssues.value[connectionType] ?? []).length > 0
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function isNodeInputConfiguration(
|
function isNodeInputConfiguration(
|
||||||
connectionConfig: ConnectionTypes | INodeInputConfiguration,
|
connectionConfig: NodeConnectionType | INodeInputConfiguration,
|
||||||
): connectionConfig is INodeInputConfiguration {
|
): connectionConfig is INodeInputConfiguration {
|
||||||
if (typeof connectionConfig === 'string') return false;
|
if (typeof connectionConfig === 'string') return false;
|
||||||
|
|
||||||
|
@ -137,7 +141,7 @@ function getPossibleSubInputConnections(): INodeInputConfiguration[] {
|
||||||
return nonMainInputs;
|
return nonMainInputs;
|
||||||
}
|
}
|
||||||
|
|
||||||
function onNodeClick(nodeName: string, connectionType: ConnectionTypes) {
|
function onNodeClick(nodeName: string, connectionType: NodeConnectionType) {
|
||||||
if (isMultiConnection(connectionType) && !expandedGroups.value.includes(connectionType)) {
|
if (isMultiConnection(connectionType) && !expandedGroups.value.includes(connectionType)) {
|
||||||
expandConnectionGroup(connectionType, true);
|
expandConnectionGroup(connectionType, true);
|
||||||
return;
|
return;
|
||||||
|
@ -146,7 +150,7 @@ function onNodeClick(nodeName: string, connectionType: ConnectionTypes) {
|
||||||
emit('switchSelectedNode', nodeName);
|
emit('switchSelectedNode', nodeName);
|
||||||
}
|
}
|
||||||
|
|
||||||
function onPlusClick(connectionType: ConnectionTypes) {
|
function onPlusClick(connectionType: NodeConnectionType) {
|
||||||
const connectionNodes = connectedNodes.value[connectionType];
|
const connectionNodes = connectedNodes.value[connectionType];
|
||||||
if (
|
if (
|
||||||
isMultiConnection(connectionType) &&
|
isMultiConnection(connectionType) &&
|
||||||
|
|
|
@ -10,7 +10,6 @@ import {
|
||||||
WAIT_TIME_UNLIMITED,
|
WAIT_TIME_UNLIMITED,
|
||||||
} from '@/constants';
|
} from '@/constants';
|
||||||
import type {
|
import type {
|
||||||
ConnectionTypes,
|
|
||||||
ExecutionSummary,
|
ExecutionSummary,
|
||||||
INodeOutputConfiguration,
|
INodeOutputConfiguration,
|
||||||
ITaskData,
|
ITaskData,
|
||||||
|
@ -244,7 +243,7 @@ const nodeWrapperStyles = computed<StyleValue>(() => {
|
||||||
const mainInputs = inputTypes.filter((output) => output === NodeConnectionType.Main);
|
const mainInputs = inputTypes.filter((output) => output === NodeConnectionType.Main);
|
||||||
styles['--node-main-input-count'] = mainInputs.length;
|
styles['--node-main-input-count'] = mainInputs.length;
|
||||||
|
|
||||||
let outputs = [] as Array<ConnectionTypes | INodeOutputConfiguration>;
|
let outputs = [] as Array<NodeConnectionType | INodeOutputConfiguration>;
|
||||||
if (props.workflow.nodes[node.value.name]) {
|
if (props.workflow.nodes[node.value.name]) {
|
||||||
outputs = NodeHelpers.getNodeOutputs(props.workflow, node.value, nodeType.value);
|
outputs = NodeHelpers.getNodeOutputs(props.workflow, node.value, nodeType.value);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import type { INodeProperties, INodeTypeDescription } from 'n8n-workflow';
|
import { NodeConnectionType, type INodeProperties, type INodeTypeDescription } from 'n8n-workflow';
|
||||||
import { useActionsGenerator } from '../composables/useActionsGeneration';
|
import { useActionsGenerator } from '../composables/useActionsGeneration';
|
||||||
|
|
||||||
describe('useActionsGenerator', () => {
|
describe('useActionsGenerator', () => {
|
||||||
|
@ -14,8 +14,8 @@ describe('useActionsGenerator', () => {
|
||||||
defaults: {
|
defaults: {
|
||||||
name: 'Test',
|
name: 'Test',
|
||||||
},
|
},
|
||||||
inputs: ['main'],
|
inputs: [NodeConnectionType.Main],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
properties: [],
|
properties: [],
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,6 @@ import type {
|
||||||
INodeParameters,
|
INodeParameters,
|
||||||
INodeProperties,
|
INodeProperties,
|
||||||
NodeParameterValue,
|
NodeParameterValue,
|
||||||
ConnectionTypes,
|
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
import {
|
import {
|
||||||
NodeHelpers,
|
NodeHelpers,
|
||||||
|
@ -319,7 +318,7 @@ export default defineComponent({
|
||||||
onSwitchSelectedNode(node: string) {
|
onSwitchSelectedNode(node: string) {
|
||||||
this.$emit('switchSelectedNode', node);
|
this.$emit('switchSelectedNode', node);
|
||||||
},
|
},
|
||||||
onOpenConnectionNodeCreator(node: string, connectionType: ConnectionTypes) {
|
onOpenConnectionNodeCreator(node: string, connectionType: NodeConnectionType) {
|
||||||
this.$emit('openConnectionNodeCreator', node, connectionType);
|
this.$emit('openConnectionNodeCreator', node, connectionType);
|
||||||
},
|
},
|
||||||
populateHiddenIssuesSet() {
|
populateHiddenIssuesSet() {
|
||||||
|
|
|
@ -5,7 +5,6 @@ import { mapStores } from 'pinia';
|
||||||
import { useStorage } from '@/composables/useStorage';
|
import { useStorage } from '@/composables/useStorage';
|
||||||
import { saveAs } from 'file-saver';
|
import { saveAs } from 'file-saver';
|
||||||
import type {
|
import type {
|
||||||
ConnectionTypes,
|
|
||||||
IBinaryData,
|
IBinaryData,
|
||||||
IBinaryKeyData,
|
IBinaryKeyData,
|
||||||
IDataObject,
|
IDataObject,
|
||||||
|
@ -181,7 +180,7 @@ export default defineComponent({
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
connectionType: NodeConnectionType.Main as ConnectionTypes,
|
connectionType: NodeConnectionType.Main as NodeConnectionType,
|
||||||
binaryDataPreviewActive: false,
|
binaryDataPreviewActive: false,
|
||||||
dataSize: 0,
|
dataSize: 0,
|
||||||
showData: false,
|
showData: false,
|
||||||
|
@ -929,7 +928,7 @@ export default defineComponent({
|
||||||
getRawInputData(
|
getRawInputData(
|
||||||
runIndex: number,
|
runIndex: number,
|
||||||
outputIndex: number,
|
outputIndex: number,
|
||||||
connectionType: ConnectionTypes = NodeConnectionType.Main,
|
connectionType: NodeConnectionType = NodeConnectionType.Main,
|
||||||
): INodeExecutionData[] {
|
): INodeExecutionData[] {
|
||||||
let inputData: INodeExecutionData[] = [];
|
let inputData: INodeExecutionData[] = [];
|
||||||
|
|
||||||
|
@ -974,7 +973,7 @@ export default defineComponent({
|
||||||
getDataCount(
|
getDataCount(
|
||||||
runIndex: number,
|
runIndex: number,
|
||||||
outputIndex: number,
|
outputIndex: number,
|
||||||
connectionType: ConnectionTypes = NodeConnectionType.Main,
|
connectionType: NodeConnectionType = NodeConnectionType.Main,
|
||||||
) {
|
) {
|
||||||
if (!this.node) {
|
if (!this.node) {
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -993,7 +992,7 @@ export default defineComponent({
|
||||||
this.outputIndex = 0;
|
this.outputIndex = 0;
|
||||||
this.refreshDataSize();
|
this.refreshDataSize();
|
||||||
this.closeBinaryDataDisplay();
|
this.closeBinaryDataDisplay();
|
||||||
let outputTypes: ConnectionTypes[] = [];
|
let outputTypes: NodeConnectionType[] = [];
|
||||||
if (this.nodeType !== null && this.node !== null) {
|
if (this.nodeType !== null && this.node !== null) {
|
||||||
const outputs = this.getResolvedNodeOutputs();
|
const outputs = this.getResolvedNodeOutputs();
|
||||||
outputTypes = NodeHelpers.getConnectionTypes(outputs);
|
outputTypes = NodeHelpers.getConnectionTypes(outputs);
|
||||||
|
|
|
@ -9,7 +9,6 @@ import { useNDVStore } from '@/stores/ndv.store';
|
||||||
import { telemetry } from '@/plugins/telemetry';
|
import { telemetry } from '@/plugins/telemetry';
|
||||||
import {
|
import {
|
||||||
NodeConnectionType,
|
NodeConnectionType,
|
||||||
type ConnectionTypes,
|
|
||||||
type IConnectedNode,
|
type IConnectedNode,
|
||||||
type IDataObject,
|
type IDataObject,
|
||||||
type INodeTypeDescription,
|
type INodeTypeDescription,
|
||||||
|
@ -33,7 +32,7 @@ type Props = {
|
||||||
outputIndex?: number;
|
outputIndex?: number;
|
||||||
totalRuns?: number;
|
totalRuns?: number;
|
||||||
paneType: 'input' | 'output';
|
paneType: 'input' | 'output';
|
||||||
connectionType?: ConnectionTypes;
|
connectionType?: NodeConnectionType;
|
||||||
search?: string;
|
search?: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@ import { createPinia, setActivePinia } from 'pinia';
|
||||||
import { useSourceControlStore } from '@/stores/sourceControl.store';
|
import { useSourceControlStore } from '@/stores/sourceControl.store';
|
||||||
import { useUIStore } from '@/stores/ui.store';
|
import { useUIStore } from '@/stores/ui.store';
|
||||||
import { useWorkflowsStore } from '@/stores/workflows.store';
|
import { useWorkflowsStore } from '@/stores/workflows.store';
|
||||||
import { NodeHelpers } from 'n8n-workflow';
|
import { NodeConnectionType, NodeHelpers } from 'n8n-workflow';
|
||||||
|
|
||||||
const nodeFactory = (data: Partial<INodeUi> = {}): INodeUi => ({
|
const nodeFactory = (data: Partial<INodeUi> = {}): INodeUi => ({
|
||||||
id: faker.string.uuid(),
|
id: faker.string.uuid(),
|
||||||
|
@ -95,7 +95,10 @@ describe('useContextMenu', () => {
|
||||||
const { open, isOpen, actions, targetNodeIds } = useContextMenu();
|
const { open, isOpen, actions, targetNodeIds } = useContextMenu();
|
||||||
const basicChain = nodeFactory({ type: BASIC_CHAIN_NODE_TYPE });
|
const basicChain = nodeFactory({ type: BASIC_CHAIN_NODE_TYPE });
|
||||||
vi.spyOn(workflowsStore, 'getNodeById').mockReturnValue(basicChain);
|
vi.spyOn(workflowsStore, 'getNodeById').mockReturnValue(basicChain);
|
||||||
vi.spyOn(NodeHelpers, 'getConnectionTypes').mockReturnValue(['main', 'ai_languageModel']);
|
vi.spyOn(NodeHelpers, 'getConnectionTypes').mockReturnValue([
|
||||||
|
NodeConnectionType.Main,
|
||||||
|
NodeConnectionType.AiLanguageModel,
|
||||||
|
]);
|
||||||
open(mockEvent, { source: 'node-right-click', nodeId: basicChain.id });
|
open(mockEvent, { source: 'node-right-click', nodeId: basicChain.id });
|
||||||
|
|
||||||
expect(isOpen.value).toBe(true);
|
expect(isOpen.value).toBe(true);
|
||||||
|
|
|
@ -1,7 +1,12 @@
|
||||||
import { createPinia, setActivePinia } from 'pinia';
|
import { createPinia, setActivePinia } from 'pinia';
|
||||||
import { mock, mockClear } from 'vitest-mock-extended';
|
import { mock, mockClear } from 'vitest-mock-extended';
|
||||||
import type { BrowserJsPlumbInstance } from '@jsplumb/browser-ui';
|
import type { BrowserJsPlumbInstance } from '@jsplumb/browser-ui';
|
||||||
import type { INode, INodeTypeDescription, Workflow } from 'n8n-workflow';
|
import {
|
||||||
|
NodeConnectionType,
|
||||||
|
type INode,
|
||||||
|
type INodeTypeDescription,
|
||||||
|
type Workflow,
|
||||||
|
} from 'n8n-workflow';
|
||||||
|
|
||||||
import { useNodeBase } from '@/composables/useNodeBase';
|
import { useNodeBase } from '@/composables/useNodeBase';
|
||||||
import { useWorkflowsStore } from '@/stores/workflows.store';
|
import { useWorkflowsStore } from '@/stores/workflows.store';
|
||||||
|
@ -16,8 +21,8 @@ describe('useNodeBase', () => {
|
||||||
|
|
||||||
const jsPlumbInstance = mock<BrowserJsPlumbInstance>();
|
const jsPlumbInstance = mock<BrowserJsPlumbInstance>();
|
||||||
const nodeTypeDescription = mock<INodeTypeDescription>({
|
const nodeTypeDescription = mock<INodeTypeDescription>({
|
||||||
inputs: ['main'],
|
inputs: [NodeConnectionType.Main],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
});
|
});
|
||||||
const workflowObject = mock<Workflow>();
|
const workflowObject = mock<Workflow>();
|
||||||
const node = mock<INode>();
|
const node = mock<INode>();
|
||||||
|
|
|
@ -68,7 +68,6 @@ import * as NodeViewUtils from '@/utils/nodeViewUtils';
|
||||||
import { isValidNodeConnectionType } from '@/utils/typeGuards';
|
import { isValidNodeConnectionType } from '@/utils/typeGuards';
|
||||||
import type { Connection } from '@vue-flow/core';
|
import type { Connection } from '@vue-flow/core';
|
||||||
import type {
|
import type {
|
||||||
ConnectionTypes,
|
|
||||||
IConnection,
|
IConnection,
|
||||||
IConnections,
|
IConnections,
|
||||||
INode,
|
INode,
|
||||||
|
@ -905,7 +904,7 @@ export function useCanvasOperations({ router }: { router: ReturnType<typeof useR
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let outputs: Array<ConnectionTypes | INodeOutputConfiguration> = [];
|
let outputs: Array<NodeConnectionType | INodeOutputConfiguration> = [];
|
||||||
try {
|
try {
|
||||||
// It fails when the outputs are an expression. As those nodes have
|
// It fails when the outputs are an expression. As those nodes have
|
||||||
// normally no outputs by default and the only reason we need the
|
// normally no outputs by default and the only reason we need the
|
||||||
|
@ -1154,7 +1153,7 @@ export function useCanvasOperations({ router }: { router: ReturnType<typeof useR
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
let inputs: Array<ConnectionTypes | INodeInputConfiguration> = [];
|
let inputs: Array<NodeConnectionType | INodeInputConfiguration> = [];
|
||||||
if (targetNodeType) {
|
if (targetNodeType) {
|
||||||
inputs =
|
inputs =
|
||||||
NodeHelpers.getNodeInputs(editableWorkflowObject.value, workflowNode, targetNodeType) ||
|
NodeHelpers.getNodeInputs(editableWorkflowObject.value, workflowNode, targetNodeType) ||
|
||||||
|
|
|
@ -10,7 +10,6 @@ import {
|
||||||
|
|
||||||
import { NodeHelpers, NodeConnectionType } from 'n8n-workflow';
|
import { NodeHelpers, NodeConnectionType } from 'n8n-workflow';
|
||||||
import type {
|
import type {
|
||||||
ConnectionTypes,
|
|
||||||
INodeInputConfiguration,
|
INodeInputConfiguration,
|
||||||
INodeTypeDescription,
|
INodeTypeDescription,
|
||||||
INodeOutputConfiguration,
|
INodeOutputConfiguration,
|
||||||
|
@ -57,8 +56,8 @@ export function useNodeBase({
|
||||||
|
|
||||||
const nodeId = computed<string>(() => data.value?.id ?? '');
|
const nodeId = computed<string>(() => data.value?.id ?? '');
|
||||||
|
|
||||||
const inputs = ref<Array<ConnectionTypes | INodeInputConfiguration>>([]);
|
const inputs = ref<Array<NodeConnectionType | INodeInputConfiguration>>([]);
|
||||||
const outputs = ref<Array<ConnectionTypes | INodeOutputConfiguration>>([]);
|
const outputs = ref<Array<NodeConnectionType | INodeOutputConfiguration>>([]);
|
||||||
|
|
||||||
const createAddInputEndpointSpec = (
|
const createAddInputEndpointSpec = (
|
||||||
connectionName: NodeConnectionType,
|
connectionName: NodeConnectionType,
|
||||||
|
@ -139,7 +138,7 @@ export function useNodeBase({
|
||||||
inputConfiguration = value;
|
inputConfiguration = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
const inputName: ConnectionTypes = inputConfiguration.type;
|
const inputName: NodeConnectionType = inputConfiguration.type;
|
||||||
|
|
||||||
const rootCategoryInputName =
|
const rootCategoryInputName =
|
||||||
inputName === NodeConnectionType.Main ? NodeConnectionType.Main : 'other';
|
inputName === NodeConnectionType.Main ? NodeConnectionType.Main : 'other';
|
||||||
|
@ -366,7 +365,7 @@ export function useNodeBase({
|
||||||
outputs.value.forEach((_value, i) => {
|
outputs.value.forEach((_value, i) => {
|
||||||
const outputConfiguration = outputConfigurations[i];
|
const outputConfiguration = outputConfigurations[i];
|
||||||
|
|
||||||
const outputName: ConnectionTypes = outputConfiguration.type;
|
const outputName: NodeConnectionType = outputConfiguration.type;
|
||||||
|
|
||||||
const rootCategoryOutputName =
|
const rootCategoryOutputName =
|
||||||
outputName === NodeConnectionType.Main ? NodeConnectionType.Main : 'other';
|
outputName === NodeConnectionType.Main ? NodeConnectionType.Main : 'other';
|
||||||
|
@ -536,12 +535,12 @@ export function useNodeBase({
|
||||||
addOutputEndpoints(node, nodeTypeData);
|
addOutputEndpoints(node, nodeTypeData);
|
||||||
}
|
}
|
||||||
|
|
||||||
function getEndpointColor(connectionType: ConnectionTypes) {
|
function getEndpointColor(connectionType: NodeConnectionType) {
|
||||||
return `--node-type-${connectionType}-color`;
|
return `--node-type-${connectionType}-color`;
|
||||||
}
|
}
|
||||||
|
|
||||||
function getInputConnectionStyle(
|
function getInputConnectionStyle(
|
||||||
connectionType: ConnectionTypes,
|
connectionType: NodeConnectionType,
|
||||||
nodeTypeData: INodeTypeDescription,
|
nodeTypeData: INodeTypeDescription,
|
||||||
): EndpointOptions {
|
): EndpointOptions {
|
||||||
if (connectionType === NodeConnectionType.Main) {
|
if (connectionType === NodeConnectionType.Main) {
|
||||||
|
@ -559,7 +558,7 @@ export function useNodeBase({
|
||||||
}
|
}
|
||||||
|
|
||||||
const createSupplementalConnectionType = (
|
const createSupplementalConnectionType = (
|
||||||
connectionName: ConnectionTypes,
|
connectionName: NodeConnectionType,
|
||||||
): EndpointOptions => ({
|
): EndpointOptions => ({
|
||||||
endpoint: createAddInputEndpointSpec(
|
endpoint: createAddInputEndpointSpec(
|
||||||
connectionName as NodeConnectionType,
|
connectionName as NodeConnectionType,
|
||||||
|
@ -571,12 +570,12 @@ export function useNodeBase({
|
||||||
}
|
}
|
||||||
|
|
||||||
function getOutputConnectionStyle(
|
function getOutputConnectionStyle(
|
||||||
connectionType: ConnectionTypes,
|
connectionType: NodeConnectionType,
|
||||||
outputConfiguration: INodeOutputConfiguration,
|
outputConfiguration: INodeOutputConfiguration,
|
||||||
nodeTypeData: INodeTypeDescription,
|
nodeTypeData: INodeTypeDescription,
|
||||||
): EndpointOptions {
|
): EndpointOptions {
|
||||||
const createSupplementalConnectionType = (
|
const createSupplementalConnectionType = (
|
||||||
connectionName: ConnectionTypes,
|
connectionName: NodeConnectionType,
|
||||||
): EndpointOptions => ({
|
): EndpointOptions => ({
|
||||||
endpoint: createDiamondOutputEndpointSpec(),
|
endpoint: createDiamondOutputEndpointSpec(),
|
||||||
paintStyle: NodeViewUtils.getOutputEndpointStyle(
|
paintStyle: NodeViewUtils.getOutputEndpointStyle(
|
||||||
|
|
|
@ -12,7 +12,7 @@ import {
|
||||||
WEBHOOK_NODE_TYPE,
|
WEBHOOK_NODE_TYPE,
|
||||||
} from '@/constants';
|
} from '@/constants';
|
||||||
|
|
||||||
import { NodeHelpers, NodeConnectionType, ExpressionEvaluatorProxy } from 'n8n-workflow';
|
import { NodeHelpers, ExpressionEvaluatorProxy, NodeConnectionType } from 'n8n-workflow';
|
||||||
import type {
|
import type {
|
||||||
INodeProperties,
|
INodeProperties,
|
||||||
INodeCredentialDescription,
|
INodeCredentialDescription,
|
||||||
|
@ -20,7 +20,6 @@ import type {
|
||||||
INodeIssues,
|
INodeIssues,
|
||||||
ICredentialType,
|
ICredentialType,
|
||||||
INodeIssueObjectProperty,
|
INodeIssueObjectProperty,
|
||||||
ConnectionTypes,
|
|
||||||
INodeInputConfiguration,
|
INodeInputConfiguration,
|
||||||
Workflow,
|
Workflow,
|
||||||
INodeExecutionData,
|
INodeExecutionData,
|
||||||
|
@ -342,7 +341,7 @@ export function useNodeHelpers() {
|
||||||
const foundIssues: INodeIssueObjectProperty = {};
|
const foundIssues: INodeIssueObjectProperty = {};
|
||||||
|
|
||||||
const workflowNode = workflow.getNode(node.name);
|
const workflowNode = workflow.getNode(node.name);
|
||||||
let inputs: Array<ConnectionTypes | INodeInputConfiguration> = [];
|
let inputs: Array<NodeConnectionType | INodeInputConfiguration> = [];
|
||||||
if (nodeType && workflowNode) {
|
if (nodeType && workflowNode) {
|
||||||
inputs = NodeHelpers.getNodeInputs(workflow, workflowNode, nodeType);
|
inputs = NodeHelpers.getNodeInputs(workflow, workflowNode, nodeType);
|
||||||
}
|
}
|
||||||
|
@ -571,7 +570,7 @@ export function useNodeHelpers() {
|
||||||
runIndex = 0,
|
runIndex = 0,
|
||||||
outputIndex = 0,
|
outputIndex = 0,
|
||||||
paneType: NodePanelType = 'output',
|
paneType: NodePanelType = 'output',
|
||||||
connectionType: ConnectionTypes = NodeConnectionType.Main,
|
connectionType: NodeConnectionType = NodeConnectionType.Main,
|
||||||
): INodeExecutionData[] {
|
): INodeExecutionData[] {
|
||||||
//TODO: check if this needs to be fixed in different place
|
//TODO: check if this needs to be fixed in different place
|
||||||
if (
|
if (
|
||||||
|
@ -617,7 +616,7 @@ export function useNodeHelpers() {
|
||||||
function getInputData(
|
function getInputData(
|
||||||
connectionsData: ITaskDataConnections,
|
connectionsData: ITaskDataConnections,
|
||||||
outputIndex: number,
|
outputIndex: number,
|
||||||
connectionType: ConnectionTypes = NodeConnectionType.Main,
|
connectionType: NodeConnectionType = NodeConnectionType.Main,
|
||||||
): INodeExecutionData[] {
|
): INodeExecutionData[] {
|
||||||
return connectionsData?.[connectionType]?.[outputIndex] ?? [];
|
return connectionsData?.[connectionType]?.[outputIndex] ?? [];
|
||||||
}
|
}
|
||||||
|
@ -627,7 +626,7 @@ export function useNodeHelpers() {
|
||||||
node: string | null,
|
node: string | null,
|
||||||
runIndex: number,
|
runIndex: number,
|
||||||
outputIndex: number,
|
outputIndex: number,
|
||||||
connectionType: ConnectionTypes = NodeConnectionType.Main,
|
connectionType: NodeConnectionType = NodeConnectionType.Main,
|
||||||
): IBinaryKeyData[] {
|
): IBinaryKeyData[] {
|
||||||
if (node === null) {
|
if (node === null) {
|
||||||
return [];
|
return [];
|
||||||
|
|
|
@ -4,7 +4,6 @@ import type { DynamicNodeParameters, NodeTypesByTypeNameAndVersion } from '@/Int
|
||||||
import { addHeaders, addNodeTranslation } from '@/plugins/i18n';
|
import { addHeaders, addNodeTranslation } from '@/plugins/i18n';
|
||||||
import { omit } from '@/utils/typesUtils';
|
import { omit } from '@/utils/typesUtils';
|
||||||
import type {
|
import type {
|
||||||
ConnectionTypes,
|
|
||||||
INode,
|
INode,
|
||||||
INodeInputConfiguration,
|
INodeInputConfiguration,
|
||||||
INodeOutputConfiguration,
|
INodeOutputConfiguration,
|
||||||
|
@ -138,7 +137,7 @@ export const useNodeTypesStore = defineStore(STORES.NODE_TYPES, () => {
|
||||||
(acc, node) => {
|
(acc, node) => {
|
||||||
const outputTypes = node.outputs;
|
const outputTypes = node.outputs;
|
||||||
if (Array.isArray(outputTypes)) {
|
if (Array.isArray(outputTypes)) {
|
||||||
outputTypes.forEach((value: ConnectionTypes | INodeOutputConfiguration) => {
|
outputTypes.forEach((value: NodeConnectionType | INodeOutputConfiguration) => {
|
||||||
const outputType = typeof value === 'string' ? value : value.type;
|
const outputType = typeof value === 'string' ? value : value.type;
|
||||||
if (!acc[outputType]) {
|
if (!acc[outputType]) {
|
||||||
acc[outputType] = [];
|
acc[outputType] = [];
|
||||||
|
@ -148,7 +147,7 @@ export const useNodeTypesStore = defineStore(STORES.NODE_TYPES, () => {
|
||||||
} else {
|
} else {
|
||||||
// If outputs is not an array, it must be a string expression
|
// If outputs is not an array, it must be a string expression
|
||||||
// in which case we'll try to match all possible non-main output types that are supported
|
// in which case we'll try to match all possible non-main output types that are supported
|
||||||
const connectorTypes: ConnectionTypes[] = [
|
const connectorTypes: NodeConnectionType[] = [
|
||||||
NodeConnectionType.AiVectorStore,
|
NodeConnectionType.AiVectorStore,
|
||||||
NodeConnectionType.AiChain,
|
NodeConnectionType.AiChain,
|
||||||
NodeConnectionType.AiDocument,
|
NodeConnectionType.AiDocument,
|
||||||
|
@ -159,7 +158,7 @@ export const useNodeTypesStore = defineStore(STORES.NODE_TYPES, () => {
|
||||||
NodeConnectionType.AiTextSplitter,
|
NodeConnectionType.AiTextSplitter,
|
||||||
NodeConnectionType.AiTool,
|
NodeConnectionType.AiTool,
|
||||||
];
|
];
|
||||||
connectorTypes.forEach((outputType: ConnectionTypes) => {
|
connectorTypes.forEach((outputType: NodeConnectionType) => {
|
||||||
if (outputTypes.includes(outputType)) {
|
if (outputTypes.includes(outputType)) {
|
||||||
acc[outputType] = acc[outputType] || [];
|
acc[outputType] = acc[outputType] || [];
|
||||||
acc[outputType].push(node.name);
|
acc[outputType].push(node.name);
|
||||||
|
@ -181,7 +180,7 @@ export const useNodeTypesStore = defineStore(STORES.NODE_TYPES, () => {
|
||||||
const inputTypes = node.inputs;
|
const inputTypes = node.inputs;
|
||||||
if (Array.isArray(inputTypes)) {
|
if (Array.isArray(inputTypes)) {
|
||||||
inputTypes.forEach(
|
inputTypes.forEach(
|
||||||
(value: ConnectionTypes | INodeOutputConfiguration | INodeInputConfiguration) => {
|
(value: NodeConnectionType | INodeOutputConfiguration | INodeInputConfiguration) => {
|
||||||
const outputType = typeof value === 'string' ? value : value.type;
|
const outputType = typeof value === 'string' ? value : value.type;
|
||||||
if (!acc[outputType]) {
|
if (!acc[outputType]) {
|
||||||
acc[outputType] = [];
|
acc[outputType] = [];
|
||||||
|
|
|
@ -55,7 +55,7 @@ import type {
|
||||||
IWorkflowSettings,
|
IWorkflowSettings,
|
||||||
INodeType,
|
INodeType,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
import { deepCopy, NodeHelpers, Workflow } from 'n8n-workflow';
|
import { deepCopy, NodeConnectionType, NodeHelpers, Workflow } from 'n8n-workflow';
|
||||||
import { findLast } from 'lodash-es';
|
import { findLast } from 'lodash-es';
|
||||||
|
|
||||||
import { useRootStore } from '@/stores/root.store';
|
import { useRootStore } from '@/stores/root.store';
|
||||||
|
@ -1502,7 +1502,7 @@ export const useWorkflowsStore = defineStore(STORES.WORKFLOWS, () => {
|
||||||
|
|
||||||
function checkIfNodeHasChatParent(nodeName: string): boolean {
|
function checkIfNodeHasChatParent(nodeName: string): boolean {
|
||||||
const workflow = getCurrentWorkflow();
|
const workflow = getCurrentWorkflow();
|
||||||
const parents = workflow.getParentNodes(nodeName, 'main');
|
const parents = workflow.getParentNodes(nodeName, NodeConnectionType.Main);
|
||||||
|
|
||||||
const matchedChatNode = parents.find((parent) => {
|
const matchedChatNode = parents.find((parent) => {
|
||||||
const parentNodeType = getNodeByName(parent)?.type;
|
const parentNodeType = getNodeByName(parent)?.type;
|
||||||
|
|
|
@ -5,7 +5,6 @@ import type { ArrayAnchorSpec, ConnectorSpec, OverlaySpec, PaintStyle } from '@j
|
||||||
import type { Connection, Endpoint, SelectOptions } from '@jsplumb/core';
|
import type { Connection, Endpoint, SelectOptions } from '@jsplumb/core';
|
||||||
import { N8nConnector } from '@/plugins/connectors/N8nCustomConnector';
|
import { N8nConnector } from '@/plugins/connectors/N8nCustomConnector';
|
||||||
import type {
|
import type {
|
||||||
ConnectionTypes,
|
|
||||||
IConnection,
|
IConnection,
|
||||||
INodeExecutionData,
|
INodeExecutionData,
|
||||||
INodeTypeDescription,
|
INodeTypeDescription,
|
||||||
|
@ -118,7 +117,7 @@ export function isCanvasAugmentedType<T>(overlay: T): overlay is T & { canvas: H
|
||||||
return typeof overlay === 'object' && overlay !== null && 'canvas' in overlay && !!overlay.canvas;
|
return typeof overlay === 'object' && overlay !== null && 'canvas' in overlay && !!overlay.canvas;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const getConnectorColor = (type: ConnectionTypes, category?: string): string => {
|
export const getConnectorColor = (type: NodeConnectionType, category?: string): string => {
|
||||||
if (category === 'error') {
|
if (category === 'error') {
|
||||||
return '--color-node-error-output-text-color';
|
return '--color-node-error-output-text-color';
|
||||||
}
|
}
|
||||||
|
@ -132,7 +131,7 @@ export const getConnectorColor = (type: ConnectionTypes, category?: string): str
|
||||||
|
|
||||||
export const getConnectorPaintStylePull = (connection: Connection): PaintStyle => {
|
export const getConnectorPaintStylePull = (connection: Connection): PaintStyle => {
|
||||||
const connectorColor = getConnectorColor(
|
const connectorColor = getConnectorColor(
|
||||||
connection.parameters.type as ConnectionTypes,
|
connection.parameters.type as NodeConnectionType,
|
||||||
connection.parameters.category,
|
connection.parameters.category,
|
||||||
);
|
);
|
||||||
const additionalStyles: PaintStyle = {};
|
const additionalStyles: PaintStyle = {};
|
||||||
|
@ -148,7 +147,7 @@ export const getConnectorPaintStylePull = (connection: Connection): PaintStyle =
|
||||||
|
|
||||||
export const getConnectorPaintStyleDefault = (connection: Connection): PaintStyle => {
|
export const getConnectorPaintStyleDefault = (connection: Connection): PaintStyle => {
|
||||||
const connectorColor = getConnectorColor(
|
const connectorColor = getConnectorColor(
|
||||||
connection.parameters.type as ConnectionTypes,
|
connection.parameters.type as NodeConnectionType,
|
||||||
connection.parameters.category,
|
connection.parameters.category,
|
||||||
);
|
);
|
||||||
return {
|
return {
|
||||||
|
@ -161,7 +160,10 @@ export const getConnectorPaintStyleData = (
|
||||||
connection: Connection,
|
connection: Connection,
|
||||||
category?: string,
|
category?: string,
|
||||||
): PaintStyle => {
|
): PaintStyle => {
|
||||||
const connectorColor = getConnectorColor(connection.parameters.type as ConnectionTypes, category);
|
const connectorColor = getConnectorColor(
|
||||||
|
connection.parameters.type as NodeConnectionType,
|
||||||
|
category,
|
||||||
|
);
|
||||||
return {
|
return {
|
||||||
...CONNECTOR_PAINT_STYLE_DATA,
|
...CONNECTOR_PAINT_STYLE_DATA,
|
||||||
...(connectorColor ? { stroke: `var(${connectorColor})` } : {}),
|
...(connectorColor ? { stroke: `var(${connectorColor})` } : {}),
|
||||||
|
@ -194,7 +196,7 @@ export const CONNECTOR_ARROW_OVERLAYS: OverlaySpec[] = [
|
||||||
];
|
];
|
||||||
|
|
||||||
export const getAnchorPosition = (
|
export const getAnchorPosition = (
|
||||||
connectionType: ConnectionTypes,
|
connectionType: NodeConnectionType,
|
||||||
type: 'input' | 'output',
|
type: 'input' | 'output',
|
||||||
amount: number,
|
amount: number,
|
||||||
spacerIndexes: number[] = [],
|
spacerIndexes: number[] = [],
|
||||||
|
@ -256,7 +258,7 @@ export const getEndpointScope = (
|
||||||
export const getInputEndpointStyle = (
|
export const getInputEndpointStyle = (
|
||||||
nodeTypeData: INodeTypeDescription,
|
nodeTypeData: INodeTypeDescription,
|
||||||
color: string,
|
color: string,
|
||||||
connectionType: ConnectionTypes = NodeConnectionType.Main,
|
connectionType: NodeConnectionType = NodeConnectionType.Main,
|
||||||
): EndpointStyle => {
|
): EndpointStyle => {
|
||||||
let width = 8;
|
let width = 8;
|
||||||
let height = nodeTypeData && nodeTypeData.outputs.length > 2 ? 18 : 20;
|
let height = nodeTypeData && nodeTypeData.outputs.length > 2 ? 18 : 20;
|
||||||
|
@ -664,7 +666,7 @@ export const showConnectionActions = (connection: Connection) => {
|
||||||
export const getOutputSummary = (
|
export const getOutputSummary = (
|
||||||
data: ITaskData[],
|
data: ITaskData[],
|
||||||
nodeConnections: NodeInputConnections,
|
nodeConnections: NodeInputConnections,
|
||||||
connectionType: ConnectionTypes,
|
connectionType: NodeConnectionType,
|
||||||
) => {
|
) => {
|
||||||
const outputMap: {
|
const outputMap: {
|
||||||
[sourceOutputIndex: string]: {
|
[sourceOutputIndex: string]: {
|
||||||
|
|
|
@ -74,7 +74,6 @@ import type {
|
||||||
ITelemetryTrackProperties,
|
ITelemetryTrackProperties,
|
||||||
IWorkflowBase,
|
IWorkflowBase,
|
||||||
Workflow,
|
Workflow,
|
||||||
ConnectionTypes,
|
|
||||||
INodeOutputConfiguration,
|
INodeOutputConfiguration,
|
||||||
IRun,
|
IRun,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
|
@ -2289,7 +2288,7 @@ export default defineComponent({
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let outputs: Array<ConnectionTypes | INodeOutputConfiguration> = [];
|
let outputs: Array<NodeConnectionType | INodeOutputConfiguration> = [];
|
||||||
try {
|
try {
|
||||||
// It fails when the outputs are an expression. As those nodes have
|
// It fails when the outputs are an expression. As those nodes have
|
||||||
// normally no outputs by default and the only reason we need the
|
// normally no outputs by default and the only reason we need the
|
||||||
|
@ -2424,7 +2423,7 @@ export default defineComponent({
|
||||||
sourceNodeOutputIndex: number,
|
sourceNodeOutputIndex: number,
|
||||||
targetNodeName: string,
|
targetNodeName: string,
|
||||||
targetNodeOuputIndex: number,
|
targetNodeOuputIndex: number,
|
||||||
type: ConnectionTypes,
|
type: NodeConnectionType,
|
||||||
): IConnection | undefined {
|
): IConnection | undefined {
|
||||||
const nodeConnections =
|
const nodeConnections =
|
||||||
this.workflowsStore.outgoingConnectionsByNodeName(sourceNodeName)[type];
|
this.workflowsStore.outgoingConnectionsByNodeName(sourceNodeName)[type];
|
||||||
|
@ -2531,7 +2530,7 @@ export default defineComponent({
|
||||||
lastSelectedEndpoint.scope as NodeConnectionType,
|
lastSelectedEndpoint.scope as NodeConnectionType,
|
||||||
)
|
)
|
||||||
) {
|
) {
|
||||||
const connectionType = lastSelectedEndpoint.scope as ConnectionTypes;
|
const connectionType = lastSelectedEndpoint.scope as NodeConnectionType;
|
||||||
const newNodeElement = this.instance.getManagedElement(newNodeData.id);
|
const newNodeElement = this.instance.getManagedElement(newNodeData.id);
|
||||||
const newNodeConnections = this.instance.getEndpoints(newNodeElement);
|
const newNodeConnections = this.instance.getEndpoints(newNodeElement);
|
||||||
const viableConnection = newNodeConnections.find((conn) => {
|
const viableConnection = newNodeConnections.find((conn) => {
|
||||||
|
@ -2712,7 +2711,7 @@ export default defineComponent({
|
||||||
if (targetNodeType?.inputs?.length) {
|
if (targetNodeType?.inputs?.length) {
|
||||||
const workflow = this.workflowHelpers.getCurrentWorkflow();
|
const workflow = this.workflowHelpers.getCurrentWorkflow();
|
||||||
const workflowNode = workflow.getNode(targetNode.name);
|
const workflowNode = workflow.getNode(targetNode.name);
|
||||||
let inputs: Array<ConnectionTypes | INodeInputConfiguration> = [];
|
let inputs: Array<NodeConnectionType | INodeInputConfiguration> = [];
|
||||||
if (targetNodeType && workflowNode) {
|
if (targetNodeType && workflowNode) {
|
||||||
inputs = NodeHelpers.getNodeInputs(workflow, workflowNode, targetNodeType);
|
inputs = NodeHelpers.getNodeInputs(workflow, workflowNode, targetNodeType);
|
||||||
}
|
}
|
||||||
|
@ -3106,7 +3105,7 @@ export default defineComponent({
|
||||||
NodeViewUtils.hideConnectionActions(connection);
|
NodeViewUtils.hideConnectionActions(connection);
|
||||||
NodeViewUtils.resetConnection(connection);
|
NodeViewUtils.resetConnection(connection);
|
||||||
|
|
||||||
const scope = connection.scope as ConnectionTypes;
|
const scope = connection.scope as NodeConnectionType;
|
||||||
const scopedEndpoints = Array.from(
|
const scopedEndpoints = Array.from(
|
||||||
document.querySelectorAll(`[data-jtk-scope-${scope}=true]`),
|
document.querySelectorAll(`[data-jtk-scope-${scope}=true]`),
|
||||||
);
|
);
|
||||||
|
@ -3609,8 +3608,8 @@ export default defineComponent({
|
||||||
|
|
||||||
const workflow = this.workflowHelpers.getCurrentWorkflow();
|
const workflow = this.workflowHelpers.getCurrentWorkflow();
|
||||||
const workflowNode = workflow.getNode(node.name);
|
const workflowNode = workflow.getNode(node.name);
|
||||||
let inputs: Array<ConnectionTypes | INodeInputConfiguration> = [];
|
let inputs: Array<NodeConnectionType | INodeInputConfiguration> = [];
|
||||||
let outputs: Array<ConnectionTypes | INodeOutputConfiguration> = [];
|
let outputs: Array<NodeConnectionType | INodeOutputConfiguration> = [];
|
||||||
if (nodeType && workflowNode) {
|
if (nodeType && workflowNode) {
|
||||||
inputs = NodeHelpers.getNodeInputs(workflow, workflowNode, nodeType);
|
inputs = NodeHelpers.getNodeInputs(workflow, workflowNode, nodeType);
|
||||||
outputs = NodeHelpers.getNodeOutputs(workflow, workflowNode, nodeType);
|
outputs = NodeHelpers.getNodeOutputs(workflow, workflowNode, nodeType);
|
||||||
|
|
|
@ -66,13 +66,13 @@ module.exports = {
|
||||||
'n8n-nodes-base/node-class-description-display-name-unsuffixed-trigger-node': 'error',
|
'n8n-nodes-base/node-class-description-display-name-unsuffixed-trigger-node': 'error',
|
||||||
'n8n-nodes-base/node-class-description-empty-string': 'error',
|
'n8n-nodes-base/node-class-description-empty-string': 'error',
|
||||||
'n8n-nodes-base/node-class-description-icon-not-svg': 'error',
|
'n8n-nodes-base/node-class-description-icon-not-svg': 'error',
|
||||||
'n8n-nodes-base/node-class-description-inputs-wrong-regular-node': 'error',
|
'n8n-nodes-base/node-class-description-inputs-wrong-regular-node': 'off',
|
||||||
'n8n-nodes-base/node-class-description-inputs-wrong-trigger-node': 'error',
|
'n8n-nodes-base/node-class-description-inputs-wrong-trigger-node': 'error',
|
||||||
'n8n-nodes-base/node-class-description-missing-subtitle': 'error',
|
'n8n-nodes-base/node-class-description-missing-subtitle': 'error',
|
||||||
'n8n-nodes-base/node-class-description-non-core-color-present': 'error',
|
'n8n-nodes-base/node-class-description-non-core-color-present': 'error',
|
||||||
'n8n-nodes-base/node-class-description-name-miscased': 'error',
|
'n8n-nodes-base/node-class-description-name-miscased': 'error',
|
||||||
'n8n-nodes-base/node-class-description-name-unsuffixed-trigger-node': 'error',
|
'n8n-nodes-base/node-class-description-name-unsuffixed-trigger-node': 'error',
|
||||||
'n8n-nodes-base/node-class-description-outputs-wrong': 'error',
|
'n8n-nodes-base/node-class-description-outputs-wrong': 'off',
|
||||||
'n8n-nodes-base/node-dirname-against-convention': 'error',
|
'n8n-nodes-base/node-dirname-against-convention': 'error',
|
||||||
'n8n-nodes-base/node-execute-block-double-assertion-for-items': 'error',
|
'n8n-nodes-base/node-execute-block-double-assertion-for-items': 'error',
|
||||||
'n8n-nodes-base/node-execute-block-wrong-error-thrown': 'error',
|
'n8n-nodes-base/node-execute-block-wrong-error-thrown': 'error',
|
||||||
|
|
|
@ -5,7 +5,7 @@ import type {
|
||||||
INodeType,
|
INodeType,
|
||||||
INodeTypeDescription,
|
INodeTypeDescription,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
import { NodeOperationError } from 'n8n-workflow';
|
import { NodeConnectionType, NodeOperationError } from 'n8n-workflow';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
actionNetworkApiRequest,
|
actionNetworkApiRequest,
|
||||||
|
@ -56,8 +56,8 @@ export class ActionNetwork implements INodeType {
|
||||||
defaults: {
|
defaults: {
|
||||||
name: 'Action Network',
|
name: 'Action Network',
|
||||||
},
|
},
|
||||||
inputs: ['main'],
|
inputs: [NodeConnectionType.Main],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
credentials: [
|
credentials: [
|
||||||
{
|
{
|
||||||
name: 'actionNetworkApi',
|
name: 'actionNetworkApi',
|
||||||
|
|
|
@ -8,7 +8,7 @@ import type {
|
||||||
INodeTypeDescription,
|
INodeTypeDescription,
|
||||||
IHttpRequestMethods,
|
IHttpRequestMethods,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
import { NodeOperationError } from 'n8n-workflow';
|
import { NodeConnectionType, NodeOperationError } from 'n8n-workflow';
|
||||||
|
|
||||||
import type { IProduct } from './GenericFunctions';
|
import type { IProduct } from './GenericFunctions';
|
||||||
import { activeCampaignApiRequest, activeCampaignApiRequestAllItems } from './GenericFunctions';
|
import { activeCampaignApiRequest, activeCampaignApiRequestAllItems } from './GenericFunctions';
|
||||||
|
@ -89,8 +89,8 @@ export class ActiveCampaign implements INodeType {
|
||||||
defaults: {
|
defaults: {
|
||||||
name: 'ActiveCampaign',
|
name: 'ActiveCampaign',
|
||||||
},
|
},
|
||||||
inputs: ['main'],
|
inputs: [NodeConnectionType.Main],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
credentials: [
|
credentials: [
|
||||||
{
|
{
|
||||||
name: 'activeCampaignApi',
|
name: 'activeCampaignApi',
|
||||||
|
|
|
@ -8,6 +8,7 @@ import type {
|
||||||
INodeTypeDescription,
|
INodeTypeDescription,
|
||||||
IWebhookResponseData,
|
IWebhookResponseData,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
|
import { NodeConnectionType } from 'n8n-workflow';
|
||||||
|
|
||||||
import { activeCampaignApiRequest, activeCampaignApiRequestAllItems } from './GenericFunctions';
|
import { activeCampaignApiRequest, activeCampaignApiRequestAllItems } from './GenericFunctions';
|
||||||
|
|
||||||
|
@ -23,7 +24,7 @@ export class ActiveCampaignTrigger implements INodeType {
|
||||||
name: 'ActiveCampaign Trigger',
|
name: 'ActiveCampaign Trigger',
|
||||||
},
|
},
|
||||||
inputs: [],
|
inputs: [],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
credentials: [
|
credentials: [
|
||||||
{
|
{
|
||||||
name: 'activeCampaignApi',
|
name: 'activeCampaignApi',
|
||||||
|
|
|
@ -6,6 +6,7 @@ import type {
|
||||||
INodeTypeDescription,
|
INodeTypeDescription,
|
||||||
IWebhookResponseData,
|
IWebhookResponseData,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
|
import { NodeConnectionType } from 'n8n-workflow';
|
||||||
|
|
||||||
import { acuitySchedulingApiRequest } from './GenericFunctions';
|
import { acuitySchedulingApiRequest } from './GenericFunctions';
|
||||||
|
|
||||||
|
@ -22,7 +23,7 @@ export class AcuitySchedulingTrigger implements INodeType {
|
||||||
name: 'Acuity Scheduling Trigger',
|
name: 'Acuity Scheduling Trigger',
|
||||||
},
|
},
|
||||||
inputs: [],
|
inputs: [],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
credentials: [
|
credentials: [
|
||||||
{
|
{
|
||||||
name: 'acuitySchedulingApi',
|
name: 'acuitySchedulingApi',
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
import type {
|
import {
|
||||||
IDataObject,
|
NodeConnectionType,
|
||||||
IExecuteSingleFunctions,
|
type IDataObject,
|
||||||
IHttpRequestOptions,
|
type IExecuteSingleFunctions,
|
||||||
INodeType,
|
type IHttpRequestOptions,
|
||||||
INodeTypeDescription,
|
type INodeType,
|
||||||
|
type INodeTypeDescription,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
import { collectionFields } from './CollectionDescription';
|
import { collectionFields } from './CollectionDescription';
|
||||||
import type { FieldsUiValues } from './types';
|
import type { FieldsUiValues } from './types';
|
||||||
|
@ -20,8 +21,8 @@ export class Adalo implements INodeType {
|
||||||
defaults: {
|
defaults: {
|
||||||
name: 'Adalo',
|
name: 'Adalo',
|
||||||
},
|
},
|
||||||
inputs: ['main'],
|
inputs: [NodeConnectionType.Main],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
credentials: [
|
credentials: [
|
||||||
{
|
{
|
||||||
name: 'adaloApi',
|
name: 'adaloApi',
|
||||||
|
|
|
@ -7,6 +7,7 @@ import type {
|
||||||
INodeType,
|
INodeType,
|
||||||
INodeTypeDescription,
|
INodeTypeDescription,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
|
import { NodeConnectionType } from 'n8n-workflow';
|
||||||
|
|
||||||
import { affinityApiRequest, affinityApiRequestAllItems } from './GenericFunctions';
|
import { affinityApiRequest, affinityApiRequestAllItems } from './GenericFunctions';
|
||||||
|
|
||||||
|
@ -34,8 +35,8 @@ export class Affinity implements INodeType {
|
||||||
defaults: {
|
defaults: {
|
||||||
name: 'Affinity',
|
name: 'Affinity',
|
||||||
},
|
},
|
||||||
inputs: ['main'],
|
inputs: [NodeConnectionType.Main],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
credentials: [
|
credentials: [
|
||||||
{
|
{
|
||||||
name: 'affinityApi',
|
name: 'affinityApi',
|
||||||
|
|
|
@ -6,7 +6,7 @@ import type {
|
||||||
INodeTypeDescription,
|
INodeTypeDescription,
|
||||||
IWebhookResponseData,
|
IWebhookResponseData,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
import { NodeOperationError } from 'n8n-workflow';
|
import { NodeConnectionType, NodeOperationError } from 'n8n-workflow';
|
||||||
|
|
||||||
import { affinityApiRequest, eventsExist, mapResource } from './GenericFunctions';
|
import { affinityApiRequest, eventsExist, mapResource } from './GenericFunctions';
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@ export class AffinityTrigger implements INodeType {
|
||||||
name: 'Affinity Trigger',
|
name: 'Affinity Trigger',
|
||||||
},
|
},
|
||||||
inputs: [],
|
inputs: [],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
credentials: [
|
credentials: [
|
||||||
{
|
{
|
||||||
name: 'affinityApi',
|
name: 'affinityApi',
|
||||||
|
|
|
@ -5,7 +5,7 @@ import type {
|
||||||
INodeType,
|
INodeType,
|
||||||
INodeTypeDescription,
|
INodeTypeDescription,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
import { jsonParse, NodeOperationError } from 'n8n-workflow';
|
import { NodeConnectionType, jsonParse, NodeOperationError } from 'n8n-workflow';
|
||||||
|
|
||||||
import { contactFields, contactOperations } from './ContactDescription';
|
import { contactFields, contactOperations } from './ContactDescription';
|
||||||
|
|
||||||
|
@ -41,8 +41,8 @@ export class AgileCrm implements INodeType {
|
||||||
defaults: {
|
defaults: {
|
||||||
name: 'Agile CRM',
|
name: 'Agile CRM',
|
||||||
},
|
},
|
||||||
inputs: ['main'],
|
inputs: [NodeConnectionType.Main],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
credentials: [
|
credentials: [
|
||||||
{
|
{
|
||||||
name: 'agileCrmApi',
|
name: 'agileCrmApi',
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
/* eslint-disable n8n-nodes-base/node-dirname-against-convention */
|
/* eslint-disable n8n-nodes-base/node-dirname-against-convention */
|
||||||
import {
|
import {
|
||||||
NodeOperationError,
|
NodeOperationError,
|
||||||
|
NodeConnectionType,
|
||||||
type IExecuteFunctions,
|
type IExecuteFunctions,
|
||||||
type INodeExecutionData,
|
type INodeExecutionData,
|
||||||
type INodeType,
|
type INodeType,
|
||||||
|
@ -26,8 +27,8 @@ export class AiTransform implements INodeType {
|
||||||
defaults: {
|
defaults: {
|
||||||
name: 'AI Transform',
|
name: 'AI Transform',
|
||||||
},
|
},
|
||||||
inputs: ['main'],
|
inputs: [NodeConnectionType.Main],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
parameterPane: 'wide',
|
parameterPane: 'wide',
|
||||||
properties: [
|
properties: [
|
||||||
{
|
{
|
||||||
|
|
|
@ -5,7 +5,7 @@ import type {
|
||||||
INodeType,
|
INodeType,
|
||||||
INodeTypeDescription,
|
INodeTypeDescription,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
import { NodeOperationError } from 'n8n-workflow';
|
import { NodeConnectionType, NodeOperationError } from 'n8n-workflow';
|
||||||
|
|
||||||
import moment from 'moment-timezone';
|
import moment from 'moment-timezone';
|
||||||
import type { IRecord } from './v1/GenericFunctions';
|
import type { IRecord } from './v1/GenericFunctions';
|
||||||
|
@ -54,7 +54,7 @@ export class AirtableTrigger implements INodeType {
|
||||||
],
|
],
|
||||||
polling: true,
|
polling: true,
|
||||||
inputs: [],
|
inputs: [],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
properties: [
|
properties: [
|
||||||
{
|
{
|
||||||
displayName: 'Authentication',
|
displayName: 'Authentication',
|
||||||
|
|
|
@ -8,7 +8,7 @@ import type {
|
||||||
INodeTypeBaseDescription,
|
INodeTypeBaseDescription,
|
||||||
IHttpRequestMethods,
|
IHttpRequestMethods,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
import { NodeOperationError } from 'n8n-workflow';
|
import { NodeConnectionType, NodeOperationError } from 'n8n-workflow';
|
||||||
|
|
||||||
import { oldVersionNotice } from '../../../utils/descriptions';
|
import { oldVersionNotice } from '../../../utils/descriptions';
|
||||||
import { generatePairedItemData } from '../../../utils/utilities';
|
import { generatePairedItemData } from '../../../utils/utilities';
|
||||||
|
@ -25,8 +25,8 @@ const versionDescription: INodeTypeDescription = {
|
||||||
defaults: {
|
defaults: {
|
||||||
name: 'Airtable',
|
name: 'Airtable',
|
||||||
},
|
},
|
||||||
inputs: ['main'],
|
inputs: [NodeConnectionType.Main],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
credentials: [
|
credentials: [
|
||||||
{
|
{
|
||||||
name: 'airtableApi',
|
name: 'airtableApi',
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/* eslint-disable n8n-nodes-base/node-filename-against-convention */
|
/* eslint-disable n8n-nodes-base/node-filename-against-convention */
|
||||||
import type { INodeTypeDescription } from 'n8n-workflow';
|
import { NodeConnectionType, type INodeTypeDescription } from 'n8n-workflow';
|
||||||
|
|
||||||
import * as record from './record/Record.resource';
|
import * as record from './record/Record.resource';
|
||||||
import * as base from './base/Base.resource';
|
import * as base from './base/Base.resource';
|
||||||
|
@ -15,8 +15,8 @@ export const versionDescription: INodeTypeDescription = {
|
||||||
defaults: {
|
defaults: {
|
||||||
name: 'Airtable',
|
name: 'Airtable',
|
||||||
},
|
},
|
||||||
inputs: ['main'],
|
inputs: [NodeConnectionType.Main],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
credentials: [
|
credentials: [
|
||||||
{
|
{
|
||||||
name: 'airtableTokenApi',
|
name: 'airtableTokenApi',
|
||||||
|
|
|
@ -12,7 +12,7 @@ import type {
|
||||||
ICredentialsDecrypted,
|
ICredentialsDecrypted,
|
||||||
ICredentialDataDecryptedObject,
|
ICredentialDataDecryptedObject,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
import { NodeOperationError } from 'n8n-workflow';
|
import { NodeConnectionType, NodeOperationError } from 'n8n-workflow';
|
||||||
|
|
||||||
async function checkIfCredentialsValid(
|
async function checkIfCredentialsValid(
|
||||||
credentials: IDataObject,
|
credentials: IDataObject,
|
||||||
|
@ -65,8 +65,8 @@ export class Amqp implements INodeType {
|
||||||
defaults: {
|
defaults: {
|
||||||
name: 'AMQP Sender',
|
name: 'AMQP Sender',
|
||||||
},
|
},
|
||||||
inputs: ['main'],
|
inputs: [NodeConnectionType.Main],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
credentials: [
|
credentials: [
|
||||||
{
|
{
|
||||||
name: 'amqp',
|
name: 'amqp',
|
||||||
|
|
|
@ -10,7 +10,7 @@ import type {
|
||||||
IDeferredPromise,
|
IDeferredPromise,
|
||||||
IRun,
|
IRun,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
import { deepCopy, jsonParse, NodeOperationError } from 'n8n-workflow';
|
import { deepCopy, jsonParse, NodeConnectionType, NodeOperationError } from 'n8n-workflow';
|
||||||
|
|
||||||
export class AmqpTrigger implements INodeType {
|
export class AmqpTrigger implements INodeType {
|
||||||
description: INodeTypeDescription = {
|
description: INodeTypeDescription = {
|
||||||
|
@ -24,7 +24,7 @@ export class AmqpTrigger implements INodeType {
|
||||||
name: 'AMQP Trigger',
|
name: 'AMQP Trigger',
|
||||||
},
|
},
|
||||||
inputs: [],
|
inputs: [],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
credentials: [
|
credentials: [
|
||||||
{
|
{
|
||||||
name: 'amqp',
|
name: 'amqp',
|
||||||
|
|
|
@ -7,7 +7,7 @@ import type {
|
||||||
INodeType,
|
INodeType,
|
||||||
INodeTypeDescription,
|
INodeTypeDescription,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
import { NodeOperationError } from 'n8n-workflow';
|
import { NodeConnectionType, NodeOperationError } from 'n8n-workflow';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
apiTemplateIoApiRequest,
|
apiTemplateIoApiRequest,
|
||||||
|
@ -28,8 +28,8 @@ export class ApiTemplateIo implements INodeType {
|
||||||
defaults: {
|
defaults: {
|
||||||
name: 'APITemplate.io',
|
name: 'APITemplate.io',
|
||||||
},
|
},
|
||||||
inputs: ['main'],
|
inputs: [NodeConnectionType.Main],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
credentials: [
|
credentials: [
|
||||||
{
|
{
|
||||||
name: 'apiTemplateIoApi',
|
name: 'apiTemplateIoApi',
|
||||||
|
|
|
@ -8,7 +8,7 @@ import type {
|
||||||
INodeTypeDescription,
|
INodeTypeDescription,
|
||||||
JsonObject,
|
JsonObject,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
import { NodeApiError, NodeOperationError } from 'n8n-workflow';
|
import { NodeConnectionType, NodeApiError, NodeOperationError } from 'n8n-workflow';
|
||||||
|
|
||||||
import moment from 'moment-timezone';
|
import moment from 'moment-timezone';
|
||||||
|
|
||||||
|
@ -33,8 +33,8 @@ export class Asana implements INodeType {
|
||||||
defaults: {
|
defaults: {
|
||||||
name: 'Asana',
|
name: 'Asana',
|
||||||
},
|
},
|
||||||
inputs: ['main'],
|
inputs: [NodeConnectionType.Main],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
credentials: [
|
credentials: [
|
||||||
{
|
{
|
||||||
name: 'asanaApi',
|
name: 'asanaApi',
|
||||||
|
|
|
@ -8,7 +8,7 @@ import type {
|
||||||
INodeTypeDescription,
|
INodeTypeDescription,
|
||||||
IWebhookResponseData,
|
IWebhookResponseData,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
import { NodeOperationError } from 'n8n-workflow';
|
import { NodeConnectionType, NodeOperationError } from 'n8n-workflow';
|
||||||
|
|
||||||
import { asanaApiRequest, getWorkspaces } from './GenericFunctions';
|
import { asanaApiRequest, getWorkspaces } from './GenericFunctions';
|
||||||
|
|
||||||
|
@ -28,7 +28,7 @@ export class AsanaTrigger implements INodeType {
|
||||||
name: 'Asana Trigger',
|
name: 'Asana Trigger',
|
||||||
},
|
},
|
||||||
inputs: [],
|
inputs: [],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
credentials: [
|
credentials: [
|
||||||
{
|
{
|
||||||
name: 'asanaApi',
|
name: 'asanaApi',
|
||||||
|
|
|
@ -1,12 +1,13 @@
|
||||||
import type {
|
import {
|
||||||
IExecuteFunctions,
|
type IExecuteFunctions,
|
||||||
IDataObject,
|
type IDataObject,
|
||||||
ILoadOptionsFunctions,
|
type ILoadOptionsFunctions,
|
||||||
INodeExecutionData,
|
type INodeExecutionData,
|
||||||
INodePropertyOptions,
|
type INodePropertyOptions,
|
||||||
INodeType,
|
type INodeType,
|
||||||
INodeTypeDescription,
|
type INodeTypeDescription,
|
||||||
NodeExecutionWithMetadata,
|
type NodeExecutionWithMetadata,
|
||||||
|
NodeConnectionType,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
|
|
||||||
import { automizyApiRequest, automizyApiRequestAllItems } from './GenericFunctions';
|
import { automizyApiRequest, automizyApiRequestAllItems } from './GenericFunctions';
|
||||||
|
@ -28,8 +29,8 @@ export class Automizy implements INodeType {
|
||||||
defaults: {
|
defaults: {
|
||||||
name: 'Automizy',
|
name: 'Automizy',
|
||||||
},
|
},
|
||||||
inputs: ['main'],
|
inputs: [NodeConnectionType.Main],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
hidden: true,
|
hidden: true,
|
||||||
credentials: [
|
credentials: [
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,12 +1,13 @@
|
||||||
import type {
|
import {
|
||||||
IExecuteFunctions,
|
type IExecuteFunctions,
|
||||||
IDataObject,
|
type IDataObject,
|
||||||
ILoadOptionsFunctions,
|
type ILoadOptionsFunctions,
|
||||||
INodeExecutionData,
|
type INodeExecutionData,
|
||||||
INodePropertyOptions,
|
type INodePropertyOptions,
|
||||||
INodeType,
|
type INodeType,
|
||||||
INodeTypeDescription,
|
type INodeTypeDescription,
|
||||||
IHttpRequestMethods,
|
type IHttpRequestMethods,
|
||||||
|
NodeConnectionType,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
|
|
||||||
import { autopilotApiRequest, autopilotApiRequestAllItems } from './GenericFunctions';
|
import { autopilotApiRequest, autopilotApiRequestAllItems } from './GenericFunctions';
|
||||||
|
@ -31,8 +32,8 @@ export class Autopilot implements INodeType {
|
||||||
defaults: {
|
defaults: {
|
||||||
name: 'Autopilot',
|
name: 'Autopilot',
|
||||||
},
|
},
|
||||||
inputs: ['main'],
|
inputs: [NodeConnectionType.Main],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
credentials: [
|
credentials: [
|
||||||
{
|
{
|
||||||
name: 'autopilotApi',
|
name: 'autopilotApi',
|
||||||
|
|
|
@ -6,6 +6,7 @@ import type {
|
||||||
INodeTypeDescription,
|
INodeTypeDescription,
|
||||||
IWebhookResponseData,
|
IWebhookResponseData,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
|
import { NodeConnectionType } from 'n8n-workflow';
|
||||||
|
|
||||||
import { snakeCase } from 'change-case';
|
import { snakeCase } from 'change-case';
|
||||||
import { autopilotApiRequest } from './GenericFunctions';
|
import { autopilotApiRequest } from './GenericFunctions';
|
||||||
|
@ -23,7 +24,7 @@ export class AutopilotTrigger implements INodeType {
|
||||||
name: 'Autopilot Trigger',
|
name: 'Autopilot Trigger',
|
||||||
},
|
},
|
||||||
inputs: [],
|
inputs: [],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
credentials: [
|
credentials: [
|
||||||
{
|
{
|
||||||
name: 'autopilotApi',
|
name: 'autopilotApi',
|
||||||
|
|
|
@ -8,7 +8,7 @@ import type {
|
||||||
INodeTypeDescription,
|
INodeTypeDescription,
|
||||||
JsonObject,
|
JsonObject,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
import { NodeApiError } from 'n8n-workflow';
|
import { NodeConnectionType, NodeApiError } from 'n8n-workflow';
|
||||||
|
|
||||||
import { awsApiRequestREST } from './GenericFunctions';
|
import { awsApiRequestREST } from './GenericFunctions';
|
||||||
|
|
||||||
|
@ -24,8 +24,8 @@ export class AwsLambda implements INodeType {
|
||||||
defaults: {
|
defaults: {
|
||||||
name: 'AWS Lambda',
|
name: 'AWS Lambda',
|
||||||
},
|
},
|
||||||
inputs: ['main'],
|
inputs: [NodeConnectionType.Main],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
credentials: [
|
credentials: [
|
||||||
{
|
{
|
||||||
name: 'aws',
|
name: 'aws',
|
||||||
|
|
|
@ -1,12 +1,13 @@
|
||||||
import type {
|
import {
|
||||||
IExecuteFunctions,
|
type IExecuteFunctions,
|
||||||
IDataObject,
|
type IDataObject,
|
||||||
ILoadOptionsFunctions,
|
type ILoadOptionsFunctions,
|
||||||
INodeExecutionData,
|
type INodeExecutionData,
|
||||||
INodeListSearchItems,
|
type INodeListSearchItems,
|
||||||
INodeListSearchResult,
|
type INodeListSearchResult,
|
||||||
INodeType,
|
type INodeType,
|
||||||
INodeTypeDescription,
|
type INodeTypeDescription,
|
||||||
|
NodeConnectionType,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
|
|
||||||
import { awsApiRequestSOAP } from './GenericFunctions';
|
import { awsApiRequestSOAP } from './GenericFunctions';
|
||||||
|
@ -23,8 +24,8 @@ export class AwsSns implements INodeType {
|
||||||
defaults: {
|
defaults: {
|
||||||
name: 'AWS SNS',
|
name: 'AWS SNS',
|
||||||
},
|
},
|
||||||
inputs: ['main'],
|
inputs: [NodeConnectionType.Main],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
credentials: [
|
credentials: [
|
||||||
{
|
{
|
||||||
name: 'aws',
|
name: 'aws',
|
||||||
|
|
|
@ -8,7 +8,7 @@ import type {
|
||||||
INodeTypeDescription,
|
INodeTypeDescription,
|
||||||
IWebhookResponseData,
|
IWebhookResponseData,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
import { jsonParse, NodeOperationError } from 'n8n-workflow';
|
import { jsonParse, NodeConnectionType, NodeOperationError } from 'n8n-workflow';
|
||||||
|
|
||||||
import get from 'lodash/get';
|
import get from 'lodash/get';
|
||||||
import { awsApiRequestSOAP } from './GenericFunctions';
|
import { awsApiRequestSOAP } from './GenericFunctions';
|
||||||
|
@ -26,7 +26,7 @@ export class AwsSnsTrigger implements INodeType {
|
||||||
name: 'AWS SNS Trigger',
|
name: 'AWS SNS Trigger',
|
||||||
},
|
},
|
||||||
inputs: [],
|
inputs: [],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
credentials: [
|
credentials: [
|
||||||
{
|
{
|
||||||
name: 'aws',
|
name: 'aws',
|
||||||
|
|
|
@ -5,6 +5,7 @@ import type {
|
||||||
INodeType,
|
INodeType,
|
||||||
INodeTypeDescription,
|
INodeTypeDescription,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
|
import { NodeConnectionType } from 'n8n-workflow';
|
||||||
|
|
||||||
import { certificateFields, certificateOperations } from './CertificateDescription';
|
import { certificateFields, certificateOperations } from './CertificateDescription';
|
||||||
|
|
||||||
|
@ -22,8 +23,8 @@ export class AwsCertificateManager implements INodeType {
|
||||||
defaults: {
|
defaults: {
|
||||||
name: 'AWS Certificate Manager',
|
name: 'AWS Certificate Manager',
|
||||||
},
|
},
|
||||||
inputs: ['main'],
|
inputs: [NodeConnectionType.Main],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
credentials: [
|
credentials: [
|
||||||
{
|
{
|
||||||
name: 'aws',
|
name: 'aws',
|
||||||
|
|
|
@ -5,6 +5,7 @@ import type {
|
||||||
INodeType,
|
INodeType,
|
||||||
INodeTypeDescription,
|
INodeTypeDescription,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
|
import { NodeConnectionType } from 'n8n-workflow';
|
||||||
|
|
||||||
import { awsApiRequestREST } from './GenericFunctions';
|
import { awsApiRequestREST } from './GenericFunctions';
|
||||||
|
|
||||||
|
@ -20,8 +21,8 @@ export class AwsComprehend implements INodeType {
|
||||||
defaults: {
|
defaults: {
|
||||||
name: 'AWS Comprehend',
|
name: 'AWS Comprehend',
|
||||||
},
|
},
|
||||||
inputs: ['main'],
|
inputs: [NodeConnectionType.Main],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
credentials: [
|
credentials: [
|
||||||
{
|
{
|
||||||
name: 'aws',
|
name: 'aws',
|
||||||
|
|
|
@ -1,12 +1,13 @@
|
||||||
/* eslint-disable n8n-nodes-base/node-filename-against-convention */
|
/* eslint-disable n8n-nodes-base/node-filename-against-convention */
|
||||||
import type {
|
import {
|
||||||
IExecuteFunctions,
|
type IExecuteFunctions,
|
||||||
IDataObject,
|
type IDataObject,
|
||||||
ILoadOptionsFunctions,
|
type ILoadOptionsFunctions,
|
||||||
INodeExecutionData,
|
type INodeExecutionData,
|
||||||
INodeType,
|
type INodeType,
|
||||||
INodeTypeDescription,
|
type INodeTypeDescription,
|
||||||
NodeParameterValue,
|
type NodeParameterValue,
|
||||||
|
NodeConnectionType,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
|
|
||||||
import { awsApiRequest, awsApiRequestAllItems } from './GenericFunctions';
|
import { awsApiRequest, awsApiRequestAllItems } from './GenericFunctions';
|
||||||
|
@ -42,8 +43,8 @@ export class AwsDynamoDB implements INodeType {
|
||||||
defaults: {
|
defaults: {
|
||||||
name: 'AWS DynamoDB',
|
name: 'AWS DynamoDB',
|
||||||
},
|
},
|
||||||
inputs: ['main'],
|
inputs: [NodeConnectionType.Main],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
credentials: [
|
credentials: [
|
||||||
{
|
{
|
||||||
name: 'aws',
|
name: 'aws',
|
||||||
|
|
|
@ -8,6 +8,7 @@ import type {
|
||||||
INodeTypeDescription,
|
INodeTypeDescription,
|
||||||
JsonObject,
|
JsonObject,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
|
import { NodeConnectionType } from 'n8n-workflow';
|
||||||
|
|
||||||
import { awsApiRequestSOAP, awsApiRequestSOAPAllItems } from './GenericFunctions';
|
import { awsApiRequestSOAP, awsApiRequestSOAPAllItems } from './GenericFunctions';
|
||||||
|
|
||||||
|
@ -30,8 +31,8 @@ export class AwsElb implements INodeType {
|
||||||
defaults: {
|
defaults: {
|
||||||
name: 'AWS ELB',
|
name: 'AWS ELB',
|
||||||
},
|
},
|
||||||
inputs: ['main'],
|
inputs: [NodeConnectionType.Main],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
credentials: [
|
credentials: [
|
||||||
{
|
{
|
||||||
name: 'aws',
|
name: 'aws',
|
||||||
|
|
|
@ -5,6 +5,7 @@ import type {
|
||||||
INodeType,
|
INodeType,
|
||||||
INodeTypeDescription,
|
INodeTypeDescription,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
|
import { NodeConnectionType } from 'n8n-workflow';
|
||||||
|
|
||||||
import { awsApiRequestREST, keysTPascalCase } from './GenericFunctions';
|
import { awsApiRequestREST, keysTPascalCase } from './GenericFunctions';
|
||||||
|
|
||||||
|
@ -20,8 +21,8 @@ export class AwsRekognition implements INodeType {
|
||||||
defaults: {
|
defaults: {
|
||||||
name: 'AWS Rekognition',
|
name: 'AWS Rekognition',
|
||||||
},
|
},
|
||||||
inputs: ['main'],
|
inputs: [NodeConnectionType.Main],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
credentials: [
|
credentials: [
|
||||||
{
|
{
|
||||||
name: 'aws',
|
name: 'aws',
|
||||||
|
|
|
@ -12,7 +12,7 @@ import type {
|
||||||
INodeTypeBaseDescription,
|
INodeTypeBaseDescription,
|
||||||
INodeTypeDescription,
|
INodeTypeDescription,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
import { NodeOperationError } from 'n8n-workflow';
|
import { NodeConnectionType, NodeOperationError } from 'n8n-workflow';
|
||||||
|
|
||||||
import { bucketFields, bucketOperations } from './BucketDescription';
|
import { bucketFields, bucketOperations } from './BucketDescription';
|
||||||
|
|
||||||
|
@ -42,8 +42,8 @@ export class AwsS3V1 implements INodeType {
|
||||||
defaults: {
|
defaults: {
|
||||||
name: 'AWS S3',
|
name: 'AWS S3',
|
||||||
},
|
},
|
||||||
inputs: ['main'],
|
inputs: [NodeConnectionType.Main],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
credentials: [
|
credentials: [
|
||||||
{
|
{
|
||||||
name: 'aws',
|
name: 'aws',
|
||||||
|
|
|
@ -13,7 +13,7 @@ import type {
|
||||||
INodeTypeBaseDescription,
|
INodeTypeBaseDescription,
|
||||||
INodeTypeDescription,
|
INodeTypeDescription,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
import { NodeOperationError } from 'n8n-workflow';
|
import { NodeConnectionType, NodeOperationError } from 'n8n-workflow';
|
||||||
|
|
||||||
import { bucketFields, bucketOperations } from './BucketDescription';
|
import { bucketFields, bucketOperations } from './BucketDescription';
|
||||||
|
|
||||||
|
@ -42,8 +42,8 @@ export class AwsS3V2 implements INodeType {
|
||||||
defaults: {
|
defaults: {
|
||||||
name: 'AWS S3',
|
name: 'AWS S3',
|
||||||
},
|
},
|
||||||
inputs: ['main'],
|
inputs: [NodeConnectionType.Main],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
credentials: [
|
credentials: [
|
||||||
{
|
{
|
||||||
name: 'aws',
|
name: 'aws',
|
||||||
|
|
|
@ -8,7 +8,7 @@ import type {
|
||||||
INodeType,
|
INodeType,
|
||||||
INodeTypeDescription,
|
INodeTypeDescription,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
import { NodeOperationError } from 'n8n-workflow';
|
import { NodeConnectionType, NodeOperationError } from 'n8n-workflow';
|
||||||
|
|
||||||
import { awsApiRequestSOAP, awsApiRequestSOAPAllItems } from './GenericFunctions';
|
import { awsApiRequestSOAP, awsApiRequestSOAPAllItems } from './GenericFunctions';
|
||||||
|
|
||||||
|
@ -30,8 +30,8 @@ export class AwsSes implements INodeType {
|
||||||
defaults: {
|
defaults: {
|
||||||
name: 'AWS SES',
|
name: 'AWS SES',
|
||||||
},
|
},
|
||||||
inputs: ['main'],
|
inputs: [NodeConnectionType.Main],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
credentials: [
|
credentials: [
|
||||||
{
|
{
|
||||||
name: 'aws',
|
name: 'aws',
|
||||||
|
|
|
@ -10,7 +10,7 @@ import type {
|
||||||
INodeTypeDescription,
|
INodeTypeDescription,
|
||||||
JsonObject,
|
JsonObject,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
import { NodeApiError } from 'n8n-workflow';
|
import { NodeApiError, NodeConnectionType } from 'n8n-workflow';
|
||||||
|
|
||||||
import { pascalCase } from 'change-case';
|
import { pascalCase } from 'change-case';
|
||||||
import { awsApiRequestSOAP } from '../GenericFunctions';
|
import { awsApiRequestSOAP } from '../GenericFunctions';
|
||||||
|
@ -27,8 +27,8 @@ export class AwsSqs implements INodeType {
|
||||||
defaults: {
|
defaults: {
|
||||||
name: 'AWS SQS',
|
name: 'AWS SQS',
|
||||||
},
|
},
|
||||||
inputs: ['main'],
|
inputs: [NodeConnectionType.Main],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
credentials: [
|
credentials: [
|
||||||
{
|
{
|
||||||
name: 'aws',
|
name: 'aws',
|
||||||
|
|
|
@ -1,13 +1,14 @@
|
||||||
import type {
|
import {
|
||||||
ICredentialDataDecryptedObject,
|
NodeConnectionType,
|
||||||
ICredentialsDecrypted,
|
type ICredentialDataDecryptedObject,
|
||||||
ICredentialTestFunctions,
|
type ICredentialsDecrypted,
|
||||||
IDataObject,
|
type ICredentialTestFunctions,
|
||||||
IExecuteFunctions,
|
type IDataObject,
|
||||||
INodeCredentialTestResult,
|
type IExecuteFunctions,
|
||||||
INodeExecutionData,
|
type INodeCredentialTestResult,
|
||||||
INodeType,
|
type INodeExecutionData,
|
||||||
INodeTypeDescription,
|
type INodeType,
|
||||||
|
type INodeTypeDescription,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
|
|
||||||
import type { IExpenseDocument } from './GenericFunctions';
|
import type { IExpenseDocument } from './GenericFunctions';
|
||||||
|
@ -25,8 +26,8 @@ export class AwsTextract implements INodeType {
|
||||||
defaults: {
|
defaults: {
|
||||||
name: 'AWS Textract',
|
name: 'AWS Textract',
|
||||||
},
|
},
|
||||||
inputs: ['main'],
|
inputs: [NodeConnectionType.Main],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
credentials: [
|
credentials: [
|
||||||
{
|
{
|
||||||
name: 'aws',
|
name: 'aws',
|
||||||
|
|
|
@ -5,6 +5,7 @@ import type {
|
||||||
INodeType,
|
INodeType,
|
||||||
INodeTypeDescription,
|
INodeTypeDescription,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
|
import { NodeConnectionType } from 'n8n-workflow';
|
||||||
|
|
||||||
import { awsApiRequestREST, awsApiRequestRESTAllItems } from './GenericFunctions';
|
import { awsApiRequestREST, awsApiRequestRESTAllItems } from './GenericFunctions';
|
||||||
|
|
||||||
|
@ -20,8 +21,8 @@ export class AwsTranscribe implements INodeType {
|
||||||
defaults: {
|
defaults: {
|
||||||
name: 'AWS Transcribe',
|
name: 'AWS Transcribe',
|
||||||
},
|
},
|
||||||
inputs: ['main'],
|
inputs: [NodeConnectionType.Main],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
credentials: [
|
credentials: [
|
||||||
{
|
{
|
||||||
name: 'aws',
|
name: 'aws',
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/* eslint-disable n8n-nodes-base/node-filename-against-convention */
|
/* eslint-disable n8n-nodes-base/node-filename-against-convention */
|
||||||
import type { INodeTypeDescription } from 'n8n-workflow';
|
import { NodeConnectionType, type INodeTypeDescription } from 'n8n-workflow';
|
||||||
|
|
||||||
import * as file from './file';
|
import * as file from './file';
|
||||||
import * as employee from './employee';
|
import * as employee from './employee';
|
||||||
|
@ -22,9 +22,9 @@ export const versionDescription: INodeTypeDescription = {
|
||||||
group: ['transform'],
|
group: ['transform'],
|
||||||
// eslint-disable-next-line n8n-nodes-base/node-class-description-icon-not-svg
|
// eslint-disable-next-line n8n-nodes-base/node-class-description-icon-not-svg
|
||||||
icon: 'file:bambooHr.png',
|
icon: 'file:bambooHr.png',
|
||||||
inputs: ['main'],
|
inputs: [NodeConnectionType.Main],
|
||||||
name: 'bambooHr',
|
name: 'bambooHr',
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
properties: [
|
properties: [
|
||||||
{
|
{
|
||||||
displayName: 'Resource',
|
displayName: 'Resource',
|
||||||
|
|
|
@ -7,6 +7,7 @@ import type {
|
||||||
INodeType,
|
INodeType,
|
||||||
INodeTypeDescription,
|
INodeTypeDescription,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
|
import { NodeConnectionType } from 'n8n-workflow';
|
||||||
|
|
||||||
import { bannerbearApiRequest, keysToSnakeCase } from './GenericFunctions';
|
import { bannerbearApiRequest, keysToSnakeCase } from './GenericFunctions';
|
||||||
|
|
||||||
|
@ -27,8 +28,8 @@ export class Bannerbear implements INodeType {
|
||||||
defaults: {
|
defaults: {
|
||||||
name: 'Bannerbear',
|
name: 'Bannerbear',
|
||||||
},
|
},
|
||||||
inputs: ['main'],
|
inputs: [NodeConnectionType.Main],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
credentials: [
|
credentials: [
|
||||||
{
|
{
|
||||||
name: 'bannerbearApi',
|
name: 'bannerbearApi',
|
||||||
|
|
|
@ -1,10 +1,11 @@
|
||||||
import type {
|
import {
|
||||||
IExecuteFunctions,
|
type IExecuteFunctions,
|
||||||
IDataObject,
|
type IDataObject,
|
||||||
ILoadOptionsFunctions,
|
type ILoadOptionsFunctions,
|
||||||
INodeExecutionData,
|
type INodeExecutionData,
|
||||||
INodeType,
|
type INodeType,
|
||||||
INodeTypeDescription,
|
type INodeTypeDescription,
|
||||||
|
NodeConnectionType,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
|
@ -38,8 +39,8 @@ export class Baserow implements INodeType {
|
||||||
defaults: {
|
defaults: {
|
||||||
name: 'Baserow',
|
name: 'Baserow',
|
||||||
},
|
},
|
||||||
inputs: ['main'],
|
inputs: [NodeConnectionType.Main],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
credentials: [
|
credentials: [
|
||||||
{
|
{
|
||||||
name: 'baserowApi',
|
name: 'baserowApi',
|
||||||
|
|
|
@ -1,12 +1,13 @@
|
||||||
import type {
|
import {
|
||||||
IExecuteFunctions,
|
type IExecuteFunctions,
|
||||||
IDataObject,
|
type IDataObject,
|
||||||
ILoadOptionsFunctions,
|
type ILoadOptionsFunctions,
|
||||||
INodeExecutionData,
|
type INodeExecutionData,
|
||||||
INodeParameters,
|
type INodeParameters,
|
||||||
INodePropertyOptions,
|
type INodePropertyOptions,
|
||||||
INodeType,
|
type INodeType,
|
||||||
INodeTypeDescription,
|
type INodeTypeDescription,
|
||||||
|
NodeConnectionType,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
|
|
||||||
import moment from 'moment-timezone';
|
import moment from 'moment-timezone';
|
||||||
|
@ -32,8 +33,8 @@ export class Beeminder implements INodeType {
|
||||||
},
|
},
|
||||||
// eslint-disable-next-line n8n-nodes-base/node-class-description-icon-not-svg
|
// eslint-disable-next-line n8n-nodes-base/node-class-description-icon-not-svg
|
||||||
icon: 'file:beeminder.png',
|
icon: 'file:beeminder.png',
|
||||||
inputs: ['main'],
|
inputs: [NodeConnectionType.Main],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
credentials: [
|
credentials: [
|
||||||
{
|
{
|
||||||
name: 'beeminderApi',
|
name: 'beeminderApi',
|
||||||
|
|
|
@ -1,16 +1,17 @@
|
||||||
import type {
|
import {
|
||||||
IHookFunctions,
|
type IHookFunctions,
|
||||||
IWebhookFunctions,
|
type IWebhookFunctions,
|
||||||
ICredentialsDecrypted,
|
type ICredentialsDecrypted,
|
||||||
ICredentialTestFunctions,
|
type ICredentialTestFunctions,
|
||||||
IDataObject,
|
type IDataObject,
|
||||||
ILoadOptionsFunctions,
|
type ILoadOptionsFunctions,
|
||||||
INodeCredentialTestResult,
|
type INodeCredentialTestResult,
|
||||||
INodePropertyOptions,
|
type INodePropertyOptions,
|
||||||
INodeType,
|
type INodeType,
|
||||||
INodeTypeDescription,
|
type INodeTypeDescription,
|
||||||
IWebhookResponseData,
|
type IWebhookResponseData,
|
||||||
IRequestOptions,
|
type IRequestOptions,
|
||||||
|
NodeConnectionType,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
|
|
||||||
import { bitbucketApiRequest, bitbucketApiRequestAllItems } from './GenericFunctions';
|
import { bitbucketApiRequest, bitbucketApiRequestAllItems } from './GenericFunctions';
|
||||||
|
@ -27,7 +28,7 @@ export class BitbucketTrigger implements INodeType {
|
||||||
name: 'Bitbucket Trigger',
|
name: 'Bitbucket Trigger',
|
||||||
},
|
},
|
||||||
inputs: [],
|
inputs: [],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
credentials: [
|
credentials: [
|
||||||
{
|
{
|
||||||
name: 'bitbucketApi',
|
name: 'bitbucketApi',
|
||||||
|
|
|
@ -7,6 +7,7 @@ import type {
|
||||||
INodeType,
|
INodeType,
|
||||||
INodeTypeDescription,
|
INodeTypeDescription,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
|
import { NodeConnectionType } from 'n8n-workflow';
|
||||||
|
|
||||||
import { linkFields, linkOperations } from './LinkDescription';
|
import { linkFields, linkOperations } from './LinkDescription';
|
||||||
|
|
||||||
|
@ -24,8 +25,8 @@ export class Bitly implements INodeType {
|
||||||
defaults: {
|
defaults: {
|
||||||
name: 'Bitly',
|
name: 'Bitly',
|
||||||
},
|
},
|
||||||
inputs: ['main'],
|
inputs: [NodeConnectionType.Main],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
credentials: [
|
credentials: [
|
||||||
{
|
{
|
||||||
name: 'bitlyApi',
|
name: 'bitlyApi',
|
||||||
|
|
|
@ -6,7 +6,7 @@ import type {
|
||||||
INodeType,
|
INodeType,
|
||||||
INodeTypeDescription,
|
INodeTypeDescription,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
import { NodeOperationError } from 'n8n-workflow';
|
import { NodeConnectionType, NodeOperationError } from 'n8n-workflow';
|
||||||
|
|
||||||
import isEmpty from 'lodash/isEmpty';
|
import isEmpty from 'lodash/isEmpty';
|
||||||
import partialRight from 'lodash/partialRight';
|
import partialRight from 'lodash/partialRight';
|
||||||
|
@ -46,8 +46,8 @@ export class Bitwarden implements INodeType {
|
||||||
defaults: {
|
defaults: {
|
||||||
name: 'Bitwarden',
|
name: 'Bitwarden',
|
||||||
},
|
},
|
||||||
inputs: ['main'],
|
inputs: [NodeConnectionType.Main],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
credentials: [
|
credentials: [
|
||||||
{
|
{
|
||||||
name: 'bitwardenApi',
|
name: 'bitwardenApi',
|
||||||
|
|
|
@ -5,7 +5,7 @@ import type {
|
||||||
INodeType,
|
INodeType,
|
||||||
INodeTypeDescription,
|
INodeTypeDescription,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
import { NodeOperationError } from 'n8n-workflow';
|
import { NodeConnectionType, NodeOperationError } from 'n8n-workflow';
|
||||||
|
|
||||||
import moment from 'moment-timezone';
|
import moment from 'moment-timezone';
|
||||||
import { noCase } from 'change-case';
|
import { noCase } from 'change-case';
|
||||||
|
@ -28,8 +28,8 @@ export class Box implements INodeType {
|
||||||
defaults: {
|
defaults: {
|
||||||
name: 'Box',
|
name: 'Box',
|
||||||
},
|
},
|
||||||
inputs: ['main'],
|
inputs: [NodeConnectionType.Main],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
credentials: [
|
credentials: [
|
||||||
{
|
{
|
||||||
name: 'boxOAuth2Api',
|
name: 'boxOAuth2Api',
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
import type {
|
import {
|
||||||
IHookFunctions,
|
type IHookFunctions,
|
||||||
IWebhookFunctions,
|
type IWebhookFunctions,
|
||||||
INodeType,
|
type INodeType,
|
||||||
INodeTypeDescription,
|
type INodeTypeDescription,
|
||||||
IWebhookResponseData,
|
type IWebhookResponseData,
|
||||||
|
NodeConnectionType,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
|
|
||||||
import { boxApiRequest, boxApiRequestAllItems } from './GenericFunctions';
|
import { boxApiRequest, boxApiRequestAllItems } from './GenericFunctions';
|
||||||
|
@ -21,7 +22,7 @@ export class BoxTrigger implements INodeType {
|
||||||
name: 'Box Trigger',
|
name: 'Box Trigger',
|
||||||
},
|
},
|
||||||
inputs: [],
|
inputs: [],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
credentials: [
|
credentials: [
|
||||||
{
|
{
|
||||||
name: 'boxOAuth2Api',
|
name: 'boxOAuth2Api',
|
||||||
|
|
|
@ -5,6 +5,7 @@ import type {
|
||||||
INodeType,
|
INodeType,
|
||||||
INodeTypeDescription,
|
INodeTypeDescription,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
|
import { NodeConnectionType } from 'n8n-workflow';
|
||||||
|
|
||||||
import { brandfetchApiRequest } from './GenericFunctions';
|
import { brandfetchApiRequest } from './GenericFunctions';
|
||||||
|
|
||||||
|
@ -22,8 +23,8 @@ export class Brandfetch implements INodeType {
|
||||||
defaults: {
|
defaults: {
|
||||||
name: 'Brandfetch',
|
name: 'Brandfetch',
|
||||||
},
|
},
|
||||||
inputs: ['main'],
|
inputs: [NodeConnectionType.Main],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
credentials: [
|
credentials: [
|
||||||
{
|
{
|
||||||
name: 'brandfetchApi',
|
name: 'brandfetchApi',
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
/* eslint-disable n8n-nodes-base/node-filename-against-convention */
|
/* eslint-disable n8n-nodes-base/node-filename-against-convention */
|
||||||
import type { INodeType, INodeTypeDescription } from 'n8n-workflow';
|
import type { INodeType, INodeTypeDescription } from 'n8n-workflow';
|
||||||
|
import { NodeConnectionType } from 'n8n-workflow';
|
||||||
import { attributeFields, attributeOperations } from './AttributeDescription';
|
import { attributeFields, attributeOperations } from './AttributeDescription';
|
||||||
import { contactFields, contactOperations } from './ContactDescription';
|
import { contactFields, contactOperations } from './ContactDescription';
|
||||||
import { emailFields, emailOperations } from './EmailDescription';
|
import { emailFields, emailOperations } from './EmailDescription';
|
||||||
|
@ -18,8 +19,8 @@ export class Brevo implements INodeType {
|
||||||
defaults: {
|
defaults: {
|
||||||
name: 'Brevo',
|
name: 'Brevo',
|
||||||
},
|
},
|
||||||
inputs: ['main'],
|
inputs: [NodeConnectionType.Main],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
credentials: [
|
credentials: [
|
||||||
{
|
{
|
||||||
name: 'sendInBlueApi',
|
name: 'sendInBlueApi',
|
||||||
|
|
|
@ -1,10 +1,11 @@
|
||||||
/* eslint-disable n8n-nodes-base/node-filename-against-convention */
|
/* eslint-disable n8n-nodes-base/node-filename-against-convention */
|
||||||
import type {
|
import {
|
||||||
IHookFunctions,
|
NodeConnectionType,
|
||||||
INodeType,
|
type IHookFunctions,
|
||||||
INodeTypeDescription,
|
type INodeType,
|
||||||
IWebhookFunctions,
|
type INodeTypeDescription,
|
||||||
IWebhookResponseData,
|
type IWebhookFunctions,
|
||||||
|
type IWebhookResponseData,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
import { BrevoWebhookApi } from './GenericFunctions';
|
import { BrevoWebhookApi } from './GenericFunctions';
|
||||||
|
|
||||||
|
@ -29,7 +30,7 @@ export class BrevoTrigger implements INodeType {
|
||||||
inputs: [],
|
inputs: [],
|
||||||
// keep sendinblue name for backward compatibility
|
// keep sendinblue name for backward compatibility
|
||||||
name: 'sendInBlueTrigger',
|
name: 'sendInBlueTrigger',
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
version: 1,
|
version: 1,
|
||||||
webhooks: [
|
webhooks: [
|
||||||
{
|
{
|
||||||
|
|
|
@ -5,7 +5,7 @@ import type {
|
||||||
INodeType,
|
INodeType,
|
||||||
INodeTypeDescription,
|
INodeTypeDescription,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
import { NodeOperationError } from 'n8n-workflow';
|
import { NodeConnectionType, NodeOperationError } from 'n8n-workflow';
|
||||||
|
|
||||||
import { bubbleApiRequest, bubbleApiRequestAllItems, validateJSON } from './GenericFunctions';
|
import { bubbleApiRequest, bubbleApiRequestAllItems, validateJSON } from './GenericFunctions';
|
||||||
|
|
||||||
|
@ -23,8 +23,8 @@ export class Bubble implements INodeType {
|
||||||
defaults: {
|
defaults: {
|
||||||
name: 'Bubble',
|
name: 'Bubble',
|
||||||
},
|
},
|
||||||
inputs: ['main'],
|
inputs: [NodeConnectionType.Main],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
credentials: [
|
credentials: [
|
||||||
{
|
{
|
||||||
name: 'bubbleApi',
|
name: 'bubbleApi',
|
||||||
|
|
|
@ -1,12 +1,13 @@
|
||||||
import type {
|
import {
|
||||||
IDataObject,
|
type IDataObject,
|
||||||
IHookFunctions,
|
type IHookFunctions,
|
||||||
IWebhookFunctions,
|
type IWebhookFunctions,
|
||||||
ILoadOptionsFunctions,
|
type ILoadOptionsFunctions,
|
||||||
INodePropertyOptions,
|
type INodePropertyOptions,
|
||||||
INodeType,
|
type INodeType,
|
||||||
INodeTypeDescription,
|
type INodeTypeDescription,
|
||||||
IWebhookResponseData,
|
type IWebhookResponseData,
|
||||||
|
NodeConnectionType,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
|
|
||||||
import { calApiRequest, sortOptionParameters } from './GenericFunctions';
|
import { calApiRequest, sortOptionParameters } from './GenericFunctions';
|
||||||
|
@ -24,7 +25,7 @@ export class CalTrigger implements INodeType {
|
||||||
name: 'Cal.com Trigger',
|
name: 'Cal.com Trigger',
|
||||||
},
|
},
|
||||||
inputs: [],
|
inputs: [],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
credentials: [
|
credentials: [
|
||||||
{
|
{
|
||||||
name: 'calApi',
|
name: 'calApi',
|
||||||
|
|
|
@ -6,6 +6,7 @@ import type {
|
||||||
INodeTypeDescription,
|
INodeTypeDescription,
|
||||||
IWebhookResponseData,
|
IWebhookResponseData,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
|
import { NodeConnectionType } from 'n8n-workflow';
|
||||||
|
|
||||||
import { calendlyApiRequest, getAuthenticationType } from './GenericFunctions';
|
import { calendlyApiRequest, getAuthenticationType } from './GenericFunctions';
|
||||||
|
|
||||||
|
@ -21,7 +22,7 @@ export class CalendlyTrigger implements INodeType {
|
||||||
name: 'Calendly Trigger',
|
name: 'Calendly Trigger',
|
||||||
},
|
},
|
||||||
inputs: [],
|
inputs: [],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
credentials: [
|
credentials: [
|
||||||
{
|
{
|
||||||
name: 'calendlyApi',
|
name: 'calendlyApi',
|
||||||
|
|
|
@ -9,7 +9,7 @@ import type {
|
||||||
IRequestOptions,
|
IRequestOptions,
|
||||||
IHttpRequestMethods,
|
IHttpRequestMethods,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
import { NodeApiError, NodeOperationError } from 'n8n-workflow';
|
import { NodeApiError, NodeConnectionType, NodeOperationError } from 'n8n-workflow';
|
||||||
|
|
||||||
interface CustomProperty {
|
interface CustomProperty {
|
||||||
name: string;
|
name: string;
|
||||||
|
@ -37,8 +37,8 @@ export class Chargebee implements INodeType {
|
||||||
defaults: {
|
defaults: {
|
||||||
name: 'Chargebee',
|
name: 'Chargebee',
|
||||||
},
|
},
|
||||||
inputs: ['main'],
|
inputs: [NodeConnectionType.Main],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
credentials: [
|
credentials: [
|
||||||
{
|
{
|
||||||
name: 'chargebeeApi',
|
name: 'chargebeeApi',
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
import type {
|
import {
|
||||||
IDataObject,
|
type IDataObject,
|
||||||
IWebhookFunctions,
|
type IWebhookFunctions,
|
||||||
INodeType,
|
type INodeType,
|
||||||
INodeTypeDescription,
|
type INodeTypeDescription,
|
||||||
IWebhookResponseData,
|
type IWebhookResponseData,
|
||||||
|
NodeConnectionType,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
|
|
||||||
export class ChargebeeTrigger implements INodeType {
|
export class ChargebeeTrigger implements INodeType {
|
||||||
|
@ -19,7 +20,7 @@ export class ChargebeeTrigger implements INodeType {
|
||||||
name: 'Chargebee Trigger',
|
name: 'Chargebee Trigger',
|
||||||
},
|
},
|
||||||
inputs: [],
|
inputs: [],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
webhooks: [
|
webhooks: [
|
||||||
{
|
{
|
||||||
name: 'default',
|
name: 'default',
|
||||||
|
|
|
@ -5,6 +5,7 @@ import type {
|
||||||
INodeType,
|
INodeType,
|
||||||
INodeTypeDescription,
|
INodeTypeDescription,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
|
import { NodeConnectionType } from 'n8n-workflow';
|
||||||
|
|
||||||
import { pipelineFields, pipelineOperations } from './PipelineDescription';
|
import { pipelineFields, pipelineOperations } from './PipelineDescription';
|
||||||
|
|
||||||
|
@ -23,8 +24,8 @@ export class CircleCi implements INodeType {
|
||||||
defaults: {
|
defaults: {
|
||||||
name: 'CircleCI',
|
name: 'CircleCI',
|
||||||
},
|
},
|
||||||
inputs: ['main'],
|
inputs: [NodeConnectionType.Main],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
credentials: [
|
credentials: [
|
||||||
{
|
{
|
||||||
name: 'circleCiApi',
|
name: 'circleCiApi',
|
||||||
|
|
|
@ -7,6 +7,7 @@ import type {
|
||||||
INodeType,
|
INodeType,
|
||||||
INodeTypeDescription,
|
INodeTypeDescription,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
|
import { NodeConnectionType } from 'n8n-workflow';
|
||||||
|
|
||||||
import moment from 'moment-timezone';
|
import moment from 'moment-timezone';
|
||||||
import { getAttachments, webexApiRequest, webexApiRequestAllItems } from './GenericFunctions';
|
import { getAttachments, webexApiRequest, webexApiRequestAllItems } from './GenericFunctions';
|
||||||
|
@ -39,8 +40,8 @@ export class CiscoWebex implements INodeType {
|
||||||
required: true,
|
required: true,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
inputs: ['main'],
|
inputs: [NodeConnectionType.Main],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
properties: [
|
properties: [
|
||||||
{
|
{
|
||||||
displayName: 'Resource',
|
displayName: 'Resource',
|
||||||
|
|
|
@ -7,6 +7,7 @@ import type {
|
||||||
INodeTypeDescription,
|
INodeTypeDescription,
|
||||||
IWebhookResponseData,
|
IWebhookResponseData,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
|
import { NodeConnectionType } from 'n8n-workflow';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
getAutomaticSecret,
|
getAutomaticSecret,
|
||||||
|
@ -30,7 +31,7 @@ export class CiscoWebexTrigger implements INodeType {
|
||||||
name: 'Webex by Cisco Trigger',
|
name: 'Webex by Cisco Trigger',
|
||||||
},
|
},
|
||||||
inputs: [],
|
inputs: [],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
credentials: [
|
credentials: [
|
||||||
{
|
{
|
||||||
name: 'ciscoWebexOAuth2Api',
|
name: 'ciscoWebexOAuth2Api',
|
||||||
|
|
|
@ -5,6 +5,7 @@ import type {
|
||||||
INodeType,
|
INodeType,
|
||||||
INodeTypeDescription,
|
INodeTypeDescription,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
|
import { NodeConnectionType } from 'n8n-workflow';
|
||||||
|
|
||||||
import { clearbitApiRequest } from './GenericFunctions';
|
import { clearbitApiRequest } from './GenericFunctions';
|
||||||
|
|
||||||
|
@ -24,8 +25,8 @@ export class Clearbit implements INodeType {
|
||||||
defaults: {
|
defaults: {
|
||||||
name: 'Clearbit',
|
name: 'Clearbit',
|
||||||
},
|
},
|
||||||
inputs: ['main'],
|
inputs: [NodeConnectionType.Main],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
credentials: [
|
credentials: [
|
||||||
{
|
{
|
||||||
name: 'clearbitApi',
|
name: 'clearbitApi',
|
||||||
|
|
|
@ -7,7 +7,7 @@ import type {
|
||||||
INodeType,
|
INodeType,
|
||||||
INodeTypeDescription,
|
INodeTypeDescription,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
import { NodeOperationError } from 'n8n-workflow';
|
import { NodeConnectionType, NodeOperationError } from 'n8n-workflow';
|
||||||
|
|
||||||
import moment from 'moment-timezone';
|
import moment from 'moment-timezone';
|
||||||
import { clickupApiRequest, clickupApiRequestAllItems, validateJSON } from './GenericFunctions';
|
import { clickupApiRequest, clickupApiRequestAllItems, validateJSON } from './GenericFunctions';
|
||||||
|
@ -61,8 +61,8 @@ export class ClickUp implements INodeType {
|
||||||
defaults: {
|
defaults: {
|
||||||
name: 'ClickUp',
|
name: 'ClickUp',
|
||||||
},
|
},
|
||||||
inputs: ['main'],
|
inputs: [NodeConnectionType.Main],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
credentials: [
|
credentials: [
|
||||||
{
|
{
|
||||||
name: 'clickUpApi',
|
name: 'clickUpApi',
|
||||||
|
|
|
@ -9,6 +9,7 @@ import type {
|
||||||
INodeTypeDescription,
|
INodeTypeDescription,
|
||||||
IWebhookResponseData,
|
IWebhookResponseData,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
|
import { NodeConnectionType } from 'n8n-workflow';
|
||||||
|
|
||||||
import { clickupApiRequest } from './GenericFunctions';
|
import { clickupApiRequest } from './GenericFunctions';
|
||||||
|
|
||||||
|
@ -24,7 +25,7 @@ export class ClickUpTrigger implements INodeType {
|
||||||
name: 'ClickUp Trigger',
|
name: 'ClickUp Trigger',
|
||||||
},
|
},
|
||||||
inputs: [],
|
inputs: [],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
credentials: [
|
credentials: [
|
||||||
{
|
{
|
||||||
name: 'clickUpApi',
|
name: 'clickUpApi',
|
||||||
|
|
|
@ -7,6 +7,7 @@ import type {
|
||||||
INodeType,
|
INodeType,
|
||||||
INodeTypeDescription,
|
INodeTypeDescription,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
|
import { NodeConnectionType } from 'n8n-workflow';
|
||||||
|
|
||||||
import moment from 'moment-timezone';
|
import moment from 'moment-timezone';
|
||||||
import { clockifyApiRequest, clockifyApiRequestAllItems } from './GenericFunctions';
|
import { clockifyApiRequest, clockifyApiRequestAllItems } from './GenericFunctions';
|
||||||
|
@ -43,8 +44,8 @@ export class Clockify implements INodeType {
|
||||||
defaults: {
|
defaults: {
|
||||||
name: 'Clockify',
|
name: 'Clockify',
|
||||||
},
|
},
|
||||||
inputs: ['main'],
|
inputs: [NodeConnectionType.Main],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
credentials: [
|
credentials: [
|
||||||
{
|
{
|
||||||
name: 'clockifyApi',
|
name: 'clockifyApi',
|
||||||
|
|
|
@ -9,6 +9,7 @@ import type {
|
||||||
INodeType,
|
INodeType,
|
||||||
INodeTypeDescription,
|
INodeTypeDescription,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
|
import { NodeConnectionType } from 'n8n-workflow';
|
||||||
|
|
||||||
import { clockifyApiRequest } from './GenericFunctions';
|
import { clockifyApiRequest } from './GenericFunctions';
|
||||||
|
|
||||||
|
@ -28,7 +29,7 @@ export class ClockifyTrigger implements INodeType {
|
||||||
name: 'Clockify Trigger',
|
name: 'Clockify Trigger',
|
||||||
},
|
},
|
||||||
inputs: [],
|
inputs: [],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
credentials: [
|
credentials: [
|
||||||
{
|
{
|
||||||
name: 'clockifyApi',
|
name: 'clockifyApi',
|
||||||
|
|
|
@ -7,6 +7,7 @@ import type {
|
||||||
INodeType,
|
INodeType,
|
||||||
INodeTypeDescription,
|
INodeTypeDescription,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
|
import { NodeConnectionType } from 'n8n-workflow';
|
||||||
|
|
||||||
import { cloudflareApiRequest, cloudflareApiRequestAllItems } from './GenericFunctions';
|
import { cloudflareApiRequest, cloudflareApiRequestAllItems } from './GenericFunctions';
|
||||||
|
|
||||||
|
@ -24,8 +25,8 @@ export class Cloudflare implements INodeType {
|
||||||
defaults: {
|
defaults: {
|
||||||
name: 'Cloudflare',
|
name: 'Cloudflare',
|
||||||
},
|
},
|
||||||
inputs: ['main'],
|
inputs: [NodeConnectionType.Main],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
credentials: [
|
credentials: [
|
||||||
{
|
{
|
||||||
name: 'cloudflareApi',
|
name: 'cloudflareApi',
|
||||||
|
|
|
@ -7,6 +7,7 @@ import type {
|
||||||
INodeType,
|
INodeType,
|
||||||
INodeTypeDescription,
|
INodeTypeDescription,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
|
import { NodeConnectionType } from 'n8n-workflow';
|
||||||
import { collectionFields, collectionOperations } from './CollectionDescription';
|
import { collectionFields, collectionOperations } from './CollectionDescription';
|
||||||
import {
|
import {
|
||||||
createCollectionEntry,
|
createCollectionEntry,
|
||||||
|
@ -31,8 +32,8 @@ export class Cockpit implements INodeType {
|
||||||
defaults: {
|
defaults: {
|
||||||
name: 'Cockpit',
|
name: 'Cockpit',
|
||||||
},
|
},
|
||||||
inputs: ['main'],
|
inputs: [NodeConnectionType.Main],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
credentials: [
|
credentials: [
|
||||||
{
|
{
|
||||||
name: 'cockpitApi',
|
name: 'cockpitApi',
|
||||||
|
|
|
@ -8,7 +8,7 @@ import type {
|
||||||
INodeTypeDescription,
|
INodeTypeDescription,
|
||||||
JsonObject,
|
JsonObject,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
import { NodeApiError } from 'n8n-workflow';
|
import { NodeConnectionType, NodeApiError } from 'n8n-workflow';
|
||||||
import { codaApiRequest, codaApiRequestAllItems } from './GenericFunctions';
|
import { codaApiRequest, codaApiRequestAllItems } from './GenericFunctions';
|
||||||
import { tableFields, tableOperations } from './TableDescription';
|
import { tableFields, tableOperations } from './TableDescription';
|
||||||
import { formulaFields, formulaOperations } from './FormulaDescription';
|
import { formulaFields, formulaOperations } from './FormulaDescription';
|
||||||
|
@ -27,8 +27,8 @@ export class Coda implements INodeType {
|
||||||
defaults: {
|
defaults: {
|
||||||
name: 'Coda',
|
name: 'Coda',
|
||||||
},
|
},
|
||||||
inputs: ['main'],
|
inputs: [NodeConnectionType.Main],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
credentials: [
|
credentials: [
|
||||||
{
|
{
|
||||||
name: 'codaApi',
|
name: 'codaApi',
|
||||||
|
|
|
@ -1,10 +1,11 @@
|
||||||
import type {
|
import {
|
||||||
CodeExecutionMode,
|
NodeConnectionType,
|
||||||
CodeNodeEditorLanguage,
|
type CodeExecutionMode,
|
||||||
IExecuteFunctions,
|
type CodeNodeEditorLanguage,
|
||||||
INodeExecutionData,
|
type IExecuteFunctions,
|
||||||
INodeType,
|
type INodeExecutionData,
|
||||||
INodeTypeDescription,
|
type INodeType,
|
||||||
|
type INodeTypeDescription,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
import set from 'lodash/set';
|
import set from 'lodash/set';
|
||||||
import { javascriptCodeDescription } from './descriptions/JavascriptCodeDescription';
|
import { javascriptCodeDescription } from './descriptions/JavascriptCodeDescription';
|
||||||
|
@ -28,8 +29,8 @@ export class Code implements INodeType {
|
||||||
defaults: {
|
defaults: {
|
||||||
name: 'Code',
|
name: 'Code',
|
||||||
},
|
},
|
||||||
inputs: ['main'],
|
inputs: [NodeConnectionType.Main],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
parameterPane: 'wide',
|
parameterPane: 'wide',
|
||||||
properties: [
|
properties: [
|
||||||
{
|
{
|
||||||
|
|
|
@ -7,6 +7,7 @@ import type {
|
||||||
INodeType,
|
INodeType,
|
||||||
INodeTypeDescription,
|
INodeTypeDescription,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
|
import { NodeConnectionType } from 'n8n-workflow';
|
||||||
|
|
||||||
import moment from 'moment-timezone';
|
import moment from 'moment-timezone';
|
||||||
import { coinFields, coinOperations } from './CoinDescription';
|
import { coinFields, coinOperations } from './CoinDescription';
|
||||||
|
@ -27,8 +28,8 @@ export class CoinGecko implements INodeType {
|
||||||
defaults: {
|
defaults: {
|
||||||
name: 'CoinGecko',
|
name: 'CoinGecko',
|
||||||
},
|
},
|
||||||
inputs: ['main'],
|
inputs: [NodeConnectionType.Main],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
properties: [
|
properties: [
|
||||||
{
|
{
|
||||||
displayName: 'Resource',
|
displayName: 'Resource',
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
import type {
|
import {
|
||||||
IExecuteFunctions,
|
type IExecuteFunctions,
|
||||||
IDataObject,
|
type IDataObject,
|
||||||
INodeExecutionData,
|
type INodeExecutionData,
|
||||||
INodeType,
|
type INodeType,
|
||||||
INodeTypeDescription,
|
type INodeTypeDescription,
|
||||||
|
NodeConnectionType,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
import {
|
import {
|
||||||
checkInput,
|
checkInput,
|
||||||
|
@ -22,11 +23,16 @@ export class CompareDatasets implements INodeType {
|
||||||
description: 'Compare two inputs for changes',
|
description: 'Compare two inputs for changes',
|
||||||
defaults: { name: 'Compare Datasets' },
|
defaults: { name: 'Compare Datasets' },
|
||||||
// eslint-disable-next-line n8n-nodes-base/node-class-description-inputs-wrong-regular-node
|
// eslint-disable-next-line n8n-nodes-base/node-class-description-inputs-wrong-regular-node
|
||||||
inputs: ['main', 'main'],
|
inputs: [NodeConnectionType.Main, NodeConnectionType.Main],
|
||||||
inputNames: ['Input A', 'Input B'],
|
inputNames: ['Input A', 'Input B'],
|
||||||
requiredInputs: 1,
|
requiredInputs: 1,
|
||||||
// eslint-disable-next-line n8n-nodes-base/node-class-description-outputs-wrong
|
// eslint-disable-next-line n8n-nodes-base/node-class-description-outputs-wrong
|
||||||
outputs: ['main', 'main', 'main', 'main'],
|
outputs: [
|
||||||
|
NodeConnectionType.Main,
|
||||||
|
NodeConnectionType.Main,
|
||||||
|
NodeConnectionType.Main,
|
||||||
|
NodeConnectionType.Main,
|
||||||
|
],
|
||||||
outputNames: ['In A only', 'Same', 'Different', 'In B only'],
|
outputNames: ['In A only', 'Same', 'Different', 'In B only'],
|
||||||
properties: [
|
properties: [
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,10 +1,11 @@
|
||||||
import { promisify } from 'util';
|
import { promisify } from 'util';
|
||||||
import type {
|
import {
|
||||||
IBinaryKeyData,
|
NodeConnectionType,
|
||||||
IExecuteFunctions,
|
type IBinaryKeyData,
|
||||||
INodeExecutionData,
|
type IExecuteFunctions,
|
||||||
INodeType,
|
type INodeExecutionData,
|
||||||
INodeTypeDescription,
|
type INodeType,
|
||||||
|
type INodeTypeDescription,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
|
|
||||||
import * as fflate from 'fflate';
|
import * as fflate from 'fflate';
|
||||||
|
@ -57,8 +58,8 @@ export class Compression implements INodeType {
|
||||||
name: 'Compression',
|
name: 'Compression',
|
||||||
color: '#408000',
|
color: '#408000',
|
||||||
},
|
},
|
||||||
inputs: ['main'],
|
inputs: [NodeConnectionType.Main],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
properties: [
|
properties: [
|
||||||
{
|
{
|
||||||
displayName: 'Operation',
|
displayName: 'Operation',
|
||||||
|
|
|
@ -5,6 +5,7 @@ import type {
|
||||||
INodeType,
|
INodeType,
|
||||||
INodeTypeDescription,
|
INodeTypeDescription,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
|
import { NodeConnectionType } from 'n8n-workflow';
|
||||||
|
|
||||||
import { contentfulApiRequestAllItems, contentfulApiRequest } from './GenericFunctions';
|
import { contentfulApiRequestAllItems, contentfulApiRequest } from './GenericFunctions';
|
||||||
|
|
||||||
|
@ -27,8 +28,8 @@ export class Contentful implements INodeType {
|
||||||
defaults: {
|
defaults: {
|
||||||
name: 'Contentful',
|
name: 'Contentful',
|
||||||
},
|
},
|
||||||
inputs: ['main'],
|
inputs: [NodeConnectionType.Main],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
credentials: [
|
credentials: [
|
||||||
{
|
{
|
||||||
name: 'contentfulApi',
|
name: 'contentfulApi',
|
||||||
|
|
|
@ -1,11 +1,12 @@
|
||||||
import type {
|
import {
|
||||||
IExecuteFunctions,
|
type IExecuteFunctions,
|
||||||
ILoadOptionsFunctions,
|
type ILoadOptionsFunctions,
|
||||||
IDataObject,
|
type IDataObject,
|
||||||
INodeExecutionData,
|
type INodeExecutionData,
|
||||||
INodePropertyOptions,
|
type INodePropertyOptions,
|
||||||
INodeType,
|
type INodeType,
|
||||||
INodeTypeDescription,
|
type INodeTypeDescription,
|
||||||
|
NodeConnectionType,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
|
|
||||||
import { convertKitApiRequest } from './GenericFunctions';
|
import { convertKitApiRequest } from './GenericFunctions';
|
||||||
|
@ -32,8 +33,8 @@ export class ConvertKit implements INodeType {
|
||||||
defaults: {
|
defaults: {
|
||||||
name: 'ConvertKit',
|
name: 'ConvertKit',
|
||||||
},
|
},
|
||||||
inputs: ['main'],
|
inputs: [NodeConnectionType.Main],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
credentials: [
|
credentials: [
|
||||||
{
|
{
|
||||||
name: 'convertKitApi',
|
name: 'convertKitApi',
|
||||||
|
|
|
@ -8,6 +8,7 @@ import type {
|
||||||
INodeTypeDescription,
|
INodeTypeDescription,
|
||||||
IWebhookResponseData,
|
IWebhookResponseData,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
|
import { NodeConnectionType } from 'n8n-workflow';
|
||||||
|
|
||||||
import { snakeCase } from 'change-case';
|
import { snakeCase } from 'change-case';
|
||||||
import { convertKitApiRequest } from './GenericFunctions';
|
import { convertKitApiRequest } from './GenericFunctions';
|
||||||
|
@ -25,7 +26,7 @@ export class ConvertKitTrigger implements INodeType {
|
||||||
name: 'ConvertKit Trigger',
|
name: 'ConvertKit Trigger',
|
||||||
},
|
},
|
||||||
inputs: [],
|
inputs: [],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
credentials: [
|
credentials: [
|
||||||
{
|
{
|
||||||
name: 'convertKitApi',
|
name: 'convertKitApi',
|
||||||
|
|
|
@ -5,6 +5,7 @@ import type {
|
||||||
INodeType,
|
INodeType,
|
||||||
INodeTypeDescription,
|
INodeTypeDescription,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
|
import { NodeConnectionType } from 'n8n-workflow';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
adjustCompanyFields,
|
adjustCompanyFields,
|
||||||
|
@ -46,8 +47,8 @@ export class Copper implements INodeType {
|
||||||
defaults: {
|
defaults: {
|
||||||
name: 'Copper',
|
name: 'Copper',
|
||||||
},
|
},
|
||||||
inputs: ['main'],
|
inputs: [NodeConnectionType.Main],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
credentials: [
|
credentials: [
|
||||||
{
|
{
|
||||||
name: 'copperApi',
|
name: 'copperApi',
|
||||||
|
|
|
@ -6,6 +6,7 @@ import type {
|
||||||
INodeTypeDescription,
|
INodeTypeDescription,
|
||||||
IWebhookResponseData,
|
IWebhookResponseData,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
|
import { NodeConnectionType } from 'n8n-workflow';
|
||||||
|
|
||||||
import { copperApiRequest, getAutomaticSecret } from './GenericFunctions';
|
import { copperApiRequest, getAutomaticSecret } from './GenericFunctions';
|
||||||
|
|
||||||
|
@ -21,7 +22,7 @@ export class CopperTrigger implements INodeType {
|
||||||
name: 'Copper Trigger',
|
name: 'Copper Trigger',
|
||||||
},
|
},
|
||||||
inputs: [],
|
inputs: [],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
credentials: [
|
credentials: [
|
||||||
{
|
{
|
||||||
name: 'copperApi',
|
name: 'copperApi',
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue