@@ -4,7 +4,8 @@ import { append as pointerAppend } from "@hyperjump/json-pointer";
44import { publishAsync } from "../pubsub.js" ;
55import * as Instance from "../instance.js" ;
66import { toAbsoluteUri } from "../common.js" ;
7- import { canonicalUri , getKeyword , getKeywordByName } from "../experimental.js" ;
7+ import { canonicalUri , getKeyword , getKeywordByName , BASIC , DETAILED } from "../experimental.js" ;
8+ import { FLAG } from "../index.js" ;
89
910
1011const id = "https://json-schema.org/evaluation/validate" ;
@@ -44,7 +45,7 @@ const compile = async (schema, ast) => {
4445 return url ;
4546} ;
4647
47- const interpret = ( url , instance , { ast, dynamicAnchors, errors, annotations } ) => {
48+ const interpret = ( url , instance , { ast, dynamicAnchors, errors, annotations, outputFormat } ) => {
4849 dynamicAnchors = { ...ast . metaData [ toAbsoluteUri ( url ) ] . dynamicAnchors , ...dynamicAnchors } ;
4950
5051 if ( typeof ast [ url ] === "boolean" ) {
@@ -63,15 +64,24 @@ const interpret = (url, instance, { ast, dynamicAnchors, errors, annotations })
6364
6465 let isSchemaValid = true ;
6566 for ( const [ keywordId , schemaUri , keywordValue ] of ast [ url ] ) {
66- const context = { ast, dynamicAnchors, schemaUri, errors : [ ] , annotations : [ ] } ;
67+ const context = { ast, dynamicAnchors, schemaUri, errors : [ ] , annotations : [ ] , outputFormat } ;
6768 if ( ! getKeyword ( keywordId ) . interpret ( keywordValue , instance , context ) ) {
6869 isSchemaValid = false ;
69- errors . push ( {
70+ if ( outputFormat === FLAG ) {
71+ continue ;
72+ }
73+
74+ const outputUnit = {
7075 keyword : keywordId ,
7176 absoluteKeywordLocation : schemaUri ,
7277 instanceLocation : Instance . uri ( instance )
73- } ) ;
74- errors . push ( ...context . errors ) ;
78+ } ;
79+ errors . push ( outputUnit ) ;
80+ if ( outputFormat === DETAILED && context . errors . length > 0 ) {
81+ outputUnit . errors = context . errors ;
82+ } else if ( outputFormat === BASIC ) {
83+ errors . push ( ...context . errors ) ;
84+ }
7585 } else {
7686 schemaAnnotations . push ( ...context . annotations ) ;
7787 }
0 commit comments