@cognigy/rest-api-client
Version:
Cognigy REST-Client
75 lines • 2.44 kB
JavaScript
import { nodeDescriptorSchema, nodeFieldSchema, } from "./INodeDescriptorSet";
export const knowledgeFieldTypes = [
"text",
"rule",
"json",
"checkbox",
"time",
"date",
"datetime",
"select",
"xml",
"textArray",
"chipInput",
"toggle",
"slider",
"number",
"daterange",
"connection",
"condition",
"description",
];
export const knowledgeFieldSchema = {
title: "knowledgeFieldSchema",
type: "object",
additionalProperties: false,
properties: Object.assign(Object.assign({}, nodeFieldSchema.properties), { type: { type: "string", enum: [...knowledgeFieldTypes] }, key: { type: "string", minLength: 1, maxLength: 200 } }),
};
const { type, summary, defaultLabel, sections, form } = nodeDescriptorSchema.properties;
export const knowledgeDescriptorSchema = {
title: "knowledgeDescriptorSchema",
type: "object",
additionalProperties: false,
properties: {
type,
label: defaultLabel,
summary,
sections,
form,
fields: { type: "array", items: knowledgeFieldSchema },
},
};
const filterNonConfigFields = ({ type }) => !["description"].includes(type);
export const buildConfigValidationSchema = (fields) => ({
type: "object",
additionalProperties: false,
required: (fields || []).filter(filterNonConfigFields).map(({ key }) => key),
properties: Object.assign({}, (fields || []).filter(filterNonConfigFields).reduce((result, field) => (Object.assign(Object.assign({}, result), { [field.key]: mapFieldToSchema(field) })), {})),
});
const mapFieldToSchema = ({ type, params }) => {
switch (type) {
case "checkbox":
case "toggle":
return { type: "boolean" };
case "number":
case "slider":
return { type: "number" };
case "textArray":
case "chipInput":
return {
type: "array",
minLength: (params === null || params === void 0 ? void 0 : params.required) ? 1 : 0,
};
case "json":
return {
type: ["object", "array"],
additionalProperties: true,
};
default:
return {
type: "string",
minLength: (params === null || params === void 0 ? void 0 : params.required) ? 1 : 0,
};
}
};
//# sourceMappingURL=IKnowledgeDescriptor.js.map