mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2026-08-06 03:48:35 +02:00
Github issue / Community forum post (link here to close automatically): --------- Co-authored-by: Giulio Andreini <g.andreini@gmail.com> Co-authored-by: कारतोफ्फेलस्क्रिप्ट™ <aditya@netroy.in>
91 lines
2.9 KiB
TypeScript
91 lines
2.9 KiB
TypeScript
import { deepCopy, type ICredentialType, type INodeTypeDescription } from 'n8n-workflow';
|
|
import { CREDENTIAL_ONLY_NODE_PREFIX } from '../constants';
|
|
import { i18n } from '@/plugins/i18n';
|
|
|
|
export function isCredentialOnlyNodeType(nodeTypeName: string): boolean {
|
|
return nodeTypeName?.startsWith(CREDENTIAL_ONLY_NODE_PREFIX) ?? false;
|
|
}
|
|
|
|
export function getCredentialTypeName(nodeTypeName: string): string {
|
|
return nodeTypeName.split('.')[1];
|
|
}
|
|
|
|
export function getCredentialOnlyNodeTypeName(credentialTypeName: string): string {
|
|
return `${CREDENTIAL_ONLY_NODE_PREFIX}.${credentialTypeName}`;
|
|
}
|
|
|
|
export function getCredentialOnlyNodeType(
|
|
httpNode?: INodeTypeDescription | null,
|
|
credentialType?: ICredentialType,
|
|
): INodeTypeDescription | undefined {
|
|
const { httpRequestNode } = credentialType ?? {};
|
|
if (!httpNode || !credentialType || !httpRequestNode) return undefined;
|
|
|
|
const { docsUrl, name: displayName } = httpRequestNode;
|
|
|
|
const credentialOnlyNode = deepCopy(httpNode);
|
|
|
|
const httpIcon = httpNode.iconUrl;
|
|
|
|
credentialOnlyNode.name = getCredentialOnlyNodeTypeName(credentialType.name);
|
|
credentialOnlyNode.extendsCredential = credentialType.name;
|
|
credentialOnlyNode.displayName = displayName ?? credentialType.displayName;
|
|
credentialOnlyNode.description = 'HTTP request';
|
|
credentialOnlyNode.defaults.name = `${displayName} HTTP Request`;
|
|
credentialOnlyNode.codex = {
|
|
...credentialOnlyNode.codex,
|
|
alias: [],
|
|
categories: [],
|
|
subcategories: {},
|
|
};
|
|
|
|
credentialOnlyNode.credentials = [{ name: credentialType.name, required: true }];
|
|
|
|
if (credentialType.icon ?? credentialType.iconUrl) {
|
|
credentialOnlyNode.icon = credentialType.icon;
|
|
credentialOnlyNode.iconUrl = credentialType.iconUrl;
|
|
credentialOnlyNode.badgeIconUrl = httpIcon;
|
|
} else {
|
|
credentialOnlyNode.iconUrl = httpIcon;
|
|
}
|
|
|
|
credentialOnlyNode.properties = httpNode.properties.map((prop) => {
|
|
switch (prop.name) {
|
|
case 'authentication':
|
|
return { ...prop, type: 'hidden', default: 'predefinedCredentialType' };
|
|
case 'nodeCredentialType':
|
|
return { ...prop, type: 'hidden', default: credentialType.name };
|
|
case 'url':
|
|
const properties = { ...prop };
|
|
if ('apiBaseUrl' in httpRequestNode) {
|
|
const { apiBaseUrl } = httpRequestNode;
|
|
properties.default = apiBaseUrl;
|
|
properties.placeholder = apiBaseUrl ? `e.g. ${apiBaseUrl}` : prop.placeholder;
|
|
} else {
|
|
properties.placeholder = httpRequestNode.apiBaseUrlPlaceholder;
|
|
}
|
|
return properties;
|
|
default:
|
|
return prop;
|
|
}
|
|
});
|
|
|
|
credentialOnlyNode.properties.splice(1, 0, {
|
|
type: 'notice',
|
|
displayName: i18n.baseText('ndv.httpRequest.credentialOnly.docsNotice', {
|
|
interpolate: { nodeName: displayName, docsUrl },
|
|
}),
|
|
name: 'httpVariantWarning',
|
|
default: '',
|
|
});
|
|
|
|
credentialOnlyNode.properties.splice(4, 0, {
|
|
type: 'credentials',
|
|
displayName: '',
|
|
name: '',
|
|
default: '',
|
|
});
|
|
|
|
return credentialOnlyNode;
|
|
}
|