UNPKG

webcm

Version:

Demonstrative implementation of a web-based manager for utilising Managed Components

44 lines (43 loc) 1.95 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.explainProblemsWithConfig = exports.isComponentConfig = exports.ComponentConfigShape = exports.DirectComponentConfigShape = exports.NamedComponentConfigShape = void 0; const zod_1 = require("zod"); exports.NamedComponentConfigShape = zod_1.z.object({ name: zod_1.z.string(), settings: zod_1.z.object({}).catchall(zod_1.z.unknown()).optional(), permissions: zod_1.z.array(zod_1.z.string()), }); exports.DirectComponentConfigShape = zod_1.z.object({ path: zod_1.z.string(), settings: zod_1.z.object({}).catchall(zod_1.z.unknown()).optional(), permissions: zod_1.z.array(zod_1.z.string()), }); exports.ComponentConfigShape = zod_1.z.union([ exports.NamedComponentConfigShape, exports.DirectComponentConfigShape, ]); function isComponentConfig(config) { const parseResult = exports.ComponentConfigShape.safeParse(config); return parseResult.success; } exports.isComponentConfig = isComponentConfig; function explainProblemsWithConfig(config) { const parseResult = exports.ComponentConfigShape.safeParse(config); if (!parseResult.success) { const mainIssue = parseResult.error.issues[0]; if (mainIssue.code == 'invalid_union') { const unionErrors = mainIssue.unionErrors.sort((error1, error2) => error1.issues.length < error2.issues.length ? -1 : 1); console.error('Invalid component config', config); for (const issue of unionErrors[0].issues) { if ('expected' in issue) { console.error(`in key '${issue.path}': expected ${issue.expected}, got ${issue.received}`); } } } else { console.error(`Invalid component config encountered:`, config); console.error(parseResult.error.format()); } } } exports.explainProblemsWithConfig = explainProblemsWithConfig;