- add test button to workflow code step - add test tab to workflow code step https://github.com/user-attachments/assets/e180a827-7321-49a2-8026-88490c557da2  
50 lines
1.2 KiB
TypeScript
50 lines
1.2 KiB
TypeScript
import { BaseOutputSchema } from '@/workflow/search-variables/types/StepOutputSchema';
|
|
import { isObject } from '@sniptt/guards';
|
|
import { InputSchemaPropertyType } from '@/workflow/types/InputSchema';
|
|
import { isDefined } from 'twenty-ui';
|
|
|
|
const getValueType = (value: any): InputSchemaPropertyType => {
|
|
if (!isDefined(value) || value === null) {
|
|
return 'unknown';
|
|
}
|
|
if (typeof value === 'string') {
|
|
return 'string';
|
|
}
|
|
if (typeof value === 'number') {
|
|
return 'number';
|
|
}
|
|
if (typeof value === 'boolean') {
|
|
return 'boolean';
|
|
}
|
|
if (Array.isArray(value)) {
|
|
return 'array';
|
|
}
|
|
if (isObject(value)) {
|
|
return 'object';
|
|
}
|
|
return 'unknown';
|
|
};
|
|
|
|
export const getFunctionOutputSchema = (testResult: object) => {
|
|
return testResult
|
|
? Object.entries(testResult).reduce(
|
|
(acc: BaseOutputSchema, [key, value]) => {
|
|
if (isObject(value) && !Array.isArray(value)) {
|
|
acc[key] = {
|
|
isLeaf: false,
|
|
value: getFunctionOutputSchema(value),
|
|
};
|
|
} else {
|
|
acc[key] = {
|
|
isLeaf: true,
|
|
value,
|
|
type: getValueType(value),
|
|
};
|
|
}
|
|
return acc;
|
|
},
|
|
{},
|
|
)
|
|
: {};
|
|
};
|