@cognigy/rest-api-client
Version:
Cognigy REST-Client
79 lines • 2.74 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.buildConfigValidationSchema = exports.knowledgeDescriptorSchema = exports.knowledgeFieldSchema = exports.knowledgeFieldTypes = void 0;
const INodeDescriptorSet_1 = require("./INodeDescriptorSet");
exports.knowledgeFieldTypes = [
"text",
"rule",
"json",
"checkbox",
"time",
"date",
"datetime",
"select",
"xml",
"textArray",
"chipInput",
"toggle",
"slider",
"number",
"daterange",
"connection",
"condition",
"description",
];
exports.knowledgeFieldSchema = {
title: "knowledgeFieldSchema",
type: "object",
additionalProperties: false,
properties: Object.assign(Object.assign({}, INodeDescriptorSet_1.nodeFieldSchema.properties), { type: { type: "string", enum: [...exports.knowledgeFieldTypes] }, key: { type: "string", minLength: 1, maxLength: 200 } }),
};
const { type, summary, defaultLabel, sections, form } = INodeDescriptorSet_1.nodeDescriptorSchema.properties;
exports.knowledgeDescriptorSchema = {
title: "knowledgeDescriptorSchema",
type: "object",
additionalProperties: false,
properties: {
type,
label: defaultLabel,
summary,
sections,
form,
fields: { type: "array", items: exports.knowledgeFieldSchema },
},
};
const filterNonConfigFields = ({ type }) => !["description"].includes(type);
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) })), {})),
});
exports.buildConfigValidationSchema = buildConfigValidationSchema;
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