UNPKG

@evpower/ocpp-ts

Version:

OCPP 1.6: Open Charge Point Protocol

48 lines 4.49 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.SchemaValidator = void 0; const ajv_1 = __importDefault(require("ajv")); const OcppError_1 = require("./OcppError"); class SchemaValidator { constructor(schema) { this.schema = schema; delete this.schema.$schema; this.validateFn = SchemaValidator.ajv.compile(this.schema); } /** * @throws {OcppError} */ validate(payload) { if (!this.schema) { throw new OcppError_1.OcppError(OcppError_1.ERROR_PROTOCOLERROR, 'Schema for request not found'); } const valid = this.validateFn(payload); if (!valid) { this.validateFn.errors?.forEach((error) => { if (error.keyword === 'additionalProperties') { throw new OcppError_1.OcppError(OcppError_1.ERROR_FORMATIONVIOLATION, 'Payload for Action is syntactically incorrect or not conform the PDU structure for' + ' Action', error); } else if (['maxLength', 'enum'].includes(error.keyword)) { throw new OcppError_1.OcppError(OcppError_1.ERROR_PROPERTYCONSTRAINTVIOLATION, 'Payload is syntactically correct but at least one field contains an invalid value', error); } else if (['type'].includes(error.keyword)) { throw new OcppError_1.OcppError(OcppError_1.ERROR_TYPECONSTRAINTVIOLATION, 'Payload for Action is syntactically correct but at least one of the fields violates data type', error); } else if (error.keyword === 'required') { throw new OcppError_1.OcppError(OcppError_1.ERROR_PROTOCOLERROR, 'Payload for Action is incomplete', error); } else { throw new OcppError_1.OcppError(OcppError_1.ERROR_FORMATIONVIOLATION, 'Payload for Action is syntactically incorrect or not conform the PDU structure for Action', error); } }); throw new OcppError_1.OcppError(OcppError_1.ERROR_FORMATIONVIOLATION, 'Payload for Action is syntactically incorrect or not conform the PDU structure for Action'); } } } exports.SchemaValidator = SchemaValidator; SchemaValidator.ajv = new ajv_1.default(); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NoZW1hVmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2ltcGwvU2NoZW1hVmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLDhDQUErQztBQUMvQywyQ0FNcUI7QUFFckIsTUFBYSxlQUFlO0lBSTFCLFlBQVksTUFBYztRQUN4QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO1FBQzNCLElBQUksQ0FBQyxVQUFVLEdBQUcsZUFBZSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRDs7T0FFRztJQUNILFFBQVEsQ0FBQyxPQUFZO1FBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDakIsTUFBTSxJQUFJLHFCQUFTLENBQUMsK0JBQW1CLEVBQUUsOEJBQThCLENBQUMsQ0FBQztRQUMzRSxDQUFDO1FBQ0QsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDWCxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQyxLQUEyQixFQUFFLEVBQUU7Z0JBQzlELElBQUksS0FBSyxDQUFDLE9BQU8sS0FBSyxzQkFBc0IsRUFBRSxDQUFDO29CQUM3QyxNQUFNLElBQUkscUJBQVMsQ0FDakIsb0NBQXdCLEVBQ3hCLG9GQUFvRjswQkFDbEYsU0FBUyxFQUNYLEtBQUssQ0FDTixDQUFDO2dCQUNKLENBQUM7cUJBQU0sSUFBSSxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7b0JBQ3pELE1BQU0sSUFBSSxxQkFBUyxDQUNqQiw2Q0FBaUMsRUFDakMsbUZBQW1GLEVBQ25GLEtBQUssQ0FDTixDQUFDO2dCQUNKLENBQUM7cUJBQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztvQkFDNUMsTUFBTSxJQUFJLHFCQUFTLENBQ2pCLHlDQUE2QixFQUM3QiwrRkFBK0YsRUFDL0YsS0FBSyxDQUNOLENBQUM7Z0JBQ0osQ0FBQztxQkFBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLEtBQUssVUFBVSxFQUFFLENBQUM7b0JBQ3hDLE1BQU0sSUFBSSxxQkFBUyxDQUNqQiwrQkFBbUIsRUFDbkIsa0NBQWtDLEVBQ2xDLEtBQUssQ0FDTixDQUFDO2dCQUNKLENBQUM7cUJBQU0sQ0FBQztvQkFDTixNQUFNLElBQUkscUJBQVMsQ0FDakIsb0NBQXdCLEVBQ3hCLDJGQUEyRixFQUMzRixLQUFLLENBQ04sQ0FBQztnQkFDSixDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDSCxNQUFNLElBQUkscUJBQVMsQ0FDakIsb0NBQXdCLEVBQ3hCLDJGQUEyRixDQUM1RixDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7O0FBMURILDBDQTJEQztBQXhEUSxtQkFBRyxHQUFpQixJQUFJLGFBQUcsRUFBRSxDQUFDIn0=