refactor: Use NodeConnectionType consistently across the code base (no-changelog) (#10595)

This commit is contained in:
Ricardo Espinoza 2024-08-29 09:55:53 -04:00 committed by GitHub
parent 1491cbd228
commit c4eb3746d7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
521 changed files with 2259 additions and 1999 deletions

View file

@ -1,6 +1,5 @@
import { NodeConnectionType, NodeOperationError } from 'n8n-workflow';
import type {
ConnectionTypes,
INodeInputConfiguration,
INodeInputFilter,
IExecuteFunctions,
@ -28,16 +27,16 @@ import { toolsAgentExecute } from './agents/ToolsAgent/execute';
function getInputs(
agent: 'toolsAgent' | 'conversationalAgent' | 'openAiFunctionsAgent' | 'reActAgent' | 'sqlAgent',
hasOutputParser?: boolean,
): Array<ConnectionTypes | INodeInputConfiguration> {
): Array<NodeConnectionType | INodeInputConfiguration> {
interface SpecialInput {
type: ConnectionTypes;
type: NodeConnectionType;
filter?: INodeInputFilter;
required?: boolean;
}
const getInputData = (
inputs: SpecialInput[],
): Array<ConnectionTypes | INodeInputConfiguration> => {
): Array<NodeConnectionType | INodeInputConfiguration> => {
const displayNames: { [key: string]: string } = {
[NodeConnectionType.AiLanguageModel]: 'Model',
[NodeConnectionType.AiMemory]: 'Memory',

View file

@ -75,7 +75,7 @@ export class ChatTrigger extends Node {
}
];
})() }}`,
outputs: ['main'],
outputs: [NodeConnectionType.Main],
credentials: [
{
// eslint-disable-next-line n8n-nodes-base/node-class-description-credentials-name-unsuffixed

View file

@ -90,7 +90,7 @@ export const versionDescription: INodeTypeDescription = {
},
},
inputs: `={{(${configureNodeInputs})($parameter.resource, $parameter.operation, $parameter.hideTools)}}`,
outputs: ['main'],
outputs: [NodeConnectionType.Main],
credentials: [
{
name: 'openAiApi',

View file

@ -1,5 +1,5 @@
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 { BaseMessage } from '@langchain/core/messages';
@ -31,7 +31,7 @@ export async function callMethodAsync<T>(
this: T,
parameters: {
executeFunctions: IExecuteFunctions;
connectionType: ConnectionTypes;
connectionType: NodeConnectionType;
currentNodeRunIndex: number;
method: (...args: any[]) => Promise<unknown>;
arguments: unknown[];
@ -78,7 +78,7 @@ export function callMethodSync<T>(
this: T,
parameters: {
executeFunctions: IExecuteFunctions;
connectionType: ConnectionTypes;
connectionType: NodeConnectionType;
currentNodeRunIndex: number;
method: (...args: any[]) => T;
arguments: unknown[];
@ -123,7 +123,7 @@ export function logWrapper(
) {
return new Proxy(originalInstance, {
get: (target, prop) => {
let connectionType: ConnectionTypes | undefined;
let connectionType: NodeConnectionType | undefined;
// ========== BaseChatMemory ==========
if (isBaseChatMemory(originalInstance)) {
if (prop === 'loadMemoryVariables' && 'loadMemoryVariables' in target) {

View file

@ -7,7 +7,7 @@ import type {
INode,
INodeProperties,
} from 'n8n-workflow';
import { deepCopy } from 'n8n-workflow';
import { NodeConnectionType, deepCopy } from 'n8n-workflow';
import { Workflow } from 'n8n-workflow';
import { CredentialsHelper } from '@/credentials-helper';
import { NodeTypes } from '@/node-types';
@ -34,8 +34,8 @@ describe('CredentialsHelper', () => {
name: 'Set',
color: '#0000FF',
},
inputs: ['main'],
outputs: ['main'],
inputs: [NodeConnectionType.Main],
outputs: [NodeConnectionType.Main],
properties: [
{
displayName: 'Value1',

View file

@ -1,6 +1,11 @@
import { readFileSync } from 'fs';
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 { ExternalHooks } from '@/external-hooks';
@ -182,7 +187,7 @@ describe('Webhook API', () => {
description: '',
defaults: {},
inputs: [],
outputs: ['main'],
outputs: [NodeConnectionType.Main],
webhooks: [
{
name: 'default',

View file

@ -38,7 +38,6 @@ import { extension, lookup } from 'mime-types';
import type {
BinaryHelperFunctions,
CloseFunction,
ConnectionTypes,
ContextType,
EventNamesAiNodesType,
FieldType,
@ -105,6 +104,7 @@ import type {
SchedulingFunctions,
} from 'n8n-workflow';
import {
NodeConnectionType,
ExpressionError,
LoggerProxy as Logger,
NodeApiError,
@ -2623,13 +2623,13 @@ const addExecutionDataFunctions = async (
nodeName: string,
data: INodeExecutionData[][] | ExecutionBaseError,
runExecutionData: IRunExecutionData,
connectionType: ConnectionTypes,
connectionType: NodeConnectionType,
additionalData: IWorkflowExecuteAdditionalData,
sourceNodeName: string,
sourceNodeRunIndex: number,
currentNodeRunIndex: number,
): Promise<void> => {
if (connectionType === 'main') {
if (connectionType === NodeConnectionType.Main) {
throw new ApplicationError('Setting type is not supported for main connection', {
extra: { type },
});
@ -2732,7 +2732,7 @@ async function getInputConnectionData(
executeData: IExecuteData | undefined,
mode: WorkflowExecuteMode,
closeFunctions: CloseFunction[],
inputName: ConnectionTypes,
inputName: NodeConnectionType,
itemIndex: number,
): Promise<unknown> {
const node = this.getNode();
@ -3676,7 +3676,7 @@ export function getExecuteFunctions(
},
async getInputConnectionData(
inputName: ConnectionTypes,
inputName: NodeConnectionType,
itemIndex: number,
): Promise<unknown> {
return await getInputConnectionData.call(
@ -3817,7 +3817,7 @@ export function getExecuteFunctions(
},
addInputData(
connectionType: ConnectionTypes,
connectionType: NodeConnectionType,
data: INodeExecutionData[][] | ExecutionBaseError,
): { index: number } {
const nodeName = this.getNode().name;
@ -3847,7 +3847,7 @@ export function getExecuteFunctions(
return { index: currentNodeRunIndex };
},
addOutputData(
connectionType: ConnectionTypes,
connectionType: NodeConnectionType,
currentNodeRunIndex: number,
data: INodeExecutionData[][] | ExecutionBaseError,
): void {
@ -4238,7 +4238,7 @@ export function getExecuteWebhookFunctions(
return additionalData.httpRequest.headers;
},
async getInputConnectionData(
inputName: ConnectionTypes,
inputName: NodeConnectionType,
itemIndex: number,
): Promise<unknown> {
// To be able to use expressions like "$json.sessionId" set the

View file

@ -623,7 +623,11 @@ export class WorkflowExecute {
// 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.
const parentNodes = workflow.getParentNodes(inputData.node, 'main', -1);
const parentNodes = workflow.getParentNodes(
inputData.node,
NodeConnectionType.Main,
-1,
);
let nodeToAdd: string | undefined = inputData.node;
parentNodes.push(inputData.node);
parentNodes.reverse();
@ -988,7 +992,11 @@ export class WorkflowExecute {
connectionIndex++
) {
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)
// then ignore that it has inputs and simply execute it as it is without

View file

@ -45,8 +45,8 @@ export const predefinedNodesTypes: INodeTypeData = {
name: 'Version Test',
color: '#0000FF',
},
inputs: ['main'],
outputs: ['main'],
inputs: [NodeConnectionType.Main],
outputs: [NodeConnectionType.Main],
properties: [
{
displayName: 'Display V1',

View file

@ -11,7 +11,7 @@ import type {
INodeTypeDescription,
INodeIssues,
} from 'n8n-workflow';
import { NodeHelpers, Workflow } from 'n8n-workflow';
import { NodeConnectionType, NodeHelpers, Workflow } from 'n8n-workflow';
import { uuid } from '@jsplumb/util';
import { mock } from 'vitest-mock-extended';
@ -52,8 +52,8 @@ export const mockNodeTypeDescription = ({
name,
version = 1,
credentials = [],
inputs = ['main'],
outputs = ['main'],
inputs = [NodeConnectionType.Main],
outputs = [NodeConnectionType.Main],
}: {
name: INodeTypeDescription['name'];
version?: INodeTypeDescription['version'];

View file

@ -11,6 +11,7 @@ import { createExpressionTelemetryPayload } from '@/utils/telemetryUtils';
import { useTelemetry } from '@/composables/useTelemetry';
import type { Segment } from '@/types/expressions';
import type { INodeProperties } from 'n8n-workflow';
import { NodeConnectionType } from 'n8n-workflow';
import { outputTheme } from './ExpressionEditorModal/theme';
import ExpressionOutput from './InlineExpressionEditor/ExpressionOutput.vue';
import RunDataSchema from './RunDataSchema.vue';
@ -152,7 +153,7 @@ async function onDrop(expression: string, event: MouseEvent) {
:nodes="parentNodes"
mapping-enabled
pane-type="input"
connection-type="main"
:connection-type="NodeConnectionType.Main"
/>
</div>

View file

@ -11,7 +11,6 @@ import { useNodeTypesStore } from '@/stores/nodeTypes.store';
import { useUIStore } from '@/stores/ui.store';
import { useWorkflowsStore } from '@/stores/workflows.store';
import type {
ConnectionTypes,
IConnectedNode,
INodeInputConfiguration,
INodeOutputConfiguration,
@ -121,10 +120,10 @@ export default defineComponent({
} else {
// If we can not figure out the node type we set no outputs
if (!Array.isArray(inputs)) {
inputs = [] as ConnectionTypes[];
inputs = [] as NodeConnectionType[];
}
if (!Array.isArray(outputs)) {
outputs = [] as ConnectionTypes[];
outputs = [] as NodeConnectionType[];
}
}
@ -184,7 +183,7 @@ export default defineComponent({
},
rootNodesParents() {
const workflow = this.workflow;
const parentNodes = [...workflow.getParentNodes(this.rootNode, 'main')]
const parentNodes = [...workflow.getParentNodes(this.rootNode, NodeConnectionType.Main)]
.reverse()
.map((parent): IConnectedNode => ({ name: parent, depth: 1, indicies: [] }));
@ -274,8 +273,8 @@ export default defineComponent({
},
methods: {
filterOutConnectionType(
item: ConnectionTypes | INodeOutputConfiguration | INodeInputConfiguration,
type: ConnectionTypes,
item: NodeConnectionType | INodeOutputConfiguration | INodeInputConfiguration,
type: NodeConnectionType,
) {
if (!item) return false;

View file

@ -4,7 +4,7 @@ import { useNodeTypesStore } from '@/stores/nodeTypes.store';
import { useWorkflowsStore } from '@/stores/workflows.store';
import { computed, onMounted, onBeforeUnmount } from 'vue';
import NodeIcon from '@/components/NodeIcon.vue';
import type { INodeTypeDescription } from 'n8n-workflow';
import { NodeConnectionType, type INodeTypeDescription } from 'n8n-workflow';
interface Props {
rootNode: INodeUi;
@ -71,8 +71,12 @@ const connectedNodes = computed<
[FloatingNodePosition.top]: getINodesFromNames(
workflow.getChildNodes(rootName, 'ALL_NON_MAIN'),
),
[FloatingNodePosition.right]: getINodesFromNames(workflow.getChildNodes(rootName, 'main', 1)),
[FloatingNodePosition.left]: getINodesFromNames(workflow.getParentNodes(rootName, 'main', 1)),
[FloatingNodePosition.right]: getINodesFromNames(
workflow.getChildNodes(rootName, NodeConnectionType.Main, 1),
),
[FloatingNodePosition.left]: getINodesFromNames(
workflow.getParentNodes(rootName, NodeConnectionType.Main, 1),
),
};
});

View file

@ -7,7 +7,11 @@ import { NodeHelpers } from 'n8n-workflow';
import { useNodeHelpers } from '@/composables/useNodeHelpers';
import NodeIcon from '@/components/NodeIcon.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 { OnClickOutside } from '@vueuse/components';
@ -22,7 +26,7 @@ const nodeHelpers = useNodeHelpers();
const { debounce } = useDebounce();
const emit = defineEmits<{
switchSelectedNode: [nodeName: string];
openConnectionNodeCreator: [nodeName: string, connectionType: ConnectionTypes];
openConnectionNodeCreator: [nodeName: string, connectionType: NodeConnectionType];
}>();
interface NodeConfig {
@ -33,7 +37,7 @@ interface NodeConfig {
const possibleConnections = ref<INodeInputConfiguration[]>([]);
const expandedGroups = ref<ConnectionTypes[]>([]);
const expandedGroups = ref<NodeConnectionType[]>([]);
const shouldShowNodeInputIssues = ref(false);
const nodeType = computed(() =>
@ -54,7 +58,7 @@ const nodeInputIssues = computed(() => {
return issues?.input ?? {};
});
const connectedNodes = computed<Record<ConnectionTypes, NodeConfig[]>>(() => {
const connectedNodes = computed<Record<NodeConnectionType, NodeConfig[]>>(() => {
return possibleConnections.value.reduce(
(acc, connection) => {
const nodes = getINodesFromNames(
@ -62,24 +66,24 @@ const connectedNodes = computed<Record<ConnectionTypes, NodeConfig[]>>(() => {
);
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);
}
function isMultiConnection(connectionType: ConnectionTypes) {
function isMultiConnection(connectionType: NodeConnectionType) {
const connectionConfig = getConnectionConfig(connectionType);
return connectionConfig?.maxConnections !== 1;
}
function shouldShowConnectionTooltip(connectionType: ConnectionTypes) {
function shouldShowConnectionTooltip(connectionType: NodeConnectionType) {
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 (!isMultiConnection(connectionType)) {
return;
@ -109,14 +113,14 @@ function getINodesFromNames(names: string[]): NodeConfig[] {
.filter((n): n is NodeConfig => n !== null);
}
function hasInputIssues(connectionType: ConnectionTypes) {
function hasInputIssues(connectionType: NodeConnectionType) {
return (
shouldShowNodeInputIssues.value && (nodeInputIssues.value[connectionType] ?? []).length > 0
);
}
function isNodeInputConfiguration(
connectionConfig: ConnectionTypes | INodeInputConfiguration,
connectionConfig: NodeConnectionType | INodeInputConfiguration,
): connectionConfig is INodeInputConfiguration {
if (typeof connectionConfig === 'string') return false;
@ -137,7 +141,7 @@ function getPossibleSubInputConnections(): INodeInputConfiguration[] {
return nonMainInputs;
}
function onNodeClick(nodeName: string, connectionType: ConnectionTypes) {
function onNodeClick(nodeName: string, connectionType: NodeConnectionType) {
if (isMultiConnection(connectionType) && !expandedGroups.value.includes(connectionType)) {
expandConnectionGroup(connectionType, true);
return;
@ -146,7 +150,7 @@ function onNodeClick(nodeName: string, connectionType: ConnectionTypes) {
emit('switchSelectedNode', nodeName);
}
function onPlusClick(connectionType: ConnectionTypes) {
function onPlusClick(connectionType: NodeConnectionType) {
const connectionNodes = connectedNodes.value[connectionType];
if (
isMultiConnection(connectionType) &&

View file

@ -10,7 +10,6 @@ import {
WAIT_TIME_UNLIMITED,
} from '@/constants';
import type {
ConnectionTypes,
ExecutionSummary,
INodeOutputConfiguration,
ITaskData,
@ -244,7 +243,7 @@ const nodeWrapperStyles = computed<StyleValue>(() => {
const mainInputs = inputTypes.filter((output) => output === NodeConnectionType.Main);
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]) {
outputs = NodeHelpers.getNodeOutputs(props.workflow, node.value, nodeType.value);
}

View file

@ -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';
describe('useActionsGenerator', () => {
@ -14,8 +14,8 @@ describe('useActionsGenerator', () => {
defaults: {
name: 'Test',
},
inputs: ['main'],
outputs: ['main'],
inputs: [NodeConnectionType.Main],
outputs: [NodeConnectionType.Main],
properties: [],
};

View file

@ -7,7 +7,6 @@ import type {
INodeParameters,
INodeProperties,
NodeParameterValue,
ConnectionTypes,
} from 'n8n-workflow';
import {
NodeHelpers,
@ -319,7 +318,7 @@ export default defineComponent({
onSwitchSelectedNode(node: string) {
this.$emit('switchSelectedNode', node);
},
onOpenConnectionNodeCreator(node: string, connectionType: ConnectionTypes) {
onOpenConnectionNodeCreator(node: string, connectionType: NodeConnectionType) {
this.$emit('openConnectionNodeCreator', node, connectionType);
},
populateHiddenIssuesSet() {

View file

@ -5,7 +5,6 @@ import { mapStores } from 'pinia';
import { useStorage } from '@/composables/useStorage';
import { saveAs } from 'file-saver';
import type {
ConnectionTypes,
IBinaryData,
IBinaryKeyData,
IDataObject,
@ -181,7 +180,7 @@ export default defineComponent({
},
data() {
return {
connectionType: NodeConnectionType.Main as ConnectionTypes,
connectionType: NodeConnectionType.Main as NodeConnectionType,
binaryDataPreviewActive: false,
dataSize: 0,
showData: false,
@ -929,7 +928,7 @@ export default defineComponent({
getRawInputData(
runIndex: number,
outputIndex: number,
connectionType: ConnectionTypes = NodeConnectionType.Main,
connectionType: NodeConnectionType = NodeConnectionType.Main,
): INodeExecutionData[] {
let inputData: INodeExecutionData[] = [];
@ -974,7 +973,7 @@ export default defineComponent({
getDataCount(
runIndex: number,
outputIndex: number,
connectionType: ConnectionTypes = NodeConnectionType.Main,
connectionType: NodeConnectionType = NodeConnectionType.Main,
) {
if (!this.node) {
return 0;
@ -993,7 +992,7 @@ export default defineComponent({
this.outputIndex = 0;
this.refreshDataSize();
this.closeBinaryDataDisplay();
let outputTypes: ConnectionTypes[] = [];
let outputTypes: NodeConnectionType[] = [];
if (this.nodeType !== null && this.node !== null) {
const outputs = this.getResolvedNodeOutputs();
outputTypes = NodeHelpers.getConnectionTypes(outputs);

View file

@ -9,7 +9,6 @@ import { useNDVStore } from '@/stores/ndv.store';
import { telemetry } from '@/plugins/telemetry';
import {
NodeConnectionType,
type ConnectionTypes,
type IConnectedNode,
type IDataObject,
type INodeTypeDescription,
@ -33,7 +32,7 @@ type Props = {
outputIndex?: number;
totalRuns?: number;
paneType: 'input' | 'output';
connectionType?: ConnectionTypes;
connectionType?: NodeConnectionType;
search?: string;
};

View file

@ -6,7 +6,7 @@ import { createPinia, setActivePinia } from 'pinia';
import { useSourceControlStore } from '@/stores/sourceControl.store';
import { useUIStore } from '@/stores/ui.store';
import { useWorkflowsStore } from '@/stores/workflows.store';
import { NodeHelpers } from 'n8n-workflow';
import { NodeConnectionType, NodeHelpers } from 'n8n-workflow';
const nodeFactory = (data: Partial<INodeUi> = {}): INodeUi => ({
id: faker.string.uuid(),
@ -95,7 +95,10 @@ describe('useContextMenu', () => {
const { open, isOpen, actions, targetNodeIds } = useContextMenu();
const basicChain = nodeFactory({ type: BASIC_CHAIN_NODE_TYPE });
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 });
expect(isOpen.value).toBe(true);

View file

@ -1,7 +1,12 @@
import { createPinia, setActivePinia } from 'pinia';
import { mock, mockClear } from 'vitest-mock-extended';
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 { useWorkflowsStore } from '@/stores/workflows.store';
@ -16,8 +21,8 @@ describe('useNodeBase', () => {
const jsPlumbInstance = mock<BrowserJsPlumbInstance>();
const nodeTypeDescription = mock<INodeTypeDescription>({
inputs: ['main'],
outputs: ['main'],
inputs: [NodeConnectionType.Main],
outputs: [NodeConnectionType.Main],
});
const workflowObject = mock<Workflow>();
const node = mock<INode>();

View file

@ -68,7 +68,6 @@ import * as NodeViewUtils from '@/utils/nodeViewUtils';
import { isValidNodeConnectionType } from '@/utils/typeGuards';
import type { Connection } from '@vue-flow/core';
import type {
ConnectionTypes,
IConnection,
IConnections,
INode,
@ -905,7 +904,7 @@ export function useCanvasOperations({ router }: { router: ReturnType<typeof useR
}
}
let outputs: Array<ConnectionTypes | INodeOutputConfiguration> = [];
let outputs: Array<NodeConnectionType | INodeOutputConfiguration> = [];
try {
// It fails when the outputs are an expression. As those nodes have
// 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;
}
let inputs: Array<ConnectionTypes | INodeInputConfiguration> = [];
let inputs: Array<NodeConnectionType | INodeInputConfiguration> = [];
if (targetNodeType) {
inputs =
NodeHelpers.getNodeInputs(editableWorkflowObject.value, workflowNode, targetNodeType) ||

View file

@ -10,7 +10,6 @@ import {
import { NodeHelpers, NodeConnectionType } from 'n8n-workflow';
import type {
ConnectionTypes,
INodeInputConfiguration,
INodeTypeDescription,
INodeOutputConfiguration,
@ -57,8 +56,8 @@ export function useNodeBase({
const nodeId = computed<string>(() => data.value?.id ?? '');
const inputs = ref<Array<ConnectionTypes | INodeInputConfiguration>>([]);
const outputs = ref<Array<ConnectionTypes | INodeOutputConfiguration>>([]);
const inputs = ref<Array<NodeConnectionType | INodeInputConfiguration>>([]);
const outputs = ref<Array<NodeConnectionType | INodeOutputConfiguration>>([]);
const createAddInputEndpointSpec = (
connectionName: NodeConnectionType,
@ -139,7 +138,7 @@ export function useNodeBase({
inputConfiguration = value;
}
const inputName: ConnectionTypes = inputConfiguration.type;
const inputName: NodeConnectionType = inputConfiguration.type;
const rootCategoryInputName =
inputName === NodeConnectionType.Main ? NodeConnectionType.Main : 'other';
@ -366,7 +365,7 @@ export function useNodeBase({
outputs.value.forEach((_value, i) => {
const outputConfiguration = outputConfigurations[i];
const outputName: ConnectionTypes = outputConfiguration.type;
const outputName: NodeConnectionType = outputConfiguration.type;
const rootCategoryOutputName =
outputName === NodeConnectionType.Main ? NodeConnectionType.Main : 'other';
@ -536,12 +535,12 @@ export function useNodeBase({
addOutputEndpoints(node, nodeTypeData);
}
function getEndpointColor(connectionType: ConnectionTypes) {
function getEndpointColor(connectionType: NodeConnectionType) {
return `--node-type-${connectionType}-color`;
}
function getInputConnectionStyle(
connectionType: ConnectionTypes,
connectionType: NodeConnectionType,
nodeTypeData: INodeTypeDescription,
): EndpointOptions {
if (connectionType === NodeConnectionType.Main) {
@ -559,7 +558,7 @@ export function useNodeBase({
}
const createSupplementalConnectionType = (
connectionName: ConnectionTypes,
connectionName: NodeConnectionType,
): EndpointOptions => ({
endpoint: createAddInputEndpointSpec(
connectionName as NodeConnectionType,
@ -571,12 +570,12 @@ export function useNodeBase({
}
function getOutputConnectionStyle(
connectionType: ConnectionTypes,
connectionType: NodeConnectionType,
outputConfiguration: INodeOutputConfiguration,
nodeTypeData: INodeTypeDescription,
): EndpointOptions {
const createSupplementalConnectionType = (
connectionName: ConnectionTypes,
connectionName: NodeConnectionType,
): EndpointOptions => ({
endpoint: createDiamondOutputEndpointSpec(),
paintStyle: NodeViewUtils.getOutputEndpointStyle(

View file

@ -12,7 +12,7 @@ import {
WEBHOOK_NODE_TYPE,
} from '@/constants';
import { NodeHelpers, NodeConnectionType, ExpressionEvaluatorProxy } from 'n8n-workflow';
import { NodeHelpers, ExpressionEvaluatorProxy, NodeConnectionType } from 'n8n-workflow';
import type {
INodeProperties,
INodeCredentialDescription,
@ -20,7 +20,6 @@ import type {
INodeIssues,
ICredentialType,
INodeIssueObjectProperty,
ConnectionTypes,
INodeInputConfiguration,
Workflow,
INodeExecutionData,
@ -342,7 +341,7 @@ export function useNodeHelpers() {
const foundIssues: INodeIssueObjectProperty = {};
const workflowNode = workflow.getNode(node.name);
let inputs: Array<ConnectionTypes | INodeInputConfiguration> = [];
let inputs: Array<NodeConnectionType | INodeInputConfiguration> = [];
if (nodeType && workflowNode) {
inputs = NodeHelpers.getNodeInputs(workflow, workflowNode, nodeType);
}
@ -571,7 +570,7 @@ export function useNodeHelpers() {
runIndex = 0,
outputIndex = 0,
paneType: NodePanelType = 'output',
connectionType: ConnectionTypes = NodeConnectionType.Main,
connectionType: NodeConnectionType = NodeConnectionType.Main,
): INodeExecutionData[] {
//TODO: check if this needs to be fixed in different place
if (
@ -617,7 +616,7 @@ export function useNodeHelpers() {
function getInputData(
connectionsData: ITaskDataConnections,
outputIndex: number,
connectionType: ConnectionTypes = NodeConnectionType.Main,
connectionType: NodeConnectionType = NodeConnectionType.Main,
): INodeExecutionData[] {
return connectionsData?.[connectionType]?.[outputIndex] ?? [];
}
@ -627,7 +626,7 @@ export function useNodeHelpers() {
node: string | null,
runIndex: number,
outputIndex: number,
connectionType: ConnectionTypes = NodeConnectionType.Main,
connectionType: NodeConnectionType = NodeConnectionType.Main,
): IBinaryKeyData[] {
if (node === null) {
return [];

View file

@ -4,7 +4,6 @@ import type { DynamicNodeParameters, NodeTypesByTypeNameAndVersion } from '@/Int
import { addHeaders, addNodeTranslation } from '@/plugins/i18n';
import { omit } from '@/utils/typesUtils';
import type {
ConnectionTypes,
INode,
INodeInputConfiguration,
INodeOutputConfiguration,
@ -138,7 +137,7 @@ export const useNodeTypesStore = defineStore(STORES.NODE_TYPES, () => {
(acc, node) => {
const outputTypes = node.outputs;
if (Array.isArray(outputTypes)) {
outputTypes.forEach((value: ConnectionTypes | INodeOutputConfiguration) => {
outputTypes.forEach((value: NodeConnectionType | INodeOutputConfiguration) => {
const outputType = typeof value === 'string' ? value : value.type;
if (!acc[outputType]) {
acc[outputType] = [];
@ -148,7 +147,7 @@ export const useNodeTypesStore = defineStore(STORES.NODE_TYPES, () => {
} else {
// 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
const connectorTypes: ConnectionTypes[] = [
const connectorTypes: NodeConnectionType[] = [
NodeConnectionType.AiVectorStore,
NodeConnectionType.AiChain,
NodeConnectionType.AiDocument,
@ -159,7 +158,7 @@ export const useNodeTypesStore = defineStore(STORES.NODE_TYPES, () => {
NodeConnectionType.AiTextSplitter,
NodeConnectionType.AiTool,
];
connectorTypes.forEach((outputType: ConnectionTypes) => {
connectorTypes.forEach((outputType: NodeConnectionType) => {
if (outputTypes.includes(outputType)) {
acc[outputType] = acc[outputType] || [];
acc[outputType].push(node.name);
@ -181,7 +180,7 @@ export const useNodeTypesStore = defineStore(STORES.NODE_TYPES, () => {
const inputTypes = node.inputs;
if (Array.isArray(inputTypes)) {
inputTypes.forEach(
(value: ConnectionTypes | INodeOutputConfiguration | INodeInputConfiguration) => {
(value: NodeConnectionType | INodeOutputConfiguration | INodeInputConfiguration) => {
const outputType = typeof value === 'string' ? value : value.type;
if (!acc[outputType]) {
acc[outputType] = [];

View file

@ -55,7 +55,7 @@ import type {
IWorkflowSettings,
INodeType,
} from 'n8n-workflow';
import { deepCopy, NodeHelpers, Workflow } from 'n8n-workflow';
import { deepCopy, NodeConnectionType, NodeHelpers, Workflow } from 'n8n-workflow';
import { findLast } from 'lodash-es';
import { useRootStore } from '@/stores/root.store';
@ -1502,7 +1502,7 @@ export const useWorkflowsStore = defineStore(STORES.WORKFLOWS, () => {
function checkIfNodeHasChatParent(nodeName: string): boolean {
const workflow = getCurrentWorkflow();
const parents = workflow.getParentNodes(nodeName, 'main');
const parents = workflow.getParentNodes(nodeName, NodeConnectionType.Main);
const matchedChatNode = parents.find((parent) => {
const parentNodeType = getNodeByName(parent)?.type;

View file

@ -5,7 +5,6 @@ import type { ArrayAnchorSpec, ConnectorSpec, OverlaySpec, PaintStyle } from '@j
import type { Connection, Endpoint, SelectOptions } from '@jsplumb/core';
import { N8nConnector } from '@/plugins/connectors/N8nCustomConnector';
import type {
ConnectionTypes,
IConnection,
INodeExecutionData,
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;
}
export const getConnectorColor = (type: ConnectionTypes, category?: string): string => {
export const getConnectorColor = (type: NodeConnectionType, category?: string): string => {
if (category === 'error') {
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 => {
const connectorColor = getConnectorColor(
connection.parameters.type as ConnectionTypes,
connection.parameters.type as NodeConnectionType,
connection.parameters.category,
);
const additionalStyles: PaintStyle = {};
@ -148,7 +147,7 @@ export const getConnectorPaintStylePull = (connection: Connection): PaintStyle =
export const getConnectorPaintStyleDefault = (connection: Connection): PaintStyle => {
const connectorColor = getConnectorColor(
connection.parameters.type as ConnectionTypes,
connection.parameters.type as NodeConnectionType,
connection.parameters.category,
);
return {
@ -161,7 +160,10 @@ export const getConnectorPaintStyleData = (
connection: Connection,
category?: string,
): PaintStyle => {
const connectorColor = getConnectorColor(connection.parameters.type as ConnectionTypes, category);
const connectorColor = getConnectorColor(
connection.parameters.type as NodeConnectionType,
category,
);
return {
...CONNECTOR_PAINT_STYLE_DATA,
...(connectorColor ? { stroke: `var(${connectorColor})` } : {}),
@ -194,7 +196,7 @@ export const CONNECTOR_ARROW_OVERLAYS: OverlaySpec[] = [
];
export const getAnchorPosition = (
connectionType: ConnectionTypes,
connectionType: NodeConnectionType,
type: 'input' | 'output',
amount: number,
spacerIndexes: number[] = [],
@ -256,7 +258,7 @@ export const getEndpointScope = (
export const getInputEndpointStyle = (
nodeTypeData: INodeTypeDescription,
color: string,
connectionType: ConnectionTypes = NodeConnectionType.Main,
connectionType: NodeConnectionType = NodeConnectionType.Main,
): EndpointStyle => {
let width = 8;
let height = nodeTypeData && nodeTypeData.outputs.length > 2 ? 18 : 20;
@ -664,7 +666,7 @@ export const showConnectionActions = (connection: Connection) => {
export const getOutputSummary = (
data: ITaskData[],
nodeConnections: NodeInputConnections,
connectionType: ConnectionTypes,
connectionType: NodeConnectionType,
) => {
const outputMap: {
[sourceOutputIndex: string]: {

View file

@ -74,7 +74,6 @@ import type {
ITelemetryTrackProperties,
IWorkflowBase,
Workflow,
ConnectionTypes,
INodeOutputConfiguration,
IRun,
} from 'n8n-workflow';
@ -2289,7 +2288,7 @@ export default defineComponent({
}
}
let outputs: Array<ConnectionTypes | INodeOutputConfiguration> = [];
let outputs: Array<NodeConnectionType | INodeOutputConfiguration> = [];
try {
// It fails when the outputs are an expression. As those nodes have
// normally no outputs by default and the only reason we need the
@ -2424,7 +2423,7 @@ export default defineComponent({
sourceNodeOutputIndex: number,
targetNodeName: string,
targetNodeOuputIndex: number,
type: ConnectionTypes,
type: NodeConnectionType,
): IConnection | undefined {
const nodeConnections =
this.workflowsStore.outgoingConnectionsByNodeName(sourceNodeName)[type];
@ -2531,7 +2530,7 @@ export default defineComponent({
lastSelectedEndpoint.scope as NodeConnectionType,
)
) {
const connectionType = lastSelectedEndpoint.scope as ConnectionTypes;
const connectionType = lastSelectedEndpoint.scope as NodeConnectionType;
const newNodeElement = this.instance.getManagedElement(newNodeData.id);
const newNodeConnections = this.instance.getEndpoints(newNodeElement);
const viableConnection = newNodeConnections.find((conn) => {
@ -2712,7 +2711,7 @@ export default defineComponent({
if (targetNodeType?.inputs?.length) {
const workflow = this.workflowHelpers.getCurrentWorkflow();
const workflowNode = workflow.getNode(targetNode.name);
let inputs: Array<ConnectionTypes | INodeInputConfiguration> = [];
let inputs: Array<NodeConnectionType | INodeInputConfiguration> = [];
if (targetNodeType && workflowNode) {
inputs = NodeHelpers.getNodeInputs(workflow, workflowNode, targetNodeType);
}
@ -3106,7 +3105,7 @@ export default defineComponent({
NodeViewUtils.hideConnectionActions(connection);
NodeViewUtils.resetConnection(connection);
const scope = connection.scope as ConnectionTypes;
const scope = connection.scope as NodeConnectionType;
const scopedEndpoints = Array.from(
document.querySelectorAll(`[data-jtk-scope-${scope}=true]`),
);
@ -3609,8 +3608,8 @@ export default defineComponent({
const workflow = this.workflowHelpers.getCurrentWorkflow();
const workflowNode = workflow.getNode(node.name);
let inputs: Array<ConnectionTypes | INodeInputConfiguration> = [];
let outputs: Array<ConnectionTypes | INodeOutputConfiguration> = [];
let inputs: Array<NodeConnectionType | INodeInputConfiguration> = [];
let outputs: Array<NodeConnectionType | INodeOutputConfiguration> = [];
if (nodeType && workflowNode) {
inputs = NodeHelpers.getNodeInputs(workflow, workflowNode, nodeType);
outputs = NodeHelpers.getNodeOutputs(workflow, workflowNode, nodeType);

View file

@ -66,13 +66,13 @@ module.exports = {
'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-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-missing-subtitle': '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-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-execute-block-double-assertion-for-items': 'error',
'n8n-nodes-base/node-execute-block-wrong-error-thrown': 'error',

View file

@ -5,7 +5,7 @@ import type {
INodeType,
INodeTypeDescription,
} from 'n8n-workflow';
import { NodeOperationError } from 'n8n-workflow';
import { NodeConnectionType, NodeOperationError } from 'n8n-workflow';
import {
actionNetworkApiRequest,
@ -56,8 +56,8 @@ export class ActionNetwork implements INodeType {
defaults: {
name: 'Action Network',
},
inputs: ['main'],
outputs: ['main'],
inputs: [NodeConnectionType.Main],
outputs: [NodeConnectionType.Main],
credentials: [
{
name: 'actionNetworkApi',

View file

@ -8,7 +8,7 @@ import type {
INodeTypeDescription,
IHttpRequestMethods,
} from 'n8n-workflow';
import { NodeOperationError } from 'n8n-workflow';
import { NodeConnectionType, NodeOperationError } from 'n8n-workflow';
import type { IProduct } from './GenericFunctions';
import { activeCampaignApiRequest, activeCampaignApiRequestAllItems } from './GenericFunctions';
@ -89,8 +89,8 @@ export class ActiveCampaign implements INodeType {
defaults: {
name: 'ActiveCampaign',
},
inputs: ['main'],
outputs: ['main'],
inputs: [NodeConnectionType.Main],
outputs: [NodeConnectionType.Main],
credentials: [
{
name: 'activeCampaignApi',

View file

@ -8,6 +8,7 @@ import type {
INodeTypeDescription,
IWebhookResponseData,
} from 'n8n-workflow';
import { NodeConnectionType } from 'n8n-workflow';
import { activeCampaignApiRequest, activeCampaignApiRequestAllItems } from './GenericFunctions';
@ -23,7 +24,7 @@ export class ActiveCampaignTrigger implements INodeType {
name: 'ActiveCampaign Trigger',
},
inputs: [],
outputs: ['main'],
outputs: [NodeConnectionType.Main],
credentials: [
{
name: 'activeCampaignApi',

View file

@ -6,6 +6,7 @@ import type {
INodeTypeDescription,
IWebhookResponseData,
} from 'n8n-workflow';
import { NodeConnectionType } from 'n8n-workflow';
import { acuitySchedulingApiRequest } from './GenericFunctions';
@ -22,7 +23,7 @@ export class AcuitySchedulingTrigger implements INodeType {
name: 'Acuity Scheduling Trigger',
},
inputs: [],
outputs: ['main'],
outputs: [NodeConnectionType.Main],
credentials: [
{
name: 'acuitySchedulingApi',

View file

@ -1,9 +1,10 @@
import type {
IDataObject,
IExecuteSingleFunctions,
IHttpRequestOptions,
INodeType,
INodeTypeDescription,
import {
NodeConnectionType,
type IDataObject,
type IExecuteSingleFunctions,
type IHttpRequestOptions,
type INodeType,
type INodeTypeDescription,
} from 'n8n-workflow';
import { collectionFields } from './CollectionDescription';
import type { FieldsUiValues } from './types';
@ -20,8 +21,8 @@ export class Adalo implements INodeType {
defaults: {
name: 'Adalo',
},
inputs: ['main'],
outputs: ['main'],
inputs: [NodeConnectionType.Main],
outputs: [NodeConnectionType.Main],
credentials: [
{
name: 'adaloApi',

View file

@ -7,6 +7,7 @@ import type {
INodeType,
INodeTypeDescription,
} from 'n8n-workflow';
import { NodeConnectionType } from 'n8n-workflow';
import { affinityApiRequest, affinityApiRequestAllItems } from './GenericFunctions';
@ -34,8 +35,8 @@ export class Affinity implements INodeType {
defaults: {
name: 'Affinity',
},
inputs: ['main'],
outputs: ['main'],
inputs: [NodeConnectionType.Main],
outputs: [NodeConnectionType.Main],
credentials: [
{
name: 'affinityApi',

View file

@ -6,7 +6,7 @@ import type {
INodeTypeDescription,
IWebhookResponseData,
} from 'n8n-workflow';
import { NodeOperationError } from 'n8n-workflow';
import { NodeConnectionType, NodeOperationError } from 'n8n-workflow';
import { affinityApiRequest, eventsExist, mapResource } from './GenericFunctions';
@ -22,7 +22,7 @@ export class AffinityTrigger implements INodeType {
name: 'Affinity Trigger',
},
inputs: [],
outputs: ['main'],
outputs: [NodeConnectionType.Main],
credentials: [
{
name: 'affinityApi',

View file

@ -5,7 +5,7 @@ import type {
INodeType,
INodeTypeDescription,
} from 'n8n-workflow';
import { jsonParse, NodeOperationError } from 'n8n-workflow';
import { NodeConnectionType, jsonParse, NodeOperationError } from 'n8n-workflow';
import { contactFields, contactOperations } from './ContactDescription';
@ -41,8 +41,8 @@ export class AgileCrm implements INodeType {
defaults: {
name: 'Agile CRM',
},
inputs: ['main'],
outputs: ['main'],
inputs: [NodeConnectionType.Main],
outputs: [NodeConnectionType.Main],
credentials: [
{
name: 'agileCrmApi',

View file

@ -1,6 +1,7 @@
/* eslint-disable n8n-nodes-base/node-dirname-against-convention */
import {
NodeOperationError,
NodeConnectionType,
type IExecuteFunctions,
type INodeExecutionData,
type INodeType,
@ -26,8 +27,8 @@ export class AiTransform implements INodeType {
defaults: {
name: 'AI Transform',
},
inputs: ['main'],
outputs: ['main'],
inputs: [NodeConnectionType.Main],
outputs: [NodeConnectionType.Main],
parameterPane: 'wide',
properties: [
{

View file

@ -5,7 +5,7 @@ import type {
INodeType,
INodeTypeDescription,
} from 'n8n-workflow';
import { NodeOperationError } from 'n8n-workflow';
import { NodeConnectionType, NodeOperationError } from 'n8n-workflow';
import moment from 'moment-timezone';
import type { IRecord } from './v1/GenericFunctions';
@ -54,7 +54,7 @@ export class AirtableTrigger implements INodeType {
],
polling: true,
inputs: [],
outputs: ['main'],
outputs: [NodeConnectionType.Main],
properties: [
{
displayName: 'Authentication',

View file

@ -8,7 +8,7 @@ import type {
INodeTypeBaseDescription,
IHttpRequestMethods,
} from 'n8n-workflow';
import { NodeOperationError } from 'n8n-workflow';
import { NodeConnectionType, NodeOperationError } from 'n8n-workflow';
import { oldVersionNotice } from '../../../utils/descriptions';
import { generatePairedItemData } from '../../../utils/utilities';
@ -25,8 +25,8 @@ const versionDescription: INodeTypeDescription = {
defaults: {
name: 'Airtable',
},
inputs: ['main'],
outputs: ['main'],
inputs: [NodeConnectionType.Main],
outputs: [NodeConnectionType.Main],
credentials: [
{
name: 'airtableApi',

View file

@ -1,5 +1,5 @@
/* 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 base from './base/Base.resource';
@ -15,8 +15,8 @@ export const versionDescription: INodeTypeDescription = {
defaults: {
name: 'Airtable',
},
inputs: ['main'],
outputs: ['main'],
inputs: [NodeConnectionType.Main],
outputs: [NodeConnectionType.Main],
credentials: [
{
name: 'airtableTokenApi',

View file

@ -12,7 +12,7 @@ import type {
ICredentialsDecrypted,
ICredentialDataDecryptedObject,
} from 'n8n-workflow';
import { NodeOperationError } from 'n8n-workflow';
import { NodeConnectionType, NodeOperationError } from 'n8n-workflow';
async function checkIfCredentialsValid(
credentials: IDataObject,
@ -65,8 +65,8 @@ export class Amqp implements INodeType {
defaults: {
name: 'AMQP Sender',
},
inputs: ['main'],
outputs: ['main'],
inputs: [NodeConnectionType.Main],
outputs: [NodeConnectionType.Main],
credentials: [
{
name: 'amqp',

View file

@ -10,7 +10,7 @@ import type {
IDeferredPromise,
IRun,
} from 'n8n-workflow';
import { deepCopy, jsonParse, NodeOperationError } from 'n8n-workflow';
import { deepCopy, jsonParse, NodeConnectionType, NodeOperationError } from 'n8n-workflow';
export class AmqpTrigger implements INodeType {
description: INodeTypeDescription = {
@ -24,7 +24,7 @@ export class AmqpTrigger implements INodeType {
name: 'AMQP Trigger',
},
inputs: [],
outputs: ['main'],
outputs: [NodeConnectionType.Main],
credentials: [
{
name: 'amqp',

View file

@ -7,7 +7,7 @@ import type {
INodeType,
INodeTypeDescription,
} from 'n8n-workflow';
import { NodeOperationError } from 'n8n-workflow';
import { NodeConnectionType, NodeOperationError } from 'n8n-workflow';
import {
apiTemplateIoApiRequest,
@ -28,8 +28,8 @@ export class ApiTemplateIo implements INodeType {
defaults: {
name: 'APITemplate.io',
},
inputs: ['main'],
outputs: ['main'],
inputs: [NodeConnectionType.Main],
outputs: [NodeConnectionType.Main],
credentials: [
{
name: 'apiTemplateIoApi',

View file

@ -8,7 +8,7 @@ import type {
INodeTypeDescription,
JsonObject,
} from 'n8n-workflow';
import { NodeApiError, NodeOperationError } from 'n8n-workflow';
import { NodeConnectionType, NodeApiError, NodeOperationError } from 'n8n-workflow';
import moment from 'moment-timezone';
@ -33,8 +33,8 @@ export class Asana implements INodeType {
defaults: {
name: 'Asana',
},
inputs: ['main'],
outputs: ['main'],
inputs: [NodeConnectionType.Main],
outputs: [NodeConnectionType.Main],
credentials: [
{
name: 'asanaApi',

View file

@ -8,7 +8,7 @@ import type {
INodeTypeDescription,
IWebhookResponseData,
} from 'n8n-workflow';
import { NodeOperationError } from 'n8n-workflow';
import { NodeConnectionType, NodeOperationError } from 'n8n-workflow';
import { asanaApiRequest, getWorkspaces } from './GenericFunctions';
@ -28,7 +28,7 @@ export class AsanaTrigger implements INodeType {
name: 'Asana Trigger',
},
inputs: [],
outputs: ['main'],
outputs: [NodeConnectionType.Main],
credentials: [
{
name: 'asanaApi',

View file

@ -1,12 +1,13 @@
import type {
IExecuteFunctions,
IDataObject,
ILoadOptionsFunctions,
INodeExecutionData,
INodePropertyOptions,
INodeType,
INodeTypeDescription,
NodeExecutionWithMetadata,
import {
type IExecuteFunctions,
type IDataObject,
type ILoadOptionsFunctions,
type INodeExecutionData,
type INodePropertyOptions,
type INodeType,
type INodeTypeDescription,
type NodeExecutionWithMetadata,
NodeConnectionType,
} from 'n8n-workflow';
import { automizyApiRequest, automizyApiRequestAllItems } from './GenericFunctions';
@ -28,8 +29,8 @@ export class Automizy implements INodeType {
defaults: {
name: 'Automizy',
},
inputs: ['main'],
outputs: ['main'],
inputs: [NodeConnectionType.Main],
outputs: [NodeConnectionType.Main],
hidden: true,
credentials: [
{

View file

@ -1,12 +1,13 @@
import type {
IExecuteFunctions,
IDataObject,
ILoadOptionsFunctions,
INodeExecutionData,
INodePropertyOptions,
INodeType,
INodeTypeDescription,
IHttpRequestMethods,
import {
type IExecuteFunctions,
type IDataObject,
type ILoadOptionsFunctions,
type INodeExecutionData,
type INodePropertyOptions,
type INodeType,
type INodeTypeDescription,
type IHttpRequestMethods,
NodeConnectionType,
} from 'n8n-workflow';
import { autopilotApiRequest, autopilotApiRequestAllItems } from './GenericFunctions';
@ -31,8 +32,8 @@ export class Autopilot implements INodeType {
defaults: {
name: 'Autopilot',
},
inputs: ['main'],
outputs: ['main'],
inputs: [NodeConnectionType.Main],
outputs: [NodeConnectionType.Main],
credentials: [
{
name: 'autopilotApi',

View file

@ -6,6 +6,7 @@ import type {
INodeTypeDescription,
IWebhookResponseData,
} from 'n8n-workflow';
import { NodeConnectionType } from 'n8n-workflow';
import { snakeCase } from 'change-case';
import { autopilotApiRequest } from './GenericFunctions';
@ -23,7 +24,7 @@ export class AutopilotTrigger implements INodeType {
name: 'Autopilot Trigger',
},
inputs: [],
outputs: ['main'],
outputs: [NodeConnectionType.Main],
credentials: [
{
name: 'autopilotApi',

View file

@ -8,7 +8,7 @@ import type {
INodeTypeDescription,
JsonObject,
} from 'n8n-workflow';
import { NodeApiError } from 'n8n-workflow';
import { NodeConnectionType, NodeApiError } from 'n8n-workflow';
import { awsApiRequestREST } from './GenericFunctions';
@ -24,8 +24,8 @@ export class AwsLambda implements INodeType {
defaults: {
name: 'AWS Lambda',
},
inputs: ['main'],
outputs: ['main'],
inputs: [NodeConnectionType.Main],
outputs: [NodeConnectionType.Main],
credentials: [
{
name: 'aws',

View file

@ -1,12 +1,13 @@
import type {
IExecuteFunctions,
IDataObject,
ILoadOptionsFunctions,
INodeExecutionData,
INodeListSearchItems,
INodeListSearchResult,
INodeType,
INodeTypeDescription,
import {
type IExecuteFunctions,
type IDataObject,
type ILoadOptionsFunctions,
type INodeExecutionData,
type INodeListSearchItems,
type INodeListSearchResult,
type INodeType,
type INodeTypeDescription,
NodeConnectionType,
} from 'n8n-workflow';
import { awsApiRequestSOAP } from './GenericFunctions';
@ -23,8 +24,8 @@ export class AwsSns implements INodeType {
defaults: {
name: 'AWS SNS',
},
inputs: ['main'],
outputs: ['main'],
inputs: [NodeConnectionType.Main],
outputs: [NodeConnectionType.Main],
credentials: [
{
name: 'aws',

View file

@ -8,7 +8,7 @@ import type {
INodeTypeDescription,
IWebhookResponseData,
} from 'n8n-workflow';
import { jsonParse, NodeOperationError } from 'n8n-workflow';
import { jsonParse, NodeConnectionType, NodeOperationError } from 'n8n-workflow';
import get from 'lodash/get';
import { awsApiRequestSOAP } from './GenericFunctions';
@ -26,7 +26,7 @@ export class AwsSnsTrigger implements INodeType {
name: 'AWS SNS Trigger',
},
inputs: [],
outputs: ['main'],
outputs: [NodeConnectionType.Main],
credentials: [
{
name: 'aws',

View file

@ -5,6 +5,7 @@ import type {
INodeType,
INodeTypeDescription,
} from 'n8n-workflow';
import { NodeConnectionType } from 'n8n-workflow';
import { certificateFields, certificateOperations } from './CertificateDescription';
@ -22,8 +23,8 @@ export class AwsCertificateManager implements INodeType {
defaults: {
name: 'AWS Certificate Manager',
},
inputs: ['main'],
outputs: ['main'],
inputs: [NodeConnectionType.Main],
outputs: [NodeConnectionType.Main],
credentials: [
{
name: 'aws',

View file

@ -5,6 +5,7 @@ import type {
INodeType,
INodeTypeDescription,
} from 'n8n-workflow';
import { NodeConnectionType } from 'n8n-workflow';
import { awsApiRequestREST } from './GenericFunctions';
@ -20,8 +21,8 @@ export class AwsComprehend implements INodeType {
defaults: {
name: 'AWS Comprehend',
},
inputs: ['main'],
outputs: ['main'],
inputs: [NodeConnectionType.Main],
outputs: [NodeConnectionType.Main],
credentials: [
{
name: 'aws',

View file

@ -1,12 +1,13 @@
/* eslint-disable n8n-nodes-base/node-filename-against-convention */
import type {
IExecuteFunctions,
IDataObject,
ILoadOptionsFunctions,
INodeExecutionData,
INodeType,
INodeTypeDescription,
NodeParameterValue,
import {
type IExecuteFunctions,
type IDataObject,
type ILoadOptionsFunctions,
type INodeExecutionData,
type INodeType,
type INodeTypeDescription,
type NodeParameterValue,
NodeConnectionType,
} from 'n8n-workflow';
import { awsApiRequest, awsApiRequestAllItems } from './GenericFunctions';
@ -42,8 +43,8 @@ export class AwsDynamoDB implements INodeType {
defaults: {
name: 'AWS DynamoDB',
},
inputs: ['main'],
outputs: ['main'],
inputs: [NodeConnectionType.Main],
outputs: [NodeConnectionType.Main],
credentials: [
{
name: 'aws',

View file

@ -8,6 +8,7 @@ import type {
INodeTypeDescription,
JsonObject,
} from 'n8n-workflow';
import { NodeConnectionType } from 'n8n-workflow';
import { awsApiRequestSOAP, awsApiRequestSOAPAllItems } from './GenericFunctions';
@ -30,8 +31,8 @@ export class AwsElb implements INodeType {
defaults: {
name: 'AWS ELB',
},
inputs: ['main'],
outputs: ['main'],
inputs: [NodeConnectionType.Main],
outputs: [NodeConnectionType.Main],
credentials: [
{
name: 'aws',

View file

@ -5,6 +5,7 @@ import type {
INodeType,
INodeTypeDescription,
} from 'n8n-workflow';
import { NodeConnectionType } from 'n8n-workflow';
import { awsApiRequestREST, keysTPascalCase } from './GenericFunctions';
@ -20,8 +21,8 @@ export class AwsRekognition implements INodeType {
defaults: {
name: 'AWS Rekognition',
},
inputs: ['main'],
outputs: ['main'],
inputs: [NodeConnectionType.Main],
outputs: [NodeConnectionType.Main],
credentials: [
{
name: 'aws',

View file

@ -12,7 +12,7 @@ import type {
INodeTypeBaseDescription,
INodeTypeDescription,
} from 'n8n-workflow';
import { NodeOperationError } from 'n8n-workflow';
import { NodeConnectionType, NodeOperationError } from 'n8n-workflow';
import { bucketFields, bucketOperations } from './BucketDescription';
@ -42,8 +42,8 @@ export class AwsS3V1 implements INodeType {
defaults: {
name: 'AWS S3',
},
inputs: ['main'],
outputs: ['main'],
inputs: [NodeConnectionType.Main],
outputs: [NodeConnectionType.Main],
credentials: [
{
name: 'aws',

View file

@ -13,7 +13,7 @@ import type {
INodeTypeBaseDescription,
INodeTypeDescription,
} from 'n8n-workflow';
import { NodeOperationError } from 'n8n-workflow';
import { NodeConnectionType, NodeOperationError } from 'n8n-workflow';
import { bucketFields, bucketOperations } from './BucketDescription';
@ -42,8 +42,8 @@ export class AwsS3V2 implements INodeType {
defaults: {
name: 'AWS S3',
},
inputs: ['main'],
outputs: ['main'],
inputs: [NodeConnectionType.Main],
outputs: [NodeConnectionType.Main],
credentials: [
{
name: 'aws',

View file

@ -8,7 +8,7 @@ import type {
INodeType,
INodeTypeDescription,
} from 'n8n-workflow';
import { NodeOperationError } from 'n8n-workflow';
import { NodeConnectionType, NodeOperationError } from 'n8n-workflow';
import { awsApiRequestSOAP, awsApiRequestSOAPAllItems } from './GenericFunctions';
@ -30,8 +30,8 @@ export class AwsSes implements INodeType {
defaults: {
name: 'AWS SES',
},
inputs: ['main'],
outputs: ['main'],
inputs: [NodeConnectionType.Main],
outputs: [NodeConnectionType.Main],
credentials: [
{
name: 'aws',

View file

@ -10,7 +10,7 @@ import type {
INodeTypeDescription,
JsonObject,
} from 'n8n-workflow';
import { NodeApiError } from 'n8n-workflow';
import { NodeApiError, NodeConnectionType } from 'n8n-workflow';
import { pascalCase } from 'change-case';
import { awsApiRequestSOAP } from '../GenericFunctions';
@ -27,8 +27,8 @@ export class AwsSqs implements INodeType {
defaults: {
name: 'AWS SQS',
},
inputs: ['main'],
outputs: ['main'],
inputs: [NodeConnectionType.Main],
outputs: [NodeConnectionType.Main],
credentials: [
{
name: 'aws',

View file

@ -1,13 +1,14 @@
import type {
ICredentialDataDecryptedObject,
ICredentialsDecrypted,
ICredentialTestFunctions,
IDataObject,
IExecuteFunctions,
INodeCredentialTestResult,
INodeExecutionData,
INodeType,
INodeTypeDescription,
import {
NodeConnectionType,
type ICredentialDataDecryptedObject,
type ICredentialsDecrypted,
type ICredentialTestFunctions,
type IDataObject,
type IExecuteFunctions,
type INodeCredentialTestResult,
type INodeExecutionData,
type INodeType,
type INodeTypeDescription,
} from 'n8n-workflow';
import type { IExpenseDocument } from './GenericFunctions';
@ -25,8 +26,8 @@ export class AwsTextract implements INodeType {
defaults: {
name: 'AWS Textract',
},
inputs: ['main'],
outputs: ['main'],
inputs: [NodeConnectionType.Main],
outputs: [NodeConnectionType.Main],
credentials: [
{
name: 'aws',

View file

@ -5,6 +5,7 @@ import type {
INodeType,
INodeTypeDescription,
} from 'n8n-workflow';
import { NodeConnectionType } from 'n8n-workflow';
import { awsApiRequestREST, awsApiRequestRESTAllItems } from './GenericFunctions';
@ -20,8 +21,8 @@ export class AwsTranscribe implements INodeType {
defaults: {
name: 'AWS Transcribe',
},
inputs: ['main'],
outputs: ['main'],
inputs: [NodeConnectionType.Main],
outputs: [NodeConnectionType.Main],
credentials: [
{
name: 'aws',

View file

@ -1,5 +1,5 @@
/* 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 employee from './employee';
@ -22,9 +22,9 @@ export const versionDescription: INodeTypeDescription = {
group: ['transform'],
// eslint-disable-next-line n8n-nodes-base/node-class-description-icon-not-svg
icon: 'file:bambooHr.png',
inputs: ['main'],
inputs: [NodeConnectionType.Main],
name: 'bambooHr',
outputs: ['main'],
outputs: [NodeConnectionType.Main],
properties: [
{
displayName: 'Resource',

View file

@ -7,6 +7,7 @@ import type {
INodeType,
INodeTypeDescription,
} from 'n8n-workflow';
import { NodeConnectionType } from 'n8n-workflow';
import { bannerbearApiRequest, keysToSnakeCase } from './GenericFunctions';
@ -27,8 +28,8 @@ export class Bannerbear implements INodeType {
defaults: {
name: 'Bannerbear',
},
inputs: ['main'],
outputs: ['main'],
inputs: [NodeConnectionType.Main],
outputs: [NodeConnectionType.Main],
credentials: [
{
name: 'bannerbearApi',

View file

@ -1,10 +1,11 @@
import type {
IExecuteFunctions,
IDataObject,
ILoadOptionsFunctions,
INodeExecutionData,
INodeType,
INodeTypeDescription,
import {
type IExecuteFunctions,
type IDataObject,
type ILoadOptionsFunctions,
type INodeExecutionData,
type INodeType,
type INodeTypeDescription,
NodeConnectionType,
} from 'n8n-workflow';
import {
@ -38,8 +39,8 @@ export class Baserow implements INodeType {
defaults: {
name: 'Baserow',
},
inputs: ['main'],
outputs: ['main'],
inputs: [NodeConnectionType.Main],
outputs: [NodeConnectionType.Main],
credentials: [
{
name: 'baserowApi',

View file

@ -1,12 +1,13 @@
import type {
IExecuteFunctions,
IDataObject,
ILoadOptionsFunctions,
INodeExecutionData,
INodeParameters,
INodePropertyOptions,
INodeType,
INodeTypeDescription,
import {
type IExecuteFunctions,
type IDataObject,
type ILoadOptionsFunctions,
type INodeExecutionData,
type INodeParameters,
type INodePropertyOptions,
type INodeType,
type INodeTypeDescription,
NodeConnectionType,
} from 'n8n-workflow';
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
icon: 'file:beeminder.png',
inputs: ['main'],
outputs: ['main'],
inputs: [NodeConnectionType.Main],
outputs: [NodeConnectionType.Main],
credentials: [
{
name: 'beeminderApi',

View file

@ -1,16 +1,17 @@
import type {
IHookFunctions,
IWebhookFunctions,
ICredentialsDecrypted,
ICredentialTestFunctions,
IDataObject,
ILoadOptionsFunctions,
INodeCredentialTestResult,
INodePropertyOptions,
INodeType,
INodeTypeDescription,
IWebhookResponseData,
IRequestOptions,
import {
type IHookFunctions,
type IWebhookFunctions,
type ICredentialsDecrypted,
type ICredentialTestFunctions,
type IDataObject,
type ILoadOptionsFunctions,
type INodeCredentialTestResult,
type INodePropertyOptions,
type INodeType,
type INodeTypeDescription,
type IWebhookResponseData,
type IRequestOptions,
NodeConnectionType,
} from 'n8n-workflow';
import { bitbucketApiRequest, bitbucketApiRequestAllItems } from './GenericFunctions';
@ -27,7 +28,7 @@ export class BitbucketTrigger implements INodeType {
name: 'Bitbucket Trigger',
},
inputs: [],
outputs: ['main'],
outputs: [NodeConnectionType.Main],
credentials: [
{
name: 'bitbucketApi',

View file

@ -7,6 +7,7 @@ import type {
INodeType,
INodeTypeDescription,
} from 'n8n-workflow';
import { NodeConnectionType } from 'n8n-workflow';
import { linkFields, linkOperations } from './LinkDescription';
@ -24,8 +25,8 @@ export class Bitly implements INodeType {
defaults: {
name: 'Bitly',
},
inputs: ['main'],
outputs: ['main'],
inputs: [NodeConnectionType.Main],
outputs: [NodeConnectionType.Main],
credentials: [
{
name: 'bitlyApi',

View file

@ -6,7 +6,7 @@ import type {
INodeType,
INodeTypeDescription,
} from 'n8n-workflow';
import { NodeOperationError } from 'n8n-workflow';
import { NodeConnectionType, NodeOperationError } from 'n8n-workflow';
import isEmpty from 'lodash/isEmpty';
import partialRight from 'lodash/partialRight';
@ -46,8 +46,8 @@ export class Bitwarden implements INodeType {
defaults: {
name: 'Bitwarden',
},
inputs: ['main'],
outputs: ['main'],
inputs: [NodeConnectionType.Main],
outputs: [NodeConnectionType.Main],
credentials: [
{
name: 'bitwardenApi',

View file

@ -5,7 +5,7 @@ import type {
INodeType,
INodeTypeDescription,
} from 'n8n-workflow';
import { NodeOperationError } from 'n8n-workflow';
import { NodeConnectionType, NodeOperationError } from 'n8n-workflow';
import moment from 'moment-timezone';
import { noCase } from 'change-case';
@ -28,8 +28,8 @@ export class Box implements INodeType {
defaults: {
name: 'Box',
},
inputs: ['main'],
outputs: ['main'],
inputs: [NodeConnectionType.Main],
outputs: [NodeConnectionType.Main],
credentials: [
{
name: 'boxOAuth2Api',

View file

@ -1,9 +1,10 @@
import type {
IHookFunctions,
IWebhookFunctions,
INodeType,
INodeTypeDescription,
IWebhookResponseData,
import {
type IHookFunctions,
type IWebhookFunctions,
type INodeType,
type INodeTypeDescription,
type IWebhookResponseData,
NodeConnectionType,
} from 'n8n-workflow';
import { boxApiRequest, boxApiRequestAllItems } from './GenericFunctions';
@ -21,7 +22,7 @@ export class BoxTrigger implements INodeType {
name: 'Box Trigger',
},
inputs: [],
outputs: ['main'],
outputs: [NodeConnectionType.Main],
credentials: [
{
name: 'boxOAuth2Api',

View file

@ -5,6 +5,7 @@ import type {
INodeType,
INodeTypeDescription,
} from 'n8n-workflow';
import { NodeConnectionType } from 'n8n-workflow';
import { brandfetchApiRequest } from './GenericFunctions';
@ -22,8 +23,8 @@ export class Brandfetch implements INodeType {
defaults: {
name: 'Brandfetch',
},
inputs: ['main'],
outputs: ['main'],
inputs: [NodeConnectionType.Main],
outputs: [NodeConnectionType.Main],
credentials: [
{
name: 'brandfetchApi',

View file

@ -1,5 +1,6 @@
/* eslint-disable n8n-nodes-base/node-filename-against-convention */
import type { INodeType, INodeTypeDescription } from 'n8n-workflow';
import { NodeConnectionType } from 'n8n-workflow';
import { attributeFields, attributeOperations } from './AttributeDescription';
import { contactFields, contactOperations } from './ContactDescription';
import { emailFields, emailOperations } from './EmailDescription';
@ -18,8 +19,8 @@ export class Brevo implements INodeType {
defaults: {
name: 'Brevo',
},
inputs: ['main'],
outputs: ['main'],
inputs: [NodeConnectionType.Main],
outputs: [NodeConnectionType.Main],
credentials: [
{
name: 'sendInBlueApi',

View file

@ -1,10 +1,11 @@
/* eslint-disable n8n-nodes-base/node-filename-against-convention */
import type {
IHookFunctions,
INodeType,
INodeTypeDescription,
IWebhookFunctions,
IWebhookResponseData,
import {
NodeConnectionType,
type IHookFunctions,
type INodeType,
type INodeTypeDescription,
type IWebhookFunctions,
type IWebhookResponseData,
} from 'n8n-workflow';
import { BrevoWebhookApi } from './GenericFunctions';
@ -29,7 +30,7 @@ export class BrevoTrigger implements INodeType {
inputs: [],
// keep sendinblue name for backward compatibility
name: 'sendInBlueTrigger',
outputs: ['main'],
outputs: [NodeConnectionType.Main],
version: 1,
webhooks: [
{

View file

@ -5,7 +5,7 @@ import type {
INodeType,
INodeTypeDescription,
} from 'n8n-workflow';
import { NodeOperationError } from 'n8n-workflow';
import { NodeConnectionType, NodeOperationError } from 'n8n-workflow';
import { bubbleApiRequest, bubbleApiRequestAllItems, validateJSON } from './GenericFunctions';
@ -23,8 +23,8 @@ export class Bubble implements INodeType {
defaults: {
name: 'Bubble',
},
inputs: ['main'],
outputs: ['main'],
inputs: [NodeConnectionType.Main],
outputs: [NodeConnectionType.Main],
credentials: [
{
name: 'bubbleApi',

View file

@ -1,12 +1,13 @@
import type {
IDataObject,
IHookFunctions,
IWebhookFunctions,
ILoadOptionsFunctions,
INodePropertyOptions,
INodeType,
INodeTypeDescription,
IWebhookResponseData,
import {
type IDataObject,
type IHookFunctions,
type IWebhookFunctions,
type ILoadOptionsFunctions,
type INodePropertyOptions,
type INodeType,
type INodeTypeDescription,
type IWebhookResponseData,
NodeConnectionType,
} from 'n8n-workflow';
import { calApiRequest, sortOptionParameters } from './GenericFunctions';
@ -24,7 +25,7 @@ export class CalTrigger implements INodeType {
name: 'Cal.com Trigger',
},
inputs: [],
outputs: ['main'],
outputs: [NodeConnectionType.Main],
credentials: [
{
name: 'calApi',

View file

@ -6,6 +6,7 @@ import type {
INodeTypeDescription,
IWebhookResponseData,
} from 'n8n-workflow';
import { NodeConnectionType } from 'n8n-workflow';
import { calendlyApiRequest, getAuthenticationType } from './GenericFunctions';
@ -21,7 +22,7 @@ export class CalendlyTrigger implements INodeType {
name: 'Calendly Trigger',
},
inputs: [],
outputs: ['main'],
outputs: [NodeConnectionType.Main],
credentials: [
{
name: 'calendlyApi',

View file

@ -9,7 +9,7 @@ import type {
IRequestOptions,
IHttpRequestMethods,
} from 'n8n-workflow';
import { NodeApiError, NodeOperationError } from 'n8n-workflow';
import { NodeApiError, NodeConnectionType, NodeOperationError } from 'n8n-workflow';
interface CustomProperty {
name: string;
@ -37,8 +37,8 @@ export class Chargebee implements INodeType {
defaults: {
name: 'Chargebee',
},
inputs: ['main'],
outputs: ['main'],
inputs: [NodeConnectionType.Main],
outputs: [NodeConnectionType.Main],
credentials: [
{
name: 'chargebeeApi',

View file

@ -1,9 +1,10 @@
import type {
IDataObject,
IWebhookFunctions,
INodeType,
INodeTypeDescription,
IWebhookResponseData,
import {
type IDataObject,
type IWebhookFunctions,
type INodeType,
type INodeTypeDescription,
type IWebhookResponseData,
NodeConnectionType,
} from 'n8n-workflow';
export class ChargebeeTrigger implements INodeType {
@ -19,7 +20,7 @@ export class ChargebeeTrigger implements INodeType {
name: 'Chargebee Trigger',
},
inputs: [],
outputs: ['main'],
outputs: [NodeConnectionType.Main],
webhooks: [
{
name: 'default',

View file

@ -5,6 +5,7 @@ import type {
INodeType,
INodeTypeDescription,
} from 'n8n-workflow';
import { NodeConnectionType } from 'n8n-workflow';
import { pipelineFields, pipelineOperations } from './PipelineDescription';
@ -23,8 +24,8 @@ export class CircleCi implements INodeType {
defaults: {
name: 'CircleCI',
},
inputs: ['main'],
outputs: ['main'],
inputs: [NodeConnectionType.Main],
outputs: [NodeConnectionType.Main],
credentials: [
{
name: 'circleCiApi',

View file

@ -7,6 +7,7 @@ import type {
INodeType,
INodeTypeDescription,
} from 'n8n-workflow';
import { NodeConnectionType } from 'n8n-workflow';
import moment from 'moment-timezone';
import { getAttachments, webexApiRequest, webexApiRequestAllItems } from './GenericFunctions';
@ -39,8 +40,8 @@ export class CiscoWebex implements INodeType {
required: true,
},
],
inputs: ['main'],
outputs: ['main'],
inputs: [NodeConnectionType.Main],
outputs: [NodeConnectionType.Main],
properties: [
{
displayName: 'Resource',

View file

@ -7,6 +7,7 @@ import type {
INodeTypeDescription,
IWebhookResponseData,
} from 'n8n-workflow';
import { NodeConnectionType } from 'n8n-workflow';
import {
getAutomaticSecret,
@ -30,7 +31,7 @@ export class CiscoWebexTrigger implements INodeType {
name: 'Webex by Cisco Trigger',
},
inputs: [],
outputs: ['main'],
outputs: [NodeConnectionType.Main],
credentials: [
{
name: 'ciscoWebexOAuth2Api',

View file

@ -5,6 +5,7 @@ import type {
INodeType,
INodeTypeDescription,
} from 'n8n-workflow';
import { NodeConnectionType } from 'n8n-workflow';
import { clearbitApiRequest } from './GenericFunctions';
@ -24,8 +25,8 @@ export class Clearbit implements INodeType {
defaults: {
name: 'Clearbit',
},
inputs: ['main'],
outputs: ['main'],
inputs: [NodeConnectionType.Main],
outputs: [NodeConnectionType.Main],
credentials: [
{
name: 'clearbitApi',

View file

@ -7,7 +7,7 @@ import type {
INodeType,
INodeTypeDescription,
} from 'n8n-workflow';
import { NodeOperationError } from 'n8n-workflow';
import { NodeConnectionType, NodeOperationError } from 'n8n-workflow';
import moment from 'moment-timezone';
import { clickupApiRequest, clickupApiRequestAllItems, validateJSON } from './GenericFunctions';
@ -61,8 +61,8 @@ export class ClickUp implements INodeType {
defaults: {
name: 'ClickUp',
},
inputs: ['main'],
outputs: ['main'],
inputs: [NodeConnectionType.Main],
outputs: [NodeConnectionType.Main],
credentials: [
{
name: 'clickUpApi',

View file

@ -9,6 +9,7 @@ import type {
INodeTypeDescription,
IWebhookResponseData,
} from 'n8n-workflow';
import { NodeConnectionType } from 'n8n-workflow';
import { clickupApiRequest } from './GenericFunctions';
@ -24,7 +25,7 @@ export class ClickUpTrigger implements INodeType {
name: 'ClickUp Trigger',
},
inputs: [],
outputs: ['main'],
outputs: [NodeConnectionType.Main],
credentials: [
{
name: 'clickUpApi',

View file

@ -7,6 +7,7 @@ import type {
INodeType,
INodeTypeDescription,
} from 'n8n-workflow';
import { NodeConnectionType } from 'n8n-workflow';
import moment from 'moment-timezone';
import { clockifyApiRequest, clockifyApiRequestAllItems } from './GenericFunctions';
@ -43,8 +44,8 @@ export class Clockify implements INodeType {
defaults: {
name: 'Clockify',
},
inputs: ['main'],
outputs: ['main'],
inputs: [NodeConnectionType.Main],
outputs: [NodeConnectionType.Main],
credentials: [
{
name: 'clockifyApi',

View file

@ -9,6 +9,7 @@ import type {
INodeType,
INodeTypeDescription,
} from 'n8n-workflow';
import { NodeConnectionType } from 'n8n-workflow';
import { clockifyApiRequest } from './GenericFunctions';
@ -28,7 +29,7 @@ export class ClockifyTrigger implements INodeType {
name: 'Clockify Trigger',
},
inputs: [],
outputs: ['main'],
outputs: [NodeConnectionType.Main],
credentials: [
{
name: 'clockifyApi',

View file

@ -7,6 +7,7 @@ import type {
INodeType,
INodeTypeDescription,
} from 'n8n-workflow';
import { NodeConnectionType } from 'n8n-workflow';
import { cloudflareApiRequest, cloudflareApiRequestAllItems } from './GenericFunctions';
@ -24,8 +25,8 @@ export class Cloudflare implements INodeType {
defaults: {
name: 'Cloudflare',
},
inputs: ['main'],
outputs: ['main'],
inputs: [NodeConnectionType.Main],
outputs: [NodeConnectionType.Main],
credentials: [
{
name: 'cloudflareApi',

View file

@ -7,6 +7,7 @@ import type {
INodeType,
INodeTypeDescription,
} from 'n8n-workflow';
import { NodeConnectionType } from 'n8n-workflow';
import { collectionFields, collectionOperations } from './CollectionDescription';
import {
createCollectionEntry,
@ -31,8 +32,8 @@ export class Cockpit implements INodeType {
defaults: {
name: 'Cockpit',
},
inputs: ['main'],
outputs: ['main'],
inputs: [NodeConnectionType.Main],
outputs: [NodeConnectionType.Main],
credentials: [
{
name: 'cockpitApi',

View file

@ -8,7 +8,7 @@ import type {
INodeTypeDescription,
JsonObject,
} from 'n8n-workflow';
import { NodeApiError } from 'n8n-workflow';
import { NodeConnectionType, NodeApiError } from 'n8n-workflow';
import { codaApiRequest, codaApiRequestAllItems } from './GenericFunctions';
import { tableFields, tableOperations } from './TableDescription';
import { formulaFields, formulaOperations } from './FormulaDescription';
@ -27,8 +27,8 @@ export class Coda implements INodeType {
defaults: {
name: 'Coda',
},
inputs: ['main'],
outputs: ['main'],
inputs: [NodeConnectionType.Main],
outputs: [NodeConnectionType.Main],
credentials: [
{
name: 'codaApi',

View file

@ -1,10 +1,11 @@
import type {
CodeExecutionMode,
CodeNodeEditorLanguage,
IExecuteFunctions,
INodeExecutionData,
INodeType,
INodeTypeDescription,
import {
NodeConnectionType,
type CodeExecutionMode,
type CodeNodeEditorLanguage,
type IExecuteFunctions,
type INodeExecutionData,
type INodeType,
type INodeTypeDescription,
} from 'n8n-workflow';
import set from 'lodash/set';
import { javascriptCodeDescription } from './descriptions/JavascriptCodeDescription';
@ -28,8 +29,8 @@ export class Code implements INodeType {
defaults: {
name: 'Code',
},
inputs: ['main'],
outputs: ['main'],
inputs: [NodeConnectionType.Main],
outputs: [NodeConnectionType.Main],
parameterPane: 'wide',
properties: [
{

View file

@ -7,6 +7,7 @@ import type {
INodeType,
INodeTypeDescription,
} from 'n8n-workflow';
import { NodeConnectionType } from 'n8n-workflow';
import moment from 'moment-timezone';
import { coinFields, coinOperations } from './CoinDescription';
@ -27,8 +28,8 @@ export class CoinGecko implements INodeType {
defaults: {
name: 'CoinGecko',
},
inputs: ['main'],
outputs: ['main'],
inputs: [NodeConnectionType.Main],
outputs: [NodeConnectionType.Main],
properties: [
{
displayName: 'Resource',

View file

@ -1,9 +1,10 @@
import type {
IExecuteFunctions,
IDataObject,
INodeExecutionData,
INodeType,
INodeTypeDescription,
import {
type IExecuteFunctions,
type IDataObject,
type INodeExecutionData,
type INodeType,
type INodeTypeDescription,
NodeConnectionType,
} from 'n8n-workflow';
import {
checkInput,
@ -22,11 +23,16 @@ export class CompareDatasets implements INodeType {
description: 'Compare two inputs for changes',
defaults: { name: 'Compare Datasets' },
// 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'],
requiredInputs: 1,
// 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'],
properties: [
{

View file

@ -1,10 +1,11 @@
import { promisify } from 'util';
import type {
IBinaryKeyData,
IExecuteFunctions,
INodeExecutionData,
INodeType,
INodeTypeDescription,
import {
NodeConnectionType,
type IBinaryKeyData,
type IExecuteFunctions,
type INodeExecutionData,
type INodeType,
type INodeTypeDescription,
} from 'n8n-workflow';
import * as fflate from 'fflate';
@ -57,8 +58,8 @@ export class Compression implements INodeType {
name: 'Compression',
color: '#408000',
},
inputs: ['main'],
outputs: ['main'],
inputs: [NodeConnectionType.Main],
outputs: [NodeConnectionType.Main],
properties: [
{
displayName: 'Operation',

View file

@ -5,6 +5,7 @@ import type {
INodeType,
INodeTypeDescription,
} from 'n8n-workflow';
import { NodeConnectionType } from 'n8n-workflow';
import { contentfulApiRequestAllItems, contentfulApiRequest } from './GenericFunctions';
@ -27,8 +28,8 @@ export class Contentful implements INodeType {
defaults: {
name: 'Contentful',
},
inputs: ['main'],
outputs: ['main'],
inputs: [NodeConnectionType.Main],
outputs: [NodeConnectionType.Main],
credentials: [
{
name: 'contentfulApi',

View file

@ -1,11 +1,12 @@
import type {
IExecuteFunctions,
ILoadOptionsFunctions,
IDataObject,
INodeExecutionData,
INodePropertyOptions,
INodeType,
INodeTypeDescription,
import {
type IExecuteFunctions,
type ILoadOptionsFunctions,
type IDataObject,
type INodeExecutionData,
type INodePropertyOptions,
type INodeType,
type INodeTypeDescription,
NodeConnectionType,
} from 'n8n-workflow';
import { convertKitApiRequest } from './GenericFunctions';
@ -32,8 +33,8 @@ export class ConvertKit implements INodeType {
defaults: {
name: 'ConvertKit',
},
inputs: ['main'],
outputs: ['main'],
inputs: [NodeConnectionType.Main],
outputs: [NodeConnectionType.Main],
credentials: [
{
name: 'convertKitApi',

View file

@ -8,6 +8,7 @@ import type {
INodeTypeDescription,
IWebhookResponseData,
} from 'n8n-workflow';
import { NodeConnectionType } from 'n8n-workflow';
import { snakeCase } from 'change-case';
import { convertKitApiRequest } from './GenericFunctions';
@ -25,7 +26,7 @@ export class ConvertKitTrigger implements INodeType {
name: 'ConvertKit Trigger',
},
inputs: [],
outputs: ['main'],
outputs: [NodeConnectionType.Main],
credentials: [
{
name: 'convertKitApi',

View file

@ -5,6 +5,7 @@ import type {
INodeType,
INodeTypeDescription,
} from 'n8n-workflow';
import { NodeConnectionType } from 'n8n-workflow';
import {
adjustCompanyFields,
@ -46,8 +47,8 @@ export class Copper implements INodeType {
defaults: {
name: 'Copper',
},
inputs: ['main'],
outputs: ['main'],
inputs: [NodeConnectionType.Main],
outputs: [NodeConnectionType.Main],
credentials: [
{
name: 'copperApi',

View file

@ -6,6 +6,7 @@ import type {
INodeTypeDescription,
IWebhookResponseData,
} from 'n8n-workflow';
import { NodeConnectionType } from 'n8n-workflow';
import { copperApiRequest, getAutomaticSecret } from './GenericFunctions';
@ -21,7 +22,7 @@ export class CopperTrigger implements INodeType {
name: 'Copper Trigger',
},
inputs: [],
outputs: ['main'],
outputs: [NodeConnectionType.Main],
credentials: [
{
name: 'copperApi',

Some files were not shown because too many files have changed in this diff Show more