diff --git a/docs/assets/plugins/search/lunr.min.js b/docs/assets/plugins/search/lunr.min.js index d521877805..d746af24a3 100644 --- a/docs/assets/plugins/search/lunr.min.js +++ b/docs/assets/plugins/search/lunr.min.js @@ -3,4 +3,1308 @@ * Copyright (C) 2020 Oliver Nightingale * @license MIT */ - !function(){var e=function(t){var r=new e.Builder;return r.pipeline.add(e.trimmer,e.stopWordFilter,e.stemmer),r.searchPipeline.add(e.stemmer),t.call(r,r),r.build()};e.version="2.3.9",e.utils={},e.utils.warn=function(e){return function(t){e.console&&console.warn&&console.warn(t)}}(this),e.utils.asString=function(e){return void 0===e||null===e?"":e.toString()},e.utils.clone=function(e){if(null===e||void 0===e)return e;for(var t=Object.create(null),r=Object.keys(e),i=0;i0){var c=e.utils.clone(r)||{};c.position=[a,l],c.index=s.length,s.push(new e.Token(i.slice(a,o),c))}a=o+1}}return s},e.tokenizer.separator=/[\s\-]+/,e.Pipeline=function(){this._stack=[]},e.Pipeline.registeredFunctions=Object.create(null),e.Pipeline.registerFunction=function(t,r){r in this.registeredFunctions&&e.utils.warn("Overwriting existing registered function: "+r),t.label=r,e.Pipeline.registeredFunctions[t.label]=t},e.Pipeline.warnIfFunctionNotRegistered=function(t){var r=t.label&&t.label in this.registeredFunctions;r||e.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",t)},e.Pipeline.load=function(t){var r=new e.Pipeline;return t.forEach(function(t){var i=e.Pipeline.registeredFunctions[t];if(!i)throw new Error("Cannot load unregistered function: "+t);r.add(i)}),r},e.Pipeline.prototype.add=function(){var t=Array.prototype.slice.call(arguments);t.forEach(function(t){e.Pipeline.warnIfFunctionNotRegistered(t),this._stack.push(t)},this)},e.Pipeline.prototype.after=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");i+=1,this._stack.splice(i,0,r)},e.Pipeline.prototype.before=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");this._stack.splice(i,0,r)},e.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);t!=-1&&this._stack.splice(t,1)},e.Pipeline.prototype.run=function(e){for(var t=this._stack.length,r=0;r1&&(se&&(r=n),s!=e);)i=r-t,n=t+Math.floor(i/2),s=this.elements[2*n];return s==e?2*n:s>e?2*n:sa?l+=2:o==a&&(t+=r[u+1]*i[l+1],u+=2,l+=2);return t},e.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},e.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,r=0;t0){var o,a=s.str.charAt(0);a in s.node.edges?o=s.node.edges[a]:(o=new e.TokenSet,s.node.edges[a]=o),1==s.str.length&&(o["final"]=!0),n.push({node:o,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(0!=s.editsRemaining){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new e.TokenSet;s.node.edges["*"]=u}if(0==s.str.length&&(u["final"]=!0),n.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&n.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),1==s.str.length&&(s.node["final"]=!0),s.str.length>=1){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new e.TokenSet;s.node.edges["*"]=l}1==s.str.length&&(l["final"]=!0),n.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var c,h=s.str.charAt(0),d=s.str.charAt(1);d in s.node.edges?c=s.node.edges[d]:(c=new e.TokenSet,s.node.edges[d]=c),1==s.str.length&&(c["final"]=!0),n.push({node:c,editsRemaining:s.editsRemaining-1,str:h+s.str.slice(2)})}}}return i},e.TokenSet.fromString=function(t){for(var r=new e.TokenSet,i=r,n=0,s=t.length;n=e;t--){var r=this.uncheckedNodes[t],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()}},e.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},e.Index.prototype.search=function(t){return this.query(function(r){var i=new e.QueryParser(t,r);i.parse()})},e.Index.prototype.query=function(t){for(var r=new e.Query(this.fields),i=Object.create(null),n=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),u=0;u1?this._b=1:this._b=e},e.Builder.prototype.k1=function(e){this._k1=e},e.Builder.prototype.add=function(t,r){var i=t[this._ref],n=Object.keys(this._fields);this._documents[i]=r||{},this.documentCount+=1;for(var s=0;s=this.length)return e.QueryLexer.EOS;var t=this.str.charAt(this.pos);return this.pos+=1,t},e.QueryLexer.prototype.width=function(){return this.pos-this.start},e.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},e.QueryLexer.prototype.backup=function(){this.pos-=1},e.QueryLexer.prototype.acceptDigitRun=function(){var t,r;do t=this.next(),r=t.charCodeAt(0);while(r>47&&r<58);t!=e.QueryLexer.EOS&&this.backup()},e.QueryLexer.prototype.more=function(){return this.pos1&&(t.backup(),t.emit(e.QueryLexer.TERM)),t.ignore(),t.more())return e.QueryLexer.lexText},e.QueryLexer.lexEditDistance=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.EDIT_DISTANCE),e.QueryLexer.lexText},e.QueryLexer.lexBoost=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.BOOST),e.QueryLexer.lexText},e.QueryLexer.lexEOS=function(t){t.width()>0&&t.emit(e.QueryLexer.TERM)},e.QueryLexer.termSeparator=e.tokenizer.separator,e.QueryLexer.lexText=function(t){for(;;){var r=t.next();if(r==e.QueryLexer.EOS)return e.QueryLexer.lexEOS;if(92!=r.charCodeAt(0)){if(":"==r)return e.QueryLexer.lexField;if("~"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexEditDistance;if("^"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexBoost;if("+"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if("-"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if(r.match(e.QueryLexer.termSeparator))return e.QueryLexer.lexTerm}else t.escapeCharacter()}},e.QueryParser=function(t,r){this.lexer=new e.QueryLexer(t),this.query=r,this.currentClause={},this.lexemeIdx=0},e.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var t=e.QueryParser.parseClause;t;)t=t(this);return this.query},e.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},e.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},e.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},e.QueryParser.parseClause=function(t){var r=t.peekLexeme();if(void 0!=r)switch(r.type){case e.QueryLexer.PRESENCE:return e.QueryParser.parsePresence;case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expected either a field or a term, found "+r.type;throw r.str.length>=1&&(i+=" with value '"+r.str+"'"),new e.QueryParseError(i,r.start,r.end)}},e.QueryParser.parsePresence=function(t){var r=t.consumeLexeme();if(void 0!=r){switch(r.str){case"-":t.currentClause.presence=e.Query.presence.PROHIBITED;break;case"+":t.currentClause.presence=e.Query.presence.REQUIRED;break;default:var i="unrecognised presence operator'"+r.str+"'";throw new e.QueryParseError(i,r.start,r.end)}var n=t.peekLexeme();if(void 0==n){var i="expecting term or field, found nothing";throw new e.QueryParseError(i,r.start,r.end)}switch(n.type){case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expecting term or field, found '"+n.type+"'";throw new e.QueryParseError(i,n.start,n.end)}}},e.QueryParser.parseField=function(t){var r=t.consumeLexeme();if(void 0!=r){if(t.query.allFields.indexOf(r.str)==-1){var i=t.query.allFields.map(function(e){return"'"+e+"'"}).join(", "),n="unrecognised field '"+r.str+"', possible fields: "+i;throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.fields=[r.str];var s=t.peekLexeme();if(void 0==s){var n="expecting term, found nothing";throw new e.QueryParseError(n,r.start,r.end)}switch(s.type){case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var n="expecting term, found '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseTerm=function(t){var r=t.consumeLexeme();if(void 0!=r){t.currentClause.term=r.str.toLowerCase(),r.str.indexOf("*")!=-1&&(t.currentClause.usePipeline=!1);var i=t.peekLexeme();if(void 0==i)return void t.nextClause();switch(i.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+i.type+"'";throw new e.QueryParseError(n,i.start,i.end)}}},e.QueryParser.parseEditDistance=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="edit distance must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.editDistance=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseBoost=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="boost must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.boost=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():e.lunr=t()}(this,function(){return e})}(); +!(function () { + var e = function (t) { + var r = new e.Builder(); + return ( + r.pipeline.add(e.trimmer, e.stopWordFilter, e.stemmer), r.searchPipeline.add(e.stemmer), t.call(r, r), r.build() + ); + }; + (e.version = '2.3.9'), + (e.utils = {}), + (e.utils.warn = (function (e) { + return function (t) { + e.console && console.warn && console.warn(t); + }; + })(this)), + (e.utils.asString = function (e) { + return void 0 === e || null === e ? '' : e.toString(); + }), + (e.utils.clone = function (e) { + if (null === e || void 0 === e) return e; + for (var t = Object.create(null), r = Object.keys(e), i = 0; i < r.length; i++) { + var n = r[i], + s = e[n]; + if (Array.isArray(s)) t[n] = s.slice(); + else { + if ('string' != typeof s && 'number' != typeof s && 'boolean' != typeof s) + throw new TypeError('clone is not deep and does not support nested objects'); + t[n] = s; + } + } + return t; + }), + (e.FieldRef = function (e, t, r) { + (this.docRef = e), (this.fieldName = t), (this._stringValue = r); + }), + (e.FieldRef.joiner = '/'), + (e.FieldRef.fromString = function (t) { + var r = t.indexOf(e.FieldRef.joiner); + if (r === -1) throw 'malformed field ref string'; + var i = t.slice(0, r), + n = t.slice(r + 1); + return new e.FieldRef(n, i, t); + }), + (e.FieldRef.prototype.toString = function () { + return ( + void 0 == this._stringValue && (this._stringValue = this.fieldName + e.FieldRef.joiner + this.docRef), + this._stringValue + ); + }), + (e.Set = function (e) { + if (((this.elements = Object.create(null)), e)) { + this.length = e.length; + for (var t = 0; t < this.length; t++) this.elements[e[t]] = !0; + } else this.length = 0; + }), + (e.Set.complete = { + intersect: function (e) { + return e; + }, + union: function () { + return this; + }, + contains: function () { + return !0; + } + }), + (e.Set.empty = { + intersect: function () { + return this; + }, + union: function (e) { + return e; + }, + contains: function () { + return !1; + } + }), + (e.Set.prototype.contains = function (e) { + return !!this.elements[e]; + }), + (e.Set.prototype.intersect = function (t) { + var r, + i, + n, + s = []; + if (t === e.Set.complete) return this; + if (t === e.Set.empty) return t; + this.length < t.length ? ((r = this), (i = t)) : ((r = t), (i = this)), (n = Object.keys(r.elements)); + for (var o = 0; o < n.length; o++) { + var a = n[o]; + a in i.elements && s.push(a); + } + return new e.Set(s); + }), + (e.Set.prototype.union = function (t) { + return t === e.Set.complete + ? e.Set.complete + : t === e.Set.empty + ? this + : new e.Set(Object.keys(this.elements).concat(Object.keys(t.elements))); + }), + (e.idf = function (e, t) { + var r = 0; + for (var i in e) '_index' != i && (r += Object.keys(e[i]).length); + var n = (t - r + 0.5) / (r + 0.5); + return Math.log(1 + Math.abs(n)); + }), + (e.Token = function (e, t) { + (this.str = e || ''), (this.metadata = t || {}); + }), + (e.Token.prototype.toString = function () { + return this.str; + }), + (e.Token.prototype.update = function (e) { + return (this.str = e(this.str, this.metadata)), this; + }), + (e.Token.prototype.clone = function (t) { + return ( + (t = + t || + function (e) { + return e; + }), + new e.Token(t(this.str, this.metadata), this.metadata) + ); + }), + (e.tokenizer = function (t, r) { + if (null == t || void 0 == t) return []; + if (Array.isArray(t)) + return t.map(function (t) { + return new e.Token(e.utils.asString(t).toLowerCase(), e.utils.clone(r)); + }); + for (var i = t.toString().toLowerCase(), n = i.length, s = [], o = 0, a = 0; o <= n; o++) { + var u = i.charAt(o), + l = o - a; + if (u.match(e.tokenizer.separator) || o == n) { + if (l > 0) { + var c = e.utils.clone(r) || {}; + (c.position = [a, l]), (c.index = s.length), s.push(new e.Token(i.slice(a, o), c)); + } + a = o + 1; + } + } + return s; + }), + (e.tokenizer.separator = /[\s\-]+/), + (e.Pipeline = function () { + this._stack = []; + }), + (e.Pipeline.registeredFunctions = Object.create(null)), + (e.Pipeline.registerFunction = function (t, r) { + r in this.registeredFunctions && e.utils.warn('Overwriting existing registered function: ' + r), + (t.label = r), + (e.Pipeline.registeredFunctions[t.label] = t); + }), + (e.Pipeline.warnIfFunctionNotRegistered = function (t) { + var r = t.label && t.label in this.registeredFunctions; + r || + e.utils.warn( + 'Function is not registered with pipeline. This may cause problems when serialising the index.\n', + t + ); + }), + (e.Pipeline.load = function (t) { + var r = new e.Pipeline(); + return ( + t.forEach(function (t) { + var i = e.Pipeline.registeredFunctions[t]; + if (!i) throw new Error('Cannot load unregistered function: ' + t); + r.add(i); + }), + r + ); + }), + (e.Pipeline.prototype.add = function () { + var t = Array.prototype.slice.call(arguments); + t.forEach(function (t) { + e.Pipeline.warnIfFunctionNotRegistered(t), this._stack.push(t); + }, this); + }), + (e.Pipeline.prototype.after = function (t, r) { + e.Pipeline.warnIfFunctionNotRegistered(r); + var i = this._stack.indexOf(t); + if (i == -1) throw new Error('Cannot find existingFn'); + (i += 1), this._stack.splice(i, 0, r); + }), + (e.Pipeline.prototype.before = function (t, r) { + e.Pipeline.warnIfFunctionNotRegistered(r); + var i = this._stack.indexOf(t); + if (i == -1) throw new Error('Cannot find existingFn'); + this._stack.splice(i, 0, r); + }), + (e.Pipeline.prototype.remove = function (e) { + var t = this._stack.indexOf(e); + t != -1 && this._stack.splice(t, 1); + }), + (e.Pipeline.prototype.run = function (e) { + for (var t = this._stack.length, r = 0; r < t; r++) { + for (var i = this._stack[r], n = [], s = 0; s < e.length; s++) { + var o = i(e[s], s, e); + if (null !== o && void 0 !== o && '' !== o) + if (Array.isArray(o)) for (var a = 0; a < o.length; a++) n.push(o[a]); + else n.push(o); + } + e = n; + } + return e; + }), + (e.Pipeline.prototype.runString = function (t, r) { + var i = new e.Token(t, r); + return this.run([i]).map(function (e) { + return e.toString(); + }); + }), + (e.Pipeline.prototype.reset = function () { + this._stack = []; + }), + (e.Pipeline.prototype.toJSON = function () { + return this._stack.map(function (t) { + return e.Pipeline.warnIfFunctionNotRegistered(t), t.label; + }); + }), + (e.Vector = function (e) { + (this._magnitude = 0), (this.elements = e || []); + }), + (e.Vector.prototype.positionForIndex = function (e) { + if (0 == this.elements.length) return 0; + for ( + var t = 0, r = this.elements.length / 2, i = r - t, n = Math.floor(i / 2), s = this.elements[2 * n]; + i > 1 && (s < e && (t = n), s > e && (r = n), s != e); + + ) + (i = r - t), (n = t + Math.floor(i / 2)), (s = this.elements[2 * n]); + return s == e ? 2 * n : s > e ? 2 * n : s < e ? 2 * (n + 1) : void 0; + }), + (e.Vector.prototype.insert = function (e, t) { + this.upsert(e, t, function () { + throw 'duplicate index'; + }); + }), + (e.Vector.prototype.upsert = function (e, t, r) { + this._magnitude = 0; + var i = this.positionForIndex(e); + this.elements[i] == e ? (this.elements[i + 1] = r(this.elements[i + 1], t)) : this.elements.splice(i, 0, e, t); + }), + (e.Vector.prototype.magnitude = function () { + if (this._magnitude) return this._magnitude; + for (var e = 0, t = this.elements.length, r = 1; r < t; r += 2) { + var i = this.elements[r]; + e += i * i; + } + return (this._magnitude = Math.sqrt(e)); + }), + (e.Vector.prototype.dot = function (e) { + for ( + var t = 0, r = this.elements, i = e.elements, n = r.length, s = i.length, o = 0, a = 0, u = 0, l = 0; + u < n && l < s; + + ) + (o = r[u]), + (a = i[l]), + o < a ? (u += 2) : o > a ? (l += 2) : o == a && ((t += r[u + 1] * i[l + 1]), (u += 2), (l += 2)); + return t; + }), + (e.Vector.prototype.similarity = function (e) { + return this.dot(e) / this.magnitude() || 0; + }), + (e.Vector.prototype.toArray = function () { + for (var e = new Array(this.elements.length / 2), t = 1, r = 0; t < this.elements.length; t += 2, r++) + e[r] = this.elements[t]; + return e; + }), + (e.Vector.prototype.toJSON = function () { + return this.elements; + }), + (e.stemmer = (function () { + var e = { + ational: 'ate', + tional: 'tion', + enci: 'ence', + anci: 'ance', + izer: 'ize', + bli: 'ble', + alli: 'al', + entli: 'ent', + eli: 'e', + ousli: 'ous', + ization: 'ize', + ation: 'ate', + ator: 'ate', + alism: 'al', + iveness: 'ive', + fulness: 'ful', + ousness: 'ous', + aliti: 'al', + iviti: 'ive', + biliti: 'ble', + logi: 'log' + }, + t = { icate: 'ic', ative: '', alize: 'al', iciti: 'ic', ical: 'ic', ful: '', ness: '' }, + r = '[^aeiou]', + i = '[aeiouy]', + n = r + '[^aeiouy]*', + s = i + '[aeiou]*', + o = '^(' + n + ')?' + s + n, + a = '^(' + n + ')?' + s + n + '(' + s + ')?$', + u = '^(' + n + ')?' + s + n + s + n, + l = '^(' + n + ')?' + i, + c = new RegExp(o), + h = new RegExp(u), + d = new RegExp(a), + f = new RegExp(l), + p = /^(.+?)(ss|i)es$/, + y = /^(.+?)([^s])s$/, + m = /^(.+?)eed$/, + v = /^(.+?)(ed|ing)$/, + g = /.$/, + x = /(at|bl|iz)$/, + w = new RegExp('([^aeiouylsz])\\1$'), + Q = new RegExp('^' + n + i + '[^aeiouwxy]$'), + k = /^(.+?[^aeiou])y$/, + S = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/, + E = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/, + L = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/, + b = /^(.+?)(s|t)(ion)$/, + P = /^(.+?)e$/, + T = /ll$/, + O = new RegExp('^' + n + i + '[^aeiouwxy]$'), + I = function (r) { + var i, n, s, o, a, u, l; + if (r.length < 3) return r; + if ( + ((s = r.substr(0, 1)), + 'y' == s && (r = s.toUpperCase() + r.substr(1)), + (o = p), + (a = y), + o.test(r) ? (r = r.replace(o, '$1$2')) : a.test(r) && (r = r.replace(a, '$1$2')), + (o = m), + (a = v), + o.test(r)) + ) { + var I = o.exec(r); + (o = c), o.test(I[1]) && ((o = g), (r = r.replace(o, ''))); + } else if (a.test(r)) { + var I = a.exec(r); + (i = I[1]), + (a = f), + a.test(i) && + ((r = i), + (a = x), + (u = w), + (l = Q), + a.test(r) ? (r += 'e') : u.test(r) ? ((o = g), (r = r.replace(o, ''))) : l.test(r) && (r += 'e')); + } + if (((o = k), o.test(r))) { + var I = o.exec(r); + (i = I[1]), (r = i + 'i'); + } + if (((o = S), o.test(r))) { + var I = o.exec(r); + (i = I[1]), (n = I[2]), (o = c), o.test(i) && (r = i + e[n]); + } + if (((o = E), o.test(r))) { + var I = o.exec(r); + (i = I[1]), (n = I[2]), (o = c), o.test(i) && (r = i + t[n]); + } + if (((o = L), (a = b), o.test(r))) { + var I = o.exec(r); + (i = I[1]), (o = h), o.test(i) && (r = i); + } else if (a.test(r)) { + var I = a.exec(r); + (i = I[1] + I[2]), (a = h), a.test(i) && (r = i); + } + if (((o = P), o.test(r))) { + var I = o.exec(r); + (i = I[1]), (o = h), (a = d), (u = O), (o.test(i) || (a.test(i) && !u.test(i))) && (r = i); + } + return ( + (o = T), + (a = h), + o.test(r) && a.test(r) && ((o = g), (r = r.replace(o, ''))), + 'y' == s && (r = s.toLowerCase() + r.substr(1)), + r + ); + }; + return function (e) { + return e.update(I); + }; + })()), + e.Pipeline.registerFunction(e.stemmer, 'stemmer'), + (e.generateStopWordFilter = function (e) { + var t = e.reduce(function (e, t) { + return (e[t] = t), e; + }, {}); + return function (e) { + if (e && t[e.toString()] !== e.toString()) return e; + }; + }), + (e.stopWordFilter = e.generateStopWordFilter([ + 'a', + 'able', + 'about', + 'across', + 'after', + 'all', + 'almost', + 'also', + 'am', + 'among', + 'an', + 'and', + 'any', + 'are', + 'as', + 'at', + 'be', + 'because', + 'been', + 'but', + 'by', + 'can', + 'cannot', + 'could', + 'dear', + 'did', + 'do', + 'does', + 'either', + 'else', + 'ever', + 'every', + 'for', + 'from', + 'get', + 'got', + 'had', + 'has', + 'have', + 'he', + 'her', + 'hers', + 'him', + 'his', + 'how', + 'however', + 'i', + 'if', + 'in', + 'into', + 'is', + 'it', + 'its', + 'just', + 'least', + 'let', + 'like', + 'likely', + 'may', + 'me', + 'might', + 'most', + 'must', + 'my', + 'neither', + 'no', + 'nor', + 'not', + 'of', + 'off', + 'often', + 'on', + 'only', + 'or', + 'other', + 'our', + 'own', + 'rather', + 'said', + 'say', + 'says', + 'she', + 'should', + 'since', + 'so', + 'some', + 'than', + 'that', + 'the', + 'their', + 'them', + 'then', + 'there', + 'these', + 'they', + 'this', + 'tis', + 'to', + 'too', + 'twas', + 'us', + 'wants', + 'was', + 'we', + 'were', + 'what', + 'when', + 'where', + 'which', + 'while', + 'who', + 'whom', + 'why', + 'will', + 'with', + 'would', + 'yet', + 'you', + 'your' + ])), + e.Pipeline.registerFunction(e.stopWordFilter, 'stopWordFilter'), + (e.trimmer = function (e) { + return e.update(function (e) { + return e.replace(/^\W+/, '').replace(/\W+$/, ''); + }); + }), + e.Pipeline.registerFunction(e.trimmer, 'trimmer'), + (e.TokenSet = function () { + (this['final'] = !1), (this.edges = {}), (this.id = e.TokenSet._nextId), (e.TokenSet._nextId += 1); + }), + (e.TokenSet._nextId = 1), + (e.TokenSet.fromArray = function (t) { + for (var r = new e.TokenSet.Builder(), i = 0, n = t.length; i < n; i++) r.insert(t[i]); + return r.finish(), r.root; + }), + (e.TokenSet.fromClause = function (t) { + return 'editDistance' in t ? e.TokenSet.fromFuzzyString(t.term, t.editDistance) : e.TokenSet.fromString(t.term); + }), + (e.TokenSet.fromFuzzyString = function (t, r) { + for (var i = new e.TokenSet(), n = [{ node: i, editsRemaining: r, str: t }]; n.length; ) { + var s = n.pop(); + if (s.str.length > 0) { + var o, + a = s.str.charAt(0); + a in s.node.edges ? (o = s.node.edges[a]) : ((o = new e.TokenSet()), (s.node.edges[a] = o)), + 1 == s.str.length && (o['final'] = !0), + n.push({ node: o, editsRemaining: s.editsRemaining, str: s.str.slice(1) }); + } + if (0 != s.editsRemaining) { + if ('*' in s.node.edges) var u = s.node.edges['*']; + else { + var u = new e.TokenSet(); + s.node.edges['*'] = u; + } + if ( + (0 == s.str.length && (u['final'] = !0), + n.push({ node: u, editsRemaining: s.editsRemaining - 1, str: s.str }), + s.str.length > 1 && n.push({ node: s.node, editsRemaining: s.editsRemaining - 1, str: s.str.slice(1) }), + 1 == s.str.length && (s.node['final'] = !0), + s.str.length >= 1) + ) { + if ('*' in s.node.edges) var l = s.node.edges['*']; + else { + var l = new e.TokenSet(); + s.node.edges['*'] = l; + } + 1 == s.str.length && (l['final'] = !0), + n.push({ node: l, editsRemaining: s.editsRemaining - 1, str: s.str.slice(1) }); + } + if (s.str.length > 1) { + var c, + h = s.str.charAt(0), + d = s.str.charAt(1); + d in s.node.edges ? (c = s.node.edges[d]) : ((c = new e.TokenSet()), (s.node.edges[d] = c)), + 1 == s.str.length && (c['final'] = !0), + n.push({ node: c, editsRemaining: s.editsRemaining - 1, str: h + s.str.slice(2) }); + } + } + } + return i; + }), + (e.TokenSet.fromString = function (t) { + for (var r = new e.TokenSet(), i = r, n = 0, s = t.length; n < s; n++) { + var o = t[n], + a = n == s - 1; + if ('*' == o) (r.edges[o] = r), (r['final'] = a); + else { + var u = new e.TokenSet(); + (u['final'] = a), (r.edges[o] = u), (r = u); + } + } + return i; + }), + (e.TokenSet.prototype.toArray = function () { + for (var e = [], t = [{ prefix: '', node: this }]; t.length; ) { + var r = t.pop(), + i = Object.keys(r.node.edges), + n = i.length; + r.node['final'] && (r.prefix.charAt(0), e.push(r.prefix)); + for (var s = 0; s < n; s++) { + var o = i[s]; + t.push({ prefix: r.prefix.concat(o), node: r.node.edges[o] }); + } + } + return e; + }), + (e.TokenSet.prototype.toString = function () { + if (this._str) return this._str; + for (var e = this['final'] ? '1' : '0', t = Object.keys(this.edges).sort(), r = t.length, i = 0; i < r; i++) { + var n = t[i], + s = this.edges[n]; + e = e + n + s.id; + } + return e; + }), + (e.TokenSet.prototype.intersect = function (t) { + for (var r = new e.TokenSet(), i = void 0, n = [{ qNode: t, output: r, node: this }]; n.length; ) { + i = n.pop(); + for ( + var s = Object.keys(i.qNode.edges), o = s.length, a = Object.keys(i.node.edges), u = a.length, l = 0; + l < o; + l++ + ) + for (var c = s[l], h = 0; h < u; h++) { + var d = a[h]; + if (d == c || '*' == c) { + var f = i.node.edges[d], + p = i.qNode.edges[c], + y = f['final'] && p['final'], + m = void 0; + d in i.output.edges + ? ((m = i.output.edges[d]), (m['final'] = m['final'] || y)) + : ((m = new e.TokenSet()), (m['final'] = y), (i.output.edges[d] = m)), + n.push({ qNode: p, output: m, node: f }); + } + } + } + return r; + }), + (e.TokenSet.Builder = function () { + (this.previousWord = ''), (this.root = new e.TokenSet()), (this.uncheckedNodes = []), (this.minimizedNodes = {}); + }), + (e.TokenSet.Builder.prototype.insert = function (t) { + var r, + i = 0; + if (t < this.previousWord) throw new Error('Out of order word insertion'); + for (var n = 0; n < t.length && n < this.previousWord.length && t[n] == this.previousWord[n]; n++) i++; + this.minimize(i), + (r = 0 == this.uncheckedNodes.length ? this.root : this.uncheckedNodes[this.uncheckedNodes.length - 1].child); + for (var n = i; n < t.length; n++) { + var s = new e.TokenSet(), + o = t[n]; + (r.edges[o] = s), this.uncheckedNodes.push({ parent: r, char: o, child: s }), (r = s); + } + (r['final'] = !0), (this.previousWord = t); + }), + (e.TokenSet.Builder.prototype.finish = function () { + this.minimize(0); + }), + (e.TokenSet.Builder.prototype.minimize = function (e) { + for (var t = this.uncheckedNodes.length - 1; t >= e; t--) { + var r = this.uncheckedNodes[t], + 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(); + } + }), + (e.Index = function (e) { + (this.invertedIndex = e.invertedIndex), + (this.fieldVectors = e.fieldVectors), + (this.tokenSet = e.tokenSet), + (this.fields = e.fields), + (this.pipeline = e.pipeline); + }), + (e.Index.prototype.search = function (t) { + return this.query(function (r) { + var i = new e.QueryParser(t, r); + i.parse(); + }); + }), + (e.Index.prototype.query = function (t) { + for ( + var r = new e.Query(this.fields), + i = Object.create(null), + n = Object.create(null), + s = Object.create(null), + o = Object.create(null), + a = Object.create(null), + u = 0; + u < this.fields.length; + u++ + ) + n[this.fields[u]] = new e.Vector(); + t.call(r, r); + for (var u = 0; u < r.clauses.length; u++) { + var l = r.clauses[u], + c = null, + h = e.Set.empty; + c = l.usePipeline ? this.pipeline.runString(l.term, { fields: l.fields }) : [l.term]; + for (var d = 0; d < c.length; d++) { + var f = c[d]; + l.term = f; + var p = e.TokenSet.fromClause(l), + y = this.tokenSet.intersect(p).toArray(); + if (0 === y.length && l.presence === e.Query.presence.REQUIRED) { + for (var m = 0; m < l.fields.length; m++) { + var v = l.fields[m]; + o[v] = e.Set.empty; + } + break; + } + for (var g = 0; g < y.length; g++) + for (var x = y[g], w = this.invertedIndex[x], Q = w._index, m = 0; m < l.fields.length; m++) { + var v = l.fields[m], + k = w[v], + S = Object.keys(k), + E = x + '/' + v, + L = new e.Set(S); + if ( + (l.presence == e.Query.presence.REQUIRED && + ((h = h.union(L)), void 0 === o[v] && (o[v] = e.Set.complete)), + l.presence != e.Query.presence.PROHIBITED) + ) { + if ( + (n[v].upsert(Q, l.boost, function (e, t) { + return e + t; + }), + !s[E]) + ) { + for (var b = 0; b < S.length; b++) { + var P, + T = S[b], + O = new e.FieldRef(T, v), + I = k[T]; + void 0 === (P = i[O]) ? (i[O] = new e.MatchData(x, v, I)) : P.add(x, v, I); + } + s[E] = !0; + } + } else void 0 === a[v] && (a[v] = e.Set.empty), (a[v] = a[v].union(L)); + } + } + if (l.presence === e.Query.presence.REQUIRED) + for (var m = 0; m < l.fields.length; m++) { + var v = l.fields[m]; + o[v] = o[v].intersect(h); + } + } + for (var R = e.Set.complete, F = e.Set.empty, u = 0; u < this.fields.length; u++) { + var v = this.fields[u]; + o[v] && (R = R.intersect(o[v])), a[v] && (F = F.union(a[v])); + } + var C = Object.keys(i), + N = [], + _ = Object.create(null); + if (r.isNegated()) { + C = Object.keys(this.fieldVectors); + for (var u = 0; u < C.length; u++) { + var O = C[u], + j = e.FieldRef.fromString(O); + i[O] = new e.MatchData(); + } + } + for (var u = 0; u < C.length; u++) { + var j = e.FieldRef.fromString(C[u]), + D = j.docRef; + if (R.contains(D) && !F.contains(D)) { + var A, + B = this.fieldVectors[j], + V = n[j.fieldName].similarity(B); + if (void 0 !== (A = _[D])) (A.score += V), A.matchData.combine(i[j]); + else { + var z = { ref: D, score: V, matchData: i[j] }; + (_[D] = z), N.push(z); + } + } + } + return N.sort(function (e, t) { + return t.score - e.score; + }); + }), + (e.Index.prototype.toJSON = function () { + var t = Object.keys(this.invertedIndex) + .sort() + .map(function (e) { + return [e, this.invertedIndex[e]]; + }, this), + r = Object.keys(this.fieldVectors).map(function (e) { + return [e, this.fieldVectors[e].toJSON()]; + }, this); + return { + version: e.version, + fields: this.fields, + fieldVectors: r, + invertedIndex: t, + pipeline: this.pipeline.toJSON() + }; + }), + (e.Index.load = function (t) { + var r = {}, + i = {}, + n = t.fieldVectors, + s = Object.create(null), + o = t.invertedIndex, + a = new e.TokenSet.Builder(), + u = e.Pipeline.load(t.pipeline); + t.version != e.version && + e.utils.warn( + "Version mismatch when loading serialised index. Current version of lunr '" + + e.version + + "' does not match serialized index '" + + t.version + + "'" + ); + for (var l = 0; l < n.length; l++) { + var c = n[l], + h = c[0], + d = c[1]; + i[h] = new e.Vector(d); + } + for (var l = 0; l < o.length; l++) { + var c = o[l], + f = c[0], + p = c[1]; + a.insert(f), (s[f] = p); + } + return ( + a.finish(), + (r.fields = t.fields), + (r.fieldVectors = i), + (r.invertedIndex = s), + (r.tokenSet = a.root), + (r.pipeline = u), + new e.Index(r) + ); + }), + (e.Builder = function () { + (this._ref = 'id'), + (this._fields = Object.create(null)), + (this._documents = Object.create(null)), + (this.invertedIndex = Object.create(null)), + (this.fieldTermFrequencies = {}), + (this.fieldLengths = {}), + (this.tokenizer = e.tokenizer), + (this.pipeline = new e.Pipeline()), + (this.searchPipeline = new e.Pipeline()), + (this.documentCount = 0), + (this._b = 0.75), + (this._k1 = 1.2), + (this.termIndex = 0), + (this.metadataWhitelist = []); + }), + (e.Builder.prototype.ref = function (e) { + this._ref = e; + }), + (e.Builder.prototype.field = function (e, t) { + if (/\//.test(e)) throw new RangeError("Field '" + e + "' contains illegal character '/'"); + this._fields[e] = t || {}; + }), + (e.Builder.prototype.b = function (e) { + e < 0 ? (this._b = 0) : e > 1 ? (this._b = 1) : (this._b = e); + }), + (e.Builder.prototype.k1 = function (e) { + this._k1 = e; + }), + (e.Builder.prototype.add = function (t, r) { + var i = t[this._ref], + n = Object.keys(this._fields); + (this._documents[i] = r || {}), (this.documentCount += 1); + for (var s = 0; s < n.length; s++) { + var o = n[s], + a = this._fields[o].extractor, + u = a ? a(t) : t[o], + l = this.tokenizer(u, { fields: [o] }), + c = this.pipeline.run(l), + h = new e.FieldRef(i, o), + d = Object.create(null); + (this.fieldTermFrequencies[h] = d), (this.fieldLengths[h] = 0), (this.fieldLengths[h] += c.length); + for (var f = 0; f < c.length; f++) { + var p = c[f]; + if ((void 0 == d[p] && (d[p] = 0), (d[p] += 1), void 0 == this.invertedIndex[p])) { + var y = Object.create(null); + (y._index = this.termIndex), (this.termIndex += 1); + for (var m = 0; m < n.length; m++) y[n[m]] = Object.create(null); + this.invertedIndex[p] = y; + } + void 0 == this.invertedIndex[p][o][i] && (this.invertedIndex[p][o][i] = Object.create(null)); + for (var v = 0; v < this.metadataWhitelist.length; v++) { + var g = this.metadataWhitelist[v], + x = p.metadata[g]; + void 0 == this.invertedIndex[p][o][i][g] && (this.invertedIndex[p][o][i][g] = []), + this.invertedIndex[p][o][i][g].push(x); + } + } + } + }), + (e.Builder.prototype.calculateAverageFieldLengths = function () { + for (var t = Object.keys(this.fieldLengths), r = t.length, i = {}, n = {}, s = 0; s < r; s++) { + var o = e.FieldRef.fromString(t[s]), + a = o.fieldName; + n[a] || (n[a] = 0), (n[a] += 1), i[a] || (i[a] = 0), (i[a] += this.fieldLengths[o]); + } + for (var u = Object.keys(this._fields), s = 0; s < u.length; s++) { + var l = u[s]; + i[l] = i[l] / n[l]; + } + this.averageFieldLength = i; + }), + (e.Builder.prototype.createFieldVectors = function () { + for ( + var t = {}, r = Object.keys(this.fieldTermFrequencies), i = r.length, n = Object.create(null), s = 0; + s < i; + s++ + ) { + for ( + var o = e.FieldRef.fromString(r[s]), + a = o.fieldName, + u = this.fieldLengths[o], + l = new e.Vector(), + c = this.fieldTermFrequencies[o], + h = Object.keys(c), + d = h.length, + f = this._fields[a].boost || 1, + p = this._documents[o.docRef].boost || 1, + y = 0; + y < d; + y++ + ) { + var m, + v, + g, + x = h[y], + w = c[x], + Q = this.invertedIndex[x]._index; + void 0 === n[x] ? ((m = e.idf(this.invertedIndex[x], this.documentCount)), (n[x] = m)) : (m = n[x]), + (v = + (m * ((this._k1 + 1) * w)) / (this._k1 * (1 - this._b + this._b * (u / this.averageFieldLength[a])) + w)), + (v *= f), + (v *= p), + (g = Math.round(1e3 * v) / 1e3), + l.insert(Q, g); + } + t[o] = l; + } + this.fieldVectors = t; + }), + (e.Builder.prototype.createTokenSet = function () { + this.tokenSet = e.TokenSet.fromArray(Object.keys(this.invertedIndex).sort()); + }), + (e.Builder.prototype.build = function () { + return ( + this.calculateAverageFieldLengths(), + this.createFieldVectors(), + this.createTokenSet(), + new e.Index({ + invertedIndex: this.invertedIndex, + fieldVectors: this.fieldVectors, + tokenSet: this.tokenSet, + fields: Object.keys(this._fields), + pipeline: this.searchPipeline + }) + ); + }), + (e.Builder.prototype.use = function (e) { + var t = Array.prototype.slice.call(arguments, 1); + t.unshift(this), e.apply(this, t); + }), + (e.MatchData = function (e, t, r) { + for (var i = Object.create(null), n = Object.keys(r || {}), s = 0; s < n.length; s++) { + var o = n[s]; + i[o] = r[o].slice(); + } + (this.metadata = Object.create(null)), + void 0 !== e && ((this.metadata[e] = Object.create(null)), (this.metadata[e][t] = i)); + }), + (e.MatchData.prototype.combine = function (e) { + for (var t = Object.keys(e.metadata), r = 0; r < t.length; r++) { + var i = t[r], + n = Object.keys(e.metadata[i]); + void 0 == this.metadata[i] && (this.metadata[i] = Object.create(null)); + for (var s = 0; s < n.length; s++) { + var o = n[s], + a = Object.keys(e.metadata[i][o]); + void 0 == this.metadata[i][o] && (this.metadata[i][o] = Object.create(null)); + for (var u = 0; u < a.length; u++) { + var l = a[u]; + void 0 == this.metadata[i][o][l] + ? (this.metadata[i][o][l] = e.metadata[i][o][l]) + : (this.metadata[i][o][l] = this.metadata[i][o][l].concat(e.metadata[i][o][l])); + } + } + } + }), + (e.MatchData.prototype.add = function (e, t, r) { + if (!(e in this.metadata)) return (this.metadata[e] = Object.create(null)), void (this.metadata[e][t] = r); + if (!(t in this.metadata[e])) return void (this.metadata[e][t] = r); + for (var i = Object.keys(r), n = 0; n < i.length; n++) { + var s = i[n]; + s in this.metadata[e][t] + ? (this.metadata[e][t][s] = this.metadata[e][t][s].concat(r[s])) + : (this.metadata[e][t][s] = r[s]); + } + }), + (e.Query = function (e) { + (this.clauses = []), (this.allFields = e); + }), + (e.Query.wildcard = new String('*')), + (e.Query.wildcard.NONE = 0), + (e.Query.wildcard.LEADING = 1), + (e.Query.wildcard.TRAILING = 2), + (e.Query.presence = { OPTIONAL: 1, REQUIRED: 2, PROHIBITED: 3 }), + (e.Query.prototype.clause = function (t) { + return ( + 'fields' in t || (t.fields = this.allFields), + 'boost' in t || (t.boost = 1), + 'usePipeline' in t || (t.usePipeline = !0), + 'wildcard' in t || (t.wildcard = e.Query.wildcard.NONE), + t.wildcard & e.Query.wildcard.LEADING && t.term.charAt(0) != e.Query.wildcard && (t.term = '*' + t.term), + t.wildcard & e.Query.wildcard.TRAILING && t.term.slice(-1) != e.Query.wildcard && (t.term = '' + t.term + '*'), + 'presence' in t || (t.presence = e.Query.presence.OPTIONAL), + this.clauses.push(t), + this + ); + }), + (e.Query.prototype.isNegated = function () { + for (var t = 0; t < this.clauses.length; t++) + if (this.clauses[t].presence != e.Query.presence.PROHIBITED) return !1; + return !0; + }), + (e.Query.prototype.term = function (t, r) { + if (Array.isArray(t)) + return ( + t.forEach(function (t) { + this.term(t, e.utils.clone(r)); + }, this), + this + ); + var i = r || {}; + return (i.term = t.toString()), this.clause(i), this; + }), + (e.QueryParseError = function (e, t, r) { + (this.name = 'QueryParseError'), (this.message = e), (this.start = t), (this.end = r); + }), + (e.QueryParseError.prototype = new Error()), + (e.QueryLexer = function (e) { + (this.lexemes = []), + (this.str = e), + (this.length = e.length), + (this.pos = 0), + (this.start = 0), + (this.escapeCharPositions = []); + }), + (e.QueryLexer.prototype.run = function () { + for (var t = e.QueryLexer.lexText; t; ) t = t(this); + }), + (e.QueryLexer.prototype.sliceString = function () { + for (var e = [], t = this.start, r = this.pos, i = 0; i < this.escapeCharPositions.length; i++) + (r = this.escapeCharPositions[i]), e.push(this.str.slice(t, r)), (t = r + 1); + return e.push(this.str.slice(t, this.pos)), (this.escapeCharPositions.length = 0), e.join(''); + }), + (e.QueryLexer.prototype.emit = function (e) { + this.lexemes.push({ type: e, str: this.sliceString(), start: this.start, end: this.pos }), + (this.start = this.pos); + }), + (e.QueryLexer.prototype.escapeCharacter = function () { + this.escapeCharPositions.push(this.pos - 1), (this.pos += 1); + }), + (e.QueryLexer.prototype.next = function () { + if (this.pos >= this.length) return e.QueryLexer.EOS; + var t = this.str.charAt(this.pos); + return (this.pos += 1), t; + }), + (e.QueryLexer.prototype.width = function () { + return this.pos - this.start; + }), + (e.QueryLexer.prototype.ignore = function () { + this.start == this.pos && (this.pos += 1), (this.start = this.pos); + }), + (e.QueryLexer.prototype.backup = function () { + this.pos -= 1; + }), + (e.QueryLexer.prototype.acceptDigitRun = function () { + var t, r; + do (t = this.next()), (r = t.charCodeAt(0)); + while (r > 47 && r < 58); + t != e.QueryLexer.EOS && this.backup(); + }), + (e.QueryLexer.prototype.more = function () { + return this.pos < this.length; + }), + (e.QueryLexer.EOS = 'EOS'), + (e.QueryLexer.FIELD = 'FIELD'), + (e.QueryLexer.TERM = 'TERM'), + (e.QueryLexer.EDIT_DISTANCE = 'EDIT_DISTANCE'), + (e.QueryLexer.BOOST = 'BOOST'), + (e.QueryLexer.PRESENCE = 'PRESENCE'), + (e.QueryLexer.lexField = function (t) { + return t.backup(), t.emit(e.QueryLexer.FIELD), t.ignore(), e.QueryLexer.lexText; + }), + (e.QueryLexer.lexTerm = function (t) { + if ((t.width() > 1 && (t.backup(), t.emit(e.QueryLexer.TERM)), t.ignore(), t.more())) return e.QueryLexer.lexText; + }), + (e.QueryLexer.lexEditDistance = function (t) { + return t.ignore(), t.acceptDigitRun(), t.emit(e.QueryLexer.EDIT_DISTANCE), e.QueryLexer.lexText; + }), + (e.QueryLexer.lexBoost = function (t) { + return t.ignore(), t.acceptDigitRun(), t.emit(e.QueryLexer.BOOST), e.QueryLexer.lexText; + }), + (e.QueryLexer.lexEOS = function (t) { + t.width() > 0 && t.emit(e.QueryLexer.TERM); + }), + (e.QueryLexer.termSeparator = e.tokenizer.separator), + (e.QueryLexer.lexText = function (t) { + for (;;) { + var r = t.next(); + if (r == e.QueryLexer.EOS) return e.QueryLexer.lexEOS; + if (92 != r.charCodeAt(0)) { + if (':' == r) return e.QueryLexer.lexField; + if ('~' == r) return t.backup(), t.width() > 0 && t.emit(e.QueryLexer.TERM), e.QueryLexer.lexEditDistance; + if ('^' == r) return t.backup(), t.width() > 0 && t.emit(e.QueryLexer.TERM), e.QueryLexer.lexBoost; + if ('+' == r && 1 === t.width()) return t.emit(e.QueryLexer.PRESENCE), e.QueryLexer.lexText; + if ('-' == r && 1 === t.width()) return t.emit(e.QueryLexer.PRESENCE), e.QueryLexer.lexText; + if (r.match(e.QueryLexer.termSeparator)) return e.QueryLexer.lexTerm; + } else t.escapeCharacter(); + } + }), + (e.QueryParser = function (t, r) { + (this.lexer = new e.QueryLexer(t)), (this.query = r), (this.currentClause = {}), (this.lexemeIdx = 0); + }), + (e.QueryParser.prototype.parse = function () { + this.lexer.run(), (this.lexemes = this.lexer.lexemes); + for (var t = e.QueryParser.parseClause; t; ) t = t(this); + return this.query; + }), + (e.QueryParser.prototype.peekLexeme = function () { + return this.lexemes[this.lexemeIdx]; + }), + (e.QueryParser.prototype.consumeLexeme = function () { + var e = this.peekLexeme(); + return (this.lexemeIdx += 1), e; + }), + (e.QueryParser.prototype.nextClause = function () { + var e = this.currentClause; + this.query.clause(e), (this.currentClause = {}); + }), + (e.QueryParser.parseClause = function (t) { + var r = t.peekLexeme(); + if (void 0 != r) + switch (r.type) { + case e.QueryLexer.PRESENCE: + return e.QueryParser.parsePresence; + case e.QueryLexer.FIELD: + return e.QueryParser.parseField; + case e.QueryLexer.TERM: + return e.QueryParser.parseTerm; + default: + var i = 'expected either a field or a term, found ' + r.type; + throw (r.str.length >= 1 && (i += " with value '" + r.str + "'"), new e.QueryParseError(i, r.start, r.end)); + } + }), + (e.QueryParser.parsePresence = function (t) { + var r = t.consumeLexeme(); + if (void 0 != r) { + switch (r.str) { + case '-': + t.currentClause.presence = e.Query.presence.PROHIBITED; + break; + case '+': + t.currentClause.presence = e.Query.presence.REQUIRED; + break; + default: + var i = "unrecognised presence operator'" + r.str + "'"; + throw new e.QueryParseError(i, r.start, r.end); + } + var n = t.peekLexeme(); + if (void 0 == n) { + var i = 'expecting term or field, found nothing'; + throw new e.QueryParseError(i, r.start, r.end); + } + switch (n.type) { + case e.QueryLexer.FIELD: + return e.QueryParser.parseField; + case e.QueryLexer.TERM: + return e.QueryParser.parseTerm; + default: + var i = "expecting term or field, found '" + n.type + "'"; + throw new e.QueryParseError(i, n.start, n.end); + } + } + }), + (e.QueryParser.parseField = function (t) { + var r = t.consumeLexeme(); + if (void 0 != r) { + if (t.query.allFields.indexOf(r.str) == -1) { + var i = t.query.allFields + .map(function (e) { + return "'" + e + "'"; + }) + .join(', '), + n = "unrecognised field '" + r.str + "', possible fields: " + i; + throw new e.QueryParseError(n, r.start, r.end); + } + t.currentClause.fields = [r.str]; + var s = t.peekLexeme(); + if (void 0 == s) { + var n = 'expecting term, found nothing'; + throw new e.QueryParseError(n, r.start, r.end); + } + switch (s.type) { + case e.QueryLexer.TERM: + return e.QueryParser.parseTerm; + default: + var n = "expecting term, found '" + s.type + "'"; + throw new e.QueryParseError(n, s.start, s.end); + } + } + }), + (e.QueryParser.parseTerm = function (t) { + var r = t.consumeLexeme(); + if (void 0 != r) { + (t.currentClause.term = r.str.toLowerCase()), r.str.indexOf('*') != -1 && (t.currentClause.usePipeline = !1); + var i = t.peekLexeme(); + if (void 0 == i) return void t.nextClause(); + switch (i.type) { + case e.QueryLexer.TERM: + return t.nextClause(), e.QueryParser.parseTerm; + case e.QueryLexer.FIELD: + return t.nextClause(), e.QueryParser.parseField; + case e.QueryLexer.EDIT_DISTANCE: + return e.QueryParser.parseEditDistance; + case e.QueryLexer.BOOST: + return e.QueryParser.parseBoost; + case e.QueryLexer.PRESENCE: + return t.nextClause(), e.QueryParser.parsePresence; + default: + var n = "Unexpected lexeme type '" + i.type + "'"; + throw new e.QueryParseError(n, i.start, i.end); + } + } + }), + (e.QueryParser.parseEditDistance = function (t) { + var r = t.consumeLexeme(); + if (void 0 != r) { + var i = parseInt(r.str, 10); + if (isNaN(i)) { + var n = 'edit distance must be numeric'; + throw new e.QueryParseError(n, r.start, r.end); + } + t.currentClause.editDistance = i; + var s = t.peekLexeme(); + if (void 0 == s) return void t.nextClause(); + switch (s.type) { + case e.QueryLexer.TERM: + return t.nextClause(), e.QueryParser.parseTerm; + case e.QueryLexer.FIELD: + return t.nextClause(), e.QueryParser.parseField; + case e.QueryLexer.EDIT_DISTANCE: + return e.QueryParser.parseEditDistance; + case e.QueryLexer.BOOST: + return e.QueryParser.parseBoost; + case e.QueryLexer.PRESENCE: + return t.nextClause(), e.QueryParser.parsePresence; + default: + var n = "Unexpected lexeme type '" + s.type + "'"; + throw new e.QueryParseError(n, s.start, s.end); + } + } + }), + (e.QueryParser.parseBoost = function (t) { + var r = t.consumeLexeme(); + if (void 0 != r) { + var i = parseInt(r.str, 10); + if (isNaN(i)) { + var n = 'boost must be numeric'; + throw new e.QueryParseError(n, r.start, r.end); + } + t.currentClause.boost = i; + var s = t.peekLexeme(); + if (void 0 == s) return void t.nextClause(); + switch (s.type) { + case e.QueryLexer.TERM: + return t.nextClause(), e.QueryParser.parseTerm; + case e.QueryLexer.FIELD: + return t.nextClause(), e.QueryParser.parseField; + case e.QueryLexer.EDIT_DISTANCE: + return e.QueryParser.parseEditDistance; + case e.QueryLexer.BOOST: + return e.QueryParser.parseBoost; + case e.QueryLexer.PRESENCE: + return t.nextClause(), e.QueryParser.parsePresence; + default: + var n = "Unexpected lexeme type '" + s.type + "'"; + throw new e.QueryParseError(n, s.start, s.end); + } + } + }), + (function (e, t) { + 'function' == typeof define && define.amd + ? define(t) + : 'object' == typeof exports + ? (module.exports = t()) + : (e.lunr = t()); + })(this, function () { + return e; + }); +})();