|
18 | 18 | import { ValidateFunction } from 'ajv';
|
19 | 19 | import { Specification } from './definitions';
|
20 | 20 | import { validators } from './validators';
|
| 21 | +import { ValidationError } from './validation-error'; |
21 | 22 |
|
22 | 23 | export class WorkflowValidator {
|
23 | 24 | /** The validation errors after running validate(), if any */
|
24 | 25 | errors: ValidationError[] | never[] = [];
|
25 |
| - /** The validate function */ |
26 |
| - private validateFn: ValidateFunction<Specification.Workflow>; |
| 26 | + |
| 27 | + /** Whether the workflow is valid or not */ |
| 28 | + isValid: boolean; |
27 | 29 |
|
28 | 30 | /**
|
29 | 31 | * Creates a new WorkflowValidator for the provided workflow
|
30 | 32 | * @param {Workflow} workflow The workflow to validate
|
31 | 33 | */
|
32 | 34 | constructor(private workflow: Specification.Workflow) {
|
33 |
| - this.validateFn = validators.get('Workflow') as ValidateFunction<Specification.Workflow>; |
| 35 | + this.validate(); |
34 | 36 | }
|
35 | 37 |
|
36 | 38 | /**
|
37 | 39 | * Validates the workflow, populates the errors if any
|
38 |
| - * @returns {boolean} If the workflow is valid or not |
39 | 40 | */
|
40 |
| - validate(): boolean { |
41 |
| - const isValid = this.validateFn(this.workflow); |
42 |
| - if (this.validateFn.errors) { |
43 |
| - this.errors = this.validateFn.errors.map( |
| 41 | + private validate(): void { |
| 42 | + const validateFn = validators.get('Workflow') as ValidateFunction<Specification.Workflow>; |
| 43 | + this.isValid = validateFn(this.workflow); |
| 44 | + if (validateFn.errors) { |
| 45 | + this.errors = validateFn.errors.map( |
44 | 46 | (error) => new ValidationError(`invalid: ${error.instancePath} | ${error.schemaPath} | ${error.message}`)
|
45 | 47 | );
|
46 | 48 | }
|
47 |
| - return isValid; |
48 | 49 | }
|
49 | 50 | }
|
50 |
| - |
51 |
| -export class ValidationError { |
52 |
| - constructor(readonly message: string) {} |
53 |
| -} |
0 commit comments