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
						
					
					
				| 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
 |