Spaces:
Sleeping
Sleeping
| {{# def.definitions }} | |
| {{# def.errors }} | |
| {{# def.setupKeyword }} | |
| {{# def.$data }} | |
| {{ | |
| var $rule = this | |
| , $definition = 'definition' + $lvl | |
| , $rDef = $rule.definition | |
| , $closingBraces = ''; | |
| var $validate = $rDef.validate; | |
| var $compile, $inline, $macro, $ruleValidate, $validateCode; | |
| }} | |
| {{? $isData && $rDef.$data }} | |
| {{ | |
| $validateCode = 'keywordValidate' + $lvl; | |
| var $validateSchema = $rDef.validateSchema; | |
| }} | |
| var {{=$definition}} = RULES.custom['{{=$keyword}}'].definition; | |
| var {{=$validateCode}} = {{=$definition}}.validate; | |
| {{??}} | |
| {{ | |
| $ruleValidate = it.useCustomRule($rule, $schema, it.schema, it); | |
| if (!$ruleValidate) return; | |
| $schemaValue = 'validate.schema' + $schemaPath; | |
| $validateCode = $ruleValidate.code; | |
| $compile = $rDef.compile; | |
| $inline = $rDef.inline; | |
| $macro = $rDef.macro; | |
| }} | |
| {{?}} | |
| {{ | |
| var $ruleErrs = $validateCode + '.errors' | |
| , $i = 'i' + $lvl | |
| , $ruleErr = 'ruleErr' + $lvl | |
| , $asyncKeyword = $rDef.async; | |
| if ($asyncKeyword && !it.async) | |
| throw new Error('async keyword in sync schema'); | |
| }} | |
| {{? !($inline || $macro) }}{{=$ruleErrs}} = null;{{?}} | |
| var {{=$errs}} = errors; | |
| var {{=$valid}}; | |
| {{## def.callRuleValidate: | |
| {{=$validateCode}}.call( | |
| {{? it.opts.passContext }}this{{??}}self{{?}} | |
| {{? $compile || $rDef.schema === false }} | |
| , {{=$data}} | |
| {{??}} | |
| , {{=$schemaValue}} | |
| , {{=$data}} | |
| , validate.schema{{=it.schemaPath}} | |
| {{?}} | |
| , {{# def.dataPath }} | |
| {{# def.passParentData }} | |
| , rootData | |
| ) | |
| #}} | |
| {{## def.extendErrors:_inline: | |
| for (var {{=$i}}={{=$errs}}; {{=$i}}<errors; {{=$i}}++) { | |
| var {{=$ruleErr}} = vErrors[{{=$i}}]; | |
| if ({{=$ruleErr}}.dataPath === undefined) | |
| {{=$ruleErr}}.dataPath = (dataPath || '') + {{= it.errorPath }}; | |
| {{# _inline ? 'if (\{\{=$ruleErr\}\}.schemaPath === undefined) {' : '' }} | |
| {{=$ruleErr}}.schemaPath = "{{=$errSchemaPath}}"; | |
| {{# _inline ? '}' : '' }} | |
| {{? it.opts.verbose }} | |
| {{=$ruleErr}}.schema = {{=$schemaValue}}; | |
| {{=$ruleErr}}.data = {{=$data}}; | |
| {{?}} | |
| } | |
| #}} | |
| {{? $isData && $rDef.$data }} | |
| {{ $closingBraces += '}'; }} | |
| if ({{=$schemaValue}} === undefined) { | |
| {{=$valid}} = true; | |
| } else { | |
| {{? $validateSchema }} | |
| {{ $closingBraces += '}'; }} | |
| {{=$valid}} = {{=$definition}}.validateSchema({{=$schemaValue}}); | |
| if ({{=$valid}}) { | |
| {{?}} | |
| {{?}} | |
| {{? $inline }} | |
| {{? $rDef.statements }} | |
| {{= $ruleValidate.validate }} | |
| {{??}} | |
| {{=$valid}} = {{= $ruleValidate.validate }}; | |
| {{?}} | |
| {{?? $macro }} | |
| {{# def.setupNextLevel }} | |
| {{ | |
| $it.schema = $ruleValidate.validate; | |
| $it.schemaPath = ''; | |
| }} | |
| {{# def.setCompositeRule }} | |
| {{ var $code = it.validate($it).replace(/validate\.schema/g, $validateCode); }} | |
| {{# def.resetCompositeRule }} | |
| {{= $code }} | |
| {{??}} | |
| {{# def.beginDefOut}} | |
| {{# def.callRuleValidate }} | |
| {{# def.storeDefOut:def_callRuleValidate }} | |
| {{? $rDef.errors === false }} | |
| {{=$valid}} = {{? $asyncKeyword }}await {{?}}{{= def_callRuleValidate }}; | |
| {{??}} | |
| {{? $asyncKeyword }} | |
| {{ $ruleErrs = 'customErrors' + $lvl; }} | |
| var {{=$ruleErrs}} = null; | |
| try { | |
| {{=$valid}} = await {{= def_callRuleValidate }}; | |
| } catch (e) { | |
| {{=$valid}} = false; | |
| if (e instanceof ValidationError) {{=$ruleErrs}} = e.errors; | |
| else throw e; | |
| } | |
| {{??}} | |
| {{=$ruleErrs}} = null; | |
| {{=$valid}} = {{= def_callRuleValidate }}; | |
| {{?}} | |
| {{?}} | |
| {{?}} | |
| {{? $rDef.modifying }} | |
| if ({{=$parentData}}) {{=$data}} = {{=$parentData}}[{{=$parentDataProperty}}]; | |
| {{?}} | |
| {{= $closingBraces }} | |
| {{## def.notValidationResult: | |
| {{? $rDef.valid === undefined }} | |
| !{{? $macro }}{{=$nextValid}}{{??}}{{=$valid}}{{?}} | |
| {{??}} | |
| {{= !$rDef.valid }} | |
| {{?}} | |
| #}} | |
| {{? $rDef.valid }} | |
| {{? $breakOnError }} if (true) { {{?}} | |
| {{??}} | |
| if ({{# def.notValidationResult }}) { | |
| {{ $errorKeyword = $rule.keyword; }} | |
| {{# def.beginDefOut}} | |
| {{# def.error:'custom' }} | |
| {{# def.storeDefOut:def_customError }} | |
| {{? $inline }} | |
| {{? $rDef.errors }} | |
| {{? $rDef.errors != 'full' }} | |
| {{# def.extendErrors:true }} | |
| {{?}} | |
| {{??}} | |
| {{? $rDef.errors === false}} | |
| {{= def_customError }} | |
| {{??}} | |
| if ({{=$errs}} == errors) { | |
| {{= def_customError }} | |
| } else { | |
| {{# def.extendErrors:true }} | |
| } | |
| {{?}} | |
| {{?}} | |
| {{?? $macro }} | |
| {{# def.extraError:'custom' }} | |
| {{??}} | |
| {{? $rDef.errors === false}} | |
| {{= def_customError }} | |
| {{??}} | |
| if (Array.isArray({{=$ruleErrs}})) { | |
| if (vErrors === null) vErrors = {{=$ruleErrs}}; | |
| else vErrors = vErrors.concat({{=$ruleErrs}}); | |
| errors = vErrors.length; | |
| {{# def.extendErrors:false }} | |
| } else { | |
| {{= def_customError }} | |
| } | |
| {{?}} | |
| {{?}} | |
| } {{? $breakOnError }} else { {{?}} | |
| {{?}} | |