From 86e13a60cd00b73b91af1933269c98b065ad90f5 Mon Sep 17 00:00:00 2001 From: GitHub workflow <2769109+epoberezkin@users.noreply.github.com> Date: Sat, 1 Jun 2024 09:54:18 +0000 Subject: [PATCH] updated by ajv workflow https://github.com/ajv-validator/ajv/actions/runs/9316161933 --- 404.html | 6 +- api.html | 6 +- assets/css/0.styles.e492eab2.css | 1 + assets/img/contributors.ee23f7de.jpg | Bin 0 -> 242844 bytes assets/js/21.dd670b89.js | 1 + assets/js/44.314d45c2.js | 1 + assets/js/49.d9bd57e6.js | 1 + assets/js/73.a5150b66.js | 1 + assets/js/74.8a90d1b3.js | 1 + assets/js/77.beaef493.js | 1 + assets/js/79.358a5099.js | 1 + assets/js/80.fba79acb.js | 1 + assets/js/app.3bfc81a1.js | 16 + code_of_conduct/index.html | 6 +- codegen.html | 6 +- coercion.html | 6 +- components.html | 6 +- contributing/index.html | 6 +- faq.html | 6 +- guide/async-validation.html | 6 +- guide/combining-schemas.html | 6 +- guide/environments.html | 6 +- guide/formats.html | 6 +- guide/getting-started.html | 6 +- guide/managing-schemas.html | 6 +- guide/modifying-data.html | 6 +- guide/schema-language.html | 6 +- guide/typescript.html | 6 +- guide/user-keywords.html | 6 +- guide/why-ajv.html | 6 +- index.html | 396 +++++++++--------- json-schema.html | 6 +- json-type-definition.html | 6 +- keywords.html | 6 +- license.html | 6 +- ...08-14-mozilla-grant-openjs-foundation.html | 6 +- news/2020-12-15-ajv-version-7-released.html | 6 +- ...-07-ajv-supports-json-type-definition.html | 6 +- news/2021-03-27-ajv-version-8-released.html | 6 +- news/2021-04-24-ajv-online-event.html | 6 +- news/2021-05-24-ajv-online-event-video.html | 6 +- ...1-07-22-ajv-microsoft-foss-fund-award.html | 6 +- news/index.html | 6 +- options.html | 8 +- packages/ajv-cli.html | 6 +- packages/ajv-errors.html | 6 +- packages/ajv-formats.html | 6 +- packages/ajv-i18n.html | 6 +- packages/ajv-keywords.html | 6 +- packages/index.html | 6 +- security.html | 6 +- standalone.html | 6 +- strict-mode.html | 6 +- testimonials.html | 6 +- v6-to-v8-migration.html | 6 +- 55 files changed, 354 insertions(+), 327 deletions(-) create mode 100644 assets/css/0.styles.e492eab2.css create mode 100644 assets/img/contributors.ee23f7de.jpg create mode 100644 assets/js/21.dd670b89.js create mode 100644 assets/js/44.314d45c2.js create mode 100644 assets/js/49.d9bd57e6.js create mode 100644 assets/js/73.a5150b66.js create mode 100644 assets/js/74.8a90d1b3.js create mode 100644 assets/js/77.beaef493.js create mode 100644 assets/js/79.358a5099.js create mode 100644 assets/js/80.fba79acb.js create mode 100644 assets/js/app.3bfc81a1.js diff --git a/404.html b/404.html index 18862e29e..8da893661 100644 --- a/404.html +++ b/404.html @@ -18,13 +18,13 @@ - - + +

404

Looks like we've got some broken links.
Take me home.
- + diff --git a/api.html b/api.html index 76a07dc96..43c2c36ec 100644 --- a/api.html +++ b/api.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/assets/css/0.styles.e492eab2.css b/assets/css/0.styles.e492eab2.css new file mode 100644 index 000000000..f73e895a1 --- /dev/null +++ b/assets/css/0.styles.e492eab2.css @@ -0,0 +1 @@ +code[class*=language-],pre[class*=language-]{color:#ccc;background:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#2d2d2d}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.block-comment,.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#999}.token.punctuation{color:#ccc}.token.attr-name,.token.deleted,.token.namespace,.token.tag{color:#e2777a}.token.function-name{color:#6196cc}.token.boolean,.token.function,.token.number{color:#f08d49}.token.class-name,.token.constant,.token.property,.token.symbol{color:#f8c555}.token.atrule,.token.builtin,.token.important,.token.keyword,.token.selector{color:#cc99cd}.token.attr-value,.token.char,.token.regex,.token.string,.token.variable{color:#7ec699}.token.entity,.token.operator,.token.url{color:#67cdcc}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.token.inserted{color:green}.theme-default-content code{color:#545252;padding:.25rem .5rem;margin:0;font-size:.85em;background-color:rgba(27,31,35,.05);border-radius:3px}.theme-default-content code .token.deleted{color:#ec5975}.theme-default-content code .token.inserted{color:#07aab4}.theme-default-content pre,.theme-default-content pre[class*=language-]{line-height:1.4;padding:1.25rem 1.5rem;margin:.85rem 0;background-color:#282c34;border-radius:6px;overflow:auto}.theme-default-content pre[class*=language-] code,.theme-default-content pre code{color:#fff;padding:0;background-color:transparent;border-radius:0}div[class*=language-]{position:relative;background-color:#282c34;border-radius:6px}div[class*=language-] .highlight-lines{-webkit-user-select:none;user-select:none;padding-top:1.3rem;position:absolute;top:0;left:0;width:100%;line-height:1.4}div[class*=language-] .highlight-lines .highlighted{background-color:rgba(0,0,0,.66)}div[class*=language-] pre,div[class*=language-] pre[class*=language-]{background:transparent;position:relative;z-index:1}div[class*=language-]:before{position:absolute;z-index:3;top:.8em;right:1em;font-size:.75rem;color:hsla(0,0%,100%,.4)}div[class*=language-]:not(.line-numbers-mode) .line-numbers-wrapper{display:none}div[class*=language-].line-numbers-mode .highlight-lines .highlighted{position:relative}div[class*=language-].line-numbers-mode .highlight-lines .highlighted:before{content:" ";position:absolute;z-index:3;left:0;top:0;display:block;width:3.5rem;height:100%;background-color:rgba(0,0,0,.66)}div[class*=language-].line-numbers-mode pre{padding-left:4.5rem;vertical-align:middle}div[class*=language-].line-numbers-mode .line-numbers-wrapper{position:absolute;top:0;width:3.5rem;text-align:center;color:hsla(0,0%,100%,.3);padding:1.25rem 0;line-height:1.4}div[class*=language-].line-numbers-mode .line-numbers-wrapper br{-webkit-user-select:none;user-select:none}div[class*=language-].line-numbers-mode .line-numbers-wrapper .line-number{position:relative;z-index:4;-webkit-user-select:none;user-select:none;font-size:.85em}div[class*=language-].line-numbers-mode:after{content:"";position:absolute;z-index:2;top:0;left:0;width:3.5rem;height:100%;border-radius:6px 0 0 6px;border-right:1px solid rgba(0,0,0,.66);background-color:#282c34}div[class~=language-js]:before{content:"js"}div[class~=language-ts]:before{content:"ts"}div[class~=language-html]:before{content:"html"}div[class~=language-md]:before{content:"md"}div[class~=language-vue]:before{content:"vue"}div[class~=language-css]:before{content:"css"}div[class~=language-sass]:before{content:"sass"}div[class~=language-scss]:before{content:"scss"}div[class~=language-less]:before{content:"less"}div[class~=language-stylus]:before{content:"stylus"}div[class~=language-go]:before{content:"go"}div[class~=language-java]:before{content:"java"}div[class~=language-c]:before{content:"c"}div[class~=language-sh]:before{content:"sh"}div[class~=language-yaml]:before{content:"yaml"}div[class~=language-py]:before{content:"py"}div[class~=language-docker]:before{content:"docker"}div[class~=language-dockerfile]:before{content:"dockerfile"}div[class~=language-makefile]:before{content:"makefile"}div[class~=language-javascript]:before{content:"js"}div[class~=language-typescript]:before{content:"ts"}div[class~=language-markup]:before{content:"html"}div[class~=language-markdown]:before{content:"md"}div[class~=language-json]:before{content:"json"}div[class~=language-ruby]:before{content:"rb"}div[class~=language-python]:before{content:"py"}div[class~=language-bash]:before{content:"sh"}div[class~=language-php]:before{content:"php"}.custom-block .custom-block-title{font-weight:600;margin-bottom:-.4rem}.custom-block.danger,.custom-block.tip,.custom-block.warning{padding:.1rem 1.5rem;border-left-width:.5rem;border-left-style:solid;margin:1rem 0}.custom-block.tip{background-color:#f3f5f7;border-color:#42b983}.custom-block.warning{background-color:rgba(255,229,100,.3);border-color:#e7c000;color:#6b5900}.custom-block.warning .custom-block-title{color:#b29400}.custom-block.warning a{color:#292828}.custom-block.danger{background-color:#ffe6e6;border-color:#c00;color:#4d0000}.custom-block.danger .custom-block-title{color:#900}.custom-block.danger a{color:#292828}.custom-block.details{display:block;position:relative;border-radius:2px;margin:1.6em 0;padding:1.6em;background-color:#eee}.custom-block.details h4{margin-top:0}.custom-block.details figure:last-child,.custom-block.details p:last-child{margin-bottom:0;padding-bottom:0}.custom-block.details summary{outline:none;cursor:pointer}.arrow{display:inline-block;width:0;height:0}.arrow.up{border-bottom:6px solid #ccc}.arrow.down,.arrow.up{border-left:4px solid transparent;border-right:4px solid transparent}.arrow.down{border-top:6px solid #ccc}.arrow.right{border-left:6px solid #ccc}.arrow.left,.arrow.right{border-top:4px solid transparent;border-bottom:4px solid transparent}.arrow.left{border-right:6px solid #ccc}.theme-default-content:not(.custom){max-width:740px;margin:0 auto;padding:2rem 2.5rem}@media (max-width:959px){.theme-default-content:not(.custom){padding:2rem}}@media (max-width:480px){.theme-default-content:not(.custom){padding:1.5rem}}.table-of-contents .badge{vertical-align:middle}body,html{padding:0;margin:0;background-color:#fff}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px;color:#292828}.page{padding-left:20rem}.navbar{z-index:20;right:0;height:3.6rem;background-color:#fff;box-sizing:border-box;border-bottom:1px solid #eaecef}.navbar,.sidebar-mask{position:fixed;top:0;left:0}.sidebar-mask{z-index:9;width:100vw;height:100vh;display:none}.sidebar{font-size:16px;background-color:#fff;width:20rem;position:fixed;z-index:10;margin:0;top:3.6rem;left:0;bottom:0;box-sizing:border-box;border-right:1px solid #eaecef;overflow-y:auto}.theme-default-content:not(.custom)>:first-child{margin-top:3.6rem}.theme-default-content:not(.custom) a:hover{text-decoration:underline}.theme-default-content:not(.custom) p.demo{padding:1rem 1.5rem;border:1px solid #ddd;border-radius:4px}.theme-default-content:not(.custom) img{max-width:100%}.theme-default-content.custom{padding:0;margin:0}.theme-default-content.custom img{max-width:100%}a{font-weight:500;text-decoration:none}a,p a code{color:#07aab4}p a code{font-weight:400}kbd{background:#eee;border:.15rem solid #ddd;border-bottom:.25rem solid #ddd;border-radius:.15rem;padding:0 .15em}blockquote{font-size:1rem;color:#999;border-left:.2rem solid #dfe2e5;margin:1rem 0;padding:.25rem 0 .25rem 1rem}blockquote>p{margin:0}ol,ul{padding-left:1.2em}strong{font-weight:600}h1,h2,h3,h4,h5,h6{font-weight:600;line-height:1.25}.theme-default-content:not(.custom)>h1,.theme-default-content:not(.custom)>h2,.theme-default-content:not(.custom)>h3,.theme-default-content:not(.custom)>h4,.theme-default-content:not(.custom)>h5,.theme-default-content:not(.custom)>h6{margin-top:-3.1rem;padding-top:4.6rem;margin-bottom:0}.theme-default-content:not(.custom)>h1:first-child,.theme-default-content:not(.custom)>h2:first-child,.theme-default-content:not(.custom)>h3:first-child,.theme-default-content:not(.custom)>h4:first-child,.theme-default-content:not(.custom)>h5:first-child,.theme-default-content:not(.custom)>h6:first-child{margin-top:-1.5rem;margin-bottom:1rem}.theme-default-content:not(.custom)>h1:first-child+.custom-block,.theme-default-content:not(.custom)>h1:first-child+p,.theme-default-content:not(.custom)>h1:first-child+pre,.theme-default-content:not(.custom)>h2:first-child+.custom-block,.theme-default-content:not(.custom)>h2:first-child+p,.theme-default-content:not(.custom)>h2:first-child+pre,.theme-default-content:not(.custom)>h3:first-child+.custom-block,.theme-default-content:not(.custom)>h3:first-child+p,.theme-default-content:not(.custom)>h3:first-child+pre,.theme-default-content:not(.custom)>h4:first-child+.custom-block,.theme-default-content:not(.custom)>h4:first-child+p,.theme-default-content:not(.custom)>h4:first-child+pre,.theme-default-content:not(.custom)>h5:first-child+.custom-block,.theme-default-content:not(.custom)>h5:first-child+p,.theme-default-content:not(.custom)>h5:first-child+pre,.theme-default-content:not(.custom)>h6:first-child+.custom-block,.theme-default-content:not(.custom)>h6:first-child+p,.theme-default-content:not(.custom)>h6:first-child+pre{margin-top:2rem}h1:focus .header-anchor,h1:hover .header-anchor,h2:focus .header-anchor,h2:hover .header-anchor,h3:focus .header-anchor,h3:hover .header-anchor,h4:focus .header-anchor,h4:hover .header-anchor,h5:focus .header-anchor,h5:hover .header-anchor,h6:focus .header-anchor,h6:hover .header-anchor{opacity:1}h1{font-size:2.2rem}h2{font-size:1.65rem;padding-bottom:.3rem;border-bottom:1px solid #eaecef}h3{font-size:1.35rem}a.header-anchor{font-size:.85em;float:left;margin-left:-.87em;padding-right:.23em;margin-top:.125em;opacity:0}a.header-anchor:focus,a.header-anchor:hover{text-decoration:none}.line-number,code,kbd{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}ol,p,ul{line-height:1.7}hr{border:0;border-top:1px solid #eaecef}table{border-collapse:collapse;margin:1rem 0;display:block;overflow-x:auto}tr{border-top:1px solid #dfe2e5}tr:nth-child(2n){background-color:#f6f8fa}td,th{border:1px solid #dfe2e5;padding:.6em 1em}.theme-container.sidebar-open .sidebar-mask{display:block}.theme-container.no-navbar .theme-default-content:not(.custom)>h1,.theme-container.no-navbar h2,.theme-container.no-navbar h3,.theme-container.no-navbar h4,.theme-container.no-navbar h5,.theme-container.no-navbar h6{margin-top:1.5rem;padding-top:0}.theme-container.no-navbar .sidebar{top:0}@media (min-width:720px){.theme-container.no-sidebar .sidebar{display:none}.theme-container.no-sidebar .page{padding-left:0}}@media (max-width:959px){.sidebar{font-size:15px;width:16.4rem}.page{padding-left:16.4rem}}@media (max-width:719px){.sidebar{top:0;padding-top:3.6rem;transform:translateX(-100%);transition:transform .2s ease}.page{padding-left:0}.theme-container.sidebar-open .sidebar{transform:translateX(0)}.theme-container.no-navbar .sidebar{padding-top:0}}@media (max-width:480px){h1{font-size:1.9rem}.theme-default-content div[class*=language-]{margin:.85rem -1.5rem;border-radius:0}}img+span>.icon.outbound{display:none}body{font-family:Raleway;font-weight:400}strong{font-weight:550}h1,h2,h3,h4,h5,h6{font-family:IstokWeb;font-weight:400}.custom-block.tip{border-color:#23c8d2;background-color:#f7f7f3;color:#292828}.custom-block.tip .custom-block-title{color:#292828}.custom-block.warning{border-color:#f1f440;background-color:#f7f7f3;color:#292828}.custom-block.warning .custom-block-title{color:#292828}.custom-block.danger{border-color:#f5775b;background-color:#f7f7f3;color:#292828}.custom-block.danger .custom-block-title{color:#292828}.sidebar nav.nav-links div.nav-item{display:none}span.badge{font-family:Raleway;font-weight:500}.theme-code-group .token.string{color:#7ec699}.theme-code-group button.theme-code-group__nav-tab.theme-code-group__nav-tab-active{border-color:#7ec699}.navbar span.site-name{font-family:IstokWeb;font-weight:500;font-size:1.6em}p.sidebar-heading{font-weight:500;font-size:1em}a.sidebar-link.active{font-weight:500!important}@font-face{font-family:Raleway;src:url(/fonts/Raleway-VariableFont_wght.ttf)}@font-face{font-family:IstokWeb;src:url(/fonts/IstokWeb-Regular.ttf);font-weight:400}#nprogress{pointer-events:none}#nprogress .bar{background:#07aab4;position:fixed;z-index:1031;top:0;left:0;width:100%;height:2px}#nprogress .peg{display:block;position:absolute;right:0;width:100px;height:100%;box-shadow:0 0 10px #07aab4,0 0 5px #07aab4;opacity:1;transform:rotate(3deg) translateY(-4px)}#nprogress .spinner{display:block;position:fixed;z-index:1031;top:15px;right:15px}#nprogress .spinner-icon{width:18px;height:18px;box-sizing:border-box;border-color:#07aab4 transparent transparent #07aab4;border-style:solid;border-width:2px;border-radius:50%;animation:nprogress-spinner .4s linear infinite}.nprogress-custom-parent{overflow:hidden;position:relative}.nprogress-custom-parent #nprogress .bar,.nprogress-custom-parent #nprogress .spinner{position:absolute}@keyframes nprogress-spinner{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.icon.outbound{color:#aaa;display:inline-block;vertical-align:middle;position:relative;top:-1px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.algolia-search-wrapper>span{vertical-align:middle}.algolia-search-wrapper .algolia-autocomplete{line-height:normal}.algolia-search-wrapper .algolia-autocomplete .ds-dropdown-menu{background-color:#fff;border:1px solid #999;border-radius:4px;font-size:16px;margin:6px 0 0;padding:4px;text-align:left}.algolia-search-wrapper .algolia-autocomplete .ds-dropdown-menu:before{border-color:#999}.algolia-search-wrapper .algolia-autocomplete .ds-dropdown-menu [class*=ds-dataset-]{border:none;padding:0}.algolia-search-wrapper .algolia-autocomplete .ds-dropdown-menu .ds-suggestions{margin-top:0}.algolia-search-wrapper .algolia-autocomplete .ds-dropdown-menu .ds-suggestion{border-bottom:1px solid #eaecef}.algolia-search-wrapper .algolia-autocomplete .algolia-docsearch-suggestion--highlight{color:#2c815b}.algolia-search-wrapper .algolia-autocomplete .algolia-docsearch-suggestion{border-color:#eaecef;padding:0}.algolia-search-wrapper .algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--category-header{padding:5px 10px;margin-top:0;background:#07aab4;color:#fff;font-weight:600}.algolia-search-wrapper .algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--category-header .algolia-docsearch-suggestion--highlight{background:hsla(0,0%,100%,.6)}.algolia-search-wrapper .algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--wrapper{padding:0}.algolia-search-wrapper .algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--title{font-weight:600;margin-bottom:0;color:#292828}.algolia-search-wrapper .algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--subcategory-column{vertical-align:top;padding:5px 7px 5px 5px;border-color:#eaecef;background:#f1f3f5}.algolia-search-wrapper .algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--subcategory-column:after{display:none}.algolia-search-wrapper .algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--subcategory-column-text{color:#555}.algolia-search-wrapper .algolia-autocomplete .algolia-docsearch-footer{border-color:#eaecef}.algolia-search-wrapper .algolia-autocomplete .ds-cursor .algolia-docsearch-suggestion--content{background-color:#e7edf3!important;color:#292828}@media (min-width:719px){.algolia-search-wrapper .algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--subcategory-column{float:none;width:150px;min-width:150px;display:table-cell}.algolia-search-wrapper .algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--content{float:none;display:table-cell;width:100%;vertical-align:top}.algolia-search-wrapper .algolia-autocomplete .algolia-docsearch-suggestion .ds-dropdown-menu{min-width:515px!important}}@media (max-width:719px){.algolia-search-wrapper .ds-dropdown-menu{min-width:calc(100vw - 4rem)!important;max-width:calc(100vw - 4rem)!important}.algolia-search-wrapper .algolia-docsearch-suggestion--wrapper{padding:5px 7px 5px 5px!important}.algolia-search-wrapper .algolia-docsearch-suggestion--subcategory-column{padding:0!important;background:#fff!important}.algolia-search-wrapper .algolia-docsearch-suggestion--subcategory-column-text:after{content:" > ";font-size:10px;line-height:14.4px;display:inline-block;width:5px;margin:-3px 3px 0;vertical-align:middle}}.home{padding:3.6rem 2rem 0;max-width:960px;margin:0 auto;display:block}.home .hero{text-align:center}.home .hero img{max-width:100%;max-height:280px;display:block;margin:3rem auto 1.5rem}.home .hero h1{font-size:3rem}.home .hero .action,.home .hero .description,.home .hero h1{margin:1.8rem auto}.home .hero .description{max-width:35rem;font-size:1.6rem;line-height:1.3;color:#807d7d}.home .hero .action-button{display:inline-block;font-size:1.2rem;color:#fff;background-color:#07aab4;padding:.8rem 1.6rem;border-radius:4px;transition:background-color .1s ease;box-sizing:border-box;border-bottom:1px solid #0699a2}.home .hero .action-button:hover{background-color:#08c7d3}.home .features{border-top:1px solid #eaecef;padding:1.2rem 0;margin-top:2.5rem;display:flex;flex-wrap:wrap;align-items:flex-start;align-content:stretch;justify-content:space-between}.home .feature{flex-grow:1;flex-basis:30%;max-width:30%}.home .feature h2{font-size:1.4rem;font-weight:500;border-bottom:none;padding-bottom:0;color:#3f3d3d}.home .feature p{color:#5f5d5d}.home .footer{padding:2.5rem;border-top:1px solid #eaecef;text-align:center;color:#5f5d5d}@media (max-width:719px){.home .features{flex-direction:column}.home .feature{max-width:100%;padding:0 2.5rem}}@media (max-width:480px){.home{padding-left:1.5rem;padding-right:1.5rem}.home .hero img{max-height:210px;margin:2rem auto 1.2rem}.home .hero h1{font-size:2rem}.home .hero .action,.home .hero .description,.home .hero h1{margin:1.2rem auto}.home .hero .description{font-size:1.2rem}.home .hero .action-button{font-size:1rem;padding:.6rem 1.2rem}.home .feature h2{font-size:1.25rem}}.search-box{display:inline-block;position:relative;margin-right:1rem}.search-box input{cursor:text;width:10rem;height:2rem;color:#5f5d5d;display:inline-block;border:1px solid #cfd4db;border-radius:2rem;font-size:.9rem;line-height:2rem;padding:0 .5rem 0 2rem;outline:none;transition:all .2s ease;background:#fff url(/assets/img/search.83621669.svg) .6rem .5rem no-repeat;background-size:1rem}.search-box input:focus{cursor:auto;border-color:#07aab4}.search-box .suggestions{background:#fff;width:20rem;position:absolute;top:2rem;border:1px solid #cfd4db;border-radius:6px;padding:.4rem;list-style-type:none}.search-box .suggestions.align-right{right:0}.search-box .suggestion{line-height:1.4;padding:.4rem .6rem;border-radius:4px;cursor:pointer}.search-box .suggestion a{white-space:normal;color:#757272}.search-box .suggestion a .page-title{font-weight:600}.search-box .suggestion a .header{font-size:.9em;margin-left:.25em}.search-box .suggestion.focused{background-color:#f3f4f5}.search-box .suggestion.focused a{color:#07aab4}@media (max-width:959px){.search-box input{cursor:pointer;width:0;border-color:transparent;position:relative}.search-box input:focus{cursor:text;left:0;width:10rem}}@media (-ms-high-contrast:none){.search-box input{height:2rem}}@media (max-width:959px) and (min-width:719px){.search-box .suggestions{left:0}}@media (max-width:719px){.search-box{margin-right:0}.search-box input{left:1rem}.search-box .suggestions{right:0}}@media (max-width:480px){.search-box .suggestions{width:calc(100vw - 4rem)}.search-box input:focus{width:8rem}}.sidebar-button{cursor:pointer;display:none;width:1.25rem;height:1.25rem;position:absolute;padding:.6rem;top:.6rem;left:1rem}.sidebar-button .icon{display:block;width:1.25rem;height:1.25rem}@media (max-width:719px){.sidebar-button{display:block}}.dropdown-enter,.dropdown-leave-to{height:0!important}.badge[data-v-6eb0829b]{display:inline-block;font-size:14px;height:18px;line-height:18px;border-radius:3px;padding:0 6px;color:#fff;background-color:#42b983}.badge.green[data-v-6eb0829b],.badge.tip[data-v-6eb0829b]{background-color:#23c8d2}.badge.error[data-v-6eb0829b]{background-color:#f5775b}.badge.warn[data-v-6eb0829b],.badge.warning[data-v-6eb0829b],.badge.yellow[data-v-6eb0829b]{background-color:#e9c400}.badge+.badge[data-v-6eb0829b]{margin-left:5px}.theme-code-block[data-v-311ec9b4]{display:none}.theme-code-block__active[data-v-311ec9b4]{display:block}.theme-code-block>pre[data-v-311ec9b4]{background-color:orange}.theme-code-group__nav[data-v-5cad0a2e]{margin-bottom:-35px;background-color:#282c34;padding-bottom:22px;border-top-left-radius:6px;border-top-right-radius:6px;padding-left:10px;padding-top:10px}.theme-code-group__ul[data-v-5cad0a2e]{margin:auto 0;padding-left:0;display:inline-flex;list-style:none}.theme-code-group__nav-tab[data-v-5cad0a2e]{border:0;padding:5px;cursor:pointer;background-color:transparent;font-size:.85em;line-height:1.4;color:hsla(0,0%,100%,.9);font-weight:600}.theme-code-group__nav-tab-active[data-v-5cad0a2e]{border-bottom:1px solid #42b983}.pre-blank[data-v-5cad0a2e]{color:#42b983}a.button[data-v-439d4a3b]{display:block;width:114px;height:38px;line-height:38px;background-color:#23c8d2;border-radius:6px;color:#fff;text-align:center;font-weight:600}.column[data-v-71066fea]{margin-bottom:22px}@media only screen and (min-width:719px){.column.left[data-v-71066fea]{width:33%;margin-right:5%}.column.right[data-v-71066fea]{width:62%}}@media only screen and (min-width:719px){.columns[data-v-6d930324]{display:flex}}.contributor[data-v-074475b8]{width:3.26em;height:3.26em;border-radius:50%;text-indent:-9999px;display:inline-block;background:no-repeat url(/assets/img/contributors.ee23f7de.jpg);background-size:auto 102%;margin:0 .67em .67em 0;border:2px solid var(--second)}@media only screen and (min-width:414px){.contributor[data-v-074475b8]{width:3.625em;height:3.625em;margin:0 .8em .8em 0}}div[data-v-20681dd8]{height:200px;box-sizing:border-box;padding:28px;border-radius:8px;position:relative;color:#fff;margin-bottom:25px}@media only screen and (min-width:480px){div[data-v-20681dd8]{height:160px}}@media only screen and (min-width:719px){div[data-v-20681dd8]{width:31.25%;height:225px;margin-right:3%;margin-bottom:0}}div h3[data-v-20681dd8]{margin:0}@media only screen and (min-width:959px){div h3[data-v-20681dd8]{font-size:1.75em}}div h3 .header-anchor[data-v-20681dd8]{display:none}@media only screen and (min-width:959px){div p[data-v-20681dd8]{font-size:1.25em}}div.less-code[data-v-20681dd8]{background-color:#23c8d2}div.fast-secure[data-v-20681dd8]{background-color:#409cff}div.multi-spec[data-v-20681dd8]{background-color:#f5775b}@media only screen and (min-width:719px){div[data-v-20681dd8]:last-child{margin-right:0}}a[data-v-20681dd8]{position:absolute;bottom:24px;right:24px;color:#fff}.features[data-v-30c230c6]{padding:60px 0}@media only screen and (min-width:719px){.features[data-v-30c230c6]{display:flex}}@media only screen and (min-width:719px){div[data-v-f7c18a96]{width:25%}}p a[data-v-f7c18a96]{color:#292828;font-weight:400}p a[data-v-f7c18a96]:hover{text-decoration:underline}@media only screen and (max-width:719px){p[data-v-f7c18a96]{margin:0;line-height:30px}}.column img[data-v-f7c18a96]{display:block;margin:0 auto}.column.ajv img[data-v-f7c18a96]{margin:0;width:100px}@media only screen and (max-width:719px){.column.ajv img[data-v-f7c18a96]{margin-bottom:34px}}.column.links a[data-v-f7c18a96]{color:#292828;font-weight:400}@media only screen and (max-width:719px){.column.sponsors a[data-v-f7c18a96]:first-child{display:block;margin-top:80px}}.column.sponsors img[data-v-f7c18a96]{width:140px;padding:0 20px 15px}.footer-columns[data-v-de1d7950]{padding:20px 0 60px;border-bottom:1px solid #c4c4c4}@media only screen and (min-width:719px){.footer-columns[data-v-de1d7950]{display:flex}}span[data-v-3ac601d9]{vertical-align:-8px;padding-left:20px}@media only screen and (max-width:719px){span[data-v-3ac601d9]{vertical-align:-21px}}.hero-section[data-v-37c67372]{width:100%;padding:3.6rem 0 50px;overflow:hidden;background:linear-gradient(304.33deg,hsla(0,0%,92.9%,.31) -7.48%,#c6e1ff 30.07%,hsla(0,0%,92.9%,.26) 82.76%)}.hero-section .section-content[data-v-37c67372]{position:relative;max-width:1000px;padding:0 50px;margin:0 auto}@media only screen and (max-width:719px){.hero-section .section-content[data-v-37c67372]{padding:0 40px}}@media only screen and (max-width:480px){.hero-section .section-content[data-v-37c67372]{padding:0 30px}}.hero-section .section-content .section-content-wrapper[data-v-37c67372]{position:relative;z-index:2}.hero-section .hero-image[data-v-37c67372]{position:absolute;z-index:1;width:658px;top:-400px;left:-25px}@media only screen and (min-width:480px){.hero-section .hero-image[data-v-37c67372]{width:823px;top:-500px;left:50px}}@media only screen and (min-width:719px){.hero-section .hero-image[data-v-37c67372]{top:-430px;left:330px}}@media only screen and (min-width:959px){.hero-section .hero-image[data-v-37c67372]{width:1097px;top:-575px;left:425px}}.hero-section .header-anchor[data-v-37c67372]{display:none}.hero-section h1[data-v-37c67372]{font-size:2em;margin-top:200px}.hero-section h2[data-v-37c67372]{border-bottom:none}@media only screen and (min-width:480px){.hero-section h1[data-v-37c67372]{font-size:3em}.hero-section h2[data-v-37c67372]{font-size:1.75em}}@media only screen and (min-width:719px){.hero-section h1[data-v-37c67372],.hero-section h2[data-v-37c67372]{margin-left:48px}}@media only screen and (min-width:959px){.hero-section h1[data-v-37c67372]{font-size:4em}.hero-section h2[data-v-37c67372]{font-size:2.25em}.hero-section h1[data-v-37c67372],.hero-section h2[data-v-37c67372]{margin-left:64px}}.homepage[data-v-07ee638e]{padding:0;box-sizing:content-box}.home-section[data-v-aed41194]{width:100%;padding:3.6rem 0 50px}.home-section .section-content[data-v-aed41194]{max-width:1000px;padding:0 50px;margin:0 auto}@media only screen and (max-width:719px){.home-section .section-content[data-v-aed41194]{padding:0 40px}}@media only screen and (max-width:480px){.home-section .section-content[data-v-aed41194]{padding:0 30px}}.home-section[data-v-aed41194] .theme-code-group button{position:relative;outline:none;z-index:1}.home-section.contributors[data-v-aed41194],.home-section.footer[data-v-aed41194],.home-section.testimonials[data-v-aed41194]{background:linear-gradient(295.26deg,hsla(0,0%,91%,.8) 26.65%,hsla(0,0%,100%,.04) 83.48%)}.home-section.footer p[data-v-aed41194]{padding:20px 0 0;text-align:center;color:#292828}.home-section.footer p a[data-v-aed41194]{color:#292828;font-weight:400}.home-section.footer p a[data-v-aed41194]:hover{text-decoration:underline}.post[data-v-a228e400]{display:flex;border-bottom:1px solid #eaecef}.post[data-v-a228e400]:last-child{border-bottom:none}.post a.read-more[data-v-a228e400]{float:right;margin:28px 0}p.subscribe[data-v-a228e400]{margin-top:2em}p.subscribe a.all-news[data-v-a228e400]{display:block;margin-top:1rem}@media only screen and (min-width:480px){p.subscribe a.all-news[data-v-a228e400]{display:inline-block;float:right;margin-top:0}}.post-meta>div[data-v-f7ce3066]{display:inline-flex}.pub-date[data-v-f7ce3066]{color:grey}.projects p[data-v-7ef3dfe8]{max-width:1100px;padding:0}.projects img[data-v-7ef3dfe8]{display:inline-block;max-width:240px;height:40px;line-height:40px;vertical-align:middle}@media only screen and (max-width:719px){.projects img[data-v-7ef3dfe8]{max-width:160px;height:30px;line-height:30px}}.projects a[data-v-7ef3dfe8]{display:inline-block;height:40px;line-height:40px;vertical-align:middle;margin:0 36px 30px 0;font-size:28px;font-weight:500;color:#292828}@media only screen and (max-width:719px){.projects a[data-v-7ef3dfe8]{margin:0 24px 20px 0;height:30px;line-height:30px;font-size:20px}}.projects a[data-v-7ef3dfe8]:hover{text-decoration:none}.projects a span[data-v-7ef3dfe8]{display:none}.sponsors[data-v-c1b00a8c]{max-width:800px;margin:0 auto}.sponsors h2[data-v-c1b00a8c]{margin-left:0;text-decoration:none}.sponsors h2 a.header-anchor[data-v-c1b00a8c]{width:auto;margin-right:0}.sponsors p[data-v-c1b00a8c]{font-size:24px}.sponsors.bronze img[data-v-c1b00a8c],.sponsors.gold img[data-v-c1b00a8c],.sponsors.platinum img[data-v-c1b00a8c]{width:100%}.sponsors.bronze a[data-v-c1b00a8c],.sponsors.gold a[data-v-c1b00a8c],.sponsors.platinum a[data-v-c1b00a8c]{margin-bottom:10px;display:inline-block}@media only screen and (min-width:480px){.sponsors.bronze a[data-v-c1b00a8c],.sponsors.gold a[data-v-c1b00a8c],.sponsors.platinum a[data-v-c1b00a8c]{margin-bottom:0}}.sponsors.bronze a[data-v-c1b00a8c]:last-child,.sponsors.gold a[data-v-c1b00a8c]:last-child,.sponsors.platinum a[data-v-c1b00a8c]:last-child{margin-right:0}.sponsors.platinum a[data-v-c1b00a8c]{width:100%;display:block}@media only screen and (min-width:480px){.sponsors.platinum a[data-v-c1b00a8c]{display:inline-block;width:45%;margin-right:8%}}.sponsors.gold a[data-v-c1b00a8c]{width:45%;margin-right:4%}@media only screen and (min-width:480px){.sponsors.gold a[data-v-c1b00a8c]{width:31%;margin-right:2%}}.sponsors.bronze a[data-v-c1b00a8c]{width:45%;margin-right:4%}@media only screen and (min-width:480px){.sponsors.bronze a[data-v-c1b00a8c]{width:22%;margin-right:3%}}form[data-v-410e8fc2]{display:inline-block}label[data-v-410e8fc2]{display:block;margin-bottom:1rem}@media only screen and (min-width:719px){label[data-v-410e8fc2]{display:inline-block;margin-bottom:0}}button[data-v-410e8fc2],input[data-v-410e8fc2]{font-family:Raleway;font-size:16px;border:0 solid;outline:none}input[data-v-410e8fc2]{border:1px solid #cfd4db;height:2rem;width:180px;border-radius:2rem;padding:0 .5rem;margin:0 .5rem 0 0}input[data-v-410e8fc2]:focus{border-color:#07aab4}@media only screen and (min-width:719px){input[data-v-410e8fc2]{width:200px;margin:0 1rem}}button[data-v-410e8fc2]{width:114px;height:36px;line-height:36px;padding-top:0;background-color:#23c8d2;border-radius:6px;color:#fff;text-align:center;font-weight:600;display:block;margin-top:1em}@media only screen and (min-width:414px){button[data-v-410e8fc2]{display:inline-block;margin-top:0}}div.testimonial-content[data-v-2c05e654]{background-position:50%;overflow:hidden;width:280px;background-repeat:no-repeat}div.testimonial-content.blue[data-v-2c05e654]{background-image:url(/assets/img/testimonials-blue.868231a8.svg)}div.testimonial-content.green[data-v-2c05e654]{background-image:url(/assets/img/testimonials-green.6fdaa89c.svg)}div.testimonial-content p[data-v-2c05e654]{margin:.9em 0;font-size:15px}@media only screen and (max-width:374px){div.testimonial-content.blue[data-v-2c05e654],div.testimonial-content.green[data-v-2c05e654]{background-image:none;padding:0}div.testimonial-content.blue p[data-v-2c05e654],div.testimonial-content.green p[data-v-2c05e654]{font-size:15px}}@media only screen and (max-width:500px){div.testimonial-content[data-v-2c05e654]{width:100%;background-size:350px 156px;padding:0 calc(50% - 100px);box-sizing:border-box}div.testimonial-content p[data-v-2c05e654]{font-size:12px}}@media only screen and (min-width:500px){div.testimonial-content[data-v-2c05e654]{height:212px;padding:0 75px;margin:40px auto 0}}@media only screen and (min-width:959px){div.testimonial-content[data-v-2c05e654]{padding:0 calc(25% - 140px)}}.header-anchor[data-v-2c05e654]{display:none}.testimonials[data-v-729b0721]{padding:20px 0}@media only screen and (min-width:959px){.testimonials[data-v-729b0721]{display:flex}}.searchbox{display:inline-block;position:relative;width:200px;height:32px!important;white-space:nowrap;box-sizing:border-box;visibility:visible!important}.searchbox .algolia-autocomplete{display:block;width:100%;height:100%}.searchbox__wrapper{width:100%;height:100%;z-index:999;position:relative}.searchbox__input{display:inline-block;box-sizing:border-box;transition:box-shadow .4s ease,background .4s ease;border:0;border-radius:16px;box-shadow:inset 0 0 0 1px #ccc;background:#fff!important;padding:0 26px 0 32px;width:100%;height:100%;vertical-align:middle;white-space:normal;font-size:12px;-webkit-appearance:none;-moz-appearance:none;appearance:none}.searchbox__input::-webkit-search-cancel-button,.searchbox__input::-webkit-search-decoration,.searchbox__input::-webkit-search-results-button,.searchbox__input::-webkit-search-results-decoration{display:none}.searchbox__input:hover{box-shadow:inset 0 0 0 1px #b3b3b3}.searchbox__input:active,.searchbox__input:focus{outline:0;box-shadow:inset 0 0 0 1px #aaa;background:#fff}.searchbox__input::-moz-placeholder{color:#aaa}.searchbox__input::placeholder{color:#aaa}.searchbox__submit{position:absolute;top:0;margin:0;border:0;border-radius:16px 0 0 16px;background-color:rgba(69,142,225,0);padding:0;width:32px;height:100%;vertical-align:middle;text-align:center;font-size:inherit;-webkit-user-select:none;-moz-user-select:none;user-select:none;right:inherit;left:0}.searchbox__submit:before{display:inline-block;margin-right:-4px;height:100%;vertical-align:middle;content:""}.searchbox__submit:active,.searchbox__submit:hover{cursor:pointer}.searchbox__submit:focus{outline:0}.searchbox__submit svg{width:14px;height:14px;vertical-align:middle;fill:#6d7e96}.searchbox__reset{display:block;position:absolute;top:8px;right:8px;margin:0;border:0;background:none;cursor:pointer;padding:0;font-size:inherit;-webkit-user-select:none;-moz-user-select:none;user-select:none;fill:rgba(0,0,0,.5)}.searchbox__reset.hide{display:none}.searchbox__reset:focus{outline:0}.searchbox__reset svg{display:block;margin:4px;width:8px;height:8px}.searchbox__input:valid~.searchbox__reset{display:block;animation-name:sbx-reset-in;animation-duration:.15s}@keyframes sbx-reset-in{0%{transform:translate3d(-20%,0,0);opacity:0}to{transform:none;opacity:1}}.algolia-autocomplete.algolia-autocomplete-right .ds-dropdown-menu{right:0!important;left:inherit!important}.algolia-autocomplete.algolia-autocomplete-right .ds-dropdown-menu:before{right:48px}.algolia-autocomplete.algolia-autocomplete-left .ds-dropdown-menu{left:0!important;right:inherit!important}.algolia-autocomplete.algolia-autocomplete-left .ds-dropdown-menu:before{left:48px}.algolia-autocomplete .ds-dropdown-menu{top:-6px;border-radius:4px;margin:6px 0 0;padding:0;text-align:left;height:auto;position:relative;background:transparent;border:none;z-index:999;max-width:600px;min-width:500px;box-shadow:0 1px 0 0 rgba(0,0,0,.2),0 2px 3px 0 rgba(0,0,0,.1)}.algolia-autocomplete .ds-dropdown-menu:before{display:block;position:absolute;content:"";width:14px;height:14px;background:#fff;z-index:1000;top:-7px;border-top:1px solid #d9d9d9;border-right:1px solid #d9d9d9;transform:rotate(-45deg);border-radius:2px}.algolia-autocomplete .ds-dropdown-menu .ds-suggestions{position:relative;z-index:1000;margin-top:8px}.algolia-autocomplete .ds-dropdown-menu .ds-suggestions a:hover{text-decoration:none}.algolia-autocomplete .ds-dropdown-menu .ds-suggestion{cursor:pointer}.algolia-autocomplete .ds-dropdown-menu .ds-suggestion.ds-cursor .algolia-docsearch-suggestion.suggestion-layout-simple,.algolia-autocomplete .ds-dropdown-menu .ds-suggestion.ds-cursor .algolia-docsearch-suggestion:not(.suggestion-layout-simple) .algolia-docsearch-suggestion--content{background-color:rgba(69,142,225,.05)}.algolia-autocomplete .ds-dropdown-menu [class^=ds-dataset-]{position:relative;border:1px solid #d9d9d9;background:#fff;border-radius:4px;overflow:auto;padding:0 8px 8px}.algolia-autocomplete .ds-dropdown-menu *{box-sizing:border-box}.algolia-autocomplete .algolia-docsearch-suggestion{display:block;position:relative;padding:0 8px;background:#fff;color:#02060c;overflow:hidden}.algolia-autocomplete .algolia-docsearch-suggestion--highlight{color:#174d8c;background:rgba(143,187,237,.1);padding:.1em .05em}.algolia-autocomplete .algolia-docsearch-suggestion--category-header .algolia-docsearch-suggestion--category-header-lvl0 .algolia-docsearch-suggestion--highlight,.algolia-autocomplete .algolia-docsearch-suggestion--category-header .algolia-docsearch-suggestion--category-header-lvl1 .algolia-docsearch-suggestion--highlight,.algolia-autocomplete .algolia-docsearch-suggestion--text .algolia-docsearch-suggestion--highlight{padding:0 0 1px;background:inherit;box-shadow:inset 0 -2px 0 0 rgba(69,142,225,.8);color:inherit}.algolia-autocomplete .algolia-docsearch-suggestion--content{display:block;float:right;width:70%;position:relative;padding:5.33333px 0 5.33333px 10.66667px;cursor:pointer}.algolia-autocomplete .algolia-docsearch-suggestion--content:before{content:"";position:absolute;display:block;top:0;height:100%;width:1px;background:#ddd;left:-1px}.algolia-autocomplete .algolia-docsearch-suggestion--category-header{position:relative;border-bottom:1px solid #ddd;display:none;margin-top:8px;padding:4px 0;font-size:1em;color:#33363d}.algolia-autocomplete .algolia-docsearch-suggestion--wrapper{width:100%;float:left;padding:8px 0 0}.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-column{float:left;width:30%;text-align:right;position:relative;padding:5.33333px 10.66667px;color:#a4a7ae;font-size:.9em;word-wrap:break-word}.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-column:before{content:"";position:absolute;display:block;top:0;height:100%;width:1px;background:#ddd;right:0}.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-inline{display:none}.algolia-autocomplete .algolia-docsearch-suggestion--title{margin-bottom:4px;color:#02060c;font-size:.9em;font-weight:700}.algolia-autocomplete .algolia-docsearch-suggestion--text{display:block;line-height:1.2em;font-size:.85em;color:#63676d}.algolia-autocomplete .algolia-docsearch-suggestion--no-results{width:100%;padding:8px 0;text-align:center;font-size:1.2em}.algolia-autocomplete .algolia-docsearch-suggestion--no-results:before{display:none}.algolia-autocomplete .algolia-docsearch-suggestion code{padding:1px 5px;font-size:90%;border:none;color:#222;background-color:#ebebeb;border-radius:3px;font-family:Menlo,Monaco,Consolas,Courier New,monospace}.algolia-autocomplete .algolia-docsearch-suggestion code .algolia-docsearch-suggestion--highlight{background:none}.algolia-autocomplete .algolia-docsearch-suggestion.algolia-docsearch-suggestion__main .algolia-docsearch-suggestion--category-header,.algolia-autocomplete .algolia-docsearch-suggestion.algolia-docsearch-suggestion__secondary{display:block}@media (min-width:768px){.algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--subcategory-column{display:block}}@media (max-width:768px){.algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--subcategory-column{display:inline-block;width:auto;float:left;padding:0;color:#02060c;font-size:.9em;font-weight:700;text-align:left;opacity:.5}.algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--subcategory-column:before{display:none}.algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--subcategory-column:after{content:"|"}.algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--content{display:inline-block;width:auto;text-align:left;float:left;padding:0}.algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--content:before{display:none}}.algolia-autocomplete .suggestion-layout-simple.algolia-docsearch-suggestion{border-bottom:1px solid #eee;padding:8px;margin:0}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--content{width:100%;padding:0}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--content:before{display:none}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--category-header{margin:0;padding:0;display:block;width:100%;border:none}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--category-header-lvl0,.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--category-header-lvl1{opacity:.6;font-size:.85em}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--category-header-lvl1:before{background-image:url('data:image/svg+xml;utf8,');content:"";width:10px;height:10px;display:inline-block}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--wrapper{width:100%;float:left;margin:0;padding:0}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--duplicate-content,.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--subcategory-inline{display:none!important}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--title{margin:0;color:#458ee1;font-size:.9em;font-weight:400}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--title:before{content:"#";font-weight:700;color:#458ee1;display:inline-block}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--text{margin:4px 0 0;display:block;line-height:1.4em;padding:5.33333px 8px;background:#f8f8f8;font-size:.85em;opacity:.8}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--text .algolia-docsearch-suggestion--highlight{color:#3f4145;font-weight:700;box-shadow:none}.algolia-autocomplete .algolia-docsearch-footer{width:134px;height:20px;z-index:2000;margin-top:10.66667px;float:right;font-size:0;line-height:0}.algolia-autocomplete .algolia-docsearch-footer--logo{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='168' height='24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cpath d='M78.988.938h16.594a2.968 2.968 0 012.966 2.966V20.5a2.967 2.967 0 01-2.966 2.964H78.988a2.967 2.967 0 01-2.966-2.964V3.897A2.961 2.961 0 0178.988.938zm41.937 17.866c-4.386.02-4.386-3.54-4.386-4.106l-.007-13.336 2.675-.424v13.254c0 .322 0 2.358 1.718 2.364v2.248zm-10.846-2.18c.821 0 1.43-.047 1.855-.129v-2.719a6.334 6.334 0 00-1.574-.199 5.7 5.7 0 00-.897.069 2.699 2.699 0 00-.814.24c-.24.116-.439.28-.582.491-.15.212-.219.335-.219.656 0 .628.219.991.616 1.23s.938.362 1.615.362zm-.233-9.7c.883 0 1.629.109 2.231.328.602.218 1.088.525 1.444.915.363.396.609.922.76 1.483.157.56.232 1.175.232 1.85v6.874a32.5 32.5 0 01-1.868.314c-.834.123-1.772.185-2.813.185-.69 0-1.327-.069-1.895-.198a4.001 4.001 0 01-1.471-.636 3.085 3.085 0 01-.951-1.134c-.226-.465-.343-1.12-.343-1.803 0-.656.13-1.073.384-1.525a3.24 3.24 0 011.047-1.106c.445-.287.95-.492 1.532-.615a8.8 8.8 0 011.82-.185 8.404 8.404 0 011.972.24v-.438c0-.307-.035-.6-.11-.874a1.88 1.88 0 00-.384-.73 1.784 1.784 0 00-.724-.493 3.164 3.164 0 00-1.143-.205c-.616 0-1.177.075-1.69.164a7.735 7.735 0 00-1.26.307l-.321-2.192c.335-.117.834-.233 1.478-.349a10.98 10.98 0 012.073-.178zm52.842 9.626c.822 0 1.43-.048 1.854-.13V13.7a6.347 6.347 0 00-1.574-.199c-.294 0-.595.021-.896.069a2.7 2.7 0 00-.814.24 1.46 1.46 0 00-.582.491c-.15.212-.218.335-.218.656 0 .628.218.991.615 1.23.404.245.938.362 1.615.362zm-.226-9.694c.883 0 1.629.108 2.231.327.602.219 1.088.526 1.444.915.355.39.609.923.759 1.483a6.8 6.8 0 01.233 1.852v6.873c-.41.088-1.034.19-1.868.314-.834.123-1.772.184-2.813.184-.69 0-1.327-.068-1.895-.198a4.001 4.001 0 01-1.471-.635 3.085 3.085 0 01-.951-1.134c-.226-.465-.343-1.12-.343-1.804 0-.656.13-1.073.384-1.524.26-.45.608-.82 1.047-1.107.445-.286.95-.491 1.532-.614a8.803 8.803 0 012.751-.13c.329.034.671.096 1.04.185v-.437a3.3 3.3 0 00-.109-.875 1.873 1.873 0 00-.384-.731 1.784 1.784 0 00-.724-.492 3.165 3.165 0 00-1.143-.205c-.616 0-1.177.075-1.69.164a7.75 7.75 0 00-1.26.307l-.321-2.193c.335-.116.834-.232 1.478-.348a11.633 11.633 0 012.073-.177zm-8.034-1.271a1.626 1.626 0 01-1.628-1.62c0-.895.725-1.62 1.628-1.62.904 0 1.63.725 1.63 1.62 0 .895-.733 1.62-1.63 1.62zm1.348 13.22h-2.689V7.27l2.69-.423v11.956zm-4.714 0c-4.386.02-4.386-3.54-4.386-4.107l-.008-13.336 2.676-.424v13.254c0 .322 0 2.358 1.718 2.364v2.248zm-8.698-5.903c0-1.156-.253-2.119-.746-2.788-.493-.677-1.183-1.01-2.067-1.01-.882 0-1.574.333-2.065 1.01-.493.676-.733 1.632-.733 2.788 0 1.168.246 1.953.74 2.63.492.683 1.183 1.018 2.066 1.018.882 0 1.574-.342 2.067-1.019.492-.683.738-1.46.738-2.63zm2.737-.007c0 .902-.13 1.584-.397 2.33a5.52 5.52 0 01-1.128 1.906 4.986 4.986 0 01-1.752 1.223c-.685.286-1.739.45-2.265.45-.528-.006-1.574-.157-2.252-.45a5.096 5.096 0 01-1.744-1.223c-.487-.527-.863-1.162-1.137-1.906a6.345 6.345 0 01-.41-2.33c0-.902.123-1.77.397-2.508a5.554 5.554 0 011.15-1.892 5.133 5.133 0 011.75-1.216c.679-.287 1.425-.423 2.232-.423.808 0 1.553.142 2.237.423a4.88 4.88 0 011.753 1.216 5.644 5.644 0 011.135 1.892c.287.738.431 1.606.431 2.508zm-20.138 0c0 1.12.246 2.363.738 2.882.493.52 1.13.78 1.91.78.424 0 .828-.062 1.204-.178.377-.116.677-.253.917-.417V9.33a10.476 10.476 0 00-1.766-.226c-.971-.028-1.71.37-2.23 1.004-.513.636-.773 1.75-.773 2.788zm7.438 5.274c0 1.824-.466 3.156-1.404 4.004-.936.846-2.367 1.27-4.296 1.27-.705 0-2.17-.137-3.34-.396l.431-2.118c.98.205 2.272.26 2.95.26 1.074 0 1.84-.219 2.299-.656.459-.437.684-1.086.684-1.948v-.437a8.07 8.07 0 01-1.047.397c-.43.13-.93.198-1.492.198-.739 0-1.41-.116-2.018-.349a4.206 4.206 0 01-1.567-1.025c-.431-.45-.774-1.017-1.013-1.694-.24-.677-.363-1.885-.363-2.773 0-.834.13-1.88.384-2.577.26-.696.629-1.298 1.129-1.796.493-.498 1.095-.881 1.8-1.162a6.605 6.605 0 012.428-.457c.87 0 1.67.109 2.45.24.78.129 1.444.265 1.985.415V18.17z' fill='%235468FF'/%3E%3Cpath d='M6.972 6.677v1.627c-.712-.446-1.52-.67-2.425-.67-.585 0-1.045.13-1.38.391a1.24 1.24 0 00-.502 1.03c0 .425.164.765.494 1.02.33.256.835.532 1.516.83.447.192.795.356 1.045.495.25.138.537.332.862.582.324.25.563.548.718.894.154.345.23.741.23 1.188 0 .947-.334 1.691-1.004 2.234-.67.542-1.537.814-2.601.814-1.18 0-2.16-.229-2.936-.686v-1.708c.84.628 1.814.942 2.92.942.585 0 1.048-.136 1.388-.407.34-.271.51-.646.51-1.125 0-.287-.1-.55-.302-.79-.203-.24-.42-.42-.655-.542-.234-.123-.585-.29-1.053-.503a61.27 61.27 0 01-.582-.271 13.67 13.67 0 01-.55-.287 4.275 4.275 0 01-.567-.351 6.92 6.92 0 01-.455-.4c-.18-.17-.31-.34-.39-.51-.08-.17-.155-.37-.224-.598a2.553 2.553 0 01-.104-.742c0-.915.333-1.638.998-2.17.664-.532 1.523-.798 2.576-.798.968 0 1.793.17 2.473.51zm7.468 5.696v-.287c-.022-.607-.187-1.088-.495-1.444-.309-.357-.75-.535-1.324-.535-.532 0-.99.194-1.373.583-.382.388-.622.949-.717 1.683h3.909zm1.005 2.792v1.404c-.596.34-1.383.51-2.362.51-1.255 0-2.255-.377-3-1.132-.744-.755-1.116-1.744-1.116-2.968 0-1.297.34-2.316 1.021-3.055.68-.74 1.548-1.11 2.6-1.11 1.033 0 1.852.323 2.458.966.606.644.91 1.572.91 2.784 0 .33-.033.676-.096 1.038h-5.314c.107.702.405 1.239.894 1.611.49.372 1.106.558 1.85.558.862 0 1.58-.202 2.155-.606zm6.605-1.77h-1.212c-.596 0-1.045.116-1.349.35-.303.234-.454.532-.454.894 0 .372.117.664.35.877.235.213.575.32 1.022.32.51 0 .912-.142 1.204-.424.293-.281.44-.651.44-1.108v-.91zm-4.068-2.554V9.325c.627-.361 1.457-.542 2.489-.542 2.116 0 3.175 1.026 3.175 3.08V17h-1.548v-.957c-.415.68-1.143 1.02-2.186 1.02-.766 0-1.38-.22-1.843-.661-.462-.442-.694-1.003-.694-1.684 0-.776.293-1.38.878-1.81.585-.431 1.404-.647 2.457-.647h1.34V11.8c0-.554-.133-.971-.399-1.253-.266-.282-.707-.423-1.324-.423a4.07 4.07 0 00-2.345.718zm9.333-1.93v1.42c.394-1 1.101-1.5 2.123-1.5.148 0 .313.016.494.048v1.531a1.885 1.885 0 00-.75-.143c-.542 0-.989.24-1.34.718-.351.479-.527 1.048-.527 1.707V17h-1.563V8.91h1.563zm5.01 4.084c.022.82.272 1.492.75 2.019.479.526 1.15.79 2.01.79.639 0 1.235-.176 1.788-.527v1.404c-.521.319-1.186.479-1.995.479-1.265 0-2.276-.4-3.031-1.197-.755-.798-1.133-1.792-1.133-2.984 0-1.16.38-2.151 1.14-2.975.761-.825 1.79-1.237 3.088-1.237.702 0 1.346.149 1.93.447v1.436a3.242 3.242 0 00-1.77-.495c-.84 0-1.513.266-2.019.798-.505.532-.758 1.213-.758 2.042zM40.24 5.72v4.579c.458-1 1.293-1.5 2.505-1.5.787 0 1.42.245 1.899.734.479.49.718 1.17.718 2.042V17h-1.564v-5.106c0-.553-.14-.98-.422-1.284-.282-.303-.652-.455-1.11-.455-.531 0-1.002.202-1.411.606-.41.405-.615 1.022-.615 1.851V17h-1.563V5.72h1.563zm14.966 10.02c.596 0 1.096-.253 1.5-.758.404-.506.606-1.157.606-1.955 0-.915-.202-1.62-.606-2.114-.404-.495-.92-.742-1.548-.742-.553 0-1.05.224-1.491.67-.442.447-.662 1.133-.662 2.058 0 .958.212 1.67.638 2.138.425.469.946.703 1.563.703zM53.004 5.72v4.42c.574-.894 1.388-1.341 2.44-1.341 1.022 0 1.857.383 2.506 1.149.649.766.973 1.781.973 3.047 0 1.138-.309 2.109-.925 2.912-.617.803-1.463 1.205-2.537 1.205-1.075 0-1.894-.447-2.457-1.34V17h-1.58V5.72h1.58zm9.908 11.104l-3.223-7.913h1.739l1.005 2.632 1.26 3.415c.096-.32.48-1.458 1.15-3.415l.909-2.632h1.66l-2.92 7.866c-.777 2.074-1.963 3.11-3.559 3.11a2.92 2.92 0 01-.734-.079v-1.34c.17.042.351.064.543.064 1.032 0 1.755-.57 2.17-1.708z' fill='%235D6494'/%3E%3Cpath d='M89.632 5.967v-.772a.978.978 0 00-.978-.977h-2.28a.978.978 0 00-.978.977v.793c0 .088.082.15.171.13a7.127 7.127 0 011.984-.28c.65 0 1.295.088 1.917.259.082.02.164-.04.164-.13m-6.248 1.01l-.39-.389a.977.977 0 00-1.382 0l-.465.465a.973.973 0 000 1.38l.383.383c.062.061.15.047.205-.014.226-.307.472-.601.746-.874.281-.28.568-.526.883-.751.068-.042.075-.137.02-.2m4.16 2.453v3.341c0 .096.104.165.192.117l2.97-1.537c.068-.034.089-.117.055-.184a3.695 3.695 0 00-3.08-1.866c-.068 0-.136.054-.136.13m0 8.048a4.489 4.489 0 01-4.49-4.482 4.488 4.488 0 014.49-4.482 4.488 4.488 0 014.489 4.482 4.484 4.484 0 01-4.49 4.482m0-10.85a6.363 6.363 0 100 12.729 6.37 6.37 0 006.372-6.368 6.358 6.358 0 00-6.371-6.36' fill='%23FFF'/%3E%3C/g%3E%3C/svg%3E");background-repeat:no-repeat;background-position:50%;background-size:100%;overflow:hidden;text-indent:-9000px;padding:0!important;width:100%;height:100%;display:block}.dropdown-wrapper{cursor:pointer}.dropdown-wrapper .dropdown-title,.dropdown-wrapper .mobile-dropdown-title{display:block;font-size:.9rem;font-family:inherit;cursor:inherit;padding:inherit;line-height:1.4rem;background:transparent;border:none;font-weight:500;color:#292828}.dropdown-wrapper .dropdown-title:hover,.dropdown-wrapper .mobile-dropdown-title:hover{border-color:transparent}.dropdown-wrapper .dropdown-title .arrow,.dropdown-wrapper .mobile-dropdown-title .arrow{vertical-align:middle;margin-top:-1px;margin-left:.4rem}.dropdown-wrapper .mobile-dropdown-title{display:none;font-weight:600}.dropdown-wrapper .mobile-dropdown-title font-size inherit:hover{color:#07aab4}.dropdown-wrapper .nav-dropdown .dropdown-item{color:inherit;line-height:1.7rem}.dropdown-wrapper .nav-dropdown .dropdown-item h4{margin:.45rem 0 0;border-top:1px solid #eee;padding:1rem 1.5rem .45rem 1.25rem}.dropdown-wrapper .nav-dropdown .dropdown-item .dropdown-subitem-wrapper{padding:0;list-style:none}.dropdown-wrapper .nav-dropdown .dropdown-item .dropdown-subitem-wrapper .dropdown-subitem{font-size:.9em}.dropdown-wrapper .nav-dropdown .dropdown-item a{display:block;line-height:1.7rem;position:relative;border-bottom:none;font-weight:400;margin-bottom:0;padding:0 1.5rem 0 1.25rem}.dropdown-wrapper .nav-dropdown .dropdown-item a.router-link-active,.dropdown-wrapper .nav-dropdown .dropdown-item a:hover{color:#07aab4}.dropdown-wrapper .nav-dropdown .dropdown-item a.router-link-active:after{content:"";width:0;height:0;border-left:5px solid #07aab4;border-top:3px solid transparent;border-bottom:3px solid transparent;position:absolute;top:calc(50% - 2px);left:9px}.dropdown-wrapper .nav-dropdown .dropdown-item:first-child h4{margin-top:0;padding-top:0;border-top:0}@media (max-width:719px){.dropdown-wrapper.open .dropdown-title{margin-bottom:.5rem}.dropdown-wrapper .dropdown-title{display:none}.dropdown-wrapper .mobile-dropdown-title{display:block}.dropdown-wrapper .nav-dropdown{transition:height .1s ease-out;overflow:hidden}.dropdown-wrapper .nav-dropdown .dropdown-item h4{border-top:0;margin-top:0;padding-top:0}.dropdown-wrapper .nav-dropdown .dropdown-item>a,.dropdown-wrapper .nav-dropdown .dropdown-item h4{font-size:15px;line-height:2rem}.dropdown-wrapper .nav-dropdown .dropdown-item .dropdown-subitem{font-size:14px;padding-left:1rem}}@media (min-width:719px){.dropdown-wrapper{height:1.8rem}.dropdown-wrapper.open .nav-dropdown,.dropdown-wrapper:hover .nav-dropdown{display:block!important}.dropdown-wrapper.open:blur{display:none}.dropdown-wrapper .nav-dropdown{display:none;height:auto!important;box-sizing:border-box;max-height:calc(100vh - 2.7rem);overflow-y:auto;position:absolute;top:100%;right:0;background-color:#fff;padding:.6rem 0;border:1px solid;border-color:#ddd #ddd #ccc;text-align:left;border-radius:.25rem;white-space:nowrap;margin:0}}.nav-links{display:inline-block}.nav-links a{line-height:1.4rem;color:inherit}.nav-links a.router-link-active,.nav-links a:hover{color:#07aab4}.nav-links .nav-item{position:relative;display:inline-block;margin-left:1.5rem;line-height:2rem}.nav-links .nav-item:first-child{margin-left:0}.nav-links .repo-link{margin-left:1.5rem}@media (max-width:719px){.nav-links .nav-item,.nav-links .repo-link{margin-left:0}}@media (min-width:719px){.nav-links a.router-link-active,.nav-links a:hover{color:#292828}.nav-item>a:not(.external).router-link-active,.nav-item>a:not(.external):hover{margin-bottom:-2px;border-bottom:2px solid #08c1cd}}.navbar{padding:.7rem 1.5rem;line-height:2.2rem}.navbar a,.navbar img,.navbar span{display:inline-block}.navbar .logo{height:2.2rem;min-width:2.2rem;margin-right:.8rem;vertical-align:top}.navbar .site-name{font-size:1.3rem;font-weight:600;color:#292828;position:relative}.navbar .links{padding-left:1.5rem;box-sizing:border-box;background-color:#fff;white-space:nowrap;font-size:.9rem;position:absolute;right:1.5rem;top:.7rem;display:flex}.navbar .links .search-box{flex:0 0 auto;vertical-align:top}@media (max-width:719px){.navbar{padding-left:4rem}.navbar .can-hide{display:none}.navbar .links{padding-left:1.5rem}.navbar .site-name{width:calc(100vw - 9.4rem);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}}.page-edit{max-width:740px;margin:0 auto;padding:2rem 2.5rem}@media (max-width:959px){.page-edit{padding:2rem}}@media (max-width:480px){.page-edit{padding:1.5rem}}.page-edit{padding-top:1rem;padding-bottom:1rem;overflow:auto}.page-edit .edit-link{display:inline-block}.page-edit .edit-link a{color:#5f5d5d;margin-right:.25rem}.page-edit .last-updated{float:right;font-size:.9em}.page-edit .last-updated .prefix{font-weight:500;color:#5f5d5d}.page-edit .last-updated .time{font-weight:400;color:#767676}@media (max-width:719px){.page-edit .edit-link{margin-bottom:.5rem}.page-edit .last-updated{font-size:.8em;float:none;text-align:left}}.page-nav{max-width:740px;margin:0 auto;padding:2rem 2.5rem}@media (max-width:959px){.page-nav{padding:2rem}}@media (max-width:480px){.page-nav{padding:1.5rem}}.page-nav{padding-top:1rem;padding-bottom:0}.page-nav .inner{min-height:2rem;margin-top:0;border-top:1px solid #eaecef;padding-top:1rem;overflow:auto}.page-nav .next{float:right}.page,.page[data-v-22624a70]{padding-bottom:2rem;display:block}.sidebar-group .sidebar-group{padding-left:.5em}.sidebar-group:not(.collapsable) .sidebar-heading:not(.clickable){cursor:auto;color:inherit}.sidebar-group.is-sub-group{padding-left:0}.sidebar-group.is-sub-group>.sidebar-heading{font-size:.95em;line-height:1.4;font-weight:400;padding-left:2rem}.sidebar-group.is-sub-group>.sidebar-heading:not(.clickable){opacity:.5}.sidebar-group.is-sub-group>.sidebar-group-items{padding-left:1rem}.sidebar-group.is-sub-group>.sidebar-group-items>li>.sidebar-link{font-size:.95em;border-left:none}.sidebar-group.depth-2>.sidebar-heading{border-left:none}.sidebar-heading{color:#292828;transition:color .15s ease;cursor:pointer;font-size:1.1em;font-weight:700;padding:.35rem 1.5rem .35rem 1.25rem;width:100%;box-sizing:border-box;margin:0;border-left:.25rem solid transparent}.sidebar-heading.open,.sidebar-heading:hover{color:inherit}.sidebar-heading .arrow{position:relative;top:-.12em;left:.5em}.sidebar-heading.clickable.active{font-weight:600;color:#07aab4;border-left-color:#07aab4}.sidebar-heading.clickable:hover{color:#07aab4}.sidebar-group-items{transition:height .1s ease-out;font-size:.95em;overflow:hidden}.sidebar .sidebar-sub-headers{padding-left:1rem;font-size:.95em}a.sidebar-link{font-size:1em;font-weight:400;display:inline-block;color:#292828;border-left:.25rem solid transparent;padding:.35rem 1rem .35rem 1.25rem;line-height:1.4;width:100%;box-sizing:border-box}a.sidebar-link:hover{color:#07aab4}a.sidebar-link.active{font-weight:600;color:#07aab4;border-left-color:#07aab4}.sidebar-group a.sidebar-link{padding-left:2rem}.sidebar-sub-headers a.sidebar-link{padding-top:.25rem;padding-bottom:.25rem;border-left:none}.sidebar-sub-headers a.sidebar-link.active{font-weight:500}.sidebar ul{padding:0;margin:0;list-style-type:none}.sidebar a{display:inline-block}.sidebar .nav-links{display:none;border-bottom:1px solid #eaecef;padding:.5rem 0 .75rem}.sidebar .nav-links a{font-weight:600}.sidebar .nav-links .nav-item,.sidebar .nav-links .repo-link{display:block;line-height:1.25rem;font-size:1.1em;padding:.5rem 0 .5rem 1.5rem}.sidebar>.sidebar-links{padding:1.5rem 0}.sidebar>.sidebar-links>li>a.sidebar-link{font-size:1.1em;line-height:1.7;font-weight:700}.sidebar>.sidebar-links>li:not(:first-child){margin-top:.75rem}@media (max-width:719px){.sidebar .nav-links{display:block}.sidebar .nav-links .dropdown-wrapper .nav-dropdown .dropdown-item a.router-link-active:after{top:calc(1rem - 2px)}.sidebar>.sidebar-links{padding:1rem 0}} \ No newline at end of file diff --git a/assets/img/contributors.ee23f7de.jpg b/assets/img/contributors.ee23f7de.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fd162b6dbde93f8bbaebac539fca915a1a329ac4 GIT binary patch literal 242844 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

X5qZ!%^R;a5t-P!E0U934IMUf)8$L2 zvGV=6EJ~G5;ORa0`q7gZl=v)avl9J>-&^fT3E5QQjwAT;FV+17e*)J2A{`qj(0$FE zthlu4Pt`Oe^0Xyfqx6+0*FHX*CwsoOh*27==!$rT`fRo!hUB^C~KuQru@eb6awZ3-;gbYWgS! zV-7?I3+YN|(xz)$fC<4{c$vT-pO)S~i<4bbn)d^m5Y7Q3O;x{3LY3`gvSt}dRrYMJ zFrrAw3D?ro?!T&j{Rc;pyvC0&wBt5r_cH{8#l)aC_~=*GcF}<-%4#I1==8B(&2-VGy}0z zFkDqL7=Hw@WHYYk?so7rKilWpIW90=(0|WI;OECZX=<_@mnc_Ke2o*bB8}LV>qK9d z#ah;pxI!iU&~0J)5AFxO@tIg;KEg?inqtjtxmnFDGg(`0l8LlMv;f;ZQY74k2#Np5 z8u6^5TsF$OQr-$LP&`=Z{j=$r(P*4C+$9FK|2Qlo?kedXtPrgEBVe~8WHavdVp;DB zF;Hk*`=Y-+ubQwws$?M^HWFP0xPBMNet@tTV1W_leb;)4DlsP!)7KFL(Pv(1OvwFa z5=QIO{QU%AFY-}LrZ-_o|Z>E#c;S15=qHKub*atwS+;DkG4=F zcIJ#{n>yIIP2;TXq^f95s{O&jpkdzj+n<)lgR*@|_-^*o1pWh?8{$?rNGxRROKJUF z3y;$tK1vz`xJFlS@t%)$2_1j^Z)#kDWW@G|7?E20JQb2r@i8UNk>5e-3LBfDqLl51 zjBGudgfUh+owQFBYzt_T^t_V1jTx_s*_$4bT<6#is*82cckNBp(kJIS$vw>7{jD=8 z2u?#s92gaD-Lg)qv7@_5`c&J@lk+eFrBqYi5{&$?XKd!@U`WNxUt#7sEy0%*a!p*Jd#%SElY)wvDuF3^)!76C~aT_D6k2 z5at)zuXojHbg?P3j5Qi-%-~i3A#UGAnI+N>&Sv14%+IMMHOwSSrSuv&)E_cPSk?n5 zc~-rN8r@9<=svaa_WOofySywwi6+0SaB03 zk*S0{qFi4Z5!~==T^Ln8k~%z-KlBT`Y;I0Kl89b$M~!86b4+wFHau82gl)h#aW-vm zTtAbw)1uH~e+Imk!c{Uk7{iGcbJ88u<~Ym;>j*gHlk{D=Np4nFD0>&sij))%k+on@ zsw-lhEh%}C^S>hJCm3`e00#nCpN=mgy~9lqZuu#)Yg0A9P}fRee1!Xg>3iax;52jp zTvY!j4)3)}2t*ooabc+}`{Au_izDai4?WucrJ&X&FbTd(9EIS|LAh3DuU0BP z5Xh1^$Y;l>`>dfCgIz3a=!uQ53WXz?{z_es)RY*jRZHMo?KG3?W4+g2Cb`BZ91Gj; zS?xGzbG5t0ue~5mt3_&1zZ(IO`eotk>y7Q33@Hc%)EPkWV~1^NjVKzFKV^|mN34xI z{v<8!8D)bCYC3ef2W(5fJdb)-s;@q(0y|iEnkTFd(Z0)(bMoP%DT%@w{xXsKf!DJ! z4L87_m-C@Fa;HLlE?<(#h-HXA_dEf5wd}kb^s>`7oIJyYNyCOo`6mk|>S>~7seeS! zlWkM3c+WFYkNQM?E|q+hm-E_QLZ}J;`xiK~LUqR*DjNS>^n+Sg}IIkW#$$!6NX;rg0fMEZAu!%UJHS6uxzgv|H zl4g9!Xb<~?c1MPCc{)rS(UHsfnNG$JHA6NaB)`rr1^|g z#2ZPzXxUt%3TRc?1d!>!zj0S7>wkq+3>l@SPT8mA>KjyJtLTk3V+)>SV#la38=b%X zK79CZ+AlF65x1wHiHqk=;>!Yo)KRl&-+`ILKn&0rXvA+k^yUWD*u$5pDyOU9 z!!d*Km}MSr5<~;@0mYW6gzQLp1R4BHJlv(@Gv~&<%x6Vm4 z*#LOk$*9m|+4jlWlfgA7A3amH{saL2KOyyh$-??oC1d;WtG`rKnWe2#qka(th2gyn z?0fN97)VSS63DFCpu}v|ggc!AL(H&5tk{v6?2-+C-0S)>#j>`=y9a%4CN4V}FRxn0 zz8#5NCal5X`H()+wVV%B*~a}Mgr0mZvp19+rH2!Znx0j6Zi^^~4)kb!TD$vX7J&FF zv$AYXAJV9cs;{-JHM8}fG%X@+khfEi-(jq!*wRzoK@9}~vKzh462+B}!k_xb>6x51 zE=um#wf4N$PJJYOq2crGhFlJ5v}Z6_-gR zr0H3Go?g%+hj$G09FAl8L^gG4(*MG!Q^Fm1TTOAwjhHZc>J6!Xj4Kj)xB>DJGQn1! z^(9v!iw@i zIv1okVVmyYi4z@~1TXyUGOy@-U>jX=%6?d!M}@gN4@7m{W`E55uZLd_jdMV2q%J;m zQRfP>V_6s8={4i0K>7an!WDE0Hhkxc%;^|pW7D*Q8Jw_))-+&GB=S?;L$Kz#wADT? zodIe~hj6kGF@!|$LLUyDe^G;Yx_w?BYSARnrhv~3_1^w-JX9*X(+GmLX;{W@IB!NF)Vc93>pKT0OMxmm zREjFCJt13m-IG8QHM6J!O04=`Y@Xr--|%8~b35N6$qgUA4kHp4f(Hn#*$ z?&N-<84^j6aG&dkdHIckXq*g-mV=Dl&_;)StND*){j$VJMy0ovR-ywgW>j}vj{|(K z47QxR)U7iWQB2`_CZV=y8^l-APlUsVspfKc1uzaCmvqR5HoVS^mM)QsdrDyuL->0i zeAZR`za#;`qRM0qT=U2hF*Of)xd3vNwap$<2$E%<+wv4;D2bF#63k?Jl2#%osoD+% zsXjgjxwcSD9a|`OM2%W_Ai)<1{sBS?O*a_{`wQ^G?}UMO*fuByf11^meH-4pmPYPs z^6xzsEPA6xV`&5y$z1o1pK_`th@&D(4u%xF%HNUQZj*d1Sy{%2Rl84Y^9`?Zu*W(R zJPxdJMcJ_1z+&U;LV(~Rr7f*E55@bCIOM0wgzVl~o{WsfDDe`GrD1ABG4t;*JD1Pgclu}DppW)f0bVP+| z5(3${zp7I-Xg+(YtxfCP&nGJux71s>l>{(gl`WOs&C5%jpIo=!xB_R67V`PyVYCd? zFj<{!g=xte5pja;@*=|(>I1i@6*hwl?FeqAo z^sYUs(1o55CRaSgt&D2&OFfI{zDP=KFkE8pTIU^jdCELX4@Vt2{e8(sF&gGM6Hxz^ zAoX%Xm-e#M^!-siJN|U@;MrCJKfueMFs&2S)orG(-2}BTY;65wWBlJo5)U?!td(cN zlVNKg`j+tZ7?XVz^>(8jw@>*;9++((i!IeeIWX82{;H8Z1v;(x1Rsz2QL!($o>$B* z2V~zq0J4=B`QOGcHh(3R zQbEUbL*w-AQ0dVSbwm3`=p_uK@sRxA+dOf?KqPL>P(w=D&Qmske!ikQW*^r zlfE)qM3hL?n*Gpxi_r-%nNGrgb?W(W4ZyI5sTcK`%n%j93gj zj(zKm+xujF^EGTaug956tzJK{r+UmxP5VflCEfp4>X*}U_FS{oi}aixenF@gK|si+ z(p0OvIn(fER{WO;Az=@Qz@7}{HMua#FvR(@k2BJSf|(}qq|+BUQq+qF;O`Aqzz8K@ zf}p4EFgt`UKqB?P>zCM$p5gz}RGKV0i4&v$rx$`mRT`A{jj`Rp334g`DAg=(uuLsKuhW45hOC|P|5+vEzA+jnlYoRU)a;oPcK>TGJai!T837mxG z<(RvMN*N63hp>BZlJ@7zzc+{CshVD%k)@iE2VVCB*`fDxhoXO;DR!4h)U-f4y!Z0{LHi@OM4`!C_2gd|N4V0;IeTD{WM=)+8BE{nj~sYNqCW znWhKdWgLGVIe;s^BzduN&^>==Kecf3z3JjD6QWS6Cr3O8f&cm#<&IBD(ROa8GZLRa zbvL8#H7zuCwts3}E8n{!Slc9WN@}wZDN9c|kOVGRW_fTwqT9LRMqt#%T4w-}haW?q z^V|9U^3&XKCNvlP@ibQ*=C(Pu62MKFU_&|ra8F!Z+Fxc6Tl4kx<=q7r9cGw~W<=|r zU=QG68v~&Xwb(>-2)mRex22w55-tXMGkr5!wZP%a)R!Os;7;>k+yE%wec~e3 zj3pGhT6wUA@}zKIsZAkTguK|n%z4N1ce<{et1?%Q*X)~qa0qeZDV%7R&a(%aMiEcZ zUin0|GjBu>%PN;VWlj!0xOGla7->Su-(7wQCK>_-KPY{|**JsdjBqk6w8W^##DD1p z5FY_aF5fNcirP@o;3je~VkbzS_?7Kdrwu33G^=#*lBi*D<;1aHHna$-U+OEF;np90 zD$-sKGZGVSC4QPuj_50eu0?E{T&^vxjHtqNNZd0*Bu;ley*}-@%Pir}7un}@Zze5{ zp0i4;J|tN?*F~T+!M*9z**Rpy&p5~f} z?_#udTXz$l(^EvkjwdrOjx$)#jpkiaXHICQ?fs!{^%f|oc@44_)u&+4b(IlDcqj$w zRMt9-Y{honqqI2l&{8=-WI)RY>!bU>c)*XhP*8ts>ZECw(U3hml5Q zCwXbz&1d5^pWbAQiNGvAD7iF}b5F^Al_Ole-<+2fU2gl-_1$f$N0X=ck1H7NXvlM^ z+u`5OMHIO-r0fz@ScIEPo2ndXMdrHD<{JDUu{zgdiI?ayWEJ*k-N23wxJg6^E$(2rISKcmhw7llKTh4yH{6@V zu@kv+3}IsiflLbGx_=o|gqx@3zttU87}!&ds9wO=$;7m`vMG|ZgOFtn#B@s42~M^zpdk_ z@W03ZeScDRQlY}f(O`h*cJ@f*({1$?M~l1l|0C?J!lM2Hci&M|Km??uL8TcG0qGX$ z?(SyjZUh7*hi-;$2Bf=TXoeoT8|hB>{Ql25`|N#nF1Y;O&9hkRjn50yhrW4IkdBdQ zxEU$`W#M#Z<8iqyZf)V`v1p=g>m<`eo8wH-){6p?aqIf^wNhn@ZVrpBztC6mRhsUQ zPF)q0WJ=Xc%nBKso-%v#3$a}uEldXLgIE}{jGj&#VmE^Qo6%m;U(vm~*#yXLWml^B zOPH#?W*8G3wS*v~YG`}ZPoanW^@uY)-53p@mas7aG=QJl`sj95ymR8t?D6$uxi6GS z+*6JlgK z3wV@E|4#Y3?D^FDs_hVL8emgc4t_~1sz~z^YK-XB_;f-Qs6zJV4x3l9=}t>6)Mjfv z%E5wrz?oN#e4YOC1PV3@b(&|yseC=GjyEH;?Nf679M6~bm@vJ4wMaV5S9WA>|6Wh5 zaOgVe$ehM9?lt@OiuIm%rl^Ae-%WVsyjf#0A~((pHdr~monZ^qX-Z!A)z>MmcvDI9 zE64VWDP%?FrlUb~0y;Fbzaup;^6N#QV>Bi5CPFQhdgxuAke)JVxtQ?=RUyGYcx9Rz!PGf{ErZq-+0eDnes=o~IBQFTDBx%tyA!ldi3q9$ybs};HD1_Vu9fu;)~ zBA>R^mE9P|&^`^FN>=FFaTxCN33>hlXnc}bkkKo5dndzcGM$ljdk~)}#WU>YQebB4 z73G)Ui3|qQ87O)L{CBRsI8yotC^N{eO!0;+kV|4@Prcaq$=|RkpSmUSrsczO>Fd_D zC#R^pI3XNe?gib69SMEhBBmyVuQG0pjWX%psngs$9PucED~Y?}QheXMPUCd4Ijeiz zZrGRPP2_*buU%Z_Iw_d)402Q*Qoi}Nw0{A@eJ^_#!sMnV#QLakUMYjBki-u!*)%S7 zmPxpr&J);r{(aV{L6gKE zq*<>u071{QC#M9LO|rJ)yFHGt(t8`PIR(jA!Y+AerBIqz*ssV@2f>f-SCul(Jy|VP zOM@Z5VmyudUM>?$pIqmMdZq%MQMM|NzXi-y{ zy#7FRl-)g`_<{S0p}=VA9%X~@G2$QKKhlGfiGSz?A9AZ`;}OhW`SH5@f7__Q_0`9p z2G1=G=h|0)gnI5EU;bk`oU6!>2y1<&zD7arZHvVK8%(u>WZJXHs10u%!BadHo*P!Z zSM+8?rK{${Bl|uAd0INFiyXHXGp66~)*Z7H6Y+zu|4TwZ{eftO`FHb<%Sb$>F9%!`I27~ zs5Wxb{BcGiK0nab6wsI~53}tV?+s4tM{e1O3QVLTToPk6_USL73ux8`FH!wAI(UHpYxo}7& z5|*qz(@tJ7{|8Gx{Pe3MwT|blA0#o-g4lAbNhLvG4=bp@Ij0`yAHZa2ih}DE_p=&S zg7+TB?<`vdho`L18T;CGE7_>m!PBvWbY#C4zE`dX-OWsa)}se@%L`l??BJSqi8*1U zZvj(w32fkm3VtEa5)YMUoCiwak%8rd!q}W%wn+tW{Y=d$px@i8MY|tL)LaY28}Y$A z3)MJMf|&$mw-3UmGe{7`QZg!gq( z=MVn?YlK%R6nrfG%hm?1%>EcANHVp?%op4qX0>PJ@DeH=LTggfI@ynT;(Gbc-|7PW z?#)c+;}a+gBe@4Va=WN5x@6Wl&(mG7RX_0>2^bokPc2+*J4#0Zq$;3XluvRsc9HCc zAbp~a&_~NZ1ooRs(Z>A#FGgLJ(j2!f_&2R|uUO{maeZX`S=WAqcRs%py0)&ZGi}J} ze^gSa^Z7pe+sq(^le{V`)`Q}CI)CPhOl>xl%k*cG;Q*>Eu781%UXf`OLwv_~6uLE7 z)2NO0t!Ho2g-#s$*t*vAMB%SGbsHnM z_XFW3x7QW;2R%x|sl{WU!EYYjn9MNe;U|2*92ox(z^rkH0E$h!OB4?(J0{ZX%SueBU81Jpzt~W_K%IbqPj8-u zk>xkN#XDwi9^`)}i`eLAx&e3aKfu-tB;H2jeyaZ;0Aq)U5_v*$R^ng5K@m^dzOQ}R z=I#)U2gd(nC;e{;Ly))9@FMUhO6%;91sUA`}q zhBb1dfT5Rug0+9ca$$2(2ljce7YnKk$}T%5t$BWpaS&Tj72~qRau0 zAnMAhGArv5sQ5pCu;FmAzExK1_t4SQ7iPyi0z6M3&F^`B8|EC0%5{Ykn@IY9K~l*# z64x#Fq##VPs`~YyN9t&Fiq$8hs}$*)GCAJxkvlRodgam?9zA?e{x+iyb(HnQAWk&R z!0QBXfk*Q6r8;t&r~EPk&uMUHX?L5ZIqS4wc(h5$nio10yArYZEiq&^kq4#Dh<-j( zDRX?@B%FJbfmHSh>zel03Jl5nrs&JIN^{FwD~2K$6hNS}da>9~XuT*gQYXskGXjAH z8Z^coy$X1P>&Q({QG3&|-FY^pA-CHYGM|SEm zEtHeCeeq;C=*F z{8EmB^Wkuf8ZSnJoYS`C*@Y|AUG1h{!@1KybBV3PNwPP1@mi&>a-P{5-kGuzDKx3^ z#g0yBf^AV)>^k9R-yWGcX2vSt$L*C$MhBQSe<81r?}V|dFxus7H|5io3`!1nR7c(h zA6;4EeLPl8brR}s)HOpj_i{{w6zaDW%-{9ix#{pRWKQ z4SKjMNq5%(DA~?8@^8>P2RjGh+QlcunPA#+CXNR= z+Q|b}%&vANnwi@D?K=(B6GN;B0Q-CP8=_yxj?Zg4DPxHHy$+-M zlWE+%$)kGR8A;GTh+V0qy{i3E>XMzi{r^ch|Gn>b*~%C?uVC2Ldl%yRviq&}Rustv z`XRnUU zBvl!8vhS$$r$rmp{z~M7xV)r?uN700iC3ETAz7(V{Bq+dQ$qI!ugvbYp4w_GLX_-F zd@f%Rpry+KB-XaL$JWsX`g#%8?)19*B{$t+zx7s>#+#`b^0B})1#`8g(@hck9qlpG zRB<;P#J&az!Yh|9r20ndDm3)Cz*lg-A_#rx*fV;FETTXfbtZ?GnLoLZd zv0`nl10Ydru&L#ui+u*a#f+v?(VjJ_>3N1lXoV}exvwrpF$9CJFp%oA(EwJ@>wZcX zmecsb@+Q>^H`S-f;JW6Phk451CUqj@ZC4rfHyTbhTDEU-sQi$+Qh(@q(ZFEja=N(K zN{ZTa1!Tqe%M|lSaZcN_Y@A=?zCtYXeB_}_PRN3(+sLG@WOaw-1m}tD@~z>*=iG~dHNj4|)?w>8heP!|Rq-ehfZ z!cge!g_36dT?7S9>cE=ew#I?N9wtbdf073%C~57pjUCR+TnB6c#;wSzG>d+{3lQ$b zT)sz|H(qq%j|&cD@+BAzkiyl%bM6k#D?EX!PsW|!{qbx z3g8^K8TXQo+xoq(YTb3MNUhH+;70O>D*S?-UR-fkCvSD&P&HV=9MKHNIm6HwEP5YV z71jtwCA)b94HXOzdC!INsEYn|iC7H76`?kbzo9WCR=CWW4k!Fm!mM>j@$NME2-e%w zu4ejLmbJ-^8}1h**i^w=NANW5(w(r0Wo0Acns4ppA8qru(zs4@D^eDYZgL(Jhk-YU zO17pPA6jjThh?GUCLq+khxjlhDdf@ela9=y0$E|aJm=;Xck;FI$PiVNRt((tAD{O& ziY5YIgI1IUZF9*<#ZUc;)^!Ztuk5F35#qqkSsOyP-C%zo+uZRC1Q=rr2zdm+xruj8 zav%jP52uw`zCFY0kO5=8Rf{N}D&&=oh1@@rduBH~#=&xc1uNr%&Sp0WJSZJ0ETJ9s$}U-w)0*|i6)acov# zU{Fl2=GP>PNoylEW{sE)mXkPorGf@28HaiPB_I6#@?Jwb@vQA7RB_awB>x}4%p-|b z*QWQ}n{)&^~^Jlu*ry?8nS@(R7BZ$IUP7&Up4uh0F7`6cdMAsrt~ z8U5O(q~O(wGlR^k7lr+1O96?%N(TGxk8T+5gKE{Q$gOurXhTv0gB6ylk-odt9c$eC zE0F_yp8Bf}yRDV*G-6TPMNGCnx?vS) zc}sikc@wK!DPSwi&73staeA#}2-`R4B+!K{_jycp&ls5AYios2fYR6n|BNCx(~((r zi7DJ&Nv;*eI2oG{D$CfYXT-E&#=9Y4ezl{LQ4L^TicC_TRh=nf&GQ+&@f*tASCpXs z4b=oEs?~Hi!xg>->hJGIPno`M^gNe4hJ-&CnH#+GQ<0e4D0z?++uJN_NL$L1`;g4V z?C!!$VmU{x@&{^CVTnWZSb76*Qe!28E9oKiBdZLVl07^hn6JqFeWY~*poHe)>`?R#CF=N*0b@T+EH;~S2~%kWIf8e z1fmBHd#^<6I51uvyc89H!LUSdDnix3k&vHj#BhG>0?`|-3^-PvWrnzH9?9pGnrz=A z-wdp}Lyn2w4O5~-)5_4Y{ha-;9y&c2&tpM~f9g=QoV2C#?Nd{A15s@Z9RwKUE16Bx z57eaS2f5nd??T4w!Hyo13-Q$40#0h+=V860Lz9v=8&^LPno4_HpA=cd*ILKc*ic5{ zF+u@!7#q*-N@HoenqNPGmQ&dhOp?r+0mZWu*Qba0u6}c;e?4uUuPje<=wQ!yX`jJu zb&wdA(lEzrdhPPSLv*+QZ-}?ce)vN2x48JlswnYz$HS!> zCNF-rdF{PHj+wbv!!8v=FR1=dH8d1?B^*c}dwuD#emg``qaxhga=OxDQKD&(UR#~` zV`!opmo%B|T%0e%mB1nH0O}}@ZF*vIDBLxnC9f7Da#h9ykBKc5t&ySz_;N0KD6MS*k|EtW^QTQy~!a8v8qj;NY6NM0nt6@2J!Z%mK)J zHx!JX@%M{pod&5L+A+`Yo9)U-h(;ECdhaHxwxb1+&pOxEywU9V?ddC9zCLXxH)fLJ zC7uPL$^y?idWDqByx$QL0vlPsYs64Q3wzrgm4)fD`&FLt#e;9~%N9+>4F4cFhC`b_ zB)cmQIhmPt3WaSnt3(n+TX^!-?3ZyHeqWqAf#lVhG1j|%g6ojFX)}-ZRY4T1v_2yJ z-KXcE5{?31=km!PL%GrA3(+(awiRM=uN!6D%$kOr~+ zW6S<#tw(MneRSF9E!hHL%&S*8w;JgYg_}w>lig}JxYRXG5ASHNpB@)yyFaryDZK4a z2@iL)oolW+7;QSHZV01g@>A_O5)yspI93U4VAzt@zChV`OIuQ|gYDVj%=`3FdQS<~ z^@nxChoOJ;esn082M8f1J&Y= z0}(MjjGYgZ71;PM>T;L*2>t0t`X-SA{tnnH2rfZGoPVT$rS= zu0-0W1r*4ya(i~$>ziy$sBT4QwrG*%0abJQhk6hKOJY^9Mc6{HMGj!X(W(Jq9lz9J zN$cqu_pPwW*bo=Rr&n;U9q8XfHY|LU@Ea@xlnwKq5(%WLGK+fb->%%ID<^3c#%L}w zSZUV3pvwhMBl{$}bKzs0fy>DX-g&dF0_!cmTV)3e=N7v1wRBLvt!S<~9Azc24sydJ z$56?gHI46#2ws<2$h}!?VH5mx>md8K3)gJS%P>IKWqx`ibr-Q9dk^~D+0AwA4KDEF zmTVdo4CU~ohryD2POx;B;IxgW@wjx!Hu;W!C{wHUBp*ZDTufNWCY8XVQKCs$vX>ob zdZLaN1S8h?a-oXy4gzIx*krIlz(U`;BV+Kvv9tcSNb!F~u}^w@P&<Vrzq3;HuAjBaikE8z(rjtH#KFd{!2GI)PIfl&_MXVB&Uc7(j0i%1EvwK^oJv3?zvSv6kn%52z)`ycR�+8YW5YZUD$?5i;>r>d%} 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%0Du3Si=ZPdDu>6fytnd(9us#5U)cWy6 zHRm2CCc)YyZ77Jpm0;W_&c`nu9K3(&y^Nf`EixvJaQQ2S_ zLq(bg^ckar5a|_qT|8L3U%||t*nZ))n*f->4QDpWo)5$pkEmQKUHKa4e;+(+i)JJ~ z0nXPJz=|9UWStA7BXK6rYGR=+Sp(mA0vOJ1*k|0s99J)0dPla_G2Q{1HoyLpe8;&+ z+EH)}juFP~c}>;+0|?d$3X`>=WXCxK>|K^*ce;MPJ#r@->{q&53K;*6CE62)v}i}Z z;$!UBM8ywD!hz8m0<+iyQa=LDZBR?oM7^2Ywjb)}u+UsU*1d5=L2l0-x476;sP?o@ zS|soJ07CS|n25S1i+cpZ(FVZh23{PIw#x~+XViV!5|cFky5LG}mBi+%_*GNum?#}v zO_LG*i0w8?K~Aa{Z`68c7X}#|`zD*2K%k`iE1cxvGvo-qW>%`BMUXdR7UXG1w|2_A zs~FuePTttXcdy1PdF^i15iKP%w)a_il#j-f^$7*T+f%`fLuOZa^5kqNh6)&uEBpvx zamY+_6g|sL?w{1RdLWw5aiJ}(A=Z?_s=23JkaQx~;Y6T~`TTA!#y?3Gj5rBBTU4Ae zVvPE-O^Mm|W6y>;PfsB+Ov6^DtDh`Y2&zPdV^WNb1^qHV%=MN(PORR!jHD*m8FCwV zJhXp^r7+MogBT0>dPZ0gv+>tOEiyBF!8d~@kz_hVpgLMhQ1WCFjeRmw6cU zQOs429)G#c6r}jcG$|B_dS~(SBmjXjT!tf2HOoTtonn{;&bT+}-sPlO)1FW>l7jHZ z#ih$W&HC@uS>8|+WUa?*o<^TqlH%%ULG%@szJHzqWJrb0)}mE=*PXXaSL5jxw_S0a zuT)|MsSwBKH^3c})Z@gG!x}qvo;RiC&Il5hHPOYt-(FciswEW|rgOKRAInD)3VI_^ zdR?lj1FxfP*^!c48Aq5twh6pB zmFI(L61RPySa69MH&deG;vtJ!HI|S1jzWx();`GnclOgfl2WRbQpr8%MfG^0qaxhd z#x~?%beqZ8^U{zQ15AUSTkES4 z?s5;jf$7xqB~Iq}R_x`lp3r{wlzB66l-x-!I3FKm-Xl7XyWhQ=$yt}S(m7Oh_H+Zy z*=)UB8%pq@WLBu{h%8m+&Io@xc!W^W~u~4+3nBBT@Is0 z(qMeQeSM3q`Ao-1G_JVR5DUI3dK&*T%;ghe%bjbi#?c>z&4qavFMxfYxy8|FC%-r* zIAd%6-B{zWy`eF;a0-mNPvq;deJ~0p>|vW=z*m-=YQ%ty=zdM@ukQa|{&4U^-%O6; zAHY*HsW<=VBWnL>7H^xM-;i4GQu*{Qoc z#*OJyS&s}4txw|9AGR2$V8qj3BHnB1m6vu?lZX5ykVLbqVLmxripKtkqbA=ag%K2O K_7!9Pnf)(2oGFd~ literal 0 HcmV?d00001 diff --git a/assets/js/21.dd670b89.js b/assets/js/21.dd670b89.js new file mode 100644 index 000000000..6bcce5a5f --- /dev/null +++ b/assets/js/21.dd670b89.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[21],{282:function(a,e,n){},347:function(a,e){a.exports=["epoberezkin","spaced4ndy","erikbrinkman","dependabot[bot]","jasoniangreen","PBug90","blakeembrey","sambauers","gajus","meirotstein","Tyharo1","igor-savin-ht","b4h0-c4t","willfarrell","boenrobot","yume-chan","GrahamLea","franciscomorais","asaid-0","domoritz","imbstack","pithu","realityking","efebarlas","awlayton","pcwiek","rehanvdm","farrago","SoAsEr","kroky","Delagen","YChebotaev","bhvngt","t7yang","teq0","wuweiss","zekth","egfx-notifications","brendo","HotelDon","donaldpipowitch","mummybot","G-Rath","HolgerJeromin","Nonemoticoner","MichaelDeBoey","mattpolzin","monkeywithacupcake","ktrueda","marshall007","lucassaid","philsturgeon","carlo-quinonez","radekmie","merlindorin","Romakita","rbuckton","ryanmeador","mighty1231","simon04","SirLich","krenor","stuartpb","TIBCOeddie","bearmini","not-an-aardvark","mxsgx","m00s","mbroadst","MattiAstedrone","MikeRalphson","tyok","MrJithil","mychaelgo","natflow","nwoltman","nimerritt","nicksrandall","Noam3kCH","eventlistener","Opticsponge","orgads","papb","thernstig","jsdevel","oldmud0","ossdev07","pskfyi","qwertyforce","rek","sahilda","schokotets","superfaz","tridium","vlbee","aladdin-add","wyfo","duxing","anchnk","ChALkeR","TommyDew42","koba04","isTravis","cvlab","vargaeric","villasv","aristov","billytrend","byr-gdp","cjancsar","dfeufel","ehmicky","fpicalausa","franrolando","fridays","jonganc","ahmdsolmn","caub","dalcib","dannyb648","dancasey","rotu","FunkyDck","darcyparker","daveisfera","dsanders11","Delapouite","dimitropoulos","keyten","thetric","rubiagatra","forivall","ecwyne","Alexsey","avanelli","anslzo","asprouse","andyscott","vixalien","kulakowka","vendeza","benasher44","bradjones1","eventualbuddha","cbrwflo","cpillsbury","ChuntaoLu","delavara","smithc10","EtaiG","jboavida","justinpowers","kapouer","lehni","platinumazure","kpping","laurens","johanlelan","leonardovillela","LinusU","alazyzombie","jsbrain","Eomm","VIEWVIEWVIEW","mduu","dzuremar","gj","rgeerts","garrows","hadrien-toma","seriousme","hans-kinnek","handrews","is2ei","idangozlan","ivansieder","P0lip","JamesJansson","mrjgreen","jrr","jonasfj","jonathanGB"]},348:function(a,e,n){"use strict";n(282)},379:function(a,e,n){"use strict";n.r(e);var r=n(347),i=n.n(r),o={data:()=>({contributors:i.a})},t=(n(348),n(14)),s=Object(t.a)(o,(function(){var a=this,e=a._self._c;return e("div",a._l(a.contributors,(function(n,r){return e("a",{staticClass:"contributor",style:"background-position: "+100*r/(a.contributors.length-1)+"% 0",attrs:{href:"https://github.com/"+n}},[a._v("\n "+a._s(n)+"\n ")])})),0)}),[],!1,null,"074475b8",null);e.default=s.exports}}]); \ No newline at end of file diff --git a/assets/js/44.314d45c2.js b/assets/js/44.314d45c2.js new file mode 100644 index 000000000..b6f3d1ff8 --- /dev/null +++ b/assets/js/44.314d45c2.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[44],{394:function(t,a,e){"use strict";e.r(a);var s=e(14),r=Object(s.a)({},(function(){var t=this,a=t._self._c;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"api-reference"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#api-reference"}},[t._v("#")]),t._v(" API Reference")]),t._v(" "),a("p"),a("div",{staticClass:"table-of-contents"},[a("ul",[a("li",[a("a",{attrs:{href:"#ajv-constructor-and-methods"}},[t._v("Ajv constructor and methods")]),a("ul",[a("li",[a("a",{attrs:{href:"#new-ajv-options-object"}},[t._v("new Ajv(options: object)")])]),a("li",[a("a",{attrs:{href:"#ajv-compile-schema-object-data-any-boolean-promise-any"}},[t._v("ajv.compile(schema: object): (data: any) => boolean | Promise < any >")])]),a("li",[a("a",{attrs:{href:"#ajv-compileserializer-schema-object-data-any-string"}},[t._v("ajv.compileSerializer(schema: object): (data: any) => string "),a("Badge",{attrs:{text:"NEW"}})],1)]),a("li",[a("a",{attrs:{href:"#ajv-compileparser-schema-object-json-string-any"}},[t._v("ajv.compileParser(schema: object): (json: string) => any "),a("Badge",{attrs:{text:"NEW"}})],1)]),a("li",[a("a",{attrs:{href:"#ajv-compileasync-schema-object-meta-boolean-promise-function"}},[t._v("ajv.compileAsync(schema: object, meta?: boolean): Promise < Function >")])]),a("li",[a("a",{attrs:{href:"#ajv-validate-schemaorref-object-string-data-any-boolean"}},[t._v("ajv.validate(schemaOrRef: object | string, data: any): boolean")])]),a("li",[a("a",{attrs:{href:"#ajv-addschema-schema-object-object-key-string-ajv"}},[t._v("ajv.addSchema(schema: object | object[], key?: string): Ajv")])]),a("li",[a("a",{attrs:{href:"#ajv-addmetaschema-schema-object-object-key-string-ajv"}},[t._v("ajv.addMetaSchema(schema: object | object[], key?: string): Ajv")])]),a("li",[a("a",{attrs:{href:"#ajv-validateschema-schema-object-boolean"}},[t._v("ajv.validateSchema(schema: object): boolean")])]),a("li",[a("a",{attrs:{href:"#ajv-getschema-key-string-undefined-data-any-boolean-promise-any"}},[t._v("ajv.getSchema(key: string): undefined | ((data: any) => boolean | Promise < any >)")])]),a("li",[a("a",{attrs:{href:"#ajv-removeschema-schemaorref-object-string-regexp-ajv"}},[t._v("ajv.removeSchema(schemaOrRef: object | string | RegExp): Ajv")])]),a("li",[a("a",{attrs:{href:"#ajv-addformat-name-string-format-format-ajv"}},[t._v("ajv.addFormat(name: string, format: Format): Ajv")])]),a("li",[a("a",{attrs:{href:"#ajv-addkeyword-definition-string-object-ajv"}},[t._v("ajv.addKeyword(definition: string | object): Ajv")])]),a("li",[a("a",{attrs:{href:"#ajv-getkeyword-keyword-string-object-boolean"}},[t._v("ajv.getKeyword(keyword: string): object | boolean")])]),a("li",[a("a",{attrs:{href:"#ajv-removekeyword-keyword-string-ajv"}},[t._v("ajv.removeKeyword(keyword: string): Ajv")])]),a("li",[a("a",{attrs:{href:"#ajv-errorstext-errors-object-options-object-string"}},[t._v("ajv.errorsText(errors?: object[], options?: object): string")])])])]),a("li",[a("a",{attrs:{href:"#validation-errors"}},[t._v("Validation errors")]),a("ul",[a("li",[a("a",{attrs:{href:"#error-objects"}},[t._v("Error objects")])]),a("li",[a("a",{attrs:{href:"#error-parameters"}},[t._v("Error parameters")])]),a("li",[a("a",{attrs:{href:"#errors-i18n"}},[t._v("Errors i18n")])]),a("li",[a("a",{attrs:{href:"#error-logging"}},[t._v("Error logging")])])])])])]),a("p"),t._v(" "),a("h2",{attrs:{id:"ajv-constructor-and-methods"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ajv-constructor-and-methods"}},[t._v("#")]),t._v(" Ajv constructor and methods")]),t._v(" "),a("h3",{attrs:{id:"new-ajv-options-object"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#new-ajv-options-object"}},[t._v("#")]),t._v(" new Ajv(options: object)")]),t._v(" "),a("p",[t._v("Create Ajv instance:")]),t._v(" "),a("div",{staticClass:"language-javascript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-javascript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" ajv "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Ajv")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("p",[t._v("See "),a("a",{attrs:{href:"./options"}},[t._v("Options")])]),t._v(" "),a("h3",{attrs:{id:"ajv-compile-schema-object-data-any-boolean-promise-any"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ajv-compile-schema-object-data-any-boolean-promise-any"}},[t._v("#")]),t._v(" ajv.compile(schema: object): (data: any) => boolean | Promise < any >")]),t._v(" "),a("p",[t._v("Generate validating function and cache the compiled schema for future use.")]),t._v(" "),a("p",[t._v("Validating function returns a boolean value (or promise for async schemas that must have "),a("code",[t._v("$async: true")]),t._v(" property - see "),a("RouterLink",{attrs:{to:"/guide/async-validation.html"}},[t._v("Asynchronous validation")]),t._v("). This function has properties "),a("code",[t._v("errors")]),t._v(" and "),a("code",[t._v("schema")]),t._v(". Errors encountered during the last validation are assigned to "),a("code",[t._v("errors")]),t._v(" property (it is assigned "),a("code",[t._v("null")]),t._v(" if there was no errors). "),a("code",[t._v("schema")]),t._v(" property contains the reference to the original schema.")],1),t._v(" "),a("p",[t._v("The schema passed to this method will be validated against meta-schema unless "),a("code",[t._v("validateSchema")]),t._v(" option is false. If schema is invalid, an error will be thrown. See "),a("a",{attrs:{href:"#options"}},[t._v("options")]),t._v(".")]),t._v(" "),a("p",[t._v("In typescript returned validation function can be a type guard if you pass type parameter:")]),t._v(" "),a("div",{staticClass:"language-typescript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-typescript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("interface")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Foo")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n foo"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("number")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" FooSchema"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" JSONSchemaType"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Foo"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n type"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"object"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n properties"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("foo"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("type"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n required"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"foo"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n additionalProperties"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" validate "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" ajv"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token generic-function"}},[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("compile")]),a("span",{pre:!0,attrs:{class:"token generic class-name"}},[a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("Foo"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")])])]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("FooSchema"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// type of validate extends `(data: any) => data is Foo`")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("any")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("foo"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("if")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("validate")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// data is Foo here")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("console")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("foo"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("else")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("console")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("validate"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("errors"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[t._v("See more advanced example in "),a("a",{attrs:{href:"https://github.com/ajv-validator/ajv/blob/master/spec/types/json-schema.spec.ts",target:"_blank",rel:"noopener noreferrer"}},[t._v("the test"),a("OutboundLink")],1),t._v(".")]),t._v(" "),a("p",[a("a",{attrs:{name:"jtd-serialize"}})]),t._v(" "),a("h3",{attrs:{id:"ajv-compileserializer-schema-object-data-any-string"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ajv-compileserializer-schema-object-data-any-string"}},[t._v("#")]),t._v(" ajv.compileSerializer(schema: object): (data: any) => string "),a("Badge",{attrs:{text:"NEW"}})],1),t._v(" "),a("p",[t._v("Generate serializing function based on the "),a("RouterLink",{attrs:{to:"/json-type-definition.html"}},[t._v("JTD schema")]),t._v(" (caches the schema) - only in JTD instance of Ajv (see example below).")],1),t._v(" "),a("p",[t._v("Serializers compiled from JTD schemas can be more than 10 times faster than using "),a("code",[t._v("JSON.stringify")]),t._v(", because they do not traverse all the data, only the properties that are defined in the schema.")]),t._v(" "),a("p",[t._v("Properties not defined in the schema will not be included in serialized JSON, unless the schema has "),a("code",[t._v("additionalProperties: true")]),t._v(" flag. It can also be beneficial from the application security point of view, as it prevents leaking accidentally/temporarily added additional properties to the API responses.")]),t._v(" "),a("p",[t._v("If you use JTD with typescript, the type for the schema can be derived from the data type, and generated serializer would only accept correct data type in this case:")]),t._v(" "),a("div",{staticClass:"language-typescript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-typescript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("import")]),t._v(" Ajv"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("JTDSchemaType"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("from")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ajv/dist/jtd"')]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" ajv "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Ajv")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("interface")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("MyData")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n foo"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("number")]),t._v("\n bar"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("?")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("string")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" mySchema"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" JTDSchemaType"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("MyData"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n properties"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n foo"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("type"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"int32"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// any JTD number type would be accepted here")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n optionalProperties"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n bar"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("type"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"string"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" serializeMyData "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" ajv"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("compileSerializer")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("mySchema"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// serializeMyData has type (x: MyData) => string")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// it prevents you from accidentally passing the wrong type")]),t._v("\n")])])]),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("Compiled serializers do NOT validate data!")]),t._v(" "),a("p",[t._v("It is assumed that the data is valid according to the schema.")])]),t._v(" "),a("p",[a("a",{attrs:{name:"jtd-parse"}})]),t._v(" "),a("h3",{attrs:{id:"ajv-compileparser-schema-object-json-string-any"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ajv-compileparser-schema-object-json-string-any"}},[t._v("#")]),t._v(" ajv.compileParser(schema: object): (json: string) => any "),a("Badge",{attrs:{text:"NEW"}})],1),t._v(" "),a("p",[t._v("Generate parsing function based on the "),a("RouterLink",{attrs:{to:"/json-type-definition.html"}},[t._v("JTD schema")]),t._v(" (caches the schema) - only in JTD instance of Ajv (see example below).")],1),t._v(" "),a("p",[t._v("Parsers compiled from JTD schemas have comparable performance to "),a("code",[t._v("JSON.parse")]),a("sup",[t._v("*")]),t._v(" in case JSON string is valid according to the schema (and they do not just parse JSON - they ensure that parsed JSON is valid according to the schema as they parse), but they can be many times faster in case the string is invalid - for example, if schema expects an object, and JSON string is array the parser would fail on the first character.")]),t._v(" "),a("p",[t._v("Parsing will fail if there are properties not defined in the schema, unless the schema has "),a("code",[t._v("additionalProperties: true")]),t._v(" flag.")]),t._v(" "),a("p",[t._v("If you use JTD with typescript, the type for the schema can be derived from the data type, and generated parser will return correct data type (see definitions example in the "),a("a",{attrs:{href:"#jtd-serialize"}},[t._v("serialize")]),t._v(" section):")]),t._v(" "),a("div",{staticClass:"language-typescript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-typescript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" parseMyData "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" ajv"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("compileParser")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("mySchema"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// parseMyData has type (s: string) => MyData | undefined")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// it returns correct data type in case parsing is successful and undefined if not")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" validData "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("parseMyData")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'{\"foo\":1}'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// {foo: 1} - success")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" invalidData "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("parseMyData")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'{\"x\":1}'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// undefined - failure")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("console")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("parseMyData"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("position"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// 4")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("console")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("parseMyData"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("message"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// property x not allowed")]),t._v("\n")])])]),a("p",[a("sup",[t._v("*")]),t._v(" As long as empty schema "),a("code",[t._v("{}")]),t._v(" is not used - there is a possibility to improve performance in this case. Also, the performance of parsing "),a("code",[t._v("discriminator")]),t._v(" schemas depends on the position of discriminator tag in the schema - the best parsing performance will be achieved if the tag is the first property - this is how compiled JTD serializers generate JSON in case of discriminator schemas.")]),t._v(" "),a("p",[a("a",{attrs:{name:"api-compileAsync"}})]),t._v(" "),a("h3",{attrs:{id:"ajv-compileasync-schema-object-meta-boolean-promise-function"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ajv-compileasync-schema-object-meta-boolean-promise-function"}},[t._v("#")]),t._v(" ajv.compileAsync(schema: object, meta?: boolean): Promise < Function >")]),t._v(" "),a("p",[t._v("Asynchronous version of "),a("code",[t._v("compile")]),t._v(" method that loads missing remote schemas using asynchronous function in "),a("code",[t._v("options.loadSchema")]),t._v(". This function returns a Promise that resolves to a validation function. An optional callback passed to "),a("code",[t._v("compileAsync")]),t._v(" will be called with 2 parameters: error (or null) and validating function. The returned promise will reject (and the callback will be called with an error) when:")]),t._v(" "),a("ul",[a("li",[t._v("missing schema can't be loaded ("),a("code",[t._v("loadSchema")]),t._v(" returns a Promise that rejects).")]),t._v(" "),a("li",[t._v("a schema containing a missing reference is loaded, but the reference cannot be resolved.")]),t._v(" "),a("li",[t._v("schema (or some loaded/referenced schema) is invalid.")])]),t._v(" "),a("p",[t._v("The function compiles schema and loads the first missing schema (or meta-schema) until all missing schemas are loaded.")]),t._v(" "),a("p",[t._v("You can asynchronously compile meta-schema by passing "),a("code",[t._v("true")]),t._v(" as the second parameter.")]),t._v(" "),a("p",[t._v("Similarly to "),a("code",[t._v("compile")]),t._v(", it can return type guard in typescript.")]),t._v(" "),a("p",[t._v("See example in "),a("RouterLink",{attrs:{to:"/guide/managing-schemas.html#asynchronous-schema-loading"}},[t._v("Asynchronous schema loading")]),t._v(".")],1),t._v(" "),a("h3",{attrs:{id:"ajv-validate-schemaorref-object-string-data-any-boolean"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ajv-validate-schemaorref-object-string-data-any-boolean"}},[t._v("#")]),t._v(" ajv.validate(schemaOrRef: object | string, data: any): boolean")]),t._v(" "),a("p",[t._v("Validate data using passed schema (it will be compiled and cached).")]),t._v(" "),a("p",[t._v("Instead of the schema you can use the key that was previously passed to "),a("code",[t._v("addSchema")]),t._v(", the schema id if it was present in the schema or any previously resolved reference.")]),t._v(" "),a("p",[t._v("Validation errors will be available in the "),a("code",[t._v("errors")]),t._v(" property of Ajv instance ("),a("code",[t._v("null")]),t._v(" if there were no errors).")]),t._v(" "),a("p",[t._v("In typescript this method can act as a type guard (similarly to function returned by "),a("code",[t._v("compile")]),t._v(" method - see example there).")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("Save errors property")]),t._v(" "),a("p",[t._v("Every time this method is called the errors are overwritten so you need to copy them to another variable if you want to use them later.")])]),t._v(" "),a("p",[t._v("If the schema is asynchronous (has "),a("code",[t._v("$async")]),t._v(" keyword on the top level) this method returns a Promise. See "),a("RouterLink",{attrs:{to:"/guide/async-validation.html"}},[t._v("Asynchronous validation")]),t._v(".")],1),t._v(" "),a("p",[a("a",{attrs:{id:"add-schema"}})]),t._v(" "),a("h3",{attrs:{id:"ajv-addschema-schema-object-object-key-string-ajv"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ajv-addschema-schema-object-object-key-string-ajv"}},[t._v("#")]),t._v(" ajv.addSchema(schema: object | object[], key?: string): Ajv")]),t._v(" "),a("p",[t._v("Add schema(s) to validator instance. This method does not compile schemas (but it still validates them). Because of that dependencies can be added in any order and circular dependencies are supported. It also prevents unnecessary compilation of schemas that are containers for other schemas but not used as a whole.")]),t._v(" "),a("p",[t._v("Array of schemas can be passed (schemas should have ids), the second parameter will be ignored.")]),t._v(" "),a("p",[t._v("Key can be passed that can be used to reference the schema and will be used as the schema id if there is no id inside the schema. If the key is not passed, the schema id will be used as the key.")]),t._v(" "),a("p",[t._v("Once the schema is added, it (and all the references inside it) can be referenced in other schemas and used to validate data.")]),t._v(" "),a("p",[t._v("Although "),a("code",[t._v("addSchema")]),t._v(" does not compile schemas, explicit compilation is not required - the schema will be compiled when it is used first time.")]),t._v(" "),a("p",[t._v("By default the schema is validated against meta-schema before it is added, and if the schema does not pass validation the exception is thrown. This behaviour is controlled by "),a("code",[t._v("validateSchema")]),t._v(" option.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("Method chaining")]),t._v(" "),a("p",[t._v("Ajv returns its instance for chaining from all methods prefixed "),a("code",[t._v("add*")]),t._v(" and "),a("code",[t._v("remove*")]),t._v(":")]),t._v(" "),a("div",{staticClass:"language-javascript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-javascript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" validate "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Ajv")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addSchema")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("schema"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addFormat")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("name"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" regex"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getSchema")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("uri"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),a("h3",{attrs:{id:"ajv-addmetaschema-schema-object-object-key-string-ajv"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ajv-addmetaschema-schema-object-object-key-string-ajv"}},[t._v("#")]),t._v(" ajv.addMetaSchema(schema: object | object[], key?: string): Ajv")]),t._v(" "),a("p",[t._v("Adds meta schema(s) that can be used to validate other schemas. That function should be used instead of "),a("code",[t._v("addSchema")]),t._v(" because there may be instance options that would compile a meta schema incorrectly (at the moment it is "),a("code",[t._v("removeAdditional")]),t._v(" option).")]),t._v(" "),a("p",[t._v("There is no need to explicitly add draft-07 meta schema (http://json-schema.org/draft-07/schema) - it is added by default, unless option "),a("code",[t._v("meta")]),t._v(" is set to "),a("code",[t._v("false")]),t._v(". You only need to use it if you have a changed meta-schema that you want to use to validate your schemas. See "),a("code",[t._v("validateSchema")]),t._v(".")]),t._v(" "),a("p",[a("a",{attrs:{name:"api-validateschema"}})]),t._v(" "),a("h3",{attrs:{id:"ajv-validateschema-schema-object-boolean"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ajv-validateschema-schema-object-boolean"}},[t._v("#")]),t._v(" ajv.validateSchema(schema: object): boolean")]),t._v(" "),a("p",[t._v("Validates schema. This method should be used to validate schemas rather than "),a("code",[t._v("validate")]),t._v(" due to the inconsistency of "),a("code",[t._v("uri")]),t._v(" format in JSON Schema standard.")]),t._v(" "),a("p",[t._v("By default this method is called automatically when the schema is added, so you rarely need to use it directly.")]),t._v(" "),a("p",[t._v("If schema doesn't have "),a("code",[t._v("$schema")]),t._v(" property, it is validated against draft 6 meta-schema (option "),a("code",[t._v("meta")]),t._v(" should not be false).")]),t._v(" "),a("p",[t._v("If schema has "),a("code",[t._v("$schema")]),t._v(" property, then the schema with this id (that should be previously added) is used to validate passed schema.")]),t._v(" "),a("p",[t._v("Errors will be available at "),a("code",[t._v("ajv.errors")]),t._v(".")]),t._v(" "),a("h3",{attrs:{id:"ajv-getschema-key-string-undefined-data-any-boolean-promise-any"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ajv-getschema-key-string-undefined-data-any-boolean-promise-any"}},[t._v("#")]),t._v(" ajv.getSchema(key: string): undefined | ((data: any) => boolean | Promise < any >)")]),t._v(" "),a("p",[t._v("Retrieve compiled schema previously added with "),a("code",[t._v("addSchema")]),t._v(" by the key passed to "),a("code",[t._v("addSchema")]),t._v(" or by its full reference (id). The returned validating function has "),a("code",[t._v("schema")]),t._v(" property with the reference to the original schema.")]),t._v(" "),a("h3",{attrs:{id:"ajv-removeschema-schemaorref-object-string-regexp-ajv"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ajv-removeschema-schemaorref-object-string-regexp-ajv"}},[t._v("#")]),t._v(" ajv.removeSchema(schemaOrRef: object | string | RegExp): Ajv")]),t._v(" "),a("p",[t._v("Remove added/cached schema. Even if schema is referenced by other schemas it can be safely removed as dependent schemas have local references.")]),t._v(" "),a("p",[t._v("Schema can be removed using:")]),t._v(" "),a("ul",[a("li",[t._v("key passed to "),a("code",[t._v("addSchema")])]),t._v(" "),a("li",[t._v("it's full reference (id)")]),t._v(" "),a("li",[t._v("RegExp that should match schema id or key (meta-schemas won't be removed)")]),t._v(" "),a("li",[t._v("actual schema object (that will be optionally serialized) to remove schema from cache")])]),t._v(" "),a("p",[t._v("If no parameter is passed all schemas but meta-schemas will be removed and the cache will be cleared.")]),t._v(" "),a("p",[a("a",{attrs:{name:"api-addformat"}})]),t._v(" "),a("h3",{attrs:{id:"ajv-addformat-name-string-format-format-ajv"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ajv-addformat-name-string-format-format-ajv"}},[t._v("#")]),t._v(" ajv.addFormat(name: string, format: Format): Ajv")]),t._v(" "),a("div",{staticClass:"language-typescript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-typescript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("type")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Format")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// to ignore this format (and pass validation)")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("string")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// will be converted to RegExp")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v(" RegExp\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("string")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=>")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("boolean")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v(" Object "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// format definition (see below and in types)")]),t._v("\n")])])]),a("p",[t._v("Add format to validate strings or numbers.")]),t._v(" "),a("p",[t._v("If object is passed it should have properties "),a("code",[t._v("validate")]),t._v(", "),a("code",[t._v("compare")]),t._v(" and "),a("code",[t._v("async")]),t._v(":")]),t._v(" "),a("div",{staticClass:"language-typescript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-typescript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("interface")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("FormatDefinition")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// actual type definition is more precise - see types.ts")]),t._v("\n validate"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("string")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v(" RegExp "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("number")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("string")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=>")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("boolean")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("Promise")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("boolean")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n compare"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("data1"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("string")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" data2"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("string")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("number")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// an optional function that accepts two strings")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// and compares them according to the format meaning.")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// This function is used with keywords `formatMaximum`/`formatMinimum`")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// (defined in [ajv-keywords](https://github.com/ajv-validator/ajv-keywords) package).")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// It should return `1` if the first value is bigger than the second value,")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// `-1` if it is smaller and `0` if it is equal.")]),t._v("\n async"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("?")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// if `validate` is an asynchronous function")]),t._v("\n type"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("?")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"string"')]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v('// "string" is default. If data type is different, the validation will pass.')]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[t._v("Formats can be also added via "),a("code",[t._v("formats")]),t._v(" option.")]),t._v(" "),a("p",[a("a",{attrs:{name:"api-addkeyword"}})]),t._v(" "),a("h3",{attrs:{id:"ajv-addkeyword-definition-string-object-ajv"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ajv-addkeyword-definition-string-object-ajv"}},[t._v("#")]),t._v(" ajv.addKeyword(definition: string | object): Ajv")]),t._v(" "),a("p",[t._v("Add validation keyword to Ajv instance.")]),t._v(" "),a("p",[t._v("Keyword should be different from all standard JSON Schema keywords and different from previously defined keywords. There is no way to redefine keywords or to remove keyword definition from the instance.")]),t._v(" "),a("p",[t._v("Keyword must start with a letter, "),a("code",[t._v("_")]),t._v(" or "),a("code",[t._v("$")]),t._v(", and may continue with letters, numbers, "),a("code",[t._v("_")]),t._v(", "),a("code",[t._v("$")]),t._v(", or "),a("code",[t._v("-")]),t._v(".\nIt is recommended to use an application-specific prefix for keywords to avoid current and future name collisions.")]),t._v(" "),a("p",[t._v("Example Keywords:")]),t._v(" "),a("ul",[a("li",[a("code",[t._v('"xyz-example"')]),t._v(": valid, and uses prefix for the xyz project to avoid name collisions.")]),t._v(" "),a("li",[a("code",[t._v('"example"')]),t._v(": valid, but not recommended as it may collide with future versions of JSON Schema etc.")]),t._v(" "),a("li",[a("code",[t._v('"3-example"')]),t._v(": invalid as numbers are not allowed to be the first character in a keyword")])]),t._v(" "),a("p",[t._v("Keyword definition is an object with the following properties:")]),t._v(" "),a("div",{staticClass:"language-typescript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-typescript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("interface")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("KeywordDefinition")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// actual type definition is more precise - see types.ts")]),t._v("\n keyword"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("string")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// keyword name")]),t._v("\n type"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("?")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("string")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("string")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// JSON data type(s) the keyword applies to. Default - all types.")]),t._v("\n schemaType"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("?")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("string")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("string")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// the required schema JSON type")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("code")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("?")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("Function")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// function to generate code, used for all pre-defined keywords")]),t._v("\n validate"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("?")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("Function")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// validating function")]),t._v("\n compile"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("?")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("Function")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// compiling function")]),t._v("\n macro"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("?")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("Function")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// macro function")]),t._v("\n error"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("?")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" object "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// error definition object - see types.ts")]),t._v("\n schema"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("?")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v('// used with "validate" keyword to not pass schema to function')]),t._v("\n metaSchema"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("?")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" object "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// meta-schema for keyword schema")]),t._v("\n dependencies"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("?")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("string")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// properties that must be present in the parent schema -")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// it will be checked during schema compilation")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("implements")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("?")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("string")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// keyword names to reserve that this keyword implements")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("modifying")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("?")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// MUST be passed if keyword modifies data")]),t._v("\n valid"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("?")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("boolean")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// to pre-define validation result, validation function result will be ignored -")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// this option MUST NOT be used with `macro` keywords.")]),t._v("\n $data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("?")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// to support [\\$data reference](./guide/combining-schemas.md#data-reference) as the value of keyword.")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// The reference will be resolved at validation time. If the keyword has meta-schema,")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// it would be extended to allow $data and it will be used to validate the resolved value.")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Supporting $data reference requires that keyword has `code` or `validate` function")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// (the latter can be used in addition to `compile` or `macro`).")]),t._v("\n $dataError"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("?")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" object "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// error definition object for invalid \\$data schema - see types.ts")]),t._v("\n async"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("?")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// if the validation function is asynchronous")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// (whether it is returned from `compile` or passed in `validate` property).")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// It should return a promise that resolves with a value `true` or `false`.")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v('// This option is ignored in case of "macro" and "code" keywords.')]),t._v("\n errors"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("?")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("boolean")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"full"')]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// whether keyword returns errors.")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// If this property is not passed Ajv will determine")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// if the errors were set in case of failed validation.")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[t._v("If only the property "),a("code",[t._v("keyword")]),t._v(" is provided in the definition object, you can also pass the keyword name as the argument.")]),t._v(" "),a("p",[a("code",[t._v("compile")]),t._v(", "),a("code",[t._v("macro")]),t._v(" and "),a("code",[t._v("code")]),t._v(" are mutually exclusive, only one should be used at a time. "),a("code",[t._v("validate")]),t._v(" can be used separately or in addition to "),a("code",[t._v("compile")]),t._v(" or "),a("code",[t._v("macro")]),t._v(" to support "),a("RouterLink",{attrs:{to:"/guide/combining-schemas.html#data-reference"}},[t._v("$data reference")]),t._v(".")],1),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("Keyword is validated only for applicable data types")]),t._v(" "),a("p",[t._v("If the keyword is validating data type that is different from the type(s) in its definition, the validation function will not be called (and expanded macro will not be used), so there is no need to check for data type inside validation function or inside schema returned by macro function (unless you want to enforce a specific type and for some reason do not want to use a separate "),a("code",[t._v("type")]),t._v(" keyword for that). In the same way as standard keywords work, if the keyword does not apply to the data type being validated, the validation of this keyword will succeed.")])]),t._v(" "),a("p",[t._v("See "),a("RouterLink",{attrs:{to:"/keywords.html"}},[t._v("User defined keywords")]),t._v(" for more details.")],1),t._v(" "),a("h3",{attrs:{id:"ajv-getkeyword-keyword-string-object-boolean"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ajv-getkeyword-keyword-string-object-boolean"}},[t._v("#")]),t._v(" ajv.getKeyword(keyword: string): object | boolean")]),t._v(" "),a("p",[t._v("Returns keyword definition, "),a("code",[t._v("false")]),t._v(" if the keyword is unknown.")]),t._v(" "),a("h3",{attrs:{id:"ajv-removekeyword-keyword-string-ajv"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ajv-removekeyword-keyword-string-ajv"}},[t._v("#")]),t._v(" ajv.removeKeyword(keyword: string): Ajv")]),t._v(" "),a("p",[t._v("Removes added or pre-defined keyword so you can redefine them.")]),t._v(" "),a("p",[t._v("While this method can be used to extend pre-defined keywords, it can also be used to completely change their meaning - it may lead to unexpected results.")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("Compiled schemas and removed keywords")]),t._v(" "),a("p",[t._v("The schemas compiled before the keyword is removed will continue to work without changes. To recompile schemas use "),a("code",[t._v("removeSchema")]),t._v(" method and compile them again.")])]),t._v(" "),a("h3",{attrs:{id:"ajv-errorstext-errors-object-options-object-string"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ajv-errorstext-errors-object-options-object-string"}},[t._v("#")]),t._v(" ajv.errorsText(errors?: object[], options?: object): string")]),t._v(" "),a("p",[t._v("Returns the text with all errors in a String.")]),t._v(" "),a("p",[t._v("Options can have properties "),a("code",[t._v("separator")]),t._v(' (string used to separate errors, ", " by default) and '),a("code",[t._v("dataVar")]),t._v(' (the variable name that instancePath is prefixed with, "data" by default).')]),t._v(" "),a("h2",{attrs:{id:"validation-errors"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#validation-errors"}},[t._v("#")]),t._v(" Validation errors")]),t._v(" "),a("p",[t._v("In case of validation failure, Ajv assigns the array of errors to "),a("code",[t._v("errors")]),t._v(" property of validation function (or to "),a("code",[t._v("errors")]),t._v(" property of Ajv instance when "),a("code",[t._v("validate")]),t._v(" or "),a("code",[t._v("validateSchema")]),t._v(" methods were called). In case of "),a("RouterLink",{attrs:{to:"/guide/async-validation.html"}},[t._v("asynchronous validation")]),t._v(", the returned promise is rejected with exception "),a("code",[t._v("Ajv.ValidationError")]),t._v(" that has "),a("code",[t._v("errors")]),t._v(" property.")],1),t._v(" "),a("h3",{attrs:{id:"error-objects"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-objects"}},[t._v("#")]),t._v(" Error objects")]),t._v(" "),a("p",[t._v("Each reported error is an object with the following properties:")]),t._v(" "),a("div",{staticClass:"language-typescript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-typescript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("interface")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ErrorObject")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n keyword"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("string")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// validation keyword.")]),t._v("\n instancePath"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("string")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v('// JSON Pointer to the location in the data instance (e.g., `"/prop/1/subProp"`).')]),t._v("\n schemaPath"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("string")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// JSON Pointer to the location of the failing keyword in the schema")]),t._v("\n params"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" object "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// type is defined by keyword value, see below")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// params property is the object with the additional information about error")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// it can be used to generate error messages")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// (e.g., using [ajv-i18n](https://github.com/ajv-validator/ajv-i18n) package).")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// See below for parameters set by all keywords.")]),t._v("\n propertyName"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("?")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("string")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// set for errors in `propertyNames` keyword schema.")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// `instancePath` still points to the object in this case.")]),t._v("\n message"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("?")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("string")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// the error message (can be excluded with option `messages: false`).")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Options below are added with `verbose` option:")]),t._v("\n schema"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("?")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("any")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// the value of the failing keyword in the schema.")]),t._v("\n parentSchema"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("?")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" object "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// the schema containing the keyword.")]),t._v("\n data"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("?")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("any")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// the data validated by the keyword.")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[t._v("For "),a("RouterLink",{attrs:{to:"/json-type-definition.html"}},[t._v("JTD")]),t._v(" schemas "),a("code",[t._v("instancePath")]),t._v(" and "),a("code",[t._v("schemaPath")]),t._v(" depend on the nature of the failure - the errors are consistent with "),a("a",{attrs:{href:"https://datatracker.ietf.org/doc/rfc8927/",target:"_blank",rel:"noopener noreferrer"}},[t._v("RFC8927"),a("OutboundLink")],1),t._v(".")],1),t._v(" "),a("h3",{attrs:{id:"error-parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-parameters"}},[t._v("#")]),t._v(" Error parameters")]),t._v(" "),a("p",[t._v("Properties of "),a("code",[t._v("params")]),t._v(" object in errors depend on the keyword that failed validation.")]),t._v(" "),a("p",[t._v("In typescript, the ErrorObject is a discriminated union that allows to determine the type of error parameters based on the value of keyword:")]),t._v(" "),a("div",{staticClass:"language-typescript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-typescript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" ajv "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Ajv")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" validate "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" ajv"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token generic-function"}},[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("compile")]),a("span",{pre:!0,attrs:{class:"token generic class-name"}},[a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("MyData"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")])])]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("schema"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("if")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("validate")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// data is MyData here")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// ...")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("else")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// DefinedError is a type for all pre-defined keywords errors,")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// validate.errors has type ErrorObject[] - to allow user-defined keywords with any error parameters.")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Users can extend DefinedError to include the keywords errors they defined.")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" err "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("of")]),t._v(" validate"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("errors "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("as")]),t._v(" DefinedError"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("switch")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("err"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("keyword"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("case")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"maximum"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("console")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("err"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("limit"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("break")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("case")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"pattern"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("console")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("err"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("pattern"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("break")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// ...")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[t._v("Also see an example in "),a("a",{attrs:{href:"https://github.com/ajv-validator/ajv/blob/master/spec/types/error-parameters.spec.ts",target:"_blank",rel:"noopener noreferrer"}},[t._v("this test"),a("OutboundLink")],1)]),t._v(" "),a("ul",[a("li",[a("code",[t._v("maxItems")]),t._v(", "),a("code",[t._v("minItems")]),t._v(", "),a("code",[t._v("maxLength")]),t._v(", "),a("code",[t._v("minLength")]),t._v(", "),a("code",[t._v("maxProperties")]),t._v(", "),a("code",[t._v("minProperties")]),t._v(":")])]),t._v(" "),a("div",{staticClass:"language-typescript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-typescript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("type")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ErrorParams")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("limit"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("number")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// keyword value")]),t._v("\n")])])]),a("ul",[a("li",[a("code",[t._v("additionalItems")]),t._v(":")])]),t._v(" "),a("div",{staticClass:"language-typescript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-typescript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// when `items` is an array of schemas and `additionalItems` is false:")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("type")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ErrorParams")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("limit"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("number")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// the maximum number of allowed items")]),t._v("\n")])])]),a("ul",[a("li",[a("code",[t._v("additionalProperties")]),t._v(":")])]),t._v(" "),a("div",{staticClass:"language-typescript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-typescript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("type")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ErrorParams")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("additionalProperty"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("string")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// the property not defined in `properties` and `patternProperties` keywords")]),t._v("\n")])])]),a("ul",[a("li",[a("code",[t._v("dependencies")]),t._v(":")])]),t._v(" "),a("div",{staticClass:"language-typescript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-typescript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("type")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ErrorParams")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n property"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("string")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// dependent property,")]),t._v("\n missingProperty"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("string")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// required missing dependency - only the first one is reported")]),t._v("\n deps"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("string")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// required dependencies, comma separated list as a string (TODO change to string[])")]),t._v("\n depsCount"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("number")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// the number of required dependencies")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("ul",[a("li",[a("code",[t._v("format")]),t._v(":")])]),t._v(" "),a("div",{staticClass:"language-typescript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-typescript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("type")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ErrorParams")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("format"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("string")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// keyword value")]),t._v("\n")])])]),a("ul",[a("li",[a("code",[t._v("maximum")]),t._v(", "),a("code",[t._v("minimum")]),t._v(", "),a("code",[t._v("exclusiveMaximum")]),t._v(", "),a("code",[t._v("exclusiveMinimum")]),t._v(":")])]),t._v(" "),a("div",{staticClass:"language-typescript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-typescript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("type")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ErrorParams")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n limit"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("number")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// keyword value")]),t._v("\n comparison"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"<="')]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('">="')]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"<"')]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('">"')]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// operation to compare the data to the limit,")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// with data on the left and the limit on the right")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("ul",[a("li",[a("code",[t._v("multipleOf")]),t._v(":")])]),t._v(" "),a("div",{staticClass:"language-typescript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-typescript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("type")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ErrorParams")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("multipleOf"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("number")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// keyword value")]),t._v("\n")])])]),a("ul",[a("li",[a("code",[t._v("pattern")]),t._v(":")])]),t._v(" "),a("div",{staticClass:"language-typescript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-typescript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("type")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ErrorParams")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("pattern"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("string")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// keyword value")]),t._v("\n")])])]),a("ul",[a("li",[a("code",[t._v("required")]),t._v(":")])]),t._v(" "),a("div",{staticClass:"language-typescript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-typescript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("type")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ErrorParams")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("missingProperty"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("string")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// required property that is missing")]),t._v("\n")])])]),a("ul",[a("li",[a("code",[t._v("propertyNames")]),t._v(":")])]),t._v(" "),a("div",{staticClass:"language-typescript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-typescript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("type")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ErrorParams")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("propertyName"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("string")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// invalid property name")]),t._v("\n")])])]),a("p",[t._v("User-defined keywords can define other keyword parameters.")]),t._v(" "),a("h3",{attrs:{id:"errors-i18n"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#errors-i18n"}},[t._v("#")]),t._v(" Errors i18n")]),t._v(" "),a("p",[t._v("You can use "),a("a",{attrs:{href:"https://github.com/ajv-validator/ajv-i18n",target:"_blank",rel:"noopener noreferrer"}},[t._v("ajv-i18n"),a("OutboundLink")],1),t._v(" package to generate errors in other languages.")]),t._v(" "),a("h3",{attrs:{id:"error-logging"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-logging"}},[t._v("#")]),t._v(" Error logging")]),t._v(" "),a("p",[t._v("A logger instance can be passed via "),a("code",[t._v("logger")]),t._v(" option to Ajv constructor. The use of other logging packages is supported as long as the package or its associated wrapper exposes the required methods. If any of the required methods are missing an exception will be thrown.")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("Required Methods")]),t._v(": "),a("code",[t._v("log")]),t._v(", "),a("code",[t._v("warn")]),t._v(", "),a("code",[t._v("error")])])]),t._v(" "),a("div",{staticClass:"language-javascript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-javascript"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" otherLogger "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("OtherLogger")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" ajv "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Ajv")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("logger")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("log")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" console"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("bind")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("console"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function-variable function"}},[t._v("warn")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("warn")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n otherLogger"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("logWarn")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("apply")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("otherLogger"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" arguments"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token function-variable function"}},[t._v("error")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("error")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n otherLogger"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("logError")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("apply")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("otherLogger"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" arguments"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n console"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("error")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("apply")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("console"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" arguments"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h5",{attrs:{id:"options"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#options"}},[t._v("#")]),t._v(" Options")]),t._v(" "),a("p",[t._v("This section is moved to "),a("RouterLink",{attrs:{to:"/options.html"}},[t._v("Initialization options")]),t._v(" page")],1)])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/49.d9bd57e6.js b/assets/js/49.d9bd57e6.js new file mode 100644 index 000000000..f6d6f89d9 --- /dev/null +++ b/assets/js/49.d9bd57e6.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[49],{398:function(e,t,a){"use strict";a.r(t);var s=a(14),i=Object(s.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"contributing-guide"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#contributing-guide"}},[e._v("#")]),e._v(" Contributing guide")]),e._v(" "),t("p",[e._v("Thank you for your help making Ajv better! Every contribution is appreciated. There are many areas where you can contribute.")]),e._v(" "),t("p",[e._v("More than 100 people contributed to Ajv, and we would love to have you join the development. We welcome implementing new features that will benefit many users and ideas to improve our documentation.")]),e._v(" "),t("p",[e._v("At Ajv, we are committed to creating more equitable and inclusive spaces for our community and team members to contribute to discussions that affect both this project and our ongoing work in the open source ecosystem.")]),e._v(" "),t("p",[e._v("We strive to create an environment of respect and healthy discourse by setting standards for our interactions and we expect it from all members of our community - from long term project member to first time visitor. For more information, review our "),t("RouterLink",{attrs:{to:"/CODE_OF_CONDUCT.html"}},[e._v("code of conduct")]),e._v(" and values.")],1),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("Submit issue first")]),e._v(" "),t("p",[e._v("If you plan to implement a new feature or some other change please create an issue first, to make sure that your work is not lost.")])]),e._v(" "),t("p"),t("div",{staticClass:"table-of-contents"},[t("ul",[t("li",[t("a",{attrs:{href:"#documentation"}},[e._v("Documentation")])]),t("li",[t("a",{attrs:{href:"#issues"}},[e._v("Issues")]),t("ul",[t("li",[t("a",{attrs:{href:"#bug-reports"}},[e._v("Bug reports")])]),t("li",[t("a",{attrs:{href:"#security-vulnerabilities"}},[e._v("Security vulnerabilities")])]),t("li",[t("a",{attrs:{href:"#change-proposals"}},[e._v("Change proposals")])]),t("li",[t("a",{attrs:{href:"#browser-and-compatibility-issues"}},[e._v("Browser and compatibility issues")])]),t("li",[t("a",{attrs:{href:"#installation-and-dependency-issues"}},[e._v("Installation and dependency issues")])]),t("li",[t("a",{attrs:{href:"#using-json-schema-standard"}},[e._v("Using JSON Schema standard")])]),t("li",[t("a",{attrs:{href:"#ajv-usage-questions"}},[e._v("Ajv usage questions")])])])]),t("li",[t("a",{attrs:{href:"#code"}},[e._v("Code")]),t("ul",[t("li",[t("a",{attrs:{href:"#how-we-make-decisions"}},[e._v("How we make decisions")])]),t("li",[t("a",{attrs:{href:"#development"}},[e._v("Development")])]),t("li",[t("a",{attrs:{href:"#pull-requests"}},[e._v("Pull requests")])]),t("li",[t("a",{attrs:{href:"#contributions-license"}},[e._v("Contributions license")])])])])])]),t("p"),e._v(" "),t("h2",{attrs:{id:"documentation"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#documentation"}},[e._v("#")]),e._v(" Documentation")]),e._v(" "),t("p",[e._v("Ajv has a lot of features and maintaining documentation takes time. If anything is unclear, or could be explained better, we appreciate the time you spend correcting or clarifying it.")]),e._v(" "),t("p",[e._v("There is a link in the bottom of each website page to quickly edit it.")]),e._v(" "),t("h2",{attrs:{id:"issues"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#issues"}},[e._v("#")]),e._v(" Issues")]),e._v(" "),t("p",[e._v("Before submitting the issue:")]),e._v(" "),t("ul",[t("li",[e._v("Search the existing issues")]),e._v(" "),t("li",[e._v("Review "),t("RouterLink",{attrs:{to:"/faq.html"}},[e._v("Frequently Asked Questions")]),e._v(".")],1),e._v(" "),t("li",[e._v("Provide all the relevant information, reducing both your schema and data to the smallest possible size when they still have the issue.")])]),e._v(" "),t("p",[e._v("We value simplicity - simplifying the example that shows the issue makes it more valuable for other users. This process helps us reduce situations where an error is occurring due to incorrect usage rather than a bug.")]),e._v(" "),t("h3",{attrs:{id:"bug-reports"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#bug-reports"}},[e._v("#")]),e._v(" Bug reports")]),e._v(" "),t("p",[e._v("Please make sure to include the following information in the issue:")]),e._v(" "),t("ol",[t("li",[e._v("What version of Ajv are you using?")]),e._v(" "),t("li",[e._v("Does the issue happen if you use the latest version?")]),e._v(" "),t("li",[e._v("Ajv "),t("a",{attrs:{href:"./options"}},[e._v("options object")])]),e._v(" "),t("li",[e._v("Schema and the data you are validating (please make it as small as possible to reproduce the issue).")]),e._v(" "),t("li",[e._v("Your code sample (please use "),t("code",[e._v("options")]),e._v(", "),t("code",[e._v("schema")]),e._v(" and "),t("code",[e._v("data")]),e._v(" as variables).")]),e._v(" "),t("li",[e._v("Validation result, data AFTER validation, error messages.")]),e._v(" "),t("li",[e._v("What results did you expect?")])]),e._v(" "),t("p",[e._v("To speed up investigation and fixes, please include the link to the working code sample at runkit.com (please clone https://runkit.com/esp/ajv-issue).")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://github.com/ajv-validator/ajv/issues/new?template=bug-or-error-report.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("Create bug report"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h3",{attrs:{id:"security-vulnerabilities"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#security-vulnerabilities"}},[e._v("#")]),e._v(" Security vulnerabilities")]),e._v(" "),t("p",[e._v("To report a security vulnerability, please use the\n"),t("a",{attrs:{href:"https://tidelift.com/security",target:"_blank",rel:"noopener noreferrer"}},[e._v("Tidelift security contact"),t("OutboundLink")],1),e._v(".\nTidelift will coordinate the fix and disclosure.")]),e._v(" "),t("p",[e._v("Please do NOT report security vulnerabilities via GitHub issues.")]),e._v(" "),t("p",[t("a",{attrs:{name:"changes"}})]),e._v(" "),t("h3",{attrs:{id:"change-proposals"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#change-proposals"}},[e._v("#")]),e._v(" Change proposals")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://github.com/ajv-validator/ajv/issues/new?template=change.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("Create a proposal"),t("OutboundLink")],1),e._v(" for a new feature, option or some other improvement.")]),e._v(" "),t("p",[e._v("Please include this information:")]),e._v(" "),t("ol",[t("li",[e._v("The version of Ajv you are using.")]),e._v(" "),t("li",[e._v("The problem you want to solve.")]),e._v(" "),t("li",[e._v("Your solution to the problem.")]),e._v(" "),t("li",[e._v("Would you like to implement it?")])]),e._v(" "),t("p",[e._v("If you’re requesting a change, it would be helpful to include this as well:")]),e._v(" "),t("ol",[t("li",[e._v("What you did.")]),e._v(" "),t("li",[e._v("What happened.")]),e._v(" "),t("li",[e._v("What you would like to happen.")])]),e._v(" "),t("p",[e._v("Please include as much details as possible - the more information, the better.")]),e._v(" "),t("p",[t("a",{attrs:{name:"compatibility"}})]),e._v(" "),t("h3",{attrs:{id:"browser-and-compatibility-issues"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#browser-and-compatibility-issues"}},[e._v("#")]),e._v(" Browser and compatibility issues")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://github.com/ajv-validator/ajv/issues/new?template=compatibility.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("Create an issue"),t("OutboundLink")],1),e._v(" to report a compatibility problem that only happens in a particular environment (when your code works correctly in the latest stable Node.js in linux systems but fails in some other environment).")]),e._v(" "),t("p",[e._v("Please include this information:")]),e._v(" "),t("ol",[t("li",[e._v("The version of Ajv you are using.")]),e._v(" "),t("li",[e._v("The environment you have the problem with.")]),e._v(" "),t("li",[e._v("Your code (please make it as small as possible to reproduce the issue).")]),e._v(" "),t("li",[e._v("If your issue is in the browser, please list the other packages loaded in the page in the order they are loaded. Please check if the issue gets resolved (or results change) if you move Ajv bundle closer to the top.")]),e._v(" "),t("li",[e._v("Results in the latest stable Node.js.")]),e._v(" "),t("li",[e._v("Results and error messages in your platform.")])]),e._v(" "),t("p",[t("a",{attrs:{name:"installation"}})]),e._v(" "),t("h3",{attrs:{id:"installation-and-dependency-issues"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#installation-and-dependency-issues"}},[e._v("#")]),e._v(" Installation and dependency issues")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://github.com/ajv-validator/ajv/issues/new?template=installation.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("Create an issue"),t("OutboundLink")],1),e._v(" to report problems that happen during Ajv installation or when Ajv is missing some dependency.")]),e._v(" "),t("p",[e._v("Before submitting the issue, please try the following:")]),e._v(" "),t("ul",[t("li",[e._v("use the latest stable Node.js and "),t("code",[e._v("npm")])]),e._v(" "),t("li",[e._v("try using "),t("code",[e._v("yarn")]),e._v(" instead of "),t("code",[e._v("npm")]),e._v(" - the issue can be related to https://github.com/npm/npm/issues/19877")]),e._v(" "),t("li",[e._v("remove "),t("code",[e._v("node_modules")]),e._v(" and "),t("code",[e._v("package-lock.json")]),e._v(" and run "),t("code",[e._v("npm install")]),e._v(" again")])]),e._v(" "),t("p",[e._v("If nothing helps, please submit:")]),e._v(" "),t("ol",[t("li",[e._v("The version of Ajv you are using")]),e._v(" "),t("li",[e._v("Operating system and Node.js version")]),e._v(" "),t("li",[e._v("Package manager and its version")]),e._v(" "),t("li",[e._v("Link to (or contents of) package.json and package-lock.json")]),e._v(" "),t("li",[e._v("Error messages")]),e._v(" "),t("li",[e._v("The output of "),t("code",[e._v("npm ls")])])]),e._v(" "),t("p",[t("a",{attrs:{name:"json-schema"}})]),e._v(" "),t("h3",{attrs:{id:"using-json-schema-standard"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#using-json-schema-standard"}},[e._v("#")]),e._v(" Using JSON Schema standard")]),e._v(" "),t("p",[e._v("Ajv implements JSON Schema standard draft-04 and draft-06/07.")]),e._v(" "),t("p",[e._v("If it is a general issue related to using the standard keywords included in JSON Schema specification or implementing some advanced validation logic please ask the question on "),t("a",{attrs:{href:"https://stackoverflow.com/questions/ask?tags=jsonschema,ajv",target:"_blank",rel:"noopener noreferrer"}},[e._v("Stack Overflow"),t("OutboundLink")],1),e._v(" (my account is "),t("a",{attrs:{href:"https://stackoverflow.com/users/1816503/esp",target:"_blank",rel:"noopener noreferrer"}},[e._v("esp"),t("OutboundLink")],1),e._v(") or submit the question to "),t("a",{attrs:{href:"https://github.com/json-schema-org/json-schema-spec/issues/new",target:"_blank",rel:"noopener noreferrer"}},[e._v("json-schema.org"),t("OutboundLink")],1),e._v(". Please mention @epoberezkin.")]),e._v(" "),t("p",[t("a",{attrs:{name:"usage"}})]),e._v(" "),t("h3",{attrs:{id:"ajv-usage-questions"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ajv-usage-questions"}},[e._v("#")]),e._v(" Ajv usage questions")]),e._v(" "),t("p",[e._v("The best place to ask a question about using Ajv is "),t("a",{attrs:{href:"https://gitter.im/ajv-validator/ajv",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gitter chat"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("If the question is advanced, it can be submitted to "),t("a",{attrs:{href:"http://stackoverflow.com/questions/ask?tags=jsonschema,ajv",target:"_blank",rel:"noopener noreferrer"}},[e._v("Stack Overflow"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h2",{attrs:{id:"code"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#code"}},[e._v("#")]),e._v(" Code")]),e._v(" "),t("p",[e._v("Thanks a lot for considering contributing to Ajv! Our users have created many great features, and we look forward to your contributions.")]),e._v(" "),t("p",[e._v("For help navigating the code, please review the "),t("RouterLink",{attrs:{to:"/components.html"}},[e._v("Code components")]),e._v(" document.")],1),e._v(" "),t("h3",{attrs:{id:"how-we-make-decisions"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#how-we-make-decisions"}},[e._v("#")]),e._v(" How we make decisions")]),e._v(" "),t("p",[e._v("We value conscious curation of our library size, and balancing performance and functionality. To that end, we cannot accept every suggestion. When evaluating pull requests we consider:")]),e._v(" "),t("ul",[t("li",[e._v("Will this benefit many users or a niche use case?")]),e._v(" "),t("li",[e._v("How will this impact the performance of Ajv?")]),e._v(" "),t("li",[e._v("How will this expand our library size?")])]),e._v(" "),t("p",[e._v("To help us evaluate and understand, when you submit an issue and pull request:")]),e._v(" "),t("ul",[t("li",[e._v("Explain why this feature is important to the user base")]),e._v(" "),t("li",[e._v("Include documentation")]),e._v(" "),t("li",[e._v("Include test coverage with any new feature implementations")])]),e._v(" "),t("p",[e._v("Please include documentation and test coverage with any new feature implementations.")]),e._v(" "),t("h3",{attrs:{id:"development"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#development"}},[e._v("#")]),e._v(" Development")]),e._v(" "),t("p",[e._v("Running tests:")]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[e._v("npm")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("git")]),e._v(" submodule update "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[e._v("--init")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("npm")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("test")]),e._v("\n")])])]),t("p",[t("code",[e._v("npm run build")]),e._v(" - compiles typescript to dist folder.")]),e._v(" "),t("p",[t("code",[e._v("npm run watch")]),e._v(" - automatically compiles typescript when files on lib folder changes.")]),e._v(" "),t("h3",{attrs:{id:"pull-requests"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#pull-requests"}},[e._v("#")]),e._v(" Pull requests")]),e._v(" "),t("p",[e._v("We want to iterate on the code efficiently. To speed up the process, please follow these steps:")]),e._v(" "),t("ol",[t("li",[e._v("Submit an "),t("a",{attrs:{href:"https://github.com/ajv-validator/ajv/issues/new",target:"_blank",rel:"noopener noreferrer"}},[e._v("issue with the bug"),t("OutboundLink")],1),e._v(" or with the proposed change (unless the contribution is to fix the documentation typos and mistakes).")]),e._v(" "),t("li",[e._v("Describe the proposed api and implementation plan (unless the issue is a relatively simple bug and fixing it doesn't change any api).")]),e._v(" "),t("li",[e._v("Once agreed, please write as little code as possible to achieve the desired result. We are passionate about keeping our library size optimized.")]),e._v(" "),t("li",[e._v("Please add the tests both for the added feature and, if you are submitting an option, for the existing behaviour when this option is turned off or not passed.")]),e._v(" "),t("li",[e._v("Please avoid unnecessary changes, refactoring or changing coding styles as part of your change (unless the change was proposed as refactoring).")]),e._v(" "),t("li",[e._v("Follow the coding conventions even if they are not validated.")]),e._v(" "),t("li",[e._v("Please run the tests before committing your code.")]),e._v(" "),t("li",[e._v("If tests fail in CI build after you make a PR please investigate and fix the issue.")])]),e._v(" "),t("h3",{attrs:{id:"contributions-license"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#contributions-license"}},[e._v("#")]),e._v(" Contributions license")]),e._v(" "),t("p",[e._v("When contributing the code you confirm that:")]),e._v(" "),t("ol",[t("li",[e._v("Your contribution is created by you.")]),e._v(" "),t("li",[e._v("You have the right to submit it under the MIT license.")]),e._v(" "),t("li",[e._v("You understand and agree that your contribution is public, will be stored indefinitely, can be redistributed as the part of Ajv or another related package under MIT license, modified or completely removed from Ajv.")]),e._v(" "),t("li",[e._v("You grant irrevocable MIT license to use your contribution as part of Ajv or any other package.")]),e._v(" "),t("li",[e._v("You waive all rights to your contribution.")]),e._v(" "),t("li",[e._v("Unless you request otherwise, you can be mentioned as the author of the contribution in the Ajv documentation and change log.")])])])}),[],!1,null,null,null);t.default=i.exports}}]); \ No newline at end of file diff --git a/assets/js/73.a5150b66.js b/assets/js/73.a5150b66.js new file mode 100644 index 000000000..b52a45f0a --- /dev/null +++ b/assets/js/73.a5150b66.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[73],{419:function(t,s,e){"use strict";e.r(s);var n=e(14),a=Object(n.a)({},(function(){var t=this._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[t("h1",{attrs:{id:"ajv-news"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ajv-news"}},[this._v("#")]),this._v(" Ajv News")]),this._v(" "),t("NewsIndex")],1)}),[],!1,null,null,null);s.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/74.8a90d1b3.js b/assets/js/74.8a90d1b3.js new file mode 100644 index 000000000..614eb35b5 --- /dev/null +++ b/assets/js/74.8a90d1b3.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[74],{422:function(t,e,a){"use strict";a.r(e);var s=a(14),r=Object(s.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"ajv-options"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ajv-options"}},[t._v("#")]),t._v(" Ajv options")]),t._v(" "),e("p"),e("div",{staticClass:"table-of-contents"},[e("ul",[e("li",[e("a",{attrs:{href:"#usage"}},[t._v("Usage")])]),e("li",[e("a",{attrs:{href:"#option-defaults"}},[t._v("Option defaults")])]),e("li",[e("a",{attrs:{href:"#strict-mode-options"}},[t._v("Strict mode options "),e("Badge",{attrs:{text:"v7"}})],1),e("ul",[e("li",[e("a",{attrs:{href:"#strict"}},[t._v("strict")])]),e("li",[e("a",{attrs:{href:"#strictschema"}},[t._v("strictSchema")])]),e("li",[e("a",{attrs:{href:"#strictnumbers"}},[t._v("strictNumbers")])]),e("li",[e("a",{attrs:{href:"#stricttypes"}},[t._v("strictTypes")])]),e("li",[e("a",{attrs:{href:"#stricttuples"}},[t._v("strictTuples")])]),e("li",[e("a",{attrs:{href:"#strictrequired"}},[t._v("strictRequired")])]),e("li",[e("a",{attrs:{href:"#allowuniontypes"}},[t._v("allowUnionTypes")])]),e("li",[e("a",{attrs:{href:"#allowmatchingproperties"}},[t._v("allowMatchingProperties")])]),e("li",[e("a",{attrs:{href:"#validateformats"}},[t._v("validateFormats")])])])]),e("li",[e("a",{attrs:{href:"#validation-and-reporting-options"}},[t._v("Validation and reporting options")]),e("ul",[e("li",[e("a",{attrs:{href:"#data"}},[t._v("$data")])]),e("li",[e("a",{attrs:{href:"#allerrors"}},[t._v("allErrors")])]),e("li",[e("a",{attrs:{href:"#verbose"}},[t._v("verbose")])]),e("li",[e("a",{attrs:{href:"#discriminator"}},[t._v("discriminator")])]),e("li",[e("a",{attrs:{href:"#unicoderegexp"}},[t._v("unicodeRegExp")])]),e("li",[e("a",{attrs:{href:"#timestamp"}},[t._v("timestamp "),e("Badge",{attrs:{text:"JTD only"}})],1)]),e("li",[e("a",{attrs:{href:"#parsedate"}},[t._v("parseDate "),e("Badge",{attrs:{text:"JTD only"}})],1)]),e("li",[e("a",{attrs:{href:"#allowdate"}},[t._v("allowDate "),e("Badge",{attrs:{text:"JTD only"}})],1)]),e("li",[e("a",{attrs:{href:"#int32range"}},[t._v("int32range "),e("Badge",{attrs:{text:"JTD only"}})],1)]),e("li",[e("a",{attrs:{href:"#comment"}},[t._v("$comment")])]),e("li",[e("a",{attrs:{href:"#formats"}},[t._v("formats")])]),e("li",[e("a",{attrs:{href:"#keywords"}},[t._v("keywords")])]),e("li",[e("a",{attrs:{href:"#schemas"}},[t._v("schemas")])]),e("li",[e("a",{attrs:{href:"#logger"}},[t._v("logger")])]),e("li",[e("a",{attrs:{href:"#loadschema"}},[t._v("loadSchema")])])])]),e("li",[e("a",{attrs:{href:"#options-to-modify-validated-data"}},[t._v("Options to modify validated data")]),e("ul",[e("li",[e("a",{attrs:{href:"#removeadditional"}},[t._v("removeAdditional")])]),e("li",[e("a",{attrs:{href:"#usedefaults"}},[t._v("useDefaults")])]),e("li",[e("a",{attrs:{href:"#coercetypes"}},[t._v("coerceTypes")])])])]),e("li",[e("a",{attrs:{href:"#advanced-options"}},[t._v("Advanced options")]),e("ul",[e("li",[e("a",{attrs:{href:"#meta"}},[t._v("meta")])]),e("li",[e("a",{attrs:{href:"#validateschema"}},[t._v("validateSchema")])]),e("li",[e("a",{attrs:{href:"#addusedschema"}},[t._v("addUsedSchema")])]),e("li",[e("a",{attrs:{href:"#inlinerefs"}},[t._v("inlineRefs")])]),e("li",[e("a",{attrs:{href:"#passcontext"}},[t._v("passContext")])]),e("li",[e("a",{attrs:{href:"#looprequired"}},[t._v("loopRequired")])]),e("li",[e("a",{attrs:{href:"#loopenum"}},[t._v("loopEnum "),e("Badge",{attrs:{text:"v7"}})],1)]),e("li",[e("a",{attrs:{href:"#ownproperties"}},[t._v("ownProperties")])]),e("li",[e("a",{attrs:{href:"#multipleofprecision"}},[t._v("multipleOfPrecision")])]),e("li",[e("a",{attrs:{href:"#messages"}},[t._v("messages")])]),e("li",[e("a",{attrs:{href:"#uriresolver"}},[t._v("uriResolver")])]),e("li",[e("a",{attrs:{href:"#code"}},[t._v("code "),e("Badge",{attrs:{text:"v7"}})],1)])])])])]),e("p"),t._v(" "),e("h2",{attrs:{id:"usage"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#usage"}},[t._v("#")]),t._v(" Usage")]),t._v(" "),e("p",[t._v("This page describes properties of the options object that can be passed to Ajv constructor.")]),t._v(" "),e("p",[t._v("For example, to report all validation errors (rather than failing on the first errors) you should pass "),e("code",[t._v("allErrors")]),t._v(" option to constructor:")]),t._v(" "),e("div",{staticClass:"language-javascript extra-class"},[e("pre",{pre:!0,attrs:{class:"language-javascript"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" ajv "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Ajv")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("allErrors")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h2",{attrs:{id:"option-defaults"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#option-defaults"}},[t._v("#")]),t._v(" Option defaults")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("Do NOT pass default options")]),t._v(" "),e("p",[t._v("Passing the value below for some of the options is equivalent to not passing this option at all. There is no need to pass default option values - it is recommended to only pass option values that are different from defaults.")])]),t._v(" "),e("div",{staticClass:"language-javascript extra-class"},[e("pre",{pre:!0,attrs:{class:"language-javascript"}},[e("code",[e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// see types/index.ts for actual types")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" defaultOptions "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// strict mode options (NEW)")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("strict")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("undefined")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// *")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("strictSchema")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// *")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("strictNumbers")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// *")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("strictTypes")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"log"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// *")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("strictTuples")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"log"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// *")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("strictRequired")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// *")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("allowUnionTypes")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// *")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("allowMatchingProperties")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// *")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("validateFormats")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// *")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// validation and reporting options:")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("$data")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// *")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("allErrors")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("verbose")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("discriminator")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// *")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("unicodeRegExp")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// *")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("timestamp")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("undefined")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// **")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("parseDate")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// **")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("allowDate")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// **")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("int32range")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// **")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("$comment")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// *")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("formats")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("keywords")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("schemas")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("logger")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("undefined")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("loadSchema")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("undefined")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// *, function(uri: string): Promise {}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// options to modify validated data:")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("removeAdditional")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("useDefaults")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// *")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("coerceTypes")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// *")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// advanced options:")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("meta")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("validateSchema")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("addUsedSchema")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("inlineRefs")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("passContext")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("loopRequired")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("200")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// *")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("loopEnum")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("200")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// NEW")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("ownProperties")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("multipleOfPrecision")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("undefined")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// *")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("messages")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// false with JTD")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("uriResolver")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("undefined")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("code")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// NEW")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("es5")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("esm")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("lines")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("source")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("process")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("undefined")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// (code: string) => string")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("optimize")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("regExp")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" RegExp\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[e("sup",[t._v("*")]),t._v(" only with JSON Schema")]),t._v(" "),e("p",[e("sup",[t._v("**")]),t._v(" only with JSON Type Definition")]),t._v(" "),e("h2",{attrs:{id:"strict-mode-options"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#strict-mode-options"}},[t._v("#")]),t._v(" Strict mode options "),e("Badge",{attrs:{text:"v7"}})],1),t._v(" "),e("h3",{attrs:{id:"strict"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#strict"}},[t._v("#")]),t._v(" strict")]),t._v(" "),e("p",[t._v("By default Ajv executes in strict mode, that is designed to prevent any unexpected behaviours or silently ignored mistakes in schemas (see "),e("RouterLink",{attrs:{to:"/strict-mode.html"}},[t._v("Strict Mode")]),t._v(" for more details). It does not change any validation results, but it makes some schemas invalid that would be otherwise valid according to JSON Schema specification.")],1),t._v(" "),e("p",[t._v("Option values:")]),t._v(" "),e("ul",[e("li",[e("code",[t._v("true")]),t._v(" - throw an exception when any strict mode restriction is violated.")]),t._v(" "),e("li",[e("code",[t._v('"log"')]),t._v(" - log warning when any strict mode restriction is violated.")]),t._v(" "),e("li",[e("code",[t._v("false")]),t._v(" - ignore all strict mode violations.")]),t._v(" "),e("li",[e("code",[t._v("undefined")]),t._v(" (default) - use defaults for options strictSchema, strictNumbers, strictTypes, strictTuples and strictRequired.")])]),t._v(" "),e("h3",{attrs:{id:"strictschema"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#strictschema"}},[t._v("#")]),t._v(" strictSchema")]),t._v(" "),e("p",[t._v("Prevent unknown keywords, formats etc. (see "),e("RouterLink",{attrs:{to:"/strict-mode.html#strict-schema"}},[t._v("Strict schema")]),t._v(")")],1),t._v(" "),e("p",[t._v("Option values:")]),t._v(" "),e("ul",[e("li",[e("code",[t._v("true")]),t._v(" (default) - throw an exception when any strict schema restriction is violated.")]),t._v(" "),e("li",[e("code",[t._v('"log"')]),t._v(" - log warning when any strict schema restriction is violated.")]),t._v(" "),e("li",[e("code",[t._v("false")]),t._v(" - ignore all strict schema violations.")])]),t._v(" "),e("h3",{attrs:{id:"strictnumbers"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#strictnumbers"}},[t._v("#")]),t._v(" strictNumbers")]),t._v(" "),e("p",[t._v("Whether to accept "),e("code",[t._v("NaN")]),t._v(" and "),e("code",[t._v("Infinity")]),t._v(" as number types during validation.")]),t._v(" "),e("p",[t._v("Option values:")]),t._v(" "),e("ul",[e("li",[e("code",[t._v("true")]),t._v(" (default) - fail validation if "),e("code",[t._v("NaN")]),t._v(" or "),e("code",[t._v("Infinity")]),t._v(" is passed where number is expected.")]),t._v(" "),e("li",[e("code",[t._v("false")]),t._v(" - allow "),e("code",[t._v("NaN")]),t._v(" and "),e("code",[t._v("Infinity")]),t._v(" as number.")])]),t._v(" "),e("h3",{attrs:{id:"stricttypes"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#stricttypes"}},[t._v("#")]),t._v(" strictTypes")]),t._v(" "),e("p",[t._v("See "),e("RouterLink",{attrs:{to:"/strict-mode.html#strict-types"}},[t._v("Strict types")])],1),t._v(" "),e("p",[t._v("Option values:")]),t._v(" "),e("ul",[e("li",[e("code",[t._v("true")]),t._v(" - throw an exception when any strict types restriction is violated.")]),t._v(" "),e("li",[e("code",[t._v('"log"')]),t._v(" (default) - log warning when any strict types restriction is violated.")]),t._v(" "),e("li",[e("code",[t._v("false")]),t._v(" - ignore all strict types violations.")])]),t._v(" "),e("h3",{attrs:{id:"stricttuples"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#stricttuples"}},[t._v("#")]),t._v(" strictTuples")]),t._v(" "),e("p",[t._v("See "),e("RouterLink",{attrs:{to:"/strict-mode.html#unconstrained-tuples"}},[t._v("Unconstrained tuples")])],1),t._v(" "),e("p",[t._v("Option values:")]),t._v(" "),e("ul",[e("li",[e("code",[t._v("true")]),t._v(" - throw an exception when any strict tuples restriction is violated.")]),t._v(" "),e("li",[e("code",[t._v('"log"')]),t._v(" (default) - log warning when any strict tuples restriction is violated.")]),t._v(" "),e("li",[e("code",[t._v("false")]),t._v(" - ignore all strict tuples violations.")])]),t._v(" "),e("h3",{attrs:{id:"strictrequired"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#strictrequired"}},[t._v("#")]),t._v(" strictRequired")]),t._v(" "),e("p",[t._v("See "),e("RouterLink",{attrs:{to:"/strict-mode.html#defined-required-properties"}},[t._v("Defined required properties")])],1),t._v(" "),e("p",[t._v("Option values:")]),t._v(" "),e("ul",[e("li",[e("code",[t._v("true")]),t._v(" - throw an exception when strict required restriction is violated.")]),t._v(" "),e("li",[e("code",[t._v('"log"')]),t._v(" - log warning when strict required restriction is violated.")]),t._v(" "),e("li",[e("code",[t._v("false")]),t._v(" (default) - ignore strict required violations.")])]),t._v(" "),e("h3",{attrs:{id:"allowuniontypes"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#allowuniontypes"}},[t._v("#")]),t._v(" allowUnionTypes")]),t._v(" "),e("p",[t._v('Pass true to allow using multiple non-null types in "type" keyword (one of '),e("code",[t._v("strictTypes")]),t._v(" restrictions). see "),e("RouterLink",{attrs:{to:"/strict-mode.html#strict-types"}},[t._v("Strict types")])],1),t._v(" "),e("h3",{attrs:{id:"allowmatchingproperties"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#allowmatchingproperties"}},[t._v("#")]),t._v(" allowMatchingProperties")]),t._v(" "),e("p",[t._v('Pass true to allow overlap between "properties" and "patternProperties". Does not affect other strict mode restrictions. See '),e("RouterLink",{attrs:{to:"/strict-mode.html"}},[t._v("Strict Mode")]),t._v(".")],1),t._v(" "),e("h3",{attrs:{id:"validateformats"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#validateformats"}},[t._v("#")]),t._v(" validateFormats")]),t._v(" "),e("p",[t._v("Format validation.")]),t._v(" "),e("p",[t._v("Option values:")]),t._v(" "),e("ul",[e("li",[e("code",[t._v("true")]),t._v(" (default) - validate formats (see "),e("RouterLink",{attrs:{to:"/guide/formats.html"}},[t._v("Formats")]),t._v("). In "),e("RouterLink",{attrs:{to:"/strict-mode.html"}},[t._v("strict mode")]),t._v(" unknown formats will throw exception during schema compilation (and fail validation in case format keyword value is "),e("RouterLink",{attrs:{to:"/guide/combining-schemas.html#data-reference"}},[t._v("$data reference")]),t._v(").")],1),t._v(" "),e("li",[e("code",[t._v("false")]),t._v(" - do not validate any format keywords (TODO they will still collect annotations once supported).")])]),t._v(" "),e("h2",{attrs:{id:"validation-and-reporting-options"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#validation-and-reporting-options"}},[t._v("#")]),t._v(" Validation and reporting options")]),t._v(" "),e("h3",{attrs:{id:"data"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#data"}},[t._v("#")]),t._v(" $data")]),t._v(" "),e("p",[t._v("Support "),e("RouterLink",{attrs:{to:"/guide/combining-schemas.html#data-reference"}},[t._v("$data references")]),t._v(". Draft 6 meta-schema that is added by default will be extended to allow them. If you want to use another meta-schema you need to use $dataMetaSchema method to add support for $data reference. See "),e("a",{attrs:{href:"#ajv-constructor-and-methods"}},[t._v("API")]),t._v(".")],1),t._v(" "),e("h3",{attrs:{id:"allerrors"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#allerrors"}},[t._v("#")]),t._v(" allErrors")]),t._v(" "),e("p",[t._v("Check all rules collecting all errors. Default is to return after the first error.")]),t._v(" "),e("h3",{attrs:{id:"verbose"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#verbose"}},[t._v("#")]),t._v(" verbose")]),t._v(" "),e("p",[t._v("Include the reference to the part of the schema ("),e("code",[t._v("schema")]),t._v(" and "),e("code",[t._v("parentSchema")]),t._v(") and validated data in errors (false by default).")]),t._v(" "),e("h3",{attrs:{id:"discriminator"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#discriminator"}},[t._v("#")]),t._v(" discriminator")]),t._v(" "),e("p",[t._v("Support "),e("RouterLink",{attrs:{to:"/json-schema.html#discriminator"}},[t._v("discriminator keyword")]),t._v(" from "),e("a",{attrs:{href:"https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.1.0.md",target:"_blank",rel:"noopener noreferrer"}},[t._v("OpenAPI specification"),e("OutboundLink")],1),t._v(".")],1),t._v(" "),e("h3",{attrs:{id:"unicoderegexp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#unicoderegexp"}},[t._v("#")]),t._v(" unicodeRegExp")]),t._v(" "),e("p",[t._v('By default Ajv uses unicode flag "u" with "pattern" and "patternProperties", as per JSON Schema spec. See '),e("a",{attrs:{href:"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/unicode",target:"_blank",rel:"noopener noreferrer"}},[t._v("RegExp.prototype.unicode"),e("OutboundLink")],1),t._v(" .")]),t._v(" "),e("p",[t._v("Option values:")]),t._v(" "),e("ul",[e("li",[e("code",[t._v("true")]),t._v(' (default) - use unicode flag "u".')]),t._v(" "),e("li",[e("code",[t._v("false")]),t._v(' - do not use flag "u".')])]),t._v(" "),e("h3",{attrs:{id:"timestamp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#timestamp"}},[t._v("#")]),t._v(" timestamp "),e("Badge",{attrs:{text:"JTD only"}})],1),t._v(" "),e("p",[t._v("Defines which Javascript types will be accepted for the "),e("a",{attrs:{href:"./json-type-definition#type-form"}},[t._v("JTD timestamp type")]),t._v(".")]),t._v(" "),e("p",[t._v("By default Ajv will accept both Date objects and "),e("a",{attrs:{href:"https://datatracker.ietf.org/doc/rfc3339/",target:"_blank",rel:"noopener noreferrer"}},[t._v("RFC3339"),e("OutboundLink")],1),t._v(" strings. You can specify allowed values with the option "),e("code",[t._v('timestamp: "date"')]),t._v(" or "),e("code",[t._v('timestamp: "string"')]),t._v(".")]),t._v(" "),e("h3",{attrs:{id:"parsedate"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#parsedate"}},[t._v("#")]),t._v(" parseDate "),e("Badge",{attrs:{text:"JTD only"}})],1),t._v(" "),e("p",[t._v("Defines how date-time strings are parsed by "),e("RouterLink",{attrs:{to:"/api.html#jtd-parse"}},[t._v("JTD parsers")]),t._v(". By default Ajv parses date-time strings as string. Use "),e("code",[t._v("parseDate: true")]),t._v(" to parse them as Date objects.")],1),t._v(" "),e("h3",{attrs:{id:"allowdate"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#allowdate"}},[t._v("#")]),t._v(" allowDate "),e("Badge",{attrs:{text:"JTD only"}})],1),t._v(" "),e("p",[t._v("Defines how date-time strings are parsed and validated. By default Ajv only allows full date-time strings, as required by JTD specification. Use "),e("code",[t._v("allowDate: true")]),t._v(" to allow date strings both for validation and for parsing.")]),t._v(" "),e("div",{staticClass:"custom-block warning"},[e("p",{staticClass:"custom-block-title"},[t._v("Option allowDate is not portable")]),t._v(" "),e("p",[t._v("This option makes JTD validation and parsing more permissive and non-standard. The date strings without time part will be accepted by Ajv, but will be rejected by other JTD validators.")])]),t._v(" "),e("h3",{attrs:{id:"int32range"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#int32range"}},[t._v("#")]),t._v(" int32range "),e("Badge",{attrs:{text:"JTD only"}})],1),t._v(" "),e("p",[t._v("Can be used to disable range checking for "),e("code",[t._v("int32")]),t._v(" and "),e("code",[t._v("uint32")]),t._v(" types.")]),t._v(" "),e("p",[t._v("By default Ajv limits the range of these types to "),e("code",[t._v("[-2**31, 2**31 - 1]")]),t._v(" for "),e("code",[t._v("int32")]),t._v(" and to "),e("code",[t._v("[0, 2**32-1]")]),t._v(" for "),e("code",[t._v("uint32")]),t._v(" when validating and parsing.")]),t._v(" "),e("p",[t._v("With option "),e("code",[t._v("int32range: false")]),t._v(" Ajv only requires that "),e("code",[t._v("uint32")]),t._v(" is non-negative, otherwise does not check the range. Parser will limit the number size to 16 digits (approx. "),e("code",[t._v("2**53")]),t._v(" - safe integer range).")]),t._v(" "),e("div",{staticClass:"custom-block warning"},[e("p",{staticClass:"custom-block-title"},[t._v("Option int32range is not portable")]),t._v(" "),e("p",[t._v("This option makes JTD validation and parsing more permissive and non-standard. The integers within a wider range will be accepted by Ajv, but will be rejected by other JTD validators.")])]),t._v(" "),e("h3",{attrs:{id:"comment"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#comment"}},[t._v("#")]),t._v(" $comment")]),t._v(" "),e("p",[t._v("Log or pass the value of "),e("code",[t._v("$comment")]),t._v(" keyword to a function.")]),t._v(" "),e("p",[t._v("Option values:")]),t._v(" "),e("ul",[e("li",[e("code",[t._v("false")]),t._v(" (default): ignore $comment keyword.")]),t._v(" "),e("li",[e("code",[t._v("true")]),t._v(": log the keyword value to console.")]),t._v(" "),e("li",[t._v("function: pass the keyword value, its schema path and root schema to the specified function")])]),t._v(" "),e("h3",{attrs:{id:"formats"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#formats"}},[t._v("#")]),t._v(" formats")]),t._v(" "),e("p",[t._v("An object with format definitions. Keys and values will be passed to "),e("code",[t._v("addFormat")]),t._v(" method. Pass "),e("code",[t._v("true")]),t._v(" as format definition to ignore some formats.")]),t._v(" "),e("h3",{attrs:{id:"keywords"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#keywords"}},[t._v("#")]),t._v(" keywords")]),t._v(" "),e("p",[t._v("An array of keyword definitions or strings. Values will be passed to "),e("code",[t._v("addKeyword")]),t._v(" method.")]),t._v(" "),e("h3",{attrs:{id:"schemas"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#schemas"}},[t._v("#")]),t._v(" schemas")]),t._v(" "),e("p",[t._v("An array or object of schemas that will be added to the instance. In case you pass the array the schemas must have IDs in them. When the object is passed the method "),e("code",[t._v("addSchema(value, key)")]),t._v(" will be called for each schema in this object.")]),t._v(" "),e("h3",{attrs:{id:"logger"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#logger"}},[t._v("#")]),t._v(" logger")]),t._v(" "),e("p",[t._v("Sets the logging method. Default is the global "),e("code",[t._v("console")]),t._v(" object that should have methods "),e("code",[t._v("log")]),t._v(", "),e("code",[t._v("warn")]),t._v(" and "),e("code",[t._v("error")]),t._v(". See "),e("RouterLink",{attrs:{to:"/api.html#error-logging"}},[t._v("Error logging")]),t._v(".")],1),t._v(" "),e("p",[t._v("Option values:")]),t._v(" "),e("ul",[e("li",[t._v("logger instance - it should have methods "),e("code",[t._v("log")]),t._v(", "),e("code",[t._v("warn")]),t._v(" and "),e("code",[t._v("error")]),t._v(". If any of these methods is missing an exception will be thrown.")]),t._v(" "),e("li",[e("code",[t._v("false")]),t._v(" - logging is disabled.")])]),t._v(" "),e("h3",{attrs:{id:"loadschema"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#loadschema"}},[t._v("#")]),t._v(" loadSchema")]),t._v(" "),e("p",[t._v("Asynchronous function that will be used to load remote schemas when "),e("code",[t._v("compileAsync")]),t._v(" "),e("a",{attrs:{href:"#api-compileAsync"}},[t._v("method")]),t._v(" is used and some reference is missing (option "),e("code",[t._v("missingRefs")]),t._v(" should NOT be 'fail' or 'ignore'). This function should accept remote schema uri as a parameter and return a Promise that resolves to a schema. See example in "),e("RouterLink",{attrs:{to:"/guide/managing-schemas.html#asynchronous-schema-compilation"}},[t._v("Asynchronous compilation")]),t._v(".")],1),t._v(" "),e("h2",{attrs:{id:"options-to-modify-validated-data"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#options-to-modify-validated-data"}},[t._v("#")]),t._v(" Options to modify validated data")]),t._v(" "),e("h3",{attrs:{id:"removeadditional"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#removeadditional"}},[t._v("#")]),t._v(" removeAdditional")]),t._v(" "),e("p",[t._v("Remove additional properties - see example in "),e("RouterLink",{attrs:{to:"/guide/modifying-data.html#removing-additional-properties"}},[t._v("Removing additional properties")]),t._v(".")],1),t._v(" "),e("p",[t._v("This option is not used if schema is added with "),e("code",[t._v("addMetaSchema")]),t._v(" method.")]),t._v(" "),e("p",[t._v("Option values:")]),t._v(" "),e("ul",[e("li",[e("code",[t._v("false")]),t._v(" (default) - not to remove additional properties")]),t._v(" "),e("li",[e("code",[t._v('"all"')]),t._v(" - all additional properties are removed, regardless of "),e("code",[t._v("additionalProperties")]),t._v(" keyword in schema (and no validation is made for them).")]),t._v(" "),e("li",[e("code",[t._v("true")]),t._v(" - only additional properties with "),e("code",[t._v("additionalProperties")]),t._v(" keyword equal to "),e("code",[t._v("false")]),t._v(" are removed.")]),t._v(" "),e("li",[e("code",[t._v('"failing"')]),t._v(" - additional properties that fail schema validation will be removed (where "),e("code",[t._v("additionalProperties")]),t._v(" keyword is "),e("code",[t._v("false")]),t._v(" or schema).")])]),t._v(" "),e("h3",{attrs:{id:"usedefaults"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#usedefaults"}},[t._v("#")]),t._v(" useDefaults")]),t._v(" "),e("p",[t._v("Replace missing or undefined properties and items with the values from corresponding "),e("code",[t._v("default")]),t._v(" keywords. Default behaviour is to ignore "),e("code",[t._v("default")]),t._v(" keywords. This option is not used if schema is added with "),e("code",[t._v("addMetaSchema")]),t._v(" method.")]),t._v(" "),e("p",[t._v("See examples in "),e("RouterLink",{attrs:{to:"/guide/modifying-data.html#assigning-defaults"}},[t._v("Assigning defaults")]),t._v(".")],1),t._v(" "),e("p",[t._v("Option values:")]),t._v(" "),e("ul",[e("li",[e("code",[t._v("false")]),t._v(" (default) - do not use defaults")]),t._v(" "),e("li",[e("code",[t._v("true")]),t._v(" - insert defaults by value (object literal is used).")]),t._v(" "),e("li",[e("code",[t._v('"empty"')]),t._v(" - in addition to missing or undefined, use defaults for properties and items that are equal to "),e("code",[t._v("null")]),t._v(" or "),e("code",[t._v('""')]),t._v(" (an empty string).")])]),t._v(" "),e("h3",{attrs:{id:"coercetypes"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#coercetypes"}},[t._v("#")]),t._v(" coerceTypes")]),t._v(" "),e("p",[t._v("Change data type of data to match "),e("code",[t._v("type")]),t._v(" keyword. See the example in "),e("RouterLink",{attrs:{to:"/guide/modifying-data.html#coercing-data-types"}},[t._v("Coercing data types")]),t._v(" and "),e("RouterLink",{attrs:{to:"/coercion.html"}},[t._v("coercion rules")]),t._v(".")],1),t._v(" "),e("p",[t._v("Option values:")]),t._v(" "),e("ul",[e("li",[e("code",[t._v("false")]),t._v(" (default) - no type coercion.")]),t._v(" "),e("li",[e("code",[t._v("true")]),t._v(" - coerce scalar data types.")]),t._v(" "),e("li",[e("code",[t._v('"array"')]),t._v(" - in addition to coercions between scalar types, coerce scalar data to an array with one element and vice versa (as required by the schema).")])]),t._v(" "),e("h2",{attrs:{id:"advanced-options"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#advanced-options"}},[t._v("#")]),t._v(" Advanced options")]),t._v(" "),e("h3",{attrs:{id:"meta"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#meta"}},[t._v("#")]),t._v(" meta")]),t._v(" "),e("p",[t._v("Add "),e("a",{attrs:{href:"http://json-schema.org/documentation.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("meta-schema"),e("OutboundLink")],1),t._v(" so it can be used by other schemas (true by default). If an object is passed, it will be used as the default meta-schema for schemas that have no "),e("code",[t._v("$schema")]),t._v(" keyword. This default meta-schema MUST have "),e("code",[t._v("$schema")]),t._v(" keyword.")]),t._v(" "),e("h3",{attrs:{id:"validateschema"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#validateschema"}},[t._v("#")]),t._v(" validateSchema")]),t._v(" "),e("p",[t._v("Validate added/compiled schemas against meta-schema (true by default). "),e("code",[t._v("$schema")]),t._v(" property in the schema can be http://json-schema.org/draft-07/schema or absent (draft-07 meta-schema will be used) or can be a reference to the schema previously added with "),e("code",[t._v("addMetaSchema")]),t._v(" method.")]),t._v(" "),e("p",[t._v("Option values:")]),t._v(" "),e("ul",[e("li",[e("code",[t._v("true")]),t._v(" (default) - if the validation fails, throw the exception.")]),t._v(" "),e("li",[e("code",[t._v('"log"')]),t._v(" - if the validation fails, log error.")]),t._v(" "),e("li",[e("code",[t._v("false")]),t._v(" - skip schema validation.")])]),t._v(" "),e("h3",{attrs:{id:"addusedschema"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#addusedschema"}},[t._v("#")]),t._v(" addUsedSchema")]),t._v(" "),e("p",[t._v("By default methods "),e("code",[t._v("compile")]),t._v(" and "),e("code",[t._v("validate")]),t._v(" add schemas to the instance if they have "),e("code",[t._v("$id")]),t._v(" (or "),e("code",[t._v("id")]),t._v(') property that doesn\'t start with "#". If '),e("code",[t._v("$id")]),t._v(" is present and it is not unique the exception will be thrown. Set this option to "),e("code",[t._v("false")]),t._v(" to skip adding schemas to the instance and the "),e("code",[t._v("$id")]),t._v(" uniqueness check when these methods are used. This option does not affect "),e("code",[t._v("addSchema")]),t._v(" method.")]),t._v(" "),e("h3",{attrs:{id:"inlinerefs"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#inlinerefs"}},[t._v("#")]),t._v(" inlineRefs")]),t._v(" "),e("p",[t._v("Affects compilation of referenced schemas.")]),t._v(" "),e("p",[t._v("Option values:")]),t._v(" "),e("ul",[e("li",[e("code",[t._v("true")]),t._v(" (default) - the referenced schemas that don't have refs in them are inlined, regardless of their size - it improves performance.")]),t._v(" "),e("li",[e("code",[t._v("false")]),t._v(" - to not inline referenced schemas (they will always be compiled as separate functions).")]),t._v(" "),e("li",[t._v("integer number - to limit the maximum number of keywords of the schema that will be inlined (to balance the total size of compiled functions and performance).")])]),t._v(" "),e("h3",{attrs:{id:"passcontext"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#passcontext"}},[t._v("#")]),t._v(" passContext")]),t._v(" "),e("p",[t._v("Pass validation context to "),e("em",[t._v("compile")]),t._v(" and "),e("em",[t._v("validate")]),t._v(" keyword functions. If this option is "),e("code",[t._v("true")]),t._v(" and you pass some context to the compiled validation function with "),e("code",[t._v("validate.call(context, data)")]),t._v(", the "),e("code",[t._v("context")]),t._v(" will be available as "),e("code",[t._v("this")]),t._v(" in your keywords. By default "),e("code",[t._v("this")]),t._v(" is Ajv instance.")]),t._v(" "),e("h3",{attrs:{id:"looprequired"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#looprequired"}},[t._v("#")]),t._v(" loopRequired")]),t._v(" "),e("p",[t._v("By default "),e("code",[t._v("required")]),t._v(" keyword is compiled into a single expression (or a sequence of statements in "),e("code",[t._v("allErrors")]),t._v(" mode) up to 200 required properties. Pass integer to set a different number of properties above which "),e("code",[t._v("required")]),t._v(" keyword will be validated in a loop (with a smaller validation function size and worse performance).")]),t._v(" "),e("h3",{attrs:{id:"loopenum"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#loopenum"}},[t._v("#")]),t._v(" loopEnum "),e("Badge",{attrs:{text:"v7"}})],1),t._v(" "),e("p",[t._v("By default "),e("code",[t._v("enum")]),t._v(" keyword is compiled into a single expression with up to 200 allowed values. Pass integer to set the number of values above which "),e("code",[t._v("enum")]),t._v(" keyword will be validated in a loop (with a smaller validation function size and worse performance).")]),t._v(" "),e("h3",{attrs:{id:"ownproperties"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ownproperties"}},[t._v("#")]),t._v(" ownProperties")]),t._v(" "),e("p",[t._v("By default Ajv iterates over all enumerable object properties; when this option is "),e("code",[t._v("true")]),t._v(" only own enumerable object properties (i.e. found directly on the object rather than on its prototype) are iterated. Contributed by @mbroadst.")]),t._v(" "),e("h3",{attrs:{id:"multipleofprecision"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#multipleofprecision"}},[t._v("#")]),t._v(" multipleOfPrecision")]),t._v(" "),e("p",[t._v("By default "),e("code",[t._v("multipleOf")]),t._v(" keyword is validated by comparing the result of division with "),e("code",[t._v("parseInt()")]),t._v(" of that result. It works for dividers that are bigger than 1. For small dividers such as 0.01 the result of the division is usually not integer (even when it should be integer, see issue "),e("a",{attrs:{href:"https://github.com/ajv-validator/ajv/issues/84",target:"_blank",rel:"noopener noreferrer"}},[t._v("#84"),e("OutboundLink")],1),t._v("). If you need to use fractional dividers set this option to some positive integer N to have "),e("code",[t._v("multipleOf")]),t._v(" validated using this formula: "),e("code",[t._v("Math.abs(Math.round(division) - division) < 1e-N")]),t._v(" (it is slower but allows for float arithmetic deviations).")]),t._v(" "),e("h3",{attrs:{id:"messages"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#messages"}},[t._v("#")]),t._v(" messages")]),t._v(" "),e("p",[t._v("Include human-readable messages in errors. "),e("code",[t._v("true")]),t._v(" by default. "),e("code",[t._v("false")]),t._v(" can be passed when messages are generated outside of Ajv code (e.g. with "),e("a",{attrs:{href:"https://github.com/ajv-validator/ajv-i18n",target:"_blank",rel:"noopener noreferrer"}},[t._v("ajv-i18n"),e("OutboundLink")],1),t._v(").")]),t._v(" "),e("h3",{attrs:{id:"uriresolver"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#uriresolver"}},[t._v("#")]),t._v(" uriResolver")]),t._v(" "),e("p",[t._v("By default "),e("code",[t._v("uriResolver")]),t._v(" is undefined and relies on the embedded uriResolver "),e("a",{attrs:{href:"https://github.com/fastify/fast-uri",target:"_blank",rel:"noopener noreferrer"}},[t._v("fast-uri"),e("OutboundLink")],1),t._v(". Pass an object that satisfies the interface "),e("a",{attrs:{href:"https://github.com/ajv-validator/ajv/blob/master/lib/types/index.ts",target:"_blank",rel:"noopener noreferrer"}},[t._v("UriResolver"),e("OutboundLink")],1),t._v(" to be used in replacement. One alternative is "),e("a",{attrs:{href:"https://github.com/garycourt/uri-js",target:"_blank",rel:"noopener noreferrer"}},[t._v("uri-js"),e("OutboundLink")],1),t._v(".")]),t._v(" "),e("h3",{attrs:{id:"code"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#code"}},[t._v("#")]),t._v(" code "),e("Badge",{attrs:{text:"v7"}})],1),t._v(" "),e("p",[t._v("Code generation options:")]),t._v(" "),e("div",{staticClass:"language-typescript extra-class"},[e("pre",{pre:!0,attrs:{class:"language-typescript"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("type")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("CodeOptions")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n es5"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("?")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("boolean")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v('// to generate es5 code - by default code is es6, with "for-of" loops, "let" and "const"')]),t._v("\n esm"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("?")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("boolean")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// how functions should be exported - by default CJS is used, so the validate function(s) ")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// file can be `required`. Set this value to true to export the validate function(s) as ES Modules, enabling ")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// bunlers to do their job.")]),t._v("\n lines"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("?")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("boolean")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// add line-breaks to code - to simplify debugging of generated functions")]),t._v("\n source"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("?")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("boolean")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// add `source` property (see Source below) to validating function.")]),t._v("\n process"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("?")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("code"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("string")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" schema"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("?")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" SchemaEnv"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=>")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("string")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// an optional function to process generated code")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// before it is passed to Function constructor.")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// It can be used to either beautify or to transpile code.")]),t._v("\n optimize"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("?")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("boolean")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("number")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// code optimization flag or number of passes, 1 pass by default,")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// code optimizations reduce the size of the generated code (bytes, based on the tests) by over 10%,")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// the number of code tree nodes by nearly 17%.")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// You would almost never need more than one optimization pass, unless you have some really complex schemas -")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// the second pass in the tests (it has quite complex schemas) only improves optimization by less than 0.1%.")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// See [Code optimization](./codegen.md#code-optimization) for details.")]),t._v("\n formats"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("?")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" Code\n "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Code snippet created with `_` tagged template literal that contains all format definitions,")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// it can be the code of actual definitions or `require` call:")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v('// _`require("./my-formats")`')]),t._v("\n regExp"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" RegExpEngine\n "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Pass non-standard RegExp engine to mitigate ReDoS, e.g. node-re2.")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// During validation of a schema, code.regExp will be ")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// used to match strings against regular expressions.")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// The supplied function must support the interface:")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// regExp(regex, unicodeFlag).test(string) => boolean")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("type")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Source")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n code"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("string")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// unlike func.toString() it includes assignments external to function scope")]),t._v("\n scope"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" Scope "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// see Code generation (TODO)")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/77.beaef493.js b/assets/js/77.beaef493.js new file mode 100644 index 000000000..d0e7681d9 --- /dev/null +++ b/assets/js/77.beaef493.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[77],{429:function(t,s,a){"use strict";a.r(s);var r=a(14),e=Object(r.a)({},(function(){var t=this,s=t._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("p",[s("a",{attrs:{href:"https://github.com/ajv-validator/ajv-errors",target:"_blank",rel:"noopener noreferrer"}},[t._v("ajv-errors repository"),s("OutboundLink")],1)]),t._v(" "),s("h1",{attrs:{id:"ajv-errors"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#ajv-errors"}},[t._v("#")]),t._v(" ajv-errors")]),t._v(" "),s("p",[t._v("Custom error messages in JSON-Schema for Ajv validator")]),t._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/ajv-validator/ajv-errors/actions?query=workflow%3Abuild",target:"_blank",rel:"noopener noreferrer"}},[s("img",{attrs:{src:"https://github.com/ajv-validator/ajv-errors/workflows/build/badge.svg",alt:"build"}}),s("OutboundLink")],1),t._v(" "),s("a",{attrs:{href:"https://www.npmjs.com/package/ajv-errors",target:"_blank",rel:"noopener noreferrer"}},[s("img",{attrs:{src:"https://img.shields.io/npm/v/ajv-errors.svg",alt:"npm"}}),s("OutboundLink")],1),t._v(" "),s("a",{attrs:{href:"https://coveralls.io/github/ajv-validator/ajv-errors?branch=master",target:"_blank",rel:"noopener noreferrer"}},[s("img",{attrs:{src:"https://coveralls.io/repos/github/ajv-validator/ajv-errors/badge.svg?branch=master",alt:"coverage"}}),s("OutboundLink")],1),t._v(" "),s("a",{attrs:{href:"https://gitter.im/ajv-validator/ajv",target:"_blank",rel:"noopener noreferrer"}},[s("img",{attrs:{src:"https://img.shields.io/gitter/room/ajv-validator/ajv.svg",alt:"gitter"}}),s("OutboundLink")],1)]),t._v(" "),s("p",[s("strong",[t._v("Please note")])]),t._v(" "),s("p",[t._v("ajv-errors v3 supports "),s("a",{attrs:{href:"https://github.com/ajv-validator/ajv",target:"_blank",rel:"noopener noreferrer"}},[t._v("ajv v8"),s("OutboundLink")],1),t._v(".")]),t._v(" "),s("p",[t._v("If you are using ajv v6, you should use "),s("a",{attrs:{href:"https://github.com/ajv-validator/ajv-errors/tree/v1",target:"_blank",rel:"noopener noreferrer"}},[t._v("ajv-errors v1"),s("OutboundLink")],1)]),t._v(" "),s("h2",{attrs:{id:"contents"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#contents"}},[t._v("#")]),t._v(" Contents")]),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"#install"}},[t._v("Install")])]),t._v(" "),s("li",[s("a",{attrs:{href:"#usage"}},[t._v("Usage")]),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"#single-message"}},[t._v("Single message")])]),t._v(" "),s("li",[s("a",{attrs:{href:"#messages-for-keywords"}},[t._v("Messages for keywords")])]),t._v(" "),s("li",[s("a",{attrs:{href:"#messages-for-properties-and-items"}},[t._v("Messages for properties and items")])]),t._v(" "),s("li",[s("a",{attrs:{href:"#default-message"}},[t._v("Default message")])])])]),t._v(" "),s("li",[s("a",{attrs:{href:"#templates"}},[t._v("Templates")])]),t._v(" "),s("li",[s("a",{attrs:{href:"#options"}},[t._v("Options")])]),t._v(" "),s("li",[s("a",{attrs:{href:"#supporters"}},[t._v("Supporters, Enterprise support, Security contact")])]),t._v(" "),s("li",[s("a",{attrs:{href:"#license"}},[t._v("License")])])]),t._v(" "),s("h2",{attrs:{id:"install"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#install"}},[t._v("#")]),t._v(" Install")]),t._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[t._v("npm install ajv-errors\n")])])]),s("h2",{attrs:{id:"usage"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#usage"}},[t._v("#")]),t._v(" Usage")]),t._v(" "),s("p",[t._v("Add the keyword "),s("code",[t._v("errorMessages")]),t._v(" to Ajv instance:")]),t._v(" "),s("div",{staticClass:"language-javascript extra-class"},[s("pre",{pre:!0,attrs:{class:"language-javascript"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Ajv "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("require")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ajv"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" ajv "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Ajv")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("allErrors")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Ajv option allErrors is required")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("require")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ajv-errors"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("ajv "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/*, {singleError: true} */")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("p",[t._v("See "),s("a",{attrs:{href:"#options"}},[t._v("Options")]),t._v(" below.")]),t._v(" "),s("h3",{attrs:{id:"single-message"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#single-message"}},[t._v("#")]),t._v(" Single message")]),t._v(" "),s("p",[t._v("Replace all errors in the current schema and subschemas with a single message:")]),t._v(" "),s("div",{staticClass:"language-javascript extra-class"},[s("pre",{pre:!0,attrs:{class:"language-javascript"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" schema "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"object"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("required")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"foo"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("properties")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("foo")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"integer"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("additionalProperties")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("errorMessage")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"should be an object with an integer property foo only"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" validate "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" ajv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("compile")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("schema"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\nconsole"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("validate")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("foo")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"a"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("bar")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// false")]),t._v("\nconsole"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("validate"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("errors"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// processed errors")]),t._v("\n")])])]),s("p",[t._v("Processed errors:")]),t._v(" "),s("div",{staticClass:"language-json5 extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json5"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property unquoted"}},[t._v("keyword")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"errorMessage"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property unquoted"}},[t._v("message")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"should be an object with an integer property foo only"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// ...")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property unquoted"}},[t._v("params")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property unquoted"}},[t._v("errors")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token property unquoted"}},[t._v("keyword")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"additionalProperties"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token property unquoted"}},[t._v("instancePath")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* , ... */")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token property unquoted"}},[t._v("keyword")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"type"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token property unquoted"}},[t._v("instancePath")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('".foo"')]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* , ... */")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n")])])]),s("h3",{attrs:{id:"messages-for-keywords"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#messages-for-keywords"}},[t._v("#")]),t._v(" Messages for keywords")]),t._v(" "),s("p",[t._v("Replace errors for certain keywords in the current schema only:")]),t._v(" "),s("div",{staticClass:"language-javascript extra-class"},[s("pre",{pre:!0,attrs:{class:"language-javascript"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" schema "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"object"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("required")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"foo"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("properties")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("foo")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"integer"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("additionalProperties")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("errorMessage")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"should be an object"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v('// will not replace internal "type" error for the property "foo"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("required")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"should have property foo"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("additionalProperties")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"should not have properties other than foo"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" validate "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" ajv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("compile")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("schema"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\nconsole"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("validate")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("foo")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"a"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("bar")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// false")]),t._v("\nconsole"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("validate"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("errors"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// processed errors")]),t._v("\n")])])]),s("p",[t._v("Processed errors:")]),t._v(" "),s("div",{staticClass:"language-json5 extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json5"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// original error")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property unquoted"}},[t._v("keyword")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" type"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property unquoted"}},[t._v("instancePath")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/foo"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// ...")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property unquoted"}},[t._v("message")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"should be integer"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// generated error")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property unquoted"}},[t._v("keyword")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"errorMessage"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property unquoted"}},[t._v("message")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"should not have properties other than foo"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// ...")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property unquoted"}},[t._v("params")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property unquoted"}},[t._v("errors")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token property unquoted"}},[t._v("keyword")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"additionalProperties"')]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* , ... */")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n")])])]),s("p",[t._v('For keywords "required" and "dependencies" it is possible to specify different messages for different properties:')]),t._v(" "),s("div",{staticClass:"language-javascript extra-class"},[s("pre",{pre:!0,attrs:{class:"language-javascript"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" schema "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"object"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("required")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"foo"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"bar"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("properties")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("foo")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"integer"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("bar")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"string"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("errorMessage")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"should be an object"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v('// will not replace internal "type" error for the property "foo"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("required")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("foo")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'should have an integer property \"foo\"'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("bar")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'should have a string property \"bar\"'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"messages-for-properties-and-items"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#messages-for-properties-and-items"}},[t._v("#")]),t._v(" Messages for properties and items")]),t._v(" "),s("p",[t._v("Replace errors for properties / items (and deeper), regardless where in schema they were created:")]),t._v(" "),s("div",{staticClass:"language-javascript extra-class"},[s("pre",{pre:!0,attrs:{class:"language-javascript"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" schema "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"object"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("required")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"foo"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"bar"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("allOf")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("properties")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("foo")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"integer"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("minimum")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("bar")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"string"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("minLength")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("additionalProperties")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("errorMessage")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("properties")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("foo")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"data.foo should be integer >= 2"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("bar")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"data.bar should be string with length >= 2"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" validate "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" ajv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("compile")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("schema"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\nconsole"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("validate")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("foo")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("bar")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"a"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// false")]),t._v("\nconsole"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("validate"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("errors"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// processed errors")]),t._v("\n")])])]),s("p",[t._v("Processed errors:")]),t._v(" "),s("div",{staticClass:"language-json5 extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json5"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property unquoted"}},[t._v("keyword")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"errorMessage"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property unquoted"}},[t._v("message")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"data.foo should be integer >= 2"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property unquoted"}},[t._v("instancePath")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/foo"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// ...")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property unquoted"}},[t._v("params")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property unquoted"}},[t._v("errors")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token property unquoted"}},[t._v("keyword")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"minimum"')]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* , ... */")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property unquoted"}},[t._v("keyword")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"errorMessage"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property unquoted"}},[t._v("message")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"data.bar should be string with length >= 2"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property unquoted"}},[t._v("instancePath")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/bar"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// ...")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property unquoted"}},[t._v("params")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property unquoted"}},[t._v("errors")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token property unquoted"}},[t._v("keyword")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"minLength"')]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* , ... */")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n")])])]),s("h3",{attrs:{id:"default-message"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#default-message"}},[t._v("#")]),t._v(" Default message")]),t._v(" "),s("p",[t._v("When the value of keyword "),s("code",[t._v("errorMessage")]),t._v(" is an object you can specify a message that will be used if any error appears that is not specified by keywords/properties/items using "),s("code",[t._v("_")]),t._v(" property:")]),t._v(" "),s("div",{staticClass:"language-javascript extra-class"},[s("pre",{pre:!0,attrs:{class:"language-javascript"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" schema "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"object"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("required")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"foo"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"bar"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("allOf")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("properties")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("foo")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"integer"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("minimum")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("bar")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"string"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("minLength")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("additionalProperties")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("errorMessage")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"data should be an object"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("properties")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("foo")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"data.foo should be integer >= 2"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("bar")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"data.bar should be string with length >= 2"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("_")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('\'data should have properties "foo" and "bar" only\'')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" validate "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" ajv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("compile")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("schema"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\nconsole"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("validate")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// false")]),t._v("\nconsole"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("validate"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("errors"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// processed errors")]),t._v("\n")])])]),s("p",[t._v("Processed errors:")]),t._v(" "),s("div",{staticClass:"language-json5 extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json5"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property unquoted"}},[t._v("keyword")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"errorMessage"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property unquoted"}},[t._v("message")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('\'data should be an object with properties "foo" and "bar" only\'')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property unquoted"}},[t._v("instancePath")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// ...")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property unquoted"}},[t._v("params")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property unquoted"}},[t._v("errors")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token property unquoted"}},[t._v("keyword")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"required"')]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* , ... */")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token property unquoted"}},[t._v("keyword")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"required"')]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* , ... */")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n")])])]),s("p",[t._v("The message in property "),s("code",[t._v("_")]),t._v(" of "),s("code",[t._v("errorMessage")]),t._v(" replaces the same errors that would have been replaced if "),s("code",[t._v("errorMessage")]),t._v(" were a string.")]),t._v(" "),s("h2",{attrs:{id:"templates"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#templates"}},[t._v("#")]),t._v(" Templates")]),t._v(" "),s("p",[t._v("Custom error messages used in "),s("code",[t._v("errorMessage")]),t._v(" keyword can be templates using "),s("a",{attrs:{href:"https://tools.ietf.org/html/rfc6901",target:"_blank",rel:"noopener noreferrer"}},[t._v("JSON-pointers"),s("OutboundLink")],1),t._v(" or "),s("a",{attrs:{href:"http://tools.ietf.org/html/draft-luff-relative-json-pointer-00",target:"_blank",rel:"noopener noreferrer"}},[t._v("relative JSON-pointers"),s("OutboundLink")],1),t._v(" to data being validated, in which case the value will be interpolated. Also see "),s("a",{attrs:{href:"https://gist.github.com/geraintluff/5911303",target:"_blank",rel:"noopener noreferrer"}},[t._v("examples"),s("OutboundLink")],1),t._v(" of relative JSON-pointers.")]),t._v(" "),s("p",[t._v("The syntax to interpolate a value is "),s("code",[t._v("${}")]),t._v(".")]),t._v(" "),s("p",[t._v("The values used in messages will be JSON-stringified:")]),t._v(" "),s("ul",[s("li",[t._v("to differentiate between "),s("code",[t._v("false")]),t._v(" and "),s("code",[t._v('"false"')]),t._v(", etc.")]),t._v(" "),s("li",[t._v("to support structured values.")])]),t._v(" "),s("p",[t._v("Example:")]),t._v(" "),s("div",{staticClass:"language-javascript extra-class"},[s("pre",{pre:!0,attrs:{class:"language-javascript"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" schema "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"object"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("properties")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("size")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("minimum")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("4")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("errorMessage")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("properties")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("size")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"size should be a number bigger or equal to 4, current value is ${/size}"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h4",{attrs:{id:"using-property-names-in-error-messages"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#using-property-names-in-error-messages"}},[t._v("#")]),t._v(" Using property names in error messages")]),t._v(" "),s("p",[t._v("Property names can be used in error messages with the relative JSON-pointer (e.g. "),s("code",[t._v("0#")]),t._v(").")]),t._v(" "),s("p",[t._v("Example:")]),t._v(" "),s("div",{staticClass:"language-javascript extra-class"},[s("pre",{pre:!0,attrs:{class:"language-javascript"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" schema "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"object"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("properties")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("size")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("additionalProperties")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("not")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("errorMessage")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" “extra property is $"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("#"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("”\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h2",{attrs:{id:"options"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#options"}},[t._v("#")]),t._v(" Options")]),t._v(" "),s("p",[t._v("Defaults:")]),t._v(" "),s("div",{staticClass:"language-json5 extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json5"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property unquoted"}},[t._v("keepErrors")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property unquoted"}},[t._v("singleError")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("ul",[s("li",[s("em",[t._v("keepErrors")]),t._v(": keep original errors. Default is to remove matched errors (they will still be available in "),s("code",[t._v("params.errors")]),t._v(" property of generated error). If an error was matched and included in the error generated by "),s("code",[t._v("errorMessage")]),t._v(" keyword it will have property "),s("code",[t._v("emUsed: true")]),t._v(".")]),t._v(" "),s("li",[s("em",[t._v("singleError")]),t._v(": create one error for all keywords used in "),s("code",[t._v("errorMessage")]),t._v(" keyword (error messages defined for properties and items are not merged because they have different instancePaths). Multiple error messages are concatenated. Option values:\n"),s("ul",[s("li",[s("code",[t._v("false")]),t._v(" (default): create multiple errors, one for each message")]),t._v(" "),s("li",[s("code",[t._v("true")]),t._v(": create single error, messages are concatenated using "),s("code",[t._v('"; "')])]),t._v(" "),s("li",[t._v("non-empty string: this string is used as a separator to concatenate messages")])])])]),t._v(" "),s("h2",{attrs:{id:"supporters"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#supporters"}},[t._v("#")]),t._v(" Supporters")]),t._v(" "),s("p",[s("a",{attrs:{href:"https://www.linkedin.com/in/rogerkepler/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Roger Kepler"),s("OutboundLink")],1)]),t._v(" "),s("h2",{attrs:{id:"enterprise-support"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#enterprise-support"}},[t._v("#")]),t._v(" Enterprise support")]),t._v(" "),s("p",[t._v("ajv-errors package is a part of "),s("a",{attrs:{href:"https://tidelift.com/subscription/pkg/npm-ajv-errors?utm_source=npm-ajv-errors&utm_medium=referral&utm_campaign=enterprise&utm_term=repo",target:"_blank",rel:"noopener noreferrer"}},[t._v("Tidelift enterprise subscription"),s("OutboundLink")],1),t._v(" - it provides a centralised commercial support to open-source software users, in addition to the support provided by software maintainers.")]),t._v(" "),s("h2",{attrs:{id:"security-contact"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#security-contact"}},[t._v("#")]),t._v(" Security contact")]),t._v(" "),s("p",[t._v("To report a security vulnerability, please use the\n"),s("a",{attrs:{href:"https://tidelift.com/security",target:"_blank",rel:"noopener noreferrer"}},[t._v("Tidelift security contact"),s("OutboundLink")],1),t._v(".\nTidelift will coordinate the fix and disclosure. Please do NOT report security vulnerability via GitHub issues.")]),t._v(" "),s("h2",{attrs:{id:"license"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#license"}},[t._v("#")]),t._v(" License")]),t._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/epoberezkin/ajv-errors/blob/master/LICENSE",target:"_blank",rel:"noopener noreferrer"}},[t._v("MIT"),s("OutboundLink")],1)])])}),[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file diff --git a/assets/js/79.358a5099.js b/assets/js/79.358a5099.js new file mode 100644 index 000000000..fdc7f1301 --- /dev/null +++ b/assets/js/79.358a5099.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[79],{424:function(t,e,a){"use strict";a.r(e);var r=a(14),n=Object(r.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("p",[e("a",{attrs:{href:"https://github.com/ajv-validator/ajv-i18n",target:"_blank",rel:"noopener noreferrer"}},[t._v("ajv-i18n repository"),e("OutboundLink")],1)]),t._v(" "),e("h1",{attrs:{id:"ajv-i18n"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ajv-i18n"}},[t._v("#")]),t._v(" ajv-i18n")]),t._v(" "),e("p",[t._v("Internationalised error messages for "),e("a",{attrs:{href:"https://github.com/ajv-validator/ajv",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ajv"),e("OutboundLink")],1),t._v(" - superfast JSON validator for JSON Schema and JSON Type Definition.")]),t._v(" "),e("p",[e("a",{attrs:{href:"https://travis-ci.org/ajv-validator/ajv-i18n",target:"_blank",rel:"noopener noreferrer"}},[e("img",{attrs:{src:"https://travis-ci.org/ajv-validator/ajv-i18n.svg?branch=master",alt:"Build Status"}}),e("OutboundLink")],1),t._v(" "),e("a",{attrs:{href:"https://www.npmjs.com/package/ajv-i18n",target:"_blank",rel:"noopener noreferrer"}},[e("img",{attrs:{src:"https://img.shields.io/npm/v/ajv-i18n.svg",alt:"npm"}}),e("OutboundLink")],1),t._v(" "),e("a",{attrs:{href:"https://coveralls.io/github/ajv-validator/ajv-i18n?branch=master",target:"_blank",rel:"noopener noreferrer"}},[e("img",{attrs:{src:"https://coveralls.io/repos/github/ajv-validator/ajv-i18n/badge.svg?branch=master",alt:"Coverage Status"}}),e("OutboundLink")],1),t._v(" "),e("a",{attrs:{href:"https://gitter.im/ajv-validator/ajv",target:"_blank",rel:"noopener noreferrer"}},[e("img",{attrs:{src:"https://img.shields.io/gitter/room/ajv-validator/ajv.svg",alt:"Gitter"}}),e("OutboundLink")],1)]),t._v(" "),e("h2",{attrs:{id:"supported-locales"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#supported-locales"}},[t._v("#")]),t._v(" Supported locales")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("locale")]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("language")]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("contributor")]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("draft-04")]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("draft-06"),e("sup",[t._v("1")])]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("draft-07"),e("sup",[t._v("2")])]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("draft"),e("br"),t._v("2019-09"),e("sup",[t._v("3")]),e("br"),t._v("/2020-12"),e("sup",[t._v("4")])]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("JTD"),e("sup",[t._v("5")])])])]),t._v(" "),e("tbody",[e("tr",[e("td",[t._v("🇬🇧 en")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("English")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}}),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓")])]),t._v(" "),e("tr",[e("td",[t._v("AR ar")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("Arabic")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[e("a",{attrs:{href:"https://github.com/Mahmoud-Mardeni",target:"_blank",rel:"noopener noreferrer"}},[t._v("Mahmoud-Mardeni"),e("OutboundLink")],1)]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")])]),t._v(" "),e("tr",[e("td",[t._v("CA ca")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("Catalan")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[e("a",{attrs:{href:"https://github.com/alexandreec",target:"_blank",rel:"noopener noreferrer"}},[t._v("alexandreec"),e("OutboundLink")],1)]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("*")])]),t._v(" "),e("tr",[e("td",[t._v("🇨🇿 cs")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("Czech")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[e("a",{attrs:{href:"https://github.com/kiskovacs",target:"_blank",rel:"noopener noreferrer"}},[t._v("kiskovacs"),e("OutboundLink")],1),e("br"),e("a",{attrs:{href:"https://github.com/NAM0007",target:"_blank",rel:"noopener noreferrer"}},[t._v("NAM0007"),e("OutboundLink")],1)]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓"),e("br")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓"),e("br")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[e("br"),t._v("✓")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("*")])]),t._v(" "),e("tr",[e("td",[t._v("🇩🇪 de")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("German")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[e("a",{attrs:{href:"https://github.com/jmtoball",target:"_blank",rel:"noopener noreferrer"}},[t._v("jmtoball"),e("OutboundLink")],1),e("br"),e("a",{attrs:{href:"https://github.com/gflohr",target:"_blank",rel:"noopener noreferrer"}},[t._v("gflohr"),e("OutboundLink")],1)]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓"),e("br")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓"),e("br")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[e("br"),t._v("✓")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓"),e("br")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓"),e("br")])]),t._v(" "),e("tr",[e("td",[t._v("🇪🇸 es")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("Spanish")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[e("a",{attrs:{href:"https://github.com/jpablom",target:"_blank",rel:"noopener noreferrer"}},[t._v("jpablom"),e("OutboundLink")],1)]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("*")])]),t._v(" "),e("tr",[e("td",[t._v("🇫🇮 fi")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("Finnish")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[e("a",{attrs:{href:"https://github.com/saulipurhonen",target:"_blank",rel:"noopener noreferrer"}},[t._v("saulipurhonen"),e("OutboundLink")],1)]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓")])]),t._v(" "),e("tr",[e("td",[t._v("🇫🇷 fr")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("French")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[e("a",{attrs:{href:"https://github.com/monlouisj",target:"_blank",rel:"noopener noreferrer"}},[t._v("monlouisj"),e("OutboundLink")],1),e("br"),e("a",{attrs:{href:"https://github.com/Telokis",target:"_blank",rel:"noopener noreferrer"}},[t._v("Telokis"),e("OutboundLink")],1)]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓"),e("br")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓"),e("br")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[e("br"),t._v("✓")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("*")])]),t._v(" "),e("tr",[e("td",[t._v("🇭🇺 hu")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("Hungarian")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[e("a",{attrs:{href:"https://github.com/szilveszter9",target:"_blank",rel:"noopener noreferrer"}},[t._v("szilveszter9"),e("OutboundLink")],1)]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("*")])]),t._v(" "),e("tr",[e("td",[t._v("🇮🇩 id")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("Indonesian")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[e("a",{attrs:{href:"https://github.com/ekoeryanto",target:"_blank",rel:"noopener noreferrer"}},[t._v("ekoeryanto"),e("OutboundLink")],1)]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("*")])]),t._v(" "),e("tr",[e("td",[t._v("🇮🇹 it")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("Italian")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[e("a",{attrs:{href:"https://github.com/jasoniangreen",target:"_blank",rel:"noopener noreferrer"}},[t._v("jasoniangreen"),e("OutboundLink")],1),e("br"),e("a",{attrs:{href:"https://github.com/lucacorti",target:"_blank",rel:"noopener noreferrer"}},[t._v("lucacorti"),e("OutboundLink")],1)]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓"),e("br")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[e("br"),t._v("✓")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[e("br"),t._v("✓")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[e("br"),t._v("✓")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[e("br"),t._v("✓")])]),t._v(" "),e("tr",[e("td",[t._v("🇯🇵 ja")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("Japanese")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[e("a",{attrs:{href:"https://github.com/gilgongo",target:"_blank",rel:"noopener noreferrer"}},[t._v("gilgongo"),e("OutboundLink")],1)]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("*")])]),t._v(" "),e("tr",[e("td",[t._v("🇰🇷 ko")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("Korean")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[e("a",{attrs:{href:"https://github.com/MinByeongDon",target:"_blank",rel:"noopener noreferrer"}},[t._v("MinByeongDon"),e("OutboundLink")],1)]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓")])]),t._v(" "),e("tr",[e("td",[t._v("🇳🇴 nb")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("Norwegian bokmål")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[e("a",{attrs:{href:"https://github.com/mtramm",target:"_blank",rel:"noopener noreferrer"}},[t._v("mtramm"),e("OutboundLink")],1)]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("*")])]),t._v(" "),e("tr",[e("td",[t._v("🇳🇱 nl")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("Dutch")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[e("a",{attrs:{href:"https://github.com/pimlie",target:"_blank",rel:"noopener noreferrer"}},[t._v("pimlie"),e("OutboundLink")],1),e("br"),e("a",{attrs:{href:"https://github.com/niekvb",target:"_blank",rel:"noopener noreferrer"}},[t._v("niekvb"),e("OutboundLink")],1)]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[e("br"),t._v("✓")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[e("br"),t._v("✓")])]),t._v(" "),e("tr",[e("td",[t._v("🇵🇱 pl")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("Polish")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[e("a",{attrs:{href:"https://github.com/danielzurawski",target:"_blank",rel:"noopener noreferrer"}},[t._v("danielzurawski"),e("OutboundLink")],1)]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("*")])]),t._v(" "),e("tr",[e("td",[t._v("🇧🇷 pt-BR")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("Português - Brasil")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[e("a",{attrs:{href:"https://github.com/marcosrava",target:"_blank",rel:"noopener noreferrer"}},[t._v("marcosrava"),e("OutboundLink")],1),e("br"),e("a",{attrs:{href:"https://github.com/ggondim",target:"_blank",rel:"noopener noreferrer"}},[t._v("ggondim"),e("OutboundLink")],1)]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[e("br"),t._v("✓")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[e("br"),t._v("✓")])]),t._v(" "),e("tr",[e("td",[t._v("🇷🇺 ru")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("Russian")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}}),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓")])]),t._v(" "),e("tr",[e("td",[t._v("🇸🇰 sk")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("Slovak")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[e("a",{attrs:{href:"https://github.com/kiskovacs",target:"_blank",rel:"noopener noreferrer"}},[t._v("kiskovacs"),e("OutboundLink")],1)]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("*")])]),t._v(" "),e("tr",[e("td",[t._v("🇸🇪 sv")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("Swedish")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[e("a",{attrs:{href:"https://github.com/Limmen",target:"_blank",rel:"noopener noreferrer"}},[t._v("limmen"),e("OutboundLink")],1)]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("*")])]),t._v(" "),e("tr",[e("td",[t._v("🇹🇭 th")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("Thai")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[e("a",{attrs:{href:"https://github.com/encX",target:"_blank",rel:"noopener noreferrer"}},[t._v("encX"),e("OutboundLink")],1)]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓")])]),t._v(" "),e("tr",[e("td",[t._v("🇨🇳 zh")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("Chinese")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[e("a",{attrs:{href:"https://github.com/jinzhubaofu",target:"_blank",rel:"noopener noreferrer"}},[t._v("jinzhubaofu"),e("OutboundLink")],1),e("br"),e("a",{attrs:{href:"https://github.com/leuction",target:"_blank",rel:"noopener noreferrer"}},[t._v("leuction"),e("OutboundLink")],1)]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓"),e("br")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[e("br"),t._v("✓")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[e("br"),t._v("✓")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[e("br"),t._v("✓")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[e("br"),t._v("✓")])]),t._v(" "),e("tr",[e("td",[t._v("🇹🇼 zh-TW")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("Chinese - Taiwan")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[e("a",{attrs:{href:"https://github.com/minipai",target:"_blank",rel:"noopener noreferrer"}},[t._v("minipai"),e("OutboundLink")],1)]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("✓")])])])]),t._v(" "),e("p",[e("sup",[t._v("1")]),t._v(" added boolean schema, keywords "),e("code",[t._v("const")]),t._v(", "),e("code",[t._v("contains")]),t._v(", "),e("code",[t._v("propertyNames")])]),t._v(" "),e("p",[e("sup",[t._v("2")]),t._v(" added keywords "),e("code",[t._v("if")]),t._v("/"),e("code",[t._v("then")]),t._v("/"),e("code",[t._v("else")])]),t._v(" "),e("p",[e("sup",[t._v("3")]),t._v(" added messages for keywords "),e("code",[t._v("unevaluatedProperties")]),t._v(", "),e("code",[t._v("unevaluatedItems")]),t._v(", "),e("code",[t._v("dependentRequired")])]),t._v(" "),e("p",[e("sup",[t._v("4")]),t._v(" keyword "),e("code",[t._v("items")]),t._v(" messages")]),t._v(" "),e("p",[e("sup",[t._v("5")]),t._v(" JSON Type Definition")]),t._v(" "),e("p",[t._v("* "),e("code",[t._v("discriminator")]),t._v(" form messages are not translated")]),t._v(" "),e("p",[t._v("Please contribute locales that you need to use if they are missing or incomplete.")]),t._v(" "),e("h2",{attrs:{id:"install"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#install"}},[t._v("#")]),t._v(" Install")]),t._v(" "),e("p",[t._v("Using npm:")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("npm install ajv-i18n\n")])])]),e("h2",{attrs:{id:"usage"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#usage"}},[t._v("#")]),t._v(" Usage")]),t._v(" "),e("p",[t._v("In node:")]),t._v(" "),e("div",{staticClass:"language-javascript extra-class"},[e("pre",{pre:!0,attrs:{class:"language-javascript"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Ajv "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("require")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ajv"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// version >= 8.0.0")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" localize "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("require")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ajv-i18n"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// or for JSON Type Definition")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v('// const localize = require("ajv-i18n/localize/jtd")')]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" ajv "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("Ajv")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("allErrors")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("messages")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" validate "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" ajv"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("compile")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("schema"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" valid "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("validate")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("if")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("valid"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// ru for Russian")]),t._v("\n localize"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("ru")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("validate"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("errors"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// string with all errors and data paths")]),t._v("\n console"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("ajv"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("errorsText")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("validate"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("errors"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("separator")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v("'\\n'")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("To require only necessary locales (e.g., with browserify):")]),t._v(" "),e("div",{staticClass:"language-javascript extra-class"},[e("pre",{pre:!0,attrs:{class:"language-javascript"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" localize_ru "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("require")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v("'ajv-i18n/localize/ru'")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// or for JSON Type Definition")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// const localize_ru = require('ajv-i18n/localize/ru/jtd')")]),t._v("\n")])])]),e("p",[t._v("or")]),t._v(" "),e("div",{staticClass:"language-javascript extra-class"},[e("pre",{pre:!0,attrs:{class:"language-javascript"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" localize "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("en")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("require")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v("'ajv-i18n/localize/en'")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("ru")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("require")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v("'ajv-i18n/localize/ru'")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("See "),e("a",{attrs:{href:"https://github.com/ajv-validator/ajv",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ajv docs"),e("OutboundLink")],1),t._v(" for more information.")]),t._v(" "),e("h2",{attrs:{id:"tests"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#tests"}},[t._v("#")]),t._v(" Tests")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("npm install\ngit submodule update --init\nnpm test\n")])])]),e("h2",{attrs:{id:"contributing"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#contributing"}},[t._v("#")]),t._v(" Contributing")]),t._v(" "),e("p",[t._v("Functions that localize error messages are generated using doT template "),e("a",{attrs:{href:"https://github.com/ajv-validator/ajv-i18n/tree/master/localize/localize.jst",target:"_blank",rel:"noopener noreferrer"}},[t._v("localize.jst"),e("OutboundLink")],1),t._v(", "),e("a",{attrs:{href:"https://github.com/ajv-validator/ajv-i18n/tree/master/messages/index.js",target:"_blank",rel:"noopener noreferrer"}},[t._v("JSON Schema messages"),e("OutboundLink")],1),t._v(" and "),e("a",{attrs:{href:"https://github.com/ajv-validator/ajv-i18n/tree/master/messages/jtd.js",target:"_blank",rel:"noopener noreferrer"}},[t._v("JSON Type Definition messages"),e("OutboundLink")],1),t._v(". Templates are pre-compiled, so doT is not a run-time dependency.")]),t._v(" "),e("p",[e("code",[t._v("npm run build")]),t._v(" - compiles functions to "),e("a",{attrs:{href:"https://github.com/ajv-validator/ajv/tree/master/localize",target:"_blank",rel:"noopener noreferrer"}},[t._v("localize"),e("OutboundLink")],1),t._v(" folder.")]),t._v(" "),e("h2",{attrs:{id:"contributors-of-locales"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#contributors-of-locales"}},[t._v("#")]),t._v(" Contributors of locales")]),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/danielzurawski",title:"danielzurawski",target:"_blank",rel:"noopener noreferrer"}},[e("img",{attrs:{src:"https://avatars3.githubusercontent.com/u/1625711?v=3&s=40",alt:"danielzurawski"}}),e("OutboundLink")],1),t._v(" "),e("a",{attrs:{href:"https://github.com/szilveszter9",title:"szilveszter9",target:"_blank",rel:"noopener noreferrer"}},[e("img",{attrs:{src:"https://avatars0.githubusercontent.com/u/7540866?v=3&s=40",alt:"szilveszter9"}}),e("OutboundLink")],1),t._v(" "),e("a",{attrs:{href:"https://github.com/jmtoball",title:"jmtoball",target:"_blank",rel:"noopener noreferrer"}},[e("img",{attrs:{src:"https://avatars0.githubusercontent.com/u/219950?v=3&s=40",alt:"jmtoball"}}),e("OutboundLink")],1),t._v(" "),e("a",{attrs:{href:"https://github.com/gilgongo",title:"gilgongo",target:"_blank",rel:"noopener noreferrer"}},[e("img",{attrs:{src:"https://avatars2.githubusercontent.com/u/4561747?v=3&s=40",alt:"gilgongo"}}),e("OutboundLink")],1),t._v(" "),e("a",{attrs:{href:"https://github.com/jasoniangreen",title:"jasoniangreen",target:"_blank",rel:"noopener noreferrer"}},[e("img",{attrs:{src:"https://avatars3.githubusercontent.com/u/3481367?v=3&s=40",alt:"jasoniangreen"}}),e("OutboundLink")],1),t._v(" "),e("a",{attrs:{href:"https://github.com/jpablom",title:"jpablom",target:"_blank",rel:"noopener noreferrer"}},[e("img",{attrs:{src:"https://avatars0.githubusercontent.com/u/3935083?v=3&s=40",alt:"jpablom"}}),e("OutboundLink")],1),t._v(" "),e("a",{attrs:{href:"https://github.com/Limmen",title:"Limmen",target:"_blank",rel:"noopener noreferrer"}},[e("img",{attrs:{src:"https://avatars2.githubusercontent.com/u/8254791?v=3&s=40",alt:"limmen"}}),e("OutboundLink")],1),t._v(" "),e("a",{attrs:{href:"https://github.com/jinzhubaofu",title:"jinzhubaofu",target:"_blank",rel:"noopener noreferrer"}},[e("img",{attrs:{src:"https://avatars2.githubusercontent.com/u/811195?v=3&s=40",alt:"jinzhubaofu"}}),e("OutboundLink")],1),t._v(" "),e("a",{attrs:{href:"https://github.com/kiskovacs",title:"kiskovacs",target:"_blank",rel:"noopener noreferrer"}},[e("img",{attrs:{src:"https://avatars1.githubusercontent.com/u/2733311?v=3&s=40",alt:"kiskovacs"}}),e("OutboundLink")],1),t._v(" "),e("a",{attrs:{href:"https://github.com/Mahmoud-Mardeni",title:"mahmoud-mardeni",target:"_blank",rel:"noopener noreferrer"}},[e("img",{attrs:{src:"https://avatars2.githubusercontent.com/u/19661270?s=40&v=3",alt:"mahmoud-mardeni"}}),e("OutboundLink")],1),t._v(" "),e("a",{attrs:{href:"https://github.com/monlouisj",title:"monlouisj",target:"_blank",rel:"noopener noreferrer"}},[e("img",{attrs:{src:"https://avatars0.githubusercontent.com/u/5998380?v=3&s=40",alt:"monlouisj"}}),e("OutboundLink")],1),t._v(" "),e("a",{attrs:{href:"https://github.com/marcosrava",title:"marcosrava",target:"_blank",rel:"noopener noreferrer"}},[e("img",{attrs:{src:"https://avatars2.githubusercontent.com/u/243790?v=3&s=40",alt:"marcosrava"}}),e("OutboundLink")],1),t._v(" "),e("a",{attrs:{href:"https://github.com/mtramm",title:"mtramm",target:"_blank",rel:"noopener noreferrer"}},[e("img",{attrs:{src:"https://avatars3.githubusercontent.com/u/3519541?v=3&s=40",alt:"mtramm"}}),e("OutboundLink")],1),t._v(" "),e("a",{attrs:{href:"https://github.com/Mahmoud-Mardeni",title:"Mahmoud-Mardeni",target:"_blank",rel:"noopener noreferrer"}},[e("img",{attrs:{src:"https://avatars3.githubusercontent.com/u/19661270?v=3&s=40",alt:"Mahmoud-Mardeni"}}),e("OutboundLink")],1),t._v(" "),e("a",{attrs:{href:"https://github.com/leuction",title:"leuction",target:"_blank",rel:"noopener noreferrer"}},[e("img",{attrs:{src:"https://avatars3.githubusercontent.com/u/8056270?v=3&s=40",alt:"leuction"}}),e("OutboundLink")],1),t._v(" "),e("a",{attrs:{href:"https://github.com/lucacorti",title:"lucacorti",target:"_blank",rel:"noopener noreferrer"}},[e("img",{attrs:{src:"https://avatars2.githubusercontent.com/u/1076999?v=3&s=40",alt:"lucacorti"}}),e("OutboundLink")],1),t._v(" "),e("a",{attrs:{href:"https://github.com/minipai",title:"minipai",target:"_blank",rel:"noopener noreferrer"}},[e("img",{attrs:{src:"https://avatars2.githubusercontent.com/u/239570?s=40&v=4",alt:"minipai"}}),e("OutboundLink")],1),t._v(" "),e("a",{attrs:{href:"https://github.com/encX",title:"encX",target:"_blank",rel:"noopener noreferrer"}},[e("img",{attrs:{src:"https://avatars3.githubusercontent.com/u/5965883?v=3&s=40",alt:"encX"}}),e("OutboundLink")],1),t._v(" "),e("a",{attrs:{href:"https://github.com/pimlie",title:"pimlie",target:"_blank",rel:"noopener noreferrer"}},[e("img",{attrs:{src:"https://avatars3.githubusercontent.com/u/1067403?s=40&v=4",alt:"pimlie",width:"40px"}}),e("OutboundLink")],1),t._v(" "),e("a",{attrs:{href:"https://github.com/MinByeongDon",title:"MinByeongDon",target:"_blank",rel:"noopener noreferrer"}},[e("img",{attrs:{src:"https://avatars2.githubusercontent.com/u/6141807?s=40&v=4",alt:"MinByeongDon"}}),e("OutboundLink")],1),t._v(" "),e("a",{attrs:{href:"https://github.com/gflohr",title:"gflohr",target:"_blank",rel:"noopener noreferrer"}},[e("img",{attrs:{src:"https://avatars0.githubusercontent.com/u/7126580?s=40&v=4",alt:"gflohr"}}),e("OutboundLink")],1),t._v(" "),e("a",{attrs:{href:"https://github.com/ekoeryanto",title:"ekoeryanto",target:"_blank",rel:"noopener noreferrer"}},[e("img",{attrs:{src:"https://avatars2.githubusercontent.com/u/36023898?s=40&v=4",alt:"ekoeryanto"}}),e("OutboundLink")],1),t._v(" "),e("a",{attrs:{href:"https://github.com/Telokis",title:"Telokis",target:"_blank",rel:"noopener noreferrer"}},[e("img",{attrs:{src:"https://avatars3.githubusercontent.com/u/6382729?s=40&v=4",alt:"Telokis"}}),e("OutboundLink")],1),t._v(" "),e("a",{attrs:{href:"https://github.com/alexandreec",title:"alexandreec",target:"_blank",rel:"noopener noreferrer"}},[e("img",{attrs:{src:"https://avatars3.githubusercontent.com/u/15526814?s=40&v=4",alt:"alexandreec",width:"40px"}}),e("OutboundLink")],1),t._v(" "),e("a",{attrs:{href:"https://github.com/ggondim",title:"ggondim",target:"_blank",rel:"noopener noreferrer"}},[e("img",{attrs:{src:"https://avatars2.githubusercontent.com/u/2074685?s=40&v=4",alt:"ggondim"}}),e("OutboundLink")],1),t._v(" "),e("a",{attrs:{href:"https://github.com/niekvb",title:"niekvb",target:"_blank",rel:"noopener noreferrer"}},[e("img",{attrs:{src:"https://avatars3.githubusercontent.com/u/37668320?s=40&v=4",alt:"niekvb"}}),e("OutboundLink")],1),t._v(" "),e("a",{attrs:{href:"https://github.com/NAM0007",title:"NAM0007",target:"_blank",rel:"noopener noreferrer"}},[e("img",{attrs:{src:"https://avatars1.githubusercontent.com/u/47188486?s=40&v=4",alt:"NAM0007"}}),e("OutboundLink")],1),t._v(" "),e("a",{attrs:{href:"https://github.com/saulipurhonen",title:"saulipurhonen",target:"_blank",rel:"noopener noreferrer"}},[e("img",{attrs:{src:"https://avatars.githubusercontent.com/u/48789543?s=40&v=4",alt:"saulipurhonen"}}),e("OutboundLink")],1)]),t._v(" "),e("h2",{attrs:{id:"enterprise-support"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#enterprise-support"}},[t._v("#")]),t._v(" Enterprise support")]),t._v(" "),e("p",[t._v("ajv-i18n package is a part of "),e("a",{attrs:{href:"https://tidelift.com/subscription/pkg/npm-ajv-i18n?utm_source=npm-ajv-i18n&utm_medium=referral&utm_campaign=enterprise&utm_term=repo",target:"_blank",rel:"noopener noreferrer"}},[t._v("Tidelift enterprise subscription"),e("OutboundLink")],1),t._v(" - it provides a centralised commercial support to open-source software users, in addition to the support provided by software maintainers.")]),t._v(" "),e("h2",{attrs:{id:"security-contact"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#security-contact"}},[t._v("#")]),t._v(" Security contact")]),t._v(" "),e("p",[t._v("To report a security vulnerability, please use the\n"),e("a",{attrs:{href:"https://tidelift.com/security",target:"_blank",rel:"noopener noreferrer"}},[t._v("Tidelift security contact"),e("OutboundLink")],1),t._v(".\nTidelift will coordinate the fix and disclosure. Please do NOT report security vulnerability via GitHub issues.")]),t._v(" "),e("h2",{attrs:{id:"license"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#license"}},[t._v("#")]),t._v(" License")]),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/ajv-validator/ajv-i18n/blob/master/LICENSE",target:"_blank",rel:"noopener noreferrer"}},[t._v("MIT"),e("OutboundLink")],1)])])}),[],!1,null,null,null);e.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/80.fba79acb.js b/assets/js/80.fba79acb.js new file mode 100644 index 000000000..21d16fd10 --- /dev/null +++ b/assets/js/80.fba79acb.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[80],{426:function(t,s,a){"use strict";a.r(s);var e=a(14),r=Object(e.a)({},(function(){var t=this,s=t._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("p",[s("a",{attrs:{href:"https://github.com/ajv-validator/ajv-keywords",target:"_blank",rel:"noopener noreferrer"}},[t._v("ajv-keywords repository"),s("OutboundLink")],1)]),t._v(" "),s("h1",{attrs:{id:"ajv-keywords"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#ajv-keywords"}},[t._v("#")]),t._v(" ajv-keywords")]),t._v(" "),s("p",[t._v("Custom JSON-Schema keywords for "),s("a",{attrs:{href:"https://github.com/epoberezkin/ajv",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ajv"),s("OutboundLink")],1),t._v(" validator")]),t._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/ajv-validator/ajv-keywords/actions?query=workflow%3Abuild",target:"_blank",rel:"noopener noreferrer"}},[s("img",{attrs:{src:"https://github.com/ajv-validator/ajv-keywords/workflows/build/badge.svg",alt:"build"}}),s("OutboundLink")],1),t._v(" "),s("a",{attrs:{href:"https://www.npmjs.com/package/ajv-keywords",target:"_blank",rel:"noopener noreferrer"}},[s("img",{attrs:{src:"https://img.shields.io/npm/v/ajv-keywords.svg",alt:"npm"}}),s("OutboundLink")],1),t._v(" "),s("a",{attrs:{href:"https://www.npmjs.com/package/ajv-keywords",target:"_blank",rel:"noopener noreferrer"}},[s("img",{attrs:{src:"https://img.shields.io/npm/dm/ajv-keywords.svg",alt:"npm downloads"}}),s("OutboundLink")],1),t._v(" "),s("a",{attrs:{href:"https://coveralls.io/github/ajv-validator/ajv-keywords?branch=master",target:"_blank",rel:"noopener noreferrer"}},[s("img",{attrs:{src:"https://coveralls.io/repos/github/ajv-validator/ajv-keywords/badge.svg?branch=master",alt:"coverage"}}),s("OutboundLink")],1),t._v(" "),s("a",{attrs:{href:"https://gitter.im/ajv-validator/ajv",target:"_blank",rel:"noopener noreferrer"}},[s("img",{attrs:{src:"https://img.shields.io/gitter/room/ajv-validator/ajv.svg",alt:"gitter"}}),s("OutboundLink")],1)]),t._v(" "),s("p",[s("strong",[t._v("Please note")]),t._v(": This readme file is for "),s("a",{attrs:{href:"https://github.com/ajv-validator/ajv-keywords/releases/tag/v5.0.0",target:"_blank",rel:"noopener noreferrer"}},[t._v("ajv-keywords v5.0.0"),s("OutboundLink")],1),t._v(" that should be used with "),s("a",{attrs:{href:"https://github.com/ajv-validator/ajv",target:"_blank",rel:"noopener noreferrer"}},[t._v("ajv v8"),s("OutboundLink")],1),t._v(".")]),t._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/ajv-validator/ajv-keywords/tree/v3",target:"_blank",rel:"noopener noreferrer"}},[t._v("ajv-keywords v3"),s("OutboundLink")],1),t._v(" should be used with "),s("a",{attrs:{href:"https://github.com/ajv-validator/ajv/tree/v6",target:"_blank",rel:"noopener noreferrer"}},[t._v("ajv v6"),s("OutboundLink")],1),t._v(".")]),t._v(" "),s("h2",{attrs:{id:"contents"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#contents"}},[t._v("#")]),t._v(" Contents")]),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"#install"}},[t._v("Install")])]),t._v(" "),s("li",[s("a",{attrs:{href:"#usage"}},[t._v("Usage")])]),t._v(" "),s("li",[s("a",{attrs:{href:"#keywords"}},[t._v("Keywords")]),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"#types"}},[t._v("Types")]),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"#typeof"}},[t._v("typeof")])]),t._v(" "),s("li",[s("a",{attrs:{href:"#instanceof"}},[t._v("instanceof")]),s("sup",[t._v("+")])])])]),t._v(" "),s("li",[s("a",{attrs:{href:"#keywords-for-numbers"}},[t._v("Keywords for numbers")]),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"#range-and-exclusiverange"}},[t._v("range and exclusiveRange")])])])]),t._v(" "),s("li",[s("a",{attrs:{href:"#keywords-for-strings"}},[t._v("Keywords for strings")]),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"#regexp"}},[t._v("regexp")])]),t._v(" "),s("li",[s("a",{attrs:{href:"#transform"}},[t._v("transform")]),s("sup",[t._v("*")])])])]),t._v(" "),s("li",[s("a",{attrs:{href:"#keywords-for-arrays"}},[t._v("Keywords for arrays")]),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"#uniqueitemproperties"}},[t._v("uniqueItemProperties")]),s("sup",[t._v("+")])])])]),t._v(" "),s("li",[s("a",{attrs:{href:"#keywords-for-objects"}},[t._v("Keywords for objects")]),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"#allrequired"}},[t._v("allRequired")])]),t._v(" "),s("li",[s("a",{attrs:{href:"#anyrequired"}},[t._v("anyRequired")])]),t._v(" "),s("li",[s("a",{attrs:{href:"#onerequired"}},[t._v("oneRequired")])]),t._v(" "),s("li",[s("a",{attrs:{href:"#patternrequired"}},[t._v("patternRequired")])]),t._v(" "),s("li",[s("a",{attrs:{href:"#prohibited"}},[t._v("prohibited")])]),t._v(" "),s("li",[s("a",{attrs:{href:"#deepproperties"}},[t._v("deepProperties")])]),t._v(" "),s("li",[s("a",{attrs:{href:"#deeprequired"}},[t._v("deepRequired")])]),t._v(" "),s("li",[s("a",{attrs:{href:"#dynamicdefaults"}},[t._v("dynamicDefaults")]),s("sup",[t._v("*")]),s("sup",[t._v("+")])])])]),t._v(" "),s("li",[s("a",{attrs:{href:"#keywords-for-all-types"}},[t._v("Keywords for all types")]),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"#selectselectcasesselectdefault"}},[t._v("select/selectCases/selectDefault")])])])])])]),t._v(" "),s("li",[s("a",{attrs:{href:"#security-contact"}},[t._v("Security contact")])]),t._v(" "),s("li",[s("a",{attrs:{href:"#open-source-software-support"}},[t._v("Open-source software support")])]),t._v(" "),s("li",[s("a",{attrs:{href:"#license"}},[t._v("License")])])]),t._v(" "),s("p",[s("sup",[t._v("*")]),t._v(" - keywords that modify data\n"),s("sup",[t._v("+")]),t._v(" - keywords that are not supported in "),s("a",{attrs:{href:"https://github.com/ajv-validator/ajv/blob/master/docs/standalone.md",target:"_blank",rel:"noopener noreferrer"}},[t._v("standalone validation code"),s("OutboundLink")],1)]),t._v(" "),s("h2",{attrs:{id:"install"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#install"}},[t._v("#")]),t._v(" Install")]),t._v(" "),s("p",[t._v("To install version 4 to use with "),s("a",{attrs:{href:"https://github.com/ajv-validator/ajv",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ajv v7"),s("OutboundLink")],1),t._v(":")]),t._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[t._v("npm install ajv-keywords\n")])])]),s("h2",{attrs:{id:"usage"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#usage"}},[t._v("#")]),t._v(" Usage")]),t._v(" "),s("p",[t._v("To add all available keywords:")]),t._v(" "),s("div",{staticClass:"language-javascript extra-class"},[s("pre",{pre:!0,attrs:{class:"language-javascript"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" Ajv "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("require")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ajv"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" ajv "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Ajv")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("require")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ajv-keywords"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("ajv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\najv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("validate")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("instanceof")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"RegExp"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token regex"}},[s("span",{pre:!0,attrs:{class:"token regex-delimiter"}},[t._v("/")]),s("span",{pre:!0,attrs:{class:"token regex-source language-regex"}},[t._v(".*")]),s("span",{pre:!0,attrs:{class:"token regex-delimiter"}},[t._v("/")])]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// true")]),t._v("\najv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("validate")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("instanceof")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"RegExp"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('".*"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// false")]),t._v("\n")])])]),s("p",[t._v("To add a single keyword:")]),t._v(" "),s("div",{staticClass:"language-javascript extra-class"},[s("pre",{pre:!0,attrs:{class:"language-javascript"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("require")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ajv-keywords"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("ajv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"instanceof"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("p",[t._v("To add multiple keywords:")]),t._v(" "),s("div",{staticClass:"language-javascript extra-class"},[s("pre",{pre:!0,attrs:{class:"language-javascript"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("require")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ajv-keywords"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("ajv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"typeof"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"instanceof"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("p",[t._v("To add a single keyword directly (to avoid adding unused code):")]),t._v(" "),s("div",{staticClass:"language-javascript extra-class"},[s("pre",{pre:!0,attrs:{class:"language-javascript"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("require")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ajv-keywords/dist/keywords/select"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("ajv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" opts"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("p",[t._v("To add all keywords via Ajv options:")]),t._v(" "),s("div",{staticClass:"language-javascript extra-class"},[s("pre",{pre:!0,attrs:{class:"language-javascript"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" ajv "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Ajv")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("keywords")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("require")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ajv-keywords/dist/definitions"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("opts"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("p",[t._v("To add one or several keywords via options:")]),t._v(" "),s("div",{staticClass:"language-javascript extra-class"},[s("pre",{pre:!0,attrs:{class:"language-javascript"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" ajv "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Ajv")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("keywords")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("require")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ajv-keywords/dist/definitions/typeof"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("require")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ajv-keywords/dist/definitions/instanceof"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v('// select exports an array of 3 definitions - see "select" in docs')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("...")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("require")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ajv-keywords/dist/definitions/select"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("opts"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("p",[s("code",[t._v("opts")]),t._v(" is an optional object with a property "),s("code",[t._v("defaultMeta")]),t._v(" - URI of meta-schema to use for keywords that use subschemas ("),s("code",[t._v("select")]),t._v(" and "),s("code",[t._v("deepProperties")]),t._v("). The default is "),s("code",[t._v('"http://json-schema.org/schema"')]),t._v(".")]),t._v(" "),s("h2",{attrs:{id:"keywords"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#keywords"}},[t._v("#")]),t._v(" Keywords")]),t._v(" "),s("h3",{attrs:{id:"types"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#types"}},[t._v("#")]),t._v(" Types")]),t._v(" "),s("h4",{attrs:{id:"typeof"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#typeof"}},[t._v("#")]),t._v(" "),s("code",[t._v("typeof")])]),t._v(" "),s("p",[t._v("Based on JavaScript "),s("code",[t._v("typeof")]),t._v(" operation.")]),t._v(" "),s("p",[t._v("The value of the keyword should be a string ("),s("code",[t._v('"undefined"')]),t._v(", "),s("code",[t._v('"string"')]),t._v(", "),s("code",[t._v('"number"')]),t._v(", "),s("code",[t._v('"object"')]),t._v(", "),s("code",[t._v('"function"')]),t._v(", "),s("code",[t._v('"boolean"')]),t._v(" or "),s("code",[t._v('"symbol"')]),t._v(") or an array of strings.")]),t._v(" "),s("p",[t._v("To pass validation the result of "),s("code",[t._v("typeof")]),t._v(" operation on the value should be equal to the string (or one of the strings in the array).")]),t._v(" "),s("div",{staticClass:"language-javascript extra-class"},[s("pre",{pre:!0,attrs:{class:"language-javascript"}},[s("code",[t._v("ajv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("validate")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typeof")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"undefined"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("undefined")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// true")]),t._v("\najv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("validate")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typeof")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"undefined"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("null")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// false")]),t._v("\najv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("validate")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("typeof")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"undefined"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"object"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("null")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// true")]),t._v("\n")])])]),s("h4",{attrs:{id:"instanceof"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#instanceof"}},[t._v("#")]),t._v(" "),s("code",[t._v("instanceof")])]),t._v(" "),s("p",[t._v("Based on JavaScript "),s("code",[t._v("instanceof")]),t._v(" operation.")]),t._v(" "),s("p",[t._v("The value of the keyword should be a string ("),s("code",[t._v('"Object"')]),t._v(", "),s("code",[t._v('"Array"')]),t._v(", "),s("code",[t._v('"Function"')]),t._v(", "),s("code",[t._v('"Number"')]),t._v(", "),s("code",[t._v('"String"')]),t._v(", "),s("code",[t._v('"Date"')]),t._v(", "),s("code",[t._v('"RegExp"')]),t._v(" or "),s("code",[t._v('"Promise"')]),t._v(") or an array of strings.")]),t._v(" "),s("p",[t._v("To pass validation the result of "),s("code",[t._v("data instanceof ...")]),t._v(" operation on the value should be true:")]),t._v(" "),s("div",{staticClass:"language-javascript extra-class"},[s("pre",{pre:!0,attrs:{class:"language-javascript"}},[s("code",[t._v("ajv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("validate")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("instanceof")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Array"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// true")]),t._v("\najv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("validate")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("instanceof")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Array"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// false")]),t._v("\najv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("validate")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("instanceof")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Array"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Function"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// true")]),t._v("\n")])])]),s("p",[t._v("You can add your own constructor function to be recognised by this keyword:")]),t._v(" "),s("div",{staticClass:"language-javascript extra-class"},[s("pre",{pre:!0,attrs:{class:"language-javascript"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("MyClass")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" instanceofDef "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("require")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ajv-keywords/dist/definitions/instanceof"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\ninstanceofDef"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token constant"}},[t._v("CONSTRUCTORS")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("MyClass "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" MyClass\najv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("validate")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("instanceof")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"MyClass"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("MyClass")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// true")]),t._v("\n")])])]),s("p",[s("strong",[t._v("Please note")]),t._v(": currently "),s("code",[t._v("instanceof")]),t._v(" is not supported in "),s("a",{attrs:{href:"https://github.com/ajv-validator/ajv/blob/master/docs/standalone.md",target:"_blank",rel:"noopener noreferrer"}},[t._v("standalone validation code"),s("OutboundLink")],1),t._v(" - it has to be implemented as "),s("a",{attrs:{href:"https://github.com/ajv-validator/ajv/blob/master/docs/keywords.md#define-keyword-with-code-generation-function",target:"_blank",rel:"noopener noreferrer"}},[s("code",[t._v("code")]),t._v(" keyword"),s("OutboundLink")],1),t._v(" to support it (PR is welcome).")]),t._v(" "),s("h3",{attrs:{id:"keywords-for-numbers"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#keywords-for-numbers"}},[t._v("#")]),t._v(" Keywords for numbers")]),t._v(" "),s("h4",{attrs:{id:"range-and-exclusiverange"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#range-and-exclusiverange"}},[t._v("#")]),t._v(" "),s("code",[t._v("range")]),t._v(" and "),s("code",[t._v("exclusiveRange")])]),t._v(" "),s("p",[t._v("Syntax sugar for the combination of minimum and maximum keywords (or exclusiveMinimum and exclusiveMaximum), also fails schema compilation if there are no numbers in the range.")]),t._v(" "),s("p",[t._v("The value of these keywords must be an array consisting of two numbers, the second must be greater or equal than the first one.")]),t._v(" "),s("p",[t._v("If the validated value is not a number the validation passes, otherwise to pass validation the value should be greater (or equal) than the first number and smaller (or equal) than the second number in the array.")]),t._v(" "),s("div",{staticClass:"language-javascript extra-class"},[s("pre",{pre:!0,attrs:{class:"language-javascript"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" schema "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("range")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\najv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("validate")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("schema"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// true")]),t._v("\najv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("validate")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("schema"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// true")]),t._v("\najv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("validate")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("schema"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// true")]),t._v("\najv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("validate")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("schema"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0.99")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// false")]),t._v("\najv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("validate")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("schema"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("3.01")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// false")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" schema "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("exclusiveRange")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\najv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("validate")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("schema"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1.01")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// true")]),t._v("\najv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("validate")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("schema"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// true")]),t._v("\najv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("validate")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("schema"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("2.99")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// true")]),t._v("\najv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("validate")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("schema"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// false")]),t._v("\najv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("validate")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("schema"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// false")]),t._v("\n")])])]),s("h3",{attrs:{id:"keywords-for-strings"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#keywords-for-strings"}},[t._v("#")]),t._v(" Keywords for strings")]),t._v(" "),s("h4",{attrs:{id:"regexp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#regexp"}},[t._v("#")]),t._v(" "),s("code",[t._v("regexp")])]),t._v(" "),s("p",[t._v("This keyword allows to use regular expressions with flags in schemas, and also without "),s("code",[t._v('"u"')]),t._v(" flag when needed (the standard "),s("code",[t._v("pattern")]),t._v(" keyword does not support flags and implies the presence of "),s("code",[t._v('"u"')]),t._v(" flag).")]),t._v(" "),s("p",[t._v("This keyword applies only to strings. If the data is not a string, the validation succeeds.")]),t._v(" "),s("p",[t._v("The value of this keyword can be either a string (the result of "),s("code",[t._v("regexp.toString()")]),t._v(") or an object with the properties "),s("code",[t._v("pattern")]),t._v(" and "),s("code",[t._v("flags")]),t._v(" (the same strings that should be passed to RegExp constructor).")]),t._v(" "),s("div",{staticClass:"language-javascript extra-class"},[s("pre",{pre:!0,attrs:{class:"language-javascript"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" schema "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"object"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("properties")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("foo")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"string"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("regexp")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/foo/i"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("bar")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"string"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("regexp")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("pattern")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"bar"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("flags")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"i"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" validData "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("foo")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Food"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("bar")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Barmen"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" invalidData "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("foo")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"fog"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("bar")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"bad"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h4",{attrs:{id:"transform"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#transform"}},[t._v("#")]),t._v(" "),s("code",[t._v("transform")])]),t._v(" "),s("p",[t._v("This keyword allows a string to be modified during validation.")]),t._v(" "),s("p",[t._v("This keyword applies only to strings. If the data is not a string, the "),s("code",[t._v("transform")]),t._v(" keyword is ignored.")]),t._v(" "),s("p",[t._v("A standalone string cannot be modified, i.e. "),s("code",[t._v("data = 'a'; ajv.validate(schema, data);")]),t._v(", because strings are passed by value")]),t._v(" "),s("p",[s("strong",[t._v("Supported transformations:")])]),t._v(" "),s("ul",[s("li",[s("code",[t._v("trim")]),t._v(": remove whitespace from start and end")]),t._v(" "),s("li",[s("code",[t._v("trimStart")]),t._v("/"),s("code",[t._v("trimLeft")]),t._v(": remove whitespace from start")]),t._v(" "),s("li",[s("code",[t._v("trimEnd")]),t._v("/"),s("code",[t._v("trimRight")]),t._v(": remove whitespace from end")]),t._v(" "),s("li",[s("code",[t._v("toLowerCase")]),t._v(": convert to lower case")]),t._v(" "),s("li",[s("code",[t._v("toUpperCase")]),t._v(": convert to upper case")]),t._v(" "),s("li",[s("code",[t._v("toEnumCase")]),t._v(": change string case to be equal to one of "),s("code",[t._v("enum")]),t._v(" values in the schema")])]),t._v(" "),s("p",[t._v("Transformations are applied in the order they are listed.")]),t._v(" "),s("p",[t._v("Note: "),s("code",[t._v("toEnumCase")]),t._v(" requires that all allowed values are unique when case insensitive.")]),t._v(" "),s("p",[s("strong",[t._v("Example: multiple transformations")])]),t._v(" "),s("div",{staticClass:"language-javascript extra-class"},[s("pre",{pre:!0,attrs:{class:"language-javascript"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("require")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ajv-keywords"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("ajv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"transform"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" schema "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"array"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("items")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"string"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("transform")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"trim"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"toLowerCase"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" data "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('" MixCase "')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\najv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("validate")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("schema"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" data"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\nconsole"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// ['mixcase']")]),t._v("\n")])])]),s("p",[s("strong",[t._v("Example: "),s("code",[t._v("enumcase")])])]),t._v(" "),s("div",{staticClass:"language-javascript extra-class"},[s("pre",{pre:!0,attrs:{class:"language-javascript"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("require")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ajv-keywords"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("ajv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"transform"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" schema "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"array"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("items")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"string"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("transform")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"trim"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"toEnumCase"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("enum")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"pH"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" data "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ph"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('" Ph"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"PH"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"pH "')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\najv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("validate")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("schema"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" data"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\nconsole"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// ['pH','pH','pH','pH']")]),t._v("\n")])])]),s("h3",{attrs:{id:"keywords-for-arrays"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#keywords-for-arrays"}},[t._v("#")]),t._v(" Keywords for arrays")]),t._v(" "),s("h4",{attrs:{id:"uniqueitemproperties"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#uniqueitemproperties"}},[t._v("#")]),t._v(" "),s("code",[t._v("uniqueItemProperties")])]),t._v(" "),s("p",[t._v("The keyword allows to check that some properties in array items are unique.")]),t._v(" "),s("p",[t._v("This keyword applies only to arrays. If the data is not an array, the validation succeeds.")]),t._v(" "),s("p",[t._v("The value of this keyword must be an array of strings - property names that should have unique values across all items.")]),t._v(" "),s("div",{staticClass:"language-javascript extra-class"},[s("pre",{pre:!0,attrs:{class:"language-javascript"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" schema "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"array"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("uniqueItemProperties")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" validData "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("id")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("id")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("id")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" invalidData1 "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("id")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("id")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v('// duplicate "id"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("id")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" invalidData2 "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("id")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("name")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"taco"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("id")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("name")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"taco"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v('// duplicate "name"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("id")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("name")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"salsa"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n")])])]),s("p",[t._v("This keyword is contributed by "),s("a",{attrs:{href:"https://github.com/blainesch",target:"_blank",rel:"noopener noreferrer"}},[t._v("@blainesch"),s("OutboundLink")],1),t._v(".")]),t._v(" "),s("p",[s("strong",[t._v("Please note")]),t._v(": currently "),s("code",[t._v("uniqueItemProperties")]),t._v(" is not supported in "),s("a",{attrs:{href:"https://github.com/ajv-validator/ajv/blob/master/docs/standalone.md",target:"_blank",rel:"noopener noreferrer"}},[t._v("standalone validation code"),s("OutboundLink")],1),t._v(" - it has to be implemented as "),s("a",{attrs:{href:"https://github.com/ajv-validator/ajv/blob/master/docs/keywords.md#define-keyword-with-code-generation-function",target:"_blank",rel:"noopener noreferrer"}},[s("code",[t._v("code")]),t._v(" keyword"),s("OutboundLink")],1),t._v(" to support it (PR is welcome).")]),t._v(" "),s("h3",{attrs:{id:"keywords-for-objects"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#keywords-for-objects"}},[t._v("#")]),t._v(" Keywords for objects")]),t._v(" "),s("h4",{attrs:{id:"allrequired"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#allrequired"}},[t._v("#")]),t._v(" "),s("code",[t._v("allRequired")])]),t._v(" "),s("p",[t._v("This keyword allows to require the presence of all properties used in "),s("code",[t._v("properties")]),t._v(" keyword in the same schema object.")]),t._v(" "),s("p",[t._v("This keyword applies only to objects. If the data is not an object, the validation succeeds.")]),t._v(" "),s("p",[t._v("The value of this keyword must be boolean.")]),t._v(" "),s("p",[t._v("If the value of the keyword is "),s("code",[t._v("false")]),t._v(", the validation succeeds.")]),t._v(" "),s("p",[t._v("If the value of the keyword is "),s("code",[t._v("true")]),t._v(", the validation succeeds if the data contains all properties defined in "),s("code",[t._v("properties")]),t._v(" keyword (in the same schema object).")]),t._v(" "),s("p",[t._v("If the "),s("code",[t._v("properties")]),t._v(" keyword is not present in the same schema object, schema compilation will throw exception.")]),t._v(" "),s("div",{staticClass:"language-javascript extra-class"},[s("pre",{pre:!0,attrs:{class:"language-javascript"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" schema "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"object"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("properties")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("foo")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("bar")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("allRequired")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" validData "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("foo")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("bar")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" alsoValidData "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("foo")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("bar")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("baz")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" invalidDataList "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("foo")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("bar")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n")])])]),s("h4",{attrs:{id:"anyrequired"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#anyrequired"}},[t._v("#")]),t._v(" "),s("code",[t._v("anyRequired")])]),t._v(" "),s("p",[t._v("This keyword allows to require the presence of any (at least one) property from the list.")]),t._v(" "),s("p",[t._v("This keyword applies only to objects. If the data is not an object, the validation succeeds.")]),t._v(" "),s("p",[t._v("The value of this keyword must be an array of strings, each string being a property name. For data object to be valid at least one of the properties in this array should be present in the object.")]),t._v(" "),s("div",{staticClass:"language-javascript extra-class"},[s("pre",{pre:!0,attrs:{class:"language-javascript"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" schema "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"object"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("anyRequired")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"foo"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"bar"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" validData "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("foo")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" alsoValidData "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("foo")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("bar")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" invalidDataList "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("baz")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n")])])]),s("h4",{attrs:{id:"onerequired"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#onerequired"}},[t._v("#")]),t._v(" "),s("code",[t._v("oneRequired")])]),t._v(" "),s("p",[t._v("This keyword allows to require the presence of only one property from the list.")]),t._v(" "),s("p",[t._v("This keyword applies only to objects. If the data is not an object, the validation succeeds.")]),t._v(" "),s("p",[t._v("The value of this keyword must be an array of strings, each string being a property name. For data object to be valid exactly one of the properties in this array should be present in the object.")]),t._v(" "),s("div",{staticClass:"language-javascript extra-class"},[s("pre",{pre:!0,attrs:{class:"language-javascript"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" schema "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"object"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("oneRequired")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"foo"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"bar"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" validData "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("foo")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" alsoValidData "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("bar")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("baz")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" invalidDataList "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("baz")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("foo")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("bar")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n")])])]),s("h4",{attrs:{id:"patternrequired"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#patternrequired"}},[t._v("#")]),t._v(" "),s("code",[t._v("patternRequired")])]),t._v(" "),s("p",[t._v("This keyword allows to require the presence of properties that match some pattern(s).")]),t._v(" "),s("p",[t._v("This keyword applies only to objects. If the data is not an object, the validation succeeds.")]),t._v(" "),s("p",[t._v("The value of this keyword should be an array of strings, each string being a regular expression. For data object to be valid each regular expression in this array should match at least one property name in the data object.")]),t._v(" "),s("p",[t._v("If the array contains multiple regular expressions, more than one expression can match the same property name.")]),t._v(" "),s("div",{staticClass:"language-javascript extra-class"},[s("pre",{pre:!0,attrs:{class:"language-javascript"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" schema "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"object"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("patternRequired")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"f.*o"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"b.*r"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" validData "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("foo")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("bar")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" alsoValidData "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("foobar")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" invalidDataList "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("foo")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("bar")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n")])])]),s("h4",{attrs:{id:"prohibited"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#prohibited"}},[t._v("#")]),t._v(" "),s("code",[t._v("prohibited")])]),t._v(" "),s("p",[t._v("This keyword allows to prohibit that any of the properties in the list is present in the object.")]),t._v(" "),s("p",[t._v("This keyword applies only to objects. If the data is not an object, the validation succeeds.")]),t._v(" "),s("p",[t._v("The value of this keyword should be an array of strings, each string being a property name. For data object to be valid none of the properties in this array should be present in the object.")]),t._v(" "),s("div",{staticClass:"language-javascript extra-class"},[s("pre",{pre:!0,attrs:{class:"language-javascript"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" schema "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"object"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("prohibited")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"foo"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"bar"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" validData "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("baz")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" alsoValidData "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" invalidDataList "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("foo")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("bar")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("foo")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("bar")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n")])])]),s("p",[s("strong",[t._v("Please note")]),t._v(": "),s("code",[t._v("{prohibited: ['foo', 'bar']}")]),t._v(" is equivalent to "),s("code",[t._v("{not: {anyRequired: ['foo', 'bar']}}")]),t._v(" (i.e. it has the same validation result for any data).")]),t._v(" "),s("h4",{attrs:{id:"deepproperties"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#deepproperties"}},[t._v("#")]),t._v(" "),s("code",[t._v("deepProperties")])]),t._v(" "),s("p",[t._v("This keyword allows to validate deep properties (identified by JSON pointers).")]),t._v(" "),s("p",[t._v("This keyword applies only to objects. If the data is not an object, the validation succeeds.")]),t._v(" "),s("p",[t._v("The value should be an object, where keys are JSON pointers to the data, starting from the current position in data, and the values are JSON schemas. For data object to be valid the value of each JSON pointer should be valid according to the corresponding schema.")]),t._v(" "),s("div",{staticClass:"language-javascript extra-class"},[s("pre",{pre:!0,attrs:{class:"language-javascript"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" schema "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"object"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("deepProperties")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"/users/1/role"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("enum")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"admin"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" validData "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("users")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("id")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("123")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("role")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"admin"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" alsoValidData "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("users")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("id")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("123")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("role")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"admin"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" invalidData "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("users")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("id")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("123")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("role")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"user"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" alsoInvalidData "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("users")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("id")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("123")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("role")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"user"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h4",{attrs:{id:"deeprequired"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#deeprequired"}},[t._v("#")]),t._v(" "),s("code",[t._v("deepRequired")])]),t._v(" "),s("p",[t._v("This keyword allows to check that some deep properties (identified by JSON pointers) are available.")]),t._v(" "),s("p",[t._v("This keyword applies only to objects. If the data is not an object, the validation succeeds.")]),t._v(" "),s("p",[t._v("The value should be an array of JSON pointers to the data, starting from the current position in data. For data object to be valid each JSON pointer should be some existing part of the data.")]),t._v(" "),s("div",{staticClass:"language-javascript extra-class"},[s("pre",{pre:!0,attrs:{class:"language-javascript"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" schema "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"object"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("deepRequired")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/users/1/role"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" validData "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("users")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("id")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("123")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("role")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"admin"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" invalidData "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("users")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("id")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("123")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("p",[t._v("See "),s("a",{attrs:{href:"https://github.com/json-schema-org/json-schema-spec/issues/203#issue-197211916",target:"_blank",rel:"noopener noreferrer"}},[t._v("json-schema-org/json-schema-spec#203"),s("OutboundLink")],1),t._v(" for an example of the equivalent schema without "),s("code",[t._v("deepRequired")]),t._v(" keyword.")]),t._v(" "),s("h3",{attrs:{id:"keywords-for-all-types"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#keywords-for-all-types"}},[t._v("#")]),t._v(" Keywords for all types")]),t._v(" "),s("h4",{attrs:{id:"select-selectcases-selectdefault"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#select-selectcases-selectdefault"}},[t._v("#")]),t._v(" "),s("code",[t._v("select")]),t._v("/"),s("code",[t._v("selectCases")]),t._v("/"),s("code",[t._v("selectDefault")])]),t._v(" "),s("p",[s("strong",[t._v("Please note")]),t._v(": these keywords are deprecated. It is recommended to use OpenAPI "),s("a",{attrs:{href:"https://ajv.js.org/json-schema.html#discriminator",target:"_blank",rel:"noopener noreferrer"}},[t._v("discriminator"),s("OutboundLink")],1),t._v(" keyword supported by Ajv v8 instead of "),s("code",[t._v("select")]),t._v(".")]),t._v(" "),s("p",[t._v("These keywords allow to choose the schema to validate the data based on the value of some property in the validated data.")]),t._v(" "),s("p",[t._v("These keywords must be present in the same schema object ("),s("code",[t._v("selectDefault")]),t._v(" is optional).")]),t._v(" "),s("p",[t._v("The value of "),s("code",[t._v("select")]),t._v(" keyword should be a "),s("a",{attrs:{href:"https://github.com/ajv-validator/ajv/blob/master/docs/validation.md#data-reference",target:"_blank",rel:"noopener noreferrer"}},[t._v("$data reference"),s("OutboundLink")],1),t._v(" that points to any primitive JSON type (string, number, boolean or null) in the data that is validated. You can also use a constant of primitive type as the value of this keyword (e.g., for debugging purposes).")]),t._v(" "),s("p",[t._v("The value of "),s("code",[t._v("selectCases")]),t._v(" keyword must be an object where each property name is a possible string representation of the value of "),s("code",[t._v("select")]),t._v(" keyword and each property value is a corresponding schema (from draft-06 it can be boolean) that must be used to validate the data.")]),t._v(" "),s("p",[t._v("The value of "),s("code",[t._v("selectDefault")]),t._v(" keyword is a schema (also can be boolean) that must be used to validate the data in case "),s("code",[t._v("selectCases")]),t._v(" has no key equal to the stringified value of "),s("code",[t._v("select")]),t._v(" keyword.")]),t._v(" "),s("p",[t._v("The validation succeeds in one of the following cases:")]),t._v(" "),s("ul",[s("li",[t._v("the validation of data using selected schema succeeds,")]),t._v(" "),s("li",[t._v("none of the schemas is selected for validation,")]),t._v(" "),s("li",[t._v("the value of select is undefined (no property in the data that the data reference points to).")])]),t._v(" "),s("p",[t._v("If "),s("code",[t._v("select")]),t._v(" value (in data) is not a primitive type the validation fails.")]),t._v(" "),s("p",[t._v("This keyword correctly tracks evaluated properties and items to work with "),s("code",[t._v("unevaluatedProperties")]),t._v(" and "),s("code",[t._v("unevaluatedItems")]),t._v(" keywords - only properties and items from the subschema that was used (one of "),s("code",[t._v("selectCases")]),t._v(" subschemas or "),s("code",[t._v("selectDefault")]),t._v(" subschema) are marked as evaluated.")]),t._v(" "),s("p",[s("strong",[t._v("Please note")]),t._v(": these keywords require Ajv "),s("code",[t._v("$data")]),t._v(" option to support "),s("a",{attrs:{href:"https://github.com/ajv-validator/ajv/blob/master/docs/validation.md#data-reference",target:"_blank",rel:"noopener noreferrer"}},[t._v("$data reference"),s("OutboundLink")],1),t._v(".")]),t._v(" "),s("div",{staticClass:"language-javascript extra-class"},[s("pre",{pre:!0,attrs:{class:"language-javascript"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("require")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ajv-keywords"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("ajv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"select"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" schema "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"object"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("required")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"kind"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("properties")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("kind")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"string"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("select")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("$data")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0/kind"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("selectCases")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("foo")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("required")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"foo"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("properties")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("kind")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("foo")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"string"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("additionalProperties")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("bar")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("required")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"bar"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("properties")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("kind")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("bar")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("additionalProperties")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("selectDefault")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("propertyNames")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("not")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("enum")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"foo"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"bar"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" validDataList "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("kind")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"foo"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("foo")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"any"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("kind")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"bar"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("bar")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("kind")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"anything_else"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("not_bar_or_foo")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"any value"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" invalidDataList "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("kind")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"foo"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// no property foo")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("kind")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"bar"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// no property bar")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("kind")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"foo"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("foo")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"any"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("another")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"any value"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// additional property")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("kind")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"bar"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("bar")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("another")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"any value"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// additional property")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("kind")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"anything_else"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("foo")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"any"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// property foo not allowed")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("kind")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"anything_else"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("bar")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// property bar not allowed")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n")])])]),s("h4",{attrs:{id:"dynamicdefaults"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#dynamicdefaults"}},[t._v("#")]),t._v(" "),s("code",[t._v("dynamicDefaults")])]),t._v(" "),s("p",[t._v("This keyword allows to assign dynamic defaults to properties, such as timestamps, unique IDs etc.")]),t._v(" "),s("p",[t._v("This keyword only works if "),s("code",[t._v("useDefaults")]),t._v(" options is used and not inside "),s("code",[t._v("anyOf")]),t._v(" keywords etc., in the same way as "),s("a",{attrs:{href:"https://github.com/epoberezkin/ajv#assigning-defaults",target:"_blank",rel:"noopener noreferrer"}},[t._v("default keyword treated by Ajv"),s("OutboundLink")],1),t._v(".")]),t._v(" "),s("p",[t._v("The keyword should be added on the object level. Its value should be an object with each property corresponding to a property name, in the same way as in standard "),s("code",[t._v("properties")]),t._v(" keyword. The value of each property can be:")]),t._v(" "),s("ul",[s("li",[t._v("an identifier of dynamic default function (a string)")]),t._v(" "),s("li",[t._v("an object with properties "),s("code",[t._v("func")]),t._v(" (an identifier) and "),s("code",[t._v("args")]),t._v(" (an object with parameters that will be passed to this function during schema compilation - see examples).")])]),t._v(" "),s("p",[t._v("The properties used in "),s("code",[t._v("dynamicDefaults")]),t._v(" should not be added to "),s("code",[t._v("required")]),t._v(" keyword in the same schema (or validation will fail), because unlike "),s("code",[t._v("default")]),t._v(" this keyword is processed after validation.")]),t._v(" "),s("p",[t._v("There are several predefined dynamic default functions:")]),t._v(" "),s("ul",[s("li",[s("code",[t._v('"timestamp"')]),t._v(" - current timestamp in milliseconds")]),t._v(" "),s("li",[s("code",[t._v('"datetime"')]),t._v(" - current date and time as string (ISO, valid according to "),s("code",[t._v("date-time")]),t._v(" format)")]),t._v(" "),s("li",[s("code",[t._v('"date"')]),t._v(" - current date as string (ISO, valid according to "),s("code",[t._v("date")]),t._v(" format)")]),t._v(" "),s("li",[s("code",[t._v('"time"')]),t._v(" - current time as string (ISO, valid according to "),s("code",[t._v("time")]),t._v(" format)")]),t._v(" "),s("li",[s("code",[t._v('"random"')]),t._v(" - pseudo-random number in [0, 1) interval")]),t._v(" "),s("li",[s("code",[t._v('"randomint"')]),t._v(" - pseudo-random integer number. If string is used as a property value, the function will randomly return 0 or 1. If object "),s("code",[t._v("{ func: 'randomint', args: { max: N } }")]),t._v(" is used then the default will be an integer number in [0, N) interval.")]),t._v(" "),s("li",[s("code",[t._v('"seq"')]),t._v(" - sequential integer number starting from 0. If string is used as a property value, the default sequence will be used. If object "),s("code",[t._v("{ func: 'seq', args: { name: 'foo'} }")]),t._v(" is used then the sequence with name "),s("code",[t._v('"foo"')]),t._v(" will be used. Sequences are global, even if different ajv instances are used.")])]),t._v(" "),s("div",{staticClass:"language-javascript extra-class"},[s("pre",{pre:!0,attrs:{class:"language-javascript"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" schema "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"object"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("dynamicDefaults")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("ts")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"datetime"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("r")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("func")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"randomint"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("args")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("max")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("id")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("func")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"seq"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("args")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("name")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("properties")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("ts")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"string"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("format")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"date-time"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("r")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"integer"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("minimum")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("exclusiveMaximum")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("id")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"integer"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("minimum")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" data "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\najv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("validate")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// true")]),t._v("\ndata "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// { ts: '2016-12-01T22:07:28.829Z', r: 25, id: 0 }")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" data1 "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\najv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("validate")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("data1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// true")]),t._v("\ndata1 "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// { ts: '2016-12-01T22:07:29.832Z', r: 68, id: 1 }")]),t._v("\n\najv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("validate")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("data1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// true")]),t._v("\ndata1 "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// didn't change, as all properties were defined")]),t._v("\n")])])]),s("p",[t._v("When using the "),s("code",[t._v("useDefaults")]),t._v(" option value "),s("code",[t._v('"empty"')]),t._v(", properties and items equal to "),s("code",[t._v("null")]),t._v(" or "),s("code",[t._v('""')]),t._v(" (empty string) will be considered missing and assigned defaults. Use "),s("code",[t._v("allOf")]),t._v(" "),s("a",{attrs:{href:"https://github.com/epoberezkin/ajv/blob/master/KEYWORDS.md#compound-keywords",target:"_blank",rel:"noopener noreferrer"}},[t._v("compound keyword"),s("OutboundLink")],1),t._v(" to execute "),s("code",[t._v("dynamicDefaults")]),t._v(" before validation.")]),t._v(" "),s("div",{staticClass:"language-javascript extra-class"},[s("pre",{pre:!0,attrs:{class:"language-javascript"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" schema "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"object"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("allOf")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("dynamicDefaults")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("ts")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"datetime"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("r")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("func")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"randomint"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("args")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("min")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("max")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("id")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("func")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"seq"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("args")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("name")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("properties")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("ts")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"string"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("r")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("minimum")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("exclusiveMaximum")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("id")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"integer"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("minimum")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" data "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("ts")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("r")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("null")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\najv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("validate")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// true")]),t._v("\ndata "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// { ts: '2016-12-01T22:07:28.829Z', r: 25, id: 0 }")]),t._v("\n")])])]),s("p",[t._v("You can add your own dynamic default function to be recognised by this keyword:")]),t._v(" "),s("div",{staticClass:"language-javascript extra-class"},[s("pre",{pre:!0,attrs:{class:"language-javascript"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" uuid "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("require")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"uuid"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" def "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("require")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ajv-keywords/dist/definitions/dynamicDefaults"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\ndef"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token constant"}},[t._v("DEFAULTS")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function-variable function"}},[t._v("uuid")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=>")]),t._v(" uuid"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("v4\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" schema "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("dynamicDefaults")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("id")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"uuid"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("properties")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("id")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"string"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("format")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"uuid"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" data "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\najv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("validate")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("schema"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" data"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// true")]),t._v("\ndata "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// { id: 'a1183fbe-697b-4030-9bcc-cfeb282a9150' };")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" data1 "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\najv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("validate")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("schema"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" data1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// true")]),t._v("\ndata1 "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// { id: '5b008de7-1669-467a-a5c6-70fa244d7209' }")]),t._v("\n")])])]),s("p",[t._v("You also can define dynamic default that accept parameters, e.g. version of uuid:")]),t._v(" "),s("div",{staticClass:"language-javascript extra-class"},[s("pre",{pre:!0,attrs:{class:"language-javascript"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" uuid "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("require")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"uuid"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getUuid")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("args")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" version "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"v"')]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("+")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("arvs "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" args"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("v"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("||")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"4"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" uuid"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("version"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" def "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("require")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ajv-keywords/dist/definitions/dynamicDefaults"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\ndef"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token constant"}},[t._v("DEFAULTS")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("uuid "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" getUuid\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" schema "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("dynamicDefaults")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("id1")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"uuid"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// v4")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("id2")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("func")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"uuid"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("v")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("4")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// v4")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("id3")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("func")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"uuid"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("v")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// v1")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("p",[s("strong",[t._v("Please note")]),t._v(": dynamic default functions are differentiated by the number of parameters they have ("),s("code",[t._v("function.length")]),t._v("). Functions that do not expect default must have one non-optional argument so that "),s("code",[t._v("function.length")]),t._v(" > 0.")]),t._v(" "),s("p",[s("code",[t._v("dynamicDefaults")]),t._v(" is not supported in "),s("a",{attrs:{href:"https://github.com/ajv-validator/ajv/blob/master/docs/standalone.md",target:"_blank",rel:"noopener noreferrer"}},[t._v("standalone validation code"),s("OutboundLink")],1),t._v(".")]),t._v(" "),s("h2",{attrs:{id:"security-contact"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#security-contact"}},[t._v("#")]),t._v(" Security contact")]),t._v(" "),s("p",[t._v("To report a security vulnerability, please use the\n"),s("a",{attrs:{href:"https://tidelift.com/security",target:"_blank",rel:"noopener noreferrer"}},[t._v("Tidelift security contact"),s("OutboundLink")],1),t._v(".\nTidelift will coordinate the fix and disclosure.")]),t._v(" "),s("p",[t._v("Please do NOT report security vulnerabilities via GitHub issues.")]),t._v(" "),s("h2",{attrs:{id:"open-source-software-support"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#open-source-software-support"}},[t._v("#")]),t._v(" Open-source software support")]),t._v(" "),s("p",[t._v("Ajv-keywords is a part of "),s("a",{attrs:{href:"https://tidelift.com/subscription/pkg/npm-ajv-keywords?utm_source=npm-ajv-keywords&utm_medium=referral&utm_campaign=readme",target:"_blank",rel:"noopener noreferrer"}},[t._v("Tidelift subscription"),s("OutboundLink")],1),t._v(" - it provides a centralised support to open-source software users, in addition to the support provided by software maintainers.")]),t._v(" "),s("h2",{attrs:{id:"license"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#license"}},[t._v("#")]),t._v(" License")]),t._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/epoberezkin/ajv-keywords/blob/master/LICENSE",target:"_blank",rel:"noopener noreferrer"}},[t._v("MIT"),s("OutboundLink")],1)])])}),[],!1,null,null,null);s.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/app.3bfc81a1.js b/assets/js/app.3bfc81a1.js new file mode 100644 index 000000000..18863cf2e --- /dev/null +++ b/assets/js/app.3bfc81a1.js @@ -0,0 +1,16 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[0],[]]);!function(e){function t(t){for(var r,a,s=t[0],l=t[1],u=t[2],f=0,p=[];f

'};function o(e,t,n){return en?n:e}function i(e){return 100*(-1+e)}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=o(e,r.minimum,1),n.status=1===e?null:e;var l=n.render(!t),u=l.querySelector(r.barSelector),c=r.speed,f=r.easing;return l.offsetWidth,a((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),s(u,function(e,t,n){var o;return(o="translate3d"===r.positionUsing?{transform:"translate3d("+i(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+i(e)+"%,0)"}:{"margin-left":i(e)+"%"}).transition="all "+t+"ms "+n,o}(e,c,f)),1===e?(s(l,{transition:"none",opacity:1}),l.offsetWidth,setTimeout((function(){s(l,{transition:"all "+c+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),c)}),c)):setTimeout(t,c)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*o(Math.random()*t,.1,.95)),t=o(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always((function(){0==--t?(e=0,n.done()):n.set((e-t)/e)})),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");u(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var o,a=t.querySelector(r.barSelector),l=e?"-100":i(n.status||0),c=document.querySelector(r.parent);return s(a,{transition:"all 0 linear",transform:"translate3d("+l+"%,0,0)"}),r.showSpinner||(o=t.querySelector(r.spinnerSelector))&&p(o),c!=document.body&&u(c,"nprogress-custom-parent"),c.appendChild(t),t},n.remove=function(){c(document.documentElement,"nprogress-busy"),c(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&p(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var a=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),s=function(){var e=["Webkit","O","Moz","ms"],t={};function n(n){return n=n.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()})),t[n]||(t[n]=function(t){var n=document.body.style;if(t in n)return t;for(var r,o=e.length,i=t.charAt(0).toUpperCase()+t.slice(1);o--;)if((r=e[o]+i)in n)return r;return t}(n))}function r(e,t,r){t=n(t),e.style[t]=r}return function(e,t){var n,o,i=arguments;if(2==i.length)for(n in t)void 0!==(o=t[n])&&t.hasOwnProperty(n)&&r(e,n,o);else r(e,i[1],i[2])}}();function l(e,t){return("string"==typeof e?e:f(e)).indexOf(" "+t+" ")>=0}function u(e,t){var n=f(e),r=n+t;l(n,t)||(e.className=r.substring(1))}function c(e,t){var n,r=f(e);l(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function f(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function p(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n})?r.call(t,n,t,e):r)||(e.exports=o)},function(e,t,n){"use strict";var r=n(0),o=n(45).f,i=n(12),a=n(90),s=n(33),l=n(60),u=n(118);e.exports=function(e,t){var n,c,f,p,d,v=e.target,h=e.global,m=e.stat;if(n=h?r:m?r[v]||s(v,{}):r[v]&&r[v].prototype)for(c in t){if(p=t[c],f=e.dontCallGetSet?(d=o(n,c))&&d.value:n[c],!u(h?c:v+(m?".":"#")+c,e.forced)&&void 0!==f){if(typeof p==typeof f)continue;l(p,f)}(e.sham||f&&f.sham)&&i(p,"sham",!0),a(n,c,p,e)}}},function(e,t,n){"use strict";var r=n(25),o=Function.prototype.call;e.exports=r?o.bind(o):function(){return o.apply(o,arguments)}},function(e,t,n){"use strict";var r=n(3);e.exports=!r((function(){var e=function(){}.bind();return"function"!=typeof e||e.hasOwnProperty("prototype")}))},function(e,t,n){"use strict";e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t,n){"use strict";var r=n(46),o=n(28);e.exports=function(e){return r(o(e))}},function(e,t,n){"use strict";var r=n(47),o=TypeError;e.exports=function(e){if(r(e))throw new o("Can't call method on "+e);return e}},function(e,t,n){"use strict";var r=n(0),o=n(1),i=function(e){return o(e)?e:void 0};e.exports=function(e,t){return arguments.length<2?i(r[e]):r[e]&&r[e][t]}},function(e,t,n){"use strict";var r=n(1),o=n(100),i=TypeError;e.exports=function(e){if(r(e))return e;throw new i(o(e)+" is not a function")}},function(e,t,n){"use strict";var r=n(0),o=n(54),i=n(8),a=n(56),s=n(52),l=n(51),u=r.Symbol,c=o("wks"),f=l?u.for||u:u&&u.withoutSetter||a;e.exports=function(e){return i(c,e)||(c[e]=s&&i(u,e)?u[e]:f("Symbol."+e)),c[e]}},function(e,t,n){"use strict";var r=n(55),o=n(0),i=n(33),a=e.exports=o["__core-js_shared__"]||i("__core-js_shared__",{});(a.versions||(a.versions=[])).push({version:"3.37.1",mode:r?"pure":"global",copyright:"© 2014-2024 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.37.1/LICENSE",source:"https://github.com/zloirock/core-js"})},function(e,t,n){"use strict";var r=n(0),o=Object.defineProperty;e.exports=function(e,t){try{o(r,e,{value:t,configurable:!0,writable:!0})}catch(n){r[e]=t}return t}},function(e,t,n){"use strict";var r=n(28),o=Object;e.exports=function(e){return o(r(e))}},function(e,t,n){"use strict";var r=n(115);e.exports=function(e){return r(e.length)}},function(e,t,n){var r=n(142),o=n(10),i=Object.prototype,a=i.hasOwnProperty,s=i.propertyIsEnumerable,l=r(function(){return arguments}())?r:function(e){return o(e)&&a.call(e,"callee")&&!s.call(e,"callee")};e.exports=l},function(e,t,n){var r=n(9)(n(7),"Map");e.exports=r},function(e,t){e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},function(e,t,n){var r=n(162),o=n(169),i=n(171),a=n(172),s=n(173);function l(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t-1&&e%1==0&&e<=9007199254740991}},function(e,t,n){var r=n(4),o=n(43),i=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,a=/^\w*$/;e.exports=function(e,t){if(r(e))return!1;var n=typeof e;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=e&&!o(e))||(a.test(e)||!i.test(e)||null!=t&&e in Object(t))}},function(e,t,n){var r=n(11),o=n(10);e.exports=function(e){return"symbol"==typeof e||o(e)&&"[object Symbol]"==r(e)}},function(e,t){e.exports=function(e){return e}},function(e,t,n){"use strict";var r=n(5),o=n(24),i=n(96),a=n(26),s=n(27),l=n(48),u=n(8),c=n(57),f=Object.getOwnPropertyDescriptor;t.f=r?f:function(e,t){if(e=s(e),t=l(t),c)try{return f(e,t)}catch(e){}if(u(e,t))return a(!o(i.f,e,t),e[t])}},function(e,t,n){"use strict";var r=n(2),o=n(3),i=n(16),a=Object,s=r("".split);e.exports=o((function(){return!a("z").propertyIsEnumerable(0)}))?function(e){return"String"===i(e)?s(e,""):a(e)}:a},function(e,t,n){"use strict";e.exports=function(e){return null==e}},function(e,t,n){"use strict";var r=n(97),o=n(49);e.exports=function(e){var t=r(e,"string");return o(t)?t:t+""}},function(e,t,n){"use strict";var r=n(29),o=n(1),i=n(50),a=n(51),s=Object;e.exports=a?function(e){return"symbol"==typeof e}:function(e){var t=r("Symbol");return o(t)&&i(t.prototype,s(e))}},function(e,t,n){"use strict";var r=n(2);e.exports=r({}.isPrototypeOf)},function(e,t,n){"use strict";var r=n(52);e.exports=r&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},function(e,t,n){"use strict";var r=n(53),o=n(3),i=n(0).String;e.exports=!!Object.getOwnPropertySymbols&&!o((function(){var e=Symbol("symbol detection");return!i(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&r&&r<41}))},function(e,t,n){"use strict";var r,o,i=n(0),a=n(98),s=i.process,l=i.Deno,u=s&&s.versions||l&&l.version,c=u&&u.v8;c&&(o=(r=c.split("."))[0]>0&&r[0]<4?1:+(r[0]+r[1])),!o&&a&&(!(r=a.match(/Edge\/(\d+)/))||r[1]>=74)&&(r=a.match(/Chrome\/(\d+)/))&&(o=+r[1]),e.exports=o},function(e,t,n){"use strict";var r=n(32);e.exports=function(e,t){return r[e]||(r[e]=t||{})}},function(e,t,n){"use strict";e.exports=!1},function(e,t,n){"use strict";var r=n(2),o=0,i=Math.random(),a=r(1..toString);e.exports=function(e){return"Symbol("+(void 0===e?"":e)+")_"+a(++o+i,36)}},function(e,t,n){"use strict";var r=n(5),o=n(3),i=n(102);e.exports=!r&&!o((function(){return 7!==Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},function(e,t,n){"use strict";var r=n(6),o=String,i=TypeError;e.exports=function(e){if(r(e))return e;throw new i(o(e)+" is not an object")}},function(e,t,n){"use strict";e.exports={}},function(e,t,n){"use strict";var r=n(8),o=n(109),i=n(45),a=n(15);e.exports=function(e,t,n){for(var s=o(t),l=a.f,u=i.f,c=0;cc))return!1;var p=l.get(e),d=l.get(t);if(p&&d)return p==t&&d==e;var v=-1,h=!0,m=2&n?new r:void 0;for(l.set(e,t),l.set(t,e);++v-1&&e%1==0&&e]/;e.exports=function(e){var t,n=""+e,o=r.exec(n);if(!o)return n;var i="",a=0,s=0;for(a=o.index;a79&&a<83||!i("reduce")},{reduce:function(e){var t=arguments.length;return o(this,e,t,t>1?arguments[1]:void 0)}})},function(e,t,n){"use strict";var r={}.propertyIsEnumerable,o=Object.getOwnPropertyDescriptor,i=o&&!r.call({1:2},1);t.f=i?function(e){var t=o(this,e);return!!t&&t.enumerable}:r},function(e,t,n){"use strict";var r=n(24),o=n(6),i=n(49),a=n(99),s=n(101),l=n(31),u=TypeError,c=l("toPrimitive");e.exports=function(e,t){if(!o(e)||i(e))return e;var n,l=a(e,c);if(l){if(void 0===t&&(t="default"),n=r(l,e,t),!o(n)||i(n))return n;throw new u("Can't convert object to primitive value")}return void 0===t&&(t="number"),s(e,t)}},function(e,t,n){"use strict";e.exports="undefined"!=typeof navigator&&String(navigator.userAgent)||""},function(e,t,n){"use strict";var r=n(30),o=n(47);e.exports=function(e,t){var n=e[t];return o(n)?void 0:r(n)}},function(e,t,n){"use strict";var r=String;e.exports=function(e){try{return r(e)}catch(e){return"Object"}}},function(e,t,n){"use strict";var r=n(24),o=n(1),i=n(6),a=TypeError;e.exports=function(e,t){var n,s;if("string"===t&&o(n=e.toString)&&!i(s=r(n,e)))return s;if(o(n=e.valueOf)&&!i(s=r(n,e)))return s;if("string"!==t&&o(n=e.toString)&&!i(s=r(n,e)))return s;throw new a("Can't convert object to primitive value")}},function(e,t,n){"use strict";var r=n(0),o=n(6),i=r.document,a=o(i)&&o(i.createElement);e.exports=function(e){return a?i.createElement(e):{}}},function(e,t,n){"use strict";var r=n(5),o=n(3);e.exports=r&&o((function(){return 42!==Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype}))},function(e,t,n){"use strict";var r=n(5),o=n(8),i=Function.prototype,a=r&&Object.getOwnPropertyDescriptor,s=o(i,"name"),l=s&&"something"===function(){}.name,u=s&&(!r||r&&a(i,"name").configurable);e.exports={EXISTS:s,PROPER:l,CONFIGURABLE:u}},function(e,t,n){"use strict";var r=n(2),o=n(1),i=n(32),a=r(Function.toString);o(i.inspectSource)||(i.inspectSource=function(e){return a(e)}),e.exports=i.inspectSource},function(e,t,n){"use strict";var r,o,i,a=n(107),s=n(0),l=n(6),u=n(12),c=n(8),f=n(32),p=n(108),d=n(59),v=s.TypeError,h=s.WeakMap;if(a||f.state){var m=f.state||(f.state=new h);m.get=m.get,m.has=m.has,m.set=m.set,r=function(e,t){if(m.has(e))throw new v("Object already initialized");return t.facade=e,m.set(e,t),t},o=function(e){return m.get(e)||{}},i=function(e){return m.has(e)}}else{var g=p("state");d[g]=!0,r=function(e,t){if(c(e,g))throw new v("Object already initialized");return t.facade=e,u(e,g,t),t},o=function(e){return c(e,g)?e[g]:{}},i=function(e){return c(e,g)}}e.exports={set:r,get:o,has:i,enforce:function(e){return i(e)?o(e):r(e,{})},getterFor:function(e){return function(t){var n;if(!l(t)||(n=o(t)).type!==e)throw new v("Incompatible receiver, "+e+" required");return n}}}},function(e,t,n){"use strict";var r=n(0),o=n(1),i=r.WeakMap;e.exports=o(i)&&/native code/.test(String(i))},function(e,t,n){"use strict";var r=n(54),o=n(56),i=r("keys");e.exports=function(e){return i[e]||(i[e]=o(e))}},function(e,t,n){"use strict";var r=n(29),o=n(2),i=n(110),a=n(117),s=n(58),l=o([].concat);e.exports=r("Reflect","ownKeys")||function(e){var t=i.f(s(e)),n=a.f;return n?l(t,n(e)):t}},function(e,t,n){"use strict";var r=n(111),o=n(116).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return r(e,o)}},function(e,t,n){"use strict";var r=n(2),o=n(8),i=n(27),a=n(112).indexOf,s=n(59),l=r([].push);e.exports=function(e,t){var n,r=i(e),u=0,c=[];for(n in r)!o(s,n)&&o(r,n)&&l(c,n);for(;t.length>u;)o(r,n=t[u++])&&(~a(c,n)||l(c,n));return c}},function(e,t,n){"use strict";var r=n(27),o=n(113),i=n(35),a=function(e){return function(t,n,a){var s=r(t),l=i(s);if(0===l)return!e&&-1;var u,c=o(a,l);if(e&&n!=n){for(;l>c;)if((u=s[c++])!=u)return!0}else for(;l>c;c++)if((e||c in s)&&s[c]===n)return e||c||0;return!e&&-1}};e.exports={includes:a(!0),indexOf:a(!1)}},function(e,t,n){"use strict";var r=n(61),o=Math.max,i=Math.min;e.exports=function(e,t){var n=r(e);return n<0?o(n+t,0):i(n,t)}},function(e,t,n){"use strict";var r=Math.ceil,o=Math.floor;e.exports=Math.trunc||function(e){var t=+e;return(t>0?o:r)(t)}},function(e,t,n){"use strict";var r=n(61),o=Math.min;e.exports=function(e){var t=r(e);return t>0?o(t,9007199254740991):0}},function(e,t,n){"use strict";e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},function(e,t,n){"use strict";t.f=Object.getOwnPropertySymbols},function(e,t,n){"use strict";var r=n(3),o=n(1),i=/#|\.prototype\./,a=function(e,t){var n=l[s(e)];return n===c||n!==u&&(o(t)?r(t):!!t)},s=a.normalize=function(e){return String(e).replace(i,".").toLowerCase()},l=a.data={},u=a.NATIVE="N",c=a.POLYFILL="P";e.exports=a},function(e,t,n){"use strict";var r=n(30),o=n(34),i=n(46),a=n(35),s=TypeError,l="Reduce of empty array with no initial value",u=function(e){return function(t,n,u,c){var f=o(t),p=i(f),d=a(f);if(r(n),0===d&&u<2)throw new s(l);var v=e?d-1:0,h=e?-1:1;if(u<2)for(;;){if(v in p){c=p[v],v+=h;break}if(v+=h,e?v<0:d<=v)throw new s(l)}for(;e?v>=0:d>v;v+=h)v in p&&(c=n(c,p[v],v,f));return c}};e.exports={left:u(!1),right:u(!0)}},function(e,t,n){"use strict";var r=n(3);e.exports=function(e,t){var n=[][e];return!!n&&r((function(){n.call(null,t||function(){return 1},1)}))}},function(e,t,n){"use strict";var r=n(0),o=n(16);e.exports="process"===o(r.process)},function(e,t,n){"use strict";var r=n(23),o=n(0),i=n(123),a=n(124),s=o.WebAssembly,l=7!==new Error("e",{cause:7}).cause,u=function(e,t){var n={};n[e]=a(e,t,l),r({global:!0,constructor:!0,arity:1,forced:l},n)},c=function(e,t){if(s&&s[e]){var n={};n[e]=a("WebAssembly."+e,t,l),r({target:"WebAssembly",stat:!0,constructor:!0,arity:1,forced:l},n)}};u("Error",(function(e){return function(t){return i(e,this,arguments)}})),u("EvalError",(function(e){return function(t){return i(e,this,arguments)}})),u("RangeError",(function(e){return function(t){return i(e,this,arguments)}})),u("ReferenceError",(function(e){return function(t){return i(e,this,arguments)}})),u("SyntaxError",(function(e){return function(t){return i(e,this,arguments)}})),u("TypeError",(function(e){return function(t){return i(e,this,arguments)}})),u("URIError",(function(e){return function(t){return i(e,this,arguments)}})),c("CompileError",(function(e){return function(t){return i(e,this,arguments)}})),c("LinkError",(function(e){return function(t){return i(e,this,arguments)}})),c("RuntimeError",(function(e){return function(t){return i(e,this,arguments)}}))},function(e,t,n){"use strict";var r=n(25),o=Function.prototype,i=o.apply,a=o.call;e.exports="object"==typeof Reflect&&Reflect.apply||(r?a.bind(i):function(){return a.apply(i,arguments)})},function(e,t,n){"use strict";var r=n(29),o=n(8),i=n(12),a=n(50),s=n(62),l=n(60),u=n(128),c=n(129),f=n(130),p=n(133),d=n(134),v=n(5),h=n(55);e.exports=function(e,t,n,m){var g=m?2:1,y=e.split("."),b=y[y.length-1],_=r.apply(null,y);if(_){var w=_.prototype;if(!h&&o(w,"cause")&&delete w.cause,!n)return _;var x=r("Error"),j=t((function(e,t){var n=f(m?t:e,void 0),r=m?new _(e):new _;return void 0!==n&&i(r,"message",n),d(r,j,r.stack,2),this&&a(w,this)&&c(r,this,j),arguments.length>g&&p(r,arguments[g]),r}));if(j.prototype=w,"Error"!==b?s?s(j,x):l(j,x,{name:!0}):v&&"stackTraceLimit"in _&&(u(j,_,"stackTraceLimit"),u(j,_,"prepareStackTrace")),l(j,_),!h)try{w.name!==b&&i(w,"name",b),w.constructor=j}catch(e){}return j}}},function(e,t,n){"use strict";var r=n(2),o=n(30);e.exports=function(e,t,n){try{return r(o(Object.getOwnPropertyDescriptor(e,t)[n]))}catch(e){}}},function(e,t,n){"use strict";var r=n(127),o=String,i=TypeError;e.exports=function(e){if(r(e))return e;throw new i("Can't set "+o(e)+" as a prototype")}},function(e,t,n){"use strict";var r=n(6);e.exports=function(e){return r(e)||null===e}},function(e,t,n){"use strict";var r=n(15).f;e.exports=function(e,t,n){n in e||r(e,n,{configurable:!0,get:function(){return t[n]},set:function(e){t[n]=e}})}},function(e,t,n){"use strict";var r=n(1),o=n(6),i=n(62);e.exports=function(e,t,n){var a,s;return i&&r(a=t.constructor)&&a!==n&&o(s=a.prototype)&&s!==n.prototype&&i(e,s),e}},function(e,t,n){"use strict";var r=n(91);e.exports=function(e,t){return void 0===e?arguments.length<2?"":t:r(e)}},function(e,t,n){"use strict";var r=n(132),o=n(1),i=n(16),a=n(31)("toStringTag"),s=Object,l="Arguments"===i(function(){return arguments}());e.exports=r?i:function(e){var t,n,r;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(e){}}(t=s(e),a))?n:l?i(t):"Object"===(r=i(t))&&o(t.callee)?"Arguments":r}},function(e,t,n){"use strict";var r={};r[n(31)("toStringTag")]="z",e.exports="[object z]"===String(r)},function(e,t,n){"use strict";var r=n(6),o=n(12);e.exports=function(e,t){r(t)&&"cause"in t&&o(e,"cause",t.cause)}},function(e,t,n){"use strict";var r=n(12),o=n(135),i=n(136),a=Error.captureStackTrace;e.exports=function(e,t,n,s){i&&(a?a(e,t):r(e,"stack",o(n,s)))}},function(e,t,n){"use strict";var r=n(2),o=Error,i=r("".replace),a=String(new o("zxcasd").stack),s=/\n\s*at [^:]*:[^\n]*/,l=s.test(a);e.exports=function(e,t){if(l&&"string"==typeof e&&!o.prepareStackTrace)for(;t--;)e=i(e,s,"");return e}},function(e,t,n){"use strict";var r=n(3),o=n(26);e.exports=!r((function(){var e=new Error("a");return!("stack"in e)||(Object.defineProperty(e,"stack",o(1,7)),7!==e.stack)}))},function(e,t,n){"use strict";var r=n(5),o=n(138),i=TypeError,a=Object.getOwnPropertyDescriptor,s=r&&!function(){if(void 0!==this)return!0;try{Object.defineProperty([],"length",{writable:!1}).length=1}catch(e){return e instanceof TypeError}}();e.exports=s?function(e,t){if(o(e)&&!a(e,"length").writable)throw new i("Cannot set read only .length");return e.length=t}:function(e,t){return e.length=t}},function(e,t,n){"use strict";var r=n(16);e.exports=Array.isArray||function(e){return"Array"===r(e)}},function(e,t,n){"use strict";var r=TypeError;e.exports=function(e){if(e>9007199254740991)throw r("Maximum allowed index exceeded");return e}},function(e,t,n){var r=n(63),o=n(141);e.exports=function e(t,n,i,a,s){var l=-1,u=t.length;for(i||(i=o),s||(s=[]);++l0&&i(c)?n>1?e(c,n-1,i,a,s):r(s,c):a||(s[s.length]=c)}return s}},function(e,t,n){var r=n(13),o=n(36),i=n(4),a=r?r.isConcatSpreadable:void 0;e.exports=function(e){return i(e)||o(e)||!!(a&&e&&e[a])}},function(e,t,n){var r=n(11),o=n(10);e.exports=function(e){return o(e)&&"[object Arguments]"==r(e)}},function(e,t,n){var r=n(13),o=Object.prototype,i=o.hasOwnProperty,a=o.toString,s=r?r.toStringTag:void 0;e.exports=function(e){var t=i.call(e,s),n=e[s];try{e[s]=void 0;var r=!0}catch(e){}var o=a.call(e);return r&&(t?e[s]=n:delete e[s]),o}},function(e,t){var n=Object.prototype.toString;e.exports=function(e){return n.call(e)}},function(e,t,n){var r=n(146),o=n(202),i=n(44),a=n(4),s=n(212);e.exports=function(e){return"function"==typeof e?e:null==e?i:"object"==typeof e?a(e)?o(e[0],e[1]):r(e):s(e)}},function(e,t,n){var r=n(147),o=n(201),i=n(81);e.exports=function(e){var t=o(e);return 1==t.length&&t[0][2]?i(t[0][0],t[0][1]):function(n){return n===e||r(n,e,t)}}},function(e,t,n){var r=n(65),o=n(69);e.exports=function(e,t,n,i){var a=n.length,s=a,l=!i;if(null==e)return!s;for(e=Object(e);a--;){var u=n[a];if(l&&u[2]?u[1]!==e[u[0]]:!(u[0]in e))return!1}for(;++a-1}},function(e,t,n){var r=n(18);e.exports=function(e,t){var n=this.__data__,o=r(n,e);return o<0?(++this.size,n.push([e,t])):n[o][1]=t,this}},function(e,t,n){var r=n(17);e.exports=function(){this.__data__=new r,this.size=0}},function(e,t){e.exports=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n}},function(e,t){e.exports=function(e){return this.__data__.get(e)}},function(e,t){e.exports=function(e){return this.__data__.has(e)}},function(e,t,n){var r=n(17),o=n(37),i=n(39);e.exports=function(e,t){var n=this.__data__;if(n instanceof r){var a=n.__data__;if(!o||a.length<199)return a.push([e,t]),this.size=++n.size,this;n=this.__data__=new i(a)}return n.set(e,t),this.size=n.size,this}},function(e,t,n){var r=n(67),o=n(159),i=n(38),a=n(68),s=/^\[object .+?Constructor\]$/,l=Function.prototype,u=Object.prototype,c=l.toString,f=u.hasOwnProperty,p=RegExp("^"+c.call(f).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");e.exports=function(e){return!(!i(e)||o(e))&&(r(e)?p:s).test(a(e))}},function(e,t,n){var r,o=n(160),i=(r=/[^.]+$/.exec(o&&o.keys&&o.keys.IE_PROTO||""))?"Symbol(src)_1."+r:"";e.exports=function(e){return!!i&&i in e}},function(e,t,n){var r=n(7)["__core-js_shared__"];e.exports=r},function(e,t){e.exports=function(e,t){return null==e?void 0:e[t]}},function(e,t,n){var r=n(163),o=n(17),i=n(37);e.exports=function(){this.size=0,this.__data__={hash:new r,map:new(i||o),string:new r}}},function(e,t,n){var r=n(164),o=n(165),i=n(166),a=n(167),s=n(168);function l(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}},function(e,t,n){var r=n(71),o=n(224),i=n(229),a=n(72),s=n(230),l=n(40);e.exports=function(e,t,n){var u=-1,c=o,f=e.length,p=!0,d=[],v=d;if(n)p=!1,c=i;else if(f>=200){var h=t?null:s(e);if(h)return l(h);p=!1,c=a,v=new r}else v=t?[]:d;e:for(;++u-1}},function(e,t,n){var r=n(226),o=n(227),i=n(228);e.exports=function(e,t,n){return t==t?i(e,t,n):r(e,o,n)}},function(e,t){e.exports=function(e,t,n,r){for(var o=e.length,i=n+(r?1:-1);r?i--:++i=0&&Math.floor(t)===t&&isFinite(e)}function h(e){return a(e)&&"function"==typeof e.then&&"function"==typeof e.catch}function m(e){return null==e?"":Array.isArray(e)||p(e)&&e.toString===f?JSON.stringify(e,g,2):String(e)}function g(e,t){return t&&t.__v_isRef?t.value:t}function y(e){var t=parseFloat(e);return isNaN(t)?e:t}function b(e,t){for(var n=Object.create(null),r=e.split(","),o=0;o-1)return e.splice(r,1)}}var x=Object.prototype.hasOwnProperty;function j(e,t){return x.call(e,t)}function k(e){var t=Object.create(null);return function(n){return t[n]||(t[n]=e(n))}}var S=/-(\w)/g,O=k((function(e){return e.replace(S,(function(e,t){return t?t.toUpperCase():""}))})),C=k((function(e){return e.charAt(0).toUpperCase()+e.slice(1)})),P=/\B([A-Z])/g,$=k((function(e){return e.replace(P,"-$1").toLowerCase()}));var E=Function.prototype.bind?function(e,t){return e.bind(t)}:function(e,t){function n(n){var r=arguments.length;return r?r>1?e.apply(t,arguments):e.call(t,n):e.call(t)}return n._length=e.length,n};function A(e,t){t=t||0;for(var n=e.length-t,r=new Array(n);n--;)r[n]=e[n+t];return r}function T(e,t){for(var n in t)e[n]=t[n];return e}function L(e){for(var t={},n=0;n0,Y=Z&&Z.indexOf("edge/")>0;Z&&Z.indexOf("android");var ee=Z&&/iphone|ipad|ipod|ios/.test(Z);Z&&/chrome\/\d+/.test(Z),Z&&/phantomjs/.test(Z);var te,ne=Z&&Z.match(/firefox\/(\d+)/),re={}.watch,oe=!1;if(G)try{var ie={};Object.defineProperty(ie,"passive",{get:function(){oe=!0}}),window.addEventListener("test-passive",null,ie)}catch(e){}var ae=function(){return void 0===te&&(te=!G&&"undefined"!=typeof global&&(global.process&&"server"===global.process.env.VUE_ENV)),te},se=G&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function le(e){return"function"==typeof e&&/native code/.test(e.toString())}var ue,ce="undefined"!=typeof Symbol&&le(Symbol)&&"undefined"!=typeof Reflect&&le(Reflect.ownKeys);ue="undefined"!=typeof Set&&le(Set)?Set:function(){function e(){this.set=Object.create(null)}return e.prototype.has=function(e){return!0===this.set[e]},e.prototype.add=function(e){this.set[e]=!0},e.prototype.clear=function(){this.set=Object.create(null)},e}();var fe=null;function pe(e){void 0===e&&(e=null),e||fe&&fe._scope.off(),fe=e,e&&e._scope.on()}var de=function(){function e(e,t,n,r,o,i,a,s){this.tag=e,this.data=t,this.children=n,this.text=r,this.elm=o,this.ns=void 0,this.context=i,this.fnContext=void 0,this.fnOptions=void 0,this.fnScopeId=void 0,this.key=t&&t.key,this.componentOptions=a,this.componentInstance=void 0,this.parent=void 0,this.raw=!1,this.isStatic=!1,this.isRootInsert=!0,this.isComment=!1,this.isCloned=!1,this.isOnce=!1,this.asyncFactory=s,this.asyncMeta=void 0,this.isAsyncPlaceholder=!1}return Object.defineProperty(e.prototype,"child",{get:function(){return this.componentInstance},enumerable:!1,configurable:!0}),e}(),ve=function(e){void 0===e&&(e="");var t=new de;return t.text=e,t.isComment=!0,t};function he(e){return new de(void 0,void 0,void 0,String(e))}function me(e){var t=new de(e.tag,e.data,e.children&&e.children.slice(),e.text,e.elm,e.context,e.componentOptions,e.asyncFactory);return t.ns=e.ns,t.isStatic=e.isStatic,t.key=e.key,t.isComment=e.isComment,t.fnContext=e.fnContext,t.fnOptions=e.fnOptions,t.fnScopeId=e.fnScopeId,t.asyncMeta=e.asyncMeta,t.isCloned=!0,t}"function"==typeof SuppressedError&&SuppressedError;var ge=0,ye=[],be=function(){function e(){this._pending=!1,this.id=ge++,this.subs=[]}return e.prototype.addSub=function(e){this.subs.push(e)},e.prototype.removeSub=function(e){this.subs[this.subs.indexOf(e)]=null,this._pending||(this._pending=!0,ye.push(this))},e.prototype.depend=function(t){e.target&&e.target.addDep(this)},e.prototype.notify=function(e){var t=this.subs.filter((function(e){return e}));for(var n=0,r=t.length;n0&&(Ze((u=e(u,"".concat(n||"","_").concat(r)))[0])&&Ze(f)&&(p[c]=he(f.text+u[0].text),u.shift()),p.push.apply(p,u)):l(u)?Ze(f)?p[c]=he(f.text+u):""!==u&&p.push(he(u)):Ze(u)&&Ze(f)?p[c]=he(f.text+u.text):(s(t._isVList)&&a(u.tag)&&i(u.key)&&a(n)&&(u.key="__vlist".concat(n,"_").concat(r,"__")),p.push(u)));return p}(e):void 0}function Ze(e){return a(e)&&a(e.text)&&!1===e.isComment}function Xe(e,t){var n,r,i,s,l=null;if(o(e)||"string"==typeof e)for(l=new Array(e.length),n=0,r=e.length;n0,s=t?!!t.$stable:!a,l=t&&t.$key;if(t){if(t._normalized)return t._normalized;if(s&&o&&o!==r&&l===o.$key&&!a&&!o.$hasNormal)return o;for(var u in i={},t)t[u]&&"$"!==u[0]&&(i[u]=mt(e,n,u,t[u]))}else i={};for(var c in n)c in i||(i[c]=gt(n,c));return t&&Object.isExtensible(t)&&(t._normalized=i),H(i,"$stable",s),H(i,"$key",l),H(i,"$hasNormal",a),i}function mt(e,t,n,r){var i=function(){var t=fe;pe(e);var n=arguments.length?r.apply(null,arguments):r({}),i=(n=n&&"object"==typeof n&&!o(n)?[n]:Ge(n))&&n[0];return pe(t),n&&(!i||1===n.length&&i.isComment&&!vt(i))?void 0:n};return r.proxy&&Object.defineProperty(t,n,{get:i,enumerable:!0,configurable:!0}),i}function gt(e,t){return function(){return e[t]}}function yt(e){return{get attrs(){if(!e._attrsProxy){var t=e._attrsProxy={};H(t,"_v_attr_proxy",!0),bt(t,e.$attrs,r,e,"$attrs")}return e._attrsProxy},get listeners(){e._listenersProxy||bt(e._listenersProxy={},e.$listeners,r,e,"$listeners");return e._listenersProxy},get slots(){return function(e){e._slotsProxy||wt(e._slotsProxy={},e.$scopedSlots);return e._slotsProxy}(e)},emit:E(e.$emit,e),expose:function(t){t&&Object.keys(t).forEach((function(n){return Ue(e,t,n)}))}}}function bt(e,t,n,r,o){var i=!1;for(var a in t)a in e?t[a]!==n[a]&&(i=!0):(i=!0,_t(e,a,r,o));for(var a in e)a in t||(i=!0,delete e[a]);return i}function _t(e,t,n,r){Object.defineProperty(e,t,{enumerable:!0,configurable:!0,get:function(){return n[r][t]}})}function wt(e,t){for(var n in t)e[n]=t[n];for(var n in e)n in t||delete e[n]}var xt=null;function jt(e,t){return(e.__esModule||ce&&"Module"===e[Symbol.toStringTag])&&(e=e.default),c(e)?t.extend(e):e}function kt(e){if(o(e))for(var t=0;tdocument.createEvent("Event").timeStamp&&(un=function(){return cn.now()})}var fn=function(e,t){if(e.post){if(!t.post)return 1}else if(t.post)return-1;return e.id-t.id};function pn(){var e,t;for(ln=un(),an=!0,tn.sort(fn),sn=0;snsn&&tn[n].id>e.id;)n--;tn.splice(n+1,0,e)}else tn.push(e);on||(on=!0,Ft(pn))}}function vn(e,t){if(e){for(var n=Object.create(null),r=ce?Reflect.ownKeys(e):Object.keys(e),o=0;o-1)if(i&&!j(o,"default"))a=!1;else if(""===a||a===$(e)){var l=Nn(String,o.type);(l<0||s-1:"string"==typeof e?e.split(",").indexOf(t)>-1:!!d(e)&&e.test(t)}function Xn(e,t){var n=e.cache,r=e.keys,o=e._vnode,i=e.$vnode;for(var a in n){var s=n[a];if(s){var l=s.name;l&&!t(l)&&Qn(n,a,r,o)}}i.componentOptions.children=void 0}function Qn(e,t,n,r){var o=e[t];!o||r&&o.tag===r.tag||o.componentInstance.$destroy(),e[t]=null,w(n,t)}Kn.prototype._init=function(e){var t=this;t._uid=Vn++,t._isVue=!0,t.__v_skip=!0,t._scope=new Je(!0),t._scope.parent=void 0,t._scope._vm=!0,e&&e._isComponent?function(e,t){var n=e.$options=Object.create(e.constructor.options),r=t._parentVnode;n.parent=t.parent,n._parentVnode=r;var o=r.componentOptions;n.propsData=o.propsData,n._parentListeners=o.listeners,n._renderChildren=o.children,n._componentTag=o.tag,t.render&&(n.render=t.render,n.staticRenderFns=t.staticRenderFns)}(t,e):t.$options=En(Hn(t.constructor),e||{},t),t._renderProxy=t,t._self=t,function(e){var t=e.$options,n=t.parent;if(n&&!t.abstract){for(;n.$options.abstract&&n.$parent;)n=n.$parent;n.$children.push(e)}e.$parent=n,e.$root=n?n.$root:e,e.$children=[],e.$refs={},e._provided=n?n._provided:Object.create(null),e._watcher=null,e._inactive=null,e._directInactive=!1,e._isMounted=!1,e._isDestroyed=!1,e._isBeingDestroyed=!1}(t),function(e){e._events=Object.create(null),e._hasHookEvent=!1;var t=e.$options._parentListeners;t&&Gt(e,t)}(t),function(e){e._vnode=null,e._staticTrees=null;var t=e.$options,n=e.$vnode=t._parentVnode,o=n&&n.context;e.$slots=pt(t._renderChildren,o),e.$scopedSlots=n?ht(e.$parent,n.data.scopedSlots,e.$slots):r,e._c=function(t,n,r,o){return St(e,t,n,r,o,!1)},e.$createElement=function(t,n,r,o){return St(e,t,n,r,o,!0)};var i=n&&n.data;Te(e,"$attrs",i&&i.attrs||r,null,!0),Te(e,"$listeners",t._parentListeners||r,null,!0)}(t),en(t,"beforeCreate",void 0,!1),function(e){var t=vn(e.$options.inject,e);t&&(Pe(!1),Object.keys(t).forEach((function(n){Te(e,n,t[n])})),Pe(!0))}(t),Fn(t),function(e){var t=e.$options.provide;if(t){var n=u(t)?t.call(e):t;if(!c(n))return;for(var r=Be(e),o=ce?Reflect.ownKeys(n):Object.keys(n),i=0;i1?A(n):n;for(var r=A(arguments,1),o='event handler for "'.concat(e,'"'),i=0,a=n.length;iparseInt(this.max)&&Qn(e,t[0],t,this._vnode),this.vnodeToCache=null}}},created:function(){this.cache=Object.create(null),this.keys=[]},destroyed:function(){for(var e in this.cache)Qn(this.cache,e,this.keys)},mounted:function(){var e=this;this.cacheVNode(),this.$watch("include",(function(t){Xn(e,(function(e){return Zn(t,e)}))})),this.$watch("exclude",(function(t){Xn(e,(function(e){return!Zn(t,e)}))}))},updated:function(){this.cacheVNode()},render:function(){var e=this.$slots.default,t=kt(e),n=t&&t.componentOptions;if(n){var r=Gn(n),o=this.include,i=this.exclude;if(o&&(!r||!Zn(o,r))||i&&r&&Zn(i,r))return t;var a=this.cache,s=this.keys,l=null==t.key?n.Ctor.cid+(n.tag?"::".concat(n.tag):""):t.key;a[l]?(t.componentInstance=a[l].componentInstance,w(s,l),s.push(l)):(this.vnodeToCache=t,this.keyToCache=l),t.data.keepAlive=!0}return t||e&&e[0]}}};!function(e){var t={get:function(){return B}};Object.defineProperty(e,"config",t),e.util={warn:jn,extend:T,mergeOptions:En,defineReactive:Te},e.set=Le,e.delete=Re,e.nextTick=Ft,e.observable=function(e){return Ae(e),e},e.options=Object.create(null),z.forEach((function(t){e.options[t+"s"]=Object.create(null)})),e.options._base=e,T(e.options.components,er),function(e){e.use=function(e){var t=this._installedPlugins||(this._installedPlugins=[]);if(t.indexOf(e)>-1)return this;var n=A(arguments,1);return n.unshift(this),u(e.install)?e.install.apply(e,n):u(e)&&e.apply(null,n),t.push(e),this}}(e),function(e){e.mixin=function(e){return this.options=En(this.options,e),this}}(e),Wn(e),function(e){z.forEach((function(t){e[t]=function(e,n){return n?("component"===t&&p(n)&&(n.name=n.name||e,n=this.options._base.extend(n)),"directive"===t&&u(n)&&(n={bind:n,update:n}),this.options[t+"s"][e]=n,n):this.options[t+"s"][e]}}))}(e)}(Kn),Object.defineProperty(Kn.prototype,"$isServer",{get:ae}),Object.defineProperty(Kn.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(Kn,"FunctionalRenderContext",{value:hn}),Kn.version="2.7.16";var tr=b("style,class"),nr=b("input,textarea,option,select,progress"),rr=b("contenteditable,draggable,spellcheck"),or=b("events,caret,typing,plaintext-only"),ir=b("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,truespeed,typemustmatch,visible"),ar="http://www.w3.org/1999/xlink",sr=function(e){return":"===e.charAt(5)&&"xlink"===e.slice(0,5)},lr=function(e){return sr(e)?e.slice(6,e.length):""},ur=function(e){return null==e||!1===e};function cr(e){for(var t=e.data,n=e,r=e;a(r.componentInstance);)(r=r.componentInstance._vnode)&&r.data&&(t=fr(r.data,t));for(;a(n=n.parent);)n&&n.data&&(t=fr(t,n.data));return function(e,t){if(a(e)||a(t))return pr(e,dr(t));return""}(t.staticClass,t.class)}function fr(e,t){return{staticClass:pr(e.staticClass,t.staticClass),class:a(e.class)?[e.class,t.class]:t.class}}function pr(e,t){return e?t?e+" "+t:e:t||""}function dr(e){return Array.isArray(e)?function(e){for(var t,n="",r=0,o=e.length;r-1?Ir(e,t,n):ir(t)?ur(n)?e.removeAttribute(t):(n="allowfullscreen"===t&&"EMBED"===e.tagName?"true":t,e.setAttribute(t,n)):rr(t)?e.setAttribute(t,function(e,t){return ur(t)||"false"===t?"false":"contenteditable"===e&&or(t)?t:"true"}(t,n)):sr(t)?ur(n)?e.removeAttributeNS(ar,lr(t)):e.setAttributeNS(ar,t,n):Ir(e,t,n)}function Ir(e,t,n){if(ur(n))e.removeAttribute(t);else{if(X&&!Q&&"TEXTAREA"===e.tagName&&"placeholder"===t&&""!==n&&!e.__ieph){var r=function(t){t.stopImmediatePropagation(),e.removeEventListener("input",r)};e.addEventListener("input",r),e.__ieph=!0}e.setAttribute(t,n)}}var Dr={create:Mr,update:Mr};function Fr(e,t){var n=t.elm,r=t.data,o=e.data;if(!(i(r.staticClass)&&i(r.class)&&(i(o)||i(o.staticClass)&&i(o.class)))){var s=cr(t),l=n._transitionClasses;a(l)&&(s=pr(s,dr(l))),s!==n._prevClass&&(n.setAttribute("class",s),n._prevClass=s)}}var Ur,zr={create:Fr,update:Fr};function Jr(e,t,n){var r=Ur;return function o(){var i=t.apply(null,arguments);null!==i&&Vr(e,o,n,r)}}var Br=At&&!(ne&&Number(ne[1])<=53);function qr(e,t,n,r){if(Br){var o=ln,i=t;t=i._wrapper=function(e){if(e.target===e.currentTarget||e.timeStamp>=o||e.timeStamp<=0||e.target.ownerDocument!==document)return i.apply(this,arguments)}}Ur.addEventListener(e,t,oe?{capture:n,passive:r}:n)}function Vr(e,t,n,r){(r||Ur).removeEventListener(e,t._wrapper||t,n)}function Hr(e,t){if(!i(e.data.on)||!i(t.data.on)){var n=t.data.on||{},r=e.data.on||{};Ur=t.elm||e.elm,function(e){if(a(e.__r)){var t=X?"change":"input";e[t]=[].concat(e.__r,e[t]||[]),delete e.__r}a(e.__c)&&(e.change=[].concat(e.__c,e.change||[]),delete e.__c)}(n),He(n,r,qr,Vr,Jr,t.context),Ur=void 0}}var Kr,Wr={create:Hr,update:Hr,destroy:function(e){return Hr(e,kr)}};function Gr(e,t){if(!i(e.data.domProps)||!i(t.data.domProps)){var n,r,o=t.elm,l=e.data.domProps||{},u=t.data.domProps||{};for(n in(a(u.__ob__)||s(u._v_attr_proxy))&&(u=t.data.domProps=T({},u)),l)n in u||(o[n]="");for(n in u){if(r=u[n],"textContent"===n||"innerHTML"===n){if(t.children&&(t.children.length=0),r===l[n])continue;1===o.childNodes.length&&o.removeChild(o.childNodes[0])}if("value"===n&&"PROGRESS"!==o.tagName){o._value=r;var c=i(r)?"":String(r);Zr(o,c)&&(o.value=c)}else if("innerHTML"===n&&mr(o.tagName)&&i(o.innerHTML)){(Kr=Kr||document.createElement("div")).innerHTML="".concat(r,"");for(var f=Kr.firstChild;o.firstChild;)o.removeChild(o.firstChild);for(;f.firstChild;)o.appendChild(f.firstChild)}else if(r!==l[n])try{o[n]=r}catch(e){}}}}function Zr(e,t){return!e.composing&&("OPTION"===e.tagName||function(e,t){var n=!0;try{n=document.activeElement!==e}catch(e){}return n&&e.value!==t}(e,t)||function(e,t){var n=e.value,r=e._vModifiers;if(a(r)){if(r.number)return y(n)!==y(t);if(r.trim)return n.trim()!==t.trim()}return n!==t}(e,t))}var Xr={create:Gr,update:Gr},Qr=k((function(e){var t={},n=/:(.+)/;return e.split(/;(?![^(]*\))/g).forEach((function(e){if(e){var r=e.split(n);r.length>1&&(t[r[0].trim()]=r[1].trim())}})),t}));function Yr(e){var t=eo(e.style);return e.staticStyle?T(e.staticStyle,t):t}function eo(e){return Array.isArray(e)?L(e):"string"==typeof e?Qr(e):e}var to,no=/^--/,ro=/\s*!important$/,oo=function(e,t,n){if(no.test(t))e.style.setProperty(t,n);else if(ro.test(n))e.style.setProperty($(t),n.replace(ro,""),"important");else{var r=ao(t);if(Array.isArray(n))for(var o=0,i=n.length;o-1?t.split(uo).forEach((function(t){return e.classList.add(t)})):e.classList.add(t);else{var n=" ".concat(e.getAttribute("class")||""," ");n.indexOf(" "+t+" ")<0&&e.setAttribute("class",(n+t).trim())}}function fo(e,t){if(t&&(t=t.trim()))if(e.classList)t.indexOf(" ")>-1?t.split(uo).forEach((function(t){return e.classList.remove(t)})):e.classList.remove(t),e.classList.length||e.removeAttribute("class");else{for(var n=" ".concat(e.getAttribute("class")||""," "),r=" "+t+" ";n.indexOf(r)>=0;)n=n.replace(r," ");(n=n.trim())?e.setAttribute("class",n):e.removeAttribute("class")}}function po(e){if(e){if("object"==typeof e){var t={};return!1!==e.css&&T(t,vo(e.name||"v")),T(t,e),t}return"string"==typeof e?vo(e):void 0}}var vo=k((function(e){return{enterClass:"".concat(e,"-enter"),enterToClass:"".concat(e,"-enter-to"),enterActiveClass:"".concat(e,"-enter-active"),leaveClass:"".concat(e,"-leave"),leaveToClass:"".concat(e,"-leave-to"),leaveActiveClass:"".concat(e,"-leave-active")}})),ho=G&&!Q,mo="transition",go="transitionend",yo="animation",bo="animationend";ho&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(mo="WebkitTransition",go="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(yo="WebkitAnimation",bo="webkitAnimationEnd"));var _o=G?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(e){return e()};function wo(e){_o((function(){_o(e)}))}function xo(e,t){var n=e._transitionClasses||(e._transitionClasses=[]);n.indexOf(t)<0&&(n.push(t),co(e,t))}function jo(e,t){e._transitionClasses&&w(e._transitionClasses,t),fo(e,t)}function ko(e,t,n){var r=Oo(e,t),o=r.type,i=r.timeout,a=r.propCount;if(!o)return n();var s="transition"===o?go:bo,l=0,u=function(){e.removeEventListener(s,c),n()},c=function(t){t.target===e&&++l>=a&&u()};setTimeout((function(){l0&&(n="transition",c=a,f=i.length):"animation"===t?u>0&&(n="animation",c=u,f=l.length):f=(n=(c=Math.max(a,u))>0?a>u?"transition":"animation":null)?"transition"===n?i.length:l.length:0,{type:n,timeout:c,propCount:f,hasTransform:"transition"===n&&So.test(r[mo+"Property"])}}function Co(e,t){for(;e.length1}function Lo(e,t){!0!==t.data.show&&$o(t)}var Ro=function(e){var t,n,r={},u=e.modules,c=e.nodeOps;for(t=0;tv?_(e,i(n[g+1])?null:n[g+1].elm,n,d,g,r):d>g&&x(t,f,v)}(f,h,g,n,u):a(g)?(a(e.text)&&c.setTextContent(f,""),_(f,null,g,0,g.length-1,n)):a(h)?x(h,0,h.length-1):a(e.text)&&c.setTextContent(f,""):e.text!==t.text&&c.setTextContent(f,t.text),a(v)&&a(d=v.hook)&&a(d=d.postpatch)&&d(e,t)}}}function O(e,t,n){if(s(n)&&a(e.parent))e.parent.data.pendingInsert=t;else for(var r=0;r-1,a.selected!==i&&(a.selected=i);else if(I(Fo(a),r))return void(e.selectedIndex!==s&&(e.selectedIndex=s));o||(e.selectedIndex=-1)}}function Do(e,t){return t.every((function(t){return!I(t,e)}))}function Fo(e){return"_value"in e?e._value:e.value}function Uo(e){e.target.composing=!0}function zo(e){e.target.composing&&(e.target.composing=!1,Jo(e.target,"input"))}function Jo(e,t){var n=document.createEvent("HTMLEvents");n.initEvent(t,!0,!0),e.dispatchEvent(n)}function Bo(e){return!e.componentInstance||e.data&&e.data.transition?e:Bo(e.componentInstance._vnode)}var qo={model:Mo,show:{bind:function(e,t,n){var r=t.value,o=(n=Bo(n)).data&&n.data.transition,i=e.__vOriginalDisplay="none"===e.style.display?"":e.style.display;r&&o?(n.data.show=!0,$o(n,(function(){e.style.display=i}))):e.style.display=r?i:"none"},update:function(e,t,n){var r=t.value;!r!=!t.oldValue&&((n=Bo(n)).data&&n.data.transition?(n.data.show=!0,r?$o(n,(function(){e.style.display=e.__vOriginalDisplay})):Eo(n,(function(){e.style.display="none"}))):e.style.display=r?e.__vOriginalDisplay:"none")},unbind:function(e,t,n,r,o){o||(e.style.display=e.__vOriginalDisplay)}}},Vo={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function Ho(e){var t=e&&e.componentOptions;return t&&t.Ctor.options.abstract?Ho(kt(t.children)):e}function Ko(e){var t={},n=e.$options;for(var r in n.propsData)t[r]=e[r];var o=n._parentListeners;for(var r in o)t[O(r)]=o[r];return t}function Wo(e,t){if(/\d-keep-alive$/.test(t.tag))return e("keep-alive",{props:t.componentOptions.propsData})}var Go=function(e){return e.tag||vt(e)},Zo=function(e){return"show"===e.name},Xo={name:"transition",props:Vo,abstract:!0,render:function(e){var t=this,n=this.$slots.default;if(n&&(n=n.filter(Go)).length){0;var r=this.mode;0;var o=n[0];if(function(e){for(;e=e.parent;)if(e.data.transition)return!0}(this.$vnode))return o;var i=Ho(o);if(!i)return o;if(this._leaving)return Wo(e,o);var a="__transition-".concat(this._uid,"-");i.key=null==i.key?i.isComment?a+"comment":a+i.tag:l(i.key)?0===String(i.key).indexOf(a)?i.key:a+i.key:i.key;var s=(i.data||(i.data={})).transition=Ko(this),u=this._vnode,c=Ho(u);if(i.data.directives&&i.data.directives.some(Zo)&&(i.data.show=!0),c&&c.data&&!function(e,t){return t.key===e.key&&t.tag===e.tag}(i,c)&&!vt(c)&&(!c.componentInstance||!c.componentInstance._vnode.isComment)){var f=c.data.transition=T({},s);if("out-in"===r)return this._leaving=!0,Ke(f,"afterLeave",(function(){t._leaving=!1,t.$forceUpdate()})),Wo(e,o);if("in-out"===r){if(vt(i))return u;var p,d=function(){p()};Ke(s,"afterEnter",d),Ke(s,"enterCancelled",d),Ke(f,"delayLeave",(function(e){p=e}))}}return o}}},Qo=T({tag:String,moveClass:String},Vo);function Yo(e){e.elm._moveCb&&e.elm._moveCb(),e.elm._enterCb&&e.elm._enterCb()}function ei(e){e.data.newPos=e.elm.getBoundingClientRect()}function ti(e){var t=e.data.pos,n=e.data.newPos,r=t.left-n.left,o=t.top-n.top;if(r||o){e.data.moved=!0;var i=e.elm.style;i.transform=i.WebkitTransform="translate(".concat(r,"px,").concat(o,"px)"),i.transitionDuration="0s"}}delete Qo.mode;var ni={Transition:Xo,TransitionGroup:{props:Qo,beforeMount:function(){var e=this,t=this._update;this._update=function(n,r){var o=Xt(e);e.__patch__(e._vnode,e.kept,!1,!0),e._vnode=e.kept,o(),t.call(e,n,r)}},render:function(e){for(var t=this.tag||this.$vnode.data.tag||"span",n=Object.create(null),r=this.prevChildren=this.children,o=this.$slots.default||[],i=this.children=[],a=Ko(this),s=0;s-1?yr[e]=t.constructor===window.HTMLUnknownElement||t.constructor===window.HTMLElement:yr[e]=/HTMLUnknownElement/.test(t.toString())},T(Kn.options.directives,qo),T(Kn.options.components,ni),Kn.prototype.__patch__=G?Ro:R,Kn.prototype.$mount=function(e,t){return function(e,t,n){var r;e.$el=t,e.$options.render||(e.$options.render=ve),en(e,"beforeMount"),r=function(){e._update(e._render(),n)},new Vt(e,r,R,{before:function(){e._isMounted&&!e._isDestroyed&&en(e,"beforeUpdate")}},!0),n=!1;var o=e._preWatchers;if(o)for(var i=0;i=0&&(t=e.slice(r),e=e.slice(0,r));var o=e.indexOf("?");return o>=0&&(n=e.slice(o+1),e=e.slice(0,o)),{path:e,query:n,hash:t}}(o.path||""),u=t&&t.path||"/",c=l.path?ji(l.path,u,n||o.append):u,f=function(e,t,n){void 0===t&&(t={});var r,o=n||ci;try{r=o(e||"")}catch(e){r={}}for(var i in t){var a=t[i];r[i]=Array.isArray(a)?a.map(ui):ui(a)}return r}(l.query,o.query,r&&r.options.parseQuery),p=o.hash||l.hash;return p&&"#"!==p.charAt(0)&&(p="#"+p),{_normalized:!0,path:c,query:f,hash:p}}var qi,Vi=function(){},Hi={name:"RouterLink",props:{to:{type:[String,Object],required:!0},tag:{type:String,default:"a"},custom:Boolean,exact:Boolean,exactPath:Boolean,append:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,ariaCurrentValue:{type:String,default:"page"},event:{type:[String,Array],default:"click"}},render:function(e){var t=this,n=this.$router,r=this.$route,o=n.resolve(this.to,r,this.append),i=o.location,a=o.route,s=o.href,l={},u=n.options.linkActiveClass,c=n.options.linkExactActiveClass,f=null==u?"router-link-active":u,p=null==c?"router-link-exact-active":c,d=null==this.activeClass?f:this.activeClass,v=null==this.exactActiveClass?p:this.exactActiveClass,h=a.redirectedFrom?di(null,Bi(a.redirectedFrom),null,n):a;l[v]=yi(r,h,this.exactPath),l[d]=this.exact||this.exactPath?l[v]:function(e,t){return 0===e.path.replace(pi,"/").indexOf(t.path.replace(pi,"/"))&&(!t.hash||e.hash===t.hash)&&function(e,t){for(var n in t)if(!(n in e))return!1;return!0}(e.query,t.query)}(r,h);var m=l[v]?this.ariaCurrentValue:null,g=function(e){Ki(e)&&(t.replace?n.replace(i,Vi):n.push(i,Vi))},y={click:Ki};Array.isArray(this.event)?this.event.forEach((function(e){y[e]=g})):y[this.event]=g;var b={class:l},_=!this.$scopedSlots.$hasNormal&&this.$scopedSlots.default&&this.$scopedSlots.default({href:s,route:a,navigate:g,isActive:l[d],isExactActive:l[v]});if(_){if(1===_.length)return _[0];if(_.length>1||!_.length)return 0===_.length?e():e("span",{},_)}if("a"===this.tag)b.on=y,b.attrs={href:s,"aria-current":m};else{var w=function e(t){var n;if(t)for(var r=0;r-1&&(s.params[p]=n.params[p]);return s.path=Ji(c.path,s.params),l(c,s,a)}if(s.path){s.params={};for(var d=0;d-1}function ka(e,t){return ja(e)&&e._isRouter&&(null==t||e.type===t)}function Sa(e,t,n){var r=function(o){o>=e.length?n():e[o]?t(e[o],(function(){r(o+1)})):r(o+1)};r(0)}function Oa(e){return function(t,n,r){var o=!1,i=0,a=null;Ca(e,(function(e,t,n,s){if("function"==typeof e&&void 0===e.cid){o=!0,i++;var l,u=Ea((function(t){var o;((o=t).__esModule||$a&&"Module"===o[Symbol.toStringTag])&&(t=t.default),e.resolved="function"==typeof t?t:qi.extend(t),n.components[s]=t,--i<=0&&r()})),c=Ea((function(e){var t="Failed to resolve async component "+s+": "+e;a||(a=ja(e)?e:new Error(t),r(a))}));try{l=e(u,c)}catch(e){c(e)}if(l)if("function"==typeof l.then)l.then(u,c);else{var f=l.component;f&&"function"==typeof f.then&&f.then(u,c)}}})),o||r()}}function Ca(e,t){return Pa(e.map((function(e){return Object.keys(e.components).map((function(n){return t(e.components[n],e.instances[n],e,n)}))})))}function Pa(e){return Array.prototype.concat.apply([],e)}var $a="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag;function Ea(e){var t=!1;return function(){for(var n=[],r=arguments.length;r--;)n[r]=arguments[r];if(!t)return t=!0,e.apply(this,n)}}var Aa=function(e,t){this.router=e,this.base=function(e){if(!e)if(Wi){var t=document.querySelector("base");e=(e=t&&t.getAttribute("href")||"/").replace(/^https?:\/\/[^\/]+/,"")}else e="/";"/"!==e.charAt(0)&&(e="/"+e);return e.replace(/\/$/,"")}(t),this.current=hi,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[],this.listeners=[]};function Ta(e,t,n,r){var o=Ca(e,(function(e,r,o,i){var a=function(e,t){"function"!=typeof e&&(e=qi.extend(e));return e.options[t]}(e,t);if(a)return Array.isArray(a)?a.map((function(e){return n(e,r,o,i)})):n(a,r,o,i)}));return Pa(r?o.reverse():o)}function La(e,t){if(t)return function(){return e.apply(t,arguments)}}Aa.prototype.listen=function(e){this.cb=e},Aa.prototype.onReady=function(e,t){this.ready?e():(this.readyCbs.push(e),t&&this.readyErrorCbs.push(t))},Aa.prototype.onError=function(e){this.errorCbs.push(e)},Aa.prototype.transitionTo=function(e,t,n){var r,o=this;try{r=this.router.match(e,this.current)}catch(e){throw this.errorCbs.forEach((function(t){t(e)})),e}var i=this.current;this.confirmTransition(r,(function(){o.updateRoute(r),t&&t(r),o.ensureURL(),o.router.afterHooks.forEach((function(e){e&&e(r,i)})),o.ready||(o.ready=!0,o.readyCbs.forEach((function(e){e(r)})))}),(function(e){n&&n(e),e&&!o.ready&&(ka(e,ya.redirected)&&i===hi||(o.ready=!0,o.readyErrorCbs.forEach((function(t){t(e)}))))}))},Aa.prototype.confirmTransition=function(e,t,n){var r=this,o=this.current;this.pending=e;var i,a,s=function(e){!ka(e)&&ja(e)&&(r.errorCbs.length?r.errorCbs.forEach((function(t){t(e)})):console.error(e)),n&&n(e)},l=e.matched.length-1,u=o.matched.length-1;if(yi(e,o)&&l===u&&e.matched[l]===o.matched[u])return this.ensureURL(),e.hash&&aa(this.router,o,e,!1),s(((a=wa(i=o,e,ya.duplicated,'Avoided redundant navigation to current location: "'+i.fullPath+'".')).name="NavigationDuplicated",a));var c=function(e,t){var n,r=Math.max(e.length,t.length);for(n=0;n0)){var t=this.router,n=t.options.scrollBehavior,r=ha&&n;r&&this.listeners.push(ia());var o=function(){var n=e.current,o=Ma(e.base);e.current===hi&&o===e._startLocation||e.transitionTo(o,(function(e){r&&aa(t,e,n,!0)}))};window.addEventListener("popstate",o),this.listeners.push((function(){window.removeEventListener("popstate",o)}))}},t.prototype.go=function(e){window.history.go(e)},t.prototype.push=function(e,t,n){var r=this,o=this.current;this.transitionTo(e,(function(e){ma(ki(r.base+e.fullPath)),aa(r.router,e,o,!1),t&&t(e)}),n)},t.prototype.replace=function(e,t,n){var r=this,o=this.current;this.transitionTo(e,(function(e){ga(ki(r.base+e.fullPath)),aa(r.router,e,o,!1),t&&t(e)}),n)},t.prototype.ensureURL=function(e){if(Ma(this.base)!==this.current.fullPath){var t=ki(this.base+this.current.fullPath);e?ma(t):ga(t)}},t.prototype.getCurrentLocation=function(){return Ma(this.base)},t}(Aa);function Ma(e){var t=window.location.pathname,n=t.toLowerCase(),r=e.toLowerCase();return!e||n!==r&&0!==n.indexOf(ki(r+"/"))||(t=t.slice(e.length)),(t||"/")+window.location.search+window.location.hash}var Na=function(e){function t(t,n,r){e.call(this,t,n),r&&function(e){var t=Ma(e);if(!/^\/#/.test(t))return window.location.replace(ki(e+"/#"+t)),!0}(this.base)||Ia()}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.setupListeners=function(){var e=this;if(!(this.listeners.length>0)){var t=this.router.options.scrollBehavior,n=ha&&t;n&&this.listeners.push(ia());var r=function(){var t=e.current;Ia()&&e.transitionTo(Da(),(function(r){n&&aa(e.router,r,t,!0),ha||za(r.fullPath)}))},o=ha?"popstate":"hashchange";window.addEventListener(o,r),this.listeners.push((function(){window.removeEventListener(o,r)}))}},t.prototype.push=function(e,t,n){var r=this,o=this.current;this.transitionTo(e,(function(e){Ua(e.fullPath),aa(r.router,e,o,!1),t&&t(e)}),n)},t.prototype.replace=function(e,t,n){var r=this,o=this.current;this.transitionTo(e,(function(e){za(e.fullPath),aa(r.router,e,o,!1),t&&t(e)}),n)},t.prototype.go=function(e){window.history.go(e)},t.prototype.ensureURL=function(e){var t=this.current.fullPath;Da()!==t&&(e?Ua(t):za(t))},t.prototype.getCurrentLocation=function(){return Da()},t}(Aa);function Ia(){var e=Da();return"/"===e.charAt(0)||(za("/"+e),!1)}function Da(){var e=window.location.href,t=e.indexOf("#");return t<0?"":e=e.slice(t+1)}function Fa(e){var t=window.location.href,n=t.indexOf("#");return(n>=0?t.slice(0,n):t)+"#"+e}function Ua(e){ha?ma(Fa(e)):window.location.hash=e}function za(e){ha?ga(Fa(e)):window.location.replace(Fa(e))}var Ja=function(e){function t(t,n){e.call(this,t,n),this.stack=[],this.index=-1}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.push=function(e,t,n){var r=this;this.transitionTo(e,(function(e){r.stack=r.stack.slice(0,r.index+1).concat(e),r.index++,t&&t(e)}),n)},t.prototype.replace=function(e,t,n){var r=this;this.transitionTo(e,(function(e){r.stack=r.stack.slice(0,r.index).concat(e),t&&t(e)}),n)},t.prototype.go=function(e){var t=this,n=this.index+e;if(!(n<0||n>=this.stack.length)){var r=this.stack[n];this.confirmTransition(r,(function(){var e=t.current;t.index=n,t.updateRoute(r),t.router.afterHooks.forEach((function(t){t&&t(r,e)}))}),(function(e){ka(e,ya.duplicated)&&(t.index=n)}))}},t.prototype.getCurrentLocation=function(){var e=this.stack[this.stack.length-1];return e?e.fullPath:"/"},t.prototype.ensureURL=function(){},t}(Aa),Ba=function(e){void 0===e&&(e={}),this.app=null,this.apps=[],this.options=e,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=Xi(e.routes||[],this);var t=e.mode||"hash";switch(this.fallback="history"===t&&!ha&&!1!==e.fallback,this.fallback&&(t="hash"),Wi||(t="abstract"),this.mode=t,t){case"history":this.history=new Ra(this,e.base);break;case"hash":this.history=new Na(this,e.base,this.fallback);break;case"abstract":this.history=new Ja(this,e.base);break;default:0}},qa={currentRoute:{configurable:!0}};Ba.prototype.match=function(e,t,n){return this.matcher.match(e,t,n)},qa.currentRoute.get=function(){return this.history&&this.history.current},Ba.prototype.init=function(e){var t=this;if(this.apps.push(e),e.$once("hook:destroyed",(function(){var n=t.apps.indexOf(e);n>-1&&t.apps.splice(n,1),t.app===e&&(t.app=t.apps[0]||null),t.app||t.history.teardown()})),!this.app){this.app=e;var n=this.history;if(n instanceof Ra||n instanceof Na){var r=function(e){n.setupListeners(),function(e){var r=n.current,o=t.options.scrollBehavior;ha&&o&&"fullPath"in e&&aa(t,e,r,!1)}(e)};n.transitionTo(n.getCurrentLocation(),r,r)}n.listen((function(e){t.apps.forEach((function(t){t._route=e}))}))}},Ba.prototype.beforeEach=function(e){return Ha(this.beforeHooks,e)},Ba.prototype.beforeResolve=function(e){return Ha(this.resolveHooks,e)},Ba.prototype.afterEach=function(e){return Ha(this.afterHooks,e)},Ba.prototype.onReady=function(e,t){this.history.onReady(e,t)},Ba.prototype.onError=function(e){this.history.onError(e)},Ba.prototype.push=function(e,t,n){var r=this;if(!t&&!n&&"undefined"!=typeof Promise)return new Promise((function(t,n){r.history.push(e,t,n)}));this.history.push(e,t,n)},Ba.prototype.replace=function(e,t,n){var r=this;if(!t&&!n&&"undefined"!=typeof Promise)return new Promise((function(t,n){r.history.replace(e,t,n)}));this.history.replace(e,t,n)},Ba.prototype.go=function(e){this.history.go(e)},Ba.prototype.back=function(){this.go(-1)},Ba.prototype.forward=function(){this.go(1)},Ba.prototype.getMatchedComponents=function(e){var t=e?e.matched?e:this.resolve(e).route:this.currentRoute;return t?[].concat.apply([],t.matched.map((function(e){return Object.keys(e.components).map((function(t){return e.components[t]}))}))):[]},Ba.prototype.resolve=function(e,t,n){var r=Bi(e,t=t||this.history.current,n,this),o=this.match(r,t),i=o.redirectedFrom||o.fullPath;return{location:r,route:o,href:function(e,t,n){var r="hash"===n?"#"+t:t;return e?ki(e+"/"+r):r}(this.history.base,i,this.mode),normalizedTo:r,resolved:o}},Ba.prototype.getRoutes=function(){return this.matcher.getRoutes()},Ba.prototype.addRoute=function(e,t){this.matcher.addRoute(e,t),this.history.current!==hi&&this.history.transitionTo(this.history.getCurrentLocation())},Ba.prototype.addRoutes=function(e){this.matcher.addRoutes(e),this.history.current!==hi&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(Ba.prototype,qa);var Va=Ba;function Ha(e,t){return e.push(t),function(){var n=e.indexOf(t);n>-1&&e.splice(n,1)}}Ba.install=function e(t){if(!e.installed||qi!==t){e.installed=!0,qi=t;var n=function(e){return void 0!==e},r=function(e,t){var r=e.$options._parentVnode;n(r)&&n(r=r.data)&&n(r=r.registerRouteInstance)&&r(e,t)};t.mixin({beforeCreate:function(){n(this.$options.router)?(this._routerRoot=this,this._router=this.$options.router,this._router.init(this),t.util.defineReactive(this,"_route",this._router.history.current)):this._routerRoot=this.$parent&&this.$parent._routerRoot||this,r(this,this)},destroyed:function(){r(this)}}),Object.defineProperty(t.prototype,"$router",{get:function(){return this._routerRoot._router}}),Object.defineProperty(t.prototype,"$route",{get:function(){return this._routerRoot._route}}),t.component("RouterView",wi),t.component("RouterLink",Hi);var o=t.config.optionMergeStrategies;o.beforeRouteEnter=o.beforeRouteLeave=o.beforeRouteUpdate=o.created}},Ba.version="3.6.5",Ba.isNavigationFailure=ka,Ba.NavigationFailureType=ya,Ba.START_LOCATION=hi,Wi&&window.Vue&&window.Vue.use(Ba);n(95);n(122),n(88);var Ka={"components/AlgoliaSearchBox":()=>Promise.all([n.e(0),n.e(15)]).then(n.bind(null,372)),"components/DropdownLink":()=>Promise.all([n.e(0),n.e(16)]).then(n.bind(null,254)),"components/DropdownTransition":()=>Promise.all([n.e(0),n.e(40)]).then(n.bind(null,241)),"components/Home":()=>Promise.all([n.e(0),n.e(19)]).then(n.bind(null,299)),"components/NavLink":()=>n.e(42).then(n.bind(null,240)),"components/NavLinks":()=>Promise.all([n.e(0),n.e(13)]).then(n.bind(null,265)),"components/Navbar":()=>Promise.all([n.e(0),n.e(1)]).then(n.bind(null,369)),"components/Page":()=>Promise.all([n.e(0),n.e(12)]).then(n.bind(null,300)),"components/PageEdit":()=>Promise.all([n.e(0),n.e(20)]).then(n.bind(null,255)),"components/PageNav":()=>Promise.all([n.e(0),n.e(17)]).then(n.bind(null,267)),"components/Sidebar":()=>Promise.all([n.e(0),n.e(11)]).then(n.bind(null,301)),"components/SidebarButton":()=>Promise.all([n.e(0),n.e(41)]).then(n.bind(null,302)),"components/SidebarGroup":()=>Promise.all([n.e(0),n.e(3)]).then(n.bind(null,266)),"components/SidebarLink":()=>Promise.all([n.e(0),n.e(24)]).then(n.bind(null,256)),"components/SidebarLinks":()=>Promise.all([n.e(0),n.e(3)]).then(n.bind(null,253)),"global-components/Badge":()=>Promise.all([n.e(0),n.e(4)]).then(n.bind(null,390)),"global-components/CodeBlock":()=>Promise.all([n.e(0),n.e(5)]).then(n.bind(null,373)),"global-components/CodeGroup":()=>Promise.all([n.e(0),n.e(6)]).then(n.bind(null,374)),"layouts/404":()=>n.e(7).then(n.bind(null,375)),"layouts/Layout":()=>Promise.all([n.e(0),n.e(1),n.e(2)]).then(n.bind(null,376)),NotFound:()=>n.e(7).then(n.bind(null,375)),Layout:()=>Promise.all([n.e(0),n.e(1),n.e(2)]).then(n.bind(null,376))},Wa={"v-2216e8dc":()=>n.e(10).then(n.bind(null,391)),"v-094b9dee":()=>n.e(45).then(n.bind(null,392)),"v-7eb94829":()=>n.e(46).then(n.bind(null,393)),"v-0b4d4089":()=>n.e(44).then(n.bind(null,394)),"v-29ebca8e":()=>n.e(47).then(n.bind(null,395)),"v-51aaf849":()=>n.e(48).then(n.bind(null,396)),"v-003ee409":()=>n.e(50).then(n.bind(null,397)),"v-126ea6be":()=>n.e(49).then(n.bind(null,398)),"v-4d7f1c8a":()=>n.e(51).then(n.bind(null,399)),"v-49301ee2":()=>n.e(53).then(n.bind(null,400)),"v-83a41dee":()=>n.e(52).then(n.bind(null,401)),"v-d1f646ae":()=>n.e(54).then(n.bind(null,402)),"v-464fd629":()=>n.e(55).then(n.bind(null,403)),"v-7cca31fe":()=>n.e(56).then(n.bind(null,404)),"v-b5351e9e":()=>n.e(57).then(n.bind(null,405)),"v-76cafeae":()=>n.e(58).then(n.bind(null,406)),"v-f3391bf6":()=>n.e(59).then(n.bind(null,407)),"v-3ad539ae":()=>n.e(61).then(n.bind(null,408)),"v-62aa1369":()=>n.e(60).then(n.bind(null,409)),"v-5e92fa09":()=>n.e(62).then(n.bind(null,410)),"v-8de1af1a":()=>n.e(63).then(n.bind(null,411)),"v-48953121":()=>n.e(64).then(n.bind(null,412)),"v-1f38ca2e":()=>n.e(65).then(n.bind(null,413)),"v-27531941":()=>n.e(67).then(n.bind(null,414)),"v-1dfe032e":()=>n.e(66).then(n.bind(null,415)),"v-c918a5fa":()=>n.e(69).then(n.bind(null,416)),"v-67c77489":()=>n.e(68).then(n.bind(null,417)),"v-5a94ae89":()=>n.e(70).then(n.bind(null,418)),"v-506a67bc":()=>n.e(73).then(n.bind(null,419)),"v-959a2c2e":()=>n.e(72).then(n.bind(null,420)),"v-2abeb1ab":()=>n.e(71).then(n.bind(null,421)),"v-7bf93309":()=>n.e(74).then(n.bind(null,422)),"v-07fb5e62":()=>n.e(75).then(n.bind(null,423)),"v-7f55ccc9":()=>n.e(79).then(n.bind(null,424)),"v-19f2c039":()=>n.e(76).then(n.bind(null,425)),"v-bf7e876e":()=>n.e(80).then(n.bind(null,426)),"v-6731dec1":()=>n.e(78).then(n.bind(null,427)),"v-bb53a316":()=>n.e(81).then(n.bind(null,428)),"v-b99d2c2e":()=>n.e(77).then(n.bind(null,429)),"v-20f55eeb":()=>n.e(82).then(n.bind(null,430)),"v-90fdf4e6":()=>n.e(84).then(n.bind(null,431)),"v-74774829":()=>n.e(83).then(n.bind(null,432)),"v-114a7465":()=>n.e(85).then(n.bind(null,433))};function Ga(e){const t=Object.create(null);return function(n){return t[n]||(t[n]=e(n))}}const Za=/-(\w)/g,Xa=Ga(e=>e.replace(Za,(e,t)=>t?t.toUpperCase():"")),Qa=/\B([A-Z])/g,Ya=Ga(e=>e.replace(Qa,"-$1").toLowerCase()),es=Ga(e=>e.charAt(0).toUpperCase()+e.slice(1));function ts(e,t){if(!t)return;if(e(t))return e(t);return t.includes("-")?e(es(Xa(t))):e(es(t))||e(Ya(t))}const ns=Object.assign({},Ka,Wa),rs=e=>ns[e],os=e=>Wa[e],is=e=>Ka[e],as=e=>Kn.component(e);function ss(e){return ts(os,e)}function ls(e){return ts(is,e)}function us(e){return ts(rs,e)}function cs(e){return ts(as,e)}function fs(...e){return Promise.all(e.filter(e=>e).map(async e=>{if(!cs(e)&&us(e)){const t=await us(e)();Kn.component(e,t.default)}}))}function ps(e,t){"undefined"!=typeof window&&window.__VUEPRESS__&&(window.__VUEPRESS__[e]=t)}var ds=n(86),vs=n.n(ds),hs=n(87),ms=n.n(hs),gs={created(){if(this.siteMeta=this.$site.headTags.filter(([e])=>"meta"===e).map(([e,t])=>t),this.$ssrContext){const t=this.getMergedMetaTags();this.$ssrContext.title=this.$title,this.$ssrContext.lang=this.$lang,this.$ssrContext.pageMeta=(e=t)?e.map(e=>{let t="{t+=` ${n}="${ms()(e[n])}"`}),t+">"}).join("\n "):"",this.$ssrContext.canonicalLink=bs(this.$canonicalUrl)}var e},mounted(){this.currentMetaTags=[...document.querySelectorAll("meta")],this.updateMeta(),this.updateCanonicalLink()},methods:{updateMeta(){document.title=this.$title,document.documentElement.lang=this.$lang;const e=this.getMergedMetaTags();this.currentMetaTags=_s(e,this.currentMetaTags)},getMergedMetaTags(){const e=this.$page.frontmatter.meta||[];return vs()([{name:"description",content:this.$description}],e,this.siteMeta,ws)},updateCanonicalLink(){ys(),this.$canonicalUrl&&document.head.insertAdjacentHTML("beforeend",bs(this.$canonicalUrl))}},watch:{$page(){this.updateMeta(),this.updateCanonicalLink()}},beforeDestroy(){_s(null,this.currentMetaTags),ys()}};function ys(){const e=document.querySelector("link[rel='canonical']");e&&e.remove()}function bs(e=""){return e?``:""}function _s(e,t){if(t&&[...t].filter(e=>e.parentNode===document.head).forEach(e=>document.head.removeChild(e)),e)return e.map(e=>{const t=document.createElement("meta");return Object.keys(e).forEach(n=>{t.setAttribute(n,e[n])}),document.head.appendChild(t),t})}function ws(e){for(const t of["name","property","itemprop"])if(e.hasOwnProperty(t))return e[t]+t;return JSON.stringify(e)}var xs=n(22),js=n.n(xs),ks=[gs,{mounted(){js.a.configure({showSpinner:!1}),this.$router.beforeEach((e,t,n)=>{e.path===t.path||Kn.component(e.name)||js.a.start(),n()}),this.$router.afterEach(()=>{js.a.done(),this.isSidebarOpen=!1})}}],Ss={name:"GlobalLayout",computed:{layout(){const e=this.getLayout();return ps("layout",e),Kn.component(e)}},methods:{getLayout(){if(this.$page.path){const e=this.$page.frontmatter.layout;return e&&(this.$vuepress.getLayoutAsyncComponent(e)||this.$vuepress.getVueComponent(e))?e:"Layout"}return"NotFound"}}},Os=n(14),Cs=Object(Os.a)(Ss,(function(){return(0,this._self._c)(this.layout,{tag:"component"})}),[],!1,null,null,null).exports;!function(e,t,n){switch(t){case"components":e[t]||(e[t]={}),Object.assign(e[t],n);break;case"mixins":e[t]||(e[t]=[]),e[t].push(...n);break;default:throw new Error("Unknown option name.")}}(Cs,"mixins",ks);const Ps=[{name:"v-2216e8dc",path:"/",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-2216e8dc").then(n)}},{path:"/index.html",redirect:"/"},{name:"v-094b9dee",path:"/code_of_conduct/",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-094b9dee").then(n)}},{path:"/code_of_conduct/index.html",redirect:"/code_of_conduct/"},{path:"/code_of_conduct.html",redirect:"/code_of_conduct/"},{name:"v-7eb94829",path:"/codegen.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-7eb94829").then(n)}},{name:"v-0b4d4089",path:"/api.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-0b4d4089").then(n)}},{name:"v-29ebca8e",path:"/coercion.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-29ebca8e").then(n)}},{name:"v-51aaf849",path:"/components.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-51aaf849").then(n)}},{name:"v-003ee409",path:"/faq.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-003ee409").then(n)}},{name:"v-126ea6be",path:"/contributing/",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-126ea6be").then(n)}},{path:"/contributing/index.html",redirect:"/contributing/"},{path:"/contributing.html",redirect:"/contributing/"},{name:"v-4d7f1c8a",path:"/guide/async-validation.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-4d7f1c8a").then(n)}},{name:"v-49301ee2",path:"/guide/environments.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-49301ee2").then(n)}},{name:"v-83a41dee",path:"/guide/combining-schemas.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-83a41dee").then(n)}},{name:"v-d1f646ae",path:"/guide/formats.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-d1f646ae").then(n)}},{name:"v-464fd629",path:"/guide/getting-started.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-464fd629").then(n)}},{name:"v-7cca31fe",path:"/guide/managing-schemas.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-7cca31fe").then(n)}},{name:"v-b5351e9e",path:"/guide/modifying-data.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-b5351e9e").then(n)}},{name:"v-76cafeae",path:"/guide/schema-language.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-76cafeae").then(n)}},{name:"v-f3391bf6",path:"/guide/typescript.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-f3391bf6").then(n)}},{name:"v-3ad539ae",path:"/guide/why-ajv.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-3ad539ae").then(n)}},{name:"v-62aa1369",path:"/guide/user-keywords.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-62aa1369").then(n)}},{name:"v-5e92fa09",path:"/json-schema.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-5e92fa09").then(n)}},{name:"v-8de1af1a",path:"/json-type-definition.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-8de1af1a").then(n)}},{name:"v-48953121",path:"/keywords.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-48953121").then(n)}},{name:"v-1f38ca2e",path:"/license.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-1f38ca2e").then(n)}},{name:"v-27531941",path:"/news/2020-12-15-ajv-version-7-released.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-27531941").then(n)}},{name:"v-1dfe032e",path:"/news/2020-08-14-mozilla-grant-openjs-foundation.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-1dfe032e").then(n)}},{name:"v-c918a5fa",path:"/news/2021-03-27-ajv-version-8-released.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-c918a5fa").then(n)}},{name:"v-67c77489",path:"/news/2021-03-07-ajv-supports-json-type-definition.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-67c77489").then(n)}},{name:"v-5a94ae89",path:"/news/2021-04-24-ajv-online-event.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-5a94ae89").then(n)}},{name:"v-506a67bc",path:"/news/",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-506a67bc").then(n)}},{path:"/news/index.html",redirect:"/news/"},{name:"v-959a2c2e",path:"/news/2021-07-22-ajv-microsoft-foss-fund-award.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-959a2c2e").then(n)}},{name:"v-2abeb1ab",path:"/news/2021-05-24-ajv-online-event-video.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-2abeb1ab").then(n)}},{name:"v-7bf93309",path:"/options.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-7bf93309").then(n)}},{name:"v-07fb5e62",path:"/packages/",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-07fb5e62").then(n)}},{path:"/packages/index.html",redirect:"/packages/"},{name:"v-7f55ccc9",path:"/packages/ajv-i18n.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-7f55ccc9").then(n)}},{name:"v-19f2c039",path:"/packages/ajv-cli.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-19f2c039").then(n)}},{name:"v-bf7e876e",path:"/packages/ajv-keywords.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-bf7e876e").then(n)}},{name:"v-6731dec1",path:"/packages/ajv-formats.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-6731dec1").then(n)}},{name:"v-bb53a316",path:"/security.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-bb53a316").then(n)}},{name:"v-b99d2c2e",path:"/packages/ajv-errors.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-b99d2c2e").then(n)}},{name:"v-20f55eeb",path:"/standalone.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-20f55eeb").then(n)}},{name:"v-90fdf4e6",path:"/testimonials.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-90fdf4e6").then(n)}},{name:"v-74774829",path:"/strict-mode.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-74774829").then(n)}},{name:"v-114a7465",path:"/v6-to-v8-migration.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-114a7465").then(n)}},{path:"*",component:Cs}],$s={title:"Ajv JSON schema validator",description:"The fastest JSON schema Validator. Supports JSON Schema draft-04/06/07/2019-09/2020-12 and JSON Type Definition (RFC8927)",base:"/",headTags:[["link",{rel:"icon",href:"/favicon.ico"}],["meta",{charset:"utf-8"}],["meta",{property:"og:title",content:"Ajv JSON schema validator"}],["meta",{property:"og:description",content:"The fastest JSON schema Validator. Supports JSON Schema draft-04/06/07/2019-09/2020-12 and JSON Type Definition (RFC8927)"}],["meta",{property:"og:image",content:"https://ajv.js.org/img/ajv.png"}],["meta",{itemprop:"image",content:"https://ajv.js.org/img/ajv.png"}],["meta",{name:"twitter:card",content:"summary"}],["meta",{name:"twitter:title",content:"Ajv JSON schema validator"}],["meta",{name:"twitter:image:src",content:"https://ajv.js.org/img/ajv.png"}],["meta",{name:"apple-mobile-web-app-capable",content:"yes"}],["link",{rel:"apple-touch-icon",href:"/img/apple-touch-icon.png"}]],pages:[{frontmatter:{homepage:!0,sidebar:!1},regularPath:"/",relativePath:"README.md",key:"v-2216e8dc",path:"/",headers:[{level:2,title:"Security and reliability for JavaScript applications",slug:"security-and-reliability-for-javascript-applications"},{level:3,title:"Write less code",slug:"write-less-code"},{level:3,title:"Super fast & secure",slug:"super-fast-secure"},{level:3,title:"Multi-standard",slug:"multi-standard"},{level:2,title:"Ajv sponsors",slug:"ajv-sponsors"},{level:2,title:"What users say",slug:"what-users-say"},{level:2,title:"News",slug:"news"},{level:2,title:"Who uses Ajv",slug:"who-uses-ajv"},{level:2,title:"Contributors",slug:"contributors"}]},{title:"Contributor Covenant Code of Conduct",frontmatter:{permalink:"/code_of_conduct"},regularPath:"/code_of_conduct.html",relativePath:"code_of_conduct.md",key:"v-094b9dee",path:"/code_of_conduct/",headers:[{level:3,title:"Our Pledge",slug:"our-pledge"},{level:3,title:"Our Standards",slug:"our-standards"},{level:3,title:"Our Responsibilities",slug:"our-responsibilities"},{level:3,title:"Scope",slug:"scope"},{level:3,title:"Enforcement",slug:"enforcement"},{level:3,title:"Attribution",slug:"attribution"}]},{title:"Code generation design",frontmatter:{},regularPath:"/codegen.html",relativePath:"codegen.md",key:"v-7eb94829",path:"/codegen.html",headers:[{level:2,title:"Safe code generation",slug:"safe-code-generation"},{level:2,title:"Code optimization",slug:"code-optimization"},{level:2,title:"User-defined keywords",slug:"user-defined-keywords"}]},{title:"API Reference",frontmatter:{},regularPath:"/api.html",relativePath:"api.md",key:"v-0b4d4089",path:"/api.html",headers:[{level:2,title:"Ajv constructor and methods",slug:"ajv-constructor-and-methods"},{level:3,title:"new Ajv(options: object)",slug:"new-ajv-options-object"},{level:3,title:"ajv.compile(schema: object): (data: any) => boolean | Promise",slug:"ajv-compile-schema-object-data-any-boolean-promise-any"},{level:3,title:"ajv.compileSerializer(schema: object): (data: any) => string",slug:"ajv-compileserializer-schema-object-data-any-string"},{level:3,title:"ajv.compileParser(schema: object): (json: string) => any",slug:"ajv-compileparser-schema-object-json-string-any"},{level:3,title:"ajv.compileAsync(schema: object, meta?: boolean): Promise",slug:"ajv-compileasync-schema-object-meta-boolean-promise-function"},{level:3,title:"ajv.validate(schemaOrRef: object | string, data: any): boolean",slug:"ajv-validate-schemaorref-object-string-data-any-boolean"},{level:3,title:"ajv.addSchema(schema: object | object[], key?: string): Ajv",slug:"ajv-addschema-schema-object-object-key-string-ajv"},{level:3,title:"ajv.addMetaSchema(schema: object | object[], key?: string): Ajv",slug:"ajv-addmetaschema-schema-object-object-key-string-ajv"},{level:3,title:"ajv.validateSchema(schema: object): boolean",slug:"ajv-validateschema-schema-object-boolean"},{level:3,title:"ajv.getSchema(key: string): undefined | ((data: any) => boolean | Promise )",slug:"ajv-getschema-key-string-undefined-data-any-boolean-promise-any"},{level:3,title:"ajv.removeSchema(schemaOrRef: object | string | RegExp): Ajv",slug:"ajv-removeschema-schemaorref-object-string-regexp-ajv"},{level:3,title:"ajv.addFormat(name: string, format: Format): Ajv",slug:"ajv-addformat-name-string-format-format-ajv"},{level:3,title:"ajv.addKeyword(definition: string | object): Ajv",slug:"ajv-addkeyword-definition-string-object-ajv"},{level:3,title:"ajv.getKeyword(keyword: string): object | boolean",slug:"ajv-getkeyword-keyword-string-object-boolean"},{level:3,title:"ajv.removeKeyword(keyword: string): Ajv",slug:"ajv-removekeyword-keyword-string-ajv"},{level:3,title:"ajv.errorsText(errors?: object[], options?: object): string",slug:"ajv-errorstext-errors-object-options-object-string"},{level:2,title:"Validation errors",slug:"validation-errors"},{level:3,title:"Error objects",slug:"error-objects"},{level:3,title:"Error parameters",slug:"error-parameters"},{level:3,title:"Errors i18n",slug:"errors-i18n"},{level:3,title:"Error logging",slug:"error-logging"}]},{title:"Type coercion rules",frontmatter:{},regularPath:"/coercion.html",relativePath:"coercion.md",key:"v-29ebca8e",path:"/coercion.html",headers:[{level:2,title:"Coercion from string values",slug:"coercion-from-string-values"},{level:2,title:"Coercion from number values",slug:"coercion-from-number-values"},{level:2,title:"Coercion from boolean values",slug:"coercion-from-boolean-values"},{level:2,title:"Coercion from null",slug:"coercion-from-null"},{level:2,title:"Coercion to and from array",slug:"coercion-to-and-from-array"}]},{title:"Code components",frontmatter:{},regularPath:"/components.html",relativePath:"components.md",key:"v-51aaf849",path:"/components.html",headers:[{level:2,title:"Ajv classes",slug:"ajv-classes"},{level:2,title:"Schema compilation",slug:"schema-compilation"},{level:2,title:"Other components",slug:"other-components"}]},{title:"Frequently Asked Questions",frontmatter:{},regularPath:"/faq.html",relativePath:"faq.md",key:"v-003ee409",path:"/faq.html",headers:[{level:2,title:"Using JSON schema",slug:"using-json-schema"},{level:2,title:"Ajv API for returning validation errors",slug:"ajv-api-for-returning-validation-errors"},{level:2,title:"Additional properties inside compound keywords anyOf, oneOf, etc.",slug:"additional-properties-inside-compound-keywords-anyof-oneof-etc"},{level:2,title:"Generating schemas with resolved references ($ref)",slug:"generating-schemas-with-resolved-references-ref"}]},{title:"Contributing guide",frontmatter:{permalink:"/contributing"},regularPath:"/contributing.html",relativePath:"contributing.md",key:"v-126ea6be",path:"/contributing/",headers:[{level:2,title:"Documentation",slug:"documentation"},{level:2,title:"Issues",slug:"issues"},{level:3,title:"Bug reports",slug:"bug-reports"},{level:3,title:"Security vulnerabilities",slug:"security-vulnerabilities"},{level:3,title:"Change proposals",slug:"change-proposals"},{level:3,title:"Browser and compatibility issues",slug:"browser-and-compatibility-issues"},{level:3,title:"Installation and dependency issues",slug:"installation-and-dependency-issues"},{level:3,title:"Using JSON Schema standard",slug:"using-json-schema-standard"},{level:3,title:"Ajv usage questions",slug:"ajv-usage-questions"},{level:2,title:"Code",slug:"code"},{level:3,title:"How we make decisions",slug:"how-we-make-decisions"},{level:3,title:"Development",slug:"development"},{level:3,title:"Pull requests",slug:"pull-requests"},{level:3,title:"Contributions license",slug:"contributions-license"}]},{title:"Asynchronous validation",frontmatter:{},regularPath:"/guide/async-validation.html",relativePath:"guide/async-validation.md",key:"v-4d7f1c8a",path:"/guide/async-validation.html",headers:[{level:3,title:"Using transpilers",slug:"using-transpilers"}]},{title:"Execution environments",frontmatter:{},regularPath:"/guide/environments.html",relativePath:"guide/environments.md",key:"v-49301ee2",path:"/guide/environments.html",headers:[{level:2,title:"Server-side Node.js",slug:"server-side-node-js"},{level:2,title:"Short-lived environments",slug:"short-lived-environments"},{level:2,title:"Browsers",slug:"browsers"},{level:2,title:"ES5 environments",slug:"es5-environments"},{level:2,title:"CJS vs ESM exports",slug:"cjs-vs-esm-exports"},{level:2,title:"Other JavaScript environments",slug:"other-javascript-environments"},{level:2,title:"Command line interface",slug:"command-line-interface"}]},{title:"Combining schemas",frontmatter:{},regularPath:"/guide/combining-schemas.html",relativePath:"guide/combining-schemas.md",key:"v-83a41dee",path:"/guide/combining-schemas.html",headers:[{level:2,title:"Combining schemas with $ref",slug:"combining-schemas-with-ref"},{level:2,title:"Extending recursive schemas",slug:"extending-recursive-schemas"},{level:2,title:"$data reference",slug:"data-reference"},{level:2,title:"$merge and $patch keywords",slug:"merge-and-patch-keywords"}]},{title:"Format validation",frontmatter:{},regularPath:"/guide/formats.html",relativePath:"guide/formats.md",key:"v-d1f646ae",path:"/guide/formats.html",headers:[{level:2,title:"String formats",slug:"string-formats"},{level:2,title:"User-defined formats",slug:"user-defined-formats"},{level:2,title:"Formats and standalone validation code",slug:"formats-and-standalone-validation-code"}]},{title:"Getting started",frontmatter:{},regularPath:"/guide/getting-started.html",relativePath:"guide/getting-started.md",key:"v-464fd629",path:"/guide/getting-started.html",headers:[{level:2,title:"Install",slug:"install"},{level:2,title:"Basic data validation",slug:"basic-data-validation"},{level:2,title:"Parsing and serializing JSON",slug:"parsing-and-serializing-json"}]},{title:"Managing schemas",frontmatter:{},regularPath:"/guide/managing-schemas.html",relativePath:"guide/managing-schemas.md",key:"v-7cca31fe",path:"/guide/managing-schemas.html",headers:[{level:2,title:"Re-using validation functions",slug:"re-using-validation-functions"},{level:2,title:"Standalone validation code",slug:"standalone-validation-code"},{level:2,title:"Compiling during initialization",slug:"compiling-during-initialization"},{level:2,title:"Using Ajv instance cache",slug:"using-ajv-instance-cache"},{level:3,title:"Cache key: schema vs key vs $id",slug:"cache-key-schema-vs-key-vs-id"},{level:3,title:"Pre-adding all schemas vs adding on demand",slug:"pre-adding-all-schemas-vs-adding-on-demand"},{level:3,title:"Asynchronous schema loading",slug:"asynchronous-schema-loading"},{level:2,title:"Caching schemas in your code",slug:"caching-schemas-in-your-code"}]},{title:"Modifying data during validation",frontmatter:{},regularPath:"/guide/modifying-data.html",relativePath:"guide/modifying-data.md",key:"v-b5351e9e",path:"/guide/modifying-data.html",headers:[{level:2,title:"General considerations",slug:"general-considerations"},{level:2,title:"Removing additional properties",slug:"removing-additional-properties"},{level:2,title:"Assigning defaults",slug:"assigning-defaults"},{level:2,title:"Coercing data types",slug:"coercing-data-types"}]},{title:"Choosing schema language",frontmatter:{tags:["JTD"]},regularPath:"/guide/schema-language.html",relativePath:"guide/schema-language.md",key:"v-76cafeae",path:"/guide/schema-language.html",headers:[{level:2,title:"JSON Type Definition",slug:"json-type-definition"},{level:2,title:"JSON Schema",slug:"json-schema"},{level:3,title:"draft-04",slug:"draft-04"},{level:3,title:"draft-07 (and draft-06)",slug:"draft-07-and-draft-06"},{level:3,title:"draft 2019-09 (and draft-2020-12)",slug:"draft-2019-09-and-draft-2020-12"},{level:2,title:"Comparison",slug:"comparison"},{level:3,title:"JSON Schema",slug:"json-schema-2"},{level:3,title:"JSON Type Definition",slug:"json-type-definition-2"}]},{title:"Using with TypeScript",frontmatter:{},regularPath:"/guide/typescript.html",relativePath:"guide/typescript.md",key:"v-f3391bf6",path:"/guide/typescript.html",headers:[{level:2,title:"Additional functionality",slug:"additional-functionality"},{level:2,title:"Utility types for schemas",slug:"utility-types-for-schemas"},{level:2,title:"Utility type for JTD data type",slug:"utility-type-for-jtd-data-type"},{level:2,title:"Type-safe error handling",slug:"type-safe-error-handling"},{level:2,title:"Type-safe parsers and serializers",slug:"type-safe-parsers-and-serializers"},{level:2,title:"Type-safe unions",slug:"type-safe-unions"}]},{title:"Why use AJV",frontmatter:{},regularPath:"/guide/why-ajv.html",relativePath:"guide/why-ajv.md",key:"v-3ad539ae",path:"/guide/why-ajv.html",headers:[{level:2,title:"Write less code",slug:"write-less-code"},{level:2,title:"Super fast & secure",slug:"super-fast-secure"},{level:2,title:"Multi-standard",slug:"multi-standard"}]},{title:"User-defined keywords",frontmatter:{},regularPath:"/guide/user-keywords.html",relativePath:"guide/user-keywords.md",key:"v-62aa1369",path:"/guide/user-keywords.html"},{title:"JSON Schema",frontmatter:{},regularPath:"/json-schema.html",relativePath:"json-schema.md",key:"v-5e92fa09",path:"/json-schema.html",headers:[{level:2,title:"JSON Schema versions",slug:"json-schema-versions"},{level:3,title:"draft-07",slug:"draft-07"},{level:3,title:"draft-2019-09",slug:"draft-2019-09"},{level:3,title:"draft-2020-12",slug:"draft-2020-12"},{level:3,title:"draft-06",slug:"draft-06"},{level:3,title:"draft-04",slug:"draft-04"},{level:2,title:"OpenAPI support",slug:"openapi-support"},{level:2,title:"JSON data type",slug:"json-data-type"},{level:3,title:"type",slug:"type"},{level:3,title:"nullable",slug:"nullable"},{level:2,title:"Keywords for numbers",slug:"keywords-for-numbers"},{level:3,title:"maximum / minimum and exclusiveMaximum / exclusiveMinimum",slug:"maximum-minimum-and-exclusivemaximum-exclusiveminimum"},{level:3,title:"multipleOf",slug:"multipleof"},{level:2,title:"Keywords for strings",slug:"keywords-for-strings"},{level:3,title:"maxLength / minLength",slug:"maxlength-minlength"},{level:3,title:"pattern",slug:"pattern"},{level:3,title:"format",slug:"format"},{level:2,title:"Keywords for arrays",slug:"keywords-for-arrays"},{level:3,title:"maxItems / minItems",slug:"maxitems-minitems"},{level:3,title:"uniqueItems",slug:"uniqueitems"},{level:3,title:"items",slug:"items"},{level:3,title:"prefixItems",slug:"prefixitems"},{level:3,title:"additionalItems",slug:"additionalitems"},{level:3,title:"contains",slug:"contains"},{level:3,title:"maxContains / minContains",slug:"maxcontains-mincontains"},{level:3,title:"unevaluatedItems",slug:"unevaluateditems"},{level:2,title:"Keywords for objects",slug:"keywords-for-objects"},{level:3,title:"maxProperties / minProperties",slug:"maxproperties-minproperties"},{level:3,title:"required",slug:"required"},{level:3,title:"properties",slug:"properties"},{level:3,title:"patternProperties",slug:"patternproperties"},{level:3,title:"additionalProperties",slug:"additionalproperties"},{level:3,title:"dependencies",slug:"dependencies"},{level:3,title:"dependentRequired",slug:"dependentrequired"},{level:3,title:"dependentSchemas",slug:"dependentschemas"},{level:3,title:"propertyNames",slug:"propertynames"},{level:3,title:"unevaluatedProperties",slug:"unevaluatedproperties"},{level:3,title:"discriminator",slug:"discriminator"},{level:2,title:"Keywords for all types",slug:"keywords-for-all-types"},{level:3,title:"enum",slug:"enum"},{level:3,title:"const",slug:"const"},{level:2,title:"Compound keywords",slug:"compound-keywords"},{level:3,title:"not",slug:"not"},{level:3,title:"oneOf",slug:"oneof"},{level:3,title:"anyOf",slug:"anyof"},{level:3,title:"allOf",slug:"allof"},{level:3,title:"if/then/else",slug:"if-then-else"},{level:2,title:"Metadata keywords",slug:"metadata-keywords"}]},{title:"JSON Type Definition",frontmatter:{},regularPath:"/json-type-definition.html",relativePath:"json-type-definition.md",key:"v-8de1af1a",path:"/json-type-definition.html",headers:[{level:2,title:"JTD schema forms",slug:"jtd-schema-forms"},{level:3,title:"Type form",slug:"type-form"},{level:3,title:"Enum form",slug:"enum-form"},{level:3,title:"Elements form",slug:"elements-form"},{level:3,title:"Properties form",slug:"properties-form"},{level:3,title:"Discriminator form",slug:"discriminator-form"},{level:3,title:"Values form",slug:"values-form"},{level:3,title:"Ref form",slug:"ref-form"},{level:3,title:"Empty form",slug:"empty-form"},{level:2,title:"JTDSchemaType",slug:"jtdschematype"},{level:3,title:"Most Schemas",slug:"most-schemas"},{level:3,title:"Ref Schemas",slug:"ref-schemas"},{level:3,title:"Notable Omissions",slug:"notable-omissions"},{level:2,title:"Extending JTD",slug:"extending-jtd"},{level:3,title:"Metadata schema member",slug:"metadata-schema-member"},{level:3,title:"Union keyword",slug:"union-keyword"},{level:3,title:"User-defined keywords",slug:"user-defined-keywords"},{level:2,title:"Validation errors",slug:"validation-errors"}]},{title:"User defined keywords",frontmatter:{},regularPath:"/keywords.html",relativePath:"keywords.md",key:"v-48953121",path:"/keywords.html",headers:[{level:2,title:"Common attributes of keyword definitions",slug:"common-attributes-of-keyword-definitions"},{level:3,title:"Define keyword with code generation function",slug:"define-keyword-with-code-generation-function"},{level:3,title:'Define keyword with "validate" function',slug:"define-keyword-with-validate-function"},{level:3,title:'Define keyword with "compile" function',slug:"define-keyword-with-compile-function"},{level:3,title:'Define keyword with "macro" function',slug:"define-keyword-with-macro-function"},{level:2,title:"Schema compilation context",slug:"schema-compilation-context"},{level:2,title:"Validation time variables",slug:"validation-time-variables"},{level:2,title:"Reporting errors",slug:"reporting-errors"}]},{frontmatter:{},regularPath:"/license.html",relativePath:"license.md",key:"v-1f38ca2e",path:"/license.html"},{title:"Ajv version 7 is released!",frontmatter:{news:!0,title:"Ajv version 7 is released!",date:"2020-12-15T00:00:00.000Z"},regularPath:"/news/2020-12-15-ajv-version-7-released.html",relativePath:"news/2020-12-15-ajv-version-7-released.md",key:"v-27531941",path:"/news/2020-12-15-ajv-version-7-released.html",excerpt:'

Ajv version 7 has these new features:

\n
\n'},{title:"Mozilla MOSS grant and OpenJS Foundation",frontmatter:{news:!0,title:"Mozilla MOSS grant and OpenJS Foundation",date:"2020-08-14T00:00:00.000Z"},regularPath:"/news/2020-08-14-mozilla-grant-openjs-foundation.html",relativePath:"news/2020-08-14-mozilla-grant-openjs-foundation.md",key:"v-1dfe032e",path:"/news/2020-08-14-mozilla-grant-openjs-foundation.html",excerpt:'

\n

Ajv has been awarded a grant from Mozilla’s Open Source Support (MOSS) program in the “Foundational Technology” track! It will sponsor the development of Ajv support of JSON Schema version 2019-09 and of JSON Type Definition (RFC8927).

\n

Ajv also joined OpenJS Foundation – having this support will help ensure the longevity and stability of Ajv for all its users.

\n'},{title:"Ajv version 8 is released!",frontmatter:{news:!0,title:"Ajv version 8 is released!",date:"2021-03-27T00:00:00.000Z"},regularPath:"/news/2021-03-27-ajv-version-8-released.html",relativePath:"news/2021-03-27-ajv-version-8-released.md",key:"v-c918a5fa",path:"/news/2021-03-27-ajv-version-8-released.html",excerpt:'

Ajv version 8 has these new features:

\n\n'},{title:"Ajv supports JSON Type Definition",frontmatter:{news:!0,title:"Ajv supports JSON Type Definition",date:"2021-03-07T00:00:00.000Z"},regularPath:"/news/2021-03-07-ajv-supports-json-type-definition.html",relativePath:"news/2021-03-07-ajv-supports-json-type-definition.md",key:"v-67c77489",path:"/news/2021-03-07-ajv-supports-json-type-definition.html",excerpt:'

JSON Type Definition (JTD) is a new specification for defining JSON structures that is very simple to use, comparing with JSON Schema, less error prone, and it is published as RFC8927.

\n

See Choosing schema language for a detailed comparison between JSON Schema and JSON Type definition and informal specification.

\n'},{title:"Ajv online event - May 20, 10am PT / 6pm UK",frontmatter:{news:!0,title:"Ajv online event - May 20, 10am PT / 6pm UK",date:"2021-04-24T00:00:00.000Z",more:!1},regularPath:"/news/2021-04-24-ajv-online-event.html",relativePath:"news/2021-04-24-ajv-online-event.md",key:"v-5a94ae89",path:"/news/2021-04-24-ajv-online-event.html",excerpt:'

We will talk about:

\n
    \n
  • new features of Ajv version 8.
  • \n
  • the improvements sponsored by Mozilla\'s MOSS grant.
  • \n
  • how Ajv is used in JavaScript applications.
  • \n
\n

Speakers:

\n
    \n
  • Evgeny Poberezkin, the creator of Ajv.
  • \n
  • Mehan Jayasuriya, Program Officer at Mozilla Foundation, leading the MOSS and other programs investing in the open source and community ecosystems.
  • \n
  • Matteo Collina, Technical Director at NearForm and Node.js Technical Steering Committee member, creator of Fastify web framework.
  • \n
  • Kin Lane, Chief Evangelist at Postman. Studying the tech, business & politics of APIs since 2010. Presidential Innovation Fellow during the Obama administration.
  • \n
  • Ulysse Carion, the creator of JSON Type Definition specification.
  • \n
\n

Gajus Kuizinas will host the event.

\n

Please register here.

\n'},{title:"Ajv News",frontmatter:{newsIndex:!0,editLink:!1},regularPath:"/news/",relativePath:"news/README.md",key:"v-506a67bc",path:"/news/"},{title:"Microsoft FOSS award",frontmatter:{news:!0,title:"Microsoft FOSS award",date:"2021-07-22T00:00:00.000Z",more:!1},regularPath:"/news/2021-07-22-ajv-microsoft-foss-fund-award.html",relativePath:"news/2021-07-22-ajv-microsoft-foss-fund-award.md",key:"v-959a2c2e",path:"/news/2021-07-22-ajv-microsoft-foss-fund-award.html",excerpt:'

Ajv was awarded a sponsorship from Microsoft FOSS fund - huge thanks to Microsoft and the engineers who voted to support Ajv development.

\n

This award will contribute to a long term maintenance of Ajv.

\n'},{title:"Ajv online event video uploaded",frontmatter:{news:!0,title:"Ajv online event video uploaded",date:"2021-05-24T00:00:00.000Z",more:!1},regularPath:"/news/2021-05-24-ajv-online-event-video.html",relativePath:"news/2021-05-24-ajv-online-event-video.md",key:"v-2abeb1ab",path:"/news/2021-05-24-ajv-online-event-video.html",excerpt:'

Huge thanks to everybody who joined, and to the speakers! The video of the event is available on YouTube.

\n'},{title:"Ajv options",frontmatter:{},regularPath:"/options.html",relativePath:"options.md",key:"v-7bf93309",path:"/options.html",headers:[{level:2,title:"Usage",slug:"usage"},{level:2,title:"Option defaults",slug:"option-defaults"},{level:2,title:"Strict mode options",slug:"strict-mode-options"},{level:3,title:"strict",slug:"strict"},{level:3,title:"strictSchema",slug:"strictschema"},{level:3,title:"strictNumbers",slug:"strictnumbers"},{level:3,title:"strictTypes",slug:"stricttypes"},{level:3,title:"strictTuples",slug:"stricttuples"},{level:3,title:"strictRequired",slug:"strictrequired"},{level:3,title:"allowUnionTypes",slug:"allowuniontypes"},{level:3,title:"allowMatchingProperties",slug:"allowmatchingproperties"},{level:3,title:"validateFormats",slug:"validateformats"},{level:2,title:"Validation and reporting options",slug:"validation-and-reporting-options"},{level:3,title:"$data",slug:"data"},{level:3,title:"allErrors",slug:"allerrors"},{level:3,title:"verbose",slug:"verbose"},{level:3,title:"discriminator",slug:"discriminator"},{level:3,title:"unicodeRegExp",slug:"unicoderegexp"},{level:3,title:"timestamp",slug:"timestamp"},{level:3,title:"parseDate",slug:"parsedate"},{level:3,title:"allowDate",slug:"allowdate"},{level:3,title:"int32range",slug:"int32range"},{level:3,title:"$comment",slug:"comment"},{level:3,title:"formats",slug:"formats"},{level:3,title:"keywords",slug:"keywords"},{level:3,title:"schemas",slug:"schemas"},{level:3,title:"logger",slug:"logger"},{level:3,title:"loadSchema",slug:"loadschema"},{level:2,title:"Options to modify validated data",slug:"options-to-modify-validated-data"},{level:3,title:"removeAdditional",slug:"removeadditional"},{level:3,title:"useDefaults",slug:"usedefaults"},{level:3,title:"coerceTypes",slug:"coercetypes"},{level:2,title:"Advanced options",slug:"advanced-options"},{level:3,title:"meta",slug:"meta"},{level:3,title:"validateSchema",slug:"validateschema"},{level:3,title:"addUsedSchema",slug:"addusedschema"},{level:3,title:"inlineRefs",slug:"inlinerefs"},{level:3,title:"passContext",slug:"passcontext"},{level:3,title:"loopRequired",slug:"looprequired"},{level:3,title:"loopEnum",slug:"loopenum"},{level:3,title:"ownProperties",slug:"ownproperties"},{level:3,title:"multipleOfPrecision",slug:"multipleofprecision"},{level:3,title:"messages",slug:"messages"},{level:3,title:"uriResolver",slug:"uriresolver"},{level:3,title:"code",slug:"code"}]},{title:"Extending Ajv",frontmatter:{},regularPath:"/packages/",relativePath:"packages/README.md",key:"v-07fb5e62",path:"/packages/",headers:[{level:2,title:"Plugins",slug:"plugins"},{level:2,title:"Related packages",slug:"related-packages"}]},{frontmatter:{editLink:"https://github.com/ajv-validator/ajv-i18n/edit/master/README.md"},regularPath:"/packages/ajv-i18n.html",relativePath:"packages/ajv-i18n.md",key:"v-7f55ccc9",path:"/packages/ajv-i18n.html",headers:[{level:2,title:"Supported locales",slug:"supported-locales"},{level:2,title:"Install",slug:"install"},{level:2,title:"Usage",slug:"usage"},{level:2,title:"Tests",slug:"tests"},{level:2,title:"Contributing",slug:"contributing"},{level:2,title:"Contributors of locales",slug:"contributors-of-locales"},{level:2,title:"Enterprise support",slug:"enterprise-support"},{level:2,title:"Security contact",slug:"security-contact"},{level:2,title:"License",slug:"license"}]},{frontmatter:{editLink:"https://github.com/ajv-validator/ajv-cli/edit/master/README.md"},regularPath:"/packages/ajv-cli.html",relativePath:"packages/ajv-cli.md",key:"v-19f2c039",path:"/packages/ajv-cli.html",headers:[{level:2,title:"Contents",slug:"contents"},{level:2,title:"Installation",slug:"installation"},{level:2,title:"JSON schema language and version",slug:"json-schema-language-and-version"},{level:2,title:"Commands",slug:"commands"},{level:3,title:"Help command",slug:"help-command"},{level:3,title:"Validate data",slug:"validate-data"},{level:3,title:"Compile schemas",slug:"compile-schemas"},{level:3,title:"Migrate schemas",slug:"migrate-schemas"},{level:3,title:"Test validation result",slug:"test-validation-result"},{level:2,title:"Ajv options",slug:"ajv-options"},{level:2,title:"Version History",slug:"version-history"},{level:2,title:"Licence",slug:"licence"}]},{frontmatter:{editLink:"https://github.com/ajv-validator/ajv-keywords/edit/master/README.md"},regularPath:"/packages/ajv-keywords.html",relativePath:"packages/ajv-keywords.md",key:"v-bf7e876e",path:"/packages/ajv-keywords.html",headers:[{level:2,title:"Contents",slug:"contents"},{level:2,title:"Install",slug:"install"},{level:2,title:"Usage",slug:"usage"},{level:2,title:"Keywords",slug:"keywords"},{level:3,title:"Types",slug:"types"},{level:3,title:"Keywords for numbers",slug:"keywords-for-numbers"},{level:3,title:"Keywords for strings",slug:"keywords-for-strings"},{level:3,title:"Keywords for arrays",slug:"keywords-for-arrays"},{level:3,title:"Keywords for objects",slug:"keywords-for-objects"},{level:3,title:"Keywords for all types",slug:"keywords-for-all-types"},{level:2,title:"Security contact",slug:"security-contact"},{level:2,title:"Open-source software support",slug:"open-source-software-support"},{level:2,title:"License",slug:"license"}]},{frontmatter:{editLink:"https://github.com/ajv-validator/ajv-formats/edit/master/README.md"},regularPath:"/packages/ajv-formats.html",relativePath:"packages/ajv-formats.md",key:"v-6731dec1",path:"/packages/ajv-formats.html",headers:[{level:2,title:"Usage",slug:"usage"},{level:2,title:"Formats",slug:"formats"},{level:2,title:"Keywords to compare values: formatMaximum / formatMinimum and formatExclusiveMaximum / formatExclusiveMinimum",slug:"keywords-to-compare-values-formatmaximum-formatminimum-and-formatexclusivemaximum-formatexclusiveminimum"},{level:2,title:"Options",slug:"options"},{level:2,title:"Tests",slug:"tests"},{level:2,title:"License",slug:"license"}]},{title:"Security considerations",frontmatter:{},regularPath:"/security.html",relativePath:"security.md",key:"v-bb53a316",path:"/security.html",headers:[{level:2,title:"Security contact",slug:"security-contact"},{level:2,title:"Untrusted schemas",slug:"untrusted-schemas"},{level:2,title:"Circular references in JavaScript objects",slug:"circular-references-in-javascript-objects"},{level:2,title:"Security risks of trusted schemas",slug:"security-risks-of-trusted-schemas"},{level:2,title:"ReDoS attack",slug:"redos-attack"},{level:2,title:"Content Security Policy",slug:"content-security-policy"}]},{frontmatter:{editLink:"https://github.com/ajv-validator/ajv-errors/edit/master/README.md"},regularPath:"/packages/ajv-errors.html",relativePath:"packages/ajv-errors.md",key:"v-b99d2c2e",path:"/packages/ajv-errors.html",headers:[{level:2,title:"Contents",slug:"contents"},{level:2,title:"Install",slug:"install"},{level:2,title:"Usage",slug:"usage"},{level:3,title:"Single message",slug:"single-message"},{level:3,title:"Messages for keywords",slug:"messages-for-keywords"},{level:3,title:"Messages for properties and items",slug:"messages-for-properties-and-items"},{level:3,title:"Default message",slug:"default-message"},{level:2,title:"Templates",slug:"templates"},{level:2,title:"Options",slug:"options"},{level:2,title:"Supporters",slug:"supporters"},{level:2,title:"Enterprise support",slug:"enterprise-support"},{level:2,title:"Security contact",slug:"security-contact"},{level:2,title:"License",slug:"license"}]},{title:"Standalone validation code",frontmatter:{},regularPath:"/standalone.html",relativePath:"standalone.md",key:"v-20f55eeb",path:"/standalone.html",headers:[{level:2,title:"Two-step process",slug:"two-step-process"},{level:3,title:"Generating function(s) using CLI",slug:"generating-function-s-using-cli"},{level:3,title:"Generating using the JS library",slug:"generating-using-the-js-library"},{level:2,title:"Using the validation function(s)",slug:"using-the-validation-function-s"},{level:3,title:"Validating a single schemas using the JS library - ES6 and CJS",slug:"validating-a-single-schemas-using-the-js-library-es6-and-cjs"},{level:3,title:"Validating multiple schemas using the JS library - ES6 and CJS",slug:"validating-multiple-schemas-using-the-js-library-es6-and-cjs"},{level:3,title:"Validating multiple schemas using the JS library - ES6 and ESM",slug:"validating-multiple-schemas-using-the-js-library-es6-and-esm"},{level:3,title:"Requirement at runtime",slug:"requirement-at-runtime"},{level:2,title:"Configuration and limitations",slug:"configuration-and-limitations"}]},{title:"What users say",frontmatter:{},regularPath:"/testimonials.html",relativePath:"testimonials.md",key:"v-90fdf4e6",path:"/testimonials.html"},{title:"Strict mode",frontmatter:{},regularPath:"/strict-mode.html",relativePath:"strict-mode.md",key:"v-74774829",path:"/strict-mode.html",headers:[{level:2,title:"JSON Type Definition schemas",slug:"json-type-definition-schemas"},{level:2,title:"JSON Schema schemas",slug:"json-schema-schemas"},{level:3,title:"Prohibit ignored keywords",slug:"prohibit-ignored-keywords"},{level:3,title:"Prevent unexpected validation",slug:"prevent-unexpected-validation"},{level:3,title:"Strict types",slug:"strict-types"},{level:3,title:"Strict number validation",slug:"strict-number-validation"}]},{title:"Changes from Ajv v6.12.6 to v8.0.0",frontmatter:{},regularPath:"/v6-to-v8-migration.html",relativePath:"v6-to-v8-migration.md",key:"v-114a7465",path:"/v6-to-v8-migration.html",headers:[{level:2,title:"New features",slug:"new-features"},{level:2,title:"Better TypeScript support",slug:"better-typescript-support"},{level:2,title:"Potential migration difficulties",slug:"potential-migration-difficulties"},{level:2,title:"API changes",slug:"api-changes"},{level:3,title:"Added options",slug:"added-options"},{level:3,title:"Changed options",slug:"changed-options"},{level:3,title:"Removed options",slug:"removed-options"}]}],themeConfig:{logo:"/img/ajv.svg",nav:[{text:"Home",link:"/"},{text:"Guide",items:[{link:"/guide/why-ajv",text:"Why use Ajv"},{link:"/guide/getting-started",text:"Getting started"},{link:"/guide/typescript",text:"Using with TypeScript"},{link:"/guide/schema-language",text:"Choosing schema language"},{link:"/guide/managing-schemas",text:"Managing schemas"},{link:"/guide/combining-schemas",text:"Combining schemas"},{link:"/guide/formats",text:"Format validation"},{link:"/guide/modifying-data",text:"Modifying data"},{link:"/guide/user-keywords",text:"User-defined keywords"},{link:"/guide/async-validation",text:"Asynchronous validation"},{link:"/guide/environments",text:"Execution environments"}]},{text:"Reference",items:[{link:"/api",text:"API Reference"},{link:"/options",text:"Ajv options"},{link:"/json-schema",text:"JSON Schema"},{link:"/json-type-definition",text:"JSON Type Definition"},{link:"/strict-mode",text:"Strict mode"},{link:"/standalone",text:"Standalone validation code"},{link:"/keywords",text:"User defined keywords"},{link:"/coercion",text:"Type coercion rules"}]},{text:"Learn more",items:[{text:"Extending Ajv",items:[{link:"/packages/",text:"Extending Ajv"},{link:"/packages/ajv-cli",text:"ajv-cli"},{link:"/packages/ajv-errors",text:"ajv-errors"},{link:"/packages/ajv-formats",text:"ajv-formats"},{link:"/packages/ajv-i18n",text:"ajv-i18n"},{link:"/packages/ajv-keywords",text:"ajv-keywords"}]},{text:"Contributors",items:[{link:"/contributing",text:"Contributing guide"},{link:"/codegen",text:"Code generation design"},{link:"/components",text:"Code components"},{link:"/code_of_conduct",text:"Code of Conduct"}]},{text:"Information",items:[{link:"/news/",text:"News"},{link:"/faq",text:"FAQ"},{link:"/security",text:"Security"},{link:"/v6-to-v8-migration",text:"Migrate from v6"},{link:"/testimonials",text:"What users say"},{link:"/license",text:"License"}]}]}],sidebar:[{title:"Guide",children:["/guide/why-ajv","/guide/getting-started","/guide/typescript","/guide/schema-language","/guide/managing-schemas","/guide/combining-schemas","/guide/formats","/guide/modifying-data","/guide/user-keywords","/guide/async-validation","/guide/environments"]},{title:"Reference",children:["/api","/options","/json-schema","/json-type-definition","/strict-mode","/standalone","/keywords","/coercion"]},{title:"Extending Ajv",children:[["/packages/","Extending Ajv"],["/packages/ajv-formats","ajv-formats"],["/packages/ajv-keywords","ajv-keywords"],["/packages/ajv-errors","ajv-errors"],["/packages/ajv-i18n","ajv-i18n"],["/packages/ajv-cli","ajv-cli"]]},{title:"Contributors",children:["/contributing","/codegen","/components",["/code_of_conduct","Code of conduct"]]},{title:"Information",children:["/news/","/faq","/security",["/v6-to-v8-migration","Migrate from v6 to v8"],"/testimonials",["/license","License"]]}],repo:"ajv-validator/ajv",docsDir:"docs",editLinks:!0,activeHeaderLinks:!1}};n(233);Kn.component("Button",()=>Promise.all([n.e(0),n.e(25)]).then(n.bind(null,377))),Kn.component("Column",()=>Promise.all([n.e(0),n.e(26)]).then(n.bind(null,378))),Kn.component("Columns",()=>Promise.all([n.e(0),n.e(27)]).then(n.bind(null,434))),Kn.component("Contributors",()=>Promise.all([n.e(0),n.e(21)]).then(n.bind(null,379))),Kn.component("Feature",()=>Promise.all([n.e(0),n.e(22)]).then(n.bind(null,380))),Kn.component("Features",()=>Promise.all([n.e(0),n.e(28)]).then(n.bind(null,435))),Kn.component("FooterColumn",()=>Promise.all([n.e(0),n.e(29)]).then(n.bind(null,381))),Kn.component("FooterColumns",()=>Promise.all([n.e(0),n.e(30)]).then(n.bind(null,436))),Kn.component("GitHub",()=>Promise.all([n.e(0),n.e(31)]).then(n.bind(null,382))),Kn.component("HeroSection",()=>Promise.all([n.e(0),n.e(23)]).then(n.bind(null,437))),Kn.component("HomePage",()=>Promise.all([n.e(0),n.e(32)]).then(n.bind(null,438))),Kn.component("HomeSection",()=>Promise.all([n.e(0),n.e(33)]).then(n.bind(null,383))),Kn.component("NewsHome",()=>Promise.all([n.e(0),n.e(34)]).then(n.bind(null,384))),Kn.component("NewsIndex",()=>n.e(43).then(n.bind(null,385))),Kn.component("NewsPost",()=>Promise.all([n.e(0),n.e(14)]).then(n.bind(null,386))),Kn.component("NewsPostMeta",()=>Promise.all([n.e(0),n.e(18)]).then(n.bind(null,387))),Kn.component("Projects",()=>Promise.all([n.e(0),n.e(35)]).then(n.bind(null,439))),Kn.component("Sponsors",()=>Promise.all([n.e(0),n.e(36)]).then(n.bind(null,388))),Kn.component("Subscribe",()=>Promise.all([n.e(0),n.e(37)]).then(n.bind(null,440))),Kn.component("Testimonial",()=>Promise.all([n.e(0),n.e(38)]).then(n.bind(null,389))),Kn.component("Testimonials",()=>Promise.all([n.e(0),n.e(39)]).then(n.bind(null,441))),Kn.component("Badge",()=>Promise.all([n.e(0),n.e(4)]).then(n.bind(null,390))),Kn.component("CodeBlock",()=>Promise.all([n.e(0),n.e(5)]).then(n.bind(null,373))),Kn.component("CodeGroup",()=>Promise.all([n.e(0),n.e(6)]).then(n.bind(null,374)));n(234);var Es=[{},({Vue:e})=>{e.mixin({computed:{$dataBlock(){return this.$options.__data__block__}}})},{},{}],As=[];class Ts extends class{constructor(){this.store=new Kn({data:{state:{}}})}$get(e){return this.store.state[e]}$set(e,t){Kn.set(this.store.state,e,t)}$emit(...e){this.store.$emit(...e)}$on(...e){this.store.$on(...e)}}{}Object.assign(Ts.prototype,{getPageAsyncComponent:ss,getLayoutAsyncComponent:ls,getAsyncComponent:us,getVueComponent:cs});var Ls={install(e){const t=new Ts;e.$vuepress=t,e.prototype.$vuepress=t}};function Rs(e,t){const n=t.toLowerCase();return e.options.routes.some(e=>e.path.toLowerCase()===n)}var Ms={props:{pageKey:String,slotKey:{type:String,default:"default"}},render(e){const t=this.pageKey||this.$parent.$page.key;return ps("pageKey",t),Kn.component(t)||Kn.component(t,ss(t)),Kn.component(t)?e(t):e("")}},Ns={functional:!0,props:{slotKey:String,required:!0},render:(e,{props:t,slots:n})=>e("div",{class:["content__"+t.slotKey]},n()[t.slotKey])},Is={computed:{openInNewWindowTitle(){return this.$themeLocaleConfig.openNewWindowText||"(opens new window)"}}},Ds=(n(235),n(236),Object(Os.a)(Is,(function(){var e=this._self._c;return e("span",[e("svg",{staticClass:"icon outbound",attrs:{xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",x:"0px",y:"0px",viewBox:"0 0 100 100",width:"15",height:"15"}},[e("path",{attrs:{fill:"currentColor",d:"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"}}),this._v(" "),e("polygon",{attrs:{fill:"currentColor",points:"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"}})]),this._v(" "),e("span",{staticClass:"sr-only"},[this._v(this._s(this.openInNewWindowTitle))])])}),[],!1,null,null,null).exports),Fs={functional:!0,render(e,{parent:t,children:n}){if(t._isMounted)return n;t.$once("hook:mounted",()=>{t.$forceUpdate()})}};Kn.config.productionTip=!1,Kn.use(Va),Kn.use(Ls),Kn.mixin(function(e,t,n=Kn){!function(e){e.locales&&Object.keys(e.locales).forEach(t=>{e.locales[t].path=t});Object.freeze(e)}(t),n.$vuepress.$set("siteData",t);const r=new(e(n.$vuepress.$get("siteData"))),o=Object.getOwnPropertyDescriptors(Object.getPrototypeOf(r)),i={};return Object.keys(o).reduce((e,t)=>(t.startsWith("$")&&(e[t]=o[t].get),e),i),{computed:i}}(e=>class{setPage(e){this.__page=e}get $site(){return e}get $themeConfig(){return this.$site.themeConfig}get $frontmatter(){return this.$page.frontmatter}get $localeConfig(){const{locales:e={}}=this.$site;let t,n;for(const r in e)"/"===r?n=e[r]:0===this.$page.path.indexOf(r)&&(t=e[r]);return t||n||{}}get $siteTitle(){return this.$localeConfig.title||this.$site.title||""}get $canonicalUrl(){const{canonicalUrl:e}=this.$page.frontmatter;return"string"==typeof e&&e}get $title(){const e=this.$page,{metaTitle:t}=this.$page.frontmatter;if("string"==typeof t)return t;const n=this.$siteTitle,r=e.frontmatter.home?null:e.frontmatter.title||e.title;return n?r?r+" | "+n:n:r||"VuePress"}get $description(){const e=function(e){if(e){const t=e.filter(e=>"description"===e.name)[0];if(t)return t.content}}(this.$page.frontmatter.meta);return e||(this.$page.frontmatter.description||this.$localeConfig.description||this.$site.description||"")}get $lang(){return this.$page.frontmatter.lang||this.$localeConfig.lang||"en-US"}get $localePath(){return this.$localeConfig.path||"/"}get $themeLocaleConfig(){return(this.$site.themeConfig.locales||{})[this.$localePath]||{}}get $page(){return this.__page?this.__page:function(e,t){for(let n=0;nn||(e.hash?!Kn.$vuepress.$get("disableScrollBehavior")&&{selector:decodeURIComponent(e.hash)}:{x:0,y:0})});!function(e){e.beforeEach((t,n,r)=>{if(Rs(e,t.path))r();else if(/(\/|\.html)$/.test(t.path))if(/\/$/.test(t.path)){const n=t.path.replace(/\/$/,"")+".html";Rs(e,n)?r(n):r()}else r();else{const n=t.path+"/",o=t.path+".html";Rs(e,o)?r(o):Rs(e,n)?r(n):r()}})}(n);const r={};try{await Promise.all(Es.filter(e=>"function"==typeof e).map(t=>t({Vue:Kn,options:r,router:n,siteData:$s,isServer:e})))}catch(e){console.error(e)}return{app:new Kn(Object.assign(r,{router:n,render:e=>e("div",{attrs:{id:"app"}},[e("RouterView",{ref:"layout"}),e("div",{class:"global-ui"},As.map(t=>e(t)))])})),router:n}}(!1).then(({app:e,router:t})=>{t.onReady(()=>{e.$mount("#app")})})}]); \ No newline at end of file diff --git a/code_of_conduct/index.html b/code_of_conduct/index.html index c865c02e2..1cc8e3017 100644 --- a/code_of_conduct/index.html +++ b/code_of_conduct/index.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/codegen.html b/codegen.html index 9a72f241e..d3fd99302 100644 --- a/codegen.html +++ b/codegen.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/coercion.html b/coercion.html index 27fad8497..8818eaf8e 100644 --- a/coercion.html +++ b/coercion.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/components.html b/components.html index a3a0d9d26..318771444 100644 --- a/components.html +++ b/components.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/contributing/index.html b/contributing/index.html index 8d7143a82..f2771b2c0 100644 --- a/contributing/index.html +++ b/contributing/index.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/faq.html b/faq.html index a7b3d8a04..76b0d9e42 100644 --- a/faq.html +++ b/faq.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/guide/async-validation.html b/guide/async-validation.html index 9bf72af58..24e77c8bd 100644 --- a/guide/async-validation.html +++ b/guide/async-validation.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/guide/combining-schemas.html b/guide/combining-schemas.html index 50cef1967..4ef18abc8 100644 --- a/guide/combining-schemas.html +++ b/guide/combining-schemas.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/guide/environments.html b/guide/environments.html index a150652eb..c353fb39f 100644 --- a/guide/environments.html +++ b/guide/environments.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/guide/formats.html b/guide/formats.html index a85036751..de0463d00 100644 --- a/guide/formats.html +++ b/guide/formats.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/guide/getting-started.html b/guide/getting-started.html index bfe8bc34e..69d8039af 100644 --- a/guide/getting-started.html +++ b/guide/getting-started.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/guide/managing-schemas.html b/guide/managing-schemas.html index 33428b5b5..59d99c255 100644 --- a/guide/managing-schemas.html +++ b/guide/managing-schemas.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/guide/modifying-data.html b/guide/modifying-data.html index af5c93c5c..47d593c79 100644 --- a/guide/modifying-data.html +++ b/guide/modifying-data.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/guide/schema-language.html b/guide/schema-language.html index 638220565..44e3101c0 100644 --- a/guide/schema-language.html +++ b/guide/schema-language.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/guide/typescript.html b/guide/typescript.html index 3b3a74fff..ac6862a18 100644 --- a/guide/typescript.html +++ b/guide/typescript.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/guide/user-keywords.html b/guide/user-keywords.html index fb2cd3453..737af478c 100644 --- a/guide/user-keywords.html +++ b/guide/user-keywords.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/guide/why-ajv.html b/guide/why-ajv.html index ded05b35e..11c89f24a 100644 --- a/guide/why-ajv.html +++ b/guide/why-ajv.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/index.html b/index.html index 387ea4bf9..7e588d70c 100644 --- a/index.html +++ b/index.html @@ -18,8 +18,8 @@ - - + +
All news

# Contributors

Ajv is free to use and open-source that many developers contributed to. Join us!

epoberezkin - + spaced4ndy - + erikbrinkman - + dependabot[bot] - + jasoniangreen - + PBug90 - + blakeembrey - + sambauers - + gajus - + meirotstein - + Tyharo1 - + igor-savin-ht - + b4h0-c4t - + willfarrell - + boenrobot - + yume-chan - + GrahamLea - + franciscomorais - + asaid-0 - + domoritz - + imbstack - + pithu - + realityking - + efebarlas - - brendo - + + awlayton + pcwiek - + rehanvdm - + farrago - + SoAsEr - + kroky - + Delagen - + YChebotaev - + bhvngt - + t7yang - + teq0 - + wuweiss - + zekth - + egfx-notifications - - awlayton - + + brendo + HotelDon - + donaldpipowitch - + mummybot - + G-Rath - + HolgerJeromin - + + Nonemoticoner + + MichaelDeBoey + + mattpolzin + monkeywithacupcake - + ktrueda - - lucassaid - + marshall007 - - mattpolzin - - MichaelDeBoey - - Nonemoticoner - - ahmdsolmn - + + lucassaid + + philsturgeon + carlo-quinonez - + radekmie - + merlindorin - + Romakita - + rbuckton - + ryanmeador - + mighty1231 - + simon04 - + SirLich - + krenor - + stuartpb - + TIBCOeddie - + bearmini - + not-an-aardvark - - thernstig - + + mxsgx + m00s - + mbroadst - + MattiAstedrone - + MikeRalphson - + tyok - + MrJithil - + mychaelgo - + natflow - + nwoltman - + nimerritt - + nicksrandall - + Noam3kCH - + eventlistener - + Opticsponge - + orgads - + papb - - philsturgeon - + + thernstig + jsdevel - + oldmud0 - + ossdev07 - + pskfyi - + qwertyforce - + rek - + sahilda - + schokotets - + superfaz - + tridium - + vlbee - + aladdin-add - + wyfo - + duxing - + anchnk - + ChALkeR - + TommyDew42 - + koba04 - + isTravis - + cvlab - + vargaeric - + villasv - + aristov - + billytrend - + byr-gdp - + cjancsar - + dfeufel - + ehmicky - + fpicalausa - + franrolando - + fridays - + jonganc - + + ahmdsolmn + + caub + dalcib - + dannyb648 - + dancasey - + rotu - + FunkyDck - + darcyparker - + daveisfera - + dsanders11 - + Delapouite - + dimitropoulos - + keyten - + thetric - + rubiagatra - + forivall - + ecwyne - - EtaiG - + Alexsey - + avanelli - + anslzo - + asprouse - + andyscott - + + vixalien + kulakowka - + vendeza - + benasher44 - + bradjones1 - + eventualbuddha - + cbrwflo - + cpillsbury - + ChuntaoLu - + delavara - + smithc10 - - caub - - gj - + + EtaiG + + jboavida + justinpowers - + kapouer - + lehni - + platinumazure - + kpping - + laurens - + johanlelan - + leonardovillela - + LinusU - + alazyzombie - + jsbrain - + Eomm - + VIEWVIEWVIEW - + mduu - + dzuremar - - mxsgx - + + gj + rgeerts - + garrows - + hadrien-toma - + seriousme - + hans-kinnek - + handrews - + is2ei - + idangozlan - + ivansieder - + P0lip - + JamesJansson - + mrjgreen - + jrr - + jonasfj - + jonathanGB - - jboavida
- + diff --git a/json-schema.html b/json-schema.html index c3d1f1d72..20a6ed768 100644 --- a/json-schema.html +++ b/json-schema.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/json-type-definition.html b/json-type-definition.html index 61dc848da..882638874 100644 --- a/json-type-definition.html +++ b/json-type-definition.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/keywords.html b/keywords.html index 1ad723486..34b89fbbd 100644 --- a/keywords.html +++ b/keywords.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/license.html b/license.html index fde886738..8579fafa1 100644 --- a/license.html +++ b/license.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/news/2020-08-14-mozilla-grant-openjs-foundation.html b/news/2020-08-14-mozilla-grant-openjs-foundation.html index 230be3a7d..d1387c896 100644 --- a/news/2020-08-14-mozilla-grant-openjs-foundation.html +++ b/news/2020-08-14-mozilla-grant-openjs-foundation.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/news/2020-12-15-ajv-version-7-released.html b/news/2020-12-15-ajv-version-7-released.html index ed5a78473..33ffc1289 100644 --- a/news/2020-12-15-ajv-version-7-released.html +++ b/news/2020-12-15-ajv-version-7-released.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/news/2021-03-07-ajv-supports-json-type-definition.html b/news/2021-03-07-ajv-supports-json-type-definition.html index 117c70a18..30285ae07 100644 --- a/news/2021-03-07-ajv-supports-json-type-definition.html +++ b/news/2021-03-07-ajv-supports-json-type-definition.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/news/2021-03-27-ajv-version-8-released.html b/news/2021-03-27-ajv-version-8-released.html index aab4d6a48..bd8688abb 100644 --- a/news/2021-03-27-ajv-version-8-released.html +++ b/news/2021-03-27-ajv-version-8-released.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/news/2021-04-24-ajv-online-event.html b/news/2021-04-24-ajv-online-event.html index 849841938..ac098ae74 100644 --- a/news/2021-04-24-ajv-online-event.html +++ b/news/2021-04-24-ajv-online-event.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/news/2021-05-24-ajv-online-event-video.html b/news/2021-05-24-ajv-online-event-video.html index c2e9a4ad4..e3092a3c5 100644 --- a/news/2021-05-24-ajv-online-event-video.html +++ b/news/2021-05-24-ajv-online-event-video.html @@ -18,8 +18,8 @@ - - + + - + diff --git a/news/2021-07-22-ajv-microsoft-foss-fund-award.html b/news/2021-07-22-ajv-microsoft-foss-fund-award.html index 635251d11..6886cd22b 100644 --- a/news/2021-07-22-ajv-microsoft-foss-fund-award.html +++ b/news/2021-07-22-ajv-microsoft-foss-fund-award.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/news/index.html b/news/index.html index 517350872..0d744c013 100644 --- a/news/index.html +++ b/news/index.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/options.html b/options.html index b00fbe39a..d67a3d917 100644 --- a/options.html +++ b/options.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/packages/ajv-cli.html b/packages/ajv-cli.html index d93806118..14d385bee 100644 --- a/packages/ajv-cli.html +++ b/packages/ajv-cli.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/packages/ajv-errors.html b/packages/ajv-errors.html index b7fc9f2a2..375a172b4 100644 --- a/packages/ajv-errors.html +++ b/packages/ajv-errors.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/packages/ajv-formats.html b/packages/ajv-formats.html index d7b0f8305..0b8f88314 100644 --- a/packages/ajv-formats.html +++ b/packages/ajv-formats.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/packages/ajv-i18n.html b/packages/ajv-i18n.html index 810b0df25..570afbaef 100644 --- a/packages/ajv-i18n.html +++ b/packages/ajv-i18n.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/packages/ajv-keywords.html b/packages/ajv-keywords.html index cc0f3e864..4ba797e22 100644 --- a/packages/ajv-keywords.html +++ b/packages/ajv-keywords.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/packages/index.html b/packages/index.html index 29d9c9c13..32ea2dd1b 100644 --- a/packages/index.html +++ b/packages/index.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/security.html b/security.html index d99a06879..958ae1db2 100644 --- a/security.html +++ b/security.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/standalone.html b/standalone.html index db0ecc6d8..bd27ab344 100644 --- a/standalone.html +++ b/standalone.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/strict-mode.html b/strict-mode.html index c446b734c..59dd1621a 100644 --- a/strict-mode.html +++ b/strict-mode.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/testimonials.html b/testimonials.html index f0a3a4c26..bdd4e5036 100644 --- a/testimonials.html +++ b/testimonials.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/v6-to-v8-migration.html b/v6-to-v8-migration.html index 8224fa88e..f187b53c3 100644 --- a/v6-to-v8-migration.html +++ b/v6-to-v8-migration.html @@ -18,8 +18,8 @@ - - + +