You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					25 lines
				
				716 B
			
		
		
			
		
	
	
					25 lines
				
				716 B
			| 
											3 years ago
										 | import {KeywordCxt} from "../../ajv" | ||
|  | import type {CodeKeywordDefinition} from "../../types" | ||
|  | import {alwaysValidSchema} from "../../compile/util" | ||
|  | 
 | ||
|  | const def: CodeKeywordDefinition = { | ||
|  |   keyword: "metadata", | ||
|  |   schemaType: "object", | ||
|  |   code(cxt: KeywordCxt) { | ||
|  |     checkMetadata(cxt) | ||
|  |     const {gen, schema, it} = cxt | ||
|  |     if (alwaysValidSchema(it, schema)) return | ||
|  |     const valid = gen.name("valid") | ||
|  |     cxt.subschema({keyword: "metadata", jtdMetadata: true}, valid) | ||
|  |     cxt.ok(valid) | ||
|  |   }, | ||
|  | } | ||
|  | 
 | ||
|  | export function checkMetadata({it, keyword}: KeywordCxt, metadata?: boolean): void { | ||
|  |   if (it.jtdMetadata !== metadata) { | ||
|  |     throw new Error(`JTD: "${keyword}" cannot be used in this schema location`) | ||
|  |   } | ||
|  | } | ||
|  | 
 | ||
|  | export default def |