@@ -23,7 +23,7 @@ async function validate(input: ValidateSchemaInput<unknown, unknown>): Promise<S
23
23
ajv . compile ( schema ) ;
24
24
} catch ( error : any ) {
25
25
if ( error ! instanceof Error ) {
26
- errors = AjvToSpectralErrors ( error ) ;
26
+ errors = ajvToSpectralErrors ( error ) ;
27
27
} else {
28
28
// Unknown and unexpected error
29
29
throw error ;
@@ -33,31 +33,37 @@ async function validate(input: ValidateSchemaInput<unknown, unknown>): Promise<S
33
33
return errors ;
34
34
}
35
35
36
- function AjvToSpectralErrors ( error : Error ) : SchemaValidateError [ ] {
36
+ function ajvToSpectralErrors ( error : Error ) : SchemaValidateError [ ] {
37
37
let errors : SchemaValidateError [ ] = [ ] ;
38
38
let errorMessage = error . message ;
39
39
40
- // Validation errors
40
+ // Validation errors.
41
+ // See related AJV function where the error message is generated:
42
+ // https://github.com/ajv-validator/ajv/blob/99e884dc4bbb828cf47771b7bbdb14f23193b0b1/lib/core.ts#L501-L522
41
43
const validationErrorPrefix = "schema is invalid: " ;
42
44
if ( error . message . startsWith ( validationErrorPrefix ) ) {
43
45
// remove prefix
44
46
errorMessage = errorMessage . substring ( validationErrorPrefix . length ) ;
45
47
46
48
// message can contain multiple validation errors separated by ',' (comma)
47
49
errorMessage . split ( ", " ) . forEach ( ( message : string ) => {
48
- const path = message . slice ( 0 , message . indexOf ( " " ) ) ;
49
- const error = message . slice ( message . indexOf ( " " ) + 1 ) ;
50
+ const splitIndex = message . indexOf ( " " ) ;
51
+ const path = message . slice ( 0 , splitIndex ) ;
52
+ const error = message . slice ( splitIndex + 1 ) ;
53
+
50
54
const resultErr : SchemaValidateError = {
51
55
message : error ,
52
56
path : path . split ( "/" )
53
57
} ;
58
+
54
59
errors . push ( resultErr ) ;
55
60
} ) ;
56
61
} else {
57
62
// Not a validation error
58
63
const resultErr : SchemaValidateError = {
59
64
message : error . message ,
60
65
} ;
66
+
61
67
errors . push ( resultErr ) ;
62
68
}
63
69
0 commit comments