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 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',
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -90,7 +90,7 @@ export const versionDescription: INodeTypeDescription = {
|
|||
},
|
||||
},
|
||||
inputs: `={{(${configureNodeInputs})($parameter.resource, $parameter.operation, $parameter.hideTools)}}`,
|
||||
outputs: ['main'],
|
||||
outputs: [NodeConnectionType.Main],
|
||||
credentials: [
|
||||
{
|
||||
name: 'openAiApi',
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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'];
|
||||
|
|
|
@ -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>
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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),
|
||||
),
|
||||
};
|
||||
});
|
||||
|
||||
|
|
|
@ -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) &&
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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: [],
|
||||
};
|
||||
|
||||
|
|
|
@ -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() {
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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>();
|
||||
|
|
|
@ -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) ||
|
||||
|
|
|
@ -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(
|
||||
|
|
|
@ -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 [];
|
||||
|
|
|
@ -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] = [];
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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]: {
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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: [
|
||||
{
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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: [
|
||||
{
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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: [
|
||||
{
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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: [
|
||||
{
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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: [
|
||||
{
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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
Loading…
Reference in a new issue