From 1705651e637536f9c1207ca4f0dfd6dfa10e5fd2 Mon Sep 17 00:00:00 2001 From: Luca Ongaro Date: Mon, 30 Oct 2023 12:55:26 +0100 Subject: [PATCH] Update TypeDoc and improve documentation (#235) * Update TypeDoc and improve documentation * Fix doc link --- README.md | 2 +- docs/.nojekyll | 1 + docs/assets/css/main.css | 1 - docs/assets/highlight.css | 141 ++ docs/assets/images/icons.png | Bin 9615 -> 0 bytes docs/assets/images/icons@2x.png | Bin 28144 -> 0 bytes docs/assets/images/widgets.png | Bin 480 -> 0 bytes docs/assets/images/widgets@2x.png | Bin 855 -> 0 bytes docs/assets/js/main.js | 51 - docs/assets/js/search.json | 1 - docs/assets/main.js | 59 + docs/assets/navigation.js | 1 + docs/assets/search.js | 1 + docs/assets/style.css | 1383 ++++++++++++++++ docs/classes/MiniSearch.MiniSearch.html | 263 +++ ...chableMap_SearchableMap.SearchableMap.html | 98 ++ docs/classes/_minisearch_.minisearch.html | 1429 ----------------- ...hablemap_searchablemap_.searchablemap.html | 955 ----------- docs/globals.html | 118 -- docs/index.html | 535 ++---- docs/modules/MiniSearch.html | 14 + docs/modules/SearchableMap_SearchableMap.html | 2 + docs/modules/_minisearch_.html | 806 ---------- .../_searchablemap_searchablemap_.html | 123 -- docs/types/MiniSearch.AutoVacuumOptions.html | 7 + docs/types/MiniSearch.BM25Params.html | 24 + docs/types/MiniSearch.MatchInfo.html | 4 + docs/types/MiniSearch.Options.html | 33 + docs/types/MiniSearch.Query.html | 3 + docs/types/MiniSearch.QueryCombination.html | 1 + docs/types/MiniSearch.SearchOptions.html | 57 + docs/types/MiniSearch.SearchResult.html | 9 + docs/types/MiniSearch.Suggestion.html | 5 + docs/types/MiniSearch.VacuumConditions.html | 7 + docs/types/MiniSearch.VacuumOptions.html | 11 + docs/types/MiniSearch.Wildcard.html | 2 + jsdoc.json | 37 - package.json | 7 +- src/MiniSearch.ts | 131 +- typedoc.json | 9 +- yarn.lock | 357 ++-- 41 files changed, 2489 insertions(+), 4199 deletions(-) delete mode 100644 docs/assets/css/main.css create mode 100644 docs/assets/highlight.css delete mode 100644 docs/assets/images/icons.png delete mode 100644 docs/assets/images/icons@2x.png delete mode 100644 docs/assets/images/widgets.png delete mode 100644 docs/assets/images/widgets@2x.png delete mode 100644 docs/assets/js/main.js delete mode 100644 docs/assets/js/search.json create mode 100644 docs/assets/main.js create mode 100644 docs/assets/navigation.js create mode 100644 docs/assets/search.js create mode 100644 docs/assets/style.css create mode 100644 docs/classes/MiniSearch.MiniSearch.html create mode 100644 docs/classes/SearchableMap_SearchableMap.SearchableMap.html delete mode 100644 docs/classes/_minisearch_.minisearch.html delete mode 100644 docs/classes/_searchablemap_searchablemap_.searchablemap.html delete mode 100644 docs/globals.html create mode 100644 docs/modules/MiniSearch.html create mode 100644 docs/modules/SearchableMap_SearchableMap.html delete mode 100644 docs/modules/_minisearch_.html delete mode 100644 docs/modules/_searchablemap_searchablemap_.html create mode 100644 docs/types/MiniSearch.AutoVacuumOptions.html create mode 100644 docs/types/MiniSearch.BM25Params.html create mode 100644 docs/types/MiniSearch.MatchInfo.html create mode 100644 docs/types/MiniSearch.Options.html create mode 100644 docs/types/MiniSearch.Query.html create mode 100644 docs/types/MiniSearch.QueryCombination.html create mode 100644 docs/types/MiniSearch.SearchOptions.html create mode 100644 docs/types/MiniSearch.SearchResult.html create mode 100644 docs/types/MiniSearch.Suggestion.html create mode 100644 docs/types/MiniSearch.VacuumConditions.html create mode 100644 docs/types/MiniSearch.VacuumOptions.html create mode 100644 docs/types/MiniSearch.Wildcard.html delete mode 100644 jsdoc.json diff --git a/README.md b/README.md index eb3c154f..5a8b37ca 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ Node and in the browser. Try out the [demo application](https://lucaong.github.io/minisearch/demo/). Find the complete [documentation and API reference -here](https://lucaong.github.io/minisearch/classes/_minisearch_.minisearch.html), +here](https://lucaong.github.io/minisearch/classes/classes/MiniSearch.MiniSearch.html), and more background about `MiniSearch`, including a comparison with other similar libraries, in [this blog post](https://lucaongaro.eu/blog/2019/01/30/minisearch-client-side-fulltext-search-engine.html). diff --git a/docs/.nojekyll b/docs/.nojekyll index e69de29b..e2ac6616 100644 --- a/docs/.nojekyll +++ b/docs/.nojekyll @@ -0,0 +1 @@ +TypeDoc added this file to prevent GitHub Pages from using Jekyll. You can turn off this behavior by setting the `githubPages` option to false. \ No newline at end of file diff --git a/docs/assets/css/main.css b/docs/assets/css/main.css deleted file mode 100644 index 3c0dcab9..00000000 --- a/docs/assets/css/main.css +++ /dev/null @@ -1 +0,0 @@ -/*! normalize.css v1.1.3 | MIT License | git.io/normalize */article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none;height:0}[hidden]{display:none}html{font-size:100%;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;font-family:sans-serif}button,input,select,textarea{font-family:sans-serif}body{margin:0}a:focus{outline:thin dotted}a:active,a:hover{outline:0}h1{font-size:2em;margin:.67em 0}h2{font-size:1.5em;margin:.83em 0}h3{font-size:1.17em;margin:1em 0}h4,.tsd-index-panel h3{font-size:1em;margin:1.33em 0}h5{font-size:.83em;margin:1.67em 0}h6{font-size:.67em;margin:2.33em 0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}blockquote{margin:1em 40px}dfn{font-style:italic}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}mark{background:#ff0;color:#000}p,pre{margin:1em 0}code,kbd,pre,samp{font-family:monospace,serif;_font-family:"courier new",monospace;font-size:1em}pre{white-space:pre;white-space:pre-wrap;word-wrap:break-word}q{quotes:none}q:before,q:after{content:"";content:none}small{font-size:80%}sub{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline;top:-0.5em}sub{bottom:-0.25em}dl,menu,ol,ul{margin:1em 0}dd{margin:0 0 0 40px}menu,ol,ul{padding:0 0 0 40px}nav ul,nav ol{list-style:none;list-style-image:none}img{border:0;-ms-interpolation-mode:bicubic}svg:not(:root){overflow:hidden}figure,form{margin:0}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0;white-space:normal;*margin-left:-7px}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}button,input{line-height:normal}button,select{text-transform:none}button,html input[type=button]{-webkit-appearance:button;cursor:pointer;*overflow:visible}input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer;*overflow:visible}button[disabled],html input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0;*height:13px;*width:13px}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0}.hljs{display:inline-block;padding:.5em;background:#fff;color:#000}.hljs-comment,.hljs-annotation,.hljs-template_comment,.diff .hljs-header,.hljs-chunk,.apache .hljs-cbracket{color:green}.hljs-keyword,.hljs-id,.hljs-built_in,.css .smalltalk .hljs-class,.hljs-winutils,.bash .hljs-variable,.tex .hljs-command,.hljs-request,.hljs-status,.nginx .hljs-title{color:blue}.xml .hljs-tag{color:blue}.xml .hljs-tag .hljs-value{color:blue}.hljs-string,.hljs-title,.hljs-parent,.hljs-tag .hljs-value,.hljs-rules .hljs-value{color:#a31515}.ruby .hljs-symbol{color:#a31515}.ruby .hljs-symbol .hljs-string{color:#a31515}.hljs-template_tag,.django .hljs-variable,.hljs-addition,.hljs-flow,.hljs-stream,.apache .hljs-tag,.hljs-date,.tex .hljs-formula,.coffeescript .hljs-attribute{color:#a31515}.ruby .hljs-string,.hljs-decorator,.hljs-filter .hljs-argument,.hljs-localvars,.hljs-array,.hljs-attr_selector,.hljs-pseudo,.hljs-pi,.hljs-doctype,.hljs-deletion,.hljs-envvar,.hljs-shebang,.hljs-preprocessor,.hljs-pragma,.userType,.apache .hljs-sqbracket,.nginx .hljs-built_in,.tex .hljs-special,.hljs-prompt{color:#2b91af}.hljs-phpdoc,.hljs-javadoc,.hljs-xmlDocTag{color:gray}.vhdl .hljs-typename{font-weight:bold}.vhdl .hljs-string{color:#666}.vhdl .hljs-literal{color:#a31515}.vhdl .hljs-attribute{color:#00b0e8}.xml .hljs-attribute{color:red}ul.tsd-descriptions>li>:first-child,.tsd-panel>:first-child,.col>:first-child,.col-11>:first-child,.col-10>:first-child,.col-9>:first-child,.col-8>:first-child,.col-7>:first-child,.col-6>:first-child,.col-5>:first-child,.col-4>:first-child,.col-3>:first-child,.col-2>:first-child,.col-1>:first-child,ul.tsd-descriptions>li>:first-child>:first-child,.tsd-panel>:first-child>:first-child,.col>:first-child>:first-child,.col-11>:first-child>:first-child,.col-10>:first-child>:first-child,.col-9>:first-child>:first-child,.col-8>:first-child>:first-child,.col-7>:first-child>:first-child,.col-6>:first-child>:first-child,.col-5>:first-child>:first-child,.col-4>:first-child>:first-child,.col-3>:first-child>:first-child,.col-2>:first-child>:first-child,.col-1>:first-child>:first-child,ul.tsd-descriptions>li>:first-child>:first-child>:first-child,.tsd-panel>:first-child>:first-child>:first-child,.col>:first-child>:first-child>:first-child,.col-11>:first-child>:first-child>:first-child,.col-10>:first-child>:first-child>:first-child,.col-9>:first-child>:first-child>:first-child,.col-8>:first-child>:first-child>:first-child,.col-7>:first-child>:first-child>:first-child,.col-6>:first-child>:first-child>:first-child,.col-5>:first-child>:first-child>:first-child,.col-4>:first-child>:first-child>:first-child,.col-3>:first-child>:first-child>:first-child,.col-2>:first-child>:first-child>:first-child,.col-1>:first-child>:first-child>:first-child{margin-top:0}ul.tsd-descriptions>li>:last-child,.tsd-panel>:last-child,.col>:last-child,.col-11>:last-child,.col-10>:last-child,.col-9>:last-child,.col-8>:last-child,.col-7>:last-child,.col-6>:last-child,.col-5>:last-child,.col-4>:last-child,.col-3>:last-child,.col-2>:last-child,.col-1>:last-child,ul.tsd-descriptions>li>:last-child>:last-child,.tsd-panel>:last-child>:last-child,.col>:last-child>:last-child,.col-11>:last-child>:last-child,.col-10>:last-child>:last-child,.col-9>:last-child>:last-child,.col-8>:last-child>:last-child,.col-7>:last-child>:last-child,.col-6>:last-child>:last-child,.col-5>:last-child>:last-child,.col-4>:last-child>:last-child,.col-3>:last-child>:last-child,.col-2>:last-child>:last-child,.col-1>:last-child>:last-child,ul.tsd-descriptions>li>:last-child>:last-child>:last-child,.tsd-panel>:last-child>:last-child>:last-child,.col>:last-child>:last-child>:last-child,.col-11>:last-child>:last-child>:last-child,.col-10>:last-child>:last-child>:last-child,.col-9>:last-child>:last-child>:last-child,.col-8>:last-child>:last-child>:last-child,.col-7>:last-child>:last-child>:last-child,.col-6>:last-child>:last-child>:last-child,.col-5>:last-child>:last-child>:last-child,.col-4>:last-child>:last-child>:last-child,.col-3>:last-child>:last-child>:last-child,.col-2>:last-child>:last-child>:last-child,.col-1>:last-child>:last-child>:last-child{margin-bottom:0}.container{max-width:1200px;margin:0 auto;padding:0 40px}@media(max-width: 640px){.container{padding:0 20px}}.container-main{padding-bottom:200px}.row{display:flex;position:relative;margin:0 -10px}.row:after{visibility:hidden;display:block;content:"";clear:both;height:0}.col,.col-11,.col-10,.col-9,.col-8,.col-7,.col-6,.col-5,.col-4,.col-3,.col-2,.col-1{box-sizing:border-box;float:left;padding:0 10px}.col-1{width:8.3333333333%}.offset-1{margin-left:8.3333333333%}.col-2{width:16.6666666667%}.offset-2{margin-left:16.6666666667%}.col-3{width:25%}.offset-3{margin-left:25%}.col-4{width:33.3333333333%}.offset-4{margin-left:33.3333333333%}.col-5{width:41.6666666667%}.offset-5{margin-left:41.6666666667%}.col-6{width:50%}.offset-6{margin-left:50%}.col-7{width:58.3333333333%}.offset-7{margin-left:58.3333333333%}.col-8{width:66.6666666667%}.offset-8{margin-left:66.6666666667%}.col-9{width:75%}.offset-9{margin-left:75%}.col-10{width:83.3333333333%}.offset-10{margin-left:83.3333333333%}.col-11{width:91.6666666667%}.offset-11{margin-left:91.6666666667%}.tsd-kind-icon{display:block;position:relative;padding-left:20px;text-indent:-20px}.tsd-kind-icon:before{content:"";display:inline-block;vertical-align:middle;width:17px;height:17px;margin:0 3px 2px 0;background-image:url(../images/icons.png)}@media(-webkit-min-device-pixel-ratio: 1.5),(min-resolution: 144dpi){.tsd-kind-icon:before{background-image:url(../images/icons@2x.png);background-size:238px 204px}}.tsd-signature.tsd-kind-icon:before{background-position:0 -153px}.tsd-kind-object-literal>.tsd-kind-icon:before{background-position:0px -17px}.tsd-kind-object-literal.tsd-is-protected>.tsd-kind-icon:before{background-position:-17px -17px}.tsd-kind-object-literal.tsd-is-private>.tsd-kind-icon:before{background-position:-34px -17px}.tsd-kind-class>.tsd-kind-icon:before{background-position:0px -34px}.tsd-kind-class.tsd-is-protected>.tsd-kind-icon:before{background-position:-17px -34px}.tsd-kind-class.tsd-is-private>.tsd-kind-icon:before{background-position:-34px -34px}.tsd-kind-class.tsd-has-type-parameter>.tsd-kind-icon:before{background-position:0px -51px}.tsd-kind-class.tsd-has-type-parameter.tsd-is-protected>.tsd-kind-icon:before{background-position:-17px -51px}.tsd-kind-class.tsd-has-type-parameter.tsd-is-private>.tsd-kind-icon:before{background-position:-34px -51px}.tsd-kind-interface>.tsd-kind-icon:before{background-position:0px -68px}.tsd-kind-interface.tsd-is-protected>.tsd-kind-icon:before{background-position:-17px -68px}.tsd-kind-interface.tsd-is-private>.tsd-kind-icon:before{background-position:-34px -68px}.tsd-kind-interface.tsd-has-type-parameter>.tsd-kind-icon:before{background-position:0px -85px}.tsd-kind-interface.tsd-has-type-parameter.tsd-is-protected>.tsd-kind-icon:before{background-position:-17px -85px}.tsd-kind-interface.tsd-has-type-parameter.tsd-is-private>.tsd-kind-icon:before{background-position:-34px -85px}.tsd-kind-namespace>.tsd-kind-icon:before{background-position:0px -102px}.tsd-kind-namespace.tsd-is-protected>.tsd-kind-icon:before{background-position:-17px -102px}.tsd-kind-namespace.tsd-is-private>.tsd-kind-icon:before{background-position:-34px -102px}.tsd-kind-module>.tsd-kind-icon:before{background-position:0px -102px}.tsd-kind-module.tsd-is-protected>.tsd-kind-icon:before{background-position:-17px -102px}.tsd-kind-module.tsd-is-private>.tsd-kind-icon:before{background-position:-34px -102px}.tsd-kind-enum>.tsd-kind-icon:before{background-position:0px -119px}.tsd-kind-enum.tsd-is-protected>.tsd-kind-icon:before{background-position:-17px -119px}.tsd-kind-enum.tsd-is-private>.tsd-kind-icon:before{background-position:-34px -119px}.tsd-kind-enum-member>.tsd-kind-icon:before{background-position:0px -136px}.tsd-kind-enum-member.tsd-is-protected>.tsd-kind-icon:before{background-position:-17px -136px}.tsd-kind-enum-member.tsd-is-private>.tsd-kind-icon:before{background-position:-34px -136px}.tsd-kind-signature>.tsd-kind-icon:before{background-position:0px -153px}.tsd-kind-signature.tsd-is-protected>.tsd-kind-icon:before{background-position:-17px -153px}.tsd-kind-signature.tsd-is-private>.tsd-kind-icon:before{background-position:-34px -153px}.tsd-kind-type-alias>.tsd-kind-icon:before{background-position:0px -170px}.tsd-kind-type-alias.tsd-is-protected>.tsd-kind-icon:before{background-position:-17px -170px}.tsd-kind-type-alias.tsd-is-private>.tsd-kind-icon:before{background-position:-34px -170px}.tsd-kind-type-alias.tsd-has-type-parameter>.tsd-kind-icon:before{background-position:0px -187px}.tsd-kind-type-alias.tsd-has-type-parameter.tsd-is-protected>.tsd-kind-icon:before{background-position:-17px -187px}.tsd-kind-type-alias.tsd-has-type-parameter.tsd-is-private>.tsd-kind-icon:before{background-position:-34px -187px}.tsd-kind-variable>.tsd-kind-icon:before{background-position:-136px -0px}.tsd-kind-variable.tsd-is-protected>.tsd-kind-icon:before{background-position:-153px -0px}.tsd-kind-variable.tsd-is-private>.tsd-kind-icon:before{background-position:-119px -0px}.tsd-kind-variable.tsd-parent-kind-class>.tsd-kind-icon:before{background-position:-51px -0px}.tsd-kind-variable.tsd-parent-kind-class.tsd-is-inherited>.tsd-kind-icon:before{background-position:-68px -0px}.tsd-kind-variable.tsd-parent-kind-class.tsd-is-protected>.tsd-kind-icon:before{background-position:-85px -0px}.tsd-kind-variable.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited>.tsd-kind-icon:before{background-position:-102px -0px}.tsd-kind-variable.tsd-parent-kind-class.tsd-is-private>.tsd-kind-icon:before{background-position:-119px -0px}.tsd-kind-variable.tsd-parent-kind-enum>.tsd-kind-icon:before{background-position:-170px -0px}.tsd-kind-variable.tsd-parent-kind-enum.tsd-is-protected>.tsd-kind-icon:before{background-position:-187px -0px}.tsd-kind-variable.tsd-parent-kind-enum.tsd-is-private>.tsd-kind-icon:before{background-position:-119px -0px}.tsd-kind-variable.tsd-parent-kind-interface>.tsd-kind-icon:before{background-position:-204px -0px}.tsd-kind-variable.tsd-parent-kind-interface.tsd-is-inherited>.tsd-kind-icon:before{background-position:-221px -0px}.tsd-kind-property>.tsd-kind-icon:before{background-position:-136px -0px}.tsd-kind-property.tsd-is-protected>.tsd-kind-icon:before{background-position:-153px -0px}.tsd-kind-property.tsd-is-private>.tsd-kind-icon:before{background-position:-119px -0px}.tsd-kind-property.tsd-parent-kind-class>.tsd-kind-icon:before{background-position:-51px -0px}.tsd-kind-property.tsd-parent-kind-class.tsd-is-inherited>.tsd-kind-icon:before{background-position:-68px -0px}.tsd-kind-property.tsd-parent-kind-class.tsd-is-protected>.tsd-kind-icon:before{background-position:-85px -0px}.tsd-kind-property.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited>.tsd-kind-icon:before{background-position:-102px -0px}.tsd-kind-property.tsd-parent-kind-class.tsd-is-private>.tsd-kind-icon:before{background-position:-119px -0px}.tsd-kind-property.tsd-parent-kind-enum>.tsd-kind-icon:before{background-position:-170px -0px}.tsd-kind-property.tsd-parent-kind-enum.tsd-is-protected>.tsd-kind-icon:before{background-position:-187px -0px}.tsd-kind-property.tsd-parent-kind-enum.tsd-is-private>.tsd-kind-icon:before{background-position:-119px -0px}.tsd-kind-property.tsd-parent-kind-interface>.tsd-kind-icon:before{background-position:-204px -0px}.tsd-kind-property.tsd-parent-kind-interface.tsd-is-inherited>.tsd-kind-icon:before{background-position:-221px -0px}.tsd-kind-get-signature>.tsd-kind-icon:before{background-position:-136px -17px}.tsd-kind-get-signature.tsd-is-protected>.tsd-kind-icon:before{background-position:-153px -17px}.tsd-kind-get-signature.tsd-is-private>.tsd-kind-icon:before{background-position:-119px -17px}.tsd-kind-get-signature.tsd-parent-kind-class>.tsd-kind-icon:before{background-position:-51px -17px}.tsd-kind-get-signature.tsd-parent-kind-class.tsd-is-inherited>.tsd-kind-icon:before{background-position:-68px -17px}.tsd-kind-get-signature.tsd-parent-kind-class.tsd-is-protected>.tsd-kind-icon:before{background-position:-85px -17px}.tsd-kind-get-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited>.tsd-kind-icon:before{background-position:-102px -17px}.tsd-kind-get-signature.tsd-parent-kind-class.tsd-is-private>.tsd-kind-icon:before{background-position:-119px -17px}.tsd-kind-get-signature.tsd-parent-kind-enum>.tsd-kind-icon:before{background-position:-170px -17px}.tsd-kind-get-signature.tsd-parent-kind-enum.tsd-is-protected>.tsd-kind-icon:before{background-position:-187px -17px}.tsd-kind-get-signature.tsd-parent-kind-enum.tsd-is-private>.tsd-kind-icon:before{background-position:-119px -17px}.tsd-kind-get-signature.tsd-parent-kind-interface>.tsd-kind-icon:before{background-position:-204px -17px}.tsd-kind-get-signature.tsd-parent-kind-interface.tsd-is-inherited>.tsd-kind-icon:before{background-position:-221px -17px}.tsd-kind-set-signature>.tsd-kind-icon:before{background-position:-136px -34px}.tsd-kind-set-signature.tsd-is-protected>.tsd-kind-icon:before{background-position:-153px -34px}.tsd-kind-set-signature.tsd-is-private>.tsd-kind-icon:before{background-position:-119px -34px}.tsd-kind-set-signature.tsd-parent-kind-class>.tsd-kind-icon:before{background-position:-51px -34px}.tsd-kind-set-signature.tsd-parent-kind-class.tsd-is-inherited>.tsd-kind-icon:before{background-position:-68px -34px}.tsd-kind-set-signature.tsd-parent-kind-class.tsd-is-protected>.tsd-kind-icon:before{background-position:-85px -34px}.tsd-kind-set-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited>.tsd-kind-icon:before{background-position:-102px -34px}.tsd-kind-set-signature.tsd-parent-kind-class.tsd-is-private>.tsd-kind-icon:before{background-position:-119px -34px}.tsd-kind-set-signature.tsd-parent-kind-enum>.tsd-kind-icon:before{background-position:-170px -34px}.tsd-kind-set-signature.tsd-parent-kind-enum.tsd-is-protected>.tsd-kind-icon:before{background-position:-187px -34px}.tsd-kind-set-signature.tsd-parent-kind-enum.tsd-is-private>.tsd-kind-icon:before{background-position:-119px -34px}.tsd-kind-set-signature.tsd-parent-kind-interface>.tsd-kind-icon:before{background-position:-204px -34px}.tsd-kind-set-signature.tsd-parent-kind-interface.tsd-is-inherited>.tsd-kind-icon:before{background-position:-221px -34px}.tsd-kind-accessor>.tsd-kind-icon:before{background-position:-136px -51px}.tsd-kind-accessor.tsd-is-protected>.tsd-kind-icon:before{background-position:-153px -51px}.tsd-kind-accessor.tsd-is-private>.tsd-kind-icon:before{background-position:-119px -51px}.tsd-kind-accessor.tsd-parent-kind-class>.tsd-kind-icon:before{background-position:-51px -51px}.tsd-kind-accessor.tsd-parent-kind-class.tsd-is-inherited>.tsd-kind-icon:before{background-position:-68px -51px}.tsd-kind-accessor.tsd-parent-kind-class.tsd-is-protected>.tsd-kind-icon:before{background-position:-85px -51px}.tsd-kind-accessor.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited>.tsd-kind-icon:before{background-position:-102px -51px}.tsd-kind-accessor.tsd-parent-kind-class.tsd-is-private>.tsd-kind-icon:before{background-position:-119px -51px}.tsd-kind-accessor.tsd-parent-kind-enum>.tsd-kind-icon:before{background-position:-170px -51px}.tsd-kind-accessor.tsd-parent-kind-enum.tsd-is-protected>.tsd-kind-icon:before{background-position:-187px -51px}.tsd-kind-accessor.tsd-parent-kind-enum.tsd-is-private>.tsd-kind-icon:before{background-position:-119px -51px}.tsd-kind-accessor.tsd-parent-kind-interface>.tsd-kind-icon:before{background-position:-204px -51px}.tsd-kind-accessor.tsd-parent-kind-interface.tsd-is-inherited>.tsd-kind-icon:before{background-position:-221px -51px}.tsd-kind-function>.tsd-kind-icon:before{background-position:-136px -68px}.tsd-kind-function.tsd-is-protected>.tsd-kind-icon:before{background-position:-153px -68px}.tsd-kind-function.tsd-is-private>.tsd-kind-icon:before{background-position:-119px -68px}.tsd-kind-function.tsd-parent-kind-class>.tsd-kind-icon:before{background-position:-51px -68px}.tsd-kind-function.tsd-parent-kind-class.tsd-is-inherited>.tsd-kind-icon:before{background-position:-68px -68px}.tsd-kind-function.tsd-parent-kind-class.tsd-is-protected>.tsd-kind-icon:before{background-position:-85px -68px}.tsd-kind-function.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited>.tsd-kind-icon:before{background-position:-102px -68px}.tsd-kind-function.tsd-parent-kind-class.tsd-is-private>.tsd-kind-icon:before{background-position:-119px -68px}.tsd-kind-function.tsd-parent-kind-enum>.tsd-kind-icon:before{background-position:-170px -68px}.tsd-kind-function.tsd-parent-kind-enum.tsd-is-protected>.tsd-kind-icon:before{background-position:-187px -68px}.tsd-kind-function.tsd-parent-kind-enum.tsd-is-private>.tsd-kind-icon:before{background-position:-119px -68px}.tsd-kind-function.tsd-parent-kind-interface>.tsd-kind-icon:before{background-position:-204px -68px}.tsd-kind-function.tsd-parent-kind-interface.tsd-is-inherited>.tsd-kind-icon:before{background-position:-221px -68px}.tsd-kind-method>.tsd-kind-icon:before{background-position:-136px -68px}.tsd-kind-method.tsd-is-protected>.tsd-kind-icon:before{background-position:-153px -68px}.tsd-kind-method.tsd-is-private>.tsd-kind-icon:before{background-position:-119px -68px}.tsd-kind-method.tsd-parent-kind-class>.tsd-kind-icon:before{background-position:-51px -68px}.tsd-kind-method.tsd-parent-kind-class.tsd-is-inherited>.tsd-kind-icon:before{background-position:-68px -68px}.tsd-kind-method.tsd-parent-kind-class.tsd-is-protected>.tsd-kind-icon:before{background-position:-85px -68px}.tsd-kind-method.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited>.tsd-kind-icon:before{background-position:-102px -68px}.tsd-kind-method.tsd-parent-kind-class.tsd-is-private>.tsd-kind-icon:before{background-position:-119px -68px}.tsd-kind-method.tsd-parent-kind-enum>.tsd-kind-icon:before{background-position:-170px -68px}.tsd-kind-method.tsd-parent-kind-enum.tsd-is-protected>.tsd-kind-icon:before{background-position:-187px -68px}.tsd-kind-method.tsd-parent-kind-enum.tsd-is-private>.tsd-kind-icon:before{background-position:-119px -68px}.tsd-kind-method.tsd-parent-kind-interface>.tsd-kind-icon:before{background-position:-204px -68px}.tsd-kind-method.tsd-parent-kind-interface.tsd-is-inherited>.tsd-kind-icon:before{background-position:-221px -68px}.tsd-kind-call-signature>.tsd-kind-icon:before{background-position:-136px -68px}.tsd-kind-call-signature.tsd-is-protected>.tsd-kind-icon:before{background-position:-153px -68px}.tsd-kind-call-signature.tsd-is-private>.tsd-kind-icon:before{background-position:-119px -68px}.tsd-kind-call-signature.tsd-parent-kind-class>.tsd-kind-icon:before{background-position:-51px -68px}.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-inherited>.tsd-kind-icon:before{background-position:-68px -68px}.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-protected>.tsd-kind-icon:before{background-position:-85px -68px}.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited>.tsd-kind-icon:before{background-position:-102px -68px}.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-private>.tsd-kind-icon:before{background-position:-119px -68px}.tsd-kind-call-signature.tsd-parent-kind-enum>.tsd-kind-icon:before{background-position:-170px -68px}.tsd-kind-call-signature.tsd-parent-kind-enum.tsd-is-protected>.tsd-kind-icon:before{background-position:-187px -68px}.tsd-kind-call-signature.tsd-parent-kind-enum.tsd-is-private>.tsd-kind-icon:before{background-position:-119px -68px}.tsd-kind-call-signature.tsd-parent-kind-interface>.tsd-kind-icon:before{background-position:-204px -68px}.tsd-kind-call-signature.tsd-parent-kind-interface.tsd-is-inherited>.tsd-kind-icon:before{background-position:-221px -68px}.tsd-kind-function.tsd-has-type-parameter>.tsd-kind-icon:before{background-position:-136px -85px}.tsd-kind-function.tsd-has-type-parameter.tsd-is-protected>.tsd-kind-icon:before{background-position:-153px -85px}.tsd-kind-function.tsd-has-type-parameter.tsd-is-private>.tsd-kind-icon:before{background-position:-119px -85px}.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class>.tsd-kind-icon:before{background-position:-51px -85px}.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-inherited>.tsd-kind-icon:before{background-position:-68px -85px}.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-protected>.tsd-kind-icon:before{background-position:-85px -85px}.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited>.tsd-kind-icon:before{background-position:-102px -85px}.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-private>.tsd-kind-icon:before{background-position:-119px -85px}.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-enum>.tsd-kind-icon:before{background-position:-170px -85px}.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-enum.tsd-is-protected>.tsd-kind-icon:before{background-position:-187px -85px}.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-enum.tsd-is-private>.tsd-kind-icon:before{background-position:-119px -85px}.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-interface>.tsd-kind-icon:before{background-position:-204px -85px}.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-interface.tsd-is-inherited>.tsd-kind-icon:before{background-position:-221px -85px}.tsd-kind-method.tsd-has-type-parameter>.tsd-kind-icon:before{background-position:-136px -85px}.tsd-kind-method.tsd-has-type-parameter.tsd-is-protected>.tsd-kind-icon:before{background-position:-153px -85px}.tsd-kind-method.tsd-has-type-parameter.tsd-is-private>.tsd-kind-icon:before{background-position:-119px -85px}.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class>.tsd-kind-icon:before{background-position:-51px -85px}.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-inherited>.tsd-kind-icon:before{background-position:-68px -85px}.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-protected>.tsd-kind-icon:before{background-position:-85px -85px}.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited>.tsd-kind-icon:before{background-position:-102px -85px}.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-private>.tsd-kind-icon:before{background-position:-119px -85px}.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-enum>.tsd-kind-icon:before{background-position:-170px -85px}.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-enum.tsd-is-protected>.tsd-kind-icon:before{background-position:-187px -85px}.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-enum.tsd-is-private>.tsd-kind-icon:before{background-position:-119px -85px}.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-interface>.tsd-kind-icon:before{background-position:-204px -85px}.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-interface.tsd-is-inherited>.tsd-kind-icon:before{background-position:-221px -85px}.tsd-kind-constructor>.tsd-kind-icon:before{background-position:-136px -102px}.tsd-kind-constructor.tsd-is-protected>.tsd-kind-icon:before{background-position:-153px -102px}.tsd-kind-constructor.tsd-is-private>.tsd-kind-icon:before{background-position:-119px -102px}.tsd-kind-constructor.tsd-parent-kind-class>.tsd-kind-icon:before{background-position:-51px -102px}.tsd-kind-constructor.tsd-parent-kind-class.tsd-is-inherited>.tsd-kind-icon:before{background-position:-68px -102px}.tsd-kind-constructor.tsd-parent-kind-class.tsd-is-protected>.tsd-kind-icon:before{background-position:-85px -102px}.tsd-kind-constructor.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited>.tsd-kind-icon:before{background-position:-102px -102px}.tsd-kind-constructor.tsd-parent-kind-class.tsd-is-private>.tsd-kind-icon:before{background-position:-119px -102px}.tsd-kind-constructor.tsd-parent-kind-enum>.tsd-kind-icon:before{background-position:-170px -102px}.tsd-kind-constructor.tsd-parent-kind-enum.tsd-is-protected>.tsd-kind-icon:before{background-position:-187px -102px}.tsd-kind-constructor.tsd-parent-kind-enum.tsd-is-private>.tsd-kind-icon:before{background-position:-119px -102px}.tsd-kind-constructor.tsd-parent-kind-interface>.tsd-kind-icon:before{background-position:-204px -102px}.tsd-kind-constructor.tsd-parent-kind-interface.tsd-is-inherited>.tsd-kind-icon:before{background-position:-221px -102px}.tsd-kind-constructor-signature>.tsd-kind-icon:before{background-position:-136px -102px}.tsd-kind-constructor-signature.tsd-is-protected>.tsd-kind-icon:before{background-position:-153px -102px}.tsd-kind-constructor-signature.tsd-is-private>.tsd-kind-icon:before{background-position:-119px -102px}.tsd-kind-constructor-signature.tsd-parent-kind-class>.tsd-kind-icon:before{background-position:-51px -102px}.tsd-kind-constructor-signature.tsd-parent-kind-class.tsd-is-inherited>.tsd-kind-icon:before{background-position:-68px -102px}.tsd-kind-constructor-signature.tsd-parent-kind-class.tsd-is-protected>.tsd-kind-icon:before{background-position:-85px -102px}.tsd-kind-constructor-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited>.tsd-kind-icon:before{background-position:-102px -102px}.tsd-kind-constructor-signature.tsd-parent-kind-class.tsd-is-private>.tsd-kind-icon:before{background-position:-119px -102px}.tsd-kind-constructor-signature.tsd-parent-kind-enum>.tsd-kind-icon:before{background-position:-170px -102px}.tsd-kind-constructor-signature.tsd-parent-kind-enum.tsd-is-protected>.tsd-kind-icon:before{background-position:-187px -102px}.tsd-kind-constructor-signature.tsd-parent-kind-enum.tsd-is-private>.tsd-kind-icon:before{background-position:-119px -102px}.tsd-kind-constructor-signature.tsd-parent-kind-interface>.tsd-kind-icon:before{background-position:-204px -102px}.tsd-kind-constructor-signature.tsd-parent-kind-interface.tsd-is-inherited>.tsd-kind-icon:before{background-position:-221px -102px}.tsd-kind-index-signature>.tsd-kind-icon:before{background-position:-136px -119px}.tsd-kind-index-signature.tsd-is-protected>.tsd-kind-icon:before{background-position:-153px -119px}.tsd-kind-index-signature.tsd-is-private>.tsd-kind-icon:before{background-position:-119px -119px}.tsd-kind-index-signature.tsd-parent-kind-class>.tsd-kind-icon:before{background-position:-51px -119px}.tsd-kind-index-signature.tsd-parent-kind-class.tsd-is-inherited>.tsd-kind-icon:before{background-position:-68px -119px}.tsd-kind-index-signature.tsd-parent-kind-class.tsd-is-protected>.tsd-kind-icon:before{background-position:-85px -119px}.tsd-kind-index-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited>.tsd-kind-icon:before{background-position:-102px -119px}.tsd-kind-index-signature.tsd-parent-kind-class.tsd-is-private>.tsd-kind-icon:before{background-position:-119px -119px}.tsd-kind-index-signature.tsd-parent-kind-enum>.tsd-kind-icon:before{background-position:-170px -119px}.tsd-kind-index-signature.tsd-parent-kind-enum.tsd-is-protected>.tsd-kind-icon:before{background-position:-187px -119px}.tsd-kind-index-signature.tsd-parent-kind-enum.tsd-is-private>.tsd-kind-icon:before{background-position:-119px -119px}.tsd-kind-index-signature.tsd-parent-kind-interface>.tsd-kind-icon:before{background-position:-204px -119px}.tsd-kind-index-signature.tsd-parent-kind-interface.tsd-is-inherited>.tsd-kind-icon:before{background-position:-221px -119px}.tsd-kind-event>.tsd-kind-icon:before{background-position:-136px -136px}.tsd-kind-event.tsd-is-protected>.tsd-kind-icon:before{background-position:-153px -136px}.tsd-kind-event.tsd-is-private>.tsd-kind-icon:before{background-position:-119px -136px}.tsd-kind-event.tsd-parent-kind-class>.tsd-kind-icon:before{background-position:-51px -136px}.tsd-kind-event.tsd-parent-kind-class.tsd-is-inherited>.tsd-kind-icon:before{background-position:-68px -136px}.tsd-kind-event.tsd-parent-kind-class.tsd-is-protected>.tsd-kind-icon:before{background-position:-85px -136px}.tsd-kind-event.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited>.tsd-kind-icon:before{background-position:-102px -136px}.tsd-kind-event.tsd-parent-kind-class.tsd-is-private>.tsd-kind-icon:before{background-position:-119px -136px}.tsd-kind-event.tsd-parent-kind-enum>.tsd-kind-icon:before{background-position:-170px -136px}.tsd-kind-event.tsd-parent-kind-enum.tsd-is-protected>.tsd-kind-icon:before{background-position:-187px -136px}.tsd-kind-event.tsd-parent-kind-enum.tsd-is-private>.tsd-kind-icon:before{background-position:-119px -136px}.tsd-kind-event.tsd-parent-kind-interface>.tsd-kind-icon:before{background-position:-204px -136px}.tsd-kind-event.tsd-parent-kind-interface.tsd-is-inherited>.tsd-kind-icon:before{background-position:-221px -136px}.tsd-is-static>.tsd-kind-icon:before{background-position:-136px -153px}.tsd-is-static.tsd-is-protected>.tsd-kind-icon:before{background-position:-153px -153px}.tsd-is-static.tsd-is-private>.tsd-kind-icon:before{background-position:-119px -153px}.tsd-is-static.tsd-parent-kind-class>.tsd-kind-icon:before{background-position:-51px -153px}.tsd-is-static.tsd-parent-kind-class.tsd-is-inherited>.tsd-kind-icon:before{background-position:-68px -153px}.tsd-is-static.tsd-parent-kind-class.tsd-is-protected>.tsd-kind-icon:before{background-position:-85px -153px}.tsd-is-static.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited>.tsd-kind-icon:before{background-position:-102px -153px}.tsd-is-static.tsd-parent-kind-class.tsd-is-private>.tsd-kind-icon:before{background-position:-119px -153px}.tsd-is-static.tsd-parent-kind-enum>.tsd-kind-icon:before{background-position:-170px -153px}.tsd-is-static.tsd-parent-kind-enum.tsd-is-protected>.tsd-kind-icon:before{background-position:-187px -153px}.tsd-is-static.tsd-parent-kind-enum.tsd-is-private>.tsd-kind-icon:before{background-position:-119px -153px}.tsd-is-static.tsd-parent-kind-interface>.tsd-kind-icon:before{background-position:-204px -153px}.tsd-is-static.tsd-parent-kind-interface.tsd-is-inherited>.tsd-kind-icon:before{background-position:-221px -153px}.tsd-is-static.tsd-kind-function>.tsd-kind-icon:before{background-position:-136px -170px}.tsd-is-static.tsd-kind-function.tsd-is-protected>.tsd-kind-icon:before{background-position:-153px -170px}.tsd-is-static.tsd-kind-function.tsd-is-private>.tsd-kind-icon:before{background-position:-119px -170px}.tsd-is-static.tsd-kind-function.tsd-parent-kind-class>.tsd-kind-icon:before{background-position:-51px -170px}.tsd-is-static.tsd-kind-function.tsd-parent-kind-class.tsd-is-inherited>.tsd-kind-icon:before{background-position:-68px -170px}.tsd-is-static.tsd-kind-function.tsd-parent-kind-class.tsd-is-protected>.tsd-kind-icon:before{background-position:-85px -170px}.tsd-is-static.tsd-kind-function.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited>.tsd-kind-icon:before{background-position:-102px -170px}.tsd-is-static.tsd-kind-function.tsd-parent-kind-class.tsd-is-private>.tsd-kind-icon:before{background-position:-119px -170px}.tsd-is-static.tsd-kind-function.tsd-parent-kind-enum>.tsd-kind-icon:before{background-position:-170px -170px}.tsd-is-static.tsd-kind-function.tsd-parent-kind-enum.tsd-is-protected>.tsd-kind-icon:before{background-position:-187px -170px}.tsd-is-static.tsd-kind-function.tsd-parent-kind-enum.tsd-is-private>.tsd-kind-icon:before{background-position:-119px -170px}.tsd-is-static.tsd-kind-function.tsd-parent-kind-interface>.tsd-kind-icon:before{background-position:-204px -170px}.tsd-is-static.tsd-kind-function.tsd-parent-kind-interface.tsd-is-inherited>.tsd-kind-icon:before{background-position:-221px -170px}.tsd-is-static.tsd-kind-method>.tsd-kind-icon:before{background-position:-136px -170px}.tsd-is-static.tsd-kind-method.tsd-is-protected>.tsd-kind-icon:before{background-position:-153px -170px}.tsd-is-static.tsd-kind-method.tsd-is-private>.tsd-kind-icon:before{background-position:-119px -170px}.tsd-is-static.tsd-kind-method.tsd-parent-kind-class>.tsd-kind-icon:before{background-position:-51px -170px}.tsd-is-static.tsd-kind-method.tsd-parent-kind-class.tsd-is-inherited>.tsd-kind-icon:before{background-position:-68px -170px}.tsd-is-static.tsd-kind-method.tsd-parent-kind-class.tsd-is-protected>.tsd-kind-icon:before{background-position:-85px -170px}.tsd-is-static.tsd-kind-method.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited>.tsd-kind-icon:before{background-position:-102px -170px}.tsd-is-static.tsd-kind-method.tsd-parent-kind-class.tsd-is-private>.tsd-kind-icon:before{background-position:-119px -170px}.tsd-is-static.tsd-kind-method.tsd-parent-kind-enum>.tsd-kind-icon:before{background-position:-170px -170px}.tsd-is-static.tsd-kind-method.tsd-parent-kind-enum.tsd-is-protected>.tsd-kind-icon:before{background-position:-187px -170px}.tsd-is-static.tsd-kind-method.tsd-parent-kind-enum.tsd-is-private>.tsd-kind-icon:before{background-position:-119px -170px}.tsd-is-static.tsd-kind-method.tsd-parent-kind-interface>.tsd-kind-icon:before{background-position:-204px -170px}.tsd-is-static.tsd-kind-method.tsd-parent-kind-interface.tsd-is-inherited>.tsd-kind-icon:before{background-position:-221px -170px}.tsd-is-static.tsd-kind-call-signature>.tsd-kind-icon:before{background-position:-136px -170px}.tsd-is-static.tsd-kind-call-signature.tsd-is-protected>.tsd-kind-icon:before{background-position:-153px -170px}.tsd-is-static.tsd-kind-call-signature.tsd-is-private>.tsd-kind-icon:before{background-position:-119px -170px}.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class>.tsd-kind-icon:before{background-position:-51px -170px}.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-inherited>.tsd-kind-icon:before{background-position:-68px -170px}.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-protected>.tsd-kind-icon:before{background-position:-85px -170px}.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited>.tsd-kind-icon:before{background-position:-102px -170px}.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-private>.tsd-kind-icon:before{background-position:-119px -170px}.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-enum>.tsd-kind-icon:before{background-position:-170px -170px}.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-enum.tsd-is-protected>.tsd-kind-icon:before{background-position:-187px -170px}.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-enum.tsd-is-private>.tsd-kind-icon:before{background-position:-119px -170px}.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-interface>.tsd-kind-icon:before{background-position:-204px -170px}.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-interface.tsd-is-inherited>.tsd-kind-icon:before{background-position:-221px -170px}.tsd-is-static.tsd-kind-event>.tsd-kind-icon:before{background-position:-136px -187px}.tsd-is-static.tsd-kind-event.tsd-is-protected>.tsd-kind-icon:before{background-position:-153px -187px}.tsd-is-static.tsd-kind-event.tsd-is-private>.tsd-kind-icon:before{background-position:-119px -187px}.tsd-is-static.tsd-kind-event.tsd-parent-kind-class>.tsd-kind-icon:before{background-position:-51px -187px}.tsd-is-static.tsd-kind-event.tsd-parent-kind-class.tsd-is-inherited>.tsd-kind-icon:before{background-position:-68px -187px}.tsd-is-static.tsd-kind-event.tsd-parent-kind-class.tsd-is-protected>.tsd-kind-icon:before{background-position:-85px -187px}.tsd-is-static.tsd-kind-event.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited>.tsd-kind-icon:before{background-position:-102px -187px}.tsd-is-static.tsd-kind-event.tsd-parent-kind-class.tsd-is-private>.tsd-kind-icon:before{background-position:-119px -187px}.tsd-is-static.tsd-kind-event.tsd-parent-kind-enum>.tsd-kind-icon:before{background-position:-170px -187px}.tsd-is-static.tsd-kind-event.tsd-parent-kind-enum.tsd-is-protected>.tsd-kind-icon:before{background-position:-187px -187px}.tsd-is-static.tsd-kind-event.tsd-parent-kind-enum.tsd-is-private>.tsd-kind-icon:before{background-position:-119px -187px}.tsd-is-static.tsd-kind-event.tsd-parent-kind-interface>.tsd-kind-icon:before{background-position:-204px -187px}.tsd-is-static.tsd-kind-event.tsd-parent-kind-interface.tsd-is-inherited>.tsd-kind-icon:before{background-position:-221px -187px}@keyframes fade-in{from{opacity:0}to{opacity:1}}@keyframes fade-out{from{opacity:1;visibility:visible}to{opacity:0}}@keyframes fade-in-delayed{0%{opacity:0}33%{opacity:0}100%{opacity:1}}@keyframes fade-out-delayed{0%{opacity:1;visibility:visible}66%{opacity:0}100%{opacity:0}}@keyframes shift-to-left{from{transform:translate(0, 0)}to{transform:translate(-25%, 0)}}@keyframes unshift-to-left{from{transform:translate(-25%, 0)}to{transform:translate(0, 0)}}@keyframes pop-in-from-right{from{transform:translate(100%, 0)}to{transform:translate(0, 0)}}@keyframes pop-out-to-right{from{transform:translate(0, 0);visibility:visible}to{transform:translate(100%, 0)}}body{background:#fdfdfd;font-family:"Segoe UI",sans-serif;font-size:16px;color:#222}a{color:#4da6ff;text-decoration:none}a:hover{text-decoration:underline}code,pre{font-family:Menlo,Monaco,Consolas,"Courier New",monospace;padding:.2em;margin:0;font-size:14px;background-color:rgba(0,0,0,.04)}pre{padding:10px}pre code{padding:0;font-size:100%;background-color:transparent}.tsd-typography{line-height:1.333em}.tsd-typography ul{list-style:square;padding:0 0 0 20px;margin:0}.tsd-typography h4,.tsd-typography .tsd-index-panel h3,.tsd-index-panel .tsd-typography h3,.tsd-typography h5,.tsd-typography h6{font-size:1em;margin:0}.tsd-typography h5,.tsd-typography h6{font-weight:normal}.tsd-typography p,.tsd-typography ul,.tsd-typography ol{margin:1em 0}@media(min-width: 901px)and (max-width: 1024px){html.default .col-content{width:72%}html.default .col-menu{width:28%}html.default .tsd-navigation{padding-left:10px}}@media(max-width: 900px){html.default .col-content{float:none;width:100%}html.default .col-menu{position:fixed !important;overflow:auto;-webkit-overflow-scrolling:touch;z-index:1024;top:0 !important;bottom:0 !important;left:auto !important;right:0 !important;width:100%;padding:20px 20px 0 0;max-width:450px;visibility:hidden;background-color:#fff;transform:translate(100%, 0)}html.default .col-menu>*:last-child{padding-bottom:20px}html.default .overlay{content:"";display:block;position:fixed;z-index:1023;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.75);visibility:hidden}html.default.to-has-menu .overlay{animation:fade-in .4s}html.default.to-has-menu header,html.default.to-has-menu footer,html.default.to-has-menu .col-content{animation:shift-to-left .4s}html.default.to-has-menu .col-menu{animation:pop-in-from-right .4s}html.default.from-has-menu .overlay{animation:fade-out .4s}html.default.from-has-menu header,html.default.from-has-menu footer,html.default.from-has-menu .col-content{animation:unshift-to-left .4s}html.default.from-has-menu .col-menu{animation:pop-out-to-right .4s}html.default.has-menu body{overflow:hidden}html.default.has-menu .overlay{visibility:visible}html.default.has-menu header,html.default.has-menu footer,html.default.has-menu .col-content{transform:translate(-25%, 0)}html.default.has-menu .col-menu{visibility:visible;transform:translate(0, 0)}}.tsd-page-title{padding:70px 0 20px 0;margin:0 0 40px 0;background:#fff;box-shadow:0 0 5px rgba(0,0,0,.35)}.tsd-page-title h1{margin:0}.tsd-breadcrumb{margin:0;padding:0;color:#707070}.tsd-breadcrumb a{color:#707070;text-decoration:none}.tsd-breadcrumb a:hover{text-decoration:underline}.tsd-breadcrumb li{display:inline}.tsd-breadcrumb li:after{content:" / "}html.minimal .container{margin:0}html.minimal .container-main{padding-top:50px;padding-bottom:0}html.minimal .content-wrap{padding-left:300px}html.minimal .tsd-navigation{position:fixed !important;overflow:auto;-webkit-overflow-scrolling:touch;box-sizing:border-box;z-index:1;left:0;top:40px;bottom:0;width:300px;padding:20px;margin:0}html.minimal .tsd-member .tsd-member{margin-left:0}html.minimal .tsd-page-toolbar{position:fixed;z-index:2}html.minimal #tsd-filter .tsd-filter-group{right:0;transform:none}html.minimal footer{background-color:transparent}html.minimal footer .container{padding:0}html.minimal .tsd-generator{padding:0}@media(max-width: 900px){html.minimal .tsd-navigation{display:none}html.minimal .content-wrap{padding-left:0}}dl.tsd-comment-tags{overflow:hidden}dl.tsd-comment-tags dt{float:left;padding:1px 5px;margin:0 10px 0 0;border-radius:4px;border:1px solid #707070;color:#707070;font-size:.8em;font-weight:normal}dl.tsd-comment-tags dd{margin:0 0 10px 0}dl.tsd-comment-tags dd:before,dl.tsd-comment-tags dd:after{display:table;content:" "}dl.tsd-comment-tags dd pre,dl.tsd-comment-tags dd:after{clear:both}dl.tsd-comment-tags p{margin:0}.tsd-panel.tsd-comment .lead{font-size:1.1em;line-height:1.333em;margin-bottom:2em}.tsd-panel.tsd-comment .lead:last-child{margin-bottom:0}.toggle-protected .tsd-is-private{display:none}.toggle-public .tsd-is-private,.toggle-public .tsd-is-protected,.toggle-public .tsd-is-private-protected{display:none}.toggle-inherited .tsd-is-inherited{display:none}.toggle-only-exported .tsd-is-not-exported{display:none}.toggle-externals .tsd-is-external{display:none}#tsd-filter{position:relative;display:inline-block;height:40px;vertical-align:bottom}.no-filter #tsd-filter{display:none}#tsd-filter .tsd-filter-group{display:inline-block;height:40px;vertical-align:bottom;white-space:nowrap}#tsd-filter input{display:none}@media(max-width: 900px){#tsd-filter .tsd-filter-group{display:block;position:absolute;top:40px;right:20px;height:auto;background-color:#fff;visibility:hidden;transform:translate(50%, 0);box-shadow:0 0 4px rgba(0,0,0,.25)}.has-options #tsd-filter .tsd-filter-group{visibility:visible}.to-has-options #tsd-filter .tsd-filter-group{animation:fade-in .2s}.from-has-options #tsd-filter .tsd-filter-group{animation:fade-out .2s}#tsd-filter label,#tsd-filter .tsd-select{display:block;padding-right:20px}}footer{border-top:1px solid #eee;background-color:#fff}footer.with-border-bottom{border-bottom:1px solid #eee}footer .tsd-legend-group{font-size:0}footer .tsd-legend{display:inline-block;width:25%;padding:0;font-size:16px;list-style:none;line-height:1.333em;vertical-align:top}@media(max-width: 900px){footer .tsd-legend{width:50%}}.tsd-hierarchy{list-style:square;padding:0 0 0 20px;margin:0}.tsd-hierarchy .target{font-weight:bold}.tsd-index-panel .tsd-index-content{margin-bottom:-30px !important}.tsd-index-panel .tsd-index-section{margin-bottom:30px !important}.tsd-index-panel h3{margin:0 -20px 10px -20px;padding:0 20px 10px 20px;border-bottom:1px solid #eee}.tsd-index-panel ul.tsd-index-list{-webkit-column-count:3;-moz-column-count:3;-ms-column-count:3;-o-column-count:3;column-count:3;-webkit-column-gap:20px;-moz-column-gap:20px;-ms-column-gap:20px;-o-column-gap:20px;column-gap:20px;padding:0;list-style:none;line-height:1.333em}@media(max-width: 900px){.tsd-index-panel ul.tsd-index-list{-webkit-column-count:1;-moz-column-count:1;-ms-column-count:1;-o-column-count:1;column-count:1}}@media(min-width: 901px)and (max-width: 1024px){.tsd-index-panel ul.tsd-index-list{-webkit-column-count:2;-moz-column-count:2;-ms-column-count:2;-o-column-count:2;column-count:2}}.tsd-index-panel ul.tsd-index-list li{-webkit-page-break-inside:avoid;-moz-page-break-inside:avoid;-ms-page-break-inside:avoid;-o-page-break-inside:avoid;page-break-inside:avoid}.tsd-index-panel a,.tsd-index-panel .tsd-parent-kind-module a{color:#9600ff}.tsd-index-panel .tsd-parent-kind-interface a{color:#647f1b}.tsd-index-panel .tsd-parent-kind-enum a{color:#937210}.tsd-index-panel .tsd-parent-kind-class a{color:#0672de}.tsd-index-panel .tsd-kind-module a{color:#9600ff}.tsd-index-panel .tsd-kind-interface a{color:#647f1b}.tsd-index-panel .tsd-kind-enum a{color:#937210}.tsd-index-panel .tsd-kind-class a{color:#0672de}.tsd-index-panel .tsd-is-private a{color:#707070}.tsd-flag{display:inline-block;padding:1px 5px;border-radius:4px;color:#fff;background-color:#707070;text-indent:0;font-size:14px;font-weight:normal}.tsd-anchor{position:absolute;top:-100px}.tsd-member{position:relative}.tsd-member .tsd-anchor+h3{margin-top:0;margin-bottom:0;border-bottom:none}.tsd-navigation{margin:0 0 0 40px}.tsd-navigation a{display:block;padding-top:2px;padding-bottom:2px;border-left:2px solid transparent;color:#222;text-decoration:none;transition:border-left-color .1s}.tsd-navigation a:hover{text-decoration:underline}.tsd-navigation ul{margin:0;padding:0;list-style:none}.tsd-navigation li{padding:0}.tsd-navigation.primary{padding-bottom:40px}.tsd-navigation.primary a{display:block;padding-top:6px;padding-bottom:6px}.tsd-navigation.primary ul li a{padding-left:5px}.tsd-navigation.primary ul li li a{padding-left:25px}.tsd-navigation.primary ul li li li a{padding-left:45px}.tsd-navigation.primary ul li li li li a{padding-left:65px}.tsd-navigation.primary ul li li li li li a{padding-left:85px}.tsd-navigation.primary ul li li li li li li a{padding-left:105px}.tsd-navigation.primary>ul{border-bottom:1px solid #eee}.tsd-navigation.primary li{border-top:1px solid #eee}.tsd-navigation.primary li.current>a{font-weight:bold}.tsd-navigation.primary li.label span{display:block;padding:20px 0 6px 5px;color:#707070}.tsd-navigation.primary li.globals+li>span,.tsd-navigation.primary li.globals+li>a{padding-top:20px}.tsd-navigation.secondary{max-height:calc(100vh - 1rem - 40px);overflow:auto;position:-webkit-sticky;position:sticky;top:calc(.5rem + 40px);transition:.3s}.tsd-navigation.secondary.tsd-navigation--toolbar-hide{max-height:calc(100vh - 1rem);top:.5rem}.tsd-navigation.secondary ul{transition:opacity .2s}.tsd-navigation.secondary ul li a{padding-left:25px}.tsd-navigation.secondary ul li li a{padding-left:45px}.tsd-navigation.secondary ul li li li a{padding-left:65px}.tsd-navigation.secondary ul li li li li a{padding-left:85px}.tsd-navigation.secondary ul li li li li li a{padding-left:105px}.tsd-navigation.secondary ul li li li li li li a{padding-left:125px}.tsd-navigation.secondary ul.current a{border-left-color:#eee}.tsd-navigation.secondary li.focus>a,.tsd-navigation.secondary ul.current li.focus>a{border-left-color:#000}.tsd-navigation.secondary li.current{margin-top:20px;margin-bottom:20px;border-left-color:#eee}.tsd-navigation.secondary li.current>a{font-weight:bold}@media(min-width: 901px){.menu-sticky-wrap{position:static}}.tsd-panel{margin:20px 0;padding:20px;background-color:#fff;box-shadow:0 0 4px rgba(0,0,0,.25)}.tsd-panel:empty{display:none}.tsd-panel>h1,.tsd-panel>h2,.tsd-panel>h3{margin:1.5em -20px 10px -20px;padding:0 20px 10px 20px;border-bottom:1px solid #eee}.tsd-panel>h1.tsd-before-signature,.tsd-panel>h2.tsd-before-signature,.tsd-panel>h3.tsd-before-signature{margin-bottom:0;border-bottom:0}.tsd-panel table{display:block;width:100%;overflow:auto;margin-top:10px;word-break:normal;word-break:keep-all}.tsd-panel table th{font-weight:bold}.tsd-panel table th,.tsd-panel table td{padding:6px 13px;border:1px solid #ddd}.tsd-panel table tr{background-color:#fff;border-top:1px solid #ccc}.tsd-panel table tr:nth-child(2n){background-color:#f8f8f8}.tsd-panel-group{margin:60px 0}.tsd-panel-group>h1,.tsd-panel-group>h2,.tsd-panel-group>h3{padding-left:20px;padding-right:20px}#tsd-search{transition:background-color .2s}#tsd-search .title{position:relative;z-index:2}#tsd-search .field{position:absolute;left:0;top:0;right:40px;height:40px}#tsd-search .field input{box-sizing:border-box;position:relative;top:-50px;z-index:1;width:100%;padding:0 10px;opacity:0;outline:0;border:0;background:transparent;color:#222}#tsd-search .field label{position:absolute;overflow:hidden;right:-40px}#tsd-search .field input,#tsd-search .title{transition:opacity .2s}#tsd-search .results{position:absolute;visibility:hidden;top:40px;width:100%;margin:0;padding:0;list-style:none;box-shadow:0 0 4px rgba(0,0,0,.25)}#tsd-search .results li{padding:0 10px;background-color:#fdfdfd}#tsd-search .results li:nth-child(even){background-color:#fff}#tsd-search .results li.state{display:none}#tsd-search .results li.current,#tsd-search .results li:hover{background-color:#eee}#tsd-search .results a{display:block}#tsd-search .results a:before{top:10px}#tsd-search .results span.parent{color:#707070;font-weight:normal}#tsd-search.has-focus{background-color:#eee}#tsd-search.has-focus .field input{top:0;opacity:1}#tsd-search.has-focus .title{z-index:0;opacity:0}#tsd-search.has-focus .results{visibility:visible}#tsd-search.loading .results li.state.loading{display:block}#tsd-search.failure .results li.state.failure{display:block}.tsd-signature{margin:0 0 1em 0;padding:10px;border:1px solid #eee;font-family:Menlo,Monaco,Consolas,"Courier New",monospace;font-size:14px;overflow-x:auto}.tsd-signature.tsd-kind-icon{padding-left:30px}.tsd-signature.tsd-kind-icon:before{top:10px;left:10px}.tsd-panel>.tsd-signature{margin-left:-20px;margin-right:-20px;border-width:1px 0}.tsd-panel>.tsd-signature.tsd-kind-icon{padding-left:40px}.tsd-panel>.tsd-signature.tsd-kind-icon:before{left:20px}.tsd-signature-symbol{color:#707070;font-weight:normal}.tsd-signature-type{font-style:italic;font-weight:normal}.tsd-signatures{padding:0;margin:0 0 1em 0;border:1px solid #eee}.tsd-signatures .tsd-signature{margin:0;border-width:1px 0 0 0;transition:background-color .1s}.tsd-signatures .tsd-signature:first-child{border-top-width:0}.tsd-signatures .tsd-signature.current{background-color:#eee}.tsd-signatures.active>.tsd-signature{cursor:pointer}.tsd-panel>.tsd-signatures{margin-left:-20px;margin-right:-20px;border-width:1px 0}.tsd-panel>.tsd-signatures .tsd-signature.tsd-kind-icon{padding-left:40px}.tsd-panel>.tsd-signatures .tsd-signature.tsd-kind-icon:before{left:20px}.tsd-panel>a.anchor+.tsd-signatures{border-top-width:0;margin-top:-20px}ul.tsd-descriptions{position:relative;overflow:hidden;padding:0;list-style:none}ul.tsd-descriptions.active>.tsd-description{display:none}ul.tsd-descriptions.active>.tsd-description.current{display:block}ul.tsd-descriptions.active>.tsd-description.fade-in{animation:fade-in-delayed .3s}ul.tsd-descriptions.active>.tsd-description.fade-out{animation:fade-out-delayed .3s;position:absolute;display:block;top:0;left:0;right:0;opacity:0;visibility:hidden}ul.tsd-descriptions h4,ul.tsd-descriptions .tsd-index-panel h3,.tsd-index-panel ul.tsd-descriptions h3{font-size:16px;margin:1em 0 .5em 0}ul.tsd-parameters,ul.tsd-type-parameters{list-style:square;margin:0;padding-left:20px}ul.tsd-parameters>li.tsd-parameter-signature,ul.tsd-type-parameters>li.tsd-parameter-signature{list-style:none;margin-left:-20px}ul.tsd-parameters h5,ul.tsd-type-parameters h5{font-size:16px;margin:1em 0 .5em 0}ul.tsd-parameters .tsd-comment,ul.tsd-type-parameters .tsd-comment{margin-top:-0.5em}.tsd-sources{font-size:14px;color:#707070;margin:0 0 1em 0}.tsd-sources a{color:#707070;text-decoration:underline}.tsd-sources ul,.tsd-sources p{margin:0 !important}.tsd-sources ul{list-style:none;padding:0}.tsd-page-toolbar{position:fixed;z-index:1;top:0;left:0;width:100%;height:40px;color:#333;background:#fff;border-bottom:1px solid #eee;transition:transform .3s linear}.tsd-page-toolbar a{color:#333;text-decoration:none}.tsd-page-toolbar a.title{font-weight:bold}.tsd-page-toolbar a.title:hover{text-decoration:underline}.tsd-page-toolbar .table-wrap{display:table;width:100%;height:40px}.tsd-page-toolbar .table-cell{display:table-cell;position:relative;white-space:nowrap;line-height:40px}.tsd-page-toolbar .table-cell:first-child{width:100%}.tsd-page-toolbar--hide{transform:translateY(-100%)}.tsd-select .tsd-select-list li:before,.tsd-select .tsd-select-label:before,.tsd-widget:before{content:"";display:inline-block;width:40px;height:40px;margin:0 -8px 0 0;background-image:url(../images/widgets.png);background-repeat:no-repeat;text-indent:-1024px;vertical-align:bottom}@media(-webkit-min-device-pixel-ratio: 1.5),(min-resolution: 144dpi){.tsd-select .tsd-select-list li:before,.tsd-select .tsd-select-label:before,.tsd-widget:before{background-image:url(../images/widgets@2x.png);background-size:320px 40px}}.tsd-widget{display:inline-block;overflow:hidden;opacity:.6;height:40px;transition:opacity .1s,background-color .2s;vertical-align:bottom;cursor:pointer}.tsd-widget:hover{opacity:.8}.tsd-widget.active{opacity:1;background-color:#eee}.tsd-widget.no-caption{width:40px}.tsd-widget.no-caption:before{margin:0}.tsd-widget.search:before{background-position:0 0}.tsd-widget.menu:before{background-position:-40px 0}.tsd-widget.options:before{background-position:-80px 0}.tsd-widget.options,.tsd-widget.menu{display:none}@media(max-width: 900px){.tsd-widget.options,.tsd-widget.menu{display:inline-block}}input[type=checkbox]+.tsd-widget:before{background-position:-120px 0}input[type=checkbox]:checked+.tsd-widget:before{background-position:-160px 0}.tsd-select{position:relative;display:inline-block;height:40px;transition:opacity .1s,background-color .2s;vertical-align:bottom;cursor:pointer}.tsd-select .tsd-select-label{opacity:.6;transition:opacity .2s}.tsd-select .tsd-select-label:before{background-position:-240px 0}.tsd-select.active .tsd-select-label{opacity:.8}.tsd-select.active .tsd-select-list{visibility:visible;opacity:1;transition-delay:0s}.tsd-select .tsd-select-list{position:absolute;visibility:hidden;top:40px;left:0;margin:0;padding:0;opacity:0;list-style:none;box-shadow:0 0 4px rgba(0,0,0,.25);transition:visibility 0s .2s,opacity .2s}.tsd-select .tsd-select-list li{padding:0 20px 0 0;background-color:#fdfdfd}.tsd-select .tsd-select-list li:before{background-position:40px 0}.tsd-select .tsd-select-list li:nth-child(even){background-color:#fff}.tsd-select .tsd-select-list li:hover{background-color:#eee}.tsd-select .tsd-select-list li.selected:before{background-position:-200px 0}@media(max-width: 900px){.tsd-select .tsd-select-list{top:0;left:auto;right:100%;margin-right:-5px}.tsd-select .tsd-select-label:before{background-position:-280px 0}}img{max-width:100%} diff --git a/docs/assets/highlight.css b/docs/assets/highlight.css new file mode 100644 index 00000000..3f339d5a --- /dev/null +++ b/docs/assets/highlight.css @@ -0,0 +1,141 @@ +:root { + --light-hl-0: #001080; + --dark-hl-0: #9CDCFE; + --light-hl-1: #000000; + --dark-hl-1: #D4D4D4; + --light-hl-2: #008000; + --dark-hl-2: #6A9955; + --light-hl-3: #AF00DB; + --dark-hl-3: #C586C0; + --light-hl-4: #A31515; + --dark-hl-4: #CE9178; + --light-hl-5: #0000FF; + --dark-hl-5: #569CD6; + --light-hl-6: #0070C1; + --dark-hl-6: #4FC1FF; + --light-hl-7: #795E26; + --dark-hl-7: #DCDCAA; + --light-hl-8: #800000; + --dark-hl-8: #808080; + --light-hl-9: #800000; + --dark-hl-9: #569CD6; + --light-hl-10: #000000FF; + --dark-hl-10: #D4D4D4; + --light-hl-11: #E50000; + --dark-hl-11: #9CDCFE; + --light-hl-12: #0000FF; + --dark-hl-12: #CE9178; + --light-hl-13: #098658; + --dark-hl-13: #B5CEA8; + --light-hl-14: #811F3F; + --dark-hl-14: #D16969; + --light-hl-15: #D16969; + --dark-hl-15: #CE9178; + --light-hl-16: #000000; + --dark-hl-16: #D7BA7D; + --light-code-background: #FFFFFF; + --dark-code-background: #1E1E1E; +} + +@media (prefers-color-scheme: light) { :root { + --hl-0: var(--light-hl-0); + --hl-1: var(--light-hl-1); + --hl-2: var(--light-hl-2); + --hl-3: var(--light-hl-3); + --hl-4: var(--light-hl-4); + --hl-5: var(--light-hl-5); + --hl-6: var(--light-hl-6); + --hl-7: var(--light-hl-7); + --hl-8: var(--light-hl-8); + --hl-9: var(--light-hl-9); + --hl-10: var(--light-hl-10); + --hl-11: var(--light-hl-11); + --hl-12: var(--light-hl-12); + --hl-13: var(--light-hl-13); + --hl-14: var(--light-hl-14); + --hl-15: var(--light-hl-15); + --hl-16: var(--light-hl-16); + --code-background: var(--light-code-background); +} } + +@media (prefers-color-scheme: dark) { :root { + --hl-0: var(--dark-hl-0); + --hl-1: var(--dark-hl-1); + --hl-2: var(--dark-hl-2); + --hl-3: var(--dark-hl-3); + --hl-4: var(--dark-hl-4); + --hl-5: var(--dark-hl-5); + --hl-6: var(--dark-hl-6); + --hl-7: var(--dark-hl-7); + --hl-8: var(--dark-hl-8); + --hl-9: var(--dark-hl-9); + --hl-10: var(--dark-hl-10); + --hl-11: var(--dark-hl-11); + --hl-12: var(--dark-hl-12); + --hl-13: var(--dark-hl-13); + --hl-14: var(--dark-hl-14); + --hl-15: var(--dark-hl-15); + --hl-16: var(--dark-hl-16); + --code-background: var(--dark-code-background); +} } + +:root[data-theme='light'] { + --hl-0: var(--light-hl-0); + --hl-1: var(--light-hl-1); + --hl-2: var(--light-hl-2); + --hl-3: var(--light-hl-3); + --hl-4: var(--light-hl-4); + --hl-5: var(--light-hl-5); + --hl-6: var(--light-hl-6); + --hl-7: var(--light-hl-7); + --hl-8: var(--light-hl-8); + --hl-9: var(--light-hl-9); + --hl-10: var(--light-hl-10); + --hl-11: var(--light-hl-11); + --hl-12: var(--light-hl-12); + --hl-13: var(--light-hl-13); + --hl-14: var(--light-hl-14); + --hl-15: var(--light-hl-15); + --hl-16: var(--light-hl-16); + --code-background: var(--light-code-background); +} + +:root[data-theme='dark'] { + --hl-0: var(--dark-hl-0); + --hl-1: var(--dark-hl-1); + --hl-2: var(--dark-hl-2); + --hl-3: var(--dark-hl-3); + --hl-4: var(--dark-hl-4); + --hl-5: var(--dark-hl-5); + --hl-6: var(--dark-hl-6); + --hl-7: var(--dark-hl-7); + --hl-8: var(--dark-hl-8); + --hl-9: var(--dark-hl-9); + --hl-10: var(--dark-hl-10); + --hl-11: var(--dark-hl-11); + --hl-12: var(--dark-hl-12); + --hl-13: var(--dark-hl-13); + --hl-14: var(--dark-hl-14); + --hl-15: var(--dark-hl-15); + --hl-16: var(--dark-hl-16); + --code-background: var(--dark-code-background); +} + +.hl-0 { color: var(--hl-0); } +.hl-1 { color: var(--hl-1); } +.hl-2 { color: var(--hl-2); } +.hl-3 { color: var(--hl-3); } +.hl-4 { color: var(--hl-4); } +.hl-5 { color: var(--hl-5); } +.hl-6 { color: var(--hl-6); } +.hl-7 { color: var(--hl-7); } +.hl-8 { color: var(--hl-8); } +.hl-9 { color: var(--hl-9); } +.hl-10 { color: var(--hl-10); } +.hl-11 { color: var(--hl-11); } +.hl-12 { color: var(--hl-12); } +.hl-13 { color: var(--hl-13); } +.hl-14 { color: var(--hl-14); } +.hl-15 { color: var(--hl-15); } +.hl-16 { color: var(--hl-16); } +pre, code { background: var(--code-background); } diff --git a/docs/assets/images/icons.png b/docs/assets/images/icons.png deleted file mode 100644 index 3836d5fe46e48bbe186116855aae879c23935327..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9615 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 NZmR35l_G4O{0}dcmS_L~ diff --git a/docs/assets/images/icons@2x.png b/docs/assets/images/icons@2x.png deleted file mode 100644 index 5a209e2f6d7f915cc9cb6fe7a4264c8be4db87b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28144 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 U&wLp6h6BX&boFyt=akR{0G%$)mH+?% diff --git a/docs/assets/images/widgets@2x.png b/docs/assets/images/widgets@2x.png deleted file mode 100644 index 4bbbd57272f3b28f47527d4951ad10f950b8ad43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 855 zcmeAS@N?(olHy`uVBq!ia0y~yU}^xe12~w0Jcmn z@(X6T|9^jgLcx21{)7exgY)a>N6m2F0<`Rqr;B4q1>>88jUdw-7W`c)zLE*mq8W2H z-<&Jl_Hco5BuC5n@AbF5GD82~-e8-v=#zCyUX0F-o}8pPfAv`!GN$ff+TL<~@kgt} z62eO?_|&+>xBmM$@p|z`tIKEdpPf8%qI>4r7@jn<=eta*{3~?g(zz{Ke9zc-G^gr? z-7foa?LcS!hmbwzru}ICvbWLlW8;+l-}!^=c32!^nV`+`C*;0-*Y%l94pC;Cb3GXz zzSf%a!{gVr{Y_lVuUj+a)*Ca+!-Hu%xmP&&X-2CuANY8^i{D7Kg6qzP zXz_ps9+lN8ESH{K4`yu&b~I>N9xGlE&;2u*b?+Go!AhN?m-bxlLvtC#MzDF2kFzfHJ1W7ybqdefSqVhbOykd*Yi%EDuhs z4wF{ft^bv2+DDnKb8gj1FuvcV`M}luS>lO<^)8x>y1#R;a=-ZKwWTQQb)ioBbi;zh zD!f5V)8581to1LL7c9!l^PSC$NBPYif!_vAZhmL4)v4U)4UsrLYiH_9rmQDd?)(e5 z^pcH>qvBg*i0dus2r*mp4;zKvu=P#s-ti;2obl`NjjwoYd>e(oo#j_uyRb<7Pv^If zzZ|mGHmV)8^tbO%^>eqMw(@7(&3g{jEp-Najo7V75xI_ZHK*FA`elF{r5}E*d7+j_R diff --git a/docs/assets/js/main.js b/docs/assets/js/main.js deleted file mode 100644 index c2190a93..00000000 --- a/docs/assets/js/main.js +++ /dev/null @@ -1,51 +0,0 @@ -!function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)r.d(n,i,function(t){return e[t]}.bind(null,i));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=2)}([function(e,t,r){var n,i; -/** - * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9 - * Copyright (C) 2020 Oliver Nightingale - * @license MIT - */!function(){var s,o,a,u,l,c,h,d,f,p,y,m,v,g,x,w,L,E,b,S,k,Q,O,P,T,_,C=function(e){var t=new C.Builder;return t.pipeline.add(C.trimmer,C.stopWordFilter,C.stemmer),t.searchPipeline.add(C.stemmer),e.call(t,t),t.build()};C.version="2.3.9" -/*! - * lunr.utils - * Copyright (C) 2020 Oliver Nightingale - */,C.utils={},C.utils.warn=(s=this,function(e){s.console&&console.warn&&console.warn(e)}),C.utils.asString=function(e){return null==e?"":e.toString()},C.utils.clone=function(e){if(null==e)return e;for(var t=Object.create(null),r=Object.keys(e),n=0;n0){var u=C.utils.clone(t)||{};u.position=[o,a],u.index=i.length,i.push(new C.Token(r.slice(o,s),u))}o=s+1}}return i},C.tokenizer.separator=/[\s\-]+/ -/*! - * lunr.Pipeline - * Copyright (C) 2020 Oliver Nightingale - */,C.Pipeline=function(){this._stack=[]},C.Pipeline.registeredFunctions=Object.create(null),C.Pipeline.registerFunction=function(e,t){t in this.registeredFunctions&&C.utils.warn("Overwriting existing registered function: "+t),e.label=t,C.Pipeline.registeredFunctions[e.label]=e},C.Pipeline.warnIfFunctionNotRegistered=function(e){e.label&&e.label in this.registeredFunctions||C.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},C.Pipeline.load=function(e){var t=new C.Pipeline;return e.forEach((function(e){var r=C.Pipeline.registeredFunctions[e];if(!r)throw new Error("Cannot load unregistered function: "+e);t.add(r)})),t},C.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach((function(e){C.Pipeline.warnIfFunctionNotRegistered(e),this._stack.push(e)}),this)},C.Pipeline.prototype.after=function(e,t){C.Pipeline.warnIfFunctionNotRegistered(t);var r=this._stack.indexOf(e);if(-1==r)throw new Error("Cannot find existingFn");r+=1,this._stack.splice(r,0,t)},C.Pipeline.prototype.before=function(e,t){C.Pipeline.warnIfFunctionNotRegistered(t);var r=this._stack.indexOf(e);if(-1==r)throw new Error("Cannot find existingFn");this._stack.splice(r,0,t)},C.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);-1!=t&&this._stack.splice(t,1)},C.Pipeline.prototype.run=function(e){for(var t=this._stack.length,r=0;r1&&(se&&(r=i),s!=e);)n=r-t,i=t+Math.floor(n/2),s=this.elements[2*i];return s==e||s>e?2*i:sa?l+=2:o==a&&(t+=r[u+1]*n[l+1],u+=2,l+=2);return t},C.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},C.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,r=0;t0){var s,o=i.str.charAt(0);o in i.node.edges?s=i.node.edges[o]:(s=new C.TokenSet,i.node.edges[o]=s),1==i.str.length&&(s.final=!0),n.push({node:s,editsRemaining:i.editsRemaining,str:i.str.slice(1)})}if(0!=i.editsRemaining){if("*"in i.node.edges)var a=i.node.edges["*"];else{a=new C.TokenSet;i.node.edges["*"]=a}if(0==i.str.length&&(a.final=!0),n.push({node:a,editsRemaining:i.editsRemaining-1,str:i.str}),i.str.length>1&&n.push({node:i.node,editsRemaining:i.editsRemaining-1,str:i.str.slice(1)}),1==i.str.length&&(i.node.final=!0),i.str.length>=1){if("*"in i.node.edges)var u=i.node.edges["*"];else{u=new C.TokenSet;i.node.edges["*"]=u}1==i.str.length&&(u.final=!0),n.push({node:u,editsRemaining:i.editsRemaining-1,str:i.str.slice(1)})}if(i.str.length>1){var l,c=i.str.charAt(0),h=i.str.charAt(1);h in i.node.edges?l=i.node.edges[h]:(l=new C.TokenSet,i.node.edges[h]=l),1==i.str.length&&(l.final=!0),n.push({node:l,editsRemaining:i.editsRemaining-1,str:c+i.str.slice(2)})}}}return r},C.TokenSet.fromString=function(e){for(var t=new C.TokenSet,r=t,n=0,i=e.length;n=e;t--){var r=this.uncheckedNodes[t],n=r.child.toString();n in this.minimizedNodes?r.parent.edges[r.char]=this.minimizedNodes[n]:(r.child._str=n,this.minimizedNodes[n]=r.child),this.uncheckedNodes.pop()}} -/*! - * lunr.Index - * Copyright (C) 2020 Oliver Nightingale - */,C.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},C.Index.prototype.search=function(e){return this.query((function(t){new C.QueryParser(e,t).parse()}))},C.Index.prototype.query=function(e){for(var t=new C.Query(this.fields),r=Object.create(null),n=Object.create(null),i=Object.create(null),s=Object.create(null),o=Object.create(null),a=0;a1?1:e},C.Builder.prototype.k1=function(e){this._k1=e},C.Builder.prototype.add=function(e,t){var r=e[this._ref],n=Object.keys(this._fields);this._documents[r]=t||{},this.documentCount+=1;for(var i=0;i=this.length)return C.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},C.QueryLexer.prototype.width=function(){return this.pos-this.start},C.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},C.QueryLexer.prototype.backup=function(){this.pos-=1},C.QueryLexer.prototype.acceptDigitRun=function(){var e,t;do{t=(e=this.next()).charCodeAt(0)}while(t>47&&t<58);e!=C.QueryLexer.EOS&&this.backup()},C.QueryLexer.prototype.more=function(){return this.pos1&&(e.backup(),e.emit(C.QueryLexer.TERM)),e.ignore(),e.more())return C.QueryLexer.lexText},C.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(C.QueryLexer.EDIT_DISTANCE),C.QueryLexer.lexText},C.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(C.QueryLexer.BOOST),C.QueryLexer.lexText},C.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(C.QueryLexer.TERM)},C.QueryLexer.termSeparator=C.tokenizer.separator,C.QueryLexer.lexText=function(e){for(;;){var t=e.next();if(t==C.QueryLexer.EOS)return C.QueryLexer.lexEOS;if(92!=t.charCodeAt(0)){if(":"==t)return C.QueryLexer.lexField;if("~"==t)return e.backup(),e.width()>0&&e.emit(C.QueryLexer.TERM),C.QueryLexer.lexEditDistance;if("^"==t)return e.backup(),e.width()>0&&e.emit(C.QueryLexer.TERM),C.QueryLexer.lexBoost;if("+"==t&&1===e.width())return e.emit(C.QueryLexer.PRESENCE),C.QueryLexer.lexText;if("-"==t&&1===e.width())return e.emit(C.QueryLexer.PRESENCE),C.QueryLexer.lexText;if(t.match(C.QueryLexer.termSeparator))return C.QueryLexer.lexTerm}else e.escapeCharacter()}},C.QueryParser=function(e,t){this.lexer=new C.QueryLexer(e),this.query=t,this.currentClause={},this.lexemeIdx=0},C.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=C.QueryParser.parseClause;e;)e=e(this);return this.query},C.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},C.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},C.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},C.QueryParser.parseClause=function(e){var t=e.peekLexeme();if(null!=t)switch(t.type){case C.QueryLexer.PRESENCE:return C.QueryParser.parsePresence;case C.QueryLexer.FIELD:return C.QueryParser.parseField;case C.QueryLexer.TERM:return C.QueryParser.parseTerm;default:var r="expected either a field or a term, found "+t.type;throw t.str.length>=1&&(r+=" with value '"+t.str+"'"),new C.QueryParseError(r,t.start,t.end)}},C.QueryParser.parsePresence=function(e){var t=e.consumeLexeme();if(null!=t){switch(t.str){case"-":e.currentClause.presence=C.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=C.Query.presence.REQUIRED;break;default:var r="unrecognised presence operator'"+t.str+"'";throw new C.QueryParseError(r,t.start,t.end)}var n=e.peekLexeme();if(null==n){r="expecting term or field, found nothing";throw new C.QueryParseError(r,t.start,t.end)}switch(n.type){case C.QueryLexer.FIELD:return C.QueryParser.parseField;case C.QueryLexer.TERM:return C.QueryParser.parseTerm;default:r="expecting term or field, found '"+n.type+"'";throw new C.QueryParseError(r,n.start,n.end)}}},C.QueryParser.parseField=function(e){var t=e.consumeLexeme();if(null!=t){if(-1==e.query.allFields.indexOf(t.str)){var r=e.query.allFields.map((function(e){return"'"+e+"'"})).join(", "),n="unrecognised field '"+t.str+"', possible fields: "+r;throw new C.QueryParseError(n,t.start,t.end)}e.currentClause.fields=[t.str];var i=e.peekLexeme();if(null==i){n="expecting term, found nothing";throw new C.QueryParseError(n,t.start,t.end)}switch(i.type){case C.QueryLexer.TERM:return C.QueryParser.parseTerm;default:n="expecting term, found '"+i.type+"'";throw new C.QueryParseError(n,i.start,i.end)}}},C.QueryParser.parseTerm=function(e){var t=e.consumeLexeme();if(null!=t){e.currentClause.term=t.str.toLowerCase(),-1!=t.str.indexOf("*")&&(e.currentClause.usePipeline=!1);var r=e.peekLexeme();if(null!=r)switch(r.type){case C.QueryLexer.TERM:return e.nextClause(),C.QueryParser.parseTerm;case C.QueryLexer.FIELD:return e.nextClause(),C.QueryParser.parseField;case C.QueryLexer.EDIT_DISTANCE:return C.QueryParser.parseEditDistance;case C.QueryLexer.BOOST:return C.QueryParser.parseBoost;case C.QueryLexer.PRESENCE:return e.nextClause(),C.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+r.type+"'";throw new C.QueryParseError(n,r.start,r.end)}else e.nextClause()}},C.QueryParser.parseEditDistance=function(e){var t=e.consumeLexeme();if(null!=t){var r=parseInt(t.str,10);if(isNaN(r)){var n="edit distance must be numeric";throw new C.QueryParseError(n,t.start,t.end)}e.currentClause.editDistance=r;var i=e.peekLexeme();if(null!=i)switch(i.type){case C.QueryLexer.TERM:return e.nextClause(),C.QueryParser.parseTerm;case C.QueryLexer.FIELD:return e.nextClause(),C.QueryParser.parseField;case C.QueryLexer.EDIT_DISTANCE:return C.QueryParser.parseEditDistance;case C.QueryLexer.BOOST:return C.QueryParser.parseBoost;case C.QueryLexer.PRESENCE:return e.nextClause(),C.QueryParser.parsePresence;default:n="Unexpected lexeme type '"+i.type+"'";throw new C.QueryParseError(n,i.start,i.end)}else e.nextClause()}},C.QueryParser.parseBoost=function(e){var t=e.consumeLexeme();if(null!=t){var r=parseInt(t.str,10);if(isNaN(r)){var n="boost must be numeric";throw new C.QueryParseError(n,t.start,t.end)}e.currentClause.boost=r;var i=e.peekLexeme();if(null!=i)switch(i.type){case C.QueryLexer.TERM:return e.nextClause(),C.QueryParser.parseTerm;case C.QueryLexer.FIELD:return e.nextClause(),C.QueryParser.parseField;case C.QueryLexer.EDIT_DISTANCE:return C.QueryParser.parseEditDistance;case C.QueryLexer.BOOST:return C.QueryParser.parseBoost;case C.QueryLexer.PRESENCE:return e.nextClause(),C.QueryParser.parsePresence;default:n="Unexpected lexeme type '"+i.type+"'";throw new C.QueryParseError(n,i.start,i.end)}else e.nextClause()}},void 0===(i="function"==typeof(n=function(){return C})?n.call(t,r,t,e):n)||(e.exports=i)}()},function(e,t,r){},function(e,t,r){"use strict";r.r(t);var n=[];function i(e,t){n.push({selector:t,constructor:e})}var s,o,a=function(){function e(){this.createComponents(document.body)}return e.prototype.createComponents=function(e){n.forEach((function(t){e.querySelectorAll(t.selector).forEach((function(e){e.dataset.hasInstance||(new t.constructor({el:e}),e.dataset.hasInstance=String(!0))}))}))},e}(),u=function(e){this.el=e.el},l=r(0),c=(s=function(e,t){return(s=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])})(e,t)},function(e,t){function r(){this.constructor=e}s(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)});!function(e){e[e.Idle=0]="Idle",e[e.Loading=1]="Loading",e[e.Ready=2]="Ready",e[e.Failure=3]="Failure"}(o||(o={}));var h=function(e){function t(t){var r=e.call(this,t)||this;r.query="",r.loadingState=o.Idle,r.hasFocus=!1,r.preventPress=!1,r.data=null,r.index=null,r.resultClicked=!1;var n=document.querySelector("#tsd-search-field"),i=document.querySelector(".results");if(!n||!i)throw new Error("The input field or the result list wrapper are not found");return r.field=n,r.results=i,r.base=r.el.dataset.base+"/",r.bindEvents(),r}return c(t,e),t.prototype.loadIndex=function(){var e=this;if(this.loadingState==o.Idle&&!this.data){setTimeout((function(){e.loadingState==o.Idle&&e.setLoadingState(o.Loading)}),500);var t=this.el.dataset.index;t?fetch(t).then((function(e){if(!e.ok)throw new Error("The search index is missing");return e.json()})).then((function(t){e.data=t,e.index=l.Index.load(t.index),e.setLoadingState(o.Ready)})).catch((function(t){console.error(t),e.setLoadingState(o.Failure)})):this.setLoadingState(o.Failure)}},t.prototype.updateResults=function(){if(this.loadingState==o.Ready&&(this.results.textContent="",this.query&&this.index&&this.data)){var e=this.index.search("*"+this.query+"*");0===e.length&&(e=this.index.search("*"+this.query+"~1*"));for(var t=0,r=Math.min(10,e.length);t"+e+""})),s=n.parent||"";(s=s.replace(new RegExp(this.query,"i"),(function(e){return""+e+""})))&&(i=''+s+"."+i);var a=document.createElement("li");a.classList.value=n.classes,a.innerHTML='\n '+i+"\n ",this.results.appendChild(a)}}},t.prototype.setLoadingState=function(e){this.loadingState!=e&&(this.el.classList.remove(o[this.loadingState].toLowerCase()),this.loadingState=e,this.el.classList.add(o[this.loadingState].toLowerCase()),this.updateResults())},t.prototype.setHasFocus=function(e){this.hasFocus!=e&&(this.hasFocus=e,this.el.classList.toggle("has-focus"),e?(this.setQuery(""),this.field.value=""):this.field.value=this.query)},t.prototype.setQuery=function(e){this.query=e.trim(),this.updateResults()},t.prototype.setCurrentResult=function(e){var t=this.results.querySelector(".current");if(t){var r=1==e?t.nextElementSibling:t.previousElementSibling;r&&(t.classList.remove("current"),r.classList.add("current"))}else(t=this.results.querySelector(1==e?"li:first-child":"li:last-child"))&&t.classList.add("current")},t.prototype.gotoCurrentResult=function(){var e=this.results.querySelector(".current");if(e||(e=this.results.querySelector("li:first-child")),e){var t=e.querySelector("a");t&&(window.location.href=t.href),this.field.blur()}},t.prototype.bindEvents=function(){var e=this;this.results.addEventListener("mousedown",(function(){e.resultClicked=!0})),this.results.addEventListener("mouseup",(function(){e.resultClicked=!1,e.setHasFocus(!1)})),this.field.addEventListener("focusin",(function(){e.setHasFocus(!0),e.loadIndex()})),this.field.addEventListener("focusout",(function(){e.resultClicked?e.resultClicked=!1:setTimeout((function(){return e.setHasFocus(!1)}),100)})),this.field.addEventListener("input",(function(){e.setQuery(e.field.value)})),this.field.addEventListener("keydown",(function(t){13==t.keyCode||27==t.keyCode||38==t.keyCode||40==t.keyCode?(e.preventPress=!0,t.preventDefault(),13==t.keyCode?e.gotoCurrentResult():27==t.keyCode?e.field.blur():38==t.keyCode?e.setCurrentResult(-1):40==t.keyCode&&e.setCurrentResult(1)):e.preventPress=!1})),this.field.addEventListener("keypress",(function(t){e.preventPress&&t.preventDefault()})),document.body.addEventListener("keydown",(function(t){t.altKey||t.ctrlKey||t.metaKey||!e.hasFocus&&t.keyCode>47&&t.keyCode<112&&e.field.focus()}))},t}(u),d=function(){function e(){this.listeners={}}return e.prototype.addEventListener=function(e,t){e in this.listeners||(this.listeners[e]=[]),this.listeners[e].push(t)},e.prototype.removeEventListener=function(e,t){if(e in this.listeners)for(var r=this.listeners[e],n=0,i=r.length;n=this.scrollTop||0===this.scrollTop,e!==this.showToolbar&&(this.toolbar.classList.toggle("tsd-page-toolbar--hide"),this.secondaryNav.classList.toggle("tsd-navigation--toolbar-hide")),this.lastY=this.scrollTop},t.instance=new t,t}(d),m=function(){var e=function(t,r){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])})(t,r)};return function(t,r){function n(){this.constructor=t}e(t,r),t.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),v=function(e){function t(t){var r=e.call(this,t)||this;return r.anchors=[],r.index=-1,y.instance.addEventListener("resize",(function(){return r.onResize()})),y.instance.addEventListener("scroll",(function(e){return r.onScroll(e)})),r.createAnchors(),r}return m(t,e),t.prototype.createAnchors=function(){var e=this,t=window.location.href;-1!=t.indexOf("#")&&(t=t.substr(0,t.indexOf("#"))),this.el.querySelectorAll("a").forEach((function(r){var n=r.href;if(-1!=n.indexOf("#")&&n.substr(0,t.length)==t){var i=n.substr(n.indexOf("#")+1),s=document.querySelector("a.tsd-anchor[name="+i+"]"),o=r.parentNode;s&&o&&e.anchors.push({link:o,anchor:s,position:0})}})),this.onResize()},t.prototype.onResize=function(){for(var e,t=0,r=this.anchors.length;t-1&&r[i].position>t;)i-=1;for(;i-1&&this.anchors[this.index].link.classList.remove("focus"),this.index=i,this.index>-1&&this.anchors[this.index].link.classList.add("focus"))},t}(u),g=function(){var e=function(t,r){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])})(t,r)};return function(t,r){function n(){this.constructor=t}e(t,r),t.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),x=function(){function e(e,t){this.signature=e,this.description=t}return e.prototype.addClass=function(e){return this.signature.classList.add(e),this.description.classList.add(e),this},e.prototype.removeClass=function(e){return this.signature.classList.remove(e),this.description.classList.remove(e),this},e}(),w=function(e){function t(t){var r=e.call(this,t)||this;return r.groups=[],r.index=-1,r.createGroups(),r.container&&(r.el.classList.add("active"),Array.from(r.el.children).forEach((function(e){e.addEventListener("touchstart",(function(e){return r.onClick(e)})),e.addEventListener("click",(function(e){return r.onClick(e)}))})),r.container.classList.add("active"),r.setIndex(0)),r}return g(t,e),t.prototype.setIndex=function(e){if(e<0&&(e=0),e>this.groups.length-1&&(e=this.groups.length-1),this.index!=e){var t=this.groups[e];if(this.index>-1){var r=this.groups[this.index];r.removeClass("current").addClass("fade-out"),t.addClass("current"),t.addClass("fade-in"),y.instance.triggerResize(),setTimeout((function(){r.removeClass("fade-out"),t.removeClass("fade-in")}),300)}else t.addClass("current"),y.instance.triggerResize();this.index=e}},t.prototype.createGroups=function(){var e=this.el.children;if(!(e.length<2)){this.container=this.el.nextElementSibling;var t=this.container.children;this.groups=[];for(var r=0;r10}})),document.addEventListener(b,(function(){Q=!1})),document.addEventListener("click",(function(e){k&&(e.preventDefault(),e.stopImmediatePropagation(),k=!1)}));var T=function(){var e=function(t,r){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])})(t,r)};return function(t,r){function n(){this.constructor=t}e(t,r),t.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),_=function(e){function t(t){var r=e.call(this,t)||this;return r.className=r.el.dataset.toggle||"",r.el.addEventListener(b,(function(e){return r.onPointerUp(e)})),r.el.addEventListener("click",(function(e){return e.preventDefault()})),document.addEventListener(L,(function(e){return r.onDocumentPointerDown(e)})),document.addEventListener(b,(function(e){return r.onDocumentPointerUp(e)})),r}return T(t,e),t.prototype.setActive=function(e){if(this.active!=e){this.active=e,document.documentElement.classList.toggle("has-"+this.className,e),this.el.classList.toggle("active",e);var t=(this.active?"to-has-":"from-has-")+this.className;document.documentElement.classList.add(t),setTimeout((function(){return document.documentElement.classList.remove(t)}),500)}},t.prototype.onPointerUp=function(e){O||(this.setActive(!0),e.preventDefault())},t.prototype.onDocumentPointerDown=function(e){if(this.active){if(e.target.closest(".col-menu, .tsd-filter-group"))return;this.setActive(!1)}},t.prototype.onDocumentPointerUp=function(e){var t=this;if(!O&&this.active&&e.target.closest(".col-menu")){var r=e.target.closest("a");if(r){var n=window.location.href;-1!=n.indexOf("#")&&(n=n.substr(0,n.indexOf("#"))),r.href.substr(0,n.length)==n&&setTimeout((function(){return t.setActive(!1)}),250)}}},t}(u),C=function(){var e=function(t,r){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])})(t,r)};return function(t,r){function n(){this.constructor=t}e(t,r),t.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),R=function(){function e(e,t){this.key=e,this.value=t,this.defaultValue=t,this.initialize(),window.localStorage[this.key]&&this.setValue(this.fromLocalStorage(window.localStorage[this.key]))}return e.prototype.initialize=function(){},e.prototype.setValue=function(e){if(this.value!=e){var t=this.value;this.value=e,window.localStorage[this.key]=this.toLocalStorage(e),this.handleValueChange(t,e)}},e}(),I=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return C(t,e),t.prototype.initialize=function(){var e=this,t=document.querySelector("#tsd-filter-"+this.key);t&&(this.checkbox=t,this.checkbox.addEventListener("change",(function(){e.setValue(e.checkbox.checked)})))},t.prototype.handleValueChange=function(e,t){this.checkbox&&(this.checkbox.checked=this.value,document.documentElement.classList.toggle("toggle-"+this.key,this.value!=this.defaultValue))},t.prototype.fromLocalStorage=function(e){return"true"==e},t.prototype.toLocalStorage=function(e){return e?"true":"false"},t}(R),j=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return C(t,e),t.prototype.initialize=function(){var e=this;document.documentElement.classList.add("toggle-"+this.key+this.value);var t=document.querySelector("#tsd-filter-"+this.key);if(t){this.select=t;var r=function(){e.select.classList.add("active")};this.select.addEventListener(L,r),this.select.addEventListener("mouseover",r),this.select.addEventListener("mouseleave",(function(){e.select.classList.remove("active")})),this.select.querySelectorAll("li").forEach((function(r){r.addEventListener(b,(function(r){t.classList.remove("active"),e.setValue(r.target.dataset.value||"")}))})),document.addEventListener(L,(function(t){e.select.contains(t.target)||e.select.classList.remove("active")}))}},t.prototype.handleValueChange=function(e,t){this.select.querySelectorAll("li.selected").forEach((function(e){e.classList.remove("selected")}));var r=this.select.querySelector('li[data-value="'+t+'"]'),n=this.select.querySelector(".tsd-select-label");r&&n&&(r.classList.add("selected"),n.textContent=r.textContent),document.documentElement.classList.remove("toggle-"+e),document.documentElement.classList.add("toggle-"+t)},t.prototype.fromLocalStorage=function(e){return e},t.prototype.toLocalStorage=function(e){return e},t}(R),F=function(e){function t(t){var r=e.call(this,t)||this;return r.optionVisibility=new j("visibility","private"),r.optionInherited=new I("inherited",!0),r.optionExternals=new I("externals",!0),r.optionOnlyExported=new I("only-exported",!1),r}return C(t,e),t.isSupported=function(){try{return void 0!==window.localStorage}catch(e){return!1}},t}(u);r(1);i(h,"#tsd-search"),i(v,".menu-highlight"),i(w,".tsd-signatures"),i(_,"a[data-toggle]"),F.isSupported()?i(F,"#tsd-filter"):document.documentElement.classList.add("no-filter");var N=new a;Object.defineProperty(window,"app",{value:N})}]); \ No newline at end of file diff --git a/docs/assets/js/search.json b/docs/assets/js/search.json deleted file mode 100644 index 41dd9bc9..00000000 --- a/docs/assets/js/search.json +++ /dev/null @@ -1 +0,0 @@ -{"kinds":{"1":"Module","32":"Variable","128":"Class","512":"Constructor","1024":"Property","2048":"Method","65536":"Type literal","262144":"Accessor","4194304":"Type alias"},"rows":[{"id":0,"kind":1,"name":"\"SearchableMap/SearchableMap\"","url":"modules/_searchablemap_searchablemap_.html","classes":"tsd-kind-module"},{"id":1,"kind":128,"name":"SearchableMap","url":"classes/_searchablemap_searchablemap_.searchablemap.html","classes":"tsd-kind-class tsd-parent-kind-module tsd-has-type-parameter","parent":"\"SearchableMap/SearchableMap\""},{"id":2,"kind":512,"name":"constructor","url":"classes/_searchablemap_searchablemap_.searchablemap.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"\"SearchableMap/SearchableMap\".SearchableMap"},{"id":3,"kind":2048,"name":"atPrefix","url":"classes/_searchablemap_searchablemap_.searchablemap.html#atprefix","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"SearchableMap/SearchableMap\".SearchableMap"},{"id":4,"kind":2048,"name":"clear","url":"classes/_searchablemap_searchablemap_.searchablemap.html#clear","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"SearchableMap/SearchableMap\".SearchableMap"},{"id":5,"kind":2048,"name":"delete","url":"classes/_searchablemap_searchablemap_.searchablemap.html#delete","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"SearchableMap/SearchableMap\".SearchableMap"},{"id":6,"kind":2048,"name":"entries","url":"classes/_searchablemap_searchablemap_.searchablemap.html#entries","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"SearchableMap/SearchableMap\".SearchableMap"},{"id":7,"kind":2048,"name":"forEach","url":"classes/_searchablemap_searchablemap_.searchablemap.html#foreach","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"SearchableMap/SearchableMap\".SearchableMap"},{"id":8,"kind":2048,"name":"fuzzyGet","url":"classes/_searchablemap_searchablemap_.searchablemap.html#fuzzyget","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"SearchableMap/SearchableMap\".SearchableMap"},{"id":9,"kind":2048,"name":"get","url":"classes/_searchablemap_searchablemap_.searchablemap.html#get","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"SearchableMap/SearchableMap\".SearchableMap"},{"id":10,"kind":2048,"name":"has","url":"classes/_searchablemap_searchablemap_.searchablemap.html#has","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"SearchableMap/SearchableMap\".SearchableMap"},{"id":11,"kind":2048,"name":"keys","url":"classes/_searchablemap_searchablemap_.searchablemap.html#keys","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"SearchableMap/SearchableMap\".SearchableMap"},{"id":12,"kind":2048,"name":"set","url":"classes/_searchablemap_searchablemap_.searchablemap.html#set","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"SearchableMap/SearchableMap\".SearchableMap"},{"id":13,"kind":262144,"name":"size","url":"classes/_searchablemap_searchablemap_.searchablemap.html#size","classes":"tsd-kind-get-signature tsd-parent-kind-class","parent":"\"SearchableMap/SearchableMap\".SearchableMap"},{"id":14,"kind":2048,"name":"update","url":"classes/_searchablemap_searchablemap_.searchablemap.html#update","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"SearchableMap/SearchableMap\".SearchableMap"},{"id":15,"kind":2048,"name":"fetch","url":"classes/_searchablemap_searchablemap_.searchablemap.html#fetch","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"SearchableMap/SearchableMap\".SearchableMap"},{"id":16,"kind":2048,"name":"values","url":"classes/_searchablemap_searchablemap_.searchablemap.html#values","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"SearchableMap/SearchableMap\".SearchableMap"},{"id":17,"kind":2048,"name":"[Symbol.iterator]","url":"classes/_searchablemap_searchablemap_.searchablemap.html#_symbol_iterator_","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"SearchableMap/SearchableMap\".SearchableMap"},{"id":18,"kind":2048,"name":"from","url":"classes/_searchablemap_searchablemap_.searchablemap.html#from","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter tsd-is-static","parent":"\"SearchableMap/SearchableMap\".SearchableMap"},{"id":19,"kind":2048,"name":"fromObject","url":"classes/_searchablemap_searchablemap_.searchablemap.html#fromobject","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter tsd-is-static","parent":"\"SearchableMap/SearchableMap\".SearchableMap"},{"id":20,"kind":1,"name":"\"MiniSearch\"","url":"modules/_minisearch_.html","classes":"tsd-kind-module"},{"id":21,"kind":128,"name":"MiniSearch","url":"classes/_minisearch_.minisearch.html","classes":"tsd-kind-class tsd-parent-kind-module tsd-has-type-parameter","parent":"\"MiniSearch\""},{"id":22,"kind":1024,"name":"wildcard","url":"classes/_minisearch_.minisearch.html#wildcard","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"\"MiniSearch\".MiniSearch"},{"id":23,"kind":512,"name":"constructor","url":"classes/_minisearch_.minisearch.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"\"MiniSearch\".MiniSearch"},{"id":24,"kind":2048,"name":"add","url":"classes/_minisearch_.minisearch.html#add","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"MiniSearch\".MiniSearch"},{"id":25,"kind":2048,"name":"addAll","url":"classes/_minisearch_.minisearch.html#addall","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"MiniSearch\".MiniSearch"},{"id":26,"kind":2048,"name":"addAllAsync","url":"classes/_minisearch_.minisearch.html#addallasync","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"MiniSearch\".MiniSearch"},{"id":27,"kind":2048,"name":"remove","url":"classes/_minisearch_.minisearch.html#remove","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"MiniSearch\".MiniSearch"},{"id":28,"kind":2048,"name":"removeAll","url":"classes/_minisearch_.minisearch.html#removeall","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"MiniSearch\".MiniSearch"},{"id":29,"kind":2048,"name":"discard","url":"classes/_minisearch_.minisearch.html#discard","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"MiniSearch\".MiniSearch"},{"id":30,"kind":2048,"name":"discardAll","url":"classes/_minisearch_.minisearch.html#discardall","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"MiniSearch\".MiniSearch"},{"id":31,"kind":2048,"name":"replace","url":"classes/_minisearch_.minisearch.html#replace","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"MiniSearch\".MiniSearch"},{"id":32,"kind":2048,"name":"vacuum","url":"classes/_minisearch_.minisearch.html#vacuum","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"MiniSearch\".MiniSearch"},{"id":33,"kind":262144,"name":"isVacuuming","url":"classes/_minisearch_.minisearch.html#isvacuuming","classes":"tsd-kind-get-signature tsd-parent-kind-class","parent":"\"MiniSearch\".MiniSearch"},{"id":34,"kind":262144,"name":"dirtCount","url":"classes/_minisearch_.minisearch.html#dirtcount","classes":"tsd-kind-get-signature tsd-parent-kind-class","parent":"\"MiniSearch\".MiniSearch"},{"id":35,"kind":262144,"name":"dirtFactor","url":"classes/_minisearch_.minisearch.html#dirtfactor","classes":"tsd-kind-get-signature tsd-parent-kind-class","parent":"\"MiniSearch\".MiniSearch"},{"id":36,"kind":2048,"name":"has","url":"classes/_minisearch_.minisearch.html#has","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"MiniSearch\".MiniSearch"},{"id":37,"kind":2048,"name":"getStoredFields","url":"classes/_minisearch_.minisearch.html#getstoredfields","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"MiniSearch\".MiniSearch"},{"id":38,"kind":2048,"name":"search","url":"classes/_minisearch_.minisearch.html#search","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"MiniSearch\".MiniSearch"},{"id":39,"kind":2048,"name":"autoSuggest","url":"classes/_minisearch_.minisearch.html#autosuggest","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"MiniSearch\".MiniSearch"},{"id":40,"kind":262144,"name":"documentCount","url":"classes/_minisearch_.minisearch.html#documentcount","classes":"tsd-kind-get-signature tsd-parent-kind-class","parent":"\"MiniSearch\".MiniSearch"},{"id":41,"kind":262144,"name":"termCount","url":"classes/_minisearch_.minisearch.html#termcount","classes":"tsd-kind-get-signature tsd-parent-kind-class","parent":"\"MiniSearch\".MiniSearch"},{"id":42,"kind":2048,"name":"loadJSON","url":"classes/_minisearch_.minisearch.html#loadjson","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter tsd-is-static","parent":"\"MiniSearch\".MiniSearch"},{"id":43,"kind":2048,"name":"getDefault","url":"classes/_minisearch_.minisearch.html#getdefault","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"\"MiniSearch\".MiniSearch"},{"id":44,"kind":2048,"name":"toJSON","url":"classes/_minisearch_.minisearch.html#tojson","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"MiniSearch\".MiniSearch"},{"id":45,"kind":4194304,"name":"SearchOptions","url":"modules/_minisearch_.html#searchoptions-1","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"\"MiniSearch\""},{"id":46,"kind":65536,"name":"__type","url":"modules/_minisearch_.html#searchoptions-1.__type-3","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"\"MiniSearch\".SearchOptions"},{"id":47,"kind":32,"name":"fields","url":"modules/_minisearch_.html#searchoptions-1.__type-3.fields-1","classes":"tsd-kind-variable tsd-parent-kind-type-literal","parent":"\"MiniSearch\".SearchOptions.__type"},{"id":48,"kind":32,"name":"filter","url":"modules/_minisearch_.html#searchoptions-1.__type-3.filter","classes":"tsd-kind-variable tsd-parent-kind-type-literal","parent":"\"MiniSearch\".SearchOptions.__type"},{"id":49,"kind":32,"name":"boost","url":"modules/_minisearch_.html#searchoptions-1.__type-3.boost","classes":"tsd-kind-variable tsd-parent-kind-type-literal","parent":"\"MiniSearch\".SearchOptions.__type"},{"id":50,"kind":32,"name":"weights","url":"modules/_minisearch_.html#searchoptions-1.__type-3.weights","classes":"tsd-kind-variable tsd-parent-kind-type-literal","parent":"\"MiniSearch\".SearchOptions.__type"},{"id":51,"kind":32,"name":"boostDocument","url":"modules/_minisearch_.html#searchoptions-1.__type-3.boostdocument","classes":"tsd-kind-variable tsd-parent-kind-type-literal","parent":"\"MiniSearch\".SearchOptions.__type"},{"id":52,"kind":32,"name":"prefix","url":"modules/_minisearch_.html#searchoptions-1.__type-3.prefix","classes":"tsd-kind-variable tsd-parent-kind-type-literal","parent":"\"MiniSearch\".SearchOptions.__type"},{"id":53,"kind":32,"name":"fuzzy","url":"modules/_minisearch_.html#searchoptions-1.__type-3.fuzzy","classes":"tsd-kind-variable tsd-parent-kind-type-literal","parent":"\"MiniSearch\".SearchOptions.__type"},{"id":54,"kind":32,"name":"maxFuzzy","url":"modules/_minisearch_.html#searchoptions-1.__type-3.maxfuzzy","classes":"tsd-kind-variable tsd-parent-kind-type-literal","parent":"\"MiniSearch\".SearchOptions.__type"},{"id":55,"kind":32,"name":"combineWith","url":"modules/_minisearch_.html#searchoptions-1.__type-3.combinewith","classes":"tsd-kind-variable tsd-parent-kind-type-literal","parent":"\"MiniSearch\".SearchOptions.__type"},{"id":56,"kind":32,"name":"tokenize","url":"modules/_minisearch_.html#searchoptions-1.__type-3.tokenize-1","classes":"tsd-kind-variable tsd-parent-kind-type-literal","parent":"\"MiniSearch\".SearchOptions.__type"},{"id":57,"kind":32,"name":"processTerm","url":"modules/_minisearch_.html#searchoptions-1.__type-3.processterm-1","classes":"tsd-kind-variable tsd-parent-kind-type-literal","parent":"\"MiniSearch\".SearchOptions.__type"},{"id":58,"kind":32,"name":"bm25","url":"modules/_minisearch_.html#searchoptions-1.__type-3.bm25","classes":"tsd-kind-variable tsd-parent-kind-type-literal","parent":"\"MiniSearch\".SearchOptions.__type"},{"id":59,"kind":4194304,"name":"Options","url":"modules/_minisearch_.html#options","classes":"tsd-kind-type-alias tsd-parent-kind-module tsd-has-type-parameter","parent":"\"MiniSearch\""},{"id":60,"kind":65536,"name":"__type","url":"modules/_minisearch_.html#options.__type-2","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"\"MiniSearch\".Options"},{"id":61,"kind":32,"name":"fields","url":"modules/_minisearch_.html#options.__type-2.fields","classes":"tsd-kind-variable tsd-parent-kind-type-literal","parent":"\"MiniSearch\".Options.__type"},{"id":62,"kind":32,"name":"idField","url":"modules/_minisearch_.html#options.__type-2.idfield","classes":"tsd-kind-variable tsd-parent-kind-type-literal","parent":"\"MiniSearch\".Options.__type"},{"id":63,"kind":32,"name":"storeFields","url":"modules/_minisearch_.html#options.__type-2.storefields","classes":"tsd-kind-variable tsd-parent-kind-type-literal","parent":"\"MiniSearch\".Options.__type"},{"id":64,"kind":32,"name":"extractField","url":"modules/_minisearch_.html#options.__type-2.extractfield","classes":"tsd-kind-variable tsd-parent-kind-type-literal","parent":"\"MiniSearch\".Options.__type"},{"id":65,"kind":32,"name":"tokenize","url":"modules/_minisearch_.html#options.__type-2.tokenize","classes":"tsd-kind-variable tsd-parent-kind-type-literal","parent":"\"MiniSearch\".Options.__type"},{"id":66,"kind":32,"name":"processTerm","url":"modules/_minisearch_.html#options.__type-2.processterm","classes":"tsd-kind-variable tsd-parent-kind-type-literal","parent":"\"MiniSearch\".Options.__type"},{"id":67,"kind":32,"name":"logger","url":"modules/_minisearch_.html#options.__type-2.logger","classes":"tsd-kind-variable tsd-parent-kind-type-literal","parent":"\"MiniSearch\".Options.__type"},{"id":68,"kind":32,"name":"autoVacuum","url":"modules/_minisearch_.html#options.__type-2.autovacuum","classes":"tsd-kind-variable tsd-parent-kind-type-literal","parent":"\"MiniSearch\".Options.__type"},{"id":69,"kind":32,"name":"searchOptions","url":"modules/_minisearch_.html#options.__type-2.searchoptions","classes":"tsd-kind-variable tsd-parent-kind-type-literal","parent":"\"MiniSearch\".Options.__type"},{"id":70,"kind":32,"name":"autoSuggestOptions","url":"modules/_minisearch_.html#options.__type-2.autosuggestoptions","classes":"tsd-kind-variable tsd-parent-kind-type-literal","parent":"\"MiniSearch\".Options.__type"},{"id":71,"kind":4194304,"name":"Suggestion","url":"modules/_minisearch_.html#suggestion","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"\"MiniSearch\""},{"id":72,"kind":65536,"name":"__type","url":"modules/_minisearch_.html#suggestion.__type-5","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"\"MiniSearch\".Suggestion"},{"id":73,"kind":32,"name":"suggestion","url":"modules/_minisearch_.html#suggestion.__type-5.suggestion-1","classes":"tsd-kind-variable tsd-parent-kind-type-literal","parent":"\"MiniSearch\".Suggestion.__type"},{"id":74,"kind":32,"name":"terms","url":"modules/_minisearch_.html#suggestion.__type-5.terms-1","classes":"tsd-kind-variable tsd-parent-kind-type-literal","parent":"\"MiniSearch\".Suggestion.__type"},{"id":75,"kind":32,"name":"score","url":"modules/_minisearch_.html#suggestion.__type-5.score-1","classes":"tsd-kind-variable tsd-parent-kind-type-literal","parent":"\"MiniSearch\".Suggestion.__type"},{"id":76,"kind":4194304,"name":"MatchInfo","url":"modules/_minisearch_.html#matchinfo","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"\"MiniSearch\""},{"id":77,"kind":65536,"name":"__type","url":"modules/_minisearch_.html#matchinfo.__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"\"MiniSearch\".MatchInfo"},{"id":78,"kind":4194304,"name":"SearchResult","url":"modules/_minisearch_.html#searchresult","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"\"MiniSearch\""},{"id":79,"kind":65536,"name":"__type","url":"modules/_minisearch_.html#searchresult.__type-4","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"\"MiniSearch\".SearchResult"},{"id":80,"kind":32,"name":"id","url":"modules/_minisearch_.html#searchresult.__type-4.id","classes":"tsd-kind-variable tsd-parent-kind-type-literal","parent":"\"MiniSearch\".SearchResult.__type"},{"id":81,"kind":32,"name":"terms","url":"modules/_minisearch_.html#searchresult.__type-4.terms","classes":"tsd-kind-variable tsd-parent-kind-type-literal","parent":"\"MiniSearch\".SearchResult.__type"},{"id":82,"kind":32,"name":"score","url":"modules/_minisearch_.html#searchresult.__type-4.score","classes":"tsd-kind-variable tsd-parent-kind-type-literal","parent":"\"MiniSearch\".SearchResult.__type"},{"id":83,"kind":32,"name":"match","url":"modules/_minisearch_.html#searchresult.__type-4.match","classes":"tsd-kind-variable tsd-parent-kind-type-literal","parent":"\"MiniSearch\".SearchResult.__type"},{"id":84,"kind":4194304,"name":"QueryCombination","url":"modules/_minisearch_.html#querycombination","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"\"MiniSearch\""},{"id":85,"kind":4194304,"name":"Wildcard","url":"modules/_minisearch_.html#wildcard","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"\"MiniSearch\""},{"id":86,"kind":4194304,"name":"Query","url":"modules/_minisearch_.html#query","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"\"MiniSearch\""},{"id":87,"kind":4194304,"name":"VacuumOptions","url":"modules/_minisearch_.html#vacuumoptions","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"\"MiniSearch\""},{"id":88,"kind":65536,"name":"__type","url":"modules/_minisearch_.html#vacuumoptions.__type-7","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"\"MiniSearch\".VacuumOptions"},{"id":89,"kind":32,"name":"batchSize","url":"modules/_minisearch_.html#vacuumoptions.__type-7.batchsize","classes":"tsd-kind-variable tsd-parent-kind-type-literal","parent":"\"MiniSearch\".VacuumOptions.__type"},{"id":90,"kind":32,"name":"batchWait","url":"modules/_minisearch_.html#vacuumoptions.__type-7.batchwait","classes":"tsd-kind-variable tsd-parent-kind-type-literal","parent":"\"MiniSearch\".VacuumOptions.__type"},{"id":91,"kind":4194304,"name":"VacuumConditions","url":"modules/_minisearch_.html#vacuumconditions","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"\"MiniSearch\""},{"id":92,"kind":65536,"name":"__type","url":"modules/_minisearch_.html#vacuumconditions.__type-6","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"\"MiniSearch\".VacuumConditions"},{"id":93,"kind":32,"name":"minDirtCount","url":"modules/_minisearch_.html#vacuumconditions.__type-6.mindirtcount","classes":"tsd-kind-variable tsd-parent-kind-type-literal","parent":"\"MiniSearch\".VacuumConditions.__type"},{"id":94,"kind":32,"name":"minDirtFactor","url":"modules/_minisearch_.html#vacuumconditions.__type-6.mindirtfactor","classes":"tsd-kind-variable tsd-parent-kind-type-literal","parent":"\"MiniSearch\".VacuumConditions.__type"},{"id":95,"kind":4194304,"name":"AutoVacuumOptions","url":"modules/_minisearch_.html#autovacuumoptions","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"\"MiniSearch\""},{"id":96,"kind":4194304,"name":"BM25Params","url":"modules/_minisearch_.html#bm25params","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"\"MiniSearch\""},{"id":97,"kind":65536,"name":"__type","url":"modules/_minisearch_.html#bm25params.__type","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"\"MiniSearch\".BM25Params"},{"id":98,"kind":32,"name":"k","url":"modules/_minisearch_.html#bm25params.__type.k","classes":"tsd-kind-variable tsd-parent-kind-type-literal","parent":"\"MiniSearch\".BM25Params.__type"},{"id":99,"kind":32,"name":"b","url":"modules/_minisearch_.html#bm25params.__type.b","classes":"tsd-kind-variable tsd-parent-kind-type-literal","parent":"\"MiniSearch\".BM25Params.__type"},{"id":100,"kind":32,"name":"d","url":"modules/_minisearch_.html#bm25params.__type.d","classes":"tsd-kind-variable tsd-parent-kind-type-literal","parent":"\"MiniSearch\".BM25Params.__type"}],"index":{"version":"2.3.9","fields":["name","parent"],"fieldVectors":[["name/0",[0,37.087]],["parent/0",[]],["name/1",[1,42.195]],["parent/1",[0,3.678]],["name/2",[2,37.087]],["parent/2",[3,1.693]],["name/3",[4,42.195]],["parent/3",[3,1.693]],["name/4",[5,42.195]],["parent/4",[3,1.693]],["name/5",[6,42.195]],["parent/5",[3,1.693]],["name/6",[7,42.195]],["parent/6",[3,1.693]],["name/7",[8,42.195]],["parent/7",[3,1.693]],["name/8",[9,42.195]],["parent/8",[3,1.693]],["name/9",[10,42.195]],["parent/9",[3,1.693]],["name/10",[11,37.087]],["parent/10",[3,1.693]],["name/11",[12,42.195]],["parent/11",[3,1.693]],["name/12",[13,42.195]],["parent/12",[3,1.693]],["name/13",[14,42.195]],["parent/13",[3,1.693]],["name/14",[15,42.195]],["parent/14",[3,1.693]],["name/15",[16,42.195]],["parent/15",[3,1.693]],["name/16",[17,42.195]],["parent/16",[3,1.693]],["name/17",[18,42.195]],["parent/17",[3,1.693]],["name/18",[19,42.195]],["parent/18",[3,1.693]],["name/19",[20,42.195]],["parent/19",[3,1.693]],["name/20",[21,18.841]],["parent/20",[]],["name/21",[21,18.841]],["parent/21",[21,1.869]],["name/22",[22,37.087]],["parent/22",[23,1.456]],["name/23",[2,37.087]],["parent/23",[23,1.456]],["name/24",[24,42.195]],["parent/24",[23,1.456]],["name/25",[25,42.195]],["parent/25",[23,1.456]],["name/26",[26,42.195]],["parent/26",[23,1.456]],["name/27",[27,42.195]],["parent/27",[23,1.456]],["name/28",[28,42.195]],["parent/28",[23,1.456]],["name/29",[29,42.195]],["parent/29",[23,1.456]],["name/30",[30,42.195]],["parent/30",[23,1.456]],["name/31",[31,42.195]],["parent/31",[23,1.456]],["name/32",[32,42.195]],["parent/32",[23,1.456]],["name/33",[33,42.195]],["parent/33",[23,1.456]],["name/34",[34,42.195]],["parent/34",[23,1.456]],["name/35",[35,42.195]],["parent/35",[23,1.456]],["name/36",[11,37.087]],["parent/36",[23,1.456]],["name/37",[36,42.195]],["parent/37",[23,1.456]],["name/38",[37,42.195]],["parent/38",[23,1.456]],["name/39",[38,42.195]],["parent/39",[23,1.456]],["name/40",[39,42.195]],["parent/40",[23,1.456]],["name/41",[40,42.195]],["parent/41",[23,1.456]],["name/42",[41,42.195]],["parent/42",[23,1.456]],["name/43",[42,42.195]],["parent/43",[23,1.456]],["name/44",[43,42.195]],["parent/44",[23,1.456]],["name/45",[44,37.087]],["parent/45",[21,1.869]],["name/46",[45,24.849]],["parent/46",[46,4.185]],["name/47",[47,37.087]],["parent/47",[48,2.082]],["name/48",[49,42.195]],["parent/48",[48,2.082]],["name/49",[50,42.195]],["parent/49",[48,2.082]],["name/50",[51,42.195]],["parent/50",[48,2.082]],["name/51",[52,42.195]],["parent/51",[48,2.082]],["name/52",[53,42.195]],["parent/52",[48,2.082]],["name/53",[54,42.195]],["parent/53",[48,2.082]],["name/54",[55,42.195]],["parent/54",[48,2.082]],["name/55",[56,42.195]],["parent/55",[48,2.082]],["name/56",[57,37.087]],["parent/56",[48,2.082]],["name/57",[58,37.087]],["parent/57",[48,2.082]],["name/58",[59,42.195]],["parent/58",[48,2.082]],["name/59",[60,42.195]],["parent/59",[21,1.869]],["name/60",[45,24.849]],["parent/60",[61,4.185]],["name/61",[47,37.087]],["parent/61",[62,2.255]],["name/62",[63,42.195]],["parent/62",[62,2.255]],["name/63",[64,42.195]],["parent/63",[62,2.255]],["name/64",[65,42.195]],["parent/64",[62,2.255]],["name/65",[57,37.087]],["parent/65",[62,2.255]],["name/66",[58,37.087]],["parent/66",[62,2.255]],["name/67",[66,42.195]],["parent/67",[62,2.255]],["name/68",[67,42.195]],["parent/68",[62,2.255]],["name/69",[44,37.087]],["parent/69",[62,2.255]],["name/70",[68,42.195]],["parent/70",[62,2.255]],["name/71",[69,37.087]],["parent/71",[21,1.869]],["name/72",[45,24.849]],["parent/72",[70,4.185]],["name/73",[69,37.087]],["parent/73",[71,3.345]],["name/74",[72,37.087]],["parent/74",[71,3.345]],["name/75",[73,37.087]],["parent/75",[71,3.345]],["name/76",[74,42.195]],["parent/76",[21,1.869]],["name/77",[45,24.849]],["parent/77",[75,4.185]],["name/78",[76,42.195]],["parent/78",[21,1.869]],["name/79",[45,24.849]],["parent/79",[77,4.185]],["name/80",[78,42.195]],["parent/80",[79,3.095]],["name/81",[72,37.087]],["parent/81",[79,3.095]],["name/82",[73,37.087]],["parent/82",[79,3.095]],["name/83",[80,42.195]],["parent/83",[79,3.095]],["name/84",[81,42.195]],["parent/84",[21,1.869]],["name/85",[22,37.087]],["parent/85",[21,1.869]],["name/86",[82,42.195]],["parent/86",[21,1.869]],["name/87",[83,42.195]],["parent/87",[21,1.869]],["name/88",[45,24.849]],["parent/88",[84,4.185]],["name/89",[85,42.195]],["parent/89",[86,3.678]],["name/90",[87,42.195]],["parent/90",[86,3.678]],["name/91",[88,42.195]],["parent/91",[21,1.869]],["name/92",[45,24.849]],["parent/92",[89,4.185]],["name/93",[90,42.195]],["parent/93",[91,3.678]],["name/94",[92,42.195]],["parent/94",[91,3.678]],["name/95",[93,42.195]],["parent/95",[21,1.869]],["name/96",[94,42.195]],["parent/96",[21,1.869]],["name/97",[45,24.849]],["parent/97",[95,4.185]],["name/98",[96,42.195]],["parent/98",[97,3.345]],["name/99",[98,42.195]],["parent/99",[97,3.345]],["name/100",[99,42.195]],["parent/100",[97,3.345]]],"invertedIndex":[["__type",{"_index":45,"name":{"46":{},"60":{},"72":{},"77":{},"79":{},"88":{},"92":{},"97":{}},"parent":{}}],["add",{"_index":24,"name":{"24":{}},"parent":{}}],["addall",{"_index":25,"name":{"25":{}},"parent":{}}],["addallasync",{"_index":26,"name":{"26":{}},"parent":{}}],["atprefix",{"_index":4,"name":{"3":{}},"parent":{}}],["autosuggest",{"_index":38,"name":{"39":{}},"parent":{}}],["autosuggestoptions",{"_index":68,"name":{"70":{}},"parent":{}}],["autovacuum",{"_index":67,"name":{"68":{}},"parent":{}}],["autovacuumoptions",{"_index":93,"name":{"95":{}},"parent":{}}],["b",{"_index":98,"name":{"99":{}},"parent":{}}],["batchsize",{"_index":85,"name":{"89":{}},"parent":{}}],["batchwait",{"_index":87,"name":{"90":{}},"parent":{}}],["bm25",{"_index":59,"name":{"58":{}},"parent":{}}],["bm25params",{"_index":94,"name":{"96":{}},"parent":{}}],["boost",{"_index":50,"name":{"49":{}},"parent":{}}],["boostdocument",{"_index":52,"name":{"51":{}},"parent":{}}],["clear",{"_index":5,"name":{"4":{}},"parent":{}}],["combinewith",{"_index":56,"name":{"55":{}},"parent":{}}],["constructor",{"_index":2,"name":{"2":{},"23":{}},"parent":{}}],["d",{"_index":99,"name":{"100":{}},"parent":{}}],["delete",{"_index":6,"name":{"5":{}},"parent":{}}],["dirtcount",{"_index":34,"name":{"34":{}},"parent":{}}],["dirtfactor",{"_index":35,"name":{"35":{}},"parent":{}}],["discard",{"_index":29,"name":{"29":{}},"parent":{}}],["discardall",{"_index":30,"name":{"30":{}},"parent":{}}],["documentcount",{"_index":39,"name":{"40":{}},"parent":{}}],["entries",{"_index":7,"name":{"6":{}},"parent":{}}],["extractfield",{"_index":65,"name":{"64":{}},"parent":{}}],["fetch",{"_index":16,"name":{"15":{}},"parent":{}}],["fields",{"_index":47,"name":{"47":{},"61":{}},"parent":{}}],["filter",{"_index":49,"name":{"48":{}},"parent":{}}],["foreach",{"_index":8,"name":{"7":{}},"parent":{}}],["from",{"_index":19,"name":{"18":{}},"parent":{}}],["fromobject",{"_index":20,"name":{"19":{}},"parent":{}}],["fuzzy",{"_index":54,"name":{"53":{}},"parent":{}}],["fuzzyget",{"_index":9,"name":{"8":{}},"parent":{}}],["get",{"_index":10,"name":{"9":{}},"parent":{}}],["getdefault",{"_index":42,"name":{"43":{}},"parent":{}}],["getstoredfields",{"_index":36,"name":{"37":{}},"parent":{}}],["has",{"_index":11,"name":{"10":{},"36":{}},"parent":{}}],["id",{"_index":78,"name":{"80":{}},"parent":{}}],["idfield",{"_index":63,"name":{"62":{}},"parent":{}}],["isvacuuming",{"_index":33,"name":{"33":{}},"parent":{}}],["k",{"_index":96,"name":{"98":{}},"parent":{}}],["keys",{"_index":12,"name":{"11":{}},"parent":{}}],["loadjson",{"_index":41,"name":{"42":{}},"parent":{}}],["logger",{"_index":66,"name":{"67":{}},"parent":{}}],["match",{"_index":80,"name":{"83":{}},"parent":{}}],["matchinfo",{"_index":74,"name":{"76":{}},"parent":{}}],["maxfuzzy",{"_index":55,"name":{"54":{}},"parent":{}}],["mindirtcount",{"_index":90,"name":{"93":{}},"parent":{}}],["mindirtfactor",{"_index":92,"name":{"94":{}},"parent":{}}],["minisearch",{"_index":21,"name":{"20":{},"21":{}},"parent":{"21":{},"45":{},"59":{},"71":{},"76":{},"78":{},"84":{},"85":{},"86":{},"87":{},"91":{},"95":{},"96":{}}}],["minisearch\".bm25params",{"_index":95,"name":{},"parent":{"97":{}}}],["minisearch\".bm25params.__type",{"_index":97,"name":{},"parent":{"98":{},"99":{},"100":{}}}],["minisearch\".matchinfo",{"_index":75,"name":{},"parent":{"77":{}}}],["minisearch\".minisearch",{"_index":23,"name":{},"parent":{"22":{},"23":{},"24":{},"25":{},"26":{},"27":{},"28":{},"29":{},"30":{},"31":{},"32":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"40":{},"41":{},"42":{},"43":{},"44":{}}}],["minisearch\".options",{"_index":61,"name":{},"parent":{"60":{}}}],["minisearch\".options.__type",{"_index":62,"name":{},"parent":{"61":{},"62":{},"63":{},"64":{},"65":{},"66":{},"67":{},"68":{},"69":{},"70":{}}}],["minisearch\".searchoptions",{"_index":46,"name":{},"parent":{"46":{}}}],["minisearch\".searchoptions.__type",{"_index":48,"name":{},"parent":{"47":{},"48":{},"49":{},"50":{},"51":{},"52":{},"53":{},"54":{},"55":{},"56":{},"57":{},"58":{}}}],["minisearch\".searchresult",{"_index":77,"name":{},"parent":{"79":{}}}],["minisearch\".searchresult.__type",{"_index":79,"name":{},"parent":{"80":{},"81":{},"82":{},"83":{}}}],["minisearch\".suggestion",{"_index":70,"name":{},"parent":{"72":{}}}],["minisearch\".suggestion.__type",{"_index":71,"name":{},"parent":{"73":{},"74":{},"75":{}}}],["minisearch\".vacuumconditions",{"_index":89,"name":{},"parent":{"92":{}}}],["minisearch\".vacuumconditions.__type",{"_index":91,"name":{},"parent":{"93":{},"94":{}}}],["minisearch\".vacuumoptions",{"_index":84,"name":{},"parent":{"88":{}}}],["minisearch\".vacuumoptions.__type",{"_index":86,"name":{},"parent":{"89":{},"90":{}}}],["options",{"_index":60,"name":{"59":{}},"parent":{}}],["prefix",{"_index":53,"name":{"52":{}},"parent":{}}],["processterm",{"_index":58,"name":{"57":{},"66":{}},"parent":{}}],["query",{"_index":82,"name":{"86":{}},"parent":{}}],["querycombination",{"_index":81,"name":{"84":{}},"parent":{}}],["remove",{"_index":27,"name":{"27":{}},"parent":{}}],["removeall",{"_index":28,"name":{"28":{}},"parent":{}}],["replace",{"_index":31,"name":{"31":{}},"parent":{}}],["score",{"_index":73,"name":{"75":{},"82":{}},"parent":{}}],["search",{"_index":37,"name":{"38":{}},"parent":{}}],["searchablemap",{"_index":1,"name":{"1":{}},"parent":{}}],["searchablemap/searchablemap",{"_index":0,"name":{"0":{}},"parent":{"1":{}}}],["searchablemap/searchablemap\".searchablemap",{"_index":3,"name":{},"parent":{"2":{},"3":{},"4":{},"5":{},"6":{},"7":{},"8":{},"9":{},"10":{},"11":{},"12":{},"13":{},"14":{},"15":{},"16":{},"17":{},"18":{},"19":{}}}],["searchoptions",{"_index":44,"name":{"45":{},"69":{}},"parent":{}}],["searchresult",{"_index":76,"name":{"78":{}},"parent":{}}],["set",{"_index":13,"name":{"12":{}},"parent":{}}],["size",{"_index":14,"name":{"13":{}},"parent":{}}],["storefields",{"_index":64,"name":{"63":{}},"parent":{}}],["suggestion",{"_index":69,"name":{"71":{},"73":{}},"parent":{}}],["symbol.iterator",{"_index":18,"name":{"17":{}},"parent":{}}],["termcount",{"_index":40,"name":{"41":{}},"parent":{}}],["terms",{"_index":72,"name":{"74":{},"81":{}},"parent":{}}],["tojson",{"_index":43,"name":{"44":{}},"parent":{}}],["tokenize",{"_index":57,"name":{"56":{},"65":{}},"parent":{}}],["update",{"_index":15,"name":{"14":{}},"parent":{}}],["vacuum",{"_index":32,"name":{"32":{}},"parent":{}}],["vacuumconditions",{"_index":88,"name":{"91":{}},"parent":{}}],["vacuumoptions",{"_index":83,"name":{"87":{}},"parent":{}}],["values",{"_index":17,"name":{"16":{}},"parent":{}}],["weights",{"_index":51,"name":{"50":{}},"parent":{}}],["wildcard",{"_index":22,"name":{"22":{},"85":{}},"parent":{}}]],"pipeline":[]}} \ No newline at end of file diff --git a/docs/assets/main.js b/docs/assets/main.js new file mode 100644 index 00000000..d0aa8d5f --- /dev/null +++ b/docs/assets/main.js @@ -0,0 +1,59 @@ +"use strict"; +"use strict";(()=>{var Pe=Object.create;var ne=Object.defineProperty;var Ie=Object.getOwnPropertyDescriptor;var Oe=Object.getOwnPropertyNames;var _e=Object.getPrototypeOf,Re=Object.prototype.hasOwnProperty;var Me=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var Fe=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Oe(e))!Re.call(t,i)&&i!==n&&ne(t,i,{get:()=>e[i],enumerable:!(r=Ie(e,i))||r.enumerable});return t};var De=(t,e,n)=>(n=t!=null?Pe(_e(t)):{},Fe(e||!t||!t.__esModule?ne(n,"default",{value:t,enumerable:!0}):n,t));var ae=Me((se,oe)=>{(function(){var t=function(e){var n=new t.Builder;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),n.searchPipeline.add(t.stemmer),e.call(n,n),n.build()};t.version="2.3.9";t.utils={},t.utils.warn=function(e){return function(n){e.console&&console.warn&&console.warn(n)}}(this),t.utils.asString=function(e){return e==null?"":e.toString()},t.utils.clone=function(e){if(e==null)return e;for(var n=Object.create(null),r=Object.keys(e),i=0;i0){var d=t.utils.clone(n)||{};d.position=[a,u],d.index=s.length,s.push(new t.Token(r.slice(a,o),d))}a=o+1}}return s},t.tokenizer.separator=/[\s\-]+/;t.Pipeline=function(){this._stack=[]},t.Pipeline.registeredFunctions=Object.create(null),t.Pipeline.registerFunction=function(e,n){n in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn(`Function is not registered with pipeline. This may cause problems when serialising the index. +`,e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(r){var i=t.Pipeline.registeredFunctions[r];if(i)n.add(i);else throw new Error("Cannot load unregistered function: "+r)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(n){t.Pipeline.warnIfFunctionNotRegistered(n),this._stack.push(n)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");r=r+1,this._stack.splice(r,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");this._stack.splice(r,0,n)},t.Pipeline.prototype.remove=function(e){var n=this._stack.indexOf(e);n!=-1&&this._stack.splice(n,1)},t.Pipeline.prototype.run=function(e){for(var n=this._stack.length,r=0;r1&&(oe&&(r=s),o!=e);)i=r-n,s=n+Math.floor(i/2),o=this.elements[s*2];if(o==e||o>e)return s*2;if(ol?d+=2:a==l&&(n+=r[u+1]*i[d+1],u+=2,d+=2);return n},t.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},t.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),n=1,r=0;n0){var o=s.str.charAt(0),a;o in s.node.edges?a=s.node.edges[o]:(a=new t.TokenSet,s.node.edges[o]=a),s.str.length==1&&(a.final=!0),i.push({node:a,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(s.editsRemaining!=0){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new t.TokenSet;s.node.edges["*"]=l}if(s.str.length==0&&(l.final=!0),i.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&i.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),s.str.length==1&&(s.node.final=!0),s.str.length>=1){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new t.TokenSet;s.node.edges["*"]=u}s.str.length==1&&(u.final=!0),i.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var d=s.str.charAt(0),v=s.str.charAt(1),f;v in s.node.edges?f=s.node.edges[v]:(f=new t.TokenSet,s.node.edges[v]=f),s.str.length==1&&(f.final=!0),i.push({node:f,editsRemaining:s.editsRemaining-1,str:d+s.str.slice(2)})}}}return r},t.TokenSet.fromString=function(e){for(var n=new t.TokenSet,r=n,i=0,s=e.length;i=e;n--){var r=this.uncheckedNodes[n],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r.char]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}};t.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},t.Index.prototype.search=function(e){return this.query(function(n){var r=new t.QueryParser(e,n);r.parse()})},t.Index.prototype.query=function(e){for(var n=new t.Query(this.fields),r=Object.create(null),i=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),l=0;l1?this._b=1:this._b=e},t.Builder.prototype.k1=function(e){this._k1=e},t.Builder.prototype.add=function(e,n){var r=e[this._ref],i=Object.keys(this._fields);this._documents[r]=n||{},this.documentCount+=1;for(var s=0;s=this.length)return t.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},t.QueryLexer.prototype.width=function(){return this.pos-this.start},t.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},t.QueryLexer.prototype.backup=function(){this.pos-=1},t.QueryLexer.prototype.acceptDigitRun=function(){var e,n;do e=this.next(),n=e.charCodeAt(0);while(n>47&&n<58);e!=t.QueryLexer.EOS&&this.backup()},t.QueryLexer.prototype.more=function(){return this.pos1&&(e.backup(),e.emit(t.QueryLexer.TERM)),e.ignore(),e.more())return t.QueryLexer.lexText},t.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.EDIT_DISTANCE),t.QueryLexer.lexText},t.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.BOOST),t.QueryLexer.lexText},t.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(t.QueryLexer.TERM)},t.QueryLexer.termSeparator=t.tokenizer.separator,t.QueryLexer.lexText=function(e){for(;;){var n=e.next();if(n==t.QueryLexer.EOS)return t.QueryLexer.lexEOS;if(n.charCodeAt(0)==92){e.escapeCharacter();continue}if(n==":")return t.QueryLexer.lexField;if(n=="~")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexEditDistance;if(n=="^")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexBoost;if(n=="+"&&e.width()===1||n=="-"&&e.width()===1)return e.emit(t.QueryLexer.PRESENCE),t.QueryLexer.lexText;if(n.match(t.QueryLexer.termSeparator))return t.QueryLexer.lexTerm}},t.QueryParser=function(e,n){this.lexer=new t.QueryLexer(e),this.query=n,this.currentClause={},this.lexemeIdx=0},t.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=t.QueryParser.parseClause;e;)e=e(this);return this.query},t.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},t.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},t.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},t.QueryParser.parseClause=function(e){var n=e.peekLexeme();if(n!=null)switch(n.type){case t.QueryLexer.PRESENCE:return t.QueryParser.parsePresence;case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var r="expected either a field or a term, found "+n.type;throw n.str.length>=1&&(r+=" with value '"+n.str+"'"),new t.QueryParseError(r,n.start,n.end)}},t.QueryParser.parsePresence=function(e){var n=e.consumeLexeme();if(n!=null){switch(n.str){case"-":e.currentClause.presence=t.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=t.Query.presence.REQUIRED;break;default:var r="unrecognised presence operator'"+n.str+"'";throw new t.QueryParseError(r,n.start,n.end)}var i=e.peekLexeme();if(i==null){var r="expecting term or field, found nothing";throw new t.QueryParseError(r,n.start,n.end)}switch(i.type){case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var r="expecting term or field, found '"+i.type+"'";throw new t.QueryParseError(r,i.start,i.end)}}},t.QueryParser.parseField=function(e){var n=e.consumeLexeme();if(n!=null){if(e.query.allFields.indexOf(n.str)==-1){var r=e.query.allFields.map(function(o){return"'"+o+"'"}).join(", "),i="unrecognised field '"+n.str+"', possible fields: "+r;throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.fields=[n.str];var s=e.peekLexeme();if(s==null){var i="expecting term, found nothing";throw new t.QueryParseError(i,n.start,n.end)}switch(s.type){case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var i="expecting term, found '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseTerm=function(e){var n=e.consumeLexeme();if(n!=null){e.currentClause.term=n.str.toLowerCase(),n.str.indexOf("*")!=-1&&(e.currentClause.usePipeline=!1);var r=e.peekLexeme();if(r==null){e.nextClause();return}switch(r.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+r.type+"'";throw new t.QueryParseError(i,r.start,r.end)}}},t.QueryParser.parseEditDistance=function(e){var n=e.consumeLexeme();if(n!=null){var r=parseInt(n.str,10);if(isNaN(r)){var i="edit distance must be numeric";throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.editDistance=r;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseBoost=function(e){var n=e.consumeLexeme();if(n!=null){var r=parseInt(n.str,10);if(isNaN(r)){var i="boost must be numeric";throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.boost=r;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},function(e,n){typeof define=="function"&&define.amd?define(n):typeof se=="object"?oe.exports=n():e.lunr=n()}(this,function(){return t})})()});var re=[];function G(t,e){re.push({selector:e,constructor:t})}var U=class{constructor(){this.alwaysVisibleMember=null;this.createComponents(document.body),this.ensureActivePageVisible(),this.ensureFocusedElementVisible(),this.listenForCodeCopies(),window.addEventListener("hashchange",()=>this.ensureFocusedElementVisible())}createComponents(e){re.forEach(n=>{e.querySelectorAll(n.selector).forEach(r=>{r.dataset.hasInstance||(new n.constructor({el:r,app:this}),r.dataset.hasInstance=String(!0))})})}filterChanged(){this.ensureFocusedElementVisible()}ensureActivePageVisible(){let e=document.querySelector(".tsd-navigation .current"),n=e?.parentElement;for(;n&&!n.classList.contains(".tsd-navigation");)n instanceof HTMLDetailsElement&&(n.open=!0),n=n.parentElement;if(e){let r=e.getBoundingClientRect().top-document.documentElement.clientHeight/4;document.querySelector(".site-menu").scrollTop=r}}ensureFocusedElementVisible(){if(this.alwaysVisibleMember&&(this.alwaysVisibleMember.classList.remove("always-visible"),this.alwaysVisibleMember.firstElementChild.remove(),this.alwaysVisibleMember=null),!location.hash)return;let e=document.getElementById(location.hash.substring(1));if(!e)return;let n=e.parentElement;for(;n&&n.tagName!=="SECTION";)n=n.parentElement;if(n&&n.offsetParent==null){this.alwaysVisibleMember=n,n.classList.add("always-visible");let r=document.createElement("p");r.classList.add("warning"),r.textContent="This member is normally hidden due to your filter settings.",n.prepend(r)}}listenForCodeCopies(){document.querySelectorAll("pre > button").forEach(e=>{let n;e.addEventListener("click",()=>{e.previousElementSibling instanceof HTMLElement&&navigator.clipboard.writeText(e.previousElementSibling.innerText.trim()),e.textContent="Copied!",e.classList.add("visible"),clearTimeout(n),n=setTimeout(()=>{e.classList.remove("visible"),n=setTimeout(()=>{e.textContent="Copy"},100)},1e3)})})}};var ie=(t,e=100)=>{let n;return()=>{clearTimeout(n),n=setTimeout(()=>t(),e)}};var de=De(ae());async function le(t,e){if(!window.searchData)return;let n=await fetch(window.searchData),r=new Blob([await n.arrayBuffer()]).stream().pipeThrough(new DecompressionStream("gzip")),i=await new Response(r).json();t.data=i,t.index=de.Index.load(i.index),e.classList.remove("loading"),e.classList.add("ready")}function he(){let t=document.getElementById("tsd-search");if(!t)return;let e={base:t.dataset.base+"/"},n=document.getElementById("tsd-search-script");t.classList.add("loading"),n&&(n.addEventListener("error",()=>{t.classList.remove("loading"),t.classList.add("failure")}),n.addEventListener("load",()=>{le(e,t)}),le(e,t));let r=document.querySelector("#tsd-search input"),i=document.querySelector("#tsd-search .results");if(!r||!i)throw new Error("The input field or the result list wrapper was not found");let s=!1;i.addEventListener("mousedown",()=>s=!0),i.addEventListener("mouseup",()=>{s=!1,t.classList.remove("has-focus")}),r.addEventListener("focus",()=>t.classList.add("has-focus")),r.addEventListener("blur",()=>{s||(s=!1,t.classList.remove("has-focus"))}),Ae(t,i,r,e)}function Ae(t,e,n,r){n.addEventListener("input",ie(()=>{Ne(t,e,n,r)},200));let i=!1;n.addEventListener("keydown",s=>{i=!0,s.key=="Enter"?Ve(e,n):s.key=="Escape"?n.blur():s.key=="ArrowUp"?ue(e,-1):s.key==="ArrowDown"?ue(e,1):i=!1}),n.addEventListener("keypress",s=>{i&&s.preventDefault()}),document.body.addEventListener("keydown",s=>{s.altKey||s.ctrlKey||s.metaKey||!n.matches(":focus")&&s.key==="/"&&(n.focus(),s.preventDefault())})}function Ne(t,e,n,r){if(!r.index||!r.data)return;e.textContent="";let i=n.value.trim(),s;if(i){let o=i.split(" ").map(a=>a.length?`*${a}*`:"").join(" ");s=r.index.search(o)}else s=[];for(let o=0;oa.score-o.score);for(let o=0,a=Math.min(10,s.length);o`,d=ce(l.name,i);globalThis.DEBUG_SEARCH_WEIGHTS&&(d+=` (score: ${s[o].score.toFixed(2)})`),l.parent&&(d=` + ${ce(l.parent,i)}.${d}`);let v=document.createElement("li");v.classList.value=l.classes??"";let f=document.createElement("a");f.href=r.base+l.url,f.innerHTML=u+d,v.append(f),e.appendChild(v)}}function ue(t,e){let n=t.querySelector(".current");if(!n)n=t.querySelector(e==1?"li:first-child":"li:last-child"),n&&n.classList.add("current");else{let r=n;if(e===1)do r=r.nextElementSibling??void 0;while(r instanceof HTMLElement&&r.offsetParent==null);else do r=r.previousElementSibling??void 0;while(r instanceof HTMLElement&&r.offsetParent==null);r&&(n.classList.remove("current"),r.classList.add("current"))}}function Ve(t,e){let n=t.querySelector(".current");if(n||(n=t.querySelector("li:first-child")),n){let r=n.querySelector("a");r&&(window.location.href=r.href),e.blur()}}function ce(t,e){if(e==="")return t;let n=t.toLocaleLowerCase(),r=e.toLocaleLowerCase(),i=[],s=0,o=n.indexOf(r);for(;o!=-1;)i.push(K(t.substring(s,o)),`${K(t.substring(o,o+r.length))}`),s=o+r.length,o=n.indexOf(r,s);return i.push(K(t.substring(s))),i.join("")}var Be={"&":"&","<":"<",">":">","'":"'",'"':"""};function K(t){return t.replace(/[&<>"'"]/g,e=>Be[e])}var C=class{constructor(e){this.el=e.el,this.app=e.app}};var F="mousedown",pe="mousemove",B="mouseup",J={x:0,y:0},fe=!1,ee=!1,He=!1,D=!1,me=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);document.documentElement.classList.add(me?"is-mobile":"not-mobile");me&&"ontouchstart"in document.documentElement&&(He=!0,F="touchstart",pe="touchmove",B="touchend");document.addEventListener(F,t=>{ee=!0,D=!1;let e=F=="touchstart"?t.targetTouches[0]:t;J.y=e.pageY||0,J.x=e.pageX||0});document.addEventListener(pe,t=>{if(ee&&!D){let e=F=="touchstart"?t.targetTouches[0]:t,n=J.x-(e.pageX||0),r=J.y-(e.pageY||0);D=Math.sqrt(n*n+r*r)>10}});document.addEventListener(B,()=>{ee=!1});document.addEventListener("click",t=>{fe&&(t.preventDefault(),t.stopImmediatePropagation(),fe=!1)});var X=class extends C{constructor(n){super(n);this.className=this.el.dataset.toggle||"",this.el.addEventListener(B,r=>this.onPointerUp(r)),this.el.addEventListener("click",r=>r.preventDefault()),document.addEventListener(F,r=>this.onDocumentPointerDown(r)),document.addEventListener(B,r=>this.onDocumentPointerUp(r))}setActive(n){if(this.active==n)return;this.active=n,document.documentElement.classList.toggle("has-"+this.className,n),this.el.classList.toggle("active",n);let r=(this.active?"to-has-":"from-has-")+this.className;document.documentElement.classList.add(r),setTimeout(()=>document.documentElement.classList.remove(r),500)}onPointerUp(n){D||(this.setActive(!0),n.preventDefault())}onDocumentPointerDown(n){if(this.active){if(n.target.closest(".col-sidebar, .tsd-filter-group"))return;this.setActive(!1)}}onDocumentPointerUp(n){if(!D&&this.active&&n.target.closest(".col-sidebar")){let r=n.target.closest("a");if(r){let i=window.location.href;i.indexOf("#")!=-1&&(i=i.substring(0,i.indexOf("#"))),r.href.substring(0,i.length)==i&&setTimeout(()=>this.setActive(!1),250)}}}};var te;try{te=localStorage}catch{te={getItem(){return null},setItem(){}}}var Q=te;var ve=document.head.appendChild(document.createElement("style"));ve.dataset.for="filters";var Y=class extends C{constructor(n){super(n);this.key=`filter-${this.el.name}`,this.value=this.el.checked,this.el.addEventListener("change",()=>{this.setLocalStorage(this.el.checked)}),this.setLocalStorage(this.fromLocalStorage()),ve.innerHTML+=`html:not(.${this.key}) .tsd-is-${this.el.name} { display: none; } +`}fromLocalStorage(){let n=Q.getItem(this.key);return n?n==="true":this.el.checked}setLocalStorage(n){Q.setItem(this.key,n.toString()),this.value=n,this.handleValueChange()}handleValueChange(){this.el.checked=this.value,document.documentElement.classList.toggle(this.key,this.value),this.app.filterChanged(),document.querySelectorAll(".tsd-index-section").forEach(n=>{n.style.display="block";let r=Array.from(n.querySelectorAll(".tsd-index-link")).every(i=>i.offsetParent==null);n.style.display=r?"none":"block"})}};var Z=class extends C{constructor(n){super(n);this.summary=this.el.querySelector(".tsd-accordion-summary"),this.icon=this.summary.querySelector("svg"),this.key=`tsd-accordion-${this.summary.dataset.key??this.summary.textContent.trim().replace(/\s+/g,"-").toLowerCase()}`;let r=Q.getItem(this.key);this.el.open=r?r==="true":this.el.open,this.el.addEventListener("toggle",()=>this.update());let i=this.summary.querySelector("a");i&&i.addEventListener("click",()=>{location.assign(i.href)}),this.update()}update(){this.icon.style.transform=`rotate(${this.el.open?0:-90}deg)`,Q.setItem(this.key,this.el.open.toString())}};function ge(t){let e=Q.getItem("tsd-theme")||"os";t.value=e,ye(e),t.addEventListener("change",()=>{Q.setItem("tsd-theme",t.value),ye(t.value)})}function ye(t){document.documentElement.dataset.theme=t}var Le;function be(){let t=document.getElementById("tsd-nav-script");t&&(t.addEventListener("load",xe),xe())}async function xe(){let t=document.getElementById("tsd-nav-container");if(!t||!window.navigationData)return;let n=await(await fetch(window.navigationData)).arrayBuffer(),r=new Blob([n]).stream().pipeThrough(new DecompressionStream("gzip")),i=await new Response(r).json();Le=t.dataset.base+"/",t.innerHTML="";for(let s of i)we(s,t,[]);window.app.createComponents(t),window.app.ensureActivePageVisible()}function we(t,e,n){let r=e.appendChild(document.createElement("li"));if(t.children){let i=[...n,t.text],s=r.appendChild(document.createElement("details"));s.className=t.class?`${t.class} tsd-index-accordion`:"tsd-index-accordion",s.dataset.key=i.join("$");let o=s.appendChild(document.createElement("summary"));o.className="tsd-accordion-summary",o.innerHTML='',Ee(t,o);let a=s.appendChild(document.createElement("div"));a.className="tsd-accordion-details";let l=a.appendChild(document.createElement("ul"));l.className="tsd-nested-navigation";for(let u of t.children)we(u,l,i)}else Ee(t,r,t.class)}function Ee(t,e,n){if(t.path){let r=e.appendChild(document.createElement("a"));r.href=Le+t.path,n&&(r.className=n),location.href===r.href&&r.classList.add("current"),t.kind&&(r.innerHTML=``),r.appendChild(document.createElement("span")).textContent=t.text}else e.appendChild(document.createElement("span")).textContent=t.text}G(X,"a[data-toggle]");G(Z,".tsd-index-accordion");G(Y,".tsd-filter-item input[type=checkbox]");var Se=document.getElementById("tsd-theme");Se&&ge(Se);var je=new U;Object.defineProperty(window,"app",{value:je});he();be();})(); +/*! Bundled license information: + +lunr/lunr.js: + (** + * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9 + * Copyright (C) 2020 Oliver Nightingale + * @license MIT + *) + (*! + * lunr.utils + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.Set + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.tokenizer + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.Pipeline + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.Vector + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.stemmer + * Copyright (C) 2020 Oliver Nightingale + * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt + *) + (*! + * lunr.stopWordFilter + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.trimmer + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.TokenSet + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.Index + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.Builder + * Copyright (C) 2020 Oliver Nightingale + *) +*/ diff --git a/docs/assets/navigation.js b/docs/assets/navigation.js new file mode 100644 index 00000000..31549670 --- /dev/null +++ b/docs/assets/navigation.js @@ -0,0 +1 @@ +window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAAE5XUz0+DMBQH8P+lZ+IcyaJy0508kE1N9LAQ81bq2lha0h+Ji9n/LpNsrMP11WN5Xz7lAX2rb+LYlyMFKYUSLwwM5SQjLTjeXWt07SWzk6F2xV0ju8CnUDUp8oxQLmRtmCLFKkpRCdaG1CV1mt/usiN2751+Bep9s2id0MoOptu2oTjKnj3u9d3NdJaf4A9lPluCgSamDiGMK8FR/qg+dEQ7ZjAMbzexySfPzDbC/NaTkLlu1kLBflfMO4lidH8b3m6QS0OfmfXSoWYfQ0m/2TCLND+EMK7/Ueda1QLr/DyaRuNv9F9n5a076BRMHfEOkb+pavR5YC1ZCe0kWI3HT1B+D1ZJ8+gCfxhJMT6y2X5MVbvqB8JjMFdCBQAA" \ No newline at end of file diff --git a/docs/assets/search.js b/docs/assets/search.js new file mode 100644 index 00000000..a559733a --- /dev/null +++ b/docs/assets/search.js @@ -0,0 +1 @@ +window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file diff --git a/docs/assets/style.css b/docs/assets/style.css new file mode 100644 index 00000000..108428c3 --- /dev/null +++ b/docs/assets/style.css @@ -0,0 +1,1383 @@ +:root { + /* Light */ + --light-color-background: #f2f4f8; + --light-color-background-secondary: #eff0f1; + --light-color-warning-text: #222; + --light-color-background-warning: #e6e600; + --light-color-icon-background: var(--light-color-background); + --light-color-accent: #c5c7c9; + --light-color-active-menu-item: var(--light-color-accent); + --light-color-text: #222; + --light-color-text-aside: #6e6e6e; + --light-color-link: #1f70c2; + + --light-color-ts-project: #b111c9; + --light-color-ts-module: var(--light-color-ts-project); + --light-color-ts-namespace: var(--light-color-ts-project); + --light-color-ts-enum: #7e6f15; + --light-color-ts-enum-member: var(--light-color-ts-enum); + --light-color-ts-variable: #4760ec; + --light-color-ts-function: #572be7; + --light-color-ts-class: #1f70c2; + --light-color-ts-interface: #108024; + --light-color-ts-constructor: var(--light-color-ts-class); + --light-color-ts-property: var(--light-color-ts-variable); + --light-color-ts-method: var(--light-color-ts-function); + --light-color-ts-call-signature: var(--light-color-ts-method); + --light-color-ts-index-signature: var(--light-color-ts-property); + --light-color-ts-constructor-signature: var(--light-color-ts-constructor); + --light-color-ts-parameter: var(--light-color-ts-variable); + /* type literal not included as links will never be generated to it */ + --light-color-ts-type-parameter: var(--light-color-ts-type-alias); + --light-color-ts-accessor: var(--light-color-ts-property); + --light-color-ts-get-signature: var(--light-color-ts-accessor); + --light-color-ts-set-signature: var(--light-color-ts-accessor); + --light-color-ts-type-alias: #d51270; + /* reference not included as links will be colored with the kind that it points to */ + + --light-external-icon: url("data:image/svg+xml;utf8,"); + --light-color-scheme: light; + + /* Dark */ + --dark-color-background: #2b2e33; + --dark-color-background-secondary: #1e2024; + --dark-color-background-warning: #bebe00; + --dark-color-warning-text: #222; + --dark-color-icon-background: var(--dark-color-background-secondary); + --dark-color-accent: #9096a2; + --dark-color-active-menu-item: #5d5d6a; + --dark-color-text: #f5f5f5; + --dark-color-text-aside: #dddddd; + --dark-color-link: #00aff4; + + --dark-color-ts-project: #e358ff; + --dark-color-ts-module: var(--dark-color-ts-project); + --dark-color-ts-namespace: var(--dark-color-ts-project); + --dark-color-ts-enum: #f4d93e; + --dark-color-ts-enum-member: var(--dark-color-ts-enum); + --dark-color-ts-variable: #798dff; + --dark-color-ts-function: #a280ff; + --dark-color-ts-class: #8ac4ff; + --dark-color-ts-interface: #6cff87; + --dark-color-ts-constructor: var(--dark-color-ts-class); + --dark-color-ts-property: var(--dark-color-ts-variable); + --dark-color-ts-method: var(--dark-color-ts-function); + --dark-color-ts-call-signature: var(--dark-color-ts-method); + --dark-color-ts-index-signature: var(--dark-color-ts-property); + --dark-color-ts-constructor-signature: var(--dark-color-ts-constructor); + --dark-color-ts-parameter: var(--dark-color-ts-variable); + /* type literal not included as links will never be generated to it */ + --dark-color-ts-type-parameter: var(--dark-color-ts-type-alias); + --dark-color-ts-accessor: var(--dark-color-ts-property); + --dark-color-ts-get-signature: var(--dark-color-ts-accessor); + --dark-color-ts-set-signature: var(--dark-color-ts-accessor); + --dark-color-ts-type-alias: #ff6492; + /* reference not included as links will be colored with the kind that it points to */ + + --dark-external-icon: url("data:image/svg+xml;utf8,"); + --dark-color-scheme: dark; +} + +@media (prefers-color-scheme: light) { + :root { + --color-background: var(--light-color-background); + --color-background-secondary: var(--light-color-background-secondary); + --color-background-warning: var(--light-color-background-warning); + --color-warning-text: var(--light-color-warning-text); + --color-icon-background: var(--light-color-icon-background); + --color-accent: var(--light-color-accent); + --color-active-menu-item: var(--light-color-active-menu-item); + --color-text: var(--light-color-text); + --color-text-aside: var(--light-color-text-aside); + --color-link: var(--light-color-link); + + --color-ts-module: var(--light-color-ts-module); + --color-ts-namespace: var(--light-color-ts-namespace); + --color-ts-enum: var(--light-color-ts-enum); + --color-ts-enum-member: var(--light-color-ts-enum-member); + --color-ts-variable: var(--light-color-ts-variable); + --color-ts-function: var(--light-color-ts-function); + --color-ts-class: var(--light-color-ts-class); + --color-ts-interface: var(--light-color-ts-interface); + --color-ts-constructor: var(--light-color-ts-constructor); + --color-ts-property: var(--light-color-ts-property); + --color-ts-method: var(--light-color-ts-method); + --color-ts-call-signature: var(--light-color-ts-call-signature); + --color-ts-index-signature: var(--light-color-ts-index-signature); + --color-ts-constructor-signature: var( + --light-color-ts-constructor-signature + ); + --color-ts-parameter: var(--light-color-ts-parameter); + --color-ts-type-parameter: var(--light-color-ts-type-parameter); + --color-ts-accessor: var(--light-color-ts-accessor); + --color-ts-get-signature: var(--light-color-ts-get-signature); + --color-ts-set-signature: var(--light-color-ts-set-signature); + --color-ts-type-alias: var(--light-color-ts-type-alias); + + --external-icon: var(--light-external-icon); + --color-scheme: var(--light-color-scheme); + } +} + +@media (prefers-color-scheme: dark) { + :root { + --color-background: var(--dark-color-background); + --color-background-secondary: var(--dark-color-background-secondary); + --color-background-warning: var(--dark-color-background-warning); + --color-warning-text: var(--dark-color-warning-text); + --color-icon-background: var(--dark-color-icon-background); + --color-accent: var(--dark-color-accent); + --color-active-menu-item: var(--dark-color-active-menu-item); + --color-text: var(--dark-color-text); + --color-text-aside: var(--dark-color-text-aside); + --color-link: var(--dark-color-link); + + --color-ts-module: var(--dark-color-ts-module); + --color-ts-namespace: var(--dark-color-ts-namespace); + --color-ts-enum: var(--dark-color-ts-enum); + --color-ts-enum-member: var(--dark-color-ts-enum-member); + --color-ts-variable: var(--dark-color-ts-variable); + --color-ts-function: var(--dark-color-ts-function); + --color-ts-class: var(--dark-color-ts-class); + --color-ts-interface: var(--dark-color-ts-interface); + --color-ts-constructor: var(--dark-color-ts-constructor); + --color-ts-property: var(--dark-color-ts-property); + --color-ts-method: var(--dark-color-ts-method); + --color-ts-call-signature: var(--dark-color-ts-call-signature); + --color-ts-index-signature: var(--dark-color-ts-index-signature); + --color-ts-constructor-signature: var( + --dark-color-ts-constructor-signature + ); + --color-ts-parameter: var(--dark-color-ts-parameter); + --color-ts-type-parameter: var(--dark-color-ts-type-parameter); + --color-ts-accessor: var(--dark-color-ts-accessor); + --color-ts-get-signature: var(--dark-color-ts-get-signature); + --color-ts-set-signature: var(--dark-color-ts-set-signature); + --color-ts-type-alias: var(--dark-color-ts-type-alias); + + --external-icon: var(--dark-external-icon); + --color-scheme: var(--dark-color-scheme); + } +} + +html { + color-scheme: var(--color-scheme); +} + +body { + margin: 0; +} + +:root[data-theme="light"] { + --color-background: var(--light-color-background); + --color-background-secondary: var(--light-color-background-secondary); + --color-background-warning: var(--light-color-background-warning); + --color-warning-text: var(--light-color-warning-text); + --color-icon-background: var(--light-color-icon-background); + --color-accent: var(--light-color-accent); + --color-active-menu-item: var(--light-color-active-menu-item); + --color-text: var(--light-color-text); + --color-text-aside: var(--light-color-text-aside); + --color-link: var(--light-color-link); + + --color-ts-module: var(--light-color-ts-module); + --color-ts-namespace: var(--light-color-ts-namespace); + --color-ts-enum: var(--light-color-ts-enum); + --color-ts-enum-member: var(--light-color-ts-enum-member); + --color-ts-variable: var(--light-color-ts-variable); + --color-ts-function: var(--light-color-ts-function); + --color-ts-class: var(--light-color-ts-class); + --color-ts-interface: var(--light-color-ts-interface); + --color-ts-constructor: var(--light-color-ts-constructor); + --color-ts-property: var(--light-color-ts-property); + --color-ts-method: var(--light-color-ts-method); + --color-ts-call-signature: var(--light-color-ts-call-signature); + --color-ts-index-signature: var(--light-color-ts-index-signature); + --color-ts-constructor-signature: var( + --light-color-ts-constructor-signature + ); + --color-ts-parameter: var(--light-color-ts-parameter); + --color-ts-type-parameter: var(--light-color-ts-type-parameter); + --color-ts-accessor: var(--light-color-ts-accessor); + --color-ts-get-signature: var(--light-color-ts-get-signature); + --color-ts-set-signature: var(--light-color-ts-set-signature); + --color-ts-type-alias: var(--light-color-ts-type-alias); + + --external-icon: var(--light-external-icon); + --color-scheme: var(--light-color-scheme); +} + +:root[data-theme="dark"] { + --color-background: var(--dark-color-background); + --color-background-secondary: var(--dark-color-background-secondary); + --color-background-warning: var(--dark-color-background-warning); + --color-warning-text: var(--dark-color-warning-text); + --color-icon-background: var(--dark-color-icon-background); + --color-accent: var(--dark-color-accent); + --color-active-menu-item: var(--dark-color-active-menu-item); + --color-text: var(--dark-color-text); + --color-text-aside: var(--dark-color-text-aside); + --color-link: var(--dark-color-link); + + --color-ts-module: var(--dark-color-ts-module); + --color-ts-namespace: var(--dark-color-ts-namespace); + --color-ts-enum: var(--dark-color-ts-enum); + --color-ts-enum-member: var(--dark-color-ts-enum-member); + --color-ts-variable: var(--dark-color-ts-variable); + --color-ts-function: var(--dark-color-ts-function); + --color-ts-class: var(--dark-color-ts-class); + --color-ts-interface: var(--dark-color-ts-interface); + --color-ts-constructor: var(--dark-color-ts-constructor); + --color-ts-property: var(--dark-color-ts-property); + --color-ts-method: var(--dark-color-ts-method); + --color-ts-call-signature: var(--dark-color-ts-call-signature); + --color-ts-index-signature: var(--dark-color-ts-index-signature); + --color-ts-constructor-signature: var( + --dark-color-ts-constructor-signature + ); + --color-ts-parameter: var(--dark-color-ts-parameter); + --color-ts-type-parameter: var(--dark-color-ts-type-parameter); + --color-ts-accessor: var(--dark-color-ts-accessor); + --color-ts-get-signature: var(--dark-color-ts-get-signature); + --color-ts-set-signature: var(--dark-color-ts-set-signature); + --color-ts-type-alias: var(--dark-color-ts-type-alias); + + --external-icon: var(--dark-external-icon); + --color-scheme: var(--dark-color-scheme); +} + +.always-visible, +.always-visible .tsd-signatures { + display: inherit !important; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + line-height: 1.2; +} + +h1 > a, +h2 > a, +h3 > a, +h4 > a, +h5 > a, +h6 > a { + text-decoration: none; + color: var(--color-text); +} + +h1 { + font-size: 1.875rem; + margin: 0.67rem 0; +} + +h2 { + font-size: 1.5rem; + margin: 0.83rem 0; +} + +h3 { + font-size: 1.25rem; + margin: 1rem 0; +} + +h4 { + font-size: 1.05rem; + margin: 1.33rem 0; +} + +h5 { + font-size: 1rem; + margin: 1.5rem 0; +} + +h6 { + font-size: 0.875rem; + margin: 2.33rem 0; +} + +.uppercase { + text-transform: uppercase; +} + +dl, +menu, +ol, +ul { + margin: 1em 0; +} + +dd { + margin: 0 0 0 40px; +} + +.container { + max-width: 1700px; + padding: 0 2rem; +} + +/* Footer */ +.tsd-generator { + border-top: 1px solid var(--color-accent); + padding-top: 1rem; + padding-bottom: 1rem; + max-height: 3.5rem; +} + +.tsd-generator > p { + margin-top: 0; + margin-bottom: 0; + padding: 0 1rem; +} + +.container-main { + margin: 0 auto; + /* toolbar, footer, margin */ + min-height: calc(100vh - 41px - 56px - 4rem); +} + +@keyframes fade-in { + from { + opacity: 0; + } + to { + opacity: 1; + } +} +@keyframes fade-out { + from { + opacity: 1; + visibility: visible; + } + to { + opacity: 0; + } +} +@keyframes fade-in-delayed { + 0% { + opacity: 0; + } + 33% { + opacity: 0; + } + 100% { + opacity: 1; + } +} +@keyframes fade-out-delayed { + 0% { + opacity: 1; + visibility: visible; + } + 66% { + opacity: 0; + } + 100% { + opacity: 0; + } +} +@keyframes pop-in-from-right { + from { + transform: translate(100%, 0); + } + to { + transform: translate(0, 0); + } +} +@keyframes pop-out-to-right { + from { + transform: translate(0, 0); + visibility: visible; + } + to { + transform: translate(100%, 0); + } +} +body { + background: var(--color-background); + font-family: "Segoe UI", sans-serif; + font-size: 16px; + color: var(--color-text); +} + +a { + color: var(--color-link); + text-decoration: none; +} +a:hover { + text-decoration: underline; +} +a.external[target="_blank"] { + background-image: var(--external-icon); + background-position: top 3px right; + background-repeat: no-repeat; + padding-right: 13px; +} + +code, +pre { + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; + padding: 0.2em; + margin: 0; + font-size: 0.875rem; + border-radius: 0.8em; +} + +pre { + position: relative; + white-space: pre; + white-space: pre-wrap; + word-wrap: break-word; + padding: 10px; + border: 1px solid var(--color-accent); +} +pre code { + padding: 0; + font-size: 100%; +} +pre > button { + position: absolute; + top: 10px; + right: 10px; + opacity: 0; + transition: opacity 0.1s; + box-sizing: border-box; +} +pre:hover > button, +pre > button.visible { + opacity: 1; +} + +blockquote { + margin: 1em 0; + padding-left: 1em; + border-left: 4px solid gray; +} + +.tsd-typography { + line-height: 1.333em; +} +.tsd-typography ul { + list-style: square; + padding: 0 0 0 20px; + margin: 0; +} +.tsd-typography .tsd-index-panel h3, +.tsd-index-panel .tsd-typography h3, +.tsd-typography h4, +.tsd-typography h5, +.tsd-typography h6 { + font-size: 1em; +} +.tsd-typography h5, +.tsd-typography h6 { + font-weight: normal; +} +.tsd-typography p, +.tsd-typography ul, +.tsd-typography ol { + margin: 1em 0; +} +.tsd-typography table { + border-collapse: collapse; + border: none; +} +.tsd-typography td, +.tsd-typography th { + padding: 6px 13px; + border: 1px solid var(--color-accent); +} +.tsd-typography thead, +.tsd-typography tr:nth-child(even) { + background-color: var(--color-background-secondary); +} + +.tsd-breadcrumb { + margin: 0; + padding: 0; + color: var(--color-text-aside); +} +.tsd-breadcrumb a { + color: var(--color-text-aside); + text-decoration: none; +} +.tsd-breadcrumb a:hover { + text-decoration: underline; +} +.tsd-breadcrumb li { + display: inline; +} +.tsd-breadcrumb li:after { + content: " / "; +} + +.tsd-comment-tags { + display: flex; + flex-direction: column; +} +dl.tsd-comment-tag-group { + display: flex; + align-items: center; + overflow: hidden; + margin: 0.5em 0; +} +dl.tsd-comment-tag-group dt { + display: flex; + margin-right: 0.5em; + font-size: 0.875em; + font-weight: normal; +} +dl.tsd-comment-tag-group dd { + margin: 0; +} +code.tsd-tag { + padding: 0.25em 0.4em; + border: 0.1em solid var(--color-accent); + margin-right: 0.25em; + font-size: 70%; +} +h1 code.tsd-tag:first-of-type { + margin-left: 0.25em; +} + +dl.tsd-comment-tag-group dd:before, +dl.tsd-comment-tag-group dd:after { + content: " "; +} +dl.tsd-comment-tag-group dd pre, +dl.tsd-comment-tag-group dd:after { + clear: both; +} +dl.tsd-comment-tag-group p { + margin: 0; +} + +.tsd-panel.tsd-comment .lead { + font-size: 1.1em; + line-height: 1.333em; + margin-bottom: 2em; +} +.tsd-panel.tsd-comment .lead:last-child { + margin-bottom: 0; +} + +.tsd-filter-visibility h4 { + font-size: 1rem; + padding-top: 0.75rem; + padding-bottom: 0.5rem; + margin: 0; +} +.tsd-filter-item:not(:last-child) { + margin-bottom: 0.5rem; +} +.tsd-filter-input { + display: flex; + width: fit-content; + width: -moz-fit-content; + align-items: center; + user-select: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + cursor: pointer; +} +.tsd-filter-input input[type="checkbox"] { + cursor: pointer; + position: absolute; + width: 1.5em; + height: 1.5em; + opacity: 0; +} +.tsd-filter-input input[type="checkbox"]:disabled { + pointer-events: none; +} +.tsd-filter-input svg { + cursor: pointer; + width: 1.5em; + height: 1.5em; + margin-right: 0.5em; + border-radius: 0.33em; + /* Leaving this at full opacity breaks event listeners on Firefox. + Don't remove unless you know what you're doing. */ + opacity: 0.99; +} +.tsd-filter-input input[type="checkbox"]:focus + svg { + transform: scale(0.95); +} +.tsd-filter-input input[type="checkbox"]:focus:not(:focus-visible) + svg { + transform: scale(1); +} +.tsd-checkbox-background { + fill: var(--color-accent); +} +input[type="checkbox"]:checked ~ svg .tsd-checkbox-checkmark { + stroke: var(--color-text); +} +.tsd-filter-input input:disabled ~ svg > .tsd-checkbox-background { + fill: var(--color-background); + stroke: var(--color-accent); + stroke-width: 0.25rem; +} +.tsd-filter-input input:disabled ~ svg > .tsd-checkbox-checkmark { + stroke: var(--color-accent); +} + +.tsd-theme-toggle { + padding-top: 0.75rem; +} +.tsd-theme-toggle > h4 { + display: inline; + vertical-align: middle; + margin-right: 0.75rem; +} + +.tsd-hierarchy { + list-style: square; + margin: 0; +} +.tsd-hierarchy .target { + font-weight: bold; +} + +.tsd-panel-group.tsd-index-group { + margin-bottom: 0; +} +.tsd-index-panel .tsd-index-list { + list-style: none; + line-height: 1.333em; + margin: 0; + padding: 0.25rem 0 0 0; + overflow: hidden; + display: grid; + grid-template-columns: repeat(3, 1fr); + column-gap: 1rem; + grid-template-rows: auto; +} +@media (max-width: 1024px) { + .tsd-index-panel .tsd-index-list { + grid-template-columns: repeat(2, 1fr); + } +} +@media (max-width: 768px) { + .tsd-index-panel .tsd-index-list { + grid-template-columns: repeat(1, 1fr); + } +} +.tsd-index-panel .tsd-index-list li { + -webkit-page-break-inside: avoid; + -moz-page-break-inside: avoid; + -ms-page-break-inside: avoid; + -o-page-break-inside: avoid; + page-break-inside: avoid; +} + +.tsd-flag { + display: inline-block; + padding: 0.25em 0.4em; + border-radius: 4px; + color: var(--color-comment-tag-text); + background-color: var(--color-comment-tag); + text-indent: 0; + font-size: 75%; + line-height: 1; + font-weight: normal; +} + +.tsd-anchor { + position: relative; + top: -100px; +} + +.tsd-member { + position: relative; +} +.tsd-member .tsd-anchor + h3 { + display: flex; + align-items: center; + margin-top: 0; + margin-bottom: 0; + border-bottom: none; +} + +.tsd-navigation.settings { + margin: 1rem 0; +} +.tsd-navigation > a, +.tsd-navigation .tsd-accordion-summary { + width: calc(100% - 0.5rem); +} +.tsd-navigation a, +.tsd-navigation summary > span, +.tsd-page-navigation a { + display: inline-flex; + align-items: center; + padding: 0.25rem; + color: var(--color-text); + text-decoration: none; + box-sizing: border-box; +} +.tsd-navigation a.current, +.tsd-page-navigation a.current { + background: var(--color-active-menu-item); +} +.tsd-navigation a:hover, +.tsd-page-navigation a:hover { + text-decoration: underline; +} +.tsd-navigation ul, +.tsd-page-navigation ul { + margin-top: 0; + margin-bottom: 0; + padding: 0; + list-style: none; +} +.tsd-navigation li, +.tsd-page-navigation li { + padding: 0; + max-width: 100%; +} +.tsd-nested-navigation { + margin-left: 3rem; +} +.tsd-nested-navigation > li > details { + margin-left: -1.5rem; +} +.tsd-small-nested-navigation { + margin-left: 1.5rem; +} +.tsd-small-nested-navigation > li > details { + margin-left: -1.5rem; +} + +.tsd-nested-navigation > li > a, +.tsd-nested-navigation > li > span { + width: calc(100% - 1.75rem - 0.5rem); +} + +.tsd-page-navigation ul { + padding-left: 1.75rem; +} + +#tsd-sidebar-links a { + margin-top: 0; + margin-bottom: 0.5rem; + line-height: 1.25rem; +} +#tsd-sidebar-links a:last-of-type { + margin-bottom: 0; +} + +a.tsd-index-link { + padding: 0.25rem 0 !important; + font-size: 1rem; + line-height: 1.25rem; + display: inline-flex; + align-items: center; + color: var(--color-text); +} +.tsd-accordion-summary { + list-style-type: none; /* hide marker on non-safari */ + outline: none; /* broken on safari, so just hide it */ +} +.tsd-accordion-summary::-webkit-details-marker { + display: none; /* hide marker on safari */ +} +.tsd-accordion-summary, +.tsd-accordion-summary a { + user-select: none; + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + + cursor: pointer; +} +.tsd-accordion-summary a { + width: calc(100% - 1.5rem); +} +.tsd-accordion-summary > * { + margin-top: 0; + margin-bottom: 0; + padding-top: 0; + padding-bottom: 0; +} +.tsd-index-accordion .tsd-accordion-summary > svg { + margin-left: 0.25rem; +} +.tsd-index-content > :not(:first-child) { + margin-top: 0.75rem; +} +.tsd-index-heading { + margin-top: 1.5rem; + margin-bottom: 0.75rem; +} + +.tsd-kind-icon { + margin-right: 0.5rem; + width: 1.25rem; + height: 1.25rem; + min-width: 1.25rem; + min-height: 1.25rem; +} +.tsd-kind-icon path { + transform-origin: center; + transform: scale(1.1); +} +.tsd-signature > .tsd-kind-icon { + margin-right: 0.8rem; +} + +.tsd-panel { + margin-bottom: 2.5rem; +} +.tsd-panel.tsd-member { + margin-bottom: 4rem; +} +.tsd-panel:empty { + display: none; +} +.tsd-panel > h1, +.tsd-panel > h2, +.tsd-panel > h3 { + margin: 1.5rem -1.5rem 0.75rem -1.5rem; + padding: 0 1.5rem 0.75rem 1.5rem; +} +.tsd-panel > h1.tsd-before-signature, +.tsd-panel > h2.tsd-before-signature, +.tsd-panel > h3.tsd-before-signature { + margin-bottom: 0; + border-bottom: none; +} + +.tsd-panel-group { + margin: 4rem 0; +} +.tsd-panel-group.tsd-index-group { + margin: 2rem 0; +} +.tsd-panel-group.tsd-index-group details { + margin: 2rem 0; +} + +#tsd-search { + transition: background-color 0.2s; +} +#tsd-search .title { + position: relative; + z-index: 2; +} +#tsd-search .field { + position: absolute; + left: 0; + top: 0; + right: 2.5rem; + height: 100%; +} +#tsd-search .field input { + box-sizing: border-box; + position: relative; + top: -50px; + z-index: 1; + width: 100%; + padding: 0 10px; + opacity: 0; + outline: 0; + border: 0; + background: transparent; + color: var(--color-text); +} +#tsd-search .field label { + position: absolute; + overflow: hidden; + right: -40px; +} +#tsd-search .field input, +#tsd-search .title, +#tsd-toolbar-links a { + transition: opacity 0.2s; +} +#tsd-search .results { + position: absolute; + visibility: hidden; + top: 40px; + width: 100%; + margin: 0; + padding: 0; + list-style: none; + box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); +} +#tsd-search .results li { + background-color: var(--color-background); + line-height: initial; + padding: 4px; +} +#tsd-search .results li:nth-child(even) { + background-color: var(--color-background-secondary); +} +#tsd-search .results li.state { + display: none; +} +#tsd-search .results li.current:not(.no-results), +#tsd-search .results li:hover:not(.no-results) { + background-color: var(--color-accent); +} +#tsd-search .results a { + display: flex; + align-items: center; + padding: 0.25rem; + box-sizing: border-box; +} +#tsd-search .results a:before { + top: 10px; +} +#tsd-search .results span.parent { + color: var(--color-text-aside); + font-weight: normal; +} +#tsd-search.has-focus { + background-color: var(--color-accent); +} +#tsd-search.has-focus .field input { + top: 0; + opacity: 1; +} +#tsd-search.has-focus .title, +#tsd-search.has-focus #tsd-toolbar-links a { + z-index: 0; + opacity: 0; +} +#tsd-search.has-focus .results { + visibility: visible; +} +#tsd-search.loading .results li.state.loading { + display: block; +} +#tsd-search.failure .results li.state.failure { + display: block; +} + +#tsd-toolbar-links { + position: absolute; + top: 0; + right: 2rem; + height: 100%; + display: flex; + align-items: center; + justify-content: flex-end; +} +#tsd-toolbar-links a { + margin-left: 1.5rem; +} +#tsd-toolbar-links a:hover { + text-decoration: underline; +} + +.tsd-signature { + margin: 0 0 1rem 0; + padding: 1rem 0.5rem; + border: 1px solid var(--color-accent); + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; + font-size: 14px; + overflow-x: auto; +} + +.tsd-signature-symbol { + color: var(--color-text-aside); + font-weight: normal; +} + +.tsd-signature-type { + font-style: italic; + font-weight: normal; +} + +.tsd-signatures { + padding: 0; + margin: 0 0 1em 0; + list-style-type: none; +} +.tsd-signatures .tsd-signature { + margin: 0; + border-color: var(--color-accent); + border-width: 1px 0; + transition: background-color 0.1s; +} +.tsd-description .tsd-signatures .tsd-signature { + border-width: 1px; +} + +ul.tsd-parameter-list, +ul.tsd-type-parameter-list { + list-style: square; + margin: 0; + padding-left: 20px; +} +ul.tsd-parameter-list > li.tsd-parameter-signature, +ul.tsd-type-parameter-list > li.tsd-parameter-signature { + list-style: none; + margin-left: -20px; +} +ul.tsd-parameter-list h5, +ul.tsd-type-parameter-list h5 { + font-size: 16px; + margin: 1em 0 0.5em 0; +} +.tsd-sources { + margin-top: 1rem; + font-size: 0.875em; +} +.tsd-sources a { + color: var(--color-text-aside); + text-decoration: underline; +} +.tsd-sources ul { + list-style: none; + padding: 0; +} + +.tsd-page-toolbar { + position: sticky; + z-index: 1; + top: 0; + left: 0; + width: 100%; + color: var(--color-text); + background: var(--color-background-secondary); + border-bottom: 1px var(--color-accent) solid; + transition: transform 0.3s ease-in-out; +} +.tsd-page-toolbar a { + color: var(--color-text); + text-decoration: none; +} +.tsd-page-toolbar a.title { + font-weight: bold; +} +.tsd-page-toolbar a.title:hover { + text-decoration: underline; +} +.tsd-page-toolbar .tsd-toolbar-contents { + display: flex; + justify-content: space-between; + height: 2.5rem; + margin: 0 auto; +} +.tsd-page-toolbar .table-cell { + position: relative; + white-space: nowrap; + line-height: 40px; +} +.tsd-page-toolbar .table-cell:first-child { + width: 100%; +} +.tsd-page-toolbar .tsd-toolbar-icon { + box-sizing: border-box; + line-height: 0; + padding: 12px 0; +} + +.tsd-widget { + display: inline-block; + overflow: hidden; + opacity: 0.8; + height: 40px; + transition: + opacity 0.1s, + background-color 0.2s; + vertical-align: bottom; + cursor: pointer; +} +.tsd-widget:hover { + opacity: 0.9; +} +.tsd-widget.active { + opacity: 1; + background-color: var(--color-accent); +} +.tsd-widget.no-caption { + width: 40px; +} +.tsd-widget.no-caption:before { + margin: 0; +} + +.tsd-widget.options, +.tsd-widget.menu { + display: none; +} +input[type="checkbox"] + .tsd-widget:before { + background-position: -120px 0; +} +input[type="checkbox"]:checked + .tsd-widget:before { + background-position: -160px 0; +} + +img { + max-width: 100%; +} + +.tsd-anchor-icon { + display: inline-flex; + align-items: center; + margin-left: 0.5rem; + vertical-align: middle; + color: var(--color-text); +} + +.tsd-anchor-icon svg { + width: 1em; + height: 1em; + visibility: hidden; +} + +.tsd-anchor-link:hover > .tsd-anchor-icon svg { + visibility: visible; +} + +.deprecated { + text-decoration: line-through !important; +} + +.warning { + padding: 1rem; + color: var(--color-warning-text); + background: var(--color-background-warning); +} + +.tsd-kind-project { + color: var(--color-ts-project); +} +.tsd-kind-module { + color: var(--color-ts-module); +} +.tsd-kind-namespace { + color: var(--color-ts-namespace); +} +.tsd-kind-enum { + color: var(--color-ts-enum); +} +.tsd-kind-enum-member { + color: var(--color-ts-enum-member); +} +.tsd-kind-variable { + color: var(--color-ts-variable); +} +.tsd-kind-function { + color: var(--color-ts-function); +} +.tsd-kind-class { + color: var(--color-ts-class); +} +.tsd-kind-interface { + color: var(--color-ts-interface); +} +.tsd-kind-constructor { + color: var(--color-ts-constructor); +} +.tsd-kind-property { + color: var(--color-ts-property); +} +.tsd-kind-method { + color: var(--color-ts-method); +} +.tsd-kind-call-signature { + color: var(--color-ts-call-signature); +} +.tsd-kind-index-signature { + color: var(--color-ts-index-signature); +} +.tsd-kind-constructor-signature { + color: var(--color-ts-constructor-signature); +} +.tsd-kind-parameter { + color: var(--color-ts-parameter); +} +.tsd-kind-type-literal { + color: var(--color-ts-type-literal); +} +.tsd-kind-type-parameter { + color: var(--color-ts-type-parameter); +} +.tsd-kind-accessor { + color: var(--color-ts-accessor); +} +.tsd-kind-get-signature { + color: var(--color-ts-get-signature); +} +.tsd-kind-set-signature { + color: var(--color-ts-set-signature); +} +.tsd-kind-type-alias { + color: var(--color-ts-type-alias); +} + +/* if we have a kind icon, don't color the text by kind */ +.tsd-kind-icon ~ span { + color: var(--color-text); +} + +* { + scrollbar-width: thin; + scrollbar-color: var(--color-accent) var(--color-icon-background); +} + +*::-webkit-scrollbar { + width: 0.75rem; +} + +*::-webkit-scrollbar-track { + background: var(--color-icon-background); +} + +*::-webkit-scrollbar-thumb { + background-color: var(--color-accent); + border-radius: 999rem; + border: 0.25rem solid var(--color-icon-background); +} + +/* mobile */ +@media (max-width: 769px) { + .tsd-widget.options, + .tsd-widget.menu { + display: inline-block; + } + + .container-main { + display: flex; + } + html .col-content { + float: none; + max-width: 100%; + width: 100%; + } + html .col-sidebar { + position: fixed !important; + overflow-y: auto; + -webkit-overflow-scrolling: touch; + z-index: 1024; + top: 0 !important; + bottom: 0 !important; + left: auto !important; + right: 0 !important; + padding: 1.5rem 1.5rem 0 0; + width: 75vw; + visibility: hidden; + background-color: var(--color-background); + transform: translate(100%, 0); + } + html .col-sidebar > *:last-child { + padding-bottom: 20px; + } + html .overlay { + content: ""; + display: block; + position: fixed; + z-index: 1023; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: rgba(0, 0, 0, 0.75); + visibility: hidden; + } + + .to-has-menu .overlay { + animation: fade-in 0.4s; + } + + .to-has-menu .col-sidebar { + animation: pop-in-from-right 0.4s; + } + + .from-has-menu .overlay { + animation: fade-out 0.4s; + } + + .from-has-menu .col-sidebar { + animation: pop-out-to-right 0.4s; + } + + .has-menu body { + overflow: hidden; + } + .has-menu .overlay { + visibility: visible; + } + .has-menu .col-sidebar { + visibility: visible; + transform: translate(0, 0); + display: flex; + flex-direction: column; + gap: 1.5rem; + max-height: 100vh; + padding: 1rem 2rem; + } + .has-menu .tsd-navigation { + max-height: 100%; + } +} + +/* one sidebar */ +@media (min-width: 770px) { + .container-main { + display: grid; + grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); + grid-template-areas: "sidebar content"; + margin: 2rem auto; + } + + .col-sidebar { + grid-area: sidebar; + } + .col-content { + grid-area: content; + padding: 0 1rem; + } +} +@media (min-width: 770px) and (max-width: 1399px) { + .col-sidebar { + max-height: calc(100vh - 2rem - 42px); + overflow: auto; + position: sticky; + top: 42px; + padding-top: 1rem; + } + .site-menu { + margin-top: 1rem; + } +} + +/* two sidebars */ +@media (min-width: 1200px) { + .container-main { + grid-template-columns: minmax(0, 1fr) minmax(0, 2.5fr) minmax(0, 20rem); + grid-template-areas: "sidebar content toc"; + } + + .col-sidebar { + display: contents; + } + + .page-menu { + grid-area: toc; + padding-left: 1rem; + } + .site-menu { + grid-area: sidebar; + } + + .site-menu { + margin-top: 1rem 0; + } + + .page-menu, + .site-menu { + max-height: calc(100vh - 2rem - 42px); + overflow: auto; + position: sticky; + top: 42px; + } +} diff --git a/docs/classes/MiniSearch.MiniSearch.html b/docs/classes/MiniSearch.MiniSearch.html new file mode 100644 index 00000000..103b7d3e --- /dev/null +++ b/docs/classes/MiniSearch.MiniSearch.html @@ -0,0 +1,263 @@ +MiniSearch | MiniSearch

MiniSearch is the main entrypoint class, implementing a full-text +search engine in memory.

+

Type Parameters

  • T = any

    The type of the documents being indexed.

    +

    Basic example:

    const documents = [
    {
    id: 1,
    title: 'Moby Dick',
    text: 'Call me Ishmael. Some years ago...',
    category: 'fiction'
    },
    {
    id: 2,
    title: 'Zen and the Art of Motorcycle Maintenance',
    text: 'I can see by my watch...',
    category: 'fiction'
    },
    {
    id: 3,
    title: 'Neuromancer',
    text: 'The sky above the port was...',
    category: 'fiction'
    },
    {
    id: 4,
    title: 'Zen and the Art of Archery',
    text: 'At first sight it must seem...',
    category: 'non-fiction'
    },
    // ...and more
    ]

    // Create a search engine that indexes the 'title' and 'text' fields for
    // full-text search. Search results will include 'title' and 'category' (plus the
    // id field, that is always stored and returned)
    const miniSearch = new MiniSearch({
    fields: ['title', 'text'],
    storeFields: ['title', 'category']
    })

    // Add documents to the index
    miniSearch.addAll(documents)

    // Search for documents:
    let results = miniSearch.search('zen art motorcycle')
    // => [
    // { id: 2, title: 'Zen and the Art of Motorcycle Maintenance', category: 'fiction', score: 2.77258 },
    // { id: 4, title: 'Zen and the Art of Archery', category: 'non-fiction', score: 1.38629 }
    // ] +
    +

Hierarchy

  • MiniSearch

Constructors

  • Type Parameters

    • T = any

    Parameters

    • options: Options<T>

      Configuration options

      +

      Examples:

      // Create a search engine that indexes the 'title' and 'text' fields of your
      // documents:
      const miniSearch = new MiniSearch({ fields: ['title', 'text'] }) +
      +

      ID Field:

      // Your documents are assumed to include a unique 'id' field, but if you want
      // to use a different field for document identification, you can set the
      // 'idField' option:
      const miniSearch = new MiniSearch({ idField: 'key', fields: ['title', 'text'] }) +
      +

      Options and defaults:

      // The full set of options (here with their default value) is:
      const miniSearch = new MiniSearch({
      // idField: field that uniquely identifies a document
      idField: 'id',

      // extractField: function used to get the value of a field in a document.
      // By default, it assumes the document is a flat object with field names as
      // property keys and field values as string property values, but custom logic
      // can be implemented by setting this option to a custom extractor function.
      extractField: (document, fieldName) => document[fieldName],

      // tokenize: function used to split fields into individual terms. By
      // default, it is also used to tokenize search queries, unless a specific
      // `tokenize` search option is supplied. When tokenizing an indexed field,
      // the field name is passed as the second argument.
      tokenize: (string, _fieldName) => string.split(SPACE_OR_PUNCTUATION),

      // processTerm: function used to process each tokenized term before
      // indexing. It can be used for stemming and normalization. Return a falsy
      // value in order to discard a term. By default, it is also used to process
      // search queries, unless a specific `processTerm` option is supplied as a
      // search option. When processing a term from a indexed field, the field
      // name is passed as the second argument.
      processTerm: (term, _fieldName) => term.toLowerCase(),

      // searchOptions: default search options, see the `search` method for
      // details
      searchOptions: undefined,

      // fields: document fields to be indexed. Mandatory, but not set by default
      fields: undefined

      // storeFields: document fields to be stored and returned as part of the
      // search results.
      storeFields: []
      }) +
      +

    Returns MiniSearch<T>

Properties

wildcard: typeof wildcard = ...

The special wildcard symbol that can be passed to MiniSearch#search +to match all documents

+

Accessors

  • get dirtCount(): number
  • The number of documents discarded since the most recent vacuuming

    +

    Returns number

  • get dirtFactor(): number
  • A number between 0 and 1 giving an indication about the proportion of +documents that are discarded, and can therefore be cleaned up by vacuuming. +A value close to 0 means that the index is relatively clean, while a higher +value means that the index is relatively dirty, and vacuuming could release +memory.

    +

    Returns number

  • get documentCount(): number
  • Total number of documents available to search

    +

    Returns number

  • get isVacuuming(): boolean
  • Is true if a vacuuming operation is ongoing, false otherwise

    +

    Returns boolean

  • get termCount(): number
  • Number of terms in the index

    +

    Returns number

Methods

  • Adds a document to the index

    +

    Parameters

    • document: T

      The document to be indexed

      +

    Returns void

  • Adds all the given documents to the index

    +

    Parameters

    • documents: readonly T[]

      An array of documents to be indexed

      +

    Returns void

  • Adds all the given documents to the index asynchronously.

    +

    Returns a promise that resolves (to undefined) when the indexing is done. +This method is useful when index many documents, to avoid blocking the main +thread. The indexing is performed asynchronously and in chunks.

    +

    Parameters

    • documents: readonly T[]

      An array of documents to be indexed

      +
    • options: {
          chunkSize?: number;
      } = {}

      Configuration options

      +
      • Optional chunkSize?: number

    Returns Promise<void>

    A promise resolving to undefined when the indexing is done

    +
  • Provide suggestions for the given search query

    +

    The result is a list of suggested modified search queries, derived from the +given search query, each with a relevance score, sorted by descending score.

    +

    By default, it uses the same options used for search, except that by +default it performs prefix search on the last term of the query, and +combine terms with 'AND' (requiring all query terms to match). Custom +options can be passed as a second argument. Defaults can be changed upon +calling the MiniSearch constructor, by passing a +autoSuggestOptions option.

    +

    Basic usage:

    // Get suggestions for 'neuro':
    miniSearch.autoSuggest('neuro')
    // => [ { suggestion: 'neuromancer', terms: [ 'neuromancer' ], score: 0.46240 } ] +
    +

    Multiple words:

    // Get suggestions for 'zen ar':
    miniSearch.autoSuggest('zen ar')
    // => [
    // { suggestion: 'zen archery art', terms: [ 'zen', 'archery', 'art' ], score: 1.73332 },
    // { suggestion: 'zen art', terms: [ 'zen', 'art' ], score: 1.21313 }
    // ] +
    +

    Fuzzy suggestions:

    // Correct spelling mistakes using fuzzy search:
    miniSearch.autoSuggest('neromancer', { fuzzy: 0.2 })
    // => [ { suggestion: 'neuromancer', terms: [ 'neuromancer' ], score: 1.03998 } ] +
    +

    Filtering:

    // Get suggestions for 'zen ar', but only within the 'fiction' category
    // (assuming that 'category' is a stored field):
    miniSearch.autoSuggest('zen ar', {
    filter: (result) => result.category === 'fiction'
    })
    // => [
    // { suggestion: 'zen archery art', terms: [ 'zen', 'archery', 'art' ], score: 1.73332 },
    // { suggestion: 'zen art', terms: [ 'zen', 'art' ], score: 1.21313 }
    // ] +
    +

    Parameters

    • queryString: string

      Query string to be expanded into suggestions

      +
    • options: SearchOptions = {}

      Search options. The supported options and default values +are the same as for the MiniSearch#search method, except that by +default prefix search is performed on the last term in the query, and terms +are combined with 'AND'.

      +

    Returns Suggestion[]

    A sorted array of suggestions sorted by relevance score.

    +
  • Discards the document with the given ID, so it won't appear in search results

    +

    It has the same visible effect of MiniSearch.remove (both cause the +document to stop appearing in searches), but a different effect on the +internal data structures:

    +
      +
    • MiniSearch#remove requires passing the full document to be + removed as argument, and removes it from the inverted index immediately.

      +
    • +
    • MiniSearch#discard instead only needs the document ID, and + works by marking the current version of the document as discarded, so it + is immediately ignored by searches. This is faster and more convenient + than MiniSearch#remove, but the index is not immediately + modified. To take care of that, vacuuming is performed after a certain + number of documents are discarded, cleaning up the index and allowing + memory to be released.

      +
    • +
    +

    After discarding a document, it is possible to re-add a new version, and +only the new version will appear in searches. In other words, discarding +and re-adding a document works exactly like removing and re-adding it. The +MiniSearch.replace method can also be used to replace a document +with a new version.

    +

    Details about vacuuming

    Repetite calls to this method would leave obsolete document references in +the index, invisible to searches. Two mechanisms take care of cleaning up: +clean up during search, and vacuuming.

    +
      +
    • Upon search, whenever a discarded ID is found (and ignored for the + results), references to the discarded document are removed from the + inverted index entries for the search terms. This ensures that subsequent + searches for the same terms do not need to skip these obsolete references + again.

      +
    • +
    • In addition, vacuuming is performed automatically by default (see the + autoVacuum field in Options) after a certain number of + documents are discarded. Vacuuming traverses all terms in the index, + cleaning up all references to discarded documents. Vacuuming can also be + triggered manually by calling MiniSearch#vacuum.

      +
    • +
    +

    Parameters

    • id: any

      The ID of the document to be discarded

      +

    Returns void

  • Discards the documents with the given IDs, so they won't appear in search +results

    +

    It is equivalent to calling MiniSearch#discard for all the given +IDs, but with the optimization of triggering at most one automatic +vacuuming at the end.

    +

    Note: to remove all documents from the index, it is faster and more +convenient to call MiniSearch.removeAll with no argument, instead +of passing all IDs to this method.

    +

    Parameters

    • ids: readonly any[]

    Returns void

  • Returns the stored fields (as configured in the storeFields constructor +option) for the given document ID. Returns undefined if the document is +not present in the index.

    +

    Parameters

    • id: any

      The document ID

      +

    Returns undefined | Record<string, unknown>

  • Returns true if a document with the given ID is present in the index and +available for search, false otherwise

    +

    Parameters

    • id: any

      The document ID

      +

    Returns boolean

  • Removes the given document from the index.

    +

    The document to remove must NOT have changed between indexing and removal, +otherwise the index will be corrupted.

    +

    This method requires passing the full document to be removed (not just the +ID), and immediately removes the document from the inverted index, allowing +memory to be released. A convenient alternative is MiniSearch#discard, which needs only the document ID, and has the same +visible effect, but delays cleaning up the index until the next vacuuming.

    +

    Parameters

    • document: T

      The document to be removed

      +

    Returns void

  • Removes all the given documents from the index. If called with no arguments, +it removes all documents from the index.

    +

    Parameters

    • Optional documents: readonly T[]

      The documents to be removed. If this argument is omitted, +all documents are removed. Note that, for removing all documents, it is +more efficient to call this method with no arguments than to pass all +documents.

      +

    Returns void

  • It replaces an existing document with the given updated version

    +

    It works by discarding the current version and adding the updated one, so +it is functionally equivalent to calling MiniSearch#discard +followed by MiniSearch#add. The ID of the updated document should +be the same as the original one.

    +

    Since it uses MiniSearch#discard internally, this method relies on +vacuuming to clean up obsolete document references from the index, allowing +memory to be released (see MiniSearch#discard).

    +

    Parameters

    • updatedDocument: T

      The updated document to replace the old version +with

      +

    Returns void

  • Search for documents matching the given search query.

    +

    The result is a list of scored document IDs matching the query, sorted by +descending score, and each including data about which terms were matched and +in which fields.

    +

    Basic usage:

    // Search for "zen art motorcycle" with default options: terms have to match
    // exactly, and individual terms are joined with OR
    miniSearch.search('zen art motorcycle')
    // => [ { id: 2, score: 2.77258, match: { ... } }, { id: 4, score: 1.38629, match: { ... } } ] +
    +

    Restrict search to specific fields:

    // Search only in the 'title' field
    miniSearch.search('zen', { fields: ['title'] }) +
    +

    Field boosting:

    // Boost a field
    miniSearch.search('zen', { boost: { title: 2 } }) +
    +

    Prefix search:

    // Search for "moto" with prefix search (it will match documents
    // containing terms that start with "moto" or "neuro")
    miniSearch.search('moto neuro', { prefix: true }) +
    +

    Fuzzy search:

    // Search for "ismael" with fuzzy search (it will match documents containing
    // terms similar to "ismael", with a maximum edit distance of 0.2 term.length
    // (rounded to nearest integer)
    miniSearch.search('ismael', { fuzzy: 0.2 }) +
    +

    Combining strategies:

    // Mix of exact match, prefix search, and fuzzy search
    miniSearch.search('ismael mob', {
    prefix: true,
    fuzzy: 0.2
    }) +
    +

    Advanced prefix and fuzzy search:

    // Perform fuzzy and prefix search depending on the search term. Here
    // performing prefix and fuzzy search only on terms longer than 3 characters
    miniSearch.search('ismael mob', {
    prefix: term => term.length > 3
    fuzzy: term => term.length > 3 ? 0.2 : null
    }) +
    +

    Combine with AND:

    // Combine search terms with AND (to match only documents that contain both
    // "motorcycle" and "art")
    miniSearch.search('motorcycle art', { combineWith: 'AND' }) +
    +

    Combine with AND_NOT:

    There is also an AND_NOT combinator, that finds documents that match the +first term, but do not match any of the other terms. This combinator is +rarely useful with simple queries, and is meant to be used with advanced +query combinations (see later for more details).

    +

    Filtering results:

    // Filter only results in the 'fiction' category (assuming that 'category'
    // is a stored field)
    miniSearch.search('motorcycle art', {
    filter: (result) => result.category === 'fiction'
    }) +
    +

    Wildcard query

    Searching for an empty string (assuming the default tokenizer) returns no +results. Sometimes though, one needs to match all documents, like in a +"wildcard" search. This is possible by passing the special value +MiniSearch.wildcard as the query:

    +
    // Return search results for all documents
    miniSearch.search(MiniSearch.wildcard) +
    +

    Note that search options such as filter and boostDocument are still +applied, influencing which results are returned, and their order:

    +
    // Return search results for all documents in the 'fiction' category
    miniSearch.search(MiniSearch.wildcard, {
    filter: (result) => result.category === 'fiction'
    }) +
    +

    Advanced combination of queries:

    It is possible to combine different subqueries with OR, AND, and AND_NOT, +and even with different search options, by passing a query expression +tree object as the first argument, instead of a string.

    +
    // Search for documents that contain "zen" and ("motorcycle" or "archery")
    miniSearch.search({
    combineWith: 'AND',
    queries: [
    'zen',
    {
    combineWith: 'OR',
    queries: ['motorcycle', 'archery']
    }
    ]
    })

    // Search for documents that contain ("apple" or "pear") but not "juice" and
    // not "tree"
    miniSearch.search({
    combineWith: 'AND_NOT',
    queries: [
    {
    combineWith: 'OR',
    queries: ['apple', 'pear']
    },
    'juice',
    'tree'
    ]
    }) +
    +

    Each node in the expression tree can be either a string, or an object that +supports all SearchOptions fields, plus a queries array field for +subqueries.

    +

    Note that, while this can become complicated to do by hand for complex or +deeply nested queries, it provides a formalized expression tree API for +external libraries that implement a parser for custom query languages.

    +

    Parameters

    Returns SearchResult[]

  • Allows serialization of the index to JSON, to possibly store it and later +deserialize it with MiniSearch.loadJSON.

    +

    Normally one does not directly call this method, but rather call the +standard JavaScript JSON.stringify() passing the MiniSearch +instance, and JavaScript will internally call this method. Upon +deserialization, one must pass to MiniSearch.loadJSON the same +options used to create the original instance that was serialized.

    +

    Usage:

    // Serialize the index:
    let miniSearch = new MiniSearch({ fields: ['title', 'text'] })
    miniSearch.addAll(documents)
    const json = JSON.stringify(miniSearch)

    // Later, to deserialize it:
    miniSearch = MiniSearch.loadJSON(json, { fields: ['title', 'text'] }) +
    +

    Returns AsPlainObject

    A plain-object serializable representation of the search index.

    +
  • Triggers a manual vacuuming, cleaning up references to discarded documents +from the inverted index

    +

    Vacuuming is only useful for applications that use the MiniSearch#discard or MiniSearch#replace methods.

    +

    By default, vacuuming is performed automatically when needed (controlled by +the autoVacuum field in Options), so there is usually no need to +call this method, unless one wants to make sure to perform vacuuming at a +specific moment.

    +

    Vacuuming traverses all terms in the inverted index in batches, and cleans +up references to discarded documents from the posting list, allowing memory +to be released.

    +

    The method takes an optional object as argument with the following keys:

    +
      +
    • batchSize: the size of each batch (1000 by default)

      +
    • +
    • batchWait: the number of milliseconds to wait between batches (10 by + default)

      +
    • +
    +

    On large indexes, vacuuming could have a non-negligible cost: batching +avoids blocking the thread for long, diluting this cost so that it is not +negatively affecting the application. Nonetheless, this method should only +be called when necessary, and relying on automatic vacuuming is usually +better.

    +

    It returns a promise that resolves (to undefined) when the clean up is +completed. If vacuuming is already ongoing at the time this method is +called, a new one is enqueued immediately after the ongoing one, and a +corresponding promise is returned. However, no more than one vacuuming is +enqueued on top of the ongoing one, even if this method is called more +times (enqueuing multiple ones would be useless).

    +

    Parameters

    Returns Promise<void>

  • Returns the default value of an option. It will throw an error if no option +with the given name exists.

    +

    Parameters

    • optionName: string

      Name of the option

      +

    Returns any

    The default value of the given option

    +

    Usage:

    // Get default tokenizer
    MiniSearch.getDefault('tokenize')

    // Get default term processor
    MiniSearch.getDefault('processTerm')

    // Unknown options will throw an error
    MiniSearch.getDefault('notExisting')
    // => throws 'MiniSearch: unknown option "notExisting"' +
    +
  • Deserializes a JSON index (serialized with JSON.stringify(miniSearch)) +and instantiates a MiniSearch instance. It should be given the same options +originally used when serializing the index.

    +

    Usage:

    // If the index was serialized with:
    let miniSearch = new MiniSearch({ fields: ['title', 'text'] })
    miniSearch.addAll(documents)

    const json = JSON.stringify(miniSearch)
    // It can later be deserialized like this:
    miniSearch = MiniSearch.loadJSON(json, { fields: ['title', 'text'] }) +
    +

    Type Parameters

    • T = any

    Parameters

    • json: string

      JSON-serialized index

      +
    • options: Options<T>

      configuration options, same as the constructor

      +

    Returns MiniSearch<T>

    An instance of MiniSearch deserialized from the given JSON.

    +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/classes/SearchableMap_SearchableMap.SearchableMap.html b/docs/classes/SearchableMap_SearchableMap.SearchableMap.html new file mode 100644 index 00000000..ee52d749 --- /dev/null +++ b/docs/classes/SearchableMap_SearchableMap.SearchableMap.html @@ -0,0 +1,98 @@ +SearchableMap | MiniSearch

A class implementing the same interface as a standard JavaScript +Map +with string keys, but adding support for efficiently searching entries with +prefix or fuzzy search. This class is used internally by [[MiniSearch]] as +the inverted index data structure. The implementation is a radix tree +(compressed prefix tree).

+

Since this class can be of general utility beyond MiniSearch, it is +exported by the minisearch package and can be imported (or required) as +minisearch/SearchableMap.

+

Type Parameters

  • T = any

    The type of the values stored in the map.

    +

Hierarchy

  • SearchableMap

Constructors

  • The constructor is normally called without arguments, creating an empty +map. In order to create a [[SearchableMap]] from an iterable or from an +object, check [[SearchableMap.from]] and [[SearchableMap.fromObject]].

    +

    The constructor arguments are for internal use, when creating derived +mutable views of a map at a prefix.

    +

    Type Parameters

    • T = any

    Parameters

    • tree: RadixTree<T> = ...
    • prefix: string = ''

    Returns SearchableMap<T>

Accessors

Methods

  • Creates and returns a mutable view of this [[SearchableMap]], containing only +entries that share the given prefix.

    +

    Usage:

    let map = new SearchableMap()
    map.set("unicorn", 1)
    map.set("universe", 2)
    map.set("university", 3)
    map.set("unique", 4)
    map.set("hello", 5)

    let uni = map.atPrefix("uni")
    uni.get("unique") // => 4
    uni.get("unicorn") // => 1
    uni.get("hello") // => undefined

    let univer = map.atPrefix("univer")
    univer.get("unique") // => undefined
    univer.get("universe") // => 2
    univer.get("university") // => 3 +
    +

    Parameters

    • prefix: string

      The prefix

      +

    Returns SearchableMap<T>

    A [[SearchableMap]] representing a mutable view of the original Map at the given prefix

    +
  • Fetches the value of the given key. If the value does not exist, calls the +given function to create a new value, which is inserted at the given key +and subsequently returned.

    +

    Example:

    const map = searchableMap.fetch('somekey', () => new Map())
    map.set('foo', 'bar') +
    +

    Parameters

    • key: string

      The key to update

      +
    • initial: (() => T)
        • (): T
        • Returns T

    Returns T

    The existing or new value at the given key

    +
  • Returns a Map of all the entries that have a key within the given edit +distance from the search key. The keys of the returned Map are the matching +keys, while the values are two-element arrays where the first element is +the value associated to the key, and the second is the edit distance of the +key to the search key.

    +

    Usage:

    let map = new SearchableMap()
    map.set('hello', 'world')
    map.set('hell', 'yeah')
    map.set('ciao', 'mondo')

    // Get all entries that match the key 'hallo' with a maximum edit distance of 2
    map.fuzzyGet('hallo', 2)
    // => Map(2) { 'hello' => ['world', 1], 'hell' => ['yeah', 2] }

    // In the example, the "hello" key has value "world" and edit distance of 1
    // (change "e" to "a"), the key "hell" has value "yeah" and edit distance of 2
    // (change "e" to "a", delete "o") +
    +

    Parameters

    • key: string

      The search key

      +
    • maxEditDistance: number

      The maximum edit distance (Levenshtein)

      +

    Returns FuzzyResults<T>

    A Map of the matching keys to their value and edit distance

    +
  • Updates the value at the given key using the provided function. The function +is called with the current value at the key, and its return value is used as +the new value to be set.

    +

    Example:

    // Increment the current value by one
    searchableMap.update('somekey', (currentValue) => currentValue == null ? 0 : currentValue + 1) +
    +

    If the value at the given key is or will be an object, it might not require +re-assignment. In that case it is better to use fetch(), because it is +faster.

    +

    Parameters

    • key: string

      The key to update

      +
    • fn: ((value) => T)

      The function used to compute the new value from the current one

      +
        • (value): T
        • Parameters

          • value: undefined | T

          Returns T

    Returns SearchableMap<T>

    The [[SearchableMap]] itself, to allow chaining

    +
  • Creates a [[SearchableMap]] from an Iterable of entries

    +

    Type Parameters

    • T = any

    Parameters

    • entries: Iterable<Entry<T>> | Entry<T>[]

      Entries to be inserted in the [[SearchableMap]]

      +

    Returns SearchableMap<any>

    A new [[SearchableMap]] with the given entries

    +
  • Creates a [[SearchableMap]] from the iterable properties of a JavaScript object

    +

    Type Parameters

    • T = any

    Parameters

    • object: {
          [key: string]: T;
      }

      Object of entries for the [[SearchableMap]]

      +
      • [key: string]: T

    Returns SearchableMap<any>

    A new [[SearchableMap]] with the given entries

    +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/classes/_minisearch_.minisearch.html b/docs/classes/_minisearch_.minisearch.html deleted file mode 100644 index a31c9430..00000000 --- a/docs/classes/_minisearch_.minisearch.html +++ /dev/null @@ -1,1429 +0,0 @@ - - - - - - MiniSearch - - - - - -
-
-
-
- -
-
- Options -
-
- All -
    -
  • Public
  • -
  • Public/Protected
  • -
  • All
  • -
-
- - -
-
- Menu -
-
-
-
-
-
- -

Class MiniSearch<T>

-
-
-
-
-
-
-
-
-
-

MiniSearch is the main entrypoint class, implementing a full-text search - engine in memory.

-
-
-
-
-

Type parameters

-
    -
  • -

    T = any

    -
    -
    -

    The type of the documents being indexed.

    - -

    Basic example:

    -
    -
    const documents = [
    -  {
    -    id: 1,
    -    title: 'Moby Dick',
    -    text: 'Call me Ishmael. Some years ago...',
    -    category: 'fiction'
    -  },
    -  {
    -    id: 2,
    -    title: 'Zen and the Art of Motorcycle Maintenance',
    -    text: 'I can see by my watch...',
    -    category: 'fiction'
    -  },
    -  {
    -    id: 3,
    -    title: 'Neuromancer',
    -    text: 'The sky above the port was...',
    -    category: 'fiction'
    -  },
    -  {
    -    id: 4,
    -    title: 'Zen and the Art of Archery',
    -    text: 'At first sight it must seem...',
    -    category: 'non-fiction'
    -  },
    -  // ...and more
    -]
    -
    -// Create a search engine that indexes the 'title' and 'text' fields for
    -// full-text search. Search results will include 'title' and 'category' (plus the
    -// id field, that is always stored and returned)
    -const miniSearch = new MiniSearch({
    -  fields: ['title', 'text'],
    -  storeFields: ['title', 'category']
    -})
    -
    -// Add documents to the index
    -miniSearch.addAll(documents)
    -
    -// Search for documents:
    -let results = miniSearch.search('zen art motorcycle')
    -// => [
    -//   { id: 2, title: 'Zen and the Art of Motorcycle Maintenance', category: 'fiction', score: 2.77258 },
    -//   { id: 4, title: 'Zen and the Art of Archery', category: 'non-fiction', score: 1.38629 }
    -// ]
    -
    -
    -
    -
  • -
-
-
-

Hierarchy

-
    -
  • - MiniSearch -
  • -
-
-
-

Index

-
-
-
-

Constructors

- -
-
-

Properties

- -
-
-

Accessors

- -
-
-

Methods

- -
-
-
-
-
-

Constructors

-
- -

constructor

- -
    -
  • - -
    -
    -

    Parameters

    -
      -
    • -
      options: Options<T>
      -
      -
      -

      Configuration options

      - -

      Examples:

      -
      -
      // Create a search engine that indexes the 'title' and 'text' fields of your
      -// documents:
      -const miniSearch = new MiniSearch({ fields: ['title', 'text'] })
      -
      - -

      ID Field:

      -
      -
      // Your documents are assumed to include a unique 'id' field, but if you want
      -// to use a different field for document identification, you can set the
      -// 'idField' option:
      -const miniSearch = new MiniSearch({ idField: 'key', fields: ['title', 'text'] })
      -
      - -

      Options and defaults:

      -
      -
      // The full set of options (here with their default value) is:
      -const miniSearch = new MiniSearch({
      -  // idField: field that uniquely identifies a document
      -  idField: 'id',
      -
      -  // extractField: function used to get the value of a field in a document.
      -  // By default, it assumes the document is a flat object with field names as
      -  // property keys and field values as string property values, but custom logic
      -  // can be implemented by setting this option to a custom extractor function.
      -  extractField: (document, fieldName) => document[fieldName],
      -
      -  // tokenize: function used to split fields into individual terms. By
      -  // default, it is also used to tokenize search queries, unless a specific
      -  // `tokenize` search option is supplied. When tokenizing an indexed field,
      -  // the field name is passed as the second argument.
      -  tokenize: (string, _fieldName) => string.split(SPACE_OR_PUNCTUATION),
      -
      -  // processTerm: function used to process each tokenized term before
      -  // indexing. It can be used for stemming and normalization. Return a falsy
      -  // value in order to discard a term. By default, it is also used to process
      -  // search queries, unless a specific `processTerm` option is supplied as a
      -  // search option. When processing a term from a indexed field, the field
      -  // name is passed as the second argument.
      -  processTerm: (term, _fieldName) => term.toLowerCase(),
      -
      -  // searchOptions: default search options, see the `search` method for
      -  // details
      -  searchOptions: undefined,
      -
      -  // fields: document fields to be indexed. Mandatory, but not set by default
      -  fields: undefined
      -
      -  // storeFields: document fields to be stored and returned as part of the
      -  // search results.
      -  storeFields: []
      -})
      -
      -
      -
      -
    • -
    -

    Returns MiniSearch

    -
  • -
-
-
-
-

Properties

-
- -

Static Readonly wildcard

-
wildcard: unique symbol = Symbol('*')
- -
-
-
-

Accessors

-
- -

dirtCount

-
    -
  • get dirtCount(): number
  • -
-
    -
  • - -
    -
    -

    The number of documents discarded since the most recent vacuuming

    -
    -
    -

    Returns number

    -
  • -
-
-
- -

dirtFactor

-
    -
  • get dirtFactor(): number
  • -
-
    -
  • - -
    -
    -

    A number between 0 and 1 giving an indication about the proportion of - documents that are discarded, and can therefore be cleaned up by vacuuming. - A value close to 0 means that the index is relatively clean, while a higher - value means that the index is relatively dirty, and vacuuming could release - memory.

    -
    -
    -

    Returns number

    -
  • -
-
-
- -

documentCount

-
    -
  • get documentCount(): number
  • -
-
    -
  • - -
    -
    -

    Total number of documents available to search

    -
    -
    -

    Returns number

    -
  • -
-
-
- -

isVacuuming

-
    -
  • get isVacuuming(): boolean
  • -
-
    -
  • - -
    -
    -

    Is true if a vacuuming operation is ongoing, false otherwise

    -
    -
    -

    Returns boolean

    -
  • -
-
-
- -

termCount

-
    -
  • get termCount(): number
  • -
-
    -
  • - -
    -
    -

    Number of terms in the index

    -
    -
    -

    Returns number

    -
  • -
-
-
-
-

Methods

-
- -

add

-
    -
  • add(document: T): void
  • -
-
    -
  • - -
    -
    -

    Adds a document to the index

    -
    -
    -

    Parameters

    -
      -
    • -
      document: T
      -
      -

      The document to be indexed

      -
      -
    • -
    -

    Returns void

    -
  • -
-
-
- -

addAll

-
    -
  • addAll(documents: readonly T[]): void
  • -
-
    -
  • - -
    -
    -

    Adds all the given documents to the index

    -
    -
    -

    Parameters

    -
      -
    • -
      documents: readonly T[]
      -
      -

      An array of documents to be indexed

      -
      -
    • -
    -

    Returns void

    -
  • -
-
-
- -

addAllAsync

-
    -
  • addAllAsync(documents: readonly T[], options?: { chunkSize?: undefined | number }): Promise<void>
  • -
-
    -
  • - -
    -
    -

    Adds all the given documents to the index asynchronously.

    -
    -

    Returns a promise that resolves (to undefined) when the indexing is done. - This method is useful when index many documents, to avoid blocking the main - thread. The indexing is performed asynchronously and in chunks.

    -
    -

    Parameters

    -
      -
    • -
      documents: readonly T[]
      -
      -

      An array of documents to be indexed

      -
      -
    • -
    • -
      Default value options: { chunkSize?: undefined | number } = {}
      -
      -

      Configuration options

      -
      -
        -
      • -
        Optional chunkSize?: undefined | number
        -
      • -
      -
    • -
    -

    Returns Promise<void>

    -

    A promise resolving to undefined when the indexing is done

    -
  • -
-
-
- -

autoSuggest

- -
    -
  • - -
    -
    -

    Provide suggestions for the given search query

    -
    -

    The result is a list of suggested modified search queries, derived from the - given search query, each with a relevance score, sorted by descending score.

    -

    By default, it uses the same options used for search, except that by - default it performs prefix search on the last term of the query, and - combine terms with 'AND' (requiring all query terms to match). Custom - options can be passed as a second argument. Defaults can be changed upon - calling the MiniSearch constructor, by passing a autoSuggestOptions - option.

    - -

    Basic usage:

    -
    -
    // Get suggestions for 'neuro':
    -miniSearch.autoSuggest('neuro')
    -// => [ { suggestion: 'neuromancer', terms: [ 'neuromancer' ], score: 0.46240 } ]
    -
    - -

    Multiple words:

    -
    -
    // Get suggestions for 'zen ar':
    -miniSearch.autoSuggest('zen ar')
    -// => [
    -//  { suggestion: 'zen archery art', terms: [ 'zen', 'archery', 'art' ], score: 1.73332 },
    -//  { suggestion: 'zen art', terms: [ 'zen', 'art' ], score: 1.21313 }
    -// ]
    -
    - -

    Fuzzy suggestions:

    -
    -
    // Correct spelling mistakes using fuzzy search:
    -miniSearch.autoSuggest('neromancer', { fuzzy: 0.2 })
    -// => [ { suggestion: 'neuromancer', terms: [ 'neuromancer' ], score: 1.03998 } ]
    -
    - -

    Filtering:

    -
    -
    // Get suggestions for 'zen ar', but only within the 'fiction' category
    -// (assuming that 'category' is a stored field):
    -miniSearch.autoSuggest('zen ar', {
    -  filter: (result) => result.category === 'fiction'
    -})
    -// => [
    -//  { suggestion: 'zen archery art', terms: [ 'zen', 'archery', 'art' ], score: 1.73332 },
    -//  { suggestion: 'zen art', terms: [ 'zen', 'art' ], score: 1.21313 }
    -// ]
    -
    -
    -

    Parameters

    -
      -
    • -
      queryString: string
      -
      -

      Query string to be expanded into suggestions

      -
      -
    • -
    • -
      Default value options: SearchOptions = {}
      -
      -

      Search options. The supported options and default values - are the same as for the search method, except that by default prefix - search is performed on the last term in the query, and terms are combined - with 'AND'.

      -
      -
    • -
    -

    Returns Suggestion[]

    -

    A sorted array of suggestions sorted by relevance score.

    -
  • -
-
-
- -

discard

-
    -
  • discard(id: any): void
  • -
-
    -
  • - -
    -
    -

    Discards the document with the given ID, so it won't appear in search results

    -
    -

    It has the same visible effect of MiniSearch.remove (both cause the - document to stop appearing in searches), but a different effect on the - internal data structures:

    -
      -
    • MiniSearch.remove requires passing the full document to be removed - as argument, and removes it from the inverted index immediately.

      -
    • -
    • MiniSearch.discard instead only needs the document ID, and works by - marking the current version of the document as discarded, so it is - immediately ignored by searches. This is faster and more convenient than - remove, but the index is not immediately modified. To take care of - that, vacuuming is performed after a certain number of documents are - discarded, cleaning up the index and allowing memory to be released.

      -
    • -
    -

    After discarding a document, it is possible to re-add a new version, and - only the new version will appear in searches. In other words, discarding - and re-adding a document works exactly like removing and re-adding it. The - MiniSearch.replace method can also be used to replace a document with a - new version.

    - -

    Details about vacuuming

    -
    -

    Repetite calls to this method would leave obsolete document references in - the index, invisible to searches. Two mechanisms take care of cleaning up: - clean up during search, and vacuuming.

    -
      -
    • Upon search, whenever a discarded ID is found (and ignored for the - results), references to the discarded document are removed from the - inverted index entries for the search terms. This ensures that subsequent - searches for the same terms do not need to skip these obsolete references - again.

      -
    • -
    • In addition, vacuuming is performed automatically by default (see the - autoVacuum field in Options) after a certain number of documents - are discarded. Vacuuming traverses all terms in the index, cleaning up - all references to discarded documents. Vacuuming can also be triggered - manually by calling MiniSearch.vacuum.

      -
    • -
    -
    -

    Parameters

    -
      -
    • -
      id: any
      -
      -

      The ID of the document to be discarded

      -
      -
    • -
    -

    Returns void

    -
  • -
-
-
- -

discardAll

-
    -
  • discardAll(ids: readonly any[]): void
  • -
-
    -
  • - -
    -
    -

    Discards the documents with the given IDs, so they won't appear in search - results

    -
    -

    It is equivalent to calling MiniSearch.discard for all the given IDs, - but with the optimization of triggering at most one automatic vacuuming at - the end.

    -

    Note: to remove all documents from the index, it is faster and more - convenient to call MiniSearch.removeAll with no argument, instead of - passing all IDs to this method.

    -
    -

    Parameters

    -
      -
    • -
      ids: readonly any[]
      -
    • -
    -

    Returns void

    -
  • -
-
-
- -

getStoredFields

-
    -
  • getStoredFields(id: any): Record<string, unknown> | undefined
  • -
-
    -
  • - -
    -
    -

    Returns the stored fields (as configured in the storeFields constructor - option) for the given document ID. Returns undefined if the document is - not present in the index.

    -
    -
    -

    Parameters

    -
      -
    • -
      id: any
      -
      -

      The document ID

      -
      -
    • -
    -

    Returns Record<string, unknown> | undefined

    -
  • -
-
-
- -

has

-
    -
  • has(id: any): boolean
  • -
-
    -
  • - -
    -
    -

    Returns true if a document with the given ID is present in the index and - available for search, false otherwise

    -
    -
    -

    Parameters

    -
      -
    • -
      id: any
      -
      -

      The document ID

      -
      -
    • -
    -

    Returns boolean

    -
  • -
-
-
- -

remove

-
    -
  • remove(document: T): void
  • -
-
    -
  • - -
    -
    -

    Removes the given document from the index.

    -
    -

    The document to remove must NOT have changed between indexing and removal, - otherwise the index will be corrupted.

    -

    This method requires passing the full document to be removed (not just the - ID), and immediately removes the document from the inverted index, allowing - memory to be released. A convenient alternative is MiniSearch.discard, - which needs only the document ID, and has the same visible effect, but - delays cleaning up the index until the next vacuuming.

    -
    -

    Parameters

    -
      -
    • -
      document: T
      -
      -

      The document to be removed

      -
      -
    • -
    -

    Returns void

    -
  • -
-
-
- -

removeAll

-
    -
  • removeAll(documents?: readonly T[]): void
  • -
-
    -
  • - -
    -
    -

    Removes all the given documents from the index. If called with no arguments, - it removes all documents from the index.

    -
    -
    -

    Parameters

    -
      -
    • -
      Optional documents: readonly T[]
      -
      -

      The documents to be removed. If this argument is omitted, - all documents are removed. Note that, for removing all documents, it is - more efficient to call this method with no arguments than to pass all - documents.

      -
      -
    • -
    -

    Returns void

    -
  • -
-
-
- -

replace

-
    -
  • replace(updatedDocument: T): void
  • -
-
    -
  • - -
    -
    -

    It replaces an existing document with the given updated version

    -
    -

    It works by discarding the current version and adding the updated one, so - it is functionally equivalent to calling MiniSearch.discard followed by - MiniSearch.add. The ID of the updated document should be the same as - the original one.

    -

    Since it uses MiniSearch.discard internally, this method relies on - vacuuming to clean up obsolete document references from the index, allowing - memory to be released (see MiniSearch.discard).

    -
    -

    Parameters

    -
      -
    • -
      updatedDocument: T
      -
      -

      The updated document to replace the old version - with

      -
      -
    • -
    -

    Returns void

    -
  • -
-
-
- -

search

- -
    -
  • - -
    -
    -

    Search for documents matching the given search query.

    -
    -

    The result is a list of scored document IDs matching the query, sorted by - descending score, and each including data about which terms were matched and - in which fields.

    - -

    Basic usage:

    -
    -
    // Search for "zen art motorcycle" with default options: terms have to match
    -// exactly, and individual terms are joined with OR
    -miniSearch.search('zen art motorcycle')
    -// => [ { id: 2, score: 2.77258, match: { ... } }, { id: 4, score: 1.38629, match: { ... } } ]
    -
    - -

    Restrict search to specific fields:

    -
    -
    // Search only in the 'title' field
    -miniSearch.search('zen', { fields: ['title'] })
    -
    - -

    Field boosting:

    -
    -
    // Boost a field
    -miniSearch.search('zen', { boost: { title: 2 } })
    -
    - -

    Prefix search:

    -
    -
    // Search for "moto" with prefix search (it will match documents
    -// containing terms that start with "moto" or "neuro")
    -miniSearch.search('moto neuro', { prefix: true })
    -
    - -

    Fuzzy search:

    -
    -
    // Search for "ismael" with fuzzy search (it will match documents containing
    -// terms similar to "ismael", with a maximum edit distance of 0.2 term.length
    -// (rounded to nearest integer)
    -miniSearch.search('ismael', { fuzzy: 0.2 })
    -
    - -

    Combining strategies:

    -
    -
    // Mix of exact match, prefix search, and fuzzy search
    -miniSearch.search('ismael mob', {
    - prefix: true,
    - fuzzy: 0.2
    -})
    -
    - -

    Advanced prefix and fuzzy search:

    -
    -
    // Perform fuzzy and prefix search depending on the search term. Here
    -// performing prefix and fuzzy search only on terms longer than 3 characters
    -miniSearch.search('ismael mob', {
    - prefix: term => term.length > 3
    - fuzzy: term => term.length > 3 ? 0.2 : null
    -})
    -
    - -

    Combine with AND:

    -
    -
    // Combine search terms with AND (to match only documents that contain both
    -// "motorcycle" and "art")
    -miniSearch.search('motorcycle art', { combineWith: 'AND' })
    -
    - -

    Combine with AND_NOT:

    -
    -

    There is also an AND_NOT combinator, that finds documents that match the - first term, but do not match any of the other terms. This combinator is - rarely useful with simple queries, and is meant to be used with advanced - query combinations (see later for more details).

    - -

    Filtering results:

    -
    -
    // Filter only results in the 'fiction' category (assuming that 'category'
    -// is a stored field)
    -miniSearch.search('motorcycle art', {
    -  filter: (result) => result.category === 'fiction'
    -})
    -
    - -

    Wildcard query

    -
    -

    Searching for an empty string (assuming the default tokenizer) returns no - results. Sometimes though, one needs to match all documents, like in a - "wildcard" search. This is possible by passing the special value - MiniSearch.wildcard as the query:

    -
    // Return search results for all documents
    -minisearch.search(MiniSearch.wildcard)
    -
    -

    Note that search options such as filter and boostDocument are still - applied, influencing which results are returned, and their order:

    -
    // Return search results for all documents in the 'fiction' category
    -minisearch.search(MiniSearch.wildcard, {
    -  filter: (result) => result.category === 'fiction'
    -})
    -
    - -

    Advanced combination of queries:

    -
    -

    It is possible to combine different subqueries with OR, AND, and AND_NOT, - and even with different search options, by passing a query expression - tree object as the first argument, instead of a string.

    -
    // Search for documents that contain "zen" and ("motorcycle" or "archery")
    -miniSearch.search({
    -  combineWith: 'AND',
    -  queries: [
    -    'zen',
    -    {
    -      combineWith: 'OR',
    -      queries: ['motorcycle', 'archery']
    -    }
    -  ]
    -})
    -
    -// Search for documents that contain ("apple" or "pear") but not "juice" and
    -// not "tree"
    -miniSearch.search({
    -  combineWith: 'AND_NOT',
    -  queries: [
    -    {
    -      combineWith: 'OR',
    -      queries: ['apple', 'pear']
    -    },
    -    'juice',
    -    'tree'
    -  ]
    -})
    -
    -

    Each node in the expression tree can be either a string, or an object that - supports all SearchOptions fields, plus a queries array field for - subqueries.

    -

    Note that, while this can become complicated to do by hand for complex or - deeply nested queries, it provides a formalized expression tree API for - external libraries that implement a parser for custom query languages.

    -
    -

    Parameters

    -
      -
    • -
      query: Query
      -
      -

      Search query

      -
      -
    • -
    • -
      Default value searchOptions: SearchOptions = {}
      -
    • -
    -

    Returns SearchResult[]

    -
  • -
-
-
- -

toJSON

-
    -
  • toJSON(): AsPlainObject
  • -
-
    -
  • - -
    -
    -

    Allows serialization of the index to JSON, to possibly store it and later - deserialize it with MiniSearch.loadJSON.

    -
    -

    Normally one does not directly call this method, but rather call the - standard JavaScript JSON.stringify() passing the MiniSearch instance, - and JavaScript will internally call this method. Upon deserialization, one - must pass to loadJSON the same options used to create the original - instance that was serialized.

    - -

    Usage:

    -
    -
    // Serialize the index:
    -let miniSearch = new MiniSearch({ fields: ['title', 'text'] })
    -miniSearch.addAll(documents)
    -const json = JSON.stringify(miniSearch)
    -
    -// Later, to deserialize it:
    -miniSearch = MiniSearch.loadJSON(json, { fields: ['title', 'text'] })
    -
    -
    -

    Returns AsPlainObject

    -

    A plain-object serializable representation of the search index.

    -
  • -
-
-
- -

vacuum

- -
    -
  • - -
    -
    -

    Triggers a manual vacuuming, cleaning up references to discarded documents - from the inverted index

    -
    -

    Vacuuming is only useful for applications that use the - MiniSearch.discard or MiniSearch.replace methods.

    -

    By default, vacuuming is performed automatically when needed (controlled by - the autoVacuum field in Options), so there is usually no need to call - this method, unless one wants to make sure to perform vacuuming at a - specific moment.

    -

    Vacuuming traverses all terms in the inverted index in batches, and cleans - up references to discarded documents from the posting list, allowing memory - to be released.

    -

    The method takes an optional object as argument with the following keys:

    -
      -
    • batchSize: the size of each batch (1000 by default)

      -
    • -
    • batchWait: the number of milliseconds to wait between batches (10 by - default)

      -
    • -
    -

    On large indexes, vacuuming could have a non-negligible cost: batching - avoids blocking the thread for long, diluting this cost so that it is not - negatively affecting the application. Nonetheless, this method should only - be called when necessary, and relying on automatic vacuuming is usually - better.

    -

    It returns a promise that resolves (to undefined) when the clean up is - completed. If vacuuming is already ongoing at the time this method is - called, a new one is enqueued immediately after the ongoing one, and a - corresponding promise is returned. However, no more than one vacuuming is - enqueued on top of the ongoing one, even if this method is called more - times (enqueuing multiple ones would be useless).

    -
    -

    Parameters

    -
      -
    • -
      Default value options: VacuumOptions = {}
      -
      -

      Configuration options for the batch size and delay. See - VacuumOptions.

      -
      -
    • -
    -

    Returns Promise<void>

    -
  • -
-
-
- -

Static getDefault

-
    -
  • getDefault(optionName: string): any
  • -
-
    -
  • - -
    -
    -

    Returns the default value of an option. It will throw an error if no option - with the given name exists.

    -
    -
    -

    Parameters

    -
      -
    • -
      optionName: string
      -
      -

      Name of the option

      -
      -
    • -
    -

    Returns any

    -

    The default value of the given option

    - -

    Usage:

    -
    -
    // Get default tokenizer
    -MiniSearch.getDefault('tokenize')
    -
    -// Get default term processor
    -MiniSearch.getDefault('processTerm')
    -
    -// Unknown options will throw an error
    -MiniSearch.getDefault('notExisting')
    -// => throws 'MiniSearch: unknown option "notExisting"'
    -
    -
  • -
-
-
- -

Static loadJSON

- -
    -
  • - -
    -
    -

    Deserializes a JSON index (serialized with JSON.stringify(miniSearch)) - and instantiates a MiniSearch instance. It should be given the same options - originally used when serializing the index.

    -
    - -

    Usage:

    -
    -
    // If the index was serialized with:
    -let miniSearch = new MiniSearch({ fields: ['title', 'text'] })
    -miniSearch.addAll(documents)
    -
    -const json = JSON.stringify(miniSearch)
    -// It can later be deserialized like this:
    -miniSearch = MiniSearch.loadJSON(json, { fields: ['title', 'text'] })
    -
    -
    -

    Type parameters

    -
      -
    • -

      T = any

      -
    • -
    -

    Parameters

    -
      -
    • -
      json: string
      -
      -

      JSON-serialized index

      -
      -
    • -
    • -
      options: Options<T>
      -
      -

      configuration options, same as the constructor

      -
      -
    • -
    -

    Returns MiniSearch<T>

    -

    An instance of MiniSearch deserialized from the given JSON.

    -
  • -
-
-
-
- -
-
-
-
-

Legend

-
-
    -
  • Class with type parameter
  • -
  • Constructor
  • -
  • Method
  • -
-
    -
  • Type alias
  • -
  • Type alias with type parameter
  • -
-
    -
  • Static property
  • -
  • Static method
  • -
-
-
-
-
-

Generated using TypeDoc

-
-
- - - \ No newline at end of file diff --git a/docs/classes/_searchablemap_searchablemap_.searchablemap.html b/docs/classes/_searchablemap_searchablemap_.searchablemap.html deleted file mode 100644 index 8c89f6f3..00000000 --- a/docs/classes/_searchablemap_searchablemap_.searchablemap.html +++ /dev/null @@ -1,955 +0,0 @@ - - - - - - SearchableMap | MiniSearch - - - - - -
-
-
-
- -
-
- Options -
-
- All -
    -
  • Public
  • -
  • Public/Protected
  • -
  • All
  • -
-
- - -
-
- Menu -
-
-
-
-
-
- -

Class SearchableMap<T>

-
-
-
-
-
-
-
-
-
-

A class implementing the same interface as a standard JavaScript - Map - with string keys, but adding support for efficiently searching entries with - prefix or fuzzy search. This class is used internally by MiniSearch as - the inverted index data structure. The implementation is a radix tree - (compressed prefix tree).

-
-

Since this class can be of general utility beyond MiniSearch, it is - exported by the minisearch package and can be imported (or required) as - minisearch/SearchableMap.

-
-
-
-

Type parameters

-
    -
  • -

    T = any

    -
    -
    -

    The type of the values stored in the map.

    -
    -
    -
  • -
-
-
-

Hierarchy

-
    -
  • - SearchableMap -
  • -
-
-
-

Index

-
-
-
-

Constructors

- -
-
-

Accessors

- -
-
-

Methods

- -
-
-
-
-
-

Constructors

-
- -

constructor

-
    -
  • new SearchableMap(tree?: RadixTree<T>, prefix?: string): SearchableMap
  • -
-
    -
  • - -
    -
    -

    The constructor is normally called without arguments, creating an empty - map. In order to create a SearchableMap from an iterable or from an - object, check SearchableMap.from and SearchableMap.fromObject.

    -
    -

    The constructor arguments are for internal use, when creating derived - mutable views of a map at a prefix.

    -
    -

    Parameters

    -
      -
    • -
      Default value tree: RadixTree<T> = new Map()
      -
    • -
    • -
      Default value prefix: string = ""
      -
    • -
    -

    Returns SearchableMap

    -
  • -
-
-
-
-

Accessors

-
- -

size

-
    -
  • get size(): number
  • -
- -
-
-
-

Methods

-
- -

[Symbol.iterator]

-
    -
  • [Symbol.iterator](): TreeIterator<T, "ENTRIES">
  • -
- -
-
- -

atPrefix

- -
    -
  • - -
    -
    -

    Creates and returns a mutable view of this SearchableMap, containing only - entries that share the given prefix.

    -
    - -

    Usage:

    -
    -
    let map = new SearchableMap()
    -map.set("unicorn", 1)
    -map.set("universe", 2)
    -map.set("university", 3)
    -map.set("unique", 4)
    -map.set("hello", 5)
    -
    -let uni = map.atPrefix("uni")
    -uni.get("unique") // => 4
    -uni.get("unicorn") // => 1
    -uni.get("hello") // => undefined
    -
    -let univer = map.atPrefix("univer")
    -univer.get("unique") // => undefined
    -univer.get("universe") // => 2
    -univer.get("university") // => 3
    -
    -
    -

    Parameters

    -
      -
    • -
      prefix: string
      -
      -

      The prefix

      -
      -
    • -
    -

    Returns SearchableMap<T>

    -

    A SearchableMap representing a mutable view of the original Map at the given prefix

    -
  • -
-
-
- -

clear

-
    -
  • clear(): void
  • -
- -
-
- -

delete

-
    -
  • delete(key: string): void
  • -
- -
-
- -

entries

-
    -
  • entries(): TreeIterator<T, "ENTRIES">
  • -
- -
-
- -

fetch

-
    -
  • fetch(key: string, initial: () => T): T
  • -
-
    -
  • - -
    -
    -

    Fetches the value of the given key. If the value does not exist, calls the - given function to create a new value, which is inserted at the given key - and subsequently returned.

    -
    - -

    Example:

    -
    -
    const map = searchableMap.fetch('somekey', () => new Map())
    -map.set('foo', 'bar')
    -
    -
    -

    Parameters

    -
      -
    • -
      key: string
      -
      -

      The key to update

      -
      -
    • -
    • -
      initial: () => T
      -
        -
      • -
          -
        • (): T
        • -
        -
          -
        • -

          Returns T

          -
        • -
        -
      • -
      -
    • -
    -

    Returns T

    -

    The existing or new value at the given key

    -
  • -
-
-
- -

forEach

-
    -
  • forEach(fn: (key: string, value: T, map: SearchableMap) => void): void
  • -
- -
-
- -

fuzzyGet

-
    -
  • fuzzyGet(key: string, maxEditDistance: number): FuzzyResults<T>
  • -
-
    -
  • - -
    -
    -

    Returns a Map of all the entries that have a key within the given edit - distance from the search key. The keys of the returned Map are the matching - keys, while the values are two-element arrays where the first element is - the value associated to the key, and the second is the edit distance of the - key to the search key.

    -
    - -

    Usage:

    -
    -
    let map = new SearchableMap()
    -map.set('hello', 'world')
    -map.set('hell', 'yeah')
    -map.set('ciao', 'mondo')
    -
    -// Get all entries that match the key 'hallo' with a maximum edit distance of 2
    -map.fuzzyGet('hallo', 2)
    -// => Map(2) { 'hello' => ['world', 1], 'hell' => ['yeah', 2] }
    -
    -// In the example, the "hello" key has value "world" and edit distance of 1
    -// (change "e" to "a"), the key "hell" has value "yeah" and edit distance of 2
    -// (change "e" to "a", delete "o")
    -
    -
    -

    Parameters

    -
      -
    • -
      key: string
      -
      -

      The search key

      -
      -
    • -
    • -
      maxEditDistance: number
      -
      -

      The maximum edit distance (Levenshtein)

      -
      -
    • -
    -

    Returns FuzzyResults<T>

    -

    A Map of the matching keys to their value and edit distance

    -
  • -
-
-
- -

get

-
    -
  • get(key: string): T | undefined
  • -
- -
-
- -

has

-
    -
  • has(key: string): boolean
  • -
- -
-
- -

keys

-
    -
  • keys(): TreeIterator<T, "KEYS">
  • -
- -
-
- -

set

- - -
-
- -

update

-
    -
  • update(key: string, fn: (value: T | undefined) => T): SearchableMap<T>
  • -
-
    -
  • - -
    -
    -

    Updates the value at the given key using the provided function. The function - is called with the current value at the key, and its return value is used as - the new value to be set.

    -
    - -

    Example:

    -
    -
    // Increment the current value by one
    -searchableMap.update('somekey', (currentValue) => currentValue == null ? 0 : currentValue + 1)
    -
    -

    If the value at the given key is or will be an object, it might not require - re-assignment. In that case it is better to use fetch(), because it is - faster.

    -
    -

    Parameters

    -
      -
    • -
      key: string
      -
      -

      The key to update

      -
      -
    • -
    • -
      fn: (value: T | undefined) => T
      -
      -

      The function used to compute the new value from the current one

      -
      -
        -
      • -
          -
        • (value: T | undefined): T
        • -
        -
          -
        • -

          Parameters

          -
            -
          • -
            value: T | undefined
            -
          • -
          -

          Returns T

          -
        • -
        -
      • -
      -
    • -
    -

    Returns SearchableMap<T>

    -

    The SearchableMap itself, to allow chaining

    -
  • -
-
-
- -

values

-
    -
  • values(): TreeIterator<T, "VALUES">
  • -
- -
-
- -

Static from

-
    -
  • from<T>(entries: Iterable<Entry<T>> | Entry<T>[]): SearchableMap<any>
  • -
- -
-
- -

Static fromObject

- - -
-
-
- -
-
-
-
-

Legend

-
-
    -
  • Class with type parameter
  • -
  • Constructor
  • -
  • Method
  • -
-
    -
  • Type alias
  • -
  • Type alias with type parameter
  • -
-
-
-
-
-

Generated using TypeDoc

-
-
- - - \ No newline at end of file diff --git a/docs/globals.html b/docs/globals.html deleted file mode 100644 index 859845ba..00000000 --- a/docs/globals.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - MiniSearch - - - - - -
-
-
-
- -
-
- Options -
-
- All -
    -
  • Public
  • -
  • Public/Protected
  • -
  • All
  • -
-
- - -
-
- Menu -
-
-
-
-
-
- -

MiniSearch

-
-
-
-
-
-
-
-

Index

-
- -
-
-
- -
-
-
-
-

Legend

-
-
    -
  • Type alias
  • -
  • Type alias with type parameter
  • -
-
    -
  • Class with type parameter
  • -
-
-
-
-
-

Generated using TypeDoc

-
-
- - - \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index 2a2de8f5..d80071a6 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,406 +1,129 @@ - - - - - - MiniSearch - - - - - -
-
-
-
- -
-
- Options -
-
- All -
    -
  • Public
  • -
  • Public/Protected
  • -
  • All
  • -
-
- - -
-
- Menu -
-
-
-
-
-
- -

MiniSearch

-
-
-
-
-
-
-
- -

MiniSearch

-
-

CI Build - Coverage Status - Minzipped Size - npm - npm downloads - types

-

MiniSearch is a tiny but powerful in-memory fulltext search engine written in - JavaScript. It is respectful of resources, and it can comfortably run both in - Node and in the browser.

-

Try out the demo application.

-

Find the complete documentation and API reference - here, - and more background about MiniSearch, including a comparison with other - similar libraries, in this blog - post.

-

MiniSearch follows semantic versioning, - and documents releases and changes in the - changelog.

- -

Use case

-
-

MiniSearch addresses use cases where full-text search features are needed - (e.g. prefix search, fuzzy search, ranking, boosting of fields…), but the data - to be indexed can fit locally in the process memory. While you won't index the - whole Internet with it, there are surprisingly many use cases that are served - well by MiniSearch. By storing the index in local memory, MiniSearch can - work offline, and can process queries quickly, without network latency.

-

A prominent use-case is real time search "as you type" in web and mobile - applications, where keeping the index on the client enables fast and reactive - UIs, removing the need to make requests to a search server.

- -

Features

-
-
    -
  • Memory-efficient index, designed to support memory-constrained use cases - like mobile browsers.

    -
  • -
  • Exact match, prefix search, fuzzy match, field boosting.

    -
  • -
  • Auto-suggestion engine, for auto-completion of search queries.

    -
  • -
  • Modern search result ranking algorithm.

    -
  • -
  • Documents can be added and removed from the index at any time.

    -
  • -
  • Zero external dependencies.

    -
  • -
-

MiniSearch strives to expose a simple API that provides the building blocks to - build custom solutions, while keeping a small and well tested codebase.

- -

Installation

-
-

With npm:

-
npm install minisearch
-
-

With yarn:

-
yarn add minisearch
-
-

Then require or import it in your project:

-
// If you are using import:
-import MiniSearch from 'minisearch'
-
-// If you are using require:
-const MiniSearch = require('minisearch')
-
-

Alternatively, if you prefer to use a <script> tag, you can require MiniSearch - from a CDN:

-
<script src="https://cdn.jsdelivr.net/npm/minisearch@6.2.0/dist/umd/index.min.js"></script>
-
-

In this case, MiniSearch will appear as a global variable in your project.

-

Finally, if you want to manually build the library, clone the repository and run - yarn build (or yarn build-minified for a minified version + source maps). - The compiled source will be created in the dist folder (UMD, ES6 and ES2015 - module versions are provided).

- -

Usage

-
- -

Basic usage

-
-
// A collection of documents for our examples
-const documents = [
-  {
-    id: 1,
-    title: 'Moby Dick',
-    text: 'Call me Ishmael. Some years ago...',
-    category: 'fiction'
-  },
-  {
-    id: 2,
-    title: 'Zen and the Art of Motorcycle Maintenance',
-    text: 'I can see by my watch...',
-    category: 'fiction'
-  },
-  {
-    id: 3,
-    title: 'Neuromancer',
-    text: 'The sky above the port was...',
-    category: 'fiction'
-  },
-  {
-    id: 4,
-    title: 'Zen and the Art of Archery',
-    text: 'At first sight it must seem...',
-    category: 'non-fiction'
-  },
-  // ...and more
-]
-
-let miniSearch = new MiniSearch({
-  fields: ['title', 'text'], // fields to index for full-text search
-  storeFields: ['title', 'category'] // fields to return with search results
-})
-
-// Index all documents
-miniSearch.addAll(documents)
-
-// Search with default options
-let results = miniSearch.search('zen art motorcycle')
-// => [
-//   { id: 2, title: 'Zen and the Art of Motorcycle Maintenance', category: 'fiction', score: 2.77258, match: { ... } },
-//   { id: 4, title: 'Zen and the Art of Archery', category: 'non-fiction', score: 1.38629, match: { ... } }
-// ]
-
- -

Search options

-
-

MiniSearch supports several options for more advanced search behavior:

-
// Search only specific fields
-miniSearch.search('zen', { fields: ['title'] })
-
-// Boost some fields (here "title")
-miniSearch.search('zen', { boost: { title: 2 } })
-
-// Prefix search (so that 'moto' will match 'motorcycle')
-miniSearch.search('moto', { prefix: true })
-
-// Search within a specific category
-miniSearch.search('zen', {
-  filter: (result) => result.category === 'fiction'
-})
-
-// Fuzzy search, in this example, with a max edit distance of 0.2 * term length,
-// rounded to nearest integer. The mispelled 'ismael' will match 'ishmael'.
-miniSearch.search('ismael', { fuzzy: 0.2 })
-
-// You can set the default search options upon initialization
-miniSearch = new MiniSearch({
-  fields: ['title', 'text'],
-  searchOptions: {
-    boost: { title: 2 },
-    fuzzy: 0.2
-  }
-})
-miniSearch.addAll(documents)
-
-// It will now by default perform fuzzy search and boost "title":
-miniSearch.search('zen and motorcycles')
-
- -

Auto suggestions

-
-

MiniSearch can suggest search queries given an incomplete query:

-
miniSearch.autoSuggest('zen ar')
-// => [ { suggestion: 'zen archery art', terms: [ 'zen', 'archery', 'art' ], score: 1.73332 },
-//      { suggestion: 'zen art', terms: [ 'zen', 'art' ], score: 1.21313 } ]
-
-

The autoSuggest method takes the same options as the search method, so you - can get suggestions for misspelled words using fuzzy search:

-
miniSearch.autoSuggest('neromancer', { fuzzy: 0.2 })
-// => [ { suggestion: 'neuromancer', terms: [ 'neuromancer' ], score: 1.03998 } ]
-
-

Suggestions are ranked by the relevance of the documents that would be returned - by that search.

-

Sometimes, you might need to filter auto suggestions to, say, only a specific - category. You can do so by providing a filter option:

-
miniSearch.autoSuggest('zen ar', {
-  filter: (result) => result.category === 'fiction'
-})
-// => [ { suggestion: 'zen art', terms: [ 'zen', 'art' ], score: 1.21313 } ]
-
- -

Field extraction

-
-

By default, documents are assumed to be plain key-value objects with field names - as keys and field values as simple values. In order to support custom field - extraction logic (for example for nested fields, or non-string field values that - need processing before tokenization), a custom field extractor function can be - passed as the extractField option:

-
// Assuming that our documents look like:
-const documents = [
-  { id: 1, title: 'Moby Dick', author: { name: 'Herman Melville' }, pubDate: new Date(1851, 9, 18) },
-  { id: 2, title: 'Zen and the Art of Motorcycle Maintenance', author: { name: 'Robert Pirsig' }, pubDate: new Date(1974, 3, 1) },
-  { id: 3, title: 'Neuromancer', author: { name: 'William Gibson' }, pubDate: new Date(1984, 6, 1) },
-  { id: 4, title: 'Zen in the Art of Archery', author: { name: 'Eugen Herrigel' }, pubDate: new Date(1948, 0, 1) },
-  // ...and more
-]
-
-// We can support nested fields (author.name) and date fields (pubDate) with a
-// custom `extractField` function:
-
-let miniSearch = new MiniSearch({
-  fields: ['title', 'author.name', 'pubYear'],
-  extractField: (document, fieldName) => {
-    // If field name is 'pubYear', extract just the year from 'pubDate'
-    if (fieldName === 'pubYear') {
-      const pubDate = document['pubDate']
-      return pubDate && pubDate.getFullYear().toString()
-    }
-
-    // Access nested fields
-    return fieldName.split('.').reduce((doc, key) => doc && doc[key], document)
-  }
-})
-
-

The default field extractor can be obtained by calling - MiniSearch.getDefault('extractField').

- -

Tokenization

-
-

By default, documents are tokenized by splitting on Unicode space or punctuation - characters. The tokenization logic can be easily changed by passing a custom - tokenizer function as the tokenize option:

-
// Tokenize splitting by hyphen
-let miniSearch = new MiniSearch({
-  fields: ['title', 'text'],
-  tokenize: (string, _fieldName) => string.split('-')
-})
-
-

Upon search, the same tokenization is used by default, but it is possible to - pass a tokenize search option in case a different search-time tokenization is - necessary:

-
// Tokenize splitting by hyphen
-let miniSearch = new MiniSearch({
-  fields: ['title', 'text'],
-  tokenize: (string) => string.split('-'), // indexing tokenizer
-  searchOptions: {
-    tokenize: (string) => string.split(/[\s-]+/) // search query tokenizer
-  }
-})
-
-

The default tokenizer can be obtained by calling - MiniSearch.getDefault('tokenize').

- -

Term processing

-
-

Terms are downcased by default. No stemming is performed, and no stop-word list - is applied. To customize how the terms are processed upon indexing, for example - to normalize them, filter them, or to apply stemming, the processTerm option - can be used. The processTerm function should return the processed term as a - string, or a falsy value if the term should be discarded:

-
let stopWords = new Set(['and', 'or', 'to', 'in', 'a', 'the', /* ...and more */ ])
-
-// Perform custom term processing (here discarding stop words and downcasing)
-let miniSearch = new MiniSearch({
-  fields: ['title', 'text'],
-  processTerm: (term, _fieldName) =>
-    stopWords.has(term) ? null : term.toLowerCase()
-})
-
-

By default, the same processing is applied to search queries. In order to apply - a different processing to search queries, supply a processTerm search option:

-
let miniSearch = new MiniSearch({
-  fields: ['title', 'text'],
-  processTerm: (term) =>
-    stopWords.has(term) ? null : term.toLowerCase(), // index term processing
-  searchOptions: {
-    processTerm: (term) => term.toLowerCase() // search query processing
-  }
-})
-
-

The default term processor can be obtained by calling - MiniSearch.getDefault('processTerm').

- -

API Documentation

-
-

Refer to the API - documentation - for details about configuration options and methods.

- -

Browser compatibility

-
-

MiniSearch natively supports all modern browsers implementing JavaScript - standards, but requires a polyfill when used in Internet Explorer, as it makes - use functions like Object.entries, Array.includes, and Array.from, which - are standard but not available on older browsers. The package - core-js is one such polyfill that can - be used to provide those functions.

- -

Contributing

-
-

Contributions to MiniSearch are welcome! Please read the contributions - guidelines. - Reading the design - document is - also useful to understand the project goals and the technical implementation.

-
-
- -
-
-
-
-

Legend

-
-
    -
  • Type alias
  • -
  • Type alias with type parameter
  • -
-
    -
  • Class with type parameter
  • -
-
-
-
-
-

Generated using TypeDoc

-
-
- - - \ No newline at end of file +MiniSearch

MiniSearch

MiniSearch

CI Build +Coverage Status +Minzipped Size +npm +npm downloads +types

+

MiniSearch is a tiny but powerful in-memory fulltext search engine written in +JavaScript. It is respectful of resources, and it can comfortably run both in +Node and in the browser.

+

Try out the demo application.

+

Find the complete documentation and API reference +here, +and more background about MiniSearch, including a comparison with other +similar libraries, in this blog +post.

+

MiniSearch follows semantic versioning, +and documents releases and changes in the +changelog.

+

Use case

MiniSearch addresses use cases where full-text search features are needed +(e.g. prefix search, fuzzy search, ranking, boosting of fields…), but the data +to be indexed can fit locally in the process memory. While you won't index the +whole Internet with it, there are surprisingly many use cases that are served +well by MiniSearch. By storing the index in local memory, MiniSearch can +work offline, and can process queries quickly, without network latency.

+

A prominent use-case is real time search "as you type" in web and mobile +applications, where keeping the index on the client enables fast and reactive +UIs, removing the need to make requests to a search server.

+

Features

    +
  • Memory-efficient index, designed to support memory-constrained use cases +like mobile browsers.

    +
  • +
  • Exact match, prefix search, fuzzy match, field boosting.

    +
  • +
  • Auto-suggestion engine, for auto-completion of search queries.

    +
  • +
  • Modern search result ranking algorithm.

    +
  • +
  • Documents can be added and removed from the index at any time.

    +
  • +
  • Zero external dependencies.

    +
  • +
+

MiniSearch strives to expose a simple API that provides the building blocks to +build custom solutions, while keeping a small and well tested codebase.

+

Installation

With npm:

+
npm install minisearch
+
+

With yarn:

+
yarn add minisearch
+
+

Then require or import it in your project:

+
// If you are using import:
import MiniSearch from 'minisearch'

// If you are using require:
const MiniSearch = require('minisearch') +
+

Alternatively, if you prefer to use a <script> tag, you can require MiniSearch +from a CDN:

+
<script src="https://cdn.jsdelivr.net/npm/minisearch@6.2.0/dist/umd/index.min.js"></script>
+
+

In this case, MiniSearch will appear as a global variable in your project.

+

Finally, if you want to manually build the library, clone the repository and run +yarn build (or yarn build-minified for a minified version + source maps). +The compiled source will be created in the dist folder (UMD, ES6 and ES2015 +module versions are provided).

+

Usage

Basic usage

// A collection of documents for our examples
const documents = [
{
id: 1,
title: 'Moby Dick',
text: 'Call me Ishmael. Some years ago...',
category: 'fiction'
},
{
id: 2,
title: 'Zen and the Art of Motorcycle Maintenance',
text: 'I can see by my watch...',
category: 'fiction'
},
{
id: 3,
title: 'Neuromancer',
text: 'The sky above the port was...',
category: 'fiction'
},
{
id: 4,
title: 'Zen and the Art of Archery',
text: 'At first sight it must seem...',
category: 'non-fiction'
},
// ...and more
]

let miniSearch = new MiniSearch({
fields: ['title', 'text'], // fields to index for full-text search
storeFields: ['title', 'category'] // fields to return with search results
})

// Index all documents
miniSearch.addAll(documents)

// Search with default options
let results = miniSearch.search('zen art motorcycle')
// => [
// { id: 2, title: 'Zen and the Art of Motorcycle Maintenance', category: 'fiction', score: 2.77258, match: { ... } },
// { id: 4, title: 'Zen and the Art of Archery', category: 'non-fiction', score: 1.38629, match: { ... } }
// ] +
+

Search options

MiniSearch supports several options for more advanced search behavior:

+
// Search only specific fields
miniSearch.search('zen', { fields: ['title'] })

// Boost some fields (here "title")
miniSearch.search('zen', { boost: { title: 2 } })

// Prefix search (so that 'moto' will match 'motorcycle')
miniSearch.search('moto', { prefix: true })

// Search within a specific category
miniSearch.search('zen', {
filter: (result) => result.category === 'fiction'
})

// Fuzzy search, in this example, with a max edit distance of 0.2 * term length,
// rounded to nearest integer. The mispelled 'ismael' will match 'ishmael'.
miniSearch.search('ismael', { fuzzy: 0.2 })

// You can set the default search options upon initialization
miniSearch = new MiniSearch({
fields: ['title', 'text'],
searchOptions: {
boost: { title: 2 },
fuzzy: 0.2
}
})
miniSearch.addAll(documents)

// It will now by default perform fuzzy search and boost "title":
miniSearch.search('zen and motorcycles') +
+

Auto suggestions

MiniSearch can suggest search queries given an incomplete query:

+
miniSearch.autoSuggest('zen ar')
// => [ { suggestion: 'zen archery art', terms: [ 'zen', 'archery', 'art' ], score: 1.73332 },
// { suggestion: 'zen art', terms: [ 'zen', 'art' ], score: 1.21313 } ] +
+

The autoSuggest method takes the same options as the search method, so you +can get suggestions for misspelled words using fuzzy search:

+
miniSearch.autoSuggest('neromancer', { fuzzy: 0.2 })
// => [ { suggestion: 'neuromancer', terms: [ 'neuromancer' ], score: 1.03998 } ] +
+

Suggestions are ranked by the relevance of the documents that would be returned +by that search.

+

Sometimes, you might need to filter auto suggestions to, say, only a specific +category. You can do so by providing a filter option:

+
miniSearch.autoSuggest('zen ar', {
filter: (result) => result.category === 'fiction'
})
// => [ { suggestion: 'zen art', terms: [ 'zen', 'art' ], score: 1.21313 } ] +
+

Field extraction

By default, documents are assumed to be plain key-value objects with field names +as keys and field values as simple values. In order to support custom field +extraction logic (for example for nested fields, or non-string field values that +need processing before tokenization), a custom field extractor function can be +passed as the extractField option:

+
// Assuming that our documents look like:
const documents = [
{ id: 1, title: 'Moby Dick', author: { name: 'Herman Melville' }, pubDate: new Date(1851, 9, 18) },
{ id: 2, title: 'Zen and the Art of Motorcycle Maintenance', author: { name: 'Robert Pirsig' }, pubDate: new Date(1974, 3, 1) },
{ id: 3, title: 'Neuromancer', author: { name: 'William Gibson' }, pubDate: new Date(1984, 6, 1) },
{ id: 4, title: 'Zen in the Art of Archery', author: { name: 'Eugen Herrigel' }, pubDate: new Date(1948, 0, 1) },
// ...and more
]

// We can support nested fields (author.name) and date fields (pubDate) with a
// custom `extractField` function:

let miniSearch = new MiniSearch({
fields: ['title', 'author.name', 'pubYear'],
extractField: (document, fieldName) => {
// If field name is 'pubYear', extract just the year from 'pubDate'
if (fieldName === 'pubYear') {
const pubDate = document['pubDate']
return pubDate && pubDate.getFullYear().toString()
}

// Access nested fields
return fieldName.split('.').reduce((doc, key) => doc && doc[key], document)
}
}) +
+

The default field extractor can be obtained by calling +MiniSearch.getDefault('extractField').

+

Tokenization

By default, documents are tokenized by splitting on Unicode space or punctuation +characters. The tokenization logic can be easily changed by passing a custom +tokenizer function as the tokenize option:

+
// Tokenize splitting by hyphen
let miniSearch = new MiniSearch({
fields: ['title', 'text'],
tokenize: (string, _fieldName) => string.split('-')
}) +
+

Upon search, the same tokenization is used by default, but it is possible to +pass a tokenize search option in case a different search-time tokenization is +necessary:

+
// Tokenize splitting by hyphen
let miniSearch = new MiniSearch({
fields: ['title', 'text'],
tokenize: (string) => string.split('-'), // indexing tokenizer
searchOptions: {
tokenize: (string) => string.split(/[\s-]+/) // search query tokenizer
}
}) +
+

The default tokenizer can be obtained by calling +MiniSearch.getDefault('tokenize').

+

Term processing

Terms are downcased by default. No stemming is performed, and no stop-word list +is applied. To customize how the terms are processed upon indexing, for example +to normalize them, filter them, or to apply stemming, the processTerm option +can be used. The processTerm function should return the processed term as a +string, or a falsy value if the term should be discarded:

+
let stopWords = new Set(['and', 'or', 'to', 'in', 'a', 'the', /* ...and more */ ])

// Perform custom term processing (here discarding stop words and downcasing)
let miniSearch = new MiniSearch({
fields: ['title', 'text'],
processTerm: (term, _fieldName) =>
stopWords.has(term) ? null : term.toLowerCase()
}) +
+

By default, the same processing is applied to search queries. In order to apply +a different processing to search queries, supply a processTerm search option:

+
let miniSearch = new MiniSearch({
fields: ['title', 'text'],
processTerm: (term) =>
stopWords.has(term) ? null : term.toLowerCase(), // index term processing
searchOptions: {
processTerm: (term) => term.toLowerCase() // search query processing
}
}) +
+

The default term processor can be obtained by calling +MiniSearch.getDefault('processTerm').

+

API Documentation

Refer to the API +documentation +for details about configuration options and methods.

+

Browser compatibility

MiniSearch natively supports all modern browsers implementing JavaScript +standards, but requires a polyfill when used in Internet Explorer, as it makes +use functions like Object.entries, Array.includes, and Array.from, which +are standard but not available on older browsers. The package +core-js is one such polyfill that can +be used to provide those functions.

+

Contributing

Contributions to MiniSearch are welcome! Please read the contributions +guidelines. +Reading the design +document is +also useful to understand the project goals and the technical implementation.

+

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/modules/MiniSearch.html b/docs/modules/MiniSearch.html new file mode 100644 index 00000000..bb81dbac --- /dev/null +++ b/docs/modules/MiniSearch.html @@ -0,0 +1,14 @@ +MiniSearch | MiniSearch

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/modules/SearchableMap_SearchableMap.html b/docs/modules/SearchableMap_SearchableMap.html new file mode 100644 index 00000000..a087dfc2 --- /dev/null +++ b/docs/modules/SearchableMap_SearchableMap.html @@ -0,0 +1,2 @@ +SearchableMap/SearchableMap | MiniSearch

Module SearchableMap/SearchableMap

Index

Classes

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/modules/_minisearch_.html b/docs/modules/_minisearch_.html deleted file mode 100644 index f5a088b6..00000000 --- a/docs/modules/_minisearch_.html +++ /dev/null @@ -1,806 +0,0 @@ - - - - - - "MiniSearch" | MiniSearch - - - - - -
-
-
-
- -
-
- Options -
-
- All -
    -
  • Public
  • -
  • Public/Protected
  • -
  • All
  • -
-
- - -
-
- Menu -
-
-
-
-
-
- -

Module "MiniSearch"

-
-
-
-
-
-
-
-

Index

-
- -
-
-
-

Type aliases

-
- -

AutoVacuumOptions

-
AutoVacuumOptions: VacuumOptions & VacuumConditions
- -
-
-

Options to control auto vacuum behavior. When discarding a document with - MiniSearch.discard, a vacuuming operation is automatically started if the - dirtCount and dirtFactor are above the minDirtCount and minDirtFactor - thresholds defined by this configuration. See VacuumConditions for - details on these.

-
-

Also, batchSize and batchWait can be specified, controlling batching - behavior (see VacuumOptions).

-
-
-
- -

BM25Params

-
BM25Params: { b: number; d: number; k: number }
- -
-
-

Parameters of the BM25+ scoring algorithm. Customizing these is almost never - necessary, and finetuning them requires an understanding of the BM25 scoring - model.

-
-

Some information about BM25 (and BM25+) can be found at these links:

- -
-
-

Type declaration

-
    -
  • -
    b: number
    -
    -
    -

    Length normalization impact.

    -
    -

    Recommended values are around 0.75. Higher values increase the weight - that field length has on scoring. Setting this to 0 (not recommended) - means that the field length has no effect on scoring. Negative values are - invalid. Defaults to 0.7.

    -
    -
  • -
  • -
    d: number
    -
    -
    -

    BM25+ frequency normalization lower bound (usually called δ).

    -
    -

    Recommended values are between 0.5 and 1. Increasing this parameter - increases the minimum relevance of one occurrence of a search term - regardless of its (possibly very long) field length. Negative values are - invalid. Defaults to 0.5.

    -
    -
  • -
  • -
    k: number
    -
    -
    -

    Term frequency saturation point.

    -
    -

    Recommended values are between 1.2 and 2. Higher values increase the - difference in score between documents with higher and lower term - frequencies. Setting this to 0 or a negative value is invalid. Defaults - to 1.2

    -
    -
  • -
-
-
-
- -

MatchInfo

-
MatchInfo: {}
- -
-
-

Match information for a search result. It is a key-value object where keys - are terms that matched, and values are the list of fields that the term was - found in.

-
-
-
-

Type declaration

-
    -
  • -
    [term: string]: string[]
    -
  • -
-
-
-
- -

Options

-
Options<T>: { autoSuggestOptions?: SearchOptions; autoVacuum?: boolean | AutoVacuumOptions; extractField?: undefined | ((document: T, fieldName: string) => string); fields: string[]; idField?: undefined | string; logger?: undefined | ((level: LogLevel, message: string, code?: undefined | string) => void); processTerm?: undefined | ((term: string, fieldName?: undefined | string) => string | string[] | null | undefined | false); searchOptions?: SearchOptions; storeFields?: string[]; tokenize?: undefined | ((text: string, fieldName?: undefined | string) => string[]) }
- -
-
-

Configuration options passed to the MiniSearch constructor

-
-
-

Type parameters

-
    -
  • -

    T = any

    -
    -
    -

    The type of documents being indexed.

    -
    -
    -
  • -
-
-

Type declaration

-
    -
  • -
    Optional autoSuggestOptions?: SearchOptions
    -
    -
    -

    Default auto suggest options (see the SearchOptions type and the - MiniSearch.autoSuggest method for details)

    -
    -
    -
  • -
  • -
    Optional autoVacuum?: boolean | AutoVacuumOptions
    -
    -
    -

    If true (the default), vacuuming is performed automatically as soon as - MiniSearch.discard is called a certain number of times, cleaning up - obsolete references from the index. If false, no automatic vacuuming is - performed. Custom settings controlling auto vacuuming thresholds, as well - as batching behavior, can be passed as an object (see the - AutoVacuumOptions type).

    -
    -
    -
  • -
  • -
    Optional extractField?: undefined | ((document: T, fieldName: string) => string)
    -
    -
    -

    Function used to extract the value of each field in documents. By default, - the documents are assumed to be plain objects with field names as keys, - but by specifying a custom extractField function one can completely - customize how the fields are extracted.

    -
    -

    The function takes as arguments the document, and the name of the field to - extract from it. It should return the field value as a string.

    -
    -
  • -
  • -
    fields: string[]
    -
    -
    -

    Names of the document fields to be indexed.

    -
    -
    -
  • -
  • -
    Optional idField?: undefined | string
    -
    -
    -

    Name of the ID field, uniquely identifying a document.

    -
    -
    -
  • -
  • -
    Optional logger?: undefined | ((level: LogLevel, message: string, code?: undefined | string) => void)
    -
    -
    -

    Function called to log messages. Arguments are a log level ('debug', - 'info', 'warn', or 'error'), a log message, and an optional string code - that identifies the reason for the log.

    -
    -

    The default implementation uses console, if defined.

    -
    -
  • -
  • -
    Optional processTerm?: undefined | ((term: string, fieldName?: undefined | string) => string | string[] | null | undefined | false)
    -
    -
    -

    Function used to process a term before indexing or search. This can be - used for normalization (such as stemming). By default, terms are - downcased, and otherwise no other normalization is performed.

    -
    -

    The function takes as arguments a term to process, and the name of the - field it comes from. It should return the processed term as a string, or a - falsy value to reject the term entirely.

    -

    It can also return an array of strings, in which case each string in the - returned array is indexed as a separate term.

    -
    -
  • -
  • -
    Optional searchOptions?: SearchOptions
    -
    -
    -

    Default search options (see the SearchOptions type and the - MiniSearch.search method for details)

    -
    -
    -
  • -
  • -
    Optional storeFields?: string[]
    -
    -
    -

    Names of fields to store, so that search results would include them. By - default none, so results would only contain the id field.

    -
    -
    -
  • -
  • -
    Optional tokenize?: undefined | ((text: string, fieldName?: undefined | string) => string[])
    -
  • -
-
-
-
- -

Query

-
Query: QueryCombination | string | Wildcard
- -
-
-

Search query expression, either a query string or an expression tree - combining several queries with a combination of AND or OR.

-
-
-
-
- -

QueryCombination

-
QueryCombination: SearchOptions & { queries: Query[] }
- -
-
- -

SearchOptions

-
SearchOptions: { bm25?: BM25Params; boost?: undefined | {}; boostDocument?: undefined | ((documentId: any, term: string, storedFields?: Record<string, unknown>) => number); combineWith?: undefined | string; fields?: string[]; filter?: undefined | ((result: SearchResult) => boolean); fuzzy?: boolean | number | ((term: string, index: number, terms: string[]) => boolean | number); maxFuzzy?: undefined | number; prefix?: boolean | ((term: string, index: number, terms: string[]) => boolean); processTerm?: undefined | ((term: string) => string | string[] | null | undefined | false); tokenize?: undefined | ((text: string) => string[]); weights?: undefined | { fuzzy: number; prefix: number } }
- -
-
-

Search options to customize the search behavior.

-
-
-
-

Type declaration

-
    -
  • -
    Optional bm25?: BM25Params
    -
    -
    -

    BM25+ algorithm parameters. Customizing these is almost never necessary, - and finetuning them requires an understanding of the BM25 scoring model. In - most cases, it is best to omit this option to use defaults, and instead use - boosting to tweak scoring for specific use cases.

    -
    -
    -
  • -
  • -
    Optional boost?: undefined | {}
    -
    -
    -

    Key-value object of field names to boosting values. By default, fields are - assigned a boosting factor of 1. If one assigns to a field a boosting value - of 2, a result that matches the query in that field is assigned a score - twice as high as a result matching the query in another field, all else - being equal.

    -
    -
    -
  • -
  • -
    Optional boostDocument?: undefined | ((documentId: any, term: string, storedFields?: Record<string, unknown>) => number)
    -
    -
    -

    Function to calculate a boost factor for documents. It takes as arguments - the document ID, and a term that matches the search in that document, and - the value of the stored fields for the document (if any). It should return - a boosting factor: a number higher than 1 increases the computed score, a - number lower than 1 decreases the score, and a falsy value skips the search - result completely.

    -
    -
    -
  • -
  • -
    Optional combineWith?: undefined | string
    -
    -
    -

    The operand to combine partial results for each term. By default it is - "OR", so results matching any of the search terms are returned by a - search. If "AND" is given, only results matching all the search terms are - returned by a search.

    -
    -
    -
  • -
  • -
    Optional fields?: string[]
    -
    -
    -

    Names of the fields to search in. If omitted, all fields are searched.

    -
    -
    -
  • -
  • -
    Optional filter?: undefined | ((result: SearchResult) => boolean)
    -
    -
    -

    Function used to filter search results, for example on the basis of stored - fields. It takes as argument each search result and should return a boolean - to indicate if the result should be kept or not.

    -
    -
    -
  • -
  • -
    Optional fuzzy?: boolean | number | ((term: string, index: number, terms: string[]) => boolean | number)
    -
    -
    -

    Controls whether to perform fuzzy search. It can be a simple boolean, or a - number, or a function.

    -
    -

    If a boolean is given, fuzzy search with a default fuzziness parameter is - performed if true.

    -

    If a number higher or equal to 1 is given, fuzzy search is performed, with - a maximum edit distance (Levenshtein) equal to the number.

    -

    If a number between 0 and 1 is given, fuzzy search is performed within a - maximum edit distance corresponding to that fraction of the term length, - approximated to the nearest integer. For example, 0.2 would mean an edit - distance of 20% of the term length, so 1 character in a 5-characters term. - The calculated fuzziness value is limited by the maxFuzzy option, to - prevent slowdown for very long queries.

    -

    If a function is passed, the function is called upon search with a search - term, a positional index of that term in the tokenized search query, and - the tokenized search query. It should return a boolean or a number, with - the meaning documented above.

    -
    -
  • -
  • -
    Optional maxFuzzy?: undefined | number
    -
    -
    -

    Controls the maximum fuzziness when using a fractional fuzzy value. This is - set to 6 by default. Very high edit distances usually don't produce - meaningful results, but can excessively impact search performance.

    -
    -
    -
  • -
  • -
    Optional prefix?: boolean | ((term: string, index: number, terms: string[]) => boolean)
    -
    -
    -

    Controls whether to perform prefix search. It can be a simple boolean, or a - function.

    -
    -

    If a boolean is passed, prefix search is performed if true.

    -

    If a function is passed, it is called upon search with a search term, the - positional index of that search term in the tokenized search query, and the - tokenized search query. The function should return a boolean to indicate - whether to perform prefix search for that search term.

    -
    -
  • -
  • -
    Optional processTerm?: undefined | ((term: string) => string | string[] | null | undefined | false)
    -
    -
    -

    Function to process or normalize terms in the search query. By default, the - same term processor used for indexing is used also for search.

    -
    -
    -
  • -
  • -
    Optional tokenize?: undefined | ((text: string) => string[])
    -
    -
    -

    Function to tokenize the search query. By default, the same tokenizer used - for indexing is used also for search.

    -
    -
    -
  • -
  • -
    Optional weights?: undefined | { fuzzy: number; prefix: number }
    -
    -
    -

    Relative weights to assign to prefix search results and fuzzy search - results. Exact matches are assigned a weight of 1.

    -
    -
    -
  • -
-
-
-
- -

SearchResult

-
SearchResult: { id: any; match: MatchInfo; score: number; terms: string[] }
- -
-
-

Type of the search results. Each search result indicates the document ID, the - terms that matched, the match information, the score, and all the stored - fields.

-
-
-
-

Type declaration

-
    -
  • -
    [key: string]: any
    -
    -
    -

    Stored fields

    -
    -
    -
  • -
  • -
    id: any
    -
    -
    -

    The document ID

    -
    -
    -
  • -
  • -
    match: MatchInfo
    -
    -
    -

    Match information, see MatchInfo

    -
    -
    -
  • -
  • -
    score: number
    -
    -
    -

    Score of the search results

    -
    -
    -
  • -
  • -
    terms: string[]
    -
    -
    -

    List of terms that matched

    -
    -
    -
  • -
-
-
-
- -

Suggestion

-
Suggestion: { score: number; suggestion: string; terms: string[] }
- -
-
-

The type of auto-suggestions

-
-
-
-

Type declaration

-
    -
  • -
    score: number
    -
    -
    -

    Score for the suggestion

    -
    -
    -
  • -
  • -
    suggestion: string
    -
    -
    -

    The suggestion

    -
    -
    -
  • -
  • -
    terms: string[]
    -
    -
    -

    Suggestion as an array of terms

    -
    -
    -
  • -
-
-
-
- -

VacuumConditions

-
VacuumConditions: { minDirtCount?: undefined | number; minDirtFactor?: undefined | number }
- -
-
-

Sets minimum thresholds for dirtCount and dirtFactor that trigger an - automatic vacuuming.

-
-
-
-

Type declaration

-
    -
  • -
    Optional minDirtCount?: undefined | number
    -
    -
    -

    Minimum dirtCount (number of discarded documents since the last vacuuming) - under which auto vacuum is not triggered. It defaults to 20.

    -
    -
    -
  • -
  • -
    Optional minDirtFactor?: undefined | number
    -
    -
    -

    Minimum dirtFactor (proportion of discarded documents over the total) - under which auto vacuum is not triggered. It defaults to 0.1.

    -
    -
    -
  • -
-
-
-
- -

VacuumOptions

-
VacuumOptions: { batchSize?: undefined | number; batchWait?: undefined | number }
- -
-
-

Options to control vacuuming behavior.

-
-

Vacuuming cleans up document references made obsolete by - MiniSearch.discard from the index. On large indexes, vacuuming is - potentially costly, because it has to traverse the whole inverted index. - Therefore, in order to dilute this cost so it does not negatively affects the - application, vacuuming is performed in batches, with a delay between each - batch. These options are used to configure the batch size and the delay - between batches.

-
-
-

Type declaration

-
    -
  • -
    Optional batchSize?: undefined | number
    -
    -
    -

    Size of each vacuuming batch (the number of terms in the index that will be - traversed in each batch). Defaults to 1000.

    -
    -
    -
  • -
  • -
    Optional batchWait?: undefined | number
    -
    -
    -

    Wait time between each vacuuming batch in milliseconds. Defaults to 10.

    -
    -
    -
  • -
-
-
-
- -

Wildcard

-
Wildcard: typeof wildcard
- -
-
-

Wildcard query, used to match all terms

-
-
-
-
-
- -
-
-
-
-

Legend

-
-
    -
  • Type alias
  • -
  • Type alias with type parameter
  • -
-
    -
  • Class with type parameter
  • -
-
-
-
-
-

Generated using TypeDoc

-
-
- - - \ No newline at end of file diff --git a/docs/modules/_searchablemap_searchablemap_.html b/docs/modules/_searchablemap_searchablemap_.html deleted file mode 100644 index 08340726..00000000 --- a/docs/modules/_searchablemap_searchablemap_.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - "SearchableMap/SearchableMap" | MiniSearch - - - - - -
-
-
-
- -
-
- Options -
-
- All -
    -
  • Public
  • -
  • Public/Protected
  • -
  • All
  • -
-
- - -
-
- Menu -
-
-
-
-
-
- -

Module "SearchableMap/SearchableMap"

-
-
-
-
-
-
-
-

Index

-
-
-
-

Classes

- -
-
-
-
-
- -
-
-
-
-

Legend

-
-
    -
  • Type alias
  • -
  • Type alias with type parameter
  • -
-
    -
  • Class with type parameter
  • -
-
-
-
-
-

Generated using TypeDoc

-
-
- - - \ No newline at end of file diff --git a/docs/types/MiniSearch.AutoVacuumOptions.html b/docs/types/MiniSearch.AutoVacuumOptions.html new file mode 100644 index 00000000..3fa10efb --- /dev/null +++ b/docs/types/MiniSearch.AutoVacuumOptions.html @@ -0,0 +1,7 @@ +AutoVacuumOptions | MiniSearch

Type alias AutoVacuumOptions

AutoVacuumOptions: VacuumOptions & VacuumConditions

Options to control auto vacuum behavior. When discarding a document with +MiniSearch#discard, a vacuuming operation is automatically started if +the dirtCount and dirtFactor are above the minDirtCount and +minDirtFactor thresholds defined by this configuration. See VacuumConditions for details on these.

+

Also, batchSize and batchWait can be specified, controlling batching +behavior (see VacuumOptions).

+

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/types/MiniSearch.BM25Params.html b/docs/types/MiniSearch.BM25Params.html new file mode 100644 index 00000000..d225c4b5 --- /dev/null +++ b/docs/types/MiniSearch.BM25Params.html @@ -0,0 +1,24 @@ +BM25Params | MiniSearch

Type alias BM25Params

BM25Params: {
    b: number;
    d: number;
    k: number;
}

Parameters of the BM25+ scoring algorithm. Customizing these is almost never +necessary, and finetuning them requires an understanding of the BM25 scoring +model.

+

Some information about BM25 (and BM25+) can be found at these links:

+ +

Type declaration

  • b: number

    Length normalization impact.

    +

    Recommended values are around 0.75. Higher values increase the weight +that field length has on scoring. Setting this to 0 (not recommended) +means that the field length has no effect on scoring. Negative values are +invalid. Defaults to 0.7.

    +
  • d: number

    BM25+ frequency normalization lower bound (usually called δ).

    +

    Recommended values are between 0.5 and 1. Increasing this parameter +increases the minimum relevance of one occurrence of a search term +regardless of its (possibly very long) field length. Negative values are +invalid. Defaults to 0.5.

    +
  • k: number

    Term frequency saturation point.

    +

    Recommended values are between 1.2 and 2. Higher values increase the +difference in score between documents with higher and lower term +frequencies. Setting this to 0 or a negative value is invalid. Defaults +to 1.2

    +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/types/MiniSearch.MatchInfo.html b/docs/types/MiniSearch.MatchInfo.html new file mode 100644 index 00000000..fc942501 --- /dev/null +++ b/docs/types/MiniSearch.MatchInfo.html @@ -0,0 +1,4 @@ +MatchInfo | MiniSearch

Type alias MatchInfo

MatchInfo: {
    [term: string]: string[];
}

Match information for a search result. It is a key-value object where keys +are terms that matched, and values are the list of fields that the term was +found in.

+

Type declaration

  • [term: string]: string[]

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/types/MiniSearch.Options.html b/docs/types/MiniSearch.Options.html new file mode 100644 index 00000000..d2fb2ab9 --- /dev/null +++ b/docs/types/MiniSearch.Options.html @@ -0,0 +1,33 @@ +Options | MiniSearch

Type alias Options<T>

Options<T>: {
    autoSuggestOptions?: SearchOptions;
    autoVacuum?: boolean | AutoVacuumOptions;
    extractField?: ((document, fieldName) => string);
    fields: string[];
    idField?: string;
    logger?: ((level, message, code?) => void);
    processTerm?: ((term, fieldName?) => string | string[] | null | undefined | false);
    searchOptions?: SearchOptions;
    storeFields?: string[];
    tokenize?: ((text, fieldName?) => string[]);
}

Configuration options passed to the MiniSearch constructor

+

Type Parameters

  • T = any

    The type of documents being indexed.

    +

Type declaration

  • Optional autoSuggestOptions?: SearchOptions

    Default auto suggest options (see the SearchOptions type and the +MiniSearch#autoSuggest method for details)

    +
  • Optional autoVacuum?: boolean | AutoVacuumOptions

    If true (the default), vacuuming is performed automatically as soon as +MiniSearch#discard is called a certain number of times, cleaning up +obsolete references from the index. If false, no automatic vacuuming is +performed. Custom settings controlling auto vacuuming thresholds, as well +as batching behavior, can be passed as an object (see the AutoVacuumOptions type).

    +
  • Optional extractField?: ((document, fieldName) => string)
      • (document, fieldName): string
      • Function used to extract the value of each field in documents. By default, +the documents are assumed to be plain objects with field names as keys, +but by specifying a custom extractField function one can completely +customize how the fields are extracted.

        +

        The function takes as arguments the document, and the name of the field to +extract from it. It should return the field value as a string.

        +

        Parameters

        • document: T
        • fieldName: string

        Returns string

  • fields: string[]

    Names of the document fields to be indexed.

    +
  • Optional idField?: string

    Name of the ID field, uniquely identifying a document.

    +
  • Optional logger?: ((level, message, code?) => void)
      • (level, message, code?): void
      • Function called to log messages. Arguments are a log level ('debug', +'info', 'warn', or 'error'), a log message, and an optional string code +that identifies the reason for the log.

        +

        The default implementation uses console, if defined.

        +

        Parameters

        • level: LogLevel
        • message: string
        • Optional code: string

        Returns void

  • Optional processTerm?: ((term, fieldName?) => string | string[] | null | undefined | false)
      • (term, fieldName?): string | string[] | null | undefined | false
      • Function used to process a term before indexing or search. This can be +used for normalization (such as stemming). By default, terms are +downcased, and otherwise no other normalization is performed.

        +

        The function takes as arguments a term to process, and the name of the +field it comes from. It should return the processed term as a string, or a +falsy value to reject the term entirely.

        +

        It can also return an array of strings, in which case each string in the +returned array is indexed as a separate term.

        +

        Parameters

        • term: string
        • Optional fieldName: string

        Returns string | string[] | null | undefined | false

  • Optional searchOptions?: SearchOptions

    Default search options (see the SearchOptions type and the MiniSearch#search method for details)

    +
  • Optional storeFields?: string[]

    Names of fields to store, so that search results would include them. By +default none, so results would only contain the id field.

    +
  • Optional tokenize?: ((text, fieldName?) => string[])
      • (text, fieldName?): string[]
      • Parameters

        • text: string
        • Optional fieldName: string

        Returns string[]

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/types/MiniSearch.Query.html b/docs/types/MiniSearch.Query.html new file mode 100644 index 00000000..2672141c --- /dev/null +++ b/docs/types/MiniSearch.Query.html @@ -0,0 +1,3 @@ +Query | MiniSearch
Query: QueryCombination | string | Wildcard

Search query expression, either a query string or an expression tree +combining several queries with a combination of AND or OR.

+

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/types/MiniSearch.QueryCombination.html b/docs/types/MiniSearch.QueryCombination.html new file mode 100644 index 00000000..a39fb211 --- /dev/null +++ b/docs/types/MiniSearch.QueryCombination.html @@ -0,0 +1 @@ +QueryCombination | MiniSearch

Type alias QueryCombination

QueryCombination: SearchOptions & {
    queries: Query[];
}

Type declaration

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/types/MiniSearch.SearchOptions.html b/docs/types/MiniSearch.SearchOptions.html new file mode 100644 index 00000000..54be2326 --- /dev/null +++ b/docs/types/MiniSearch.SearchOptions.html @@ -0,0 +1,57 @@ +SearchOptions | MiniSearch

Type alias SearchOptions

SearchOptions: {
    bm25?: BM25Params;
    boost?: {
        [fieldName: string]: number;
    };
    boostDocument?: ((documentId, term, storedFields?) => number);
    combineWith?: string;
    fields?: string[];
    filter?: ((result) => boolean);
    fuzzy?: boolean | number | ((term, index, terms) => boolean | number);
    maxFuzzy?: number;
    prefix?: boolean | ((term, index, terms) => boolean);
    processTerm?: ((term) => string | string[] | null | undefined | false);
    tokenize?: ((text) => string[]);
    weights?: {
        fuzzy: number;
        prefix: number;
    };
}

Search options to customize the search behavior.

+

Type declaration

  • Optional bm25?: BM25Params

    BM25+ algorithm parameters. Customizing these is almost never necessary, +and finetuning them requires an understanding of the BM25 scoring model. In +most cases, it is best to omit this option to use defaults, and instead use +boosting to tweak scoring for specific use cases.

    +
  • Optional boost?: {
        [fieldName: string]: number;
    }

    Key-value object of field names to boosting values. By default, fields are +assigned a boosting factor of 1. If one assigns to a field a boosting value +of 2, a result that matches the query in that field is assigned a score +twice as high as a result matching the query in another field, all else +being equal.

    +
    • [fieldName: string]: number
  • Optional boostDocument?: ((documentId, term, storedFields?) => number)
      • (documentId, term, storedFields?): number
      • Function to calculate a boost factor for documents. It takes as arguments +the document ID, and a term that matches the search in that document, and +the value of the stored fields for the document (if any). It should return +a boosting factor: a number higher than 1 increases the computed score, a +number lower than 1 decreases the score, and a falsy value skips the search +result completely.

        +

        Parameters

        • documentId: any
        • term: string
        • Optional storedFields: Record<string, unknown>

        Returns number

  • Optional combineWith?: string

    The operand to combine partial results for each term. By default it is +"OR", so results matching any of the search terms are returned by a +search. If "AND" is given, only results matching all the search terms are +returned by a search.

    +
  • Optional fields?: string[]

    Names of the fields to search in. If omitted, all fields are searched.

    +
  • Optional filter?: ((result) => boolean)
      • (result): boolean
      • Function used to filter search results, for example on the basis of stored +fields. It takes as argument each search result and should return a boolean +to indicate if the result should be kept or not.

        +

        Parameters

        Returns boolean

  • Optional fuzzy?: boolean | number | ((term, index, terms) => boolean | number)

    Controls whether to perform fuzzy search. It can be a simple boolean, or a +number, or a function.

    +

    If a boolean is given, fuzzy search with a default fuzziness parameter is +performed if true.

    +

    If a number higher or equal to 1 is given, fuzzy search is performed, with +a maximum edit distance (Levenshtein) equal to the number.

    +

    If a number between 0 and 1 is given, fuzzy search is performed within a +maximum edit distance corresponding to that fraction of the term length, +approximated to the nearest integer. For example, 0.2 would mean an edit +distance of 20% of the term length, so 1 character in a 5-characters term. +The calculated fuzziness value is limited by the maxFuzzy option, to +prevent slowdown for very long queries.

    +

    If a function is passed, the function is called upon search with a search +term, a positional index of that term in the tokenized search query, and +the tokenized search query. It should return a boolean or a number, with +the meaning documented above.

    +
  • Optional maxFuzzy?: number

    Controls the maximum fuzziness when using a fractional fuzzy value. This is +set to 6 by default. Very high edit distances usually don't produce +meaningful results, but can excessively impact search performance.

    +
  • Optional prefix?: boolean | ((term, index, terms) => boolean)

    Controls whether to perform prefix search. It can be a simple boolean, or a +function.

    +

    If a boolean is passed, prefix search is performed if true.

    +

    If a function is passed, it is called upon search with a search term, the +positional index of that search term in the tokenized search query, and the +tokenized search query. The function should return a boolean to indicate +whether to perform prefix search for that search term.

    +
  • Optional processTerm?: ((term) => string | string[] | null | undefined | false)
      • (term): string | string[] | null | undefined | false
      • Function to process or normalize terms in the search query. By default, the +same term processor used for indexing is used also for search.

        +

        Parameters

        • term: string

        Returns string | string[] | null | undefined | false

  • Optional tokenize?: ((text) => string[])
      • (text): string[]
      • Function to tokenize the search query. By default, the same tokenizer used +for indexing is used also for search.

        +

        Parameters

        • text: string

        Returns string[]

  • Optional weights?: {
        fuzzy: number;
        prefix: number;
    }

    Relative weights to assign to prefix search results and fuzzy search +results. Exact matches are assigned a weight of 1.

    +
    • fuzzy: number
    • prefix: number

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/types/MiniSearch.SearchResult.html b/docs/types/MiniSearch.SearchResult.html new file mode 100644 index 00000000..bbfadec1 --- /dev/null +++ b/docs/types/MiniSearch.SearchResult.html @@ -0,0 +1,9 @@ +SearchResult | MiniSearch

Type alias SearchResult

SearchResult: {
    id: any;
    match: MatchInfo;
    score: number;
    terms: string[];
    [key: string]: any;
}

Type of the search results. Each search result indicates the document ID, the +terms that matched, the match information, the score, and all the stored +fields.

+

Type declaration

  • [key: string]: any

    Stored fields

    +
  • id: any

    The document ID

    +
  • match: MatchInfo

    Match information, see MatchInfo

    +
  • score: number

    Score of the search results

    +
  • terms: string[]

    List of terms that matched

    +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/types/MiniSearch.Suggestion.html b/docs/types/MiniSearch.Suggestion.html new file mode 100644 index 00000000..63880988 --- /dev/null +++ b/docs/types/MiniSearch.Suggestion.html @@ -0,0 +1,5 @@ +Suggestion | MiniSearch

Type alias Suggestion

Suggestion: {
    score: number;
    suggestion: string;
    terms: string[];
}

The type of auto-suggestions

+

Type declaration

  • score: number

    Score for the suggestion

    +
  • suggestion: string

    The suggestion

    +
  • terms: string[]

    Suggestion as an array of terms

    +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/types/MiniSearch.VacuumConditions.html b/docs/types/MiniSearch.VacuumConditions.html new file mode 100644 index 00000000..7425d99a --- /dev/null +++ b/docs/types/MiniSearch.VacuumConditions.html @@ -0,0 +1,7 @@ +VacuumConditions | MiniSearch

Type alias VacuumConditions

VacuumConditions: {
    minDirtCount?: number;
    minDirtFactor?: number;
}

Sets minimum thresholds for dirtCount and dirtFactor that trigger an +automatic vacuuming.

+

Type declaration

  • Optional minDirtCount?: number

    Minimum dirtCount (number of discarded documents since the last vacuuming) +under which auto vacuum is not triggered. It defaults to 20.

    +
  • Optional minDirtFactor?: number

    Minimum dirtFactor (proportion of discarded documents over the total) +under which auto vacuum is not triggered. It defaults to 0.1.

    +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/types/MiniSearch.VacuumOptions.html b/docs/types/MiniSearch.VacuumOptions.html new file mode 100644 index 00000000..7d635971 --- /dev/null +++ b/docs/types/MiniSearch.VacuumOptions.html @@ -0,0 +1,11 @@ +VacuumOptions | MiniSearch

Type alias VacuumOptions

VacuumOptions: {
    batchSize?: number;
    batchWait?: number;
}

Options to control vacuuming behavior.

+

Vacuuming cleans up document references made obsolete by MiniSearch.discard from the index. On large indexes, vacuuming is +potentially costly, because it has to traverse the whole inverted index. +Therefore, in order to dilute this cost so it does not negatively affects the +application, vacuuming is performed in batches, with a delay between each +batch. These options are used to configure the batch size and the delay +between batches.

+

Type declaration

  • Optional batchSize?: number

    Size of each vacuuming batch (the number of terms in the index that will be +traversed in each batch). Defaults to 1000.

    +
  • Optional batchWait?: number

    Wait time between each vacuuming batch in milliseconds. Defaults to 10.

    +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/types/MiniSearch.Wildcard.html b/docs/types/MiniSearch.Wildcard.html new file mode 100644 index 00000000..31d0469b --- /dev/null +++ b/docs/types/MiniSearch.Wildcard.html @@ -0,0 +1,2 @@ +Wildcard | MiniSearch

Type alias Wildcard

Wildcard: typeof wildcard

Wildcard query, used to match all terms

+

Generated using TypeDoc

\ No newline at end of file diff --git a/jsdoc.json b/jsdoc.json deleted file mode 100644 index fe5273d1..00000000 --- a/jsdoc.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "tags": { - "allowUnknownTags": false, - "dictionaries": ["jsdoc","closure"] - }, - "recurseDepth": 10, - "source": { - "include": ["src/MiniSearch.js", "src/SearchableMap/SearchableMap.js", "MiniSearch.svg"] - }, - "sourceType": "module", - "plugins": [ - "plugins/markdown" - ], - "opts": { - "template": "node_modules/docdash/", - "readme": "README.md", - "encoding": "utf8", - "destination": "docs/", - "recurse": true, - "verbose": true - }, - "templates": { - "cleverLinks": false, - "monospaceLinks": false - }, - "docdash": { - "search": true, - "menu": { - "GitHub Repository": { - "href":"https://github.com/lucaong/minisearch", - "target":"_blank", - "class":"menu-item", - "id":"github_repo_link" - } - } - } -} diff --git a/package.json b/package.json index 14a459ac..5d44836a 100644 --- a/package.json +++ b/package.json @@ -62,8 +62,9 @@ "snazzy": "^9.0.0", "ts-jest": "^29.0.3", "tslib": "^2.0.1", - "typedoc": "^0.19.1", - "typescript": "^4.0.2" + "typedoc": "^0.25.3", + "typedoc-plugin-rename-defaults": "^0.7.0", + "typescript": "^5.2.2" }, "files": [ "/dist/**/*", @@ -94,7 +95,7 @@ "build": "yarn clean-build && NODE_ENV=production rollup -c", "clean-build": "rm -rf dist", "build-minified": "MINIFY=true yarn build", - "build-docs": "typedoc --options typedoc.json && touch docs/.nojekyll && yarn build-demo", + "build-docs": "typedoc --options typedoc.json && yarn build-demo", "build-demo": "mkdir -p ./docs/demo && cp -r ./examples/plain_js/. ./docs/demo", "lint": "eslint 'src/**/*.{js,ts}'", "lintfix": "eslint --fix 'src/**/*.{js,ts}'", diff --git a/src/MiniSearch.ts b/src/MiniSearch.ts index d74bb9c2..49633520 100644 --- a/src/MiniSearch.ts +++ b/src/MiniSearch.ts @@ -135,7 +135,7 @@ type SearchOptionsWithDefaults = SearchOptions & { } /** - * Configuration options passed to the [[MiniSearch]] constructor + * Configuration options passed to the {@link MiniSearch} constructor * * @typeParam T The type of documents being indexed. */ @@ -204,23 +204,23 @@ export type Options = { /** * If `true` (the default), vacuuming is performed automatically as soon as - * [[MiniSearch.discard]] is called a certain number of times, cleaning up + * {@link MiniSearch#discard} is called a certain number of times, cleaning up * obsolete references from the index. If `false`, no automatic vacuuming is * performed. Custom settings controlling auto vacuuming thresholds, as well - * as batching behavior, can be passed as an object (see the - * [[AutoVacuumOptions]] type). + * as batching behavior, can be passed as an object (see the {@link + * AutoVacuumOptions} type). */ autoVacuum?: boolean | AutoVacuumOptions /** - * Default search options (see the [[SearchOptions]] type and the - * [[MiniSearch.search]] method for details) + * Default search options (see the {@link SearchOptions} type and the {@link + * MiniSearch#search} method for details) */ searchOptions?: SearchOptions, /** - * Default auto suggest options (see the [[SearchOptions]] type and the - * [[MiniSearch.autoSuggest]] method for details) + * Default auto suggest options (see the {@link SearchOptions} type and the + * {@link MiniSearch#autoSuggest} method for details) */ autoSuggestOptions?: SearchOptions } @@ -298,7 +298,7 @@ export type SearchResult = { score: number, /** - * Match information, see [[MatchInfo]] + * Match information, see {@link MatchInfo} */ match: MatchInfo, @@ -340,8 +340,8 @@ export type Query = QueryCombination | string | Wildcard /** * Options to control vacuuming behavior. * - * Vacuuming cleans up document references made obsolete by - * [[MiniSearch.discard]] from the index. On large indexes, vacuuming is + * Vacuuming cleans up document references made obsolete by {@link + * MiniSearch.discard} from the index. On large indexes, vacuuming is * potentially costly, because it has to traverse the whole inverted index. * Therefore, in order to dilute this cost so it does not negatively affects the * application, vacuuming is performed in batches, with a delay between each @@ -381,13 +381,13 @@ export type VacuumConditions = { /** * Options to control auto vacuum behavior. When discarding a document with - * [[MiniSearch.discard]], a vacuuming operation is automatically started if the - * `dirtCount` and `dirtFactor` are above the `minDirtCount` and `minDirtFactor` - * thresholds defined by this configuration. See [[VacuumConditions]] for - * details on these. + * {@link MiniSearch#discard}, a vacuuming operation is automatically started if + * the `dirtCount` and `dirtFactor` are above the `minDirtCount` and + * `minDirtFactor` thresholds defined by this configuration. See {@link + * VacuumConditions} for details on these. * * Also, `batchSize` and `batchWait` can be specified, controlling batching - * behavior (see [[VacuumOptions]]). + * behavior (see {@link VacuumOptions}). */ export type AutoVacuumOptions = VacuumOptions & VacuumConditions @@ -420,8 +420,8 @@ interface RawResultValue { type RawResult = Map /** - * [[MiniSearch]] is the main entrypoint class, implementing a full-text search - * engine in memory. + * {@link MiniSearch} is the main entrypoint class, implementing a full-text + * search engine in memory. * * @typeParam T The type of the documents being indexed. * @@ -491,6 +491,10 @@ export default class MiniSearch { private _enqueuedVacuum: Promise | null private _enqueuedVacuumConditions: VacuumConditions | undefined + /** + * The special wildcard symbol that can be passed to {@link MiniSearch#search} + * to match all documents + */ static readonly wildcard: unique symbol = Symbol('*') /** @@ -692,9 +696,9 @@ export default class MiniSearch { * * This method requires passing the full document to be removed (not just the * ID), and immediately removes the document from the inverted index, allowing - * memory to be released. A convenient alternative is [[MiniSearch.discard]], - * which needs only the document ID, and has the same visible effect, but - * delays cleaning up the index until the next vacuuming. + * memory to be released. A convenient alternative is {@link + * MiniSearch#discard}, which needs only the document ID, and has the same + * visible effect, but delays cleaning up the index until the next vacuuming. * * @param document The document to be removed */ @@ -770,25 +774,26 @@ export default class MiniSearch { /** * Discards the document with the given ID, so it won't appear in search results * - * It has the same visible effect of [[MiniSearch.remove]] (both cause the + * It has the same visible effect of {@link MiniSearch.remove} (both cause the * document to stop appearing in searches), but a different effect on the * internal data structures: * - * - [[MiniSearch.remove]] requires passing the full document to be removed - * as argument, and removes it from the inverted index immediately. + * - {@link MiniSearch#remove} requires passing the full document to be + * removed as argument, and removes it from the inverted index immediately. * - * - [[MiniSearch.discard]] instead only needs the document ID, and works by - * marking the current version of the document as discarded, so it is - * immediately ignored by searches. This is faster and more convenient than - * `remove`, but the index is not immediately modified. To take care of - * that, vacuuming is performed after a certain number of documents are - * discarded, cleaning up the index and allowing memory to be released. + * - {@link MiniSearch#discard} instead only needs the document ID, and + * works by marking the current version of the document as discarded, so it + * is immediately ignored by searches. This is faster and more convenient + * than {@link MiniSearch#remove}, but the index is not immediately + * modified. To take care of that, vacuuming is performed after a certain + * number of documents are discarded, cleaning up the index and allowing + * memory to be released. * * After discarding a document, it is possible to re-add a new version, and * only the new version will appear in searches. In other words, discarding * and re-adding a document works exactly like removing and re-adding it. The - * [[MiniSearch.replace]] method can also be used to replace a document with a - * new version. + * {@link MiniSearch.replace} method can also be used to replace a document + * with a new version. * * #### Details about vacuuming * @@ -803,10 +808,10 @@ export default class MiniSearch { * again. * * - In addition, vacuuming is performed automatically by default (see the - * `autoVacuum` field in [[Options]]) after a certain number of documents - * are discarded. Vacuuming traverses all terms in the index, cleaning up - * all references to discarded documents. Vacuuming can also be triggered - * manually by calling [[MiniSearch.vacuum]]. + * `autoVacuum` field in {@link Options}) after a certain number of + * documents are discarded. Vacuuming traverses all terms in the index, + * cleaning up all references to discarded documents. Vacuuming can also be + * triggered manually by calling {@link MiniSearch#vacuum}. * * @param id The ID of the document to be discarded */ @@ -844,13 +849,13 @@ export default class MiniSearch { * Discards the documents with the given IDs, so they won't appear in search * results * - * It is equivalent to calling [[MiniSearch.discard]] for all the given IDs, - * but with the optimization of triggering at most one automatic vacuuming at - * the end. + * It is equivalent to calling {@link MiniSearch#discard} for all the given + * IDs, but with the optimization of triggering at most one automatic + * vacuuming at the end. * * Note: to remove all documents from the index, it is faster and more - * convenient to call [[MiniSearch.removeAll]] with no argument, instead of - * passing all IDs to this method. + * convenient to call {@link MiniSearch.removeAll} with no argument, instead + * of passing all IDs to this method. */ discardAll (ids: readonly any[]): void { const autoVacuum = this._options.autoVacuum @@ -872,13 +877,13 @@ export default class MiniSearch { * It replaces an existing document with the given updated version * * It works by discarding the current version and adding the updated one, so - * it is functionally equivalent to calling [[MiniSearch.discard]] followed by - * [[MiniSearch.add]]. The ID of the updated document should be the same as - * the original one. + * it is functionally equivalent to calling {@link MiniSearch#discard} + * followed by {@link MiniSearch#add}. The ID of the updated document should + * be the same as the original one. * - * Since it uses [[MiniSearch.discard]] internally, this method relies on + * Since it uses {@link MiniSearch#discard} internally, this method relies on * vacuuming to clean up obsolete document references from the index, allowing - * memory to be released (see [[MiniSearch.discard]]). + * memory to be released (see {@link MiniSearch#discard}). * * @param updatedDocument The updated document to replace the old version * with @@ -895,12 +900,12 @@ export default class MiniSearch { * Triggers a manual vacuuming, cleaning up references to discarded documents * from the inverted index * - * Vacuuming is only useful for applications that use the - * [[MiniSearch.discard]] or [[MiniSearch.replace]] methods. + * Vacuuming is only useful for applications that use the {@link + * MiniSearch#discard} or {@link MiniSearch#replace} methods. * * By default, vacuuming is performed automatically when needed (controlled by - * the `autoVacuum` field in [[Options]]), so there is usually no need to call - * this method, unless one wants to make sure to perform vacuuming at a + * the `autoVacuum` field in {@link Options}), so there is usually no need to + * call this method, unless one wants to make sure to perform vacuuming at a * specific moment. * * Vacuuming traverses all terms in the inverted index in batches, and cleans @@ -928,7 +933,7 @@ export default class MiniSearch { * times (enqueuing multiple ones would be useless). * * @param options Configuration options for the batch size and delay. See - * [[VacuumOptions]]. + * {@link VacuumOptions}. */ vacuum (options: VacuumOptions = {}): Promise { return this.conditionalVacuum(options) @@ -1157,7 +1162,7 @@ export default class MiniSearch { * Searching for an empty string (assuming the default tokenizer) returns no * results. Sometimes though, one needs to match all documents, like in a * "wildcard" search. This is possible by passing the special value - * `MiniSearch.wildcard` as the query: + * {@link MiniSearch.wildcard} as the query: * * ```javascript * // Return search results for all documents @@ -1209,7 +1214,7 @@ export default class MiniSearch { * ``` * * Each node in the expression tree can be either a string, or an object that - * supports all `SearchOptions` fields, plus a `queries` array field for + * supports all {@link SearchOptions} fields, plus a `queries` array field for * subqueries. * * Note that, while this can become complicated to do by hand for complex or @@ -1263,8 +1268,8 @@ export default class MiniSearch { * default it performs prefix search on the last term of the query, and * combine terms with `'AND'` (requiring all query terms to match). Custom * options can be passed as a second argument. Defaults can be changed upon - * calling the `MiniSearch` constructor, by passing a `autoSuggestOptions` - * option. + * calling the {@link MiniSearch} constructor, by passing a + * `autoSuggestOptions` option. * * ### Basic usage: * @@ -1309,9 +1314,9 @@ export default class MiniSearch { * * @param queryString Query string to be expanded into suggestions * @param options Search options. The supported options and default values - * are the same as for the `search` method, except that by default prefix - * search is performed on the last term in the query, and terms are combined - * with `'AND'`. + * are the same as for the {@link MiniSearch#search} method, except that by + * default prefix search is performed on the last term in the query, and terms + * are combined with `'AND'`. * @return A sorted array of suggestions sorted by relevance score. */ autoSuggest (queryString: string, options: SearchOptions = {}): Suggestion[] { @@ -1591,13 +1596,13 @@ export default class MiniSearch { /** * Allows serialization of the index to JSON, to possibly store it and later - * deserialize it with `MiniSearch.loadJSON`. + * deserialize it with {@link MiniSearch.loadJSON}. * * Normally one does not directly call this method, but rather call the - * standard JavaScript `JSON.stringify()` passing the `MiniSearch` instance, - * and JavaScript will internally call this method. Upon deserialization, one - * must pass to `loadJSON` the same options used to create the original - * instance that was serialized. + * standard JavaScript `JSON.stringify()` passing the {@link MiniSearch} + * instance, and JavaScript will internally call this method. Upon + * deserialization, one must pass to {@link MiniSearch.loadJSON} the same + * options used to create the original instance that was serialized. * * ### Usage: * diff --git a/typedoc.json b/typedoc.json index c8c3f5b3..5c5ffde8 100644 --- a/typedoc.json +++ b/typedoc.json @@ -1,11 +1,10 @@ { "name": "MiniSearch", - "inputFiles": ["index.ts", "src/MiniSearch.ts", "src/SearchableMap/SearchableMap.ts"], + "entryPoints": ["src/MiniSearch.ts", "src/SearchableMap/SearchableMap.ts"], "out": "docs", - "mode": "modules", - "excludeNotExported": true, "excludePrivate": true, "excludeProtected": true, - "stripInternal": true, - "excludeExternals": true + "excludeInternal": true, + "excludeExternals": true, + "plugin": ["typedoc-plugin-rename-defaults"] } diff --git a/yarn.lock b/yarn.lock index 12b161ea..805dfbf8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -648,65 +648,65 @@ estree-walker "^2.0.2" picomatch "^2.3.1" -"@rollup/rollup-android-arm-eabi@4.1.4": - version "4.1.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.1.4.tgz#e9bc2540174972b559ded126e6f9bf12f36c1bb1" - integrity sha512-WlzkuFvpKl6CLFdc3V6ESPt7gq5Vrimd2Yv9IzKXdOpgbH4cdDSS1JLiACX8toygihtH5OlxyQzhXOph7Ovlpw== - -"@rollup/rollup-android-arm64@4.1.4": - version "4.1.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.1.4.tgz#50c4e7668cb00a63d9a6810d0a607496ad4f0d09" - integrity sha512-D1e+ABe56T9Pq2fD+R3ybe1ylCDzu3tY4Qm2Mj24R9wXNCq35+JbFbOpc2yrroO2/tGhTobmEl2Bm5xfE/n8RA== - -"@rollup/rollup-darwin-arm64@4.1.4": - version "4.1.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.1.4.tgz#96b8ad0c21582fe8223c66ed4b39b30ff592da1c" - integrity sha512-7vTYrgEiOrjxnjsgdPB+4i7EMxbVp7XXtS+50GJYj695xYTTEMn3HZVEvgtwjOUkAP/Q4HDejm4fIAjLeAfhtg== - -"@rollup/rollup-darwin-x64@4.1.4": - version "4.1.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.1.4.tgz#5f0f6bd8f0a29e4b2b32ab831e953a6ca2d8f45b" - integrity sha512-eGJVZScKSLZkYjhTAESCtbyTBq9SXeW9+TX36ki5gVhDqJtnQ5k0f9F44jNK5RhAMgIj0Ht9+n6HAgH0gUUyWQ== - -"@rollup/rollup-linux-arm-gnueabihf@4.1.4": - version "4.1.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.1.4.tgz#52d706c87a05f91ff6f14f444685b662d3a6f96a" - integrity sha512-HnigYSEg2hOdX1meROecbk++z1nVJDpEofw9V2oWKqOWzTJlJf1UXVbDE6Hg30CapJxZu5ga4fdAQc/gODDkKg== - -"@rollup/rollup-linux-arm64-gnu@4.1.4": - version "4.1.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.1.4.tgz#5afa269b26467a7929c23816e3e2cf417b973d3b" - integrity sha512-TzJ+N2EoTLWkaClV2CUhBlj6ljXofaYzF/R9HXqQ3JCMnCHQZmQnbnZllw7yTDp0OG5whP4gIPozR4QiX+00MQ== - -"@rollup/rollup-linux-arm64-musl@4.1.4": - version "4.1.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.1.4.tgz#08d30969483a804769deb6e674fe963c21815ad9" - integrity sha512-aVPmNMdp6Dlo2tWkAduAD/5TL/NT5uor290YvjvFvCv0Q3L7tVdlD8MOGDL+oRSw5XKXKAsDzHhUOPUNPRHVTQ== - -"@rollup/rollup-linux-x64-gnu@4.1.4": - version "4.1.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.1.4.tgz#e5000b4e6e2a81364083d64a608b915f4e92a9c1" - integrity sha512-77Fb79ayiDad0grvVsz4/OB55wJRyw9Ao+GdOBA9XywtHpuq5iRbVyHToGxWquYWlEf6WHFQQnFEttsAzboyKg== - -"@rollup/rollup-linux-x64-musl@4.1.4": - version "4.1.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.1.4.tgz#6f356e16b275287f61c61ce8b9e1718fc5b24d4c" - integrity sha512-/t6C6niEQTqmQTVTD9TDwUzxG91Mlk69/v0qodIPUnjjB3wR4UA3klg+orR2SU3Ux2Cgf2pWPL9utK80/1ek8g== - -"@rollup/rollup-win32-arm64-msvc@4.1.4": - version "4.1.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.1.4.tgz#acb619a959c7b03fad63017b328fa60641b75239" - integrity sha512-ZY5BHHrOPkMbCuGWFNpJH0t18D2LU6GMYKGaqaWTQ3CQOL57Fem4zE941/Ek5pIsVt70HyDXssVEFQXlITI5Gg== - -"@rollup/rollup-win32-ia32-msvc@4.1.4": - version "4.1.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.1.4.tgz#6aab05c9a60f952cf5a263ebca244aa225fbde63" - integrity sha512-XG2mcRfFrJvYyYaQmvCIvgfkaGinfXrpkBuIbJrTl9SaIQ8HumheWTIwkNz2mktCKwZfXHQNpO7RgXLIGQ7HXA== - -"@rollup/rollup-win32-x64-msvc@4.1.4": - version "4.1.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.1.4.tgz#482022c71466e653aa6e1afc7a8323298743609b" - integrity sha512-ANFqWYPwkhIqPmXw8vm0GpBEHiPpqcm99jiiAp71DbCSqLDhrtr019C5vhD0Bw4My+LmMvciZq6IsWHqQpl2ZQ== +"@rollup/rollup-android-arm-eabi@4.1.5": + version "4.1.5" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.1.5.tgz#aa13d291631fe72552ca2adba50f8d58ef2cde6f" + integrity sha512-/fwx6GS8cIbM2rTNyLMxjSCOegHywOdXO+kN9yFy018iCULcKZCyA3xvzw4bxyKbYfdSxQgdhbsl0egNcxerQw== + +"@rollup/rollup-android-arm64@4.1.5": + version "4.1.5" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.1.5.tgz#b17d7262f00654296e8167b8b7a6708b79a29dc1" + integrity sha512-tmXh7dyEt+JEz/NgDJlB1UeL/1gFV0v8qYzUAU42WZH4lmUJ5rp6/HkR2qUNC5jCgYEwd8/EfbHKtGIEfS4CUg== + +"@rollup/rollup-darwin-arm64@4.1.5": + version "4.1.5" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.1.5.tgz#7ddfe2dc9f369fc9560d007a5297492e2d289f45" + integrity sha512-lTDmLxdEVhzI3KCesZUrNbl3icBvPrDv/85JasY5gh4P2eAuDFmM4uj9HC5DdH0anLC0fwJ+1Uzasr4qOXcjRQ== + +"@rollup/rollup-darwin-x64@4.1.5": + version "4.1.5" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.1.5.tgz#76d4b023964bfbf9dcfb9d968e3707841935f198" + integrity sha512-v6qEHZyjWnIgcc4oiy8AIeFsUJAx+Kg0sLj+RE7ICwv3u7YC/+bSClxAiBASRjMzqsq0Z+I/pfxj+OD8mjBYxg== + +"@rollup/rollup-linux-arm-gnueabihf@4.1.5": + version "4.1.5" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.1.5.tgz#ed0bff049b47126635908b095d421c699fe11996" + integrity sha512-WngCfwPEDUNbZR1FNO2TCROYUwJvRlbvPi3AS85bDUkkoRDBcjUIz42cuB1j4PKilmnZascL5xTMF/yU8YFayA== + +"@rollup/rollup-linux-arm64-gnu@4.1.5": + version "4.1.5" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.1.5.tgz#a79023f1fa1ca7f0fc8bec343e87ee48ce67d159" + integrity sha512-Q2A/PEP/UTPTOBwgar3mmCaApahoezai/8e/7f4GCLV6XWCpnU4YwkQQtla7d7nUnc792Ps7g1G0WMovzIknrA== + +"@rollup/rollup-linux-arm64-musl@4.1.5": + version "4.1.5" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.1.5.tgz#d9629d2cdd3a16a9001715e13a53de27030b9ba6" + integrity sha512-84aBKNAVzTU/eG3tb2+kR4NGRAtm2YVW/KHwkGGDR4z1k4hyrDbuImsfs/6J74t6y0YLOe9HOSu7ejRjzUBGVQ== + +"@rollup/rollup-linux-x64-gnu@4.1.5": + version "4.1.5" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.1.5.tgz#1867e169a32f6d9d302df443dd0fbef25f5b34e0" + integrity sha512-mldtP9UEBurIq2+GYMdNeiqCLW1fdgf4KdkMR/QegAeXk4jFHkKQl7p0NITrKFVyVqzISGXH5gR6GSTBH4wszw== + +"@rollup/rollup-linux-x64-musl@4.1.5": + version "4.1.5" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.1.5.tgz#fcd449c2838c61c2c320ae8de717961dc5c98d1b" + integrity sha512-36p+nMcSxjAEzfU47+by102HolUtf/EfgBAidocTKAofJMTqG5QD50qzaFLk4QO+z7Qvg4qd0wr99jGAwnKOig== + +"@rollup/rollup-win32-arm64-msvc@4.1.5": + version "4.1.5" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.1.5.tgz#d4a674b472b0a31d8a8f9406b79933a6ccdb9efb" + integrity sha512-5oxhubo0A3J8aF/tG+6jHBg785HF8/88kl1YnfbDKmnqMxz/EFiAQDH9cq6lbnxofjn8tlq5KiTf0crJGOGThg== + +"@rollup/rollup-win32-ia32-msvc@4.1.5": + version "4.1.5" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.1.5.tgz#a54c21255306f21429abf2a5c8b05909fe27b0e1" + integrity sha512-uVQyBREKX9ErofL8KAZ4iVlqzSZOXSIG+BOLYuz5FD+Cg6jh1eLIeUa3Q4SgX0QaTRFeeAgSNqCC+8kZrZBpSw== + +"@rollup/rollup-win32-x64-msvc@4.1.5": + version "4.1.5" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.1.5.tgz#121eb95664a46afbc58d4fe2226b9dd9f8dcc59b" + integrity sha512-FQ5qYqRJ2vUBSom3Fos8o/6UvAMOvlus4+HGCAifH1TagbbwVnVVe0o01J1V52EWnQ8kmfpJDJ0FMrfM5yzcSA== "@sinclair/typebox@^0.27.8": version "0.27.8" @@ -931,9 +931,9 @@ acorn-jsx@^5.3.2: integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== acorn@^8.8.2, acorn@^8.9.0: - version "8.10.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5" - integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== + version "8.11.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.2.tgz#ca0d78b51895be5390a5903c5b3bdcdaf78ae40b" + integrity sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w== ajv@^6.12.3, ajv@^6.12.4: version "6.12.6" @@ -957,6 +957,11 @@ ansi-regex@^5.0.1: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== +ansi-sequence-parser@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ansi-sequence-parser/-/ansi-sequence-parser-1.1.1.tgz#e0aa1cdcbc8f8bb0b5bca625aac41f5f056973cf" + integrity sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg== + ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" @@ -1081,11 +1086,6 @@ asynckit@^0.4.0: resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== -at-least-node@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" - integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== - available-typed-arrays@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" @@ -1189,6 +1189,13 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + braces@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" @@ -1256,10 +1263,15 @@ camelcase@^6.2.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== +camelcase@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-8.0.0.tgz#c0d36d418753fb6ad9c5e0437579745c1c14a534" + integrity sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA== + caniuse-lite@^1.0.30001541: - version "1.0.30001554" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001554.tgz#ba80d88dff9acbc0cd4b7535fc30e0191c5e2e2a" - integrity sha512-A2E3U//MBwbJVzebddm1YfNp7Nud5Ip+IPn4BozBmn4KqVX7AvluoIDFWjsv5OkGnKUXQVmMSoMKLa3ScCblcQ== + version "1.0.30001558" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001558.tgz#d2c6e21fdbfe83817f70feab902421a19b7983ee" + integrity sha512-/Et7DwLqpjS47JPEcz6VnxU9PwcIdVi0ciLXRWBQdj1XFye68pSQYpV0QtPTfUKWuOaEig+/Vez2l74eDc1tPQ== caseless@~0.12.0: version "0.12.0" @@ -1515,9 +1527,9 @@ ecc-jsbn@~0.1.1: safer-buffer "^2.1.0" electron-to-chromium@^1.4.535: - version "1.4.567" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.567.tgz#c92e8fbc2bd15df3068d92571733a218a5413add" - integrity sha512-8KR114CAYQ4/r5EIEsOmOMqQ9j0MRbJZR3aXD/KFA8RuKzyoUB4XrUCg+l8RUGqTVQgKNIgTpjaG8YHRPAbX2w== + version "1.4.569" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.569.tgz#1298b67727187ffbaac005a7425490d157f3ad03" + integrity sha512-LsrJjZ0IbVy12ApW3gpYpcmHS3iRxH4bkKOW98y1/D+3cvDUWGcbzbsFinfUS8knpcZk/PG/2p/RnkMCYN7PVg== emittery@^0.13.1: version "0.13.1" @@ -1988,16 +2000,6 @@ form-data@~2.3.2: combined-stream "^1.0.6" mime-types "^2.1.12" -fs-extra@^9.0.1: - version "9.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" - integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== - dependencies: - at-least-node "^1.0.0" - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -2094,7 +2096,7 @@ glob-parent@^6.0.2: dependencies: is-glob "^4.0.3" -glob@^7.0.0, glob@^7.1.3, glob@^7.1.4: +glob@^7.1.3, glob@^7.1.4: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -2144,7 +2146,7 @@ gopd@^1.0.1: dependencies: get-intrinsic "^1.1.3" -graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.9: +graceful-fs@^4.2.9: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== @@ -2154,18 +2156,6 @@ graphemer@^1.4.0: resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== -handlebars@^4.7.6: - version "4.7.8" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.8.tgz#41c42c18b1be2365439188c77c6afae71c0cd9e9" - integrity sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ== - dependencies: - minimist "^1.2.5" - neo-async "^2.6.2" - source-map "^0.6.1" - wordwrap "^1.0.0" - optionalDependencies: - uglify-js "^3.1.4" - har-schema@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" @@ -2225,11 +2215,6 @@ hasown@^2.0.0: dependencies: function-bind "^1.1.2" -highlight.js@^10.2.0: - version "10.7.3" - resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.7.3.tgz#697272e3991356e40c3cac566a74eef681756531" - integrity sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A== - html-escaper@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" @@ -2297,11 +2282,6 @@ internal-slot@^1.0.5: hasown "^2.0.0" side-channel "^1.0.4" -interpret@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" - integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== - is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" @@ -2945,14 +2925,10 @@ json5@^2.2.3: resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== -jsonfile@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" - integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== - dependencies: - universalify "^2.0.0" - optionalDependencies: - graceful-fs "^4.1.6" +jsonc-parser@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76" + integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w== jsprim@^1.2.2: version "1.4.2" @@ -3023,7 +2999,7 @@ lodash.merge@^4.6.2: resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== -lodash@^4.17.20, lodash@^4.17.4: +lodash@^4.17.4: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -3078,10 +3054,10 @@ makeerror@1.0.12: dependencies: tmpl "1.0.5" -marked@^1.1.1: - version "1.2.9" - resolved "https://registry.yarnpkg.com/marked/-/marked-1.2.9.tgz#53786f8b05d4c01a2a5a76b7d1ec9943d29d72dc" - integrity sha512-H8lIX2SvyitGX+TRdtS06m1jHMijKN/XjfH6Ooii9fvxMlh8QdqBfBDkGUpMWH2kQNrtixjzYUa3SH8ROTgRRw== +marked@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/marked/-/marked-4.3.0.tgz#796362821b019f734054582038b116481b456cf3" + integrity sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A== merge-stream@^2.0.0: version "2.0.0" @@ -3118,13 +3094,20 @@ mimic-fn@^2.1.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -minimatch@^3.0.0, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: +minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" +minimatch@^9.0.3: + version "9.0.3" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" + integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== + dependencies: + brace-expansion "^2.0.1" + minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: version "1.2.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" @@ -3145,11 +3128,6 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== -neo-async@^2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" - integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== - node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" @@ -3372,11 +3350,6 @@ pretty-format@^29.7.0: ansi-styles "^5.0.0" react-is "^18.0.0" -progress@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" - integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== - prompts@^2.0.1: version "2.4.2" resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" @@ -3431,13 +3404,6 @@ readable-stream@^3.0.2, readable-stream@^3.6.0: string_decoder "^1.1.1" util-deprecate "^1.0.1" -rechoir@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" - integrity sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw== - dependencies: - resolve "^1.1.6" - regenerator-runtime@^0.14.0: version "0.14.0" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45" @@ -3515,7 +3481,7 @@ resolve.exports@^2.0.0: resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.2.tgz#f8c934b8e6a13f539e38b7098e2e36134f01e800" integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg== -resolve@^1.1.6, resolve@^1.10.1, resolve@^1.20.0, resolve@^1.22.1, resolve@^1.22.2, resolve@^1.22.4: +resolve@^1.10.1, resolve@^1.20.0, resolve@^1.22.1, resolve@^1.22.2, resolve@^1.22.4: version "1.22.8" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== @@ -3546,22 +3512,22 @@ rollup-plugin-dts@^6.0.0: "@babel/code-frame" "^7.22.13" rollup@^4.1.0: - version "4.1.4" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.1.4.tgz#cf0ab00d9183a3d11fcc5d630270463b13831221" - integrity sha512-U8Yk1lQRKqCkDBip/pMYT+IKaN7b7UesK3fLSTuHBoBJacCE+oBqo/dfG/gkUdQNNB2OBmRP98cn2C2bkYZkyw== + version "4.1.5" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.1.5.tgz#0838662dbf56f4b3fdbe4de5f232212a302b198c" + integrity sha512-AEw14/q4NHYQkQlngoSae2yi7hDBeT9w84aEzdgCr39+2RL+iTG84lGTkgC1Wp5igtquN64cNzuzZKVz+U6jOg== optionalDependencies: - "@rollup/rollup-android-arm-eabi" "4.1.4" - "@rollup/rollup-android-arm64" "4.1.4" - "@rollup/rollup-darwin-arm64" "4.1.4" - "@rollup/rollup-darwin-x64" "4.1.4" - "@rollup/rollup-linux-arm-gnueabihf" "4.1.4" - "@rollup/rollup-linux-arm64-gnu" "4.1.4" - "@rollup/rollup-linux-arm64-musl" "4.1.4" - "@rollup/rollup-linux-x64-gnu" "4.1.4" - "@rollup/rollup-linux-x64-musl" "4.1.4" - "@rollup/rollup-win32-arm64-msvc" "4.1.4" - "@rollup/rollup-win32-ia32-msvc" "4.1.4" - "@rollup/rollup-win32-x64-msvc" "4.1.4" + "@rollup/rollup-android-arm-eabi" "4.1.5" + "@rollup/rollup-android-arm64" "4.1.5" + "@rollup/rollup-darwin-arm64" "4.1.5" + "@rollup/rollup-darwin-x64" "4.1.5" + "@rollup/rollup-linux-arm-gnueabihf" "4.1.5" + "@rollup/rollup-linux-arm64-gnu" "4.1.5" + "@rollup/rollup-linux-arm64-musl" "4.1.5" + "@rollup/rollup-linux-x64-gnu" "4.1.5" + "@rollup/rollup-linux-x64-musl" "4.1.5" + "@rollup/rollup-win32-arm64-msvc" "4.1.5" + "@rollup/rollup-win32-ia32-msvc" "4.1.5" + "@rollup/rollup-win32-x64-msvc" "4.1.5" fsevents "~2.3.2" run-parallel@^1.1.9: @@ -3605,7 +3571,7 @@ semver@^6.1.0, semver@^6.3.0, semver@^6.3.1: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.0.0, semver@^7.3.2, semver@^7.5.3, semver@^7.5.4: +semver@^7.0.0, semver@^7.5.3, semver@^7.5.4: version "7.5.4" resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== @@ -3650,14 +3616,15 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -shelljs@^0.8.4: - version "0.8.5" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.5.tgz#de055408d8361bed66c669d2f000538ced8ee20c" - integrity sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow== +shiki@^0.14.1: + version "0.14.5" + resolved "https://registry.yarnpkg.com/shiki/-/shiki-0.14.5.tgz#375dd214e57eccb04f0daf35a32aa615861deb93" + integrity sha512-1gCAYOcmCFONmErGTrS1fjzJLA7MGZmKzrBNX7apqSwhyITJg2O102uFzXUeBxNnEkDA9vHIKLyeKq0V083vIw== dependencies: - glob "^7.0.0" - interpret "^1.0.0" - rechoir "^0.6.2" + ansi-sequence-parser "^1.1.0" + jsonc-parser "^3.2.0" + vscode-oniguruma "^1.7.0" + vscode-textmate "^8.0.0" side-channel@^1.0.4: version "1.0.4" @@ -4021,37 +3988,27 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== -typedoc-default-themes@^0.11.4: - version "0.11.4" - resolved "https://registry.yarnpkg.com/typedoc-default-themes/-/typedoc-default-themes-0.11.4.tgz#1bc55b7c8d1132844616ff6f570e1e2cd0eb7343" - integrity sha512-Y4Lf+qIb9NTydrexlazAM46SSLrmrQRqWiD52593g53SsmUFioAsMWt8m834J6qsp+7wHRjxCXSZeiiW5cMUdw== +typedoc-plugin-rename-defaults@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/typedoc-plugin-rename-defaults/-/typedoc-plugin-rename-defaults-0.7.0.tgz#8cd477b4e914c6021a1a0e1badaa869159bb6945" + integrity sha512-NudSQ1o/XLHNF9c4y7LzIZxfE9ltz09yCDklBPJpP5VMRvuBpYGIbQ0ZgmPz+EIV8vPx9Z/OyKwzp4HT2vDtfg== + dependencies: + camelcase "^8.0.0" -typedoc@^0.19.1: - version "0.19.2" - resolved "https://registry.yarnpkg.com/typedoc/-/typedoc-0.19.2.tgz#842a63a581f4920f76b0346bb80eb2a49afc2c28" - integrity sha512-oDEg1BLEzi1qvgdQXc658EYgJ5qJLVSeZ0hQ57Eq4JXy6Vj2VX4RVo18qYxRWz75ifAaYuYNBUCnbhjd37TfOg== +typedoc@^0.25.3: + version "0.25.3" + resolved "https://registry.yarnpkg.com/typedoc/-/typedoc-0.25.3.tgz#53c6d668e1001b3d488e9a750fcdfb05433554c0" + integrity sha512-Ow8Bo7uY1Lwy7GTmphRIMEo6IOZ+yYUyrc8n5KXIZg1svpqhZSWgni2ZrDhe+wLosFS8yswowUzljTAV/3jmWw== dependencies: - fs-extra "^9.0.1" - handlebars "^4.7.6" - highlight.js "^10.2.0" - lodash "^4.17.20" lunr "^2.3.9" - marked "^1.1.1" - minimatch "^3.0.0" - progress "^2.0.3" - semver "^7.3.2" - shelljs "^0.8.4" - typedoc-default-themes "^0.11.4" - -typescript@^4.0.2: - version "4.9.5" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" - integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== - -uglify-js@^3.1.4: - version "3.17.4" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.4.tgz#61678cf5fa3f5b7eb789bb345df29afb8257c22c" - integrity sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g== + marked "^4.3.0" + minimatch "^9.0.3" + shiki "^0.14.1" + +typescript@^5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.2.2.tgz#5ebb5e5a5b75f085f22bc3f8460fba308310fa78" + integrity sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w== unbox-primitive@^1.0.2: version "1.0.2" @@ -4068,11 +4025,6 @@ undici-types@~5.26.4: resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== -universalify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" - integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== - update-browserslist-db@^1.0.13: version "1.0.13" resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" @@ -4116,6 +4068,16 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" +vscode-oniguruma@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz#439bfad8fe71abd7798338d1cd3dc53a8beea94b" + integrity sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA== + +vscode-textmate@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/vscode-textmate/-/vscode-textmate-8.0.0.tgz#2c7a3b1163ef0441097e0b5d6389cd5504b59e5d" + integrity sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg== + walker@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" @@ -4152,11 +4114,6 @@ which@^2.0.1: dependencies: isexe "^2.0.0" -wordwrap@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== - wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"