import type { CodeKeywordDefinition , ErrorObject , KeywordErrorDefinition } from "../../types" ; import type { KeywordCxt } from "../../compile/validate" ; import { usePattern } from "../code" ; import { _ , str } from "../../compile/codegen" ; export type PatternError = ErrorObject < "pattern" , { pattern : string ; } , string | { $data : string ; } > ; const error = { message : ( { schemaCode } ) => str `must match pattern "${ schemaCode }"` , params : ( { schemaCode } ) => _ `{pattern: ${ schemaCode }}` , } ; const def = { keyword : "pattern" , type : "string" , schemaType : "string" , $data : true , error , code ( cxt ) { const { data , $data , schema , schemaCode , it } = cxt ; const u = it . opts . unicodeRegExp ? "u" : "" ; const regExp = $data ? _ `(new RegExp(${ schemaCode }, ${ u }))` : usePattern ( cxt , schema ) ; cxt . fail$data ( _ `!${ regExp }.test(${ data })` ) ; } , } ; export default def ;