Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | 1x 1x 1x 1x 17x 1x 1x 3x 6x 6x 70x 50x 20x 1x | /* * Copyright © 2019 Lisk Foundation * * See the LICENSE file at the top-level directory of this distribution * for licensing information. * * Unless otherwise agreed in a custom licensing agreement with the Lisk Foundation, * no part of this software, including this file, may be copied, modified, * propagated, or distributed except according to the terms contained in the * LICENSE file. * * Removal or modification of this copyright notice is prohibited. * */ import * as Ajv from 'ajv'; import * as formats from './formats'; export type ErrorObject = Ajv.ErrorObject; class LiskValidator { private readonly validator: Ajv.Ajv; public constructor() { this.validator = new Ajv({ allErrors: true, schemaId: 'auto', useDefaults: false, }); for (const formatName of Object.keys(formats)) { this.validator.addFormat( formatName, formats[formatName as keyof typeof formats], ); } this.validator.addKeyword('uniqueSignedPublicKeys', { type: 'array', compile: () => (data: ReadonlyArray<string>) => new Set( data .filter(datum => typeof datum === 'string') .map((key: string) => key.slice(1)), ).size === data.length, }); } public validate(schema: object, data: object): ReadonlyArray<ErrorObject> { if (!this.validator.validate(schema, data)) { return this.validator.errors as ReadonlyArray<ErrorObject>; } return []; } } export const validator = new LiskValidator(); |