UNPKG

@cognigy/rest-api-client

Version:

Cognigy REST-Client

75 lines 2.44 kB
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