mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-17 10:02:05 +00:00
fix(OpenAI Chat Model Node): Respect baseURL override for /models (#10076)
This commit is contained in:
@@ -1296,7 +1296,8 @@ export type DisplayCondition =
|
||||
| { _cnd: { startsWith: string } }
|
||||
| { _cnd: { endsWith: string } }
|
||||
| { _cnd: { includes: string } }
|
||||
| { _cnd: { regex: string } };
|
||||
| { _cnd: { regex: string } }
|
||||
| { _cnd: { exists: true } };
|
||||
|
||||
export interface IDisplayOptions {
|
||||
hide?: {
|
||||
|
||||
@@ -359,7 +359,7 @@ const declarativeNodeOptionParameters: INodeProperties = {
|
||||
export function isSubNodeType(
|
||||
typeDescription: Pick<INodeTypeDescription, 'outputs'> | null,
|
||||
): boolean {
|
||||
if (!typeDescription || !typeDescription.outputs || typeof typeDescription.outputs === 'string') {
|
||||
if (!typeDescription?.outputs || typeof typeDescription.outputs === 'string') {
|
||||
return false;
|
||||
}
|
||||
const outputTypes = getConnectionTypes(typeDescription.outputs);
|
||||
@@ -521,6 +521,9 @@ const checkConditions = (
|
||||
if (key === 'regex') {
|
||||
return new RegExp(targetValue as string).test(propertyValue as string);
|
||||
}
|
||||
if (key === 'exists') {
|
||||
return propertyValue !== null && propertyValue !== undefined && propertyValue !== '';
|
||||
}
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1887,6 +1887,274 @@ describe('NodeHelpers', () => {
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
description:
|
||||
'simple values with displayOptions "show" using exists condition. No values set.',
|
||||
input: {
|
||||
nodePropertiesArray: [
|
||||
{
|
||||
name: 'field1',
|
||||
displayName: 'Field 1',
|
||||
type: 'string',
|
||||
default: '',
|
||||
},
|
||||
{
|
||||
name: 'field2',
|
||||
displayName: 'Field 2',
|
||||
displayOptions: {
|
||||
show: {
|
||||
field1: [{ _cnd: { exists: true } }],
|
||||
},
|
||||
},
|
||||
type: 'string',
|
||||
default: 'default field2',
|
||||
},
|
||||
],
|
||||
nodeValues: {},
|
||||
},
|
||||
output: {
|
||||
noneDisplayedFalse: {
|
||||
defaultsFalse: {},
|
||||
defaultsTrue: {
|
||||
field1: '',
|
||||
},
|
||||
},
|
||||
noneDisplayedTrue: {
|
||||
defaultsFalse: {},
|
||||
defaultsTrue: {
|
||||
field1: '',
|
||||
field2: 'default field2',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
description:
|
||||
'simple values with displayOptions "show" using exists condition. Field1 has a value.',
|
||||
input: {
|
||||
nodePropertiesArray: [
|
||||
{
|
||||
name: 'field1',
|
||||
displayName: 'Field 1',
|
||||
type: 'string',
|
||||
default: '',
|
||||
},
|
||||
{
|
||||
name: 'field2',
|
||||
displayName: 'Field 2',
|
||||
displayOptions: {
|
||||
show: {
|
||||
field1: [{ _cnd: { exists: true } }],
|
||||
},
|
||||
},
|
||||
type: 'string',
|
||||
default: 'default field2',
|
||||
},
|
||||
],
|
||||
nodeValues: {
|
||||
field1: 'some value',
|
||||
},
|
||||
},
|
||||
output: {
|
||||
noneDisplayedFalse: {
|
||||
defaultsFalse: {
|
||||
field1: 'some value',
|
||||
},
|
||||
defaultsTrue: {
|
||||
field1: 'some value',
|
||||
field2: 'default field2',
|
||||
},
|
||||
},
|
||||
noneDisplayedTrue: {
|
||||
defaultsFalse: {
|
||||
field1: 'some value',
|
||||
},
|
||||
defaultsTrue: {
|
||||
field1: 'some value',
|
||||
field2: 'default field2',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
description:
|
||||
'complex type "fixedCollection" with "multipleValues: false" and with displayOptions "show" using exists condition.',
|
||||
input: {
|
||||
nodePropertiesArray: [
|
||||
{
|
||||
name: 'values',
|
||||
displayName: 'Values',
|
||||
type: 'fixedCollection',
|
||||
default: {},
|
||||
options: [
|
||||
{
|
||||
name: 'data',
|
||||
displayName: 'Data',
|
||||
values: [
|
||||
{
|
||||
name: 'field1',
|
||||
displayName: 'Field 1',
|
||||
type: 'string',
|
||||
default: '',
|
||||
},
|
||||
{
|
||||
name: 'field2',
|
||||
displayName: 'Field 2',
|
||||
type: 'string',
|
||||
displayOptions: {
|
||||
show: {
|
||||
field1: [{ _cnd: { exists: true } }],
|
||||
},
|
||||
},
|
||||
default: 'default field2',
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
nodeValues: {
|
||||
values: {
|
||||
data: {
|
||||
field1: 'some value',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
output: {
|
||||
noneDisplayedFalse: {
|
||||
defaultsFalse: {
|
||||
values: {
|
||||
data: {
|
||||
field1: 'some value',
|
||||
},
|
||||
},
|
||||
},
|
||||
defaultsTrue: {
|
||||
values: {
|
||||
data: {
|
||||
field1: 'some value',
|
||||
field2: 'default field2',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
noneDisplayedTrue: {
|
||||
defaultsFalse: {
|
||||
values: {
|
||||
data: {
|
||||
field1: 'some value',
|
||||
},
|
||||
},
|
||||
},
|
||||
defaultsTrue: {
|
||||
values: {
|
||||
data: {
|
||||
field1: 'some value',
|
||||
field2: 'default field2',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
description:
|
||||
'complex type "collection" with "multipleValues: true" and with displayOptions "show" using exists condition.',
|
||||
input: {
|
||||
nodePropertiesArray: [
|
||||
{
|
||||
name: 'values',
|
||||
displayName: 'Values',
|
||||
type: 'collection',
|
||||
typeOptions: {
|
||||
multipleValues: true,
|
||||
},
|
||||
default: {},
|
||||
options: [
|
||||
{
|
||||
name: 'field1',
|
||||
displayName: 'Field 1',
|
||||
type: 'string',
|
||||
default: '',
|
||||
},
|
||||
{
|
||||
name: 'field2',
|
||||
displayName: 'Field 2',
|
||||
type: 'string',
|
||||
displayOptions: {
|
||||
show: {
|
||||
field1: [{ _cnd: { exists: true } }],
|
||||
},
|
||||
},
|
||||
default: 'default field2',
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
nodeValues: {
|
||||
values: [
|
||||
{
|
||||
field1: 'value1',
|
||||
},
|
||||
{
|
||||
field1: '',
|
||||
},
|
||||
{},
|
||||
],
|
||||
},
|
||||
},
|
||||
output: {
|
||||
noneDisplayedFalse: {
|
||||
defaultsFalse: {
|
||||
values: [
|
||||
{
|
||||
field1: 'value1',
|
||||
},
|
||||
{
|
||||
field1: '',
|
||||
},
|
||||
{},
|
||||
],
|
||||
},
|
||||
defaultsTrue: {
|
||||
values: [
|
||||
{
|
||||
field1: 'value1',
|
||||
},
|
||||
{
|
||||
field1: '',
|
||||
},
|
||||
{},
|
||||
],
|
||||
},
|
||||
},
|
||||
noneDisplayedTrue: {
|
||||
defaultsFalse: {
|
||||
values: [
|
||||
{
|
||||
field1: 'value1',
|
||||
},
|
||||
{
|
||||
field1: '',
|
||||
},
|
||||
{},
|
||||
],
|
||||
},
|
||||
defaultsTrue: {
|
||||
values: [
|
||||
{
|
||||
field1: 'value1',
|
||||
},
|
||||
{
|
||||
field1: '',
|
||||
},
|
||||
{},
|
||||
],
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
for (const testData of tests) {
|
||||
|
||||
Reference in New Issue
Block a user