From 27246aa98db016b8271cb8953cee1fa76fff5d9d Mon Sep 17 00:00:00 2001 From: GitHub workflow <2769109+epoberezkin@users.noreply.github.com> Date: Sun, 30 Jun 2024 22:02:05 +0000 Subject: [PATCH] updated by ajv workflow https://github.com/ajv-validator/ajv/actions/runs/9735223700 --- 404.html | 6 +- api.html | 6 +- assets/css/0.styles.03945044.css | 1 + assets/img/contributors.34f552fd.jpg | Bin 0 -> 246715 bytes assets/js/14.05bf1836.js | 1 + assets/js/18.56d9e86c.js | 1 + assets/js/21.3b3523d7.js | 1 + assets/js/56.d95d6019.js | 1 + assets/js/57.f1b751c1.js | 1 + assets/js/83.e5ae71e1.js | 1 + assets/js/app.d305842c.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 | 8 +- guide/schema-language.html | 6 +- guide/typescript.html | 6 +- guide/user-keywords.html | 6 +- guide/why-ajv.html | 6 +- index.html | 386 +++++++++--------- 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 | 6 +- 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 +- 53 files changed, 347 insertions(+), 322 deletions(-) create mode 100644 assets/css/0.styles.03945044.css create mode 100644 assets/img/contributors.34f552fd.jpg create mode 100644 assets/js/14.05bf1836.js create mode 100644 assets/js/18.56d9e86c.js create mode 100644 assets/js/21.3b3523d7.js create mode 100644 assets/js/56.d95d6019.js create mode 100644 assets/js/57.f1b751c1.js create mode 100644 assets/js/83.e5ae71e1.js create mode 100644 assets/js/app.d305842c.js diff --git a/404.html b/404.html index 1e19f4326..f7a2fe4e5 100644 --- a/404.html +++ b/404.html @@ -18,13 +18,13 @@ - - + +

404

