webcm
Version:
Demonstrative implementation of a web-based manager for utilising Managed Components
44 lines (43 loc) • 1.95 kB
JavaScript
;
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;