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.
		
		
		
		
		
			
		
			
				
					24 lines
				
				746 B
			
		
		
			
		
	
	
					24 lines
				
				746 B
			| 
											3 years ago
										 | import type {KeywordErrorDefinition, KeywordErrorCxt, ErrorObject} from "../../types" | ||
|  | import {_, Code} from "../../compile/codegen" | ||
|  | 
 | ||
|  | export type _JTDTypeError<K extends string, T extends string, S> = ErrorObject< | ||
|  |   K, | ||
|  |   {type: T; nullable: boolean}, | ||
|  |   S | ||
|  | > | ||
|  | 
 | ||
|  | export function typeError(t: string): KeywordErrorDefinition { | ||
|  |   return { | ||
|  |     message: (cxt) => typeErrorMessage(cxt, t), | ||
|  |     params: (cxt) => typeErrorParams(cxt, t), | ||
|  |   } | ||
|  | } | ||
|  | 
 | ||
|  | export function typeErrorMessage({parentSchema}: KeywordErrorCxt, t: string): string { | ||
|  |   return parentSchema?.nullable ? `must be ${t} or null` : `must be ${t}` | ||
|  | } | ||
|  | 
 | ||
|  | export function typeErrorParams({parentSchema}: KeywordErrorCxt, t: string): Code { | ||
|  |   return _`{type: ${t}, nullable: ${!!parentSchema?.nullable}}` | ||
|  | } |