UNPKG

@eventcatalog/linter

Version:

A linter for EventCatalog to validate frontmatter and resource references

70 lines 2.28 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.flowSchema = void 0; const zod_1 = require("zod"); const common_1 = require("./common"); const flowStep = zod_1.z .union([ zod_1.z.union([zod_1.z.string(), zod_1.z.number()]), zod_1.z .object({ id: zod_1.z.union([zod_1.z.string(), zod_1.z.number()]), label: zod_1.z.string().optional(), }) .optional(), ]) .optional(); const flowStepSchema = zod_1.z .object({ id: zod_1.z.union([zod_1.z.string(), zod_1.z.number()]), type: zod_1.z.enum(['node', 'message', 'user', 'actor']).optional(), title: zod_1.z.string(), summary: zod_1.z.string().optional(), message: common_1.pointerSchema.optional(), service: common_1.pointerSchema.optional(), flow: common_1.pointerSchema.optional(), actor: zod_1.z .object({ name: zod_1.z.string(), }) .optional(), custom: zod_1.z .object({ title: zod_1.z.string(), icon: zod_1.z.string().optional(), type: zod_1.z.string().optional(), summary: zod_1.z.string().optional(), url: zod_1.z.string().url().optional(), color: zod_1.z.string().optional(), properties: zod_1.z.record(zod_1.z.union([zod_1.z.string(), zod_1.z.number()])).optional(), height: zod_1.z.number().optional(), menu: zod_1.z .array(zod_1.z.object({ label: zod_1.z.string(), url: zod_1.z.string().url().optional(), })) .optional(), }) .optional(), externalSystem: zod_1.z .object({ name: zod_1.z.string(), summary: zod_1.z.string().optional(), url: zod_1.z.string().url().optional(), }) .optional(), next_step: flowStep, next_steps: zod_1.z.array(flowStep).optional(), }) .refine((data) => { if (data.next_step && data.next_steps) return false; const typesUsed = [data.message, data.service, data.flow, data.actor, data.custom].filter((v) => v).length; return typesUsed === 0 || typesUsed === 1; }); exports.flowSchema = zod_1.z .object({ steps: zod_1.z.array(flowStepSchema), }) .merge(common_1.baseSchema); //# sourceMappingURL=flow.js.map