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
							 |