That's a Four-Oh-Four.
Take me home.
- + diff --git a/api.html b/api.html index 69ac45ac9..f9901a997 100644 --- a/api.html +++ b/api.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/assets/css/0.styles.03945044.css b/assets/css/0.styles.03945044.css new file mode 100644 index 000000000..1dbd4da9b --- /dev/null +++ b/assets/css/0.styles.03945044.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.34f552fd.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.34f552fd.jpg b/assets/img/contributors.34f552fd.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8102baf7add995487fac69cdd044fa377ddfd295 GIT binary patch literal 246715 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 literal 0 HcmV?d00001 diff --git a/assets/js/14.05bf1836.js b/assets/js/14.05bf1836.js new file mode 100644 index 000000000..5fd84be04 --- /dev/null +++ b/assets/js/14.05bf1836.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[14,20],{238:function(t,e,n){"use strict";n.d(e,"d",(function(){return i})),n.d(e,"a",(function(){return a})),n.d(e,"i",(function(){return s})),n.d(e,"f",(function(){return c})),n.d(e,"g",(function(){return u})),n.d(e,"h",(function(){return l})),n.d(e,"b",(function(){return d})),n.d(e,"e",(function(){return p})),n.d(e,"k",(function(){return f})),n.d(e,"l",(function(){return h})),n.d(e,"c",(function(){return m})),n.d(e,"j",(function(){return b}));n(88);const i=/#.*$/,r=/\.(md|html)$/,a=/\/$/,s=/^[a-z]+:/i;function o(t){return decodeURI(t).replace(i,"").replace(r,"")}function c(t){return s.test(t)}function u(t){return/^mailto:/.test(t)}function l(t){return/^tel:/.test(t)}function d(t){if(c(t))return t;const e=t.match(i),n=e?e[0]:"",r=o(t);return a.test(r)?t:r+".html"+n}function p(t,e){const n=decodeURIComponent(t.hash),r=function(t){const e=t.match(i);if(e)return e[0]}(e);if(r&&n!==r)return!1;return o(t.path)===o(e)}function f(t,e,n){if(c(e))return{type:"external",path:e};n&&(e=function(t,e,n){const i=t.charAt(0);if("/"===i)return t;if("?"===i||"#"===i)return e+t;const r=e.split("/");n&&r[r.length-1]||r.pop();const a=t.replace(/^\//,"").split("/");for(let t=0;tfunction t(e,n,i,r=1){if("string"==typeof e)return f(n,e,i);if(Array.isArray(e))return Object.assign(f(n,e[0],i),{title:e[1]});{const a=e.children||[];return 0===a.length&&e.path?Object.assign(f(n,e.path,i),{title:e.title}):{type:"group",path:e.path,title:e.title,sidebarDepth:e.sidebarDepth,initialOpenGroupIndex:e.initialOpenGroupIndex,children:a.map(e=>t(e,n,i,r+1)),collapsable:!1!==e.collapsable}}}(t,r,n)):[]}return[]}function g(t){const e=m(t.headers||[]);return[{type:"group",collapsable:!1,title:t.title,path:null,children:e.map(e=>({type:"auto",title:e.title,basePath:t.path,path:t.path+"#"+e.slug,children:e.children||[]}))}]}function m(t){let e;return(t=t.map(t=>Object.assign({},t))).forEach(t=>{2===t.level?e=t:e&&(e.children||(e.children=[])).push(t)}),t.filter(t=>2===t.level)}function b(t){return Object.assign(t,{type:t.items&&t.items.length?"links":"link"})}},244:function(t,e){t.exports=function(t){return null==t}},245:function(t,e,n){},251:function(t,e,n){"use strict";n(245)},255:function(t,e,n){"use strict";n.r(e);var i=n(244),r=n.n(i),a=n(238),s={name:"PageEdit",computed:{lastUpdated(){return this.$page.lastUpdated},lastUpdatedText(){return"string"==typeof this.$themeLocaleConfig.lastUpdated?this.$themeLocaleConfig.lastUpdated:"string"==typeof this.$site.themeConfig.lastUpdated?this.$site.themeConfig.lastUpdated:"Last Updated"},editLink(){const t=r()(this.$page.frontmatter.editLink)?this.$site.themeConfig.editLinks:this.$page.frontmatter.editLink,{repo:e,docsDir:n="",docsBranch:i="master",docsRepo:a=e}=this.$site.themeConfig;return"string"==typeof t?t:t&&a&&this.$page.relativePath?this.createEditLink(e,a,n,i,this.$page.relativePath):null},editLinkText(){return this.$themeLocaleConfig.editLinkText||this.$site.themeConfig.editLinkText||"Edit this page"}},methods:{createEditLink(t,e,n,i,r){if(/bitbucket.org/.test(e)){return e.replace(a.a,"")+"/src"+`/${i}/`+(n?n.replace(a.a,"")+"/":"")+r+`?mode=edit&spa=0&at=${i}&fileviewer=file-view-default`}if(/gitlab.com/.test(e)){return e.replace(a.a,"")+"/-/edit"+`/${i}/`+(n?n.replace(a.a,"")+"/":"")+r}return(a.i.test(e)?e:"https://github.com/"+e).replace(a.a,"")+"/edit"+`/${i}/`+(n?n.replace(a.a,"")+"/":"")+r}}},o=(n(251),n(14)),c=Object(o.a)(s,(function(){var t=this,e=t._self._c;return e("footer",{staticClass:"page-edit"},[t.editLink?e("div",{staticClass:"edit-link"},[e("a",{attrs:{href:t.editLink,target:"_blank",rel:"noopener noreferrer"}},[t._v(t._s(t.editLinkText))]),t._v(" "),e("OutboundLink")],1):t._e(),t._v(" "),t.lastUpdated?e("div",{staticClass:"last-updated"},[e("span",{staticClass:"prefix"},[t._v(t._s(t.lastUpdatedText)+":")]),t._v(" "),e("span",{staticClass:"time"},[t._v(t._s(t.lastUpdated))])]):t._e()])}),[],!1,null,null,null);e.default=c.exports},293:function(t,e,n){},363:function(t,e,n){"use strict";n(293)},387:function(t,e,n){"use strict";n.r(e);var i={components:{PageEdit:n(255).default}},r=(n(363),n(14)),a=Object(r.a)(i,(function(){var t=this,e=t._self._c;return e("main",{staticClass:"page"},[t._t("top"),t._v(" "),e("div",{staticClass:"theme-default-content",staticStyle:{"padding-bottom":"0px"}},[e("h1",[t._v(t._s(t.$page.frontmatter.title))]),t._v(" "),e("NewsPostMeta",{attrs:{date:t.$page.frontmatter.date}})],1),t._v(" "),e("Content",{staticClass:"theme-default-content",staticStyle:{"padding-top":"0px"}}),t._v(" "),e("PageEdit"),t._v(" "),t._t("bottom")],2)}),[],!1,null,"22624a70",null);e.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/18.56d9e86c.js b/assets/js/18.56d9e86c.js new file mode 100644 index 000000000..9ee0f8fe7 --- /dev/null +++ b/assets/js/18.56d9e86c.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[18],{292:function(t,e,n){},360:function(t,e,n){t.exports=function(){"use strict";var t=6e4,e=36e5,n="millisecond",r="second",s="minute",i="hour",u="day",a="week",o="month",c="quarter",f="year",h="date",l="Invalid Date",d=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,$=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,v={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(t){var e=["th","st","nd","rd"],n=t%100;return"["+t+(e[(n-20)%10]||e[n]||e[0])+"]"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:""+Array(e+1-r.length).join(n)+t},D={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),s=n%60;return(e<=0?"+":"-")+m(r,2,"0")+":"+m(s,2,"0")},m:function t(e,n){if(e.date()1)return t(u[0])}else{var a=e.name;g[a]=e,s=a}return!r&&s&&(M=s),s||!r&&M},O=function(t,e){if(y(t))return t.clone();var n="object"==typeof e?e:{};return n.date=t,n.args=arguments,new b(n)},w=D;w.l=S,w.i=y,w.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var b=function(){function v(t){this.$L=S(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=v.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(w.u(e))return new Date;if(e instanceof Date)return new Date(e);if("string"==typeof e&&!/Z$/i.test(e)){var r=e.match(d);if(r){var s=r[2]-1||0,i=(r[7]||"0").substring(0,3);return n?new Date(Date.UTC(r[1],s,r[3]||1,r[4]||0,r[5]||0,r[6]||0,i)):new Date(r[1],s,r[3]||1,r[4]||0,r[5]||0,r[6]||0,i)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return w},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t)({contributors:o.a})},t=(n(348),n(14)),s=Object(t.a)(i,(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/56.d95d6019.js b/assets/js/56.d95d6019.js new file mode 100644 index 000000000..231bd0634 --- /dev/null +++ b/assets/js/56.d95d6019.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[56],{404:function(t,s,a){"use strict";a.r(s);var n=a(14),e=Object(n.a)({},(function(){var t=this,s=t._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"managing-schemas"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#managing-schemas"}},[t._v("#")]),t._v(" Managing schemas")]),t._v(" "),s("p"),s("div",{staticClass:"table-of-contents"},[s("ul",[s("li",[s("a",{attrs:{href:"#re-using-validation-functions"}},[t._v("Re-using validation functions")])]),s("li",[s("a",{attrs:{href:"#standalone-validation-code"}},[t._v("Standalone validation code")])]),s("li",[s("a",{attrs:{href:"#compiling-during-initialization"}},[t._v("Compiling during initialization")])]),s("li",[s("a",{attrs:{href:"#using-ajv-instance-cache"}},[t._v("Using Ajv instance cache")]),s("ul",[s("li",[s("a",{attrs:{href:"#cache-key-schema-vs-key-vs-id"}},[t._v("Cache key: schema vs key vs $id")])]),s("li",[s("a",{attrs:{href:"#pre-adding-all-schemas-vs-adding-on-demand"}},[t._v("Pre-adding all schemas vs adding on demand")])]),s("li",[s("a",{attrs:{href:"#asynchronous-schema-loading"}},[t._v("Asynchronous schema loading")])])])]),s("li",[s("a",{attrs:{href:"#caching-schemas-in-your-code"}},[t._v("Caching schemas in your code")])])])]),s("p"),t._v(" "),s("h2",{attrs:{id:"re-using-validation-functions"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#re-using-validation-functions"}},[t._v("#")]),t._v(" Re-using validation functions")]),t._v(" "),s("p",[t._v("Ajv validation model is optimized for server side execution, when schema compilation happens only once and validation happens multiple times - this has a substantial performance benefit comparing with validators that interpret the schema in the process of validation.")]),t._v(" "),s("p",[t._v("Transition from template-based code generation in Ajv v6 to the tree-based in v7 brought:")]),t._v(" "),s("ul",[s("li",[t._v("type-level safety against code injection via untrusted schemas")]),t._v(" "),s("li",[t._v("more efficient validation code (via "),s("RouterLink",{attrs:{to:"/codegen.html#code-optimization"}},[t._v("tree optimizations")]),t._v(")")],1),t._v(" "),s("li",[t._v("smaller memory footprint of compiled functions (schemas are no longer serialized)")]),t._v(" "),s("li",[t._v("smaller bundle size")]),t._v(" "),s("li",[t._v("more maintainable code")])]),t._v(" "),s("p",[t._v("These improvements cost slower schema compilation, and increased chance of re-compilation in case you pass a different schema object (see "),s("a",{attrs:{href:"https://github.com/ajv-validator/ajv/issues/1413",target:"_blank",rel:"noopener noreferrer"}},[t._v("#1413"),s("OutboundLink")],1),t._v("), so it is very important to manage schemas correctly, so they are only compiled once.")]),t._v(" "),s("p",[t._v("There are several approaches to manage compiled schemas.")]),t._v(" "),s("h2",{attrs:{id:"standalone-validation-code"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#standalone-validation-code"}},[t._v("#")]),t._v(" Standalone validation code")]),t._v(" "),s("p",[t._v("The motivation to pre-compile schemas:")]),t._v(" "),s("ul",[s("li",[t._v("faster startup times")]),t._v(" "),s("li",[t._v("lower memory footprint/bundle size")]),t._v(" "),s("li",[t._v("compatible with strict content security policies")]),t._v(" "),s("li",[t._v("almost no risk to compile schema more than once")]),t._v(" "),s("li",[t._v("better for short-lived environments")])]),t._v(" "),s("p",[t._v("See "),s("a",{attrs:{href:"../standalone"}},[t._v("Standalone validation code")]),t._v(" for the details.")]),t._v(" "),s("p",[t._v("There are scenarios when it can be not possible or difficult:")]),t._v(" "),s("ul",[s("li",[t._v("dynamic or user-provided schemas - while you can do caching, it can be either difficult to implement or inefficient.")]),t._v(" "),s("li",[t._v("user-defined keywords that use closures that are difficult to serialize as code.")])]),t._v(" "),s("h2",{attrs:{id:"compiling-during-initialization"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#compiling-during-initialization"}},[t._v("#")]),t._v(" Compiling during initialization")]),t._v(" "),s("p",[t._v("The simplest approach is to compile all your schemas when the application starts, outside of the code that handles requests. It can be done simply in the module scope:")]),t._v(" "),s("code-group",[s("code-block",{attrs:{title:"JavaScript"}},[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(" schema_user "),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('"./schema_user.json"')]),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 keyword"}},[t._v("const")]),t._v(" validate_user "),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_user"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n\n\n\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// this is just some abstract API framework")]),t._v("\napp"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("post")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[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(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("async")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("cxt")]),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 punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("if")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("validate_user")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("cxt"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("body"),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("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// create user")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("else")]),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("// report error")]),t._v("\n cxt"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("status")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("400")]),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("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),s("code-block",{attrs:{title:"TypeScript"}},[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("import")]),t._v(" Ajv "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("from")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ajv"')]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("import")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("as")]),t._v(" schema_user "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("from")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"./schema_user.json"')]),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 keyword"}},[t._v("const")]),t._v(" validate_user "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" ajv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("compile"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("User"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("schema_user"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("interface")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("User")]),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("username")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" string\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// this is just some abstract API framework")]),t._v("\napp"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("post")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[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(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("async")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("cxt")]),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 punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("if")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("validate_user")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("cxt"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("body"),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("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// create user")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("else")]),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("// report error")]),t._v("\n cxt"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("status")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("400")]),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("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])],1),t._v(" "),s("div",{staticClass:"custom-block warning"},[s("p",{staticClass:"custom-block-title"},[t._v("Use single Ajv instance")]),t._v(" "),s("p",[t._v("It recommended to use a single Ajv instance for the whole application, so if you use validation in more than one module, you should:")]),t._v(" "),s("ul",[s("li",[t._v("require Ajv in a separate module responsible for validation")]),t._v(" "),s("li",[t._v("compile all validators there")]),t._v(" "),s("li",[t._v("export them to be used in multiple modules of your application")])])]),t._v(" "),s("h2",{attrs:{id:"using-ajv-instance-cache"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#using-ajv-instance-cache"}},[t._v("#")]),t._v(" Using Ajv instance cache")]),t._v(" "),s("p",[t._v("Another, more effective approach, is to use Ajv instance cache to have all compiled validators available anywhere in your application from a single import.")]),t._v(" "),s("p",[t._v("In this case you would have a separate module where you instantiate Ajv and use this instance in your application.")]),t._v(" "),s("p",[t._v("You can load all schemas and add them to Ajv instance in a single "),s("code",[t._v("validation")]),t._v(" module:")]),t._v(" "),s("code-group",[s("code-block",{attrs:{title:"validation.js"}},[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(" schema_user "),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('"./schema_user.json"')]),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(" schema_document "),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('"./schema_document.json"')]),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(" exports"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),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("\najv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("addSchema")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("schema_user"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[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("\najv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("addSchema")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("schema_document"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"document"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),s("code-block",{attrs:{title:"validation.ts"}},[s("div",{staticClass:"language-typescript extra-class"},[s("pre",{pre:!0,attrs:{class:"language-typescript"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("import")]),t._v(" Ajv "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("from")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ajv"')]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("import")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("as")]),t._v(" schema_user "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("from")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"./schema_user.json"')]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("import")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("as")]),t._v(" schema_document "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("from")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"./schema_document.json"')]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("export")]),t._v(" "),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("\najv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("addSchema")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("schema_user"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[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("\najv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("addSchema")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("schema_document"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"document"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])],1),t._v(" "),s("p",[t._v("And then you can import Ajv instance and access any schema in any application module, for example "),s("code",[t._v("user")]),t._v(" module:")]),t._v(" "),s("code-group",[s("code-block",{attrs:{title:"user.js"}},[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(" "),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 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('"./validation"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n\n\n\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// this is just some abstract API framework")]),t._v("\napp"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("post")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[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(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("async")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("cxt")]),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 punctuation"}},[t._v("{")]),t._v("\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("getSchema")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[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 keyword"}},[t._v("if")]),t._v(" "),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("cxt"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("body"),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("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// create user")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("else")]),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("// report error")]),t._v("\n cxt"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("status")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("400")]),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("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),s("code-block",{attrs:{title:"users.ts"}},[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("import")]),t._v(" ajv "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("from")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"./validation"')]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("interface")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("User")]),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("username")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" string\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// this is just some abstract API framework")]),t._v("\napp"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("post")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[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(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("async")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("cxt")]),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 punctuation"}},[t._v("{")]),t._v("\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(".")]),t._v("getSchema"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("User"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[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 keyword"}},[t._v("if")]),t._v(" "),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("cxt"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("body"),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("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// create user")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("else")]),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("// report error")]),t._v("\n cxt"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("status")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("400")]),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("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])],1),t._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[t._v("On-demand vs preliminary compilation")]),t._v(" "),s("p",[t._v("In the example above, schema compilation happens only once, on the first API call, not at the application start-up time. It means that the application would start a bit faster, but the first API call would be a bit slower. If this is undesirable, you could, for example, call "),s("code",[t._v("getSchema")]),t._v(" for all added schemas after they are added, then when "),s("code",[t._v("getSchema")]),t._v(" is called inside route handler it would simply get compiled validation function from the instance cache.")])]),t._v(" "),s("h3",{attrs:{id:"cache-key-schema-vs-key-vs-id"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cache-key-schema-vs-key-vs-id"}},[t._v("#")]),t._v(" Cache key: schema vs key vs $id")]),t._v(" "),s("p",[t._v("In the example above, the key passed to the "),s("code",[t._v("addSchema")]),t._v(" method was used to retrieve schemas from the cache. Other options are:")]),t._v(" "),s("ul",[s("li",[t._v("use schema root $id attribute. While it usually looks like URI, it does not mean Ajv downloads it from this URI - this is simply $id used to identify and access the schema. You can though configure Ajv to download schemas on demand - see "),s("a",{attrs:{href:"#asynchronous-schema-loading"}},[t._v("Asynchronous schema loading")])]),t._v(" "),s("li",[t._v("use schema object itself as a key to the cache (it is possible, because Ajv uses Map). This approach is not recommended, because it would only work if you pass the same instance of the schema object that was passed to "),s("code",[t._v("addSchema")]),t._v(" method - it is easy to make a mistake that would result in schema being compiled every time it is used.")])]),t._v(" "),s("h3",{attrs:{id:"pre-adding-all-schemas-vs-adding-on-demand"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#pre-adding-all-schemas-vs-adding-on-demand"}},[t._v("#")]),t._v(" Pre-adding all schemas vs adding on demand")]),t._v(" "),s("p",[t._v("In the example above all schemas were added in advance. It is also possible, to add schemas as they are used - it can be helpful if there are many schemas. In this case, you need to check first whether the schema is already added by calling "),s("code",[t._v("getSchema")]),t._v(" method - it would return "),s("code",[t._v("undefined")]),t._v(" if not:")]),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_user "),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('"./schema_user.json"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("let")]),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("getSchema")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[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 keyword"}},[t._v("if")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("validate"),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 ajv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("addSchema")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("schema_user"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[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 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("getSchema")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[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("}")]),t._v("\n")])])]),s("p",[t._v("If your schema has "),s("code",[t._v("$id")]),t._v(" attribute, for example:")]),t._v(" "),s("code-group",[s("code-block",{attrs:{title:"schema_user.json"}},[s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token 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('"https://example.com/user.json"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token 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 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 property"}},[t._v('"username"')]),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 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 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('"username"')]),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")])])])])],1),t._v(" "),s("p",[t._v("then the above logic can be simpler:")]),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_user "),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('"./schema_user.json"')]),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(" 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("getSchema")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://example.com/user.json"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),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_user"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("p",[t._v("The above is possible because when the schema has "),s("code",[t._v("$id")]),t._v(" attribute "),s("code",[t._v("compile")]),t._v(" method both compiles the schema (returning the validation function) and adds it to the Ajv instance cache at the same time.")]),t._v(" "),s("h3",{attrs:{id:"asynchronous-schema-loading"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#asynchronous-schema-loading"}},[t._v("#")]),t._v(" Asynchronous schema loading")]),t._v(" "),s("p",[t._v("There are cases when you need to have a large collection of schemas stored in some database or on the remote server. In this case you are likely to use schema "),s("code",[t._v("$id")]),t._v(" as some resource identifier to retrieve it - either network URI or database ID.")]),t._v(" "),s("p",[t._v("You can use "),s("code",[t._v("compileAsync")]),t._v(" "),s("RouterLink",{attrs:{to:"/guide/api.html#api-compileAsync"}},[t._v("method")]),t._v(" to asynchronously load the schemas as they are compiled, loading the schemas that are referenced from compiled schemas on demand. Ajv itself does not do any IO operations, it uses the function you supply via "),s("code",[t._v("loadSchema")]),t._v(" "),s("RouterLink",{attrs:{to:"/guide/api.html#options"}},[t._v("option")]),t._v(" to load schema from the passed ID. This function should return "),s("code",[t._v("Promise")]),t._v(" that resolves to the schema (you can use async function, as in the example).")],1),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(" 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("loadSchema")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" loadSchema"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),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("compileAsync")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("schema"),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 function"}},[t._v("then")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[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 parameter"}},[t._v("validate")]),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(" valid "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),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("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[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\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("async")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("loadSchema")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("uri")]),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(" res "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" request"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("json")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("uri"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("if")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("res"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("statusCode "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("400")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("throw")]),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("Error")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Loading error: "')]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("+")]),t._v(" res"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("statusCode"),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(" res"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("body\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h2",{attrs:{id:"caching-schemas-in-your-code"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#caching-schemas-in-your-code"}},[t._v("#")]),t._v(" Caching schemas in your code")]),t._v(" "),s("p",[t._v("You can maintain cache of compiled schemas in your application independently from Ajv. It can be helpful in cases when you have multiple Ajv instances because, for example:")]),t._v(" "),s("ul",[s("li",[t._v("you need to compile different schemas with different options")]),t._v(" "),s("li",[t._v("you use both JSON Schema and JSON Type Definition schemas in one application")]),t._v(" "),s("li",[t._v("you have $id conflicts between different third party schemas you do not control")])]),t._v(" "),s("p",[t._v("Whatever approach you use, you need to ensure that each schema is compiled only once.")])],1)}),[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file diff --git a/assets/js/57.f1b751c1.js b/assets/js/57.f1b751c1.js new file mode 100644 index 000000000..475207898 --- /dev/null +++ b/assets/js/57.f1b751c1.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[57],{405:function(t,a,s){"use strict";s.r(a);var e=s(14),r=Object(e.a)({},(function(){var t=this,a=t._self._c;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"modifying-data-during-validation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#modifying-data-during-validation"}},[t._v("#")]),t._v(" Modifying data during validation")]),t._v(" "),a("p"),a("div",{staticClass:"table-of-contents"},[a("ul",[a("li",[a("a",{attrs:{href:"#general-considerations"}},[t._v("General considerations")])]),a("li",[a("a",{attrs:{href:"#removing-additional-properties"}},[t._v("Removing additional properties")])]),a("li",[a("a",{attrs:{href:"#assigning-defaults"}},[t._v("Assigning defaults")])]),a("li",[a("a",{attrs:{href:"#coercing-data-types"}},[t._v("Coercing data types")])])])]),a("p"),t._v(" "),a("h2",{attrs:{id:"general-considerations"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#general-considerations"}},[t._v("#")]),t._v(" General considerations")]),t._v(" "),a("p",[t._v("Ajv has several options that allow to modify data during validation:")]),t._v(" "),a("ul",[a("li",[t._v("removeAdditional - to remove properties not defined in the schema object.")]),t._v(" "),a("li",[t._v("useDefaults - to assign defaults from the schema to the validated data properties.")]),t._v(" "),a("li",[t._v("coerceTypes - to change data type, when possible, to match the type(s) in the schema.")])]),t._v(" "),a("p",[t._v("You can also define keywords that modify data.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("NOT possible to modify root data")]),t._v(" "),a("p",[t._v("It is not possible to modify the root data instance passed to the validation function, only data properties can be modified. This is related to how JavaScript passes parameters, and not a limitation of Ajv.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("Non-portable functionality")]),t._v(" "),a("p",[t._v("This functionality is non-standard - this is likely to be unsupported in other JSON Schema validator implementations.")])]),t._v(" "),a("div",{staticClass:"custom-block danger"},[a("p",{staticClass:"custom-block-title"},[t._v("Unexpected results when modifying data")]),t._v(" "),a("p",[t._v("While pure schema validation produces the results independent of the keywords and subschema order, enabling any feature that may modify the data makes validation impure and its results are likely to depend on the order of evaluation of keywords and subschemas.")]),t._v(" "),a("p",[t._v("The order of evaluation of subschemas in keywords like "),a("code",[t._v("allOf")]),t._v(" is always the same as the order of subschemas in the array.")]),t._v(" "),a("p",[t._v("On another hand, the order of evaluation of keywords, while consistent between validations and not dependent on how schema object is created, is neither documented nor guaranteed, so it can change in the future major versions (and, in rare cases, it can change in minor version - e.g. when there is bug that needs to be fixed).")]),t._v(" "),a("p",[t._v("It is strongly recommended to always put user-defined keywords that can mutate data in separate subschemas inside "),a("code",[t._v("allOf")]),t._v(" keyword to make the order of evaluation unambiguous. The exceptions to this recommendation are pre-defined "),a("code",[t._v("default")]),t._v(" and "),a("code",[t._v("type")]),t._v(" keywords - they must remain in the same schema as other keywords.")])]),t._v(" "),a("h2",{attrs:{id:"removing-additional-properties"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#removing-additional-properties"}},[t._v("#")]),t._v(" Removing additional properties")]),t._v(" "),a("p",[t._v("With "),a("RouterLink",{attrs:{to:"/guide/api.html#options"}},[t._v("option "),a("code",[t._v("removeAdditional")])]),t._v(" (added by "),a("a",{attrs:{href:"https://github.com/andyscott",target:"_blank",rel:"noopener noreferrer"}},[t._v("andyscott"),a("OutboundLink")],1),t._v(") you can filter data during the validation.")],1),t._v(" "),a("p",[t._v("This option modifies original data.")]),t._v(" "),a("p",[t._v("Example:")]),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("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("removeAdditional")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),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(" schema "),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("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 literal-property property"}},[t._v("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 "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[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("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[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(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("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("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("additionalProperties")]),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 literal-property property"}},[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(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("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 "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("baz")]),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 literal-property property"}},[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("}")]),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("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(" data "),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("foo")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),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("additional1")]),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(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// will be removed; `additionalProperties` == false")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("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("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("baz")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"abc"')]),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("additional2")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// will NOT be removed; `additionalProperties` != false")]),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("}")]),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 function"}},[t._v("compile")]),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\nconsole"),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("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 comment"}},[t._v("// true")]),t._v("\nconsole"),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(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v('// { "foo": 0, "bar": { "baz": "abc", "additional2": 2 }')]),t._v("\n")])])]),a("p",[t._v("If "),a("code",[t._v("removeAdditional")]),t._v(" option in the example above were "),a("code",[t._v('"all"')]),t._v(" then both "),a("code",[t._v("additional1")]),t._v(" and "),a("code",[t._v("additional2")]),t._v(" properties would have been removed.")]),t._v(" "),a("p",[t._v("If the option were "),a("code",[t._v('"failing"')]),t._v(" then property "),a("code",[t._v("additional1")]),t._v(" would have been removed regardless of its value and property "),a("code",[t._v("additional2")]),t._v(" would have been removed only if its value were failing the schema in the inner "),a("code",[t._v("additionalProperties")]),t._v(" (so in the example above it would have stayed because it passes the schema, but any non-number would have been removed).")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("Unexpected results when using removeAdditional with anyOf/oneOf")]),t._v(" "),a("p",[t._v("If you use "),a("code",[t._v("removeAdditional")]),t._v(" option with "),a("code",[t._v("additionalProperties")]),t._v(" keyword inside "),a("code",[t._v("anyOf")]),t._v("/"),a("code",[t._v("oneOf")]),t._v(" keywords your validation can fail with this schema. To make it work as you expect, you have to use discriminated union with "),a("RouterLink",{attrs:{to:"/json-schema.html#discriminator"}},[t._v("discriminator")]),t._v(" keyword (requires "),a("code",[t._v("discriminator")]),t._v(" option).")],1)]),t._v(" "),a("p",[t._v("For example, with this non-discriminated union you will have unexpected results:")]),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 punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[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('"object"')]),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("oneOf")]),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 punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("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 "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[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("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[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("}")]),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("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 "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("additionalProperties")]),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("\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("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("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 "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("bar")]),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 literal-property property"}},[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('"integer"')]),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 literal-property property"}},[t._v("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('"bar"')]),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("additionalProperties")]),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("\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('The intention of the schema above is to allow objects with either the string property "foo" or the integer property "bar", but not with both and not with any other properties.')]),t._v(" "),a("p",[t._v("With the option "),a("code",[t._v("removeAdditional: true")]),t._v(" the validation will pass for the object "),a("code",[t._v('{ "foo": "abc"}')]),t._v(" but will fail for the object "),a("code",[t._v('{"bar": 1}')]),t._v(". It happens because while the first subschema in "),a("code",[t._v("oneOf")]),t._v(" is validated, the property "),a("code",[t._v("bar")]),t._v(" is removed because it is an additional property according to the standard (because it is not included in "),a("code",[t._v("properties")]),t._v(" keyword in the same schema).")]),t._v(" "),a("p",[t._v("While this behaviour is unexpected (issues "),a("a",{attrs:{href:"https://github.com/ajv-validator/ajv/issues/129",target:"_blank",rel:"noopener noreferrer"}},[t._v("#129"),a("OutboundLink")],1),t._v(", "),a("a",{attrs:{href:"https://github.com/ajv-validator/ajv/issues/134",target:"_blank",rel:"noopener noreferrer"}},[t._v("#134"),a("OutboundLink")],1),t._v("), it is correct. To have the expected behaviour (both objects are allowed and additional properties are removed) the schema has to be refactored in this way:")]),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 punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[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('"object"')]),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("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 "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[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("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[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("}")]),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("bar")]),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 literal-property property"}},[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('"integer"')]),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 literal-property property"}},[t._v("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 literal-property property"}},[t._v("oneOf")]),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 punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("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("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("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('"bar"')]),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"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[t._v("The schema above is also more efficient - it will compile into a faster function.")]),t._v(" "),a("p",[t._v("For discriminated unions you could schemas with "),a("RouterLink",{attrs:{to:"/json-schema.html#discriminator"}},[t._v("discriminator")]),t._v(" keyword (it requires "),a("code",[t._v("discriminator: true")]),t._v(" option):")],1),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 punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[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('"object"')]),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("discriminator")]),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 literal-property property"}},[t._v("propertyName")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"tag"')]),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("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('"tag"')]),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("oneOf")]),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 punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("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 "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("tag")]),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 keyword"}},[t._v("const")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),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 "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[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("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[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("}")]),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("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 "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("additionalProperties")]),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("\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("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("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 "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("tag")]),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 keyword"}},[t._v("const")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"bar"')]),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("bar")]),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 literal-property property"}},[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('"integer"')]),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 literal-property property"}},[t._v("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('"bar"')]),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("additionalProperties")]),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("\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("With this schema, only one subschema in "),a("code",[t._v("oneOf")]),t._v(" will be evaluated, so "),a("code",[t._v("removeAdditional")]),t._v(" option will work as expected.")]),t._v(" "),a("p",[t._v("See "),a("RouterLink",{attrs:{to:"/json-schema.html#discriminator"}},[t._v("discriminator")]),t._v(" keyword.")],1),t._v(" "),a("h2",{attrs:{id:"assigning-defaults"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#assigning-defaults"}},[t._v("#")]),t._v(" Assigning defaults")]),t._v(" "),a("p",[t._v("With "),a("RouterLink",{attrs:{to:"/guide/options.html#options"}},[t._v("option "),a("code",[t._v("useDefaults")])]),t._v(" Ajv will assign values from "),a("code",[t._v("default")]),t._v(" keyword in the schemas of "),a("code",[t._v("properties")]),t._v(" and "),a("code",[t._v("items")]),t._v(" (when it is the array of schemas) to the missing properties and items.")],1),t._v(" "),a("p",[t._v("With the option value "),a("code",[t._v('"empty"')]),t._v(" properties and items equal to "),a("code",[t._v("null")]),t._v(" or "),a("code",[t._v('""')]),t._v(" (empty string) will be considered missing and assigned defaults.")]),t._v(" "),a("p",[t._v("This option modifies original data.")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("Defaults are deep-cloned")]),t._v(" "),a("p",[t._v("The default value is inserted in the generated validation code as a literal, so the value inserted in the data will be the deep clone of the default in the schema.")])]),t._v(" "),a("p",[t._v("Example 1 ("),a("code",[t._v("default")]),t._v(" in "),a("code",[t._v("properties")]),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(" 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("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("useDefaults")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),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(" schema "),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("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 "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("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 "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[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("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[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(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("bar")]),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 literal-property property"}},[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(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("default")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"baz"')]),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 literal-property property"}},[t._v("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(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"bar"')]),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("}")]),t._v("\n\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 punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[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\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 function"}},[t._v("compile")]),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\nconsole"),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("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 comment"}},[t._v("// true")]),t._v("\nconsole"),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(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v('// { "foo": 1, "bar": "baz" }')]),t._v("\n")])])]),a("p",[t._v("Example 2 ("),a("code",[t._v("default")]),t._v(" in "),a("code",[t._v("items")]),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(" schema "),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("type")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"array"')]),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("items")]),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 punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[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(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[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(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("default")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),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("]")]),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(" data "),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 number"}},[t._v("1")]),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 function"}},[t._v("compile")]),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\nconsole"),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("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 comment"}},[t._v("// true")]),t._v("\nconsole"),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(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v('// [ 1, "foo" ]')]),t._v("\n")])])]),a("p",[t._v("With "),a("code",[t._v("useDefaults")]),t._v(" option "),a("code",[t._v("default")]),t._v(" keywords throws exception during schema compilation when used in:")]),t._v(" "),a("ul",[a("li",[t._v("not in "),a("code",[t._v("properties")]),t._v(" or "),a("code",[t._v("items")]),t._v(" subschemas")]),t._v(" "),a("li",[t._v("in schemas inside "),a("code",[t._v("anyOf")]),t._v(", "),a("code",[t._v("oneOf")]),t._v(" and "),a("code",[t._v("not")]),t._v(" (see "),a("a",{attrs:{href:"https://github.com/ajv-validator/ajv/issues/42",target:"_blank",rel:"noopener noreferrer"}},[t._v("#42"),a("OutboundLink")],1),t._v(")")]),t._v(" "),a("li",[t._v("in "),a("code",[t._v("if")]),t._v(" schema")]),t._v(" "),a("li",[t._v("in schemas generated by user-defined "),a("em",[t._v("macro")]),t._v(" keywords")])]),t._v(" "),a("p",[t._v("The strict mode option can change the behaviour for these unsupported defaults ("),a("code",[t._v("strict: false")]),t._v(" to ignore them, "),a("code",[t._v('"log"')]),t._v(" to log a warning).")]),t._v(" "),a("p",[t._v("See "),a("RouterLink",{attrs:{to:"/strict-mode.html"}},[t._v("Strict mode")]),t._v(".")],1),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("Default with discriminator keyword")]),t._v(" "),a("p",[t._v("Defaults will be assigned in schemas inside "),a("code",[t._v("oneOf")]),t._v(" in case "),a("RouterLink",{attrs:{to:"/json-schema.html#discriminator"}},[t._v("discriminator")]),t._v(" keyword is used.")],1)]),t._v(" "),a("h2",{attrs:{id:"coercing-data-types"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#coercing-data-types"}},[t._v("#")]),t._v(" Coercing data types")]),t._v(" "),a("p",[t._v("When you are validating user inputs all your data properties are usually strings. The option "),a("code",[t._v("coerceTypes")]),t._v(" allows you to have your data types coerced to the types specified in your schema "),a("code",[t._v("type")]),t._v(" keywords, both to pass the validation and to use the correctly typed data afterwards.")]),t._v(" "),a("p",[t._v("This option modifies original data.")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("Type coercion with scalar values")]),t._v(" "),a("p",[t._v("If you pass a scalar value to the validating function its type will be coerced and it will pass the validation, but the value of the variable you pass won't be updated because scalars are passed by value.")])]),t._v(" "),a("p",[t._v("Example 1:")]),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("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("coerceTypes")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),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(" schema "),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("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 "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("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 "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[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("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[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(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("bar")]),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 literal-property property"}},[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('"boolean"')]),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 literal-property property"}},[t._v("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(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"bar"')]),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("}")]),t._v("\n\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 punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("foo")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("bar")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"false"')]),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 function"}},[t._v("compile")]),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\nconsole"),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("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 comment"}},[t._v("// true")]),t._v("\nconsole"),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(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v('// { "foo": 1, "bar": false }')]),t._v("\n")])])]),a("p",[t._v("Example 2 (array coercions):")]),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("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("coerceTypes")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"array"')]),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(" schema "),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("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 "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[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("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[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('"array"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("items")]),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 literal-property property"}},[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 "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("bar")]),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 literal-property property"}},[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('"boolean"')]),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("}")]),t._v("\n\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 punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("foo")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("bar")]),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('"false"')]),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("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 function"}},[t._v("compile")]),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\nconsole"),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("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 comment"}},[t._v("// true")]),t._v("\nconsole"),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(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v('// { "foo": [1], "bar": false }')]),t._v("\n")])])]),a("p",[t._v('The coercion rules, as you can see from the example, are different from JavaScript both to validate user input as expected and to have the coercion reversible (to correctly validate cases where different types are defined in subschemas of "anyOf" and other compound keywords).')]),t._v(" "),a("p",[t._v("See "),a("RouterLink",{attrs:{to:"/coercion.html"}},[t._v("Type coercion rules")]),t._v(" for details.")],1)])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/83.e5ae71e1.js b/assets/js/83.e5ae71e1.js new file mode 100644 index 000000000..dca9c0ddd --- /dev/null +++ b/assets/js/83.e5ae71e1.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[83],{430:function(t,a,s){"use strict";s.r(a);var e=s(14),r=Object(e.a)({},(function(){var t=this,a=t._self._c;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"strict-mode"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#strict-mode"}},[t._v("#")]),t._v(" Strict mode")]),t._v(" "),a("p",[t._v("Strict mode intends to prevent any unexpected behaviours or silently ignored mistakes in user schemas. It does not change any validation results compared with the specification, but it makes some schemas invalid and throws exception or logs warning (with "),a("code",[t._v('strict: "log"')]),t._v(" option) in case any restriction is violated.")]),t._v(" "),a("p",[t._v("To disable all strict mode restrictions use option "),a("code",[t._v("strict: false")]),t._v(". Some of the restrictions can be changed with their own options")]),t._v(" "),a("p"),a("div",{staticClass:"table-of-contents"},[a("ul",[a("li",[a("a",{attrs:{href:"#json-type-definition-schemas"}},[t._v("JSON Type Definition schemas")])]),a("li",[a("a",{attrs:{href:"#json-schema-schemas"}},[t._v("JSON Schema schemas")]),a("ul",[a("li",[a("a",{attrs:{href:"#prohibit-ignored-keywords"}},[t._v("Prohibit ignored keywords "),a("Badge",{attrs:{text:"strictSchema option"}})],1),a("ul",[a("li",[a("a",{attrs:{href:"#unknown-keywords"}},[t._v("Unknown keywords")])]),a("li",[a("a",{attrs:{href:"#ignored-additionalitems-keyword"}},[t._v('Ignored "additionalItems" keyword')])]),a("li",[a("a",{attrs:{href:"#ignored-if-then-else-keywords"}},[t._v('Ignored "if", "then", "else" keywords')])]),a("li",[a("a",{attrs:{href:"#ignored-contains-maxcontains-and-mincontains-keywords"}},[t._v('Ignored "contains", "maxContains" and "minContains" keywords')])]),a("li",[a("a",{attrs:{href:"#unknown-formats"}},[t._v("Unknown formats")])]),a("li",[a("a",{attrs:{href:"#ignored-defaults"}},[t._v("Ignored defaults")])])])]),a("li",[a("a",{attrs:{href:"#prevent-unexpected-validation"}},[t._v("Prevent unexpected validation")]),a("ul",[a("li",[a("a",{attrs:{href:"#overlap-between-properties-and-patternproperties-keywords"}},[t._v('Overlap between "properties" and "patternProperties" keywords '),a("Badge",{attrs:{text:"allowMatchingProperties option"}})],1)]),a("li",[a("a",{attrs:{href:"#defined-required-properties"}},[t._v("Defined required properties "),a("Badge",{attrs:{text:"strictRequired option"}})],1)]),a("li",[a("a",{attrs:{href:"#unconstrained-tuples"}},[t._v("Unconstrained tuples "),a("Badge",{attrs:{text:"strictTuples option"}})],1)])])]),a("li",[a("a",{attrs:{href:"#strict-types"}},[t._v("Strict types "),a("Badge",{attrs:{text:"strictTypes option"}})],1),a("ul",[a("li",[a("a",{attrs:{href:"#union-types"}},[t._v("Union types "),a("Badge",{attrs:{text:"allowUnionTypes option"}})],1)]),a("li",[a("a",{attrs:{href:"#contradictory-types"}},[t._v("Contradictory types")])]),a("li",[a("a",{attrs:{href:"#require-applicable-types"}},[t._v("Require applicable types")])])])]),a("li",[a("a",{attrs:{href:"#strict-number-validation"}},[t._v("Strict number validation "),a("Badge",{attrs:{text:"strictNumbers option"}})],1)])])])])]),a("p"),t._v(" "),a("h2",{attrs:{id:"json-type-definition-schemas"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#json-type-definition-schemas"}},[t._v("#")]),t._v(" JSON Type Definition schemas")]),t._v(" "),a("p",[t._v("JTD specification is strict - whether Ajv strict mode is enabled or not it will not allow schemas with ignored or ambiguous elements, including:")]),t._v(" "),a("ul",[a("li",[t._v("unknown schema keywords")]),t._v(" "),a("li",[t._v("combining multiple schema forms in one schema")]),t._v(" "),a("li",[t._v("defining the same property as both required and optional")]),t._v(" "),a("li",[t._v("re-defining discriminator tag inside properties, even if the definition is non-contradictory")])]),t._v(" "),a("p",[t._v("See "),a("RouterLink",{attrs:{to:"/json-type-definition.html"}},[t._v("JSON Type Definition")]),t._v(" for informal and "),a("a",{attrs:{href:"https://datatracker.ietf.org/doc/rfc8927/",target:"_blank",rel:"noopener noreferrer"}},[t._v("RFC8927"),a("OutboundLink")],1),t._v(" for formal specification descriptions.")],1),t._v(" "),a("p",[t._v("The only change that strict mode introduces to JTD schemas, without changing their syntax or semantics, is the requirement that all members that are present in optional "),a("code",[t._v("metadata")]),t._v(" members are defined as Ajv keywords. This restriction can be disabled with "),a("code",[t._v("strict: false")]),t._v(" option, without any impact to other JTD features.")]),t._v(" "),a("h2",{attrs:{id:"json-schema-schemas"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#json-schema-schemas"}},[t._v("#")]),t._v(" JSON Schema schemas")]),t._v(" "),a("p",[t._v("JSON Schema specification is very permissive and allows many elements in the schema to be quietly ignored or be ambiguous. It is recommended to use JSON Schema with strict mode.")]),t._v(" "),a("p",[t._v("Option "),a("code",[t._v("strict")]),t._v(" with value "),a("code",[t._v("true")]),t._v("/"),a("code",[t._v("false")]),t._v("/"),a("code",[t._v('"log"')]),t._v(" can be used to set all strict mode restriction to be the same, otherwise individual strict mode options can be used. See "),a("RouterLink",{attrs:{to:"/options.html#strict-mode-options"}},[t._v("Strict mode options")]),t._v(".")],1),t._v(" "),a("h3",{attrs:{id:"prohibit-ignored-keywords"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#prohibit-ignored-keywords"}},[t._v("#")]),t._v(" Prohibit ignored keywords "),a("Badge",{attrs:{text:"strictSchema option"}})],1),t._v(" "),a("h4",{attrs:{id:"unknown-keywords"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#unknown-keywords"}},[t._v("#")]),t._v(" Unknown keywords")]),t._v(" "),a("p",[t._v("JSON Schema "),a("a",{attrs:{href:"https://tools.ietf.org/html/draft-handrews-json-schema-02#section-6.5",target:"_blank",rel:"noopener noreferrer"}},[t._v("section 6.5"),a("OutboundLink")],1),t._v(" requires to ignore unknown keywords. The motivation is to increase cross-platform portability of schemas, so that implementations that do not support certain keywords can still do partial validation.")]),t._v(" "),a("p",[t._v("The problems with this approach are:")]),t._v(" "),a("ul",[a("li",[t._v("Different validation results with the same schema and data, leading to bugs and inconsistent behaviours.")]),t._v(" "),a("li",[t._v("Typos in keywords resulting in keywords being quietly ignored, requiring extensive test coverage of schemas to avoid these mistakes.")])]),t._v(" "),a("p",[t._v("By default Ajv fails schema compilation when unknown keywords are used. Users can explicitly define the keywords that should be allowed and ignored:")]),t._v(" "),a("div",{staticClass:"language-javascript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-javascript"}},[a("code",[t._v("ajv"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addKeyword")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"allowedKeyword"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("p",[t._v("or use the convenience method "),a("code",[t._v("addVocabulary")]),t._v(" for multiple keywords")]),t._v(" "),a("div",{staticClass:"language-javascript extra-class"},[a("pre",{pre:!0,attrs:{class:"language-javascript"}},[a("code",[t._v("ajv"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addVocabulary")]),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 string"}},[t._v('"allowed1"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"allowed2"')]),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("// simply calls addKeyword multiple times")]),t._v("\n")])])]),a("h4",{attrs:{id:"ignored-additionalitems-keyword"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ignored-additionalitems-keyword"}},[t._v("#")]),t._v(' Ignored "additionalItems" keyword')]),t._v(" "),a("p",[t._v("JSON Schema section "),a("a",{attrs:{href:"https://tools.ietf.org/html/draft-handrews-json-schema-02#section-9.3.1.2",target:"_blank",rel:"noopener noreferrer"}},[t._v("9.3.1.2"),a("OutboundLink")],1),t._v(' requires to ignore "additionalItems" keyword if "items" keyword is absent or if it is not an array of items. This is inconsistent with the interaction of "additionalProperties" and "properties", and may cause unexpected results.')]),t._v(" "),a("p",[t._v('By default Ajv fails schema compilation when "additionalItems" is used without "items" (or if "items" is not an array).')]),t._v(" "),a("h4",{attrs:{id:"ignored-if-then-else-keywords"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ignored-if-then-else-keywords"}},[t._v("#")]),t._v(' Ignored "if", "then", "else" keywords')]),t._v(" "),a("p",[t._v("JSON Schema section "),a("a",{attrs:{href:"https://tools.ietf.org/html/draft-handrews-json-schema-02#section-9.2.2",target:"_blank",rel:"noopener noreferrer"}},[t._v("9.2.2"),a("OutboundLink")],1),t._v(' requires to ignore "if" (only annotations are collected) if both "then" and "else" are absent, and ignore "then"/"else" if "if" is absent.')]),t._v(" "),a("p",[t._v("By default Ajv fails schema compilation in these cases.")]),t._v(" "),a("h4",{attrs:{id:"ignored-contains-maxcontains-and-mincontains-keywords"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ignored-contains-maxcontains-and-mincontains-keywords"}},[t._v("#")]),t._v(' Ignored "contains", "maxContains" and "minContains" keywords')]),t._v(" "),a("p",[t._v("JSON Schema sections "),a("a",{attrs:{href:"https://json-schema.org/draft/2019-09/json-schema-validation.html#rfc.section.6.4.4",target:"_blank",rel:"noopener noreferrer"}},[t._v("6.4.4, 6.4.5"),a("OutboundLink")],1),t._v(' require to ignore keywords "maxContains" and "minContains" if "contains" keyword is absent.')]),t._v(" "),a("p",[t._v('It is also implied that when "minContains" is 0 and "maxContains" is absent, "contains" keyword is always valid.')]),t._v(" "),a("p",[t._v("By default Ajv fails schema compilation in these cases.")]),t._v(" "),a("h4",{attrs:{id:"unknown-formats"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#unknown-formats"}},[t._v("#")]),t._v(" Unknown formats")]),t._v(" "),a("p",[t._v("By default unknown formats throw exception during schema compilation (and fail validation in case format keyword value is "),a("RouterLink",{attrs:{to:"/guide/combining-schemas.html#data-reference"}},[t._v("$data reference")]),t._v("). It is possible to opt out of format validation completely with options "),a("code",[t._v("validateFormats: false")]),t._v(". You can define all known formats with "),a("code",[t._v("addFormat")]),t._v(" method or "),a("code",[t._v("formats")]),t._v(" option - to have some format ignored pass "),a("code",[t._v("true")]),t._v(" as its definition:")],1),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("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("formats")]),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("reserved")]),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("\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("p",[t._v("Standard JSON Schema formats are provided in "),a("a",{attrs:{href:"https://github.com/ajv-validator/ajv-formats",target:"_blank",rel:"noopener noreferrer"}},[t._v("ajv-formats"),a("OutboundLink")],1),t._v(" package - see "),a("a",{attrs:{href:"./guide/formats"}},[t._v("Formats")]),t._v(" section.")]),t._v(" "),a("h4",{attrs:{id:"ignored-defaults"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ignored-defaults"}},[t._v("#")]),t._v(" Ignored defaults")]),t._v(" "),a("p",[t._v("With "),a("code",[t._v("useDefaults")]),t._v(" option Ajv modifies validated data by assigning defaults from the schema, but there are different limitations when the defaults can be ignored (see "),a("RouterLink",{attrs:{to:"/guide/modifying-data.html#assigning-defaults"}},[t._v("Assigning defaults")]),t._v("). In strict mode Ajv fails schema compilation if such defaults are used in the schema.")],1),t._v(" "),a("h3",{attrs:{id:"prevent-unexpected-validation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#prevent-unexpected-validation"}},[t._v("#")]),t._v(" Prevent unexpected validation")]),t._v(" "),a("h4",{attrs:{id:"overlap-between-properties-and-patternproperties-keywords"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#overlap-between-properties-and-patternproperties-keywords"}},[t._v("#")]),t._v(' Overlap between "properties" and "patternProperties" keywords '),a("Badge",{attrs:{text:"allowMatchingProperties option"}})],1),t._v(" "),a("p",[t._v('The expectation of users (see #196, #286) is that "patternProperties" only apply to properties not already defined in "properties" keyword, but JSON Schema section '),a("a",{attrs:{href:"https://tools.ietf.org/html/draft-handrews-json-schema-02#section-9.3.2",target:"_blank",rel:"noopener noreferrer"}},[t._v("9.3.2"),a("OutboundLink")],1),t._v(' defines these two keywords as independent. It means that to some properties two subschemas can be applied - one defined in "properties" keyword and another defined in "patternProperties" for the pattern matching this property.')]),t._v(" "),a("p",[t._v('By default Ajv fails schema compilation if a pattern in "patternProperties" matches a property in "properties" in the same schema.')]),t._v(" "),a("p",[t._v("In addition to allowing such patterns by using option "),a("code",[t._v("strict: false")]),t._v(" or "),a("code",[t._v("strictSchema: false")]),t._v(", there is an option "),a("code",[t._v("allowMatchingProperties: true")]),t._v(" to only allow this case without disabling other strict mode restrictions - there are some rare cases when this is necessary.")]),t._v(" "),a("p",[t._v("To reiterate, neither this nor other strict mode restrictions change the validation results - they only restrict which schemas are valid.")]),t._v(" "),a("h4",{attrs:{id:"defined-required-properties"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#defined-required-properties"}},[t._v("#")]),t._v(" Defined required properties "),a("Badge",{attrs:{text:"strictRequired option"}})],1),t._v(" "),a("p",[t._v("With option "),a("code",[t._v("strictRequired")]),t._v(" set to "),a("code",[t._v('"log"')]),t._v(" or "),a("code",[t._v("true")]),t._v(' Ajv logs warning or throws exception if the property used in "required" keyword is not defined in "properties" keyword in the same or some parent schema relating to the same object (data instance).')]),t._v(" "),a("p",[t._v("By default this option is disabled.")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("Property defined in parent schema")]),t._v(" "),a("p",[t._v("There are cases when property defined in the parent schema will not be taken into account.")])]),t._v(" "),a("h4",{attrs:{id:"unconstrained-tuples"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#unconstrained-tuples"}},[t._v("#")]),t._v(" Unconstrained tuples "),a("Badge",{attrs:{text:"strictTuples option"}})],1),t._v(" "),a("p",[t._v('Ajv also logs a warning if "items" is an array (for schema that defines a tuple) but neither "minItems" nor "additionalItems"/"maxItems" keyword is present (or have a wrong value):')]),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 punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[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('"array"')]),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("items")]),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 punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[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(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[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('"boolean"')]),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("}")]),t._v("\n")])])]),a("p",[t._v('The above schema may have a mistake, as tuples usually are expected to have a fixed size. To "fix" it:')]),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 punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[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('"array"')]),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("items")]),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 punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[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(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[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('"boolean"')]),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 "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("minItems")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),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("additionalItems")]),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("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// or")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// maxItems: 2")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[t._v("Sometimes users accidentally create schema for unit (a tuple with one item) that only validates the first item, this restriction prevents this mistake as well.")]),t._v(" "),a("p",[t._v("Use "),a("code",[t._v("strictTuples")]),t._v(" option to suppress this warning ("),a("code",[t._v("false")]),t._v(") or turn it into exception ("),a("code",[t._v("true")]),t._v(").")]),t._v(" "),a("p",[t._v("If you use "),a("code",[t._v("JSONSchemaType")]),t._v(" this mistake will also be prevented on a type level.")]),t._v(" "),a("h3",{attrs:{id:"strict-types"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#strict-types"}},[t._v("#")]),t._v(" Strict types "),a("Badge",{attrs:{text:"strictTypes option"}})],1),t._v(" "),a("p",[t._v("An additional option "),a("code",[t._v("strictTypes")]),t._v(' ("log" by default) imposes additional restrictions on how type keyword is used:')]),t._v(" "),a("h4",{attrs:{id:"union-types"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#union-types"}},[t._v("#")]),t._v(" Union types "),a("Badge",{attrs:{text:"allowUnionTypes option"}})],1),t._v(" "),a("p",[t._v("With "),a("code",[t._v("strictTypes")]),t._v(' option "type" keywords with multiple types (other than with "null") are prohibited.')]),t._v(" "),a("p",[t._v("Invalid:")]),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 punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),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('"string"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[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("]")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[t._v("Valid:")]),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 punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),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('"object"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"null"')]),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("and")]),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 punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[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('"object"')]),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("nullable")]),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("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[t._v("Unions can still be defined with "),a("code",[t._v("anyOf")]),t._v(" keyword.")]),t._v(" "),a("p",[t._v('The motivation for this restriction is that "type" is usually not the only keyword in the schema, and mixing other keywords that apply to different types is confusing. It is also consistent with wider range of versions of OpenAPI specification and has better tooling support. E.g., this example violating '),a("code",[t._v("strictTypes")]),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 punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),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('"number"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"array"')]),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("minimum")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),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("items")]),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("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(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("minimum")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),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("is equivalent to this complying example, that is more verbose but also easier to maintain:")]),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 punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("anyOf")]),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 punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[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(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("minimum")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),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("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[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('"array"')]),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("items")]),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("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(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("minimum")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),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("]")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[t._v("It also can be refactored:")]),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 punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("$defs")]),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("item")]),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("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(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("minimum")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),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("}")]),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("anyOf")]),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 punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("$ref")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"#/$defs/item"')]),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("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[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('"array"')]),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("items")]),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 literal-property property"}},[t._v("$ref")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"#/$defs/item"')]),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("]")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[t._v("This restriction can be lifted separately from other "),a("code",[t._v("strictTypes")]),t._v(" restrictions with "),a("code",[t._v("allowUnionTypes: true")]),t._v(" option.")]),t._v(" "),a("h4",{attrs:{id:"contradictory-types"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contradictory-types"}},[t._v("#")]),t._v(" Contradictory types")]),t._v(" "),a("p",[t._v("Subschemas can apply to the same data instance, and it is possible to have contradictory type keywords - it usually indicate some mistake. For example:")]),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 punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[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('"object"')]),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("anyOf")]),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 punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[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('"array"')]),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 literal-property property"}},[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('"object"')]),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("The schema above violates "),a("code",[t._v("strictTypes")]),t._v(' as "array" type is not compatible with object. If you used '),a("code",[t._v("allowUnionTypes: true")]),t._v(" option, the above schema can be fixed in this way:")]),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 punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("type")]),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('"array"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[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("]")]),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("anyOf")]),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 punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[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('"array"')]),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 literal-property property"}},[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('"object"')]),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("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v('"number" vs "integer"')]),t._v(" "),a("p",[t._v('Type "number" can be narrowed to "integer", the opposite would violate '),a("code",[t._v("strictTypes")]),t._v(".")])]),t._v(" "),a("h4",{attrs:{id:"require-applicable-types"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#require-applicable-types"}},[t._v("#")]),t._v(" Require applicable types")]),t._v(" "),a("p",[t._v("This simple JSON Schema is valid, but it violates "),a("code",[t._v("strictTypes")]),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 punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("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 "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[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("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[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(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("bar")]),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 literal-property property"}},[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 literal-property property"}},[t._v("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(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"bar"')]),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("This is a very common mistake that even people experienced with JSON Schema often make - the problem here is that any value that is not an object would be valid against this schema - this is rarely intentional.")]),t._v(" "),a("p",[t._v('To fix it, "type" keyword has to be added:')]),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 punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[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('"object"')]),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("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 "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[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("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[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(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("bar")]),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 literal-property property"}},[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("}")]),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("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(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"bar"')]),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('You do not necessarily have to have "type" keyword in the same schema object; as long as there is "type" keyword applying to the same part of data instance in the same schema document, not via "$ref", it will be ok:')]),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 punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[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('"object"')]),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("anyOf")]),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 punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("properties")]),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 literal-property property"}},[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("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[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("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("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("]")]),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("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("properties")]),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 literal-property property"}},[t._v("bar")]),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 literal-property property"}},[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("}")]),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("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('"bar"')]),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("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[t._v('Both "properties" and "required" need '),a("code",[t._v('type: "object"')]),t._v(" to satisfy "),a("code",[t._v("strictTypes")]),t._v(" - it is sufficient to have it once in the parent schema, without repeating it in each schema.")]),t._v(" "),a("h3",{attrs:{id:"strict-number-validation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#strict-number-validation"}},[t._v("#")]),t._v(" Strict number validation "),a("Badge",{attrs:{text:"strictNumbers option"}})],1),t._v(" "),a("p",[t._v("Strict mode also affects number validation. By default Ajv fails "),a("code",[t._v('{"type": "number"}')]),t._v(" (or "),a("code",[t._v('"integer"')]),t._v(") validation for "),a("code",[t._v("Infinity")]),t._v(" and "),a("code",[t._v("NaN")]),t._v(".")])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/app.d305842c.js b/assets/js/app.d305842c.js new file mode 100644 index 000000000..4c084728b --- /dev/null +++ b/assets/js/app.d305842c.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-0b4d4089":()=>n.e(44).then(n.bind(null,392)),"v-094b9dee":()=>n.e(45).then(n.bind(null,393)),"v-7eb94829":()=>n.e(46).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-83a41dee":()=>n.e(52).then(n.bind(null,399)),"v-4d7f1c8a":()=>n.e(51).then(n.bind(null,400)),"v-49301ee2":()=>n.e(53).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-67c77489":()=>n.e(68).then(n.bind(null,416)),"v-c918a5fa":()=>n.e(69).then(n.bind(null,417)),"v-5a94ae89":()=>n.e(70).then(n.bind(null,418)),"v-2abeb1ab":()=>n.e(71).then(n.bind(null,419)),"v-959a2c2e":()=>n.e(72).then(n.bind(null,420)),"v-7bf93309":()=>n.e(74).then(n.bind(null,421)),"v-506a67bc":()=>n.e(73).then(n.bind(null,422)),"v-07fb5e62":()=>n.e(75).then(n.bind(null,423)),"v-19f2c039":()=>n.e(76).then(n.bind(null,424)),"v-6731dec1":()=>n.e(78).then(n.bind(null,425)),"v-b99d2c2e":()=>n.e(77).then(n.bind(null,426)),"v-7f55ccc9":()=>n.e(79).then(n.bind(null,427)),"v-bb53a316":()=>n.e(81).then(n.bind(null,428)),"v-bf7e876e":()=>n.e(80).then(n.bind(null,429)),"v-74774829":()=>n.e(83).then(n.bind(null,430)),"v-20f55eeb":()=>n.e(82).then(n.bind(null,431)),"v-90fdf4e6":()=>n.e(84).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-0b4d4089",path:"/api.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-0b4d4089").then(n)}},{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-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-83a41dee",path:"/guide/combining-schemas.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-83a41dee").then(n)}},{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-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-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-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-5a94ae89",path:"/news/2021-04-24-ajv-online-event.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-5a94ae89").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-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-7bf93309",path:"/options.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-7bf93309").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-07fb5e62",path:"/packages/",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-07fb5e62").then(n)}},{path:"/packages/index.html",redirect:"/packages/"},{name:"v-19f2c039",path:"/packages/ajv-cli.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-19f2c039").then(n)}},{name:"v-6731dec1",path:"/packages/ajv-formats.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-6731dec1").then(n)}},{name:"v-b99d2c2e",path:"/packages/ajv-errors.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-b99d2c2e").then(n)}},{name:"v-7f55ccc9",path:"/packages/ajv-i18n.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-7f55ccc9").then(n)}},{name:"v-bb53a316",path:"/security.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-bb53a316").then(n)}},{name:"v-bf7e876e",path:"/packages/ajv-keywords.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-bf7e876e").then(n)}},{name:"v-74774829",path:"/strict-mode.html",component:Cs,beforeEnter:(e,t,n)=>{fs("Layout","v-74774829").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-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:"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:"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:"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:"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:"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:"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 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 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 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 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:"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 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:"Ajv News",frontmatter:{newsIndex:!0,editLink:!1},regularPath:"/news/",relativePath:"news/README.md",key:"v-506a67bc",path:"/news/"},{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-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-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"}]},{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"}]},{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"}]},{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-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"}]},{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:"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:"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("NewsPostMeta",()=>Promise.all([n.e(0),n.e(18)]).then(n.bind(null,386))),Kn.component("NewsPost",()=>Promise.all([n.e(0),n.e(14)]).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 3035305be..5c7e67d71 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 24418aca1..efbaca874 100644 --- a/codegen.html +++ b/codegen.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/coercion.html b/coercion.html index 19f4905ab..059ac5c2f 100644 --- a/coercion.html +++ b/coercion.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/components.html b/components.html index 7c195b4cb..008605d01 100644 --- a/components.html +++ b/components.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/contributing/index.html b/contributing/index.html index e7629926b..63244ebce 100644 --- a/contributing/index.html +++ b/contributing/index.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/faq.html b/faq.html index db1d84743..0c0e40102 100644 --- a/faq.html +++ b/faq.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/guide/async-validation.html b/guide/async-validation.html index 0d4241ab3..7b37a6004 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 b11165b7f..5f391c4cb 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 e8010cc37..0472a6ac1 100644 --- a/guide/environments.html +++ b/guide/environments.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/guide/formats.html b/guide/formats.html index 5349656f8..394c47165 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 ed251864a..8a6d28655 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 cdf8d0dd5..b16733d46 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 91b538233..b3e46c91b 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 8220be206..525659d2b 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 dd3019d97..2c3d47ca1 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 fc0cfc086..42e88de96 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 4bde61600..2a68cdef3 100644 --- a/guide/why-ajv.html +++ b/guide/why-ajv.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/index.html b/index.html index cb2122ccb..08a552d87 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 - + jasoniangreen - + dependabot[bot] - + 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 - - mxsgx - + + smithc10 + + papb + 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 - + blottn - + nimerritt - + nicksrandall - + Noam3kCH - + eventlistener - + Opticsponge - + orgads - - papb - - thernstig - + + jonganc + jsdevel - + oldmud0 - + ossdev07 - + pskfyi - + qwertyforce - + rek - + sahilda - + schokotets - + superfaz - + tridium - + vlbee - + aladdin-add - + wyfo - + duxing - + anchnk - + ChALkeR - + + not-an-aardvark + + thernstig + TommyDew42 - + koba04 - + isTravis - + cvlab - + vargaeric - + villasv - + aristov - + billytrend - + byr-gdp - + cjancsar - + dfeufel - + ehmicky - + fpicalausa - + franrolando - + fridays - - jonganc - + caub - + dalcib - + dannyb648 - + dancasey - + rotu - + FunkyDck - + darcyparker - + daveisfera - + dsanders11 - + Delapouite - + dimitropoulos - + keyten - + thetric - + rubiagatra - + forivall - + ecwyne - - jonathanGB - + ahmdsolmn - + Alexsey - + avanelli - + anslzo - + asprouse - + andyscott - + vixalien - + kulakowka - + + wetneb + vendeza - + benasher44 - + bradjones1 - + eventualbuddha - + cbrwflo - + cpillsbury - + ChuntaoLu - + delavara - - smithc10 - + + jonathanGB + jboavida - + justinpowers - + kapouer - + lehni - + platinumazure - + kpping - + laurens - + johanlelan - + leonardovillela - + LinusU - + alazyzombie - + jsbrain - + Eomm - + VIEWVIEWVIEW - + mduu - + dzuremar - + EtaiG - + gj - + rgeerts - + garrows - + gurgunday - + hadrien-toma - + seriousme - + hans-kinnek - + handrews - + is2ei - + idangozlan - + ivansieder - + P0lip - + JamesJansson - + mrjgreen - + jrr jonasfj
- + diff --git a/json-schema.html b/json-schema.html index 1c9c5466e..31429e4dd 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 f23bec4b5..ab0b07710 100644 --- a/json-type-definition.html +++ b/json-type-definition.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/keywords.html b/keywords.html index f039cdfed..f7f1bc8f1 100644 --- a/keywords.html +++ b/keywords.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/license.html b/license.html index b3ebeeb2f..d9a964adc 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 1e077c803..cb1f44e21 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 0fa976e5f..cff00a50d 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 03c62f840..7318544ba 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 66440b0e0..285b0e1c3 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 a0cd2c898..0184b21aa 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 df515264b..841c28e80 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 080dabe6b..010d75801 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 2fbe82ddb..71ff735d2 100644 --- a/news/index.html +++ b/news/index.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/options.html b/options.html index a964eb99f..f765be6e6 100644 --- a/options.html +++ b/options.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/packages/ajv-cli.html b/packages/ajv-cli.html index 8c28fd785..0be14cfb0 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 d05d4e2a0..561156ef2 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 41de76716..d0b676620 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 b1fcdb2f9..fdd24a70d 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 044bfb41c..577f382c0 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 bfa41b89d..a64827851 100644 --- a/packages/index.html +++ b/packages/index.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/security.html b/security.html index 4ed7bf800..388eab73f 100644 --- a/security.html +++ b/security.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/standalone.html b/standalone.html index 8b5b0fbbd..7fce1bd9c 100644 --- a/standalone.html +++ b/standalone.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/strict-mode.html b/strict-mode.html index 73f4033ae..64ebf16b3 100644 --- a/strict-mode.html +++ b/strict-mode.html @@ -18,8 +18,8 @@ - - + +
- + diff --git a/testimonials.html b/testimonials.html index e0bb64264..3f97127ac 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 c46855e9b..d8b6d741e 100644 --- a/v6-to-v8-migration.html +++ b/v6-to-v8-migration.html @@ -18,8 +18,8 @@ - - + +