UNPKG

contentful-migration

Version:
76 lines 2.88 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.validateAnnotations = void 0; const __1 = require(".."); const annotation_1 = require("../../interfaces/annotation"); function validateFieldAssignments(contentTypeFieldAssignments, contentType) { const errors = []; const assignments = Object.entries(contentTypeFieldAssignments); for (const [fieldId, fieldAssignments] of assignments) { // check if field exists first const fieldDefinition = contentType.fields.find((field) => field.id === fieldId); if (!fieldDefinition) { // TODO: collect the errors errors.push({ type: 'InvalidPayload', message: `Invalid annotation assignment, Field "${fieldId}" not found` }); continue; } for (const [, assignmentPayload] of fieldAssignments.entries()) { const { sys: { id: annotationId } } = assignmentPayload; const assignment = { annotationId, target: { type: 'ContentTypeField', data: fieldDefinition } }; const error = (0, annotation_1.validateAnnotationAssignment)(assignment); if (error) { errors.push(error); } } } return errors; } function validateContentTypeAssignment(contentTypeAssignments, contentType) { const errors = []; for (const assignmentPayload of contentTypeAssignments.values()) { const { sys: { id: annotationId } } = assignmentPayload; const assignment = { annotationId, target: { type: 'ContentType', data: contentType } }; const error = (0, annotation_1.validateAnnotationAssignment)(assignment); if (error) { errors.push(error); } } return errors; } function validateAnnotations(contentType) { var _a; if (!((_a = contentType === null || contentType === void 0 ? void 0 : contentType.metadata) === null || _a === void 0 ? void 0 : _a.annotations)) { return; } const { ContentType: contentTypeAssignments = [], ContentTypeField: contentTypeFieldAssignments = {} } = contentType.metadata.annotations; return [ ...validateContentTypeAssignment(contentTypeAssignments, contentType), ...validateFieldAssignments(contentTypeFieldAssignments, contentType) ].filter((e) => Boolean(e)); } exports.validateAnnotations = validateAnnotations; class AnnotationsValidator { constructor() { this.hooks = [__1.ApiHook.SaveContentType]; } validate({ contentType }) { return validateAnnotations(contentType.toAPI()); } } exports.default = AnnotationsValidator; //# sourceMappingURL=annotations.js.map