1
0
mirror of https://github.com/nextapps-de/flexsearch.git synced 2025-09-08 21:20:41 +02:00

update build system & bundler

This commit is contained in:
Thomas Wilkerling
2024-01-07 23:12:21 +01:00
parent c926b76430
commit 346999d22a
125 changed files with 19901 additions and 1392 deletions

979
dist/flexsearch.bundle.debug.js vendored Normal file
View File

@@ -0,0 +1,979 @@
/**!
* FlexSearch.js v0.7.39 (Bundle)
* Author and Copyright: Thomas Wilkerling
* Licence: Apache-2.0
* Hosted by Nextapps GmbH
* https://github.com/nextapps-de/flexsearch
*/
(function _factory(self){'use strict';
var t;
function u(a) {
return "undefined" !== typeof a ? a : !0;
}
function aa(a) {
const b = Array(a);
for (let c = 0; c < a; c++) {
b[c] = v();
}
return b;
}
function v() {
return Object.create(null);
}
function ba(a, b) {
return b.length - a.length;
}
function x(a) {
return "string" === typeof a;
}
function C(a) {
return "object" === typeof a;
}
function D(a) {
return "function" === typeof a;
}
;function ca(a, b) {
var c = da;
if (a && (b && (a = E(a, b)), this.H && (a = E(a, this.H)), this.J && 1 < a.length && (a = E(a, this.J)), c || "" === c)) {
b = a.split(c);
if (this.filter) {
a = this.filter;
c = b.length;
const d = [];
for (let e = 0, f = 0; e < c; e++) {
const h = b[e];
h && !a[h] && (d[f++] = h);
}
a = d;
} else {
a = b;
}
return a;
}
return a;
}
const da = /[\p{Z}\p{S}\p{P}\p{C}]+/u, ea = /[\u0300-\u036f]/g;
function fa(a, b) {
const c = Object.keys(a), d = c.length, e = [];
let f = "", h = 0;
for (let g = 0, k, m; g < d; g++) {
k = c[g], (m = a[k]) ? (e[h++] = F(b ? "(?!\\b)" + k + "(\\b|_)" : k), e[h++] = m) : f += (f ? "|" : "") + k;
}
f && (e[h++] = F(b ? "(?!\\b)(" + f + ")(\\b|_)" : "(" + f + ")"), e[h] = "");
return e;
}
function E(a, b) {
for (let c = 0, d = b.length; c < d && (a = a.replace(b[c], b[c + 1]), a); c += 2) {
}
return a;
}
function F(a) {
return new RegExp(a, "g");
}
function ha(a) {
let b = "", c = "";
for (let d = 0, e = a.length, f; d < e; d++) {
(f = a[d]) !== c && (b += c = f);
}
return b;
}
;var ja = {encode:ia, F:!1, G:""};
function ia(a) {
return ca.call(this, ("" + a).toLowerCase(), !1);
}
;const ka = {}, G = {};
function la(a) {
I(a, "add");
I(a, "append");
I(a, "search");
I(a, "update");
I(a, "remove");
}
function I(a, b) {
a[b + "Async"] = function() {
const c = this, d = arguments;
var e = d[d.length - 1];
let f;
D(e) && (f = e, delete d[d.length - 1]);
e = new Promise(function(h) {
setTimeout(function() {
c.async = !0;
const g = c[b].apply(c, d);
c.async = !1;
h(g);
});
});
return f ? (e.then(f), this) : e;
};
}
;function ma(a, b, c, d) {
const e = a.length;
let f = [], h, g, k = 0;
d && (d = []);
for (let m = e - 1; 0 <= m; m--) {
const n = a[m], w = n.length, q = v();
let r = !h;
for (let l = 0; l < w; l++) {
const p = n[l], A = p.length;
if (A) {
for (let B = 0, z, y; B < A; B++) {
if (y = p[B], h) {
if (h[y]) {
if (!m) {
if (c) {
c--;
} else {
if (f[k++] = y, k === b) {
return f;
}
}
}
if (m || d) {
q[y] = 1;
}
r = !0;
}
if (d && (z = (g[y] || 0) + 1, g[y] = z, z < e)) {
const H = d[z - 2] || (d[z - 2] = []);
H[H.length] = y;
}
} else {
q[y] = 1;
}
}
}
}
if (d) {
h || (g = q);
} else if (!r) {
return [];
}
h = q;
}
if (d) {
for (let m = d.length - 1, n, w; 0 <= m; m--) {
n = d[m];
w = n.length;
for (let q = 0, r; q < w; q++) {
if (r = n[q], !h[r]) {
if (c) {
c--;
} else {
if (f[k++] = r, k === b) {
return f;
}
}
h[r] = 1;
}
}
}
}
return f;
}
function na(a, b) {
const c = v(), d = v(), e = [];
for (let f = 0; f < a.length; f++) {
c[a[f]] = 1;
}
for (let f = 0, h; f < b.length; f++) {
h = b[f];
for (let g = 0, k; g < h.length; g++) {
k = h[g], c[k] && !d[k] && (d[k] = 1, e[e.length] = k);
}
}
return e;
}
;function J(a) {
this.l = !0 !== a && a;
this.cache = v();
this.h = [];
}
function oa(a, b, c) {
C(a) && (a = a.query);
let d = this.cache.get(a);
d || (d = this.search(a, b, c), this.cache.set(a, d));
return d;
}
J.prototype.set = function(a, b) {
if (!this.cache[a]) {
var c = this.h.length;
c === this.l ? delete this.cache[this.h[c - 1]] : c++;
for (--c; 0 < c; c--) {
this.h[c] = this.h[c - 1];
}
this.h[0] = a;
}
this.cache[a] = b;
};
J.prototype.get = function(a) {
const b = this.cache[a];
if (this.l && b && (a = this.h.indexOf(a))) {
const c = this.h[a - 1];
this.h[a - 1] = this.h[a];
this.h[a] = c;
}
return b;
};
const pa = {memory:{charset:"latin:extra", D:3, B:4, m:!1}, performance:{D:3, B:3, s:!1, context:{depth:2, D:1}}, match:{charset:"latin:extra", G:"reverse"}, score:{charset:"latin:advanced", D:20, B:3, context:{depth:3, D:9}}, "default":{}};
function ra(a, b, c, d, e, f, h, g) {
setTimeout(function() {
const k = a(c ? c + "." + d : d, JSON.stringify(h));
k && k.then ? k.then(function() {
b.export(a, b, c, e, f + 1, g);
}) : b.export(a, b, c, e, f + 1, g);
});
}
;function K(a, b) {
if (!(this instanceof K)) {
return new K(a);
}
var c;
if (a) {
if (x(a)) {
pa[a] || console.warn("Preset not found: " + a), a = pa[a];
} else {
if (c = a.preset) {
c[c] || console.warn("Preset not found: " + c), a = Object.assign({}, c[c], a);
}
}
c = a.charset;
var d = a.lang;
x(c) && (-1 === c.indexOf(":") && (c += ":default"), c = G[c]);
x(d) && (d = ka[d]);
} else {
a = {};
}
let e, f, h = a.context || {};
this.encode = a.encode || c && c.encode || ia;
this.register = b || v();
this.D = e = a.resolution || 9;
this.G = b = c && c.G || a.tokenize || "strict";
this.depth = "strict" === b && h.depth;
this.l = u(h.bidirectional);
this.s = f = u(a.optimize);
this.m = u(a.fastupdate);
this.B = a.minlength || 1;
this.C = a.boost;
this.map = f ? aa(e) : v();
this.A = e = h.resolution || 1;
this.h = f ? aa(e) : v();
this.F = c && c.F || a.rtl;
this.H = (b = a.matcher || d && d.H) && fa(b, !1);
this.J = (b = a.stemmer || d && d.J) && fa(b, !0);
if (c = b = a.filter || d && d.filter) {
c = b;
d = v();
for (let g = 0, k = c.length; g < k; g++) {
d[c[g]] = 1;
}
c = d;
}
this.filter = c;
this.cache = (b = a.cache) && new J(b);
}
t = K.prototype;
t.append = function(a, b) {
return this.add(a, b, !0);
};
t.add = function(a, b, c, d) {
if (b && (a || 0 === a)) {
if (!d && !c && this.register[a]) {
return this.update(a, b);
}
b = this.encode(b);
if (d = b.length) {
const m = v(), n = v(), w = this.depth, q = this.D;
for (let r = 0; r < d; r++) {
let l = b[this.F ? d - 1 - r : r];
var e = l.length;
if (l && e >= this.B && (w || !n[l])) {
var f = L(q, d, r), h = "";
switch(this.G) {
case "full":
if (2 < e) {
for (f = 0; f < e; f++) {
for (var g = e; g > f; g--) {
if (g - f >= this.B) {
var k = L(q, d, r, e, f);
h = l.substring(f, g);
M(this, n, h, k, a, c);
}
}
}
break;
}
case "reverse":
if (1 < e) {
for (g = e - 1; 0 < g; g--) {
h = l[g] + h, h.length >= this.B && M(this, n, h, L(q, d, r, e, g), a, c);
}
h = "";
}
case "forward":
if (1 < e) {
for (g = 0; g < e; g++) {
h += l[g], h.length >= this.B && M(this, n, h, f, a, c);
}
break;
}
default:
if (this.C && (f = Math.min(f / this.C(b, l, r) | 0, q - 1)), M(this, n, l, f, a, c), w && 1 < d && r < d - 1) {
for (e = v(), h = this.A, f = l, g = Math.min(w + 1, d - r), e[f] = 1, k = 1; k < g; k++) {
if ((l = b[this.F ? d - 1 - r - k : r + k]) && l.length >= this.B && !e[l]) {
e[l] = 1;
const p = this.l && l > f;
M(this, m, p ? f : l, L(h + (d / 2 > h ? 0 : 1), d, r, g - 1, k - 1), a, c, p ? l : f);
}
}
}
}
}
}
this.m || (this.register[a] = 1);
}
}
return this;
};
function L(a, b, c, d, e) {
return c && 1 < a ? b + (d || 0) <= a ? c + (e || 0) : (a - 1) / (b + (d || 0)) * (c + (e || 0)) + 1 | 0 : 0;
}
function M(a, b, c, d, e, f, h) {
let g = h ? a.h : a.map;
if (!b[c] || h && !b[c][h]) {
a.s && (g = g[d]), h ? (b = b[c] || (b[c] = v()), b[h] = 1, g = g[h] || (g[h] = v())) : b[c] = 1, g = g[c] || (g[c] = []), a.s || (g = g[d] || (g[d] = [])), f && g.includes(e) || (g[g.length] = e, a.m && (a = a.register[e] || (a.register[e] = []), a[a.length] = g));
}
}
t.search = function(a, b, c) {
c || (!b && C(a) ? (c = a, a = c.query) : C(b) && (c = b));
let d = [], e;
let f, h = 0;
if (c) {
a = c.query || a;
b = c.limit;
h = c.offset || 0;
var g = c.context;
f = c.suggest;
}
if (a && (a = this.encode("" + a), e = a.length, 1 < e)) {
c = v();
var k = [];
for (let n = 0, w = 0, q; n < e; n++) {
if ((q = a[n]) && q.length >= this.B && !c[q]) {
if (this.s || f || this.map[q]) {
k[w++] = q, c[q] = 1;
} else {
return d;
}
}
}
a = k;
e = a.length;
}
if (!e) {
return d;
}
b || (b = 100);
g = this.depth && 1 < e && !1 !== g;
c = 0;
let m;
g ? (m = a[0], c = 1) : 1 < e && a.sort(ba);
for (let n, w; c < e; c++) {
w = a[c];
g ? (n = sa(this, d, f, b, h, 2 === e, w, m), f && !1 === n && d.length || (m = w)) : n = sa(this, d, f, b, h, 1 === e, w);
if (n) {
return n;
}
if (f && c === e - 1) {
k = d.length;
if (!k) {
if (g) {
g = 0;
c = -1;
continue;
}
return d;
}
if (1 === k) {
return ta(d[0], b, h);
}
}
}
return ma(d, b, h, f);
};
function sa(a, b, c, d, e, f, h, g) {
let k = [], m = g ? a.h : a.map;
a.s || (m = ua(m, h, g, a.l));
if (m) {
let n = 0;
const w = Math.min(m.length, g ? a.A : a.D);
for (let q = 0, r = 0, l, p; q < w; q++) {
if (l = m[q]) {
if (a.s && (l = ua(l, h, g, a.l)), e && l && f && (p = l.length, p <= e ? (e -= p, l = null) : (l = l.slice(e), e = 0)), l && (k[n++] = l, f && (r += l.length, r >= d))) {
break;
}
}
}
if (n) {
if (f) {
return ta(k, d, 0);
}
b[b.length] = k;
return;
}
}
return !c && k;
}
function ta(a, b, c) {
a = 1 === a.length ? a[0] : [].concat.apply([], a);
return c || a.length > b ? a.slice(c, c + b) : a;
}
function ua(a, b, c, d) {
c ? (d = d && b > c, a = (a = a[d ? b : c]) && a[d ? c : b]) : a = a[b];
return a;
}
t.contain = function(a) {
return !!this.register[a];
};
t.update = function(a, b) {
return this.remove(a).add(a, b);
};
t.remove = function(a, b) {
const c = this.register[a];
if (c) {
if (this.m) {
for (let d = 0, e; d < c.length; d++) {
e = c[d], e.splice(e.indexOf(a), 1);
}
} else {
N(this.map, a, this.D, this.s), this.depth && N(this.h, a, this.A, this.s);
}
b || delete this.register[a];
if (this.cache) {
b = this.cache;
for (let d = 0, e, f; d < b.h.length; d++) {
f = b.h[d], e = b.cache[f], e.includes(a) && (b.h.splice(d--, 1), delete b.cache[f]);
}
}
}
return this;
};
function N(a, b, c, d, e) {
let f = 0;
if (a.constructor === Array) {
if (e) {
b = a.indexOf(b), -1 !== b ? 1 < a.length && (a.splice(b, 1), f++) : f++;
} else {
e = Math.min(a.length, c);
for (let h = 0, g; h < e; h++) {
if (g = a[h]) {
f = N(g, b, c, d, e), d || f || delete a[h];
}
}
}
} else {
for (let h in a) {
(f = N(a[h], b, c, d, e)) || delete a[h];
}
}
return f;
}
t.searchCache = oa;
t.export = function(a, b, c, d, e, f) {
let h = !0;
"undefined" === typeof f && (h = new Promise(m => {
f = m;
}));
let g, k;
switch(e || (e = 0)) {
case 0:
g = "reg";
if (this.m) {
k = v();
for (let m in this.register) {
k[m] = 1;
}
} else {
k = this.register;
}
break;
case 1:
g = "cfg";
k = {doc:0, opt:this.s ? 1 : 0};
break;
case 2:
g = "map";
k = this.map;
break;
case 3:
g = "ctx";
k = this.h;
break;
default:
"undefined" === typeof c && f && f();
return;
}
ra(a, b || this, c, g, d, e, k, f);
return h;
};
t.import = function(a, b) {
if (b) {
switch(x(b) && (b = JSON.parse(b)), a) {
case "cfg":
this.s = !!b.opt;
break;
case "reg":
this.m = !1;
this.register = b;
break;
case "map":
this.map = b;
break;
case "ctx":
this.h = b;
}
}
};
la(K.prototype);
function va(a) {
a = a.data;
var b = self._index;
const c = a.args;
var d = a.task;
switch(d) {
case "init":
d = a.options || {};
a = a.factory;
b = d.encode;
d.cache = !1;
b && 0 === b.indexOf("function") && (d.encode = Function("return " + b)());
a ? (Function("return " + a)()(self), self._index = new self.FlexSearch.Index(d), delete self.FlexSearch) : self._index = new K(d);
break;
default:
a = a.id, b = b[d].apply(b, c), postMessage("search" === d ? {id:a, msg:b} : {id:a});
}
}
;let wa = 0;
function O(a) {
if (!(this instanceof O)) {
return new O(a);
}
var b;
a ? D(b = a.encode) && (a.encode = b.toString()) : a = {};
(b = (self || window)._factory) && (b = b.toString());
const c = "undefined" === typeof window && self.exports, d = this;
this.o = xa(b, c, a.worker);
this.h = v();
if (this.o) {
if (c) {
this.o.on("message", function(e) {
d.h[e.id](e.msg);
delete d.h[e.id];
});
} else {
this.o.onmessage = function(e) {
e = e.data;
d.h[e.id](e.msg);
delete d.h[e.id];
};
}
this.o.postMessage({task:"init", factory:b, options:a});
}
}
P("add");
P("append");
P("search");
P("update");
P("remove");
function P(a) {
O.prototype[a] = O.prototype[a + "Async"] = function() {
const b = this, c = [].slice.call(arguments);
var d = c[c.length - 1];
let e;
D(d) && (e = d, c.splice(c.length - 1, 1));
d = new Promise(function(f) {
setTimeout(function() {
b.h[++wa] = f;
b.o.postMessage({task:a, id:wa, args:c});
});
});
return e ? (d.then(e), this) : d;
};
}
function xa(a, b, c) {
let d;
try {
d = b ? eval('new (require("worker_threads")["Worker"])("../dist/node/node.js")') : a ? new Worker(URL.createObjectURL(new Blob(["onmessage=" + va.toString()], {type:"text/javascript"}))) : new Worker(x(c) ? c : "worker/worker.js", {type:"module"});
} catch (e) {
}
return d;
}
;function Q(a) {
if (!(this instanceof Q)) {
return new Q(a);
}
var b = a.document || a.doc || a, c;
this.K = [];
this.h = [];
this.A = [];
this.register = v();
this.key = (c = b.key || b.id) && S(c, this.A) || "id";
this.m = u(a.fastupdate);
this.C = (c = b.store) && !0 !== c && [];
this.store = c && v();
this.I = (c = b.tag) && S(c, this.A);
this.l = c && v();
this.cache = (c = a.cache) && new J(c);
a.cache = !1;
this.o = a.worker;
this.async = !1;
c = v();
let d = b.index || b.field || b;
x(d) && (d = [d]);
for (let e = 0, f, h; e < d.length; e++) {
f = d[e], x(f) || (h = f, f = f.field), h = C(h) ? Object.assign({}, a, h) : a, this.o && (c[f] = new O(h), c[f].o || (this.o = !1)), this.o || (c[f] = new K(h, this.register)), this.K[e] = S(f, this.A), this.h[e] = f;
}
if (this.C) {
for (a = b.store, x(a) && (a = [a]), b = 0; b < a.length; b++) {
this.C[b] = S(a[b], this.A);
}
}
this.index = c;
}
function S(a, b) {
const c = a.split(":");
let d = 0;
for (let e = 0; e < c.length; e++) {
a = c[e], 0 <= a.indexOf("[]") && (a = a.substring(0, a.length - 2)) && (b[d] = !0), a && (c[d++] = a);
}
d < c.length && (c.length = d);
return 1 < d ? c : c[0];
}
function T(a, b) {
if (x(b)) {
a = a[b];
} else {
for (let c = 0; a && c < b.length; c++) {
a = a[b[c]];
}
}
return a;
}
function U(a, b, c, d, e) {
a = a[e];
if (d === c.length - 1) {
b[e] = a;
} else if (a) {
if (a.constructor === Array) {
for (b = b[e] = Array(a.length), e = 0; e < a.length; e++) {
U(a, b, c, d, e);
}
} else {
b = b[e] || (b[e] = v()), e = c[++d], U(a, b, c, d, e);
}
}
}
function V(a, b, c, d, e, f, h, g) {
if (a = a[h]) {
if (d === b.length - 1) {
if (a.constructor === Array) {
if (c[d]) {
for (b = 0; b < a.length; b++) {
e.add(f, a[b], !0, !0);
}
return;
}
a = a.join(" ");
}
e.add(f, a, g, !0);
} else {
if (a.constructor === Array) {
for (h = 0; h < a.length; h++) {
V(a, b, c, d, e, f, h, g);
}
} else {
h = b[++d], V(a, b, c, d, e, f, h, g);
}
}
}
}
t = Q.prototype;
t.add = function(a, b, c) {
C(a) && (b = a, a = T(b, this.key));
if (b && (a || 0 === a)) {
if (!c && this.register[a]) {
return this.update(a, b);
}
for (let d = 0, e, f; d < this.h.length; d++) {
f = this.h[d], e = this.K[d], x(e) && (e = [e]), V(b, e, this.A, 0, this.index[f], a, e[0], c);
}
if (this.I) {
let d = T(b, this.I), e = v();
x(d) && (d = [d]);
for (let f = 0, h, g; f < d.length; f++) {
if (h = d[f], !e[h] && (e[h] = 1, g = this.l[h] || (this.l[h] = []), !c || !g.includes(a))) {
if (g[g.length] = a, this.m) {
const k = this.register[a] || (this.register[a] = []);
k[k.length] = g;
}
}
}
}
if (this.store && (!c || !this.store[a])) {
let d;
if (this.C) {
d = v();
for (let e = 0, f; e < this.C.length; e++) {
f = this.C[e], x(f) ? d[f] = b[f] : U(b, d, f, 0, f[0]);
}
}
this.store[a] = d || b;
}
}
return this;
};
t.append = function(a, b) {
return this.add(a, b, !0);
};
t.update = function(a, b) {
return this.remove(a).add(a, b);
};
t.remove = function(a) {
C(a) && (a = T(a, this.key));
if (this.register[a]) {
for (var b = 0; b < this.h.length && (this.index[this.h[b]].remove(a, !this.o), !this.m); b++) {
}
if (this.I && !this.m) {
for (let c in this.l) {
b = this.l[c];
const d = b.indexOf(a);
-1 !== d && (1 < b.length ? b.splice(d, 1) : delete this.l[c]);
}
}
this.store && delete this.store[a];
delete this.register[a];
}
return this;
};
t.search = function(a, b, c, d) {
c || (!b && C(a) ? (c = a, a = "") : C(b) && (c = b, b = 0));
let e = [], f = [], h, g, k, m, n, w, q = 0;
if (c) {
if (c.constructor === Array) {
k = c, c = null;
} else {
a = c.query || a;
k = (h = c.pluck) || c.index || c.field;
m = c.tag;
g = this.store && c.enrich;
n = "and" === c.bool;
b = c.limit || b || 100;
w = c.offset || 0;
if (m && (x(m) && (m = [m]), !a)) {
for (let l = 0, p; l < m.length; l++) {
if (p = ya.call(this, m[l], b, w, g)) {
e[e.length] = p, q++;
}
}
return q ? e : [];
}
x(k) && (k = [k]);
}
}
k || (k = this.h);
n = n && (1 < k.length || m && 1 < m.length);
const r = !d && (this.o || this.async) && [];
for (let l = 0, p, A, B; l < k.length; l++) {
let z;
A = k[l];
x(A) || (z = A, A = z.field, a = z.query || a, b = z.limit || b, g = z.enrich || g);
if (r) {
r[l] = this.index[A].searchAsync(a, b, z || c);
} else {
d ? p = d[l] : p = this.index[A].search(a, b, z || c);
B = p && p.length;
if (m && B) {
const y = [];
let H = 0;
n && (y[0] = [p]);
for (let X = 0, qa, R; X < m.length; X++) {
if (qa = m[X], B = (R = this.l[qa]) && R.length) {
H++, y[y.length] = n ? [R] : R;
}
}
H && (p = n ? ma(y, b || 100, w || 0) : na(p, y), B = p.length);
}
if (B) {
f[q] = A, e[q++] = p;
} else if (n) {
return [];
}
}
}
if (r) {
const l = this;
return new Promise(function(p) {
Promise.all(r).then(function(A) {
p(l.search(a, b, c, A));
});
});
}
if (!q) {
return [];
}
if (h && (!g || !this.store)) {
return e[0];
}
for (let l = 0, p; l < f.length; l++) {
p = e[l];
p.length && g && (p = za.call(this, p));
if (h) {
return p;
}
e[l] = {field:f[l], result:p};
}
return e;
};
function ya(a, b, c, d) {
let e = this.l[a], f = e && e.length - c;
if (f && 0 < f) {
if (f > b || c) {
e = e.slice(c, c + b);
}
d && (e = za.call(this, e));
return {tag:a, result:e};
}
}
function za(a) {
const b = Array(a.length);
for (let c = 0, d; c < a.length; c++) {
d = a[c], b[c] = {id:d, doc:this.store[d]};
}
return b;
}
t.contain = function(a) {
return !!this.register[a];
};
t.get = function(a) {
return this.store[a];
};
t.set = function(a, b) {
this.store[a] = b;
return this;
};
t.searchCache = oa;
t.export = function(a, b, c, d, e, f) {
let h;
"undefined" === typeof f && (h = new Promise(g => {
f = g;
}));
e || (e = 0);
d || (d = 0);
if (d < this.h.length) {
const g = this.h[d], k = this.index[g];
b = this;
setTimeout(function() {
k.export(a, b, e ? g : "", d, e++, f) || (d++, e = 1, b.export(a, b, g, d, e, f));
});
} else {
let g, k;
switch(e) {
case 1:
g = "tag";
k = this.l;
c = null;
break;
case 2:
g = "store";
k = this.store;
c = null;
break;
default:
f();
return;
}
ra(a, this, c, g, d, e, k, f);
}
return h;
};
t.import = function(a, b) {
if (b) {
switch(x(b) && (b = JSON.parse(b)), a) {
case "tag":
this.l = b;
break;
case "reg":
this.m = !1;
this.register = b;
for (let d = 0, e; d < this.h.length; d++) {
e = this.index[this.h[d]], e.register = b, e.m = !1;
}
break;
case "store":
this.store = b;
break;
default:
a = a.split(".");
const c = a[0];
a = a[1];
c && a && this.index[c].import(a, b);
}
}
};
la(Q.prototype);
var Ba = {encode:Aa, F:!1, G:""};
const Ca = [F("[\u00e0\u00e1\u00e2\u00e3\u00e4\u00e5]"), "a", F("[\u00e8\u00e9\u00ea\u00eb]"), "e", F("[\u00ec\u00ed\u00ee\u00ef]"), "i", F("[\u00f2\u00f3\u00f4\u00f5\u00f6\u0151]"), "o", F("[\u00f9\u00fa\u00fb\u00fc\u0171]"), "u", F("[\u00fd\u0177\u00ff]"), "y", F("\u00f1"), "n", F("[\u00e7c]"), "k", F("\u00df"), "s", F(" & "), " and "];
function Aa(a) {
var b = a = "" + a;
b.normalize && (b = b.normalize("NFD").replace(ea, ""));
return ca.call(this, b.toLowerCase(), !a.normalize && Ca);
}
;var Ea = {encode:Da, F:!1, G:"strict"};
const Fa = /[^a-z0-9]+/, Ga = {b:"p", v:"f", w:"f", z:"s", x:"s", "\u00df":"s", d:"t", n:"m", c:"k", g:"k", j:"k", q:"k", i:"e", y:"e", u:"o"};
function Da(a) {
a = Aa.call(this, a).join(" ");
const b = [];
if (a) {
const c = a.split(Fa), d = c.length;
for (let e = 0, f, h = 0; e < d; e++) {
if ((a = c[e]) && (!this.filter || !this.filter[a])) {
f = a[0];
let g = Ga[f] || f, k = g;
for (let m = 1; m < a.length; m++) {
f = a[m];
const n = Ga[f] || f;
n && n !== k && (g += n, k = n);
}
b[h++] = g;
}
}
}
return b;
}
;var Ia = {encode:Ha, F:!1, G:""};
const Ja = [F("ae"), "a", F("oe"), "o", F("sh"), "s", F("th"), "t", F("ph"), "f", F("pf"), "f", F("(?![aeo])h(?![aeo])"), "", F("(?!^[aeo])h(?!^[aeo])"), ""];
function Ha(a, b) {
a && (a = Da.call(this, a).join(" "), 2 < a.length && (a = E(a, Ja)), b || (1 < a.length && (a = ha(a)), a && (a = a.split(" "))));
return a || [];
}
;var La = {encode:Ka, F:!1, G:""};
const Ma = F("(?!\\b)[aeo]");
function Ka(a) {
a && (a = Ha.call(this, a, !0), 1 < a.length && (a = a.replace(Ma, "")), 1 < a.length && (a = ha(a)), a && (a = a.split(" ")));
return a || [];
}
;G["latin:default"] = ja;
G["latin:simple"] = Ba;
G["latin:balance"] = Ea;
G["latin:advanced"] = Ia;
G["latin:extra"] = La;
const W = self;
let Y;
const Z = {Index:K, Document:Q, Worker:O, registerCharset:function(a, b) {
G[a] = b;
}, registerLanguage:function(a, b) {
ka[a] = b;
}};
(Y = W.define) && Y.amd ? Y([], function() {
return Z;
}) : W.exports ? W.exports = Z : W.FlexSearch = Z;
}(this));

View File

@@ -1,33 +0,0 @@
/**!
* FlexSearch.js v0.7.31 (Bundle)
* Author and Copyright: Thomas Wilkerling
* Licence: Apache-2.0
* Hosted by Nextapps GmbH
* https://github.com/nextapps-de/flexsearch
*/
(function _f(self){'use strict';try{if(module)self=module}catch(e){}self._factory=_f;var t;function u(a){return"undefined"!==typeof a?a:!0}function aa(a){const b=Array(a);for(let c=0;c<a;c++)b[c]=v();return b}function v(){return Object.create(null)}function ba(a,b){return b.length-a.length}function x(a){return"string"===typeof a}function C(a){return"object"===typeof a}function D(a){return"function"===typeof a};function ca(a,b){var c=da;if(a&&(b&&(a=E(a,b)),this.H&&(a=E(a,this.H)),this.J&&1<a.length&&(a=E(a,this.J)),c||""===c)){a=a.split(c);if(this.filter){b=this.filter;c=a.length;const d=[];for(let e=0,f=0;e<c;e++){const g=a[e];g&&!b[g]&&(d[f++]=g)}a=d}return a}return a}const da=/[\p{Z}\p{S}\p{P}\p{C}]+/u,ea=/[\u0300-\u036f]/g;
function fa(a,b){const c=Object.keys(a),d=c.length,e=[];let f="",g=0;for(let h=0,k,m;h<d;h++)k=c[h],(m=a[k])?(e[g++]=F(b?"(?!\\b)"+k+"(\\b|_)":k),e[g++]=m):f+=(f?"|":"")+k;f&&(e[g++]=F(b?"(?!\\b)("+f+")(\\b|_)":"("+f+")"),e[g]="");return e}function E(a,b){for(let c=0,d=b.length;c<d&&(a=a.replace(b[c],b[c+1]),a);c+=2);return a}function F(a){return new RegExp(a,"g")}function ha(a){let b="",c="";for(let d=0,e=a.length,f;d<e;d++)(f=a[d])!==c&&(b+=c=f);return b};var ja={encode:ia,F:!1,G:""};function ia(a){return ca.call(this,(""+a).toLowerCase(),!1)};const ka={},G={};function la(a){I(a,"add");I(a,"append");I(a,"search");I(a,"update");I(a,"remove")}function I(a,b){a[b+"Async"]=function(){const c=this,d=arguments;var e=d[d.length-1];let f;D(e)&&(f=e,delete d[d.length-1]);e=new Promise(function(g){setTimeout(function(){c.async=!0;const h=c[b].apply(c,d);c.async=!1;g(h)})});return f?(e.then(f),this):e}};function ma(a,b,c,d){const e=a.length;let f=[],g,h,k=0;d&&(d=[]);for(let m=e-1;0<=m;m--){const n=a[m],w=n.length,q=v();let r=!g;for(let l=0;l<w;l++){const p=n[l],z=p.length;if(z)for(let B=0,A,y;B<z;B++)if(y=p[B],g){if(g[y]){if(!m)if(c)c--;else if(f[k++]=y,k===b)return f;if(m||d)q[y]=1;r=!0}if(d&&(A=(h[y]||0)+1,h[y]=A,A<e)){const H=d[A-2]||(d[A-2]=[]);H[H.length]=y}}else q[y]=1}if(d)g||(h=q);else if(!r)return[];g=q}if(d)for(let m=d.length-1,n,w;0<=m;m--){n=d[m];w=n.length;for(let q=0,r;q<w;q++)if(r=
n[q],!g[r]){if(c)c--;else if(f[k++]=r,k===b)return f;g[r]=1}}return f}function na(a,b){const c=v(),d=v(),e=[];for(let f=0;f<a.length;f++)c[a[f]]=1;for(let f=0,g;f<b.length;f++){g=b[f];for(let h=0,k;h<g.length;h++)k=g[h],c[k]&&!d[k]&&(d[k]=1,e[e.length]=k)}return e};function J(a){this.l=!0!==a&&a;this.cache=v();this.h=[]}function oa(a,b,c){C(a)&&(a=a.query);let d=this.cache.get(a);d||(d=this.search(a,b,c),this.cache.set(a,d));return d}J.prototype.set=function(a,b){if(!this.cache[a]){var c=this.h.length;c===this.l?delete this.cache[this.h[c-1]]:c++;for(--c;0<c;c--)this.h[c]=this.h[c-1];this.h[0]=a}this.cache[a]=b};J.prototype.get=function(a){const b=this.cache[a];if(this.l&&b&&(a=this.h.indexOf(a))){const c=this.h[a-1];this.h[a-1]=this.h[a];this.h[a]=c}return b};const qa={memory:{charset:"latin:extra",D:3,B:4,m:!1},performance:{D:3,B:3,s:!1,context:{depth:2,D:1}},match:{charset:"latin:extra",G:"reverse"},score:{charset:"latin:advanced",D:20,B:3,context:{depth:3,D:9}},"default":{}};function ra(a,b,c,d,e,f,g){setTimeout(function(){const h=a(c?c+"."+d:d,JSON.stringify(g));h&&h.then?h.then(function(){b.export(a,b,c,e,f+1)}):b.export(a,b,c,e,f+1)})};function K(a,b){if(!(this instanceof K))return new K(a);var c;if(a){x(a)?a=qa[a]:(c=a.preset)&&(a=Object.assign({},c[c],a));c=a.charset;var d=a.lang;x(c)&&(-1===c.indexOf(":")&&(c+=":default"),c=G[c]);x(d)&&(d=ka[d])}else a={};let e,f,g=a.context||{};this.encode=a.encode||c&&c.encode||ia;this.register=b||v();this.D=e=a.resolution||9;this.G=b=c&&c.G||a.tokenize||"strict";this.depth="strict"===b&&g.depth;this.l=u(g.bidirectional);this.s=f=u(a.optimize);this.m=u(a.fastupdate);this.B=a.minlength||1;this.C=
a.boost;this.map=f?aa(e):v();this.A=e=g.resolution||1;this.h=f?aa(e):v();this.F=c&&c.F||a.rtl;this.H=(b=a.matcher||d&&d.H)&&fa(b,!1);this.J=(b=a.stemmer||d&&d.J)&&fa(b,!0);if(c=b=a.filter||d&&d.filter){c=b;d=v();for(let h=0,k=c.length;h<k;h++)d[c[h]]=1;c=d}this.filter=c;this.cache=(b=a.cache)&&new J(b)}t=K.prototype;t.append=function(a,b){return this.add(a,b,!0)};
t.add=function(a,b,c,d){if(b&&(a||0===a)){if(!d&&!c&&this.register[a])return this.update(a,b);b=this.encode(b);if(d=b.length){const m=v(),n=v(),w=this.depth,q=this.D;for(let r=0;r<d;r++){let l=b[this.F?d-1-r:r];var e=l.length;if(l&&e>=this.B&&(w||!n[l])){var f=L(q,d,r),g="";switch(this.G){case "full":if(2<e){for(f=0;f<e;f++)for(var h=e;h>f;h--)if(h-f>=this.B){var k=L(q,d,r,e,f);g=l.substring(f,h);M(this,n,g,k,a,c)}break}case "reverse":if(1<e){for(h=e-1;0<h;h--)g=l[h]+g,g.length>=this.B&&M(this,n,
g,L(q,d,r,e,h),a,c);g=""}case "forward":if(1<e){for(h=0;h<e;h++)g+=l[h],g.length>=this.B&&M(this,n,g,f,a,c);break}default:if(this.C&&(f=Math.min(f/this.C(b,l,r)|0,q-1)),M(this,n,l,f,a,c),w&&1<d&&r<d-1)for(e=v(),g=this.A,f=l,h=Math.min(w+1,d-r),e[f]=1,k=1;k<h;k++)if((l=b[this.F?d-1-r-k:r+k])&&l.length>=this.B&&!e[l]){e[l]=1;const p=this.l&&l>f;M(this,m,p?f:l,L(g+(d/2>g?0:1),d,r,h-1,k-1),a,c,p?l:f)}}}}this.m||(this.register[a]=1)}}return this};
function L(a,b,c,d,e){return c&&1<a?b+(d||0)<=a?c+(e||0):(a-1)/(b+(d||0))*(c+(e||0))+1|0:0}function M(a,b,c,d,e,f,g){let h=g?a.h:a.map;if(!b[c]||g&&!b[c][g])a.s&&(h=h[d]),g?(b=b[c]||(b[c]=v()),b[g]=1,h=h[g]||(h[g]=v())):b[c]=1,h=h[c]||(h[c]=[]),a.s||(h=h[d]||(h[d]=[])),f&&h.includes(e)||(h[h.length]=e,a.m&&(a=a.register[e]||(a.register[e]=[]),a[a.length]=h))}
t.search=function(a,b,c){c||(!b&&C(a)?(c=a,a=c.query):C(b)&&(c=b));let d=[],e;let f,g=0;if(c){a=c.query||a;b=c.limit;g=c.offset||0;var h=c.context;f=c.suggest}if(a&&(a=this.encode(""+a),e=a.length,1<e)){c=v();var k=[];for(let n=0,w=0,q;n<e;n++)if((q=a[n])&&q.length>=this.B&&!c[q])if(this.s||f||this.map[q])k[w++]=q,c[q]=1;else return d;a=k;e=a.length}if(!e)return d;b||(b=100);h=this.depth&&1<e&&!1!==h;c=0;let m;h?(m=a[0],c=1):1<e&&a.sort(ba);for(let n,w;c<e;c++){w=a[c];h?(n=sa(this,d,f,b,g,2===e,w,
m),f&&!1===n&&d.length||(m=w)):n=sa(this,d,f,b,g,1===e,w);if(n)return n;if(f&&c===e-1){k=d.length;if(!k){if(h){h=0;c=-1;continue}return d}if(1===k)return ta(d[0],b,g)}}return ma(d,b,g,f)};
function sa(a,b,c,d,e,f,g,h){let k=[],m=h?a.h:a.map;a.s||(m=ua(m,g,h,a.l));if(m){let n=0;const w=Math.min(m.length,h?a.A:a.D);for(let q=0,r=0,l,p;q<w;q++)if(l=m[q])if(a.s&&(l=ua(l,g,h,a.l)),e&&l&&f&&(p=l.length,p<=e?(e-=p,l=null):(l=l.slice(e),e=0)),l&&(k[n++]=l,f&&(r+=l.length,r>=d)))break;if(n){if(f)return ta(k,d,0);b[b.length]=k;return}}return!c&&k}function ta(a,b,c){a=1===a.length?a[0]:[].concat.apply([],a);return c||a.length>b?a.slice(c,c+b):a}
function ua(a,b,c,d){c?(d=d&&b>c,a=(a=a[d?b:c])&&a[d?c:b]):a=a[b];return a}t.contain=function(a){return!!this.register[a]};t.update=function(a,b){return this.remove(a).add(a,b)};
t.remove=function(a,b){const c=this.register[a];if(c){if(this.m)for(let d=0,e;d<c.length;d++)e=c[d],e.splice(e.indexOf(a),1);else N(this.map,a,this.D,this.s),this.depth&&N(this.h,a,this.A,this.s);b||delete this.register[a];if(this.cache){b=this.cache;for(let d=0,e,f;d<b.h.length;d++)f=b.h[d],e=b.cache[f],e.includes(a)&&(b.h.splice(d--,1),delete b.cache[f])}}return this};
function N(a,b,c,d,e){let f=0;if(a.constructor===Array)if(e)b=a.indexOf(b),-1!==b?1<a.length&&(a.splice(b,1),f++):f++;else{e=Math.min(a.length,c);for(let g=0,h;g<e;g++)if(h=a[g])f=N(h,b,c,d,e),d||f||delete a[g]}else for(let g in a)(f=N(a[g],b,c,d,e))||delete a[g];return f}t.searchCache=oa;
t.export=function(a,b,c,d,e){let f,g;switch(e||(e=0)){case 0:f="reg";if(this.m){g=v();for(let h in this.register)g[h]=1}else g=this.register;break;case 1:f="cfg";g={doc:0,opt:this.s?1:0};break;case 2:f="map";g=this.map;break;case 3:f="ctx";g=this.h;break;default:return}ra(a,b||this,c,f,d,e,g);return!0};t.import=function(a,b){if(b)switch(x(b)&&(b=JSON.parse(b)),a){case "cfg":this.s=!!b.opt;break;case "reg":this.m=!1;this.register=b;break;case "map":this.map=b;break;case "ctx":this.h=b}};la(K.prototype);function va(a){a=a.data;var b=self._index;const c=a.args;var d=a.task;switch(d){case "init":d=a.options||{};a=a.factory;b=d.encode;d.cache=!1;b&&0===b.indexOf("function")&&(d.encode=Function("return "+b)());a?(Function("return "+a)()(self),self._index=new self.FlexSearch.Index(d),delete self.FlexSearch):self._index=new K(d);break;default:a=a.id,b=b[d].apply(b,c),postMessage("search"===d?{id:a,msg:b}:{id:a})}};let wa=0;function O(a){if(!(this instanceof O))return new O(a);var b;a?D(b=a.encode)&&(a.encode=b.toString()):a={};(b=(self||window)._factory)&&(b=b.toString());const c="undefined"===typeof window&&self.exports,d=this;this.o=xa(b,c,a.worker);this.h=v();if(this.o){if(c)this.o.on("message",function(e){d.h[e.id](e.msg);delete d.h[e.id]});else this.o.onmessage=function(e){e=e.data;d.h[e.id](e.msg);delete d.h[e.id]};this.o.postMessage({task:"init",factory:b,options:a})}}P("add");P("append");P("search");
P("update");P("remove");function P(a){O.prototype[a]=O.prototype[a+"Async"]=function(){const b=this,c=[].slice.call(arguments);var d=c[c.length-1];let e;D(d)&&(e=d,c.splice(c.length-1,1));d=new Promise(function(f){setTimeout(function(){b.h[++wa]=f;b.o.postMessage({task:a,id:wa,args:c})})});return e?(d.then(e),this):d}}
function xa(a,b,c){let d;try{d=b?eval('new (require("worker_threads")["Worker"])("../dist/node/node.js")'):a?new Worker(URL.createObjectURL(new Blob(["onmessage="+va.toString()],{type:"text/javascript"}))):new Worker(x(c)?c:"worker/worker.js",{type:"module"})}catch(e){}return d};function Q(a){if(!(this instanceof Q))return new Q(a);var b=a.document||a.doc||a,c;this.K=[];this.h=[];this.A=[];this.register=v();this.key=(c=b.key||b.id)&&S(c,this.A)||"id";this.m=u(a.fastupdate);this.C=(c=b.store)&&!0!==c&&[];this.store=c&&v();this.I=(c=b.tag)&&S(c,this.A);this.l=c&&v();this.cache=(c=a.cache)&&new J(c);a.cache=!1;this.o=a.worker;this.async=!1;c=v();let d=b.index||b.field||b;x(d)&&(d=[d]);for(let e=0,f,g;e<d.length;e++)f=d[e],x(f)||(g=f,f=f.field),g=C(g)?Object.assign({},a,g):a,
this.o&&(c[f]=new O(g),c[f].o||(this.o=!1)),this.o||(c[f]=new K(g,this.register)),this.K[e]=S(f,this.A),this.h[e]=f;if(this.C)for(a=b.store,x(a)&&(a=[a]),b=0;b<a.length;b++)this.C[b]=S(a[b],this.A);this.index=c}function S(a,b){const c=a.split(":");let d=0;for(let e=0;e<c.length;e++)a=c[e],0<=a.indexOf("[]")&&(a=a.substring(0,a.length-2))&&(b[d]=!0),a&&(c[d++]=a);d<c.length&&(c.length=d);return 1<d?c:c[0]}function T(a,b){if(x(b))a=a[b];else for(let c=0;a&&c<b.length;c++)a=a[b[c]];return a}
function U(a,b,c,d,e){a=a[e];if(d===c.length-1)b[e]=a;else if(a)if(a.constructor===Array)for(b=b[e]=Array(a.length),e=0;e<a.length;e++)U(a,b,c,d,e);else b=b[e]||(b[e]=v()),e=c[++d],U(a,b,c,d,e)}function V(a,b,c,d,e,f,g,h){if(a=a[g])if(d===b.length-1){if(a.constructor===Array){if(c[d]){for(b=0;b<a.length;b++)e.add(f,a[b],!0,!0);return}a=a.join(" ")}e.add(f,a,h,!0)}else if(a.constructor===Array)for(g=0;g<a.length;g++)V(a,b,c,d,e,f,g,h);else g=b[++d],V(a,b,c,d,e,f,g,h)}t=Q.prototype;
t.add=function(a,b,c){C(a)&&(b=a,a=T(b,this.key));if(b&&(a||0===a)){if(!c&&this.register[a])return this.update(a,b);for(let d=0,e,f;d<this.h.length;d++)f=this.h[d],e=this.K[d],x(e)&&(e=[e]),V(b,e,this.A,0,this.index[f],a,e[0],c);if(this.I){let d=T(b,this.I),e=v();x(d)&&(d=[d]);for(let f=0,g,h;f<d.length;f++)if(g=d[f],!e[g]&&(e[g]=1,h=this.l[g]||(this.l[g]=[]),!c||!h.includes(a)))if(h[h.length]=a,this.m){const k=this.register[a]||(this.register[a]=[]);k[k.length]=h}}if(this.store&&(!c||!this.store[a])){let d;
if(this.C){d=v();for(let e=0,f;e<this.C.length;e++)f=this.C[e],x(f)?d[f]=b[f]:U(b,d,f,0,f[0])}this.store[a]=d||b}}return this};t.append=function(a,b){return this.add(a,b,!0)};t.update=function(a,b){return this.remove(a).add(a,b)};
t.remove=function(a){C(a)&&(a=T(a,this.key));if(this.register[a]){for(var b=0;b<this.h.length&&(this.index[this.h[b]].remove(a,!this.o),!this.m);b++);if(this.I&&!this.m)for(let c in this.l){b=this.l[c];const d=b.indexOf(a);-1!==d&&(1<b.length?b.splice(d,1):delete this.l[c])}this.store&&delete this.store[a];delete this.register[a]}return this};
t.search=function(a,b,c,d){c||(!b&&C(a)?(c=a,a=""):C(b)&&(c=b,b=0));let e=[],f=[],g,h,k,m,n,w,q=0;if(c)if(c.constructor===Array)k=c,c=null;else{a=c.query||a;k=(g=c.pluck)||c.index||c.field;m=c.tag;h=this.store&&c.enrich;n="and"===c.bool;b=c.limit||b||100;w=c.offset||0;if(m&&(x(m)&&(m=[m]),!a)){for(let l=0,p;l<m.length;l++)if(p=ya.call(this,m[l],b,w,h))e[e.length]=p,q++;return q?e:[]}x(k)&&(k=[k])}k||(k=this.h);n=n&&(1<k.length||m&&1<m.length);const r=!d&&(this.o||this.async)&&[];for(let l=0,p,z,B;l<
k.length;l++){let A;z=k[l];x(z)||(A=z,z=A.field,a=A.query||a,b=A.limit||b);if(r)r[l]=this.index[z].searchAsync(a,b,A||c);else{d?p=d[l]:p=this.index[z].search(a,b,A||c);B=p&&p.length;if(m&&B){const y=[];let H=0;n&&(y[0]=[p]);for(let X=0,pa,R;X<m.length;X++)if(pa=m[X],B=(R=this.l[pa])&&R.length)H++,y[y.length]=n?[R]:R;H&&(p=n?ma(y,b||100,w||0):na(p,y),B=p.length)}if(B)f[q]=z,e[q++]=p;else if(n)return[]}}if(r){const l=this;return new Promise(function(p){Promise.all(r).then(function(z){p(l.search(a,b,
c,z))})})}if(!q)return[];if(g&&(!h||!this.store))return e[0];for(let l=0,p;l<f.length;l++){p=e[l];p.length&&h&&(p=za.call(this,p));if(g)return p;e[l]={field:f[l],result:p}}return e};function ya(a,b,c,d){let e=this.l[a],f=e&&e.length-c;if(f&&0<f){if(f>b||c)e=e.slice(c,c+b);d&&(e=za.call(this,e));return{tag:a,result:e}}}function za(a){const b=Array(a.length);for(let c=0,d;c<a.length;c++)d=a[c],b[c]={id:d,doc:this.store[d]};return b}t.contain=function(a){return!!this.register[a]};t.get=function(a){return this.store[a]};
t.set=function(a,b){this.store[a]=b;return this};t.searchCache=oa;t.export=function(a,b,c,d,e){e||(e=0);d||(d=0);if(d<this.h.length){const f=this.h[d],g=this.index[f];b=this;setTimeout(function(){g.export(a,b,e?f:"",d,e++)||(d++,e=1,b.export(a,b,f,d,e))})}else{let f,g;switch(e){case 1:f="tag";g=this.l;break;case 2:f="store";g=this.store;break;default:return}ra(a,this,c,f,d,e,g)}};
t.import=function(a,b){if(b)switch(x(b)&&(b=JSON.parse(b)),a){case "tag":this.l=b;break;case "reg":this.m=!1;this.register=b;for(let d=0,e;d<this.h.length;d++)e=this.index[this.h[d]],e.register=b,e.m=!1;break;case "store":this.store=b;break;default:a=a.split(".");const c=a[0];a=a[1];c&&a&&this.index[c].import(a,b)}};la(Q.prototype);var Ba={encode:Aa,F:!1,G:""};const Ca=[F("[\u00e0\u00e1\u00e2\u00e3\u00e4\u00e5]"),"a",F("[\u00e8\u00e9\u00ea\u00eb]"),"e",F("[\u00ec\u00ed\u00ee\u00ef]"),"i",F("[\u00f2\u00f3\u00f4\u00f5\u00f6\u0151]"),"o",F("[\u00f9\u00fa\u00fb\u00fc\u0171]"),"u",F("[\u00fd\u0177\u00ff]"),"y",F("\u00f1"),"n",F("[\u00e7c]"),"k",F("\u00df"),"s",F(" & ")," and "];function Aa(a){var b=a=""+a;b.normalize&&(b=b.normalize("NFD").replace(ea,""));return ca.call(this,b.toLowerCase(),!a.normalize&&Ca)};var Ea={encode:Da,F:!1,G:"strict"};const Fa=/[^a-z0-9]+/,Ga={b:"p",v:"f",w:"f",z:"s",x:"s","\u00df":"s",d:"t",n:"m",c:"k",g:"k",j:"k",q:"k",i:"e",y:"e",u:"o"};function Da(a){a=Aa.call(this,a).join(" ");const b=[];if(a){const c=a.split(Fa),d=c.length;for(let e=0,f,g=0;e<d;e++)if((a=c[e])&&(!this.filter||!this.filter[a])){f=a[0];let h=Ga[f]||f,k=h;for(let m=1;m<a.length;m++){f=a[m];const n=Ga[f]||f;n&&n!==k&&(h+=n,k=n)}b[g++]=h}}return b};var Ia={encode:Ha,F:!1,G:""};const Ja=[F("ae"),"a",F("oe"),"o",F("sh"),"s",F("th"),"t",F("ph"),"f",F("pf"),"f",F("(?![aeo])h(?![aeo])"),"",F("(?!^[aeo])h(?!^[aeo])"),""];function Ha(a,b){a&&(a=Da.call(this,a).join(" "),2<a.length&&(a=E(a,Ja)),b||(1<a.length&&(a=ha(a)),a&&(a=a.split(" "))));return a||[]};var La={encode:Ka,F:!1,G:""};const Ma=F("(?!\\b)[aeo]");function Ka(a){a&&(a=Ha.call(this,a,!0),1<a.length&&(a=a.replace(Ma,"")),1<a.length&&(a=ha(a)),a&&(a=a.split(" ")));return a||[]};G["latin:default"]=ja;G["latin:simple"]=Ba;G["latin:balance"]=Ea;G["latin:advanced"]=Ia;G["latin:extra"]=La;const W=self;let Y;const Z={Index:K,Document:Q,Worker:O,registerCharset:function(a,b){G[a]=b},registerLanguage:function(a,b){ka[a]=b}};(Y=W.define)&&Y.amd?Y([],function(){return Z}):W.exports?W.exports=Z:W.FlexSearch=Z;}(this));

34
dist/flexsearch.bundle.min.js vendored Normal file
View File

@@ -0,0 +1,34 @@
/**!
* FlexSearch.js v0.7.39 (Bundle)
* Author and Copyright: Thomas Wilkerling
* Licence: Apache-2.0
* Hosted by Nextapps GmbH
* https://github.com/nextapps-de/flexsearch
*/
(function _factory(self){'use strict';var t;function u(a){return"undefined"!==typeof a?a:!0}function aa(a){const b=Array(a);for(let c=0;c<a;c++)b[c]=v();return b}function v(){return Object.create(null)}function ba(a,b){return b.length-a.length}function x(a){return"string"===typeof a}function C(a){return"object"===typeof a}function D(a){return"function"===typeof a};function ca(a,b){var c=da;if(a&&(b&&(a=E(a,b)),this.H&&(a=E(a,this.H)),this.J&&1<a.length&&(a=E(a,this.J)),c||""===c)){b=a.split(c);if(this.filter){a=this.filter;c=b.length;const d=[];for(let e=0,f=0;e<c;e++){const h=b[e];h&&!a[h]&&(d[f++]=h)}a=d}else a=b;return a}return a}const da=/[\p{Z}\p{S}\p{P}\p{C}]+/u,ea=/[\u0300-\u036f]/g;
function fa(a,b){const c=Object.keys(a),d=c.length,e=[];let f="",h=0;for(let g=0,k,m;g<d;g++)k=c[g],(m=a[k])?(e[h++]=F(b?"(?!\\b)"+k+"(\\b|_)":k),e[h++]=m):f+=(f?"|":"")+k;f&&(e[h++]=F(b?"(?!\\b)("+f+")(\\b|_)":"("+f+")"),e[h]="");return e}function E(a,b){for(let c=0,d=b.length;c<d&&(a=a.replace(b[c],b[c+1]),a);c+=2);return a}function F(a){return new RegExp(a,"g")}function ha(a){let b="",c="";for(let d=0,e=a.length,f;d<e;d++)(f=a[d])!==c&&(b+=c=f);return b};var ja={encode:ia,F:!1,G:""};function ia(a){return ca.call(this,(""+a).toLowerCase(),!1)};const ka={},G={};function la(a){I(a,"add");I(a,"append");I(a,"search");I(a,"update");I(a,"remove")}function I(a,b){a[b+"Async"]=function(){const c=this,d=arguments;var e=d[d.length-1];let f;D(e)&&(f=e,delete d[d.length-1]);e=new Promise(function(h){setTimeout(function(){c.async=!0;const g=c[b].apply(c,d);c.async=!1;h(g)})});return f?(e.then(f),this):e}};function ma(a,b,c,d){const e=a.length;let f=[],h,g,k=0;d&&(d=[]);for(let m=e-1;0<=m;m--){const n=a[m],w=n.length,q=v();let r=!h;for(let l=0;l<w;l++){const p=n[l],A=p.length;if(A)for(let B=0,z,y;B<A;B++)if(y=p[B],h){if(h[y]){if(!m)if(c)c--;else if(f[k++]=y,k===b)return f;if(m||d)q[y]=1;r=!0}if(d&&(z=(g[y]||0)+1,g[y]=z,z<e)){const H=d[z-2]||(d[z-2]=[]);H[H.length]=y}}else q[y]=1}if(d)h||(g=q);else if(!r)return[];h=q}if(d)for(let m=d.length-1,n,w;0<=m;m--){n=d[m];w=n.length;for(let q=0,r;q<w;q++)if(r=
n[q],!h[r]){if(c)c--;else if(f[k++]=r,k===b)return f;h[r]=1}}return f}function na(a,b){const c=v(),d=v(),e=[];for(let f=0;f<a.length;f++)c[a[f]]=1;for(let f=0,h;f<b.length;f++){h=b[f];for(let g=0,k;g<h.length;g++)k=h[g],c[k]&&!d[k]&&(d[k]=1,e[e.length]=k)}return e};function J(a){this.l=!0!==a&&a;this.cache=v();this.h=[]}function oa(a,b,c){C(a)&&(a=a.query);let d=this.cache.get(a);d||(d=this.search(a,b,c),this.cache.set(a,d));return d}J.prototype.set=function(a,b){if(!this.cache[a]){var c=this.h.length;c===this.l?delete this.cache[this.h[c-1]]:c++;for(--c;0<c;c--)this.h[c]=this.h[c-1];this.h[0]=a}this.cache[a]=b};J.prototype.get=function(a){const b=this.cache[a];if(this.l&&b&&(a=this.h.indexOf(a))){const c=this.h[a-1];this.h[a-1]=this.h[a];this.h[a]=c}return b};const qa={memory:{charset:"latin:extra",D:3,B:4,m:!1},performance:{D:3,B:3,s:!1,context:{depth:2,D:1}},match:{charset:"latin:extra",G:"reverse"},score:{charset:"latin:advanced",D:20,B:3,context:{depth:3,D:9}},"default":{}};function ra(a,b,c,d,e,f,h,g){setTimeout(function(){const k=a(c?c+"."+d:d,JSON.stringify(h));k&&k.then?k.then(function(){b.export(a,b,c,e,f+1,g)}):b.export(a,b,c,e,f+1,g)})};function K(a,b){if(!(this instanceof K))return new K(a);var c;if(a){x(a)?a=qa[a]:(c=a.preset)&&(a=Object.assign({},c[c],a));c=a.charset;var d=a.lang;x(c)&&(-1===c.indexOf(":")&&(c+=":default"),c=G[c]);x(d)&&(d=ka[d])}else a={};let e,f,h=a.context||{};this.encode=a.encode||c&&c.encode||ia;this.register=b||v();this.D=e=a.resolution||9;this.G=b=c&&c.G||a.tokenize||"strict";this.depth="strict"===b&&h.depth;this.l=u(h.bidirectional);this.s=f=u(a.optimize);this.m=u(a.fastupdate);this.B=a.minlength||1;this.C=
a.boost;this.map=f?aa(e):v();this.A=e=h.resolution||1;this.h=f?aa(e):v();this.F=c&&c.F||a.rtl;this.H=(b=a.matcher||d&&d.H)&&fa(b,!1);this.J=(b=a.stemmer||d&&d.J)&&fa(b,!0);if(c=b=a.filter||d&&d.filter){c=b;d=v();for(let g=0,k=c.length;g<k;g++)d[c[g]]=1;c=d}this.filter=c;this.cache=(b=a.cache)&&new J(b)}t=K.prototype;t.append=function(a,b){return this.add(a,b,!0)};
t.add=function(a,b,c,d){if(b&&(a||0===a)){if(!d&&!c&&this.register[a])return this.update(a,b);b=this.encode(b);if(d=b.length){const m=v(),n=v(),w=this.depth,q=this.D;for(let r=0;r<d;r++){let l=b[this.F?d-1-r:r];var e=l.length;if(l&&e>=this.B&&(w||!n[l])){var f=L(q,d,r),h="";switch(this.G){case "full":if(2<e){for(f=0;f<e;f++)for(var g=e;g>f;g--)if(g-f>=this.B){var k=L(q,d,r,e,f);h=l.substring(f,g);M(this,n,h,k,a,c)}break}case "reverse":if(1<e){for(g=e-1;0<g;g--)h=l[g]+h,h.length>=this.B&&M(this,n,
h,L(q,d,r,e,g),a,c);h=""}case "forward":if(1<e){for(g=0;g<e;g++)h+=l[g],h.length>=this.B&&M(this,n,h,f,a,c);break}default:if(this.C&&(f=Math.min(f/this.C(b,l,r)|0,q-1)),M(this,n,l,f,a,c),w&&1<d&&r<d-1)for(e=v(),h=this.A,f=l,g=Math.min(w+1,d-r),e[f]=1,k=1;k<g;k++)if((l=b[this.F?d-1-r-k:r+k])&&l.length>=this.B&&!e[l]){e[l]=1;const p=this.l&&l>f;M(this,m,p?f:l,L(h+(d/2>h?0:1),d,r,g-1,k-1),a,c,p?l:f)}}}}this.m||(this.register[a]=1)}}return this};
function L(a,b,c,d,e){return c&&1<a?b+(d||0)<=a?c+(e||0):(a-1)/(b+(d||0))*(c+(e||0))+1|0:0}function M(a,b,c,d,e,f,h){let g=h?a.h:a.map;if(!b[c]||h&&!b[c][h])a.s&&(g=g[d]),h?(b=b[c]||(b[c]=v()),b[h]=1,g=g[h]||(g[h]=v())):b[c]=1,g=g[c]||(g[c]=[]),a.s||(g=g[d]||(g[d]=[])),f&&g.includes(e)||(g[g.length]=e,a.m&&(a=a.register[e]||(a.register[e]=[]),a[a.length]=g))}
t.search=function(a,b,c){c||(!b&&C(a)?(c=a,a=c.query):C(b)&&(c=b));let d=[],e;let f,h=0;if(c){a=c.query||a;b=c.limit;h=c.offset||0;var g=c.context;f=c.suggest}if(a&&(a=this.encode(""+a),e=a.length,1<e)){c=v();var k=[];for(let n=0,w=0,q;n<e;n++)if((q=a[n])&&q.length>=this.B&&!c[q])if(this.s||f||this.map[q])k[w++]=q,c[q]=1;else return d;a=k;e=a.length}if(!e)return d;b||(b=100);g=this.depth&&1<e&&!1!==g;c=0;let m;g?(m=a[0],c=1):1<e&&a.sort(ba);for(let n,w;c<e;c++){w=a[c];g?(n=sa(this,d,f,b,h,2===e,w,
m),f&&!1===n&&d.length||(m=w)):n=sa(this,d,f,b,h,1===e,w);if(n)return n;if(f&&c===e-1){k=d.length;if(!k){if(g){g=0;c=-1;continue}return d}if(1===k)return ta(d[0],b,h)}}return ma(d,b,h,f)};
function sa(a,b,c,d,e,f,h,g){let k=[],m=g?a.h:a.map;a.s||(m=ua(m,h,g,a.l));if(m){let n=0;const w=Math.min(m.length,g?a.A:a.D);for(let q=0,r=0,l,p;q<w;q++)if(l=m[q])if(a.s&&(l=ua(l,h,g,a.l)),e&&l&&f&&(p=l.length,p<=e?(e-=p,l=null):(l=l.slice(e),e=0)),l&&(k[n++]=l,f&&(r+=l.length,r>=d)))break;if(n){if(f)return ta(k,d,0);b[b.length]=k;return}}return!c&&k}function ta(a,b,c){a=1===a.length?a[0]:[].concat.apply([],a);return c||a.length>b?a.slice(c,c+b):a}
function ua(a,b,c,d){c?(d=d&&b>c,a=(a=a[d?b:c])&&a[d?c:b]):a=a[b];return a}t.contain=function(a){return!!this.register[a]};t.update=function(a,b){return this.remove(a).add(a,b)};
t.remove=function(a,b){const c=this.register[a];if(c){if(this.m)for(let d=0,e;d<c.length;d++)e=c[d],e.splice(e.indexOf(a),1);else N(this.map,a,this.D,this.s),this.depth&&N(this.h,a,this.A,this.s);b||delete this.register[a];if(this.cache){b=this.cache;for(let d=0,e,f;d<b.h.length;d++)f=b.h[d],e=b.cache[f],e.includes(a)&&(b.h.splice(d--,1),delete b.cache[f])}}return this};
function N(a,b,c,d,e){let f=0;if(a.constructor===Array)if(e)b=a.indexOf(b),-1!==b?1<a.length&&(a.splice(b,1),f++):f++;else{e=Math.min(a.length,c);for(let h=0,g;h<e;h++)if(g=a[h])f=N(g,b,c,d,e),d||f||delete a[h]}else for(let h in a)(f=N(a[h],b,c,d,e))||delete a[h];return f}t.searchCache=oa;
t.export=function(a,b,c,d,e,f){let h=!0;"undefined"===typeof f&&(h=new Promise(m=>{f=m}));let g,k;switch(e||(e=0)){case 0:g="reg";if(this.m){k=v();for(let m in this.register)k[m]=1}else k=this.register;break;case 1:g="cfg";k={doc:0,opt:this.s?1:0};break;case 2:g="map";k=this.map;break;case 3:g="ctx";k=this.h;break;default:"undefined"===typeof c&&f&&f();return}ra(a,b||this,c,g,d,e,k,f);return h};
t.import=function(a,b){if(b)switch(x(b)&&(b=JSON.parse(b)),a){case "cfg":this.s=!!b.opt;break;case "reg":this.m=!1;this.register=b;break;case "map":this.map=b;break;case "ctx":this.h=b}};la(K.prototype);function va(a){a=a.data;var b=self._index;const c=a.args;var d=a.task;switch(d){case "init":d=a.options||{};a=a.factory;b=d.encode;d.cache=!1;b&&0===b.indexOf("function")&&(d.encode=Function("return "+b)());a?(Function("return "+a)()(self),self._index=new self.FlexSearch.Index(d),delete self.FlexSearch):self._index=new K(d);break;default:a=a.id,b=b[d].apply(b,c),postMessage("search"===d?{id:a,msg:b}:{id:a})}};let wa=0;function O(a){if(!(this instanceof O))return new O(a);var b;a?D(b=a.encode)&&(a.encode=b.toString()):a={};(b=(self||window)._factory)&&(b=b.toString());const c="undefined"===typeof window&&self.exports,d=this;this.o=xa(b,c,a.worker);this.h=v();if(this.o){if(c)this.o.on("message",function(e){d.h[e.id](e.msg);delete d.h[e.id]});else this.o.onmessage=function(e){e=e.data;d.h[e.id](e.msg);delete d.h[e.id]};this.o.postMessage({task:"init",factory:b,options:a})}}P("add");P("append");P("search");
P("update");P("remove");function P(a){O.prototype[a]=O.prototype[a+"Async"]=function(){const b=this,c=[].slice.call(arguments);var d=c[c.length-1];let e;D(d)&&(e=d,c.splice(c.length-1,1));d=new Promise(function(f){setTimeout(function(){b.h[++wa]=f;b.o.postMessage({task:a,id:wa,args:c})})});return e?(d.then(e),this):d}}
function xa(a,b,c){let d;try{d=b?eval('new (require("worker_threads")["Worker"])("../dist/node/node.js")'):a?new Worker(URL.createObjectURL(new Blob(["onmessage="+va.toString()],{type:"text/javascript"}))):new Worker(x(c)?c:"worker/worker.js",{type:"module"})}catch(e){}return d};function Q(a){if(!(this instanceof Q))return new Q(a);var b=a.document||a.doc||a,c;this.K=[];this.h=[];this.A=[];this.register=v();this.key=(c=b.key||b.id)&&S(c,this.A)||"id";this.m=u(a.fastupdate);this.C=(c=b.store)&&!0!==c&&[];this.store=c&&v();this.I=(c=b.tag)&&S(c,this.A);this.l=c&&v();this.cache=(c=a.cache)&&new J(c);a.cache=!1;this.o=a.worker;this.async=!1;c=v();let d=b.index||b.field||b;x(d)&&(d=[d]);for(let e=0,f,h;e<d.length;e++)f=d[e],x(f)||(h=f,f=f.field),h=C(h)?Object.assign({},a,h):a,
this.o&&(c[f]=new O(h),c[f].o||(this.o=!1)),this.o||(c[f]=new K(h,this.register)),this.K[e]=S(f,this.A),this.h[e]=f;if(this.C)for(a=b.store,x(a)&&(a=[a]),b=0;b<a.length;b++)this.C[b]=S(a[b],this.A);this.index=c}function S(a,b){const c=a.split(":");let d=0;for(let e=0;e<c.length;e++)a=c[e],0<=a.indexOf("[]")&&(a=a.substring(0,a.length-2))&&(b[d]=!0),a&&(c[d++]=a);d<c.length&&(c.length=d);return 1<d?c:c[0]}function T(a,b){if(x(b))a=a[b];else for(let c=0;a&&c<b.length;c++)a=a[b[c]];return a}
function U(a,b,c,d,e){a=a[e];if(d===c.length-1)b[e]=a;else if(a)if(a.constructor===Array)for(b=b[e]=Array(a.length),e=0;e<a.length;e++)U(a,b,c,d,e);else b=b[e]||(b[e]=v()),e=c[++d],U(a,b,c,d,e)}function V(a,b,c,d,e,f,h,g){if(a=a[h])if(d===b.length-1){if(a.constructor===Array){if(c[d]){for(b=0;b<a.length;b++)e.add(f,a[b],!0,!0);return}a=a.join(" ")}e.add(f,a,g,!0)}else if(a.constructor===Array)for(h=0;h<a.length;h++)V(a,b,c,d,e,f,h,g);else h=b[++d],V(a,b,c,d,e,f,h,g)}t=Q.prototype;
t.add=function(a,b,c){C(a)&&(b=a,a=T(b,this.key));if(b&&(a||0===a)){if(!c&&this.register[a])return this.update(a,b);for(let d=0,e,f;d<this.h.length;d++)f=this.h[d],e=this.K[d],x(e)&&(e=[e]),V(b,e,this.A,0,this.index[f],a,e[0],c);if(this.I){let d=T(b,this.I),e=v();x(d)&&(d=[d]);for(let f=0,h,g;f<d.length;f++)if(h=d[f],!e[h]&&(e[h]=1,g=this.l[h]||(this.l[h]=[]),!c||!g.includes(a)))if(g[g.length]=a,this.m){const k=this.register[a]||(this.register[a]=[]);k[k.length]=g}}if(this.store&&(!c||!this.store[a])){let d;
if(this.C){d=v();for(let e=0,f;e<this.C.length;e++)f=this.C[e],x(f)?d[f]=b[f]:U(b,d,f,0,f[0])}this.store[a]=d||b}}return this};t.append=function(a,b){return this.add(a,b,!0)};t.update=function(a,b){return this.remove(a).add(a,b)};
t.remove=function(a){C(a)&&(a=T(a,this.key));if(this.register[a]){for(var b=0;b<this.h.length&&(this.index[this.h[b]].remove(a,!this.o),!this.m);b++);if(this.I&&!this.m)for(let c in this.l){b=this.l[c];const d=b.indexOf(a);-1!==d&&(1<b.length?b.splice(d,1):delete this.l[c])}this.store&&delete this.store[a];delete this.register[a]}return this};
t.search=function(a,b,c,d){c||(!b&&C(a)?(c=a,a=""):C(b)&&(c=b,b=0));let e=[],f=[],h,g,k,m,n,w,q=0;if(c)if(c.constructor===Array)k=c,c=null;else{a=c.query||a;k=(h=c.pluck)||c.index||c.field;m=c.tag;g=this.store&&c.enrich;n="and"===c.bool;b=c.limit||b||100;w=c.offset||0;if(m&&(x(m)&&(m=[m]),!a)){for(let l=0,p;l<m.length;l++)if(p=ya.call(this,m[l],b,w,g))e[e.length]=p,q++;return q?e:[]}x(k)&&(k=[k])}k||(k=this.h);n=n&&(1<k.length||m&&1<m.length);const r=!d&&(this.o||this.async)&&[];for(let l=0,p,A,B;l<
k.length;l++){let z;A=k[l];x(A)||(z=A,A=z.field,a=z.query||a,b=z.limit||b,g=z.enrich||g);if(r)r[l]=this.index[A].searchAsync(a,b,z||c);else{d?p=d[l]:p=this.index[A].search(a,b,z||c);B=p&&p.length;if(m&&B){const y=[];let H=0;n&&(y[0]=[p]);for(let X=0,pa,R;X<m.length;X++)if(pa=m[X],B=(R=this.l[pa])&&R.length)H++,y[y.length]=n?[R]:R;H&&(p=n?ma(y,b||100,w||0):na(p,y),B=p.length)}if(B)f[q]=A,e[q++]=p;else if(n)return[]}}if(r){const l=this;return new Promise(function(p){Promise.all(r).then(function(A){p(l.search(a,
b,c,A))})})}if(!q)return[];if(h&&(!g||!this.store))return e[0];for(let l=0,p;l<f.length;l++){p=e[l];p.length&&g&&(p=za.call(this,p));if(h)return p;e[l]={field:f[l],result:p}}return e};function ya(a,b,c,d){let e=this.l[a],f=e&&e.length-c;if(f&&0<f){if(f>b||c)e=e.slice(c,c+b);d&&(e=za.call(this,e));return{tag:a,result:e}}}function za(a){const b=Array(a.length);for(let c=0,d;c<a.length;c++)d=a[c],b[c]={id:d,doc:this.store[d]};return b}t.contain=function(a){return!!this.register[a]};t.get=function(a){return this.store[a]};
t.set=function(a,b){this.store[a]=b;return this};t.searchCache=oa;t.export=function(a,b,c,d,e,f){let h;"undefined"===typeof f&&(h=new Promise(g=>{f=g}));e||(e=0);d||(d=0);if(d<this.h.length){const g=this.h[d],k=this.index[g];b=this;setTimeout(function(){k.export(a,b,e?g:"",d,e++,f)||(d++,e=1,b.export(a,b,g,d,e,f))})}else{let g,k;switch(e){case 1:g="tag";k=this.l;c=null;break;case 2:g="store";k=this.store;c=null;break;default:f();return}ra(a,this,c,g,d,e,k,f)}return h};
t.import=function(a,b){if(b)switch(x(b)&&(b=JSON.parse(b)),a){case "tag":this.l=b;break;case "reg":this.m=!1;this.register=b;for(let d=0,e;d<this.h.length;d++)e=this.index[this.h[d]],e.register=b,e.m=!1;break;case "store":this.store=b;break;default:a=a.split(".");const c=a[0];a=a[1];c&&a&&this.index[c].import(a,b)}};la(Q.prototype);var Ba={encode:Aa,F:!1,G:""};const Ca=[F("[\u00e0\u00e1\u00e2\u00e3\u00e4\u00e5]"),"a",F("[\u00e8\u00e9\u00ea\u00eb]"),"e",F("[\u00ec\u00ed\u00ee\u00ef]"),"i",F("[\u00f2\u00f3\u00f4\u00f5\u00f6\u0151]"),"o",F("[\u00f9\u00fa\u00fb\u00fc\u0171]"),"u",F("[\u00fd\u0177\u00ff]"),"y",F("\u00f1"),"n",F("[\u00e7c]"),"k",F("\u00df"),"s",F(" & ")," and "];function Aa(a){var b=a=""+a;b.normalize&&(b=b.normalize("NFD").replace(ea,""));return ca.call(this,b.toLowerCase(),!a.normalize&&Ca)};var Ea={encode:Da,F:!1,G:"strict"};const Fa=/[^a-z0-9]+/,Ga={b:"p",v:"f",w:"f",z:"s",x:"s","\u00df":"s",d:"t",n:"m",c:"k",g:"k",j:"k",q:"k",i:"e",y:"e",u:"o"};function Da(a){a=Aa.call(this,a).join(" ");const b=[];if(a){const c=a.split(Fa),d=c.length;for(let e=0,f,h=0;e<d;e++)if((a=c[e])&&(!this.filter||!this.filter[a])){f=a[0];let g=Ga[f]||f,k=g;for(let m=1;m<a.length;m++){f=a[m];const n=Ga[f]||f;n&&n!==k&&(g+=n,k=n)}b[h++]=g}}return b};var Ia={encode:Ha,F:!1,G:""};const Ja=[F("ae"),"a",F("oe"),"o",F("sh"),"s",F("th"),"t",F("ph"),"f",F("pf"),"f",F("(?![aeo])h(?![aeo])"),"",F("(?!^[aeo])h(?!^[aeo])"),""];function Ha(a,b){a&&(a=Da.call(this,a).join(" "),2<a.length&&(a=E(a,Ja)),b||(1<a.length&&(a=ha(a)),a&&(a=a.split(" "))));return a||[]};var La={encode:Ka,F:!1,G:""};const Ma=F("(?!\\b)[aeo]");function Ka(a){a&&(a=Ha.call(this,a,!0),1<a.length&&(a=a.replace(Ma,"")),1<a.length&&(a=ha(a)),a&&(a=a.split(" ")));return a||[]};G["latin:default"]=ja;G["latin:simple"]=Ba;G["latin:balance"]=Ea;G["latin:advanced"]=Ia;G["latin:extra"]=La;const W=self;let Y;const Z={Index:K,Document:Q,Worker:O,registerCharset:function(a,b){G[a]=b},registerLanguage:function(a,b){ka[a]=b}};(Y=W.define)&&Y.amd?Y([],function(){return Z}):W.exports?W.exports=Z:W.FlexSearch=Z;}(this));

978
dist/flexsearch.bundle.module.debug.js vendored Normal file
View File

@@ -0,0 +1,978 @@
/**!
* FlexSearch.js v0.7.39 (Bundle.module)
* Author and Copyright: Thomas Wilkerling
* Licence: Apache-2.0
* Hosted by Nextapps GmbH
* https://github.com/nextapps-de/flexsearch
*/
var t;
function u(a) {
return "undefined" !== typeof a ? a : !0;
}
function aa(a) {
const b = Array(a);
for (let c = 0; c < a; c++) {
b[c] = v();
}
return b;
}
function v() {
return Object.create(null);
}
function ba(a, b) {
return b.length - a.length;
}
function x(a) {
return "string" === typeof a;
}
function C(a) {
return "object" === typeof a;
}
function D(a) {
return "function" === typeof a;
}
;function ca(a, b) {
var c = da;
if (a && (b && (a = E(a, b)), this.H && (a = E(a, this.H)), this.J && 1 < a.length && (a = E(a, this.J)), c || "" === c)) {
b = a.split(c);
if (this.filter) {
a = this.filter;
c = b.length;
const d = [];
for (let e = 0, f = 0; e < c; e++) {
const h = b[e];
h && !a[h] && (d[f++] = h);
}
a = d;
} else {
a = b;
}
return a;
}
return a;
}
const da = /[\p{Z}\p{S}\p{P}\p{C}]+/u, ea = /[\u0300-\u036f]/g;
function fa(a, b) {
const c = Object.keys(a), d = c.length, e = [];
let f = "", h = 0;
for (let g = 0, k, m; g < d; g++) {
k = c[g], (m = a[k]) ? (e[h++] = F(b ? "(?!\\b)" + k + "(\\b|_)" : k), e[h++] = m) : f += (f ? "|" : "") + k;
}
f && (e[h++] = F(b ? "(?!\\b)(" + f + ")(\\b|_)" : "(" + f + ")"), e[h] = "");
return e;
}
function E(a, b) {
for (let c = 0, d = b.length; c < d && (a = a.replace(b[c], b[c + 1]), a); c += 2) {
}
return a;
}
function F(a) {
return new RegExp(a, "g");
}
function ha(a) {
let b = "", c = "";
for (let d = 0, e = a.length, f; d < e; d++) {
(f = a[d]) !== c && (b += c = f);
}
return b;
}
;var ja = {encode:ia, F:!1, G:""};
function ia(a) {
return ca.call(this, ("" + a).toLowerCase(), !1);
}
;const ka = {}, G = {};
function la(a) {
I(a, "add");
I(a, "append");
I(a, "search");
I(a, "update");
I(a, "remove");
}
function I(a, b) {
a[b + "Async"] = function() {
const c = this, d = arguments;
var e = d[d.length - 1];
let f;
D(e) && (f = e, delete d[d.length - 1]);
e = new Promise(function(h) {
setTimeout(function() {
c.async = !0;
const g = c[b].apply(c, d);
c.async = !1;
h(g);
});
});
return f ? (e.then(f), this) : e;
};
}
;function ma(a, b, c, d) {
const e = a.length;
let f = [], h, g, k = 0;
d && (d = []);
for (let m = e - 1; 0 <= m; m--) {
const n = a[m], w = n.length, q = v();
let r = !h;
for (let l = 0; l < w; l++) {
const p = n[l], A = p.length;
if (A) {
for (let B = 0, z, y; B < A; B++) {
if (y = p[B], h) {
if (h[y]) {
if (!m) {
if (c) {
c--;
} else {
if (f[k++] = y, k === b) {
return f;
}
}
}
if (m || d) {
q[y] = 1;
}
r = !0;
}
if (d && (z = (g[y] || 0) + 1, g[y] = z, z < e)) {
const H = d[z - 2] || (d[z - 2] = []);
H[H.length] = y;
}
} else {
q[y] = 1;
}
}
}
}
if (d) {
h || (g = q);
} else if (!r) {
return [];
}
h = q;
}
if (d) {
for (let m = d.length - 1, n, w; 0 <= m; m--) {
n = d[m];
w = n.length;
for (let q = 0, r; q < w; q++) {
if (r = n[q], !h[r]) {
if (c) {
c--;
} else {
if (f[k++] = r, k === b) {
return f;
}
}
h[r] = 1;
}
}
}
}
return f;
}
function na(a, b) {
const c = v(), d = v(), e = [];
for (let f = 0; f < a.length; f++) {
c[a[f]] = 1;
}
for (let f = 0, h; f < b.length; f++) {
h = b[f];
for (let g = 0, k; g < h.length; g++) {
k = h[g], c[k] && !d[k] && (d[k] = 1, e[e.length] = k);
}
}
return e;
}
;function J(a) {
this.l = !0 !== a && a;
this.cache = v();
this.h = [];
}
function oa(a, b, c) {
C(a) && (a = a.query);
let d = this.cache.get(a);
d || (d = this.search(a, b, c), this.cache.set(a, d));
return d;
}
J.prototype.set = function(a, b) {
if (!this.cache[a]) {
var c = this.h.length;
c === this.l ? delete this.cache[this.h[c - 1]] : c++;
for (--c; 0 < c; c--) {
this.h[c] = this.h[c - 1];
}
this.h[0] = a;
}
this.cache[a] = b;
};
J.prototype.get = function(a) {
const b = this.cache[a];
if (this.l && b && (a = this.h.indexOf(a))) {
const c = this.h[a - 1];
this.h[a - 1] = this.h[a];
this.h[a] = c;
}
return b;
};
const pa = {memory:{charset:"latin:extra", D:3, B:4, m:!1}, performance:{D:3, B:3, s:!1, context:{depth:2, D:1}}, match:{charset:"latin:extra", G:"reverse"}, score:{charset:"latin:advanced", D:20, B:3, context:{depth:3, D:9}}, "default":{}};
function ra(a, b, c, d, e, f, h, g) {
setTimeout(function() {
const k = a(c ? c + "." + d : d, JSON.stringify(h));
k && k.then ? k.then(function() {
b.export(a, b, c, e, f + 1, g);
}) : b.export(a, b, c, e, f + 1, g);
});
}
;function K(a, b) {
if (!(this instanceof K)) {
return new K(a);
}
var c;
if (a) {
if (x(a)) {
pa[a] || console.warn("Preset not found: " + a), a = pa[a];
} else {
if (c = a.preset) {
c[c] || console.warn("Preset not found: " + c), a = Object.assign({}, c[c], a);
}
}
c = a.charset;
var d = a.lang;
x(c) && (-1 === c.indexOf(":") && (c += ":default"), c = G[c]);
x(d) && (d = ka[d]);
} else {
a = {};
}
let e, f, h = a.context || {};
this.encode = a.encode || c && c.encode || ia;
this.register = b || v();
this.D = e = a.resolution || 9;
this.G = b = c && c.G || a.tokenize || "strict";
this.depth = "strict" === b && h.depth;
this.l = u(h.bidirectional);
this.s = f = u(a.optimize);
this.m = u(a.fastupdate);
this.B = a.minlength || 1;
this.C = a.boost;
this.map = f ? aa(e) : v();
this.A = e = h.resolution || 1;
this.h = f ? aa(e) : v();
this.F = c && c.F || a.rtl;
this.H = (b = a.matcher || d && d.H) && fa(b, !1);
this.J = (b = a.stemmer || d && d.J) && fa(b, !0);
if (c = b = a.filter || d && d.filter) {
c = b;
d = v();
for (let g = 0, k = c.length; g < k; g++) {
d[c[g]] = 1;
}
c = d;
}
this.filter = c;
this.cache = (b = a.cache) && new J(b);
}
t = K.prototype;
t.append = function(a, b) {
return this.add(a, b, !0);
};
t.add = function(a, b, c, d) {
if (b && (a || 0 === a)) {
if (!d && !c && this.register[a]) {
return this.update(a, b);
}
b = this.encode(b);
if (d = b.length) {
const m = v(), n = v(), w = this.depth, q = this.D;
for (let r = 0; r < d; r++) {
let l = b[this.F ? d - 1 - r : r];
var e = l.length;
if (l && e >= this.B && (w || !n[l])) {
var f = L(q, d, r), h = "";
switch(this.G) {
case "full":
if (2 < e) {
for (f = 0; f < e; f++) {
for (var g = e; g > f; g--) {
if (g - f >= this.B) {
var k = L(q, d, r, e, f);
h = l.substring(f, g);
M(this, n, h, k, a, c);
}
}
}
break;
}
case "reverse":
if (1 < e) {
for (g = e - 1; 0 < g; g--) {
h = l[g] + h, h.length >= this.B && M(this, n, h, L(q, d, r, e, g), a, c);
}
h = "";
}
case "forward":
if (1 < e) {
for (g = 0; g < e; g++) {
h += l[g], h.length >= this.B && M(this, n, h, f, a, c);
}
break;
}
default:
if (this.C && (f = Math.min(f / this.C(b, l, r) | 0, q - 1)), M(this, n, l, f, a, c), w && 1 < d && r < d - 1) {
for (e = v(), h = this.A, f = l, g = Math.min(w + 1, d - r), e[f] = 1, k = 1; k < g; k++) {
if ((l = b[this.F ? d - 1 - r - k : r + k]) && l.length >= this.B && !e[l]) {
e[l] = 1;
const p = this.l && l > f;
M(this, m, p ? f : l, L(h + (d / 2 > h ? 0 : 1), d, r, g - 1, k - 1), a, c, p ? l : f);
}
}
}
}
}
}
this.m || (this.register[a] = 1);
}
}
return this;
};
function L(a, b, c, d, e) {
return c && 1 < a ? b + (d || 0) <= a ? c + (e || 0) : (a - 1) / (b + (d || 0)) * (c + (e || 0)) + 1 | 0 : 0;
}
function M(a, b, c, d, e, f, h) {
let g = h ? a.h : a.map;
if (!b[c] || h && !b[c][h]) {
a.s && (g = g[d]), h ? (b = b[c] || (b[c] = v()), b[h] = 1, g = g[h] || (g[h] = v())) : b[c] = 1, g = g[c] || (g[c] = []), a.s || (g = g[d] || (g[d] = [])), f && g.includes(e) || (g[g.length] = e, a.m && (a = a.register[e] || (a.register[e] = []), a[a.length] = g));
}
}
t.search = function(a, b, c) {
c || (!b && C(a) ? (c = a, a = c.query) : C(b) && (c = b));
let d = [], e;
let f, h = 0;
if (c) {
a = c.query || a;
b = c.limit;
h = c.offset || 0;
var g = c.context;
f = c.suggest;
}
if (a && (a = this.encode("" + a), e = a.length, 1 < e)) {
c = v();
var k = [];
for (let n = 0, w = 0, q; n < e; n++) {
if ((q = a[n]) && q.length >= this.B && !c[q]) {
if (this.s || f || this.map[q]) {
k[w++] = q, c[q] = 1;
} else {
return d;
}
}
}
a = k;
e = a.length;
}
if (!e) {
return d;
}
b || (b = 100);
g = this.depth && 1 < e && !1 !== g;
c = 0;
let m;
g ? (m = a[0], c = 1) : 1 < e && a.sort(ba);
for (let n, w; c < e; c++) {
w = a[c];
g ? (n = sa(this, d, f, b, h, 2 === e, w, m), f && !1 === n && d.length || (m = w)) : n = sa(this, d, f, b, h, 1 === e, w);
if (n) {
return n;
}
if (f && c === e - 1) {
k = d.length;
if (!k) {
if (g) {
g = 0;
c = -1;
continue;
}
return d;
}
if (1 === k) {
return ta(d[0], b, h);
}
}
}
return ma(d, b, h, f);
};
function sa(a, b, c, d, e, f, h, g) {
let k = [], m = g ? a.h : a.map;
a.s || (m = ua(m, h, g, a.l));
if (m) {
let n = 0;
const w = Math.min(m.length, g ? a.A : a.D);
for (let q = 0, r = 0, l, p; q < w; q++) {
if (l = m[q]) {
if (a.s && (l = ua(l, h, g, a.l)), e && l && f && (p = l.length, p <= e ? (e -= p, l = null) : (l = l.slice(e), e = 0)), l && (k[n++] = l, f && (r += l.length, r >= d))) {
break;
}
}
}
if (n) {
if (f) {
return ta(k, d, 0);
}
b[b.length] = k;
return;
}
}
return !c && k;
}
function ta(a, b, c) {
a = 1 === a.length ? a[0] : [].concat.apply([], a);
return c || a.length > b ? a.slice(c, c + b) : a;
}
function ua(a, b, c, d) {
c ? (d = d && b > c, a = (a = a[d ? b : c]) && a[d ? c : b]) : a = a[b];
return a;
}
t.contain = function(a) {
return !!this.register[a];
};
t.update = function(a, b) {
return this.remove(a).add(a, b);
};
t.remove = function(a, b) {
const c = this.register[a];
if (c) {
if (this.m) {
for (let d = 0, e; d < c.length; d++) {
e = c[d], e.splice(e.indexOf(a), 1);
}
} else {
N(this.map, a, this.D, this.s), this.depth && N(this.h, a, this.A, this.s);
}
b || delete this.register[a];
if (this.cache) {
b = this.cache;
for (let d = 0, e, f; d < b.h.length; d++) {
f = b.h[d], e = b.cache[f], e.includes(a) && (b.h.splice(d--, 1), delete b.cache[f]);
}
}
}
return this;
};
function N(a, b, c, d, e) {
let f = 0;
if (a.constructor === Array) {
if (e) {
b = a.indexOf(b), -1 !== b ? 1 < a.length && (a.splice(b, 1), f++) : f++;
} else {
e = Math.min(a.length, c);
for (let h = 0, g; h < e; h++) {
if (g = a[h]) {
f = N(g, b, c, d, e), d || f || delete a[h];
}
}
}
} else {
for (let h in a) {
(f = N(a[h], b, c, d, e)) || delete a[h];
}
}
return f;
}
t.searchCache = oa;
t.export = function(a, b, c, d, e, f) {
let h = !0;
"undefined" === typeof f && (h = new Promise(m => {
f = m;
}));
let g, k;
switch(e || (e = 0)) {
case 0:
g = "reg";
if (this.m) {
k = v();
for (let m in this.register) {
k[m] = 1;
}
} else {
k = this.register;
}
break;
case 1:
g = "cfg";
k = {doc:0, opt:this.s ? 1 : 0};
break;
case 2:
g = "map";
k = this.map;
break;
case 3:
g = "ctx";
k = this.h;
break;
default:
"undefined" === typeof c && f && f();
return;
}
ra(a, b || this, c, g, d, e, k, f);
return h;
};
t.import = function(a, b) {
if (b) {
switch(x(b) && (b = JSON.parse(b)), a) {
case "cfg":
this.s = !!b.opt;
break;
case "reg":
this.m = !1;
this.register = b;
break;
case "map":
this.map = b;
break;
case "ctx":
this.h = b;
}
}
};
la(K.prototype);
function va(a) {
a = a.data;
var b = self._index;
const c = a.args;
var d = a.task;
switch(d) {
case "init":
d = a.options || {};
a = a.factory;
b = d.encode;
d.cache = !1;
b && 0 === b.indexOf("function") && (d.encode = Function("return " + b)());
a ? (Function("return " + a)()(self), self._index = new self.FlexSearch.Index(d), delete self.FlexSearch) : self._index = new K(d);
break;
default:
a = a.id, b = b[d].apply(b, c), postMessage("search" === d ? {id:a, msg:b} : {id:a});
}
}
;let wa = 0;
function O(a) {
if (!(this instanceof O)) {
return new O(a);
}
var b;
a ? D(b = a.encode) && (a.encode = b.toString()) : a = {};
(b = (self || window)._factory) && (b = b.toString());
const c = "undefined" === typeof window && self.exports, d = this;
this.o = xa(b, c, a.worker);
this.h = v();
if (this.o) {
if (c) {
this.o.on("message", function(e) {
d.h[e.id](e.msg);
delete d.h[e.id];
});
} else {
this.o.onmessage = function(e) {
e = e.data;
d.h[e.id](e.msg);
delete d.h[e.id];
};
}
this.o.postMessage({task:"init", factory:b, options:a});
}
}
P("add");
P("append");
P("search");
P("update");
P("remove");
function P(a) {
O.prototype[a] = O.prototype[a + "Async"] = function() {
const b = this, c = [].slice.call(arguments);
var d = c[c.length - 1];
let e;
D(d) && (e = d, c.splice(c.length - 1, 1));
d = new Promise(function(f) {
setTimeout(function() {
b.h[++wa] = f;
b.o.postMessage({task:a, id:wa, args:c});
});
});
return e ? (d.then(e), this) : d;
};
}
function xa(a, b, c) {
let d;
try {
d = b ? eval('new (require("worker_threads")["Worker"])("../dist/node/node.js")') : a ? new Worker(URL.createObjectURL(new Blob(["onmessage=" + va.toString()], {type:"text/javascript"}))) : new Worker(x(c) ? c : "worker/worker.js", {type:"module"});
} catch (e) {
}
return d;
}
;function Q(a) {
if (!(this instanceof Q)) {
return new Q(a);
}
var b = a.document || a.doc || a, c;
this.K = [];
this.h = [];
this.A = [];
this.register = v();
this.key = (c = b.key || b.id) && S(c, this.A) || "id";
this.m = u(a.fastupdate);
this.C = (c = b.store) && !0 !== c && [];
this.store = c && v();
this.I = (c = b.tag) && S(c, this.A);
this.l = c && v();
this.cache = (c = a.cache) && new J(c);
a.cache = !1;
this.o = a.worker;
this.async = !1;
c = v();
let d = b.index || b.field || b;
x(d) && (d = [d]);
for (let e = 0, f, h; e < d.length; e++) {
f = d[e], x(f) || (h = f, f = f.field), h = C(h) ? Object.assign({}, a, h) : a, this.o && (c[f] = new O(h), c[f].o || (this.o = !1)), this.o || (c[f] = new K(h, this.register)), this.K[e] = S(f, this.A), this.h[e] = f;
}
if (this.C) {
for (a = b.store, x(a) && (a = [a]), b = 0; b < a.length; b++) {
this.C[b] = S(a[b], this.A);
}
}
this.index = c;
}
function S(a, b) {
const c = a.split(":");
let d = 0;
for (let e = 0; e < c.length; e++) {
a = c[e], 0 <= a.indexOf("[]") && (a = a.substring(0, a.length - 2)) && (b[d] = !0), a && (c[d++] = a);
}
d < c.length && (c.length = d);
return 1 < d ? c : c[0];
}
function T(a, b) {
if (x(b)) {
a = a[b];
} else {
for (let c = 0; a && c < b.length; c++) {
a = a[b[c]];
}
}
return a;
}
function U(a, b, c, d, e) {
a = a[e];
if (d === c.length - 1) {
b[e] = a;
} else if (a) {
if (a.constructor === Array) {
for (b = b[e] = Array(a.length), e = 0; e < a.length; e++) {
U(a, b, c, d, e);
}
} else {
b = b[e] || (b[e] = v()), e = c[++d], U(a, b, c, d, e);
}
}
}
function V(a, b, c, d, e, f, h, g) {
if (a = a[h]) {
if (d === b.length - 1) {
if (a.constructor === Array) {
if (c[d]) {
for (b = 0; b < a.length; b++) {
e.add(f, a[b], !0, !0);
}
return;
}
a = a.join(" ");
}
e.add(f, a, g, !0);
} else {
if (a.constructor === Array) {
for (h = 0; h < a.length; h++) {
V(a, b, c, d, e, f, h, g);
}
} else {
h = b[++d], V(a, b, c, d, e, f, h, g);
}
}
}
}
t = Q.prototype;
t.add = function(a, b, c) {
C(a) && (b = a, a = T(b, this.key));
if (b && (a || 0 === a)) {
if (!c && this.register[a]) {
return this.update(a, b);
}
for (let d = 0, e, f; d < this.h.length; d++) {
f = this.h[d], e = this.K[d], x(e) && (e = [e]), V(b, e, this.A, 0, this.index[f], a, e[0], c);
}
if (this.I) {
let d = T(b, this.I), e = v();
x(d) && (d = [d]);
for (let f = 0, h, g; f < d.length; f++) {
if (h = d[f], !e[h] && (e[h] = 1, g = this.l[h] || (this.l[h] = []), !c || !g.includes(a))) {
if (g[g.length] = a, this.m) {
const k = this.register[a] || (this.register[a] = []);
k[k.length] = g;
}
}
}
}
if (this.store && (!c || !this.store[a])) {
let d;
if (this.C) {
d = v();
for (let e = 0, f; e < this.C.length; e++) {
f = this.C[e], x(f) ? d[f] = b[f] : U(b, d, f, 0, f[0]);
}
}
this.store[a] = d || b;
}
}
return this;
};
t.append = function(a, b) {
return this.add(a, b, !0);
};
t.update = function(a, b) {
return this.remove(a).add(a, b);
};
t.remove = function(a) {
C(a) && (a = T(a, this.key));
if (this.register[a]) {
for (var b = 0; b < this.h.length && (this.index[this.h[b]].remove(a, !this.o), !this.m); b++) {
}
if (this.I && !this.m) {
for (let c in this.l) {
b = this.l[c];
const d = b.indexOf(a);
-1 !== d && (1 < b.length ? b.splice(d, 1) : delete this.l[c]);
}
}
this.store && delete this.store[a];
delete this.register[a];
}
return this;
};
t.search = function(a, b, c, d) {
c || (!b && C(a) ? (c = a, a = "") : C(b) && (c = b, b = 0));
let e = [], f = [], h, g, k, m, n, w, q = 0;
if (c) {
if (c.constructor === Array) {
k = c, c = null;
} else {
a = c.query || a;
k = (h = c.pluck) || c.index || c.field;
m = c.tag;
g = this.store && c.enrich;
n = "and" === c.bool;
b = c.limit || b || 100;
w = c.offset || 0;
if (m && (x(m) && (m = [m]), !a)) {
for (let l = 0, p; l < m.length; l++) {
if (p = ya.call(this, m[l], b, w, g)) {
e[e.length] = p, q++;
}
}
return q ? e : [];
}
x(k) && (k = [k]);
}
}
k || (k = this.h);
n = n && (1 < k.length || m && 1 < m.length);
const r = !d && (this.o || this.async) && [];
for (let l = 0, p, A, B; l < k.length; l++) {
let z;
A = k[l];
x(A) || (z = A, A = z.field, a = z.query || a, b = z.limit || b, g = z.enrich || g);
if (r) {
r[l] = this.index[A].searchAsync(a, b, z || c);
} else {
d ? p = d[l] : p = this.index[A].search(a, b, z || c);
B = p && p.length;
if (m && B) {
const y = [];
let H = 0;
n && (y[0] = [p]);
for (let X = 0, qa, R; X < m.length; X++) {
if (qa = m[X], B = (R = this.l[qa]) && R.length) {
H++, y[y.length] = n ? [R] : R;
}
}
H && (p = n ? ma(y, b || 100, w || 0) : na(p, y), B = p.length);
}
if (B) {
f[q] = A, e[q++] = p;
} else if (n) {
return [];
}
}
}
if (r) {
const l = this;
return new Promise(function(p) {
Promise.all(r).then(function(A) {
p(l.search(a, b, c, A));
});
});
}
if (!q) {
return [];
}
if (h && (!g || !this.store)) {
return e[0];
}
for (let l = 0, p; l < f.length; l++) {
p = e[l];
p.length && g && (p = za.call(this, p));
if (h) {
return p;
}
e[l] = {field:f[l], result:p};
}
return e;
};
function ya(a, b, c, d) {
let e = this.l[a], f = e && e.length - c;
if (f && 0 < f) {
if (f > b || c) {
e = e.slice(c, c + b);
}
d && (e = za.call(this, e));
return {tag:a, result:e};
}
}
function za(a) {
const b = Array(a.length);
for (let c = 0, d; c < a.length; c++) {
d = a[c], b[c] = {id:d, doc:this.store[d]};
}
return b;
}
t.contain = function(a) {
return !!this.register[a];
};
t.get = function(a) {
return this.store[a];
};
t.set = function(a, b) {
this.store[a] = b;
return this;
};
t.searchCache = oa;
t.export = function(a, b, c, d, e, f) {
let h;
"undefined" === typeof f && (h = new Promise(g => {
f = g;
}));
e || (e = 0);
d || (d = 0);
if (d < this.h.length) {
const g = this.h[d], k = this.index[g];
b = this;
setTimeout(function() {
k.export(a, b, e ? g : "", d, e++, f) || (d++, e = 1, b.export(a, b, g, d, e, f));
});
} else {
let g, k;
switch(e) {
case 1:
g = "tag";
k = this.l;
c = null;
break;
case 2:
g = "store";
k = this.store;
c = null;
break;
default:
f();
return;
}
ra(a, this, c, g, d, e, k, f);
}
return h;
};
t.import = function(a, b) {
if (b) {
switch(x(b) && (b = JSON.parse(b)), a) {
case "tag":
this.l = b;
break;
case "reg":
this.m = !1;
this.register = b;
for (let d = 0, e; d < this.h.length; d++) {
e = this.index[this.h[d]], e.register = b, e.m = !1;
}
break;
case "store":
this.store = b;
break;
default:
a = a.split(".");
const c = a[0];
a = a[1];
c && a && this.index[c].import(a, b);
}
}
};
la(Q.prototype);
var Ba = {encode:Aa, F:!1, G:""};
const Ca = [F("[\u00e0\u00e1\u00e2\u00e3\u00e4\u00e5]"), "a", F("[\u00e8\u00e9\u00ea\u00eb]"), "e", F("[\u00ec\u00ed\u00ee\u00ef]"), "i", F("[\u00f2\u00f3\u00f4\u00f5\u00f6\u0151]"), "o", F("[\u00f9\u00fa\u00fb\u00fc\u0171]"), "u", F("[\u00fd\u0177\u00ff]"), "y", F("\u00f1"), "n", F("[\u00e7c]"), "k", F("\u00df"), "s", F(" & "), " and "];
function Aa(a) {
var b = a = "" + a;
b.normalize && (b = b.normalize("NFD").replace(ea, ""));
return ca.call(this, b.toLowerCase(), !a.normalize && Ca);
}
;var Ea = {encode:Da, F:!1, G:"strict"};
const Fa = /[^a-z0-9]+/, Ga = {b:"p", v:"f", w:"f", z:"s", x:"s", "\u00df":"s", d:"t", n:"m", c:"k", g:"k", j:"k", q:"k", i:"e", y:"e", u:"o"};
function Da(a) {
a = Aa.call(this, a).join(" ");
const b = [];
if (a) {
const c = a.split(Fa), d = c.length;
for (let e = 0, f, h = 0; e < d; e++) {
if ((a = c[e]) && (!this.filter || !this.filter[a])) {
f = a[0];
let g = Ga[f] || f, k = g;
for (let m = 1; m < a.length; m++) {
f = a[m];
const n = Ga[f] || f;
n && n !== k && (g += n, k = n);
}
b[h++] = g;
}
}
}
return b;
}
;var Ia = {encode:Ha, F:!1, G:""};
const Ja = [F("ae"), "a", F("oe"), "o", F("sh"), "s", F("th"), "t", F("ph"), "f", F("pf"), "f", F("(?![aeo])h(?![aeo])"), "", F("(?!^[aeo])h(?!^[aeo])"), ""];
function Ha(a, b) {
a && (a = Da.call(this, a).join(" "), 2 < a.length && (a = E(a, Ja)), b || (1 < a.length && (a = ha(a)), a && (a = a.split(" "))));
return a || [];
}
;var La = {encode:Ka, F:!1, G:""};
const Ma = F("(?!\\b)[aeo]");
function Ka(a) {
a && (a = Ha.call(this, a, !0), 1 < a.length && (a = a.replace(Ma, "")), 1 < a.length && (a = ha(a)), a && (a = a.split(" ")));
return a || [];
}
;G["latin:default"] = ja;
G["latin:simple"] = Ba;
G["latin:balance"] = Ea;
G["latin:advanced"] = Ia;
G["latin:extra"] = La;
const W = self;
let Y;
const Z = {Index:K, Document:Q, Worker:O, registerCharset:function(a, b) {
G[a] = b;
}, registerLanguage:function(a, b) {
ka[a] = b;
}};
(Y = W.define) && Y.amd ? Y([], function() {
return Z;
}) : W.exports ? W.exports = Z : W.FlexSearch = Z;

34
dist/flexsearch.bundle.module.min.js vendored Normal file
View File

@@ -0,0 +1,34 @@
/**!
* FlexSearch.js v0.7.39 (Bundle.module)
* Author and Copyright: Thomas Wilkerling
* Licence: Apache-2.0
* Hosted by Nextapps GmbH
* https://github.com/nextapps-de/flexsearch
*/
var t;function u(a){return"undefined"!==typeof a?a:!0}function aa(a){const b=Array(a);for(let c=0;c<a;c++)b[c]=v();return b}function v(){return Object.create(null)}function ba(a,b){return b.length-a.length}function x(a){return"string"===typeof a}function C(a){return"object"===typeof a}function D(a){return"function"===typeof a};function ca(a,b){var c=da;if(a&&(b&&(a=E(a,b)),this.H&&(a=E(a,this.H)),this.J&&1<a.length&&(a=E(a,this.J)),c||""===c)){b=a.split(c);if(this.filter){a=this.filter;c=b.length;const d=[];for(let e=0,f=0;e<c;e++){const h=b[e];h&&!a[h]&&(d[f++]=h)}a=d}else a=b;return a}return a}const da=/[\p{Z}\p{S}\p{P}\p{C}]+/u,ea=/[\u0300-\u036f]/g;
function fa(a,b){const c=Object.keys(a),d=c.length,e=[];let f="",h=0;for(let g=0,k,m;g<d;g++)k=c[g],(m=a[k])?(e[h++]=F(b?"(?!\\b)"+k+"(\\b|_)":k),e[h++]=m):f+=(f?"|":"")+k;f&&(e[h++]=F(b?"(?!\\b)("+f+")(\\b|_)":"("+f+")"),e[h]="");return e}function E(a,b){for(let c=0,d=b.length;c<d&&(a=a.replace(b[c],b[c+1]),a);c+=2);return a}function F(a){return new RegExp(a,"g")}function ha(a){let b="",c="";for(let d=0,e=a.length,f;d<e;d++)(f=a[d])!==c&&(b+=c=f);return b};var ja={encode:ia,F:!1,G:""};function ia(a){return ca.call(this,(""+a).toLowerCase(),!1)};const ka={},G={};function la(a){I(a,"add");I(a,"append");I(a,"search");I(a,"update");I(a,"remove")}function I(a,b){a[b+"Async"]=function(){const c=this,d=arguments;var e=d[d.length-1];let f;D(e)&&(f=e,delete d[d.length-1]);e=new Promise(function(h){setTimeout(function(){c.async=!0;const g=c[b].apply(c,d);c.async=!1;h(g)})});return f?(e.then(f),this):e}};function ma(a,b,c,d){const e=a.length;let f=[],h,g,k=0;d&&(d=[]);for(let m=e-1;0<=m;m--){const n=a[m],w=n.length,q=v();let r=!h;for(let l=0;l<w;l++){const p=n[l],A=p.length;if(A)for(let B=0,z,y;B<A;B++)if(y=p[B],h){if(h[y]){if(!m)if(c)c--;else if(f[k++]=y,k===b)return f;if(m||d)q[y]=1;r=!0}if(d&&(z=(g[y]||0)+1,g[y]=z,z<e)){const H=d[z-2]||(d[z-2]=[]);H[H.length]=y}}else q[y]=1}if(d)h||(g=q);else if(!r)return[];h=q}if(d)for(let m=d.length-1,n,w;0<=m;m--){n=d[m];w=n.length;for(let q=0,r;q<w;q++)if(r=
n[q],!h[r]){if(c)c--;else if(f[k++]=r,k===b)return f;h[r]=1}}return f}function na(a,b){const c=v(),d=v(),e=[];for(let f=0;f<a.length;f++)c[a[f]]=1;for(let f=0,h;f<b.length;f++){h=b[f];for(let g=0,k;g<h.length;g++)k=h[g],c[k]&&!d[k]&&(d[k]=1,e[e.length]=k)}return e};function J(a){this.l=!0!==a&&a;this.cache=v();this.h=[]}function oa(a,b,c){C(a)&&(a=a.query);let d=this.cache.get(a);d||(d=this.search(a,b,c),this.cache.set(a,d));return d}J.prototype.set=function(a,b){if(!this.cache[a]){var c=this.h.length;c===this.l?delete this.cache[this.h[c-1]]:c++;for(--c;0<c;c--)this.h[c]=this.h[c-1];this.h[0]=a}this.cache[a]=b};J.prototype.get=function(a){const b=this.cache[a];if(this.l&&b&&(a=this.h.indexOf(a))){const c=this.h[a-1];this.h[a-1]=this.h[a];this.h[a]=c}return b};const qa={memory:{charset:"latin:extra",D:3,B:4,m:!1},performance:{D:3,B:3,s:!1,context:{depth:2,D:1}},match:{charset:"latin:extra",G:"reverse"},score:{charset:"latin:advanced",D:20,B:3,context:{depth:3,D:9}},"default":{}};function ra(a,b,c,d,e,f,h,g){setTimeout(function(){const k=a(c?c+"."+d:d,JSON.stringify(h));k&&k.then?k.then(function(){b.export(a,b,c,e,f+1,g)}):b.export(a,b,c,e,f+1,g)})};function K(a,b){if(!(this instanceof K))return new K(a);var c;if(a){x(a)?a=qa[a]:(c=a.preset)&&(a=Object.assign({},c[c],a));c=a.charset;var d=a.lang;x(c)&&(-1===c.indexOf(":")&&(c+=":default"),c=G[c]);x(d)&&(d=ka[d])}else a={};let e,f,h=a.context||{};this.encode=a.encode||c&&c.encode||ia;this.register=b||v();this.D=e=a.resolution||9;this.G=b=c&&c.G||a.tokenize||"strict";this.depth="strict"===b&&h.depth;this.l=u(h.bidirectional);this.s=f=u(a.optimize);this.m=u(a.fastupdate);this.B=a.minlength||1;this.C=
a.boost;this.map=f?aa(e):v();this.A=e=h.resolution||1;this.h=f?aa(e):v();this.F=c&&c.F||a.rtl;this.H=(b=a.matcher||d&&d.H)&&fa(b,!1);this.J=(b=a.stemmer||d&&d.J)&&fa(b,!0);if(c=b=a.filter||d&&d.filter){c=b;d=v();for(let g=0,k=c.length;g<k;g++)d[c[g]]=1;c=d}this.filter=c;this.cache=(b=a.cache)&&new J(b)}t=K.prototype;t.append=function(a,b){return this.add(a,b,!0)};
t.add=function(a,b,c,d){if(b&&(a||0===a)){if(!d&&!c&&this.register[a])return this.update(a,b);b=this.encode(b);if(d=b.length){const m=v(),n=v(),w=this.depth,q=this.D;for(let r=0;r<d;r++){let l=b[this.F?d-1-r:r];var e=l.length;if(l&&e>=this.B&&(w||!n[l])){var f=L(q,d,r),h="";switch(this.G){case "full":if(2<e){for(f=0;f<e;f++)for(var g=e;g>f;g--)if(g-f>=this.B){var k=L(q,d,r,e,f);h=l.substring(f,g);M(this,n,h,k,a,c)}break}case "reverse":if(1<e){for(g=e-1;0<g;g--)h=l[g]+h,h.length>=this.B&&M(this,n,
h,L(q,d,r,e,g),a,c);h=""}case "forward":if(1<e){for(g=0;g<e;g++)h+=l[g],h.length>=this.B&&M(this,n,h,f,a,c);break}default:if(this.C&&(f=Math.min(f/this.C(b,l,r)|0,q-1)),M(this,n,l,f,a,c),w&&1<d&&r<d-1)for(e=v(),h=this.A,f=l,g=Math.min(w+1,d-r),e[f]=1,k=1;k<g;k++)if((l=b[this.F?d-1-r-k:r+k])&&l.length>=this.B&&!e[l]){e[l]=1;const p=this.l&&l>f;M(this,m,p?f:l,L(h+(d/2>h?0:1),d,r,g-1,k-1),a,c,p?l:f)}}}}this.m||(this.register[a]=1)}}return this};
function L(a,b,c,d,e){return c&&1<a?b+(d||0)<=a?c+(e||0):(a-1)/(b+(d||0))*(c+(e||0))+1|0:0}function M(a,b,c,d,e,f,h){let g=h?a.h:a.map;if(!b[c]||h&&!b[c][h])a.s&&(g=g[d]),h?(b=b[c]||(b[c]=v()),b[h]=1,g=g[h]||(g[h]=v())):b[c]=1,g=g[c]||(g[c]=[]),a.s||(g=g[d]||(g[d]=[])),f&&g.includes(e)||(g[g.length]=e,a.m&&(a=a.register[e]||(a.register[e]=[]),a[a.length]=g))}
t.search=function(a,b,c){c||(!b&&C(a)?(c=a,a=c.query):C(b)&&(c=b));let d=[],e;let f,h=0;if(c){a=c.query||a;b=c.limit;h=c.offset||0;var g=c.context;f=c.suggest}if(a&&(a=this.encode(""+a),e=a.length,1<e)){c=v();var k=[];for(let n=0,w=0,q;n<e;n++)if((q=a[n])&&q.length>=this.B&&!c[q])if(this.s||f||this.map[q])k[w++]=q,c[q]=1;else return d;a=k;e=a.length}if(!e)return d;b||(b=100);g=this.depth&&1<e&&!1!==g;c=0;let m;g?(m=a[0],c=1):1<e&&a.sort(ba);for(let n,w;c<e;c++){w=a[c];g?(n=sa(this,d,f,b,h,2===e,w,
m),f&&!1===n&&d.length||(m=w)):n=sa(this,d,f,b,h,1===e,w);if(n)return n;if(f&&c===e-1){k=d.length;if(!k){if(g){g=0;c=-1;continue}return d}if(1===k)return ta(d[0],b,h)}}return ma(d,b,h,f)};
function sa(a,b,c,d,e,f,h,g){let k=[],m=g?a.h:a.map;a.s||(m=ua(m,h,g,a.l));if(m){let n=0;const w=Math.min(m.length,g?a.A:a.D);for(let q=0,r=0,l,p;q<w;q++)if(l=m[q])if(a.s&&(l=ua(l,h,g,a.l)),e&&l&&f&&(p=l.length,p<=e?(e-=p,l=null):(l=l.slice(e),e=0)),l&&(k[n++]=l,f&&(r+=l.length,r>=d)))break;if(n){if(f)return ta(k,d,0);b[b.length]=k;return}}return!c&&k}function ta(a,b,c){a=1===a.length?a[0]:[].concat.apply([],a);return c||a.length>b?a.slice(c,c+b):a}
function ua(a,b,c,d){c?(d=d&&b>c,a=(a=a[d?b:c])&&a[d?c:b]):a=a[b];return a}t.contain=function(a){return!!this.register[a]};t.update=function(a,b){return this.remove(a).add(a,b)};
t.remove=function(a,b){const c=this.register[a];if(c){if(this.m)for(let d=0,e;d<c.length;d++)e=c[d],e.splice(e.indexOf(a),1);else N(this.map,a,this.D,this.s),this.depth&&N(this.h,a,this.A,this.s);b||delete this.register[a];if(this.cache){b=this.cache;for(let d=0,e,f;d<b.h.length;d++)f=b.h[d],e=b.cache[f],e.includes(a)&&(b.h.splice(d--,1),delete b.cache[f])}}return this};
function N(a,b,c,d,e){let f=0;if(a.constructor===Array)if(e)b=a.indexOf(b),-1!==b?1<a.length&&(a.splice(b,1),f++):f++;else{e=Math.min(a.length,c);for(let h=0,g;h<e;h++)if(g=a[h])f=N(g,b,c,d,e),d||f||delete a[h]}else for(let h in a)(f=N(a[h],b,c,d,e))||delete a[h];return f}t.searchCache=oa;
t.export=function(a,b,c,d,e,f){let h=!0;"undefined"===typeof f&&(h=new Promise(m=>{f=m}));let g,k;switch(e||(e=0)){case 0:g="reg";if(this.m){k=v();for(let m in this.register)k[m]=1}else k=this.register;break;case 1:g="cfg";k={doc:0,opt:this.s?1:0};break;case 2:g="map";k=this.map;break;case 3:g="ctx";k=this.h;break;default:"undefined"===typeof c&&f&&f();return}ra(a,b||this,c,g,d,e,k,f);return h};
t.import=function(a,b){if(b)switch(x(b)&&(b=JSON.parse(b)),a){case "cfg":this.s=!!b.opt;break;case "reg":this.m=!1;this.register=b;break;case "map":this.map=b;break;case "ctx":this.h=b}};la(K.prototype);function va(a){a=a.data;var b=self._index;const c=a.args;var d=a.task;switch(d){case "init":d=a.options||{};a=a.factory;b=d.encode;d.cache=!1;b&&0===b.indexOf("function")&&(d.encode=Function("return "+b)());a?(Function("return "+a)()(self),self._index=new self.FlexSearch.Index(d),delete self.FlexSearch):self._index=new K(d);break;default:a=a.id,b=b[d].apply(b,c),postMessage("search"===d?{id:a,msg:b}:{id:a})}};let wa=0;function O(a){if(!(this instanceof O))return new O(a);var b;a?D(b=a.encode)&&(a.encode=b.toString()):a={};(b=(self||window)._factory)&&(b=b.toString());const c="undefined"===typeof window&&self.exports,d=this;this.o=xa(b,c,a.worker);this.h=v();if(this.o){if(c)this.o.on("message",function(e){d.h[e.id](e.msg);delete d.h[e.id]});else this.o.onmessage=function(e){e=e.data;d.h[e.id](e.msg);delete d.h[e.id]};this.o.postMessage({task:"init",factory:b,options:a})}}P("add");P("append");P("search");
P("update");P("remove");function P(a){O.prototype[a]=O.prototype[a+"Async"]=function(){const b=this,c=[].slice.call(arguments);var d=c[c.length-1];let e;D(d)&&(e=d,c.splice(c.length-1,1));d=new Promise(function(f){setTimeout(function(){b.h[++wa]=f;b.o.postMessage({task:a,id:wa,args:c})})});return e?(d.then(e),this):d}}
function xa(a,b,c){let d;try{d=b?eval('new (require("worker_threads")["Worker"])("../dist/node/node.js")'):a?new Worker(URL.createObjectURL(new Blob(["onmessage="+va.toString()],{type:"text/javascript"}))):new Worker(x(c)?c:"worker/worker.js",{type:"module"})}catch(e){}return d};function Q(a){if(!(this instanceof Q))return new Q(a);var b=a.document||a.doc||a,c;this.K=[];this.h=[];this.A=[];this.register=v();this.key=(c=b.key||b.id)&&S(c,this.A)||"id";this.m=u(a.fastupdate);this.C=(c=b.store)&&!0!==c&&[];this.store=c&&v();this.I=(c=b.tag)&&S(c,this.A);this.l=c&&v();this.cache=(c=a.cache)&&new J(c);a.cache=!1;this.o=a.worker;this.async=!1;c=v();let d=b.index||b.field||b;x(d)&&(d=[d]);for(let e=0,f,h;e<d.length;e++)f=d[e],x(f)||(h=f,f=f.field),h=C(h)?Object.assign({},a,h):a,
this.o&&(c[f]=new O(h),c[f].o||(this.o=!1)),this.o||(c[f]=new K(h,this.register)),this.K[e]=S(f,this.A),this.h[e]=f;if(this.C)for(a=b.store,x(a)&&(a=[a]),b=0;b<a.length;b++)this.C[b]=S(a[b],this.A);this.index=c}function S(a,b){const c=a.split(":");let d=0;for(let e=0;e<c.length;e++)a=c[e],0<=a.indexOf("[]")&&(a=a.substring(0,a.length-2))&&(b[d]=!0),a&&(c[d++]=a);d<c.length&&(c.length=d);return 1<d?c:c[0]}function T(a,b){if(x(b))a=a[b];else for(let c=0;a&&c<b.length;c++)a=a[b[c]];return a}
function U(a,b,c,d,e){a=a[e];if(d===c.length-1)b[e]=a;else if(a)if(a.constructor===Array)for(b=b[e]=Array(a.length),e=0;e<a.length;e++)U(a,b,c,d,e);else b=b[e]||(b[e]=v()),e=c[++d],U(a,b,c,d,e)}function V(a,b,c,d,e,f,h,g){if(a=a[h])if(d===b.length-1){if(a.constructor===Array){if(c[d]){for(b=0;b<a.length;b++)e.add(f,a[b],!0,!0);return}a=a.join(" ")}e.add(f,a,g,!0)}else if(a.constructor===Array)for(h=0;h<a.length;h++)V(a,b,c,d,e,f,h,g);else h=b[++d],V(a,b,c,d,e,f,h,g)}t=Q.prototype;
t.add=function(a,b,c){C(a)&&(b=a,a=T(b,this.key));if(b&&(a||0===a)){if(!c&&this.register[a])return this.update(a,b);for(let d=0,e,f;d<this.h.length;d++)f=this.h[d],e=this.K[d],x(e)&&(e=[e]),V(b,e,this.A,0,this.index[f],a,e[0],c);if(this.I){let d=T(b,this.I),e=v();x(d)&&(d=[d]);for(let f=0,h,g;f<d.length;f++)if(h=d[f],!e[h]&&(e[h]=1,g=this.l[h]||(this.l[h]=[]),!c||!g.includes(a)))if(g[g.length]=a,this.m){const k=this.register[a]||(this.register[a]=[]);k[k.length]=g}}if(this.store&&(!c||!this.store[a])){let d;
if(this.C){d=v();for(let e=0,f;e<this.C.length;e++)f=this.C[e],x(f)?d[f]=b[f]:U(b,d,f,0,f[0])}this.store[a]=d||b}}return this};t.append=function(a,b){return this.add(a,b,!0)};t.update=function(a,b){return this.remove(a).add(a,b)};
t.remove=function(a){C(a)&&(a=T(a,this.key));if(this.register[a]){for(var b=0;b<this.h.length&&(this.index[this.h[b]].remove(a,!this.o),!this.m);b++);if(this.I&&!this.m)for(let c in this.l){b=this.l[c];const d=b.indexOf(a);-1!==d&&(1<b.length?b.splice(d,1):delete this.l[c])}this.store&&delete this.store[a];delete this.register[a]}return this};
t.search=function(a,b,c,d){c||(!b&&C(a)?(c=a,a=""):C(b)&&(c=b,b=0));let e=[],f=[],h,g,k,m,n,w,q=0;if(c)if(c.constructor===Array)k=c,c=null;else{a=c.query||a;k=(h=c.pluck)||c.index||c.field;m=c.tag;g=this.store&&c.enrich;n="and"===c.bool;b=c.limit||b||100;w=c.offset||0;if(m&&(x(m)&&(m=[m]),!a)){for(let l=0,p;l<m.length;l++)if(p=ya.call(this,m[l],b,w,g))e[e.length]=p,q++;return q?e:[]}x(k)&&(k=[k])}k||(k=this.h);n=n&&(1<k.length||m&&1<m.length);const r=!d&&(this.o||this.async)&&[];for(let l=0,p,A,B;l<
k.length;l++){let z;A=k[l];x(A)||(z=A,A=z.field,a=z.query||a,b=z.limit||b,g=z.enrich||g);if(r)r[l]=this.index[A].searchAsync(a,b,z||c);else{d?p=d[l]:p=this.index[A].search(a,b,z||c);B=p&&p.length;if(m&&B){const y=[];let H=0;n&&(y[0]=[p]);for(let X=0,pa,R;X<m.length;X++)if(pa=m[X],B=(R=this.l[pa])&&R.length)H++,y[y.length]=n?[R]:R;H&&(p=n?ma(y,b||100,w||0):na(p,y),B=p.length)}if(B)f[q]=A,e[q++]=p;else if(n)return[]}}if(r){const l=this;return new Promise(function(p){Promise.all(r).then(function(A){p(l.search(a,
b,c,A))})})}if(!q)return[];if(h&&(!g||!this.store))return e[0];for(let l=0,p;l<f.length;l++){p=e[l];p.length&&g&&(p=za.call(this,p));if(h)return p;e[l]={field:f[l],result:p}}return e};function ya(a,b,c,d){let e=this.l[a],f=e&&e.length-c;if(f&&0<f){if(f>b||c)e=e.slice(c,c+b);d&&(e=za.call(this,e));return{tag:a,result:e}}}function za(a){const b=Array(a.length);for(let c=0,d;c<a.length;c++)d=a[c],b[c]={id:d,doc:this.store[d]};return b}t.contain=function(a){return!!this.register[a]};t.get=function(a){return this.store[a]};
t.set=function(a,b){this.store[a]=b;return this};t.searchCache=oa;t.export=function(a,b,c,d,e,f){let h;"undefined"===typeof f&&(h=new Promise(g=>{f=g}));e||(e=0);d||(d=0);if(d<this.h.length){const g=this.h[d],k=this.index[g];b=this;setTimeout(function(){k.export(a,b,e?g:"",d,e++,f)||(d++,e=1,b.export(a,b,g,d,e,f))})}else{let g,k;switch(e){case 1:g="tag";k=this.l;c=null;break;case 2:g="store";k=this.store;c=null;break;default:f();return}ra(a,this,c,g,d,e,k,f)}return h};
t.import=function(a,b){if(b)switch(x(b)&&(b=JSON.parse(b)),a){case "tag":this.l=b;break;case "reg":this.m=!1;this.register=b;for(let d=0,e;d<this.h.length;d++)e=this.index[this.h[d]],e.register=b,e.m=!1;break;case "store":this.store=b;break;default:a=a.split(".");const c=a[0];a=a[1];c&&a&&this.index[c].import(a,b)}};la(Q.prototype);var Ba={encode:Aa,F:!1,G:""};const Ca=[F("[\u00e0\u00e1\u00e2\u00e3\u00e4\u00e5]"),"a",F("[\u00e8\u00e9\u00ea\u00eb]"),"e",F("[\u00ec\u00ed\u00ee\u00ef]"),"i",F("[\u00f2\u00f3\u00f4\u00f5\u00f6\u0151]"),"o",F("[\u00f9\u00fa\u00fb\u00fc\u0171]"),"u",F("[\u00fd\u0177\u00ff]"),"y",F("\u00f1"),"n",F("[\u00e7c]"),"k",F("\u00df"),"s",F(" & ")," and "];function Aa(a){var b=a=""+a;b.normalize&&(b=b.normalize("NFD").replace(ea,""));return ca.call(this,b.toLowerCase(),!a.normalize&&Ca)};var Ea={encode:Da,F:!1,G:"strict"};const Fa=/[^a-z0-9]+/,Ga={b:"p",v:"f",w:"f",z:"s",x:"s","\u00df":"s",d:"t",n:"m",c:"k",g:"k",j:"k",q:"k",i:"e",y:"e",u:"o"};function Da(a){a=Aa.call(this,a).join(" ");const b=[];if(a){const c=a.split(Fa),d=c.length;for(let e=0,f,h=0;e<d;e++)if((a=c[e])&&(!this.filter||!this.filter[a])){f=a[0];let g=Ga[f]||f,k=g;for(let m=1;m<a.length;m++){f=a[m];const n=Ga[f]||f;n&&n!==k&&(g+=n,k=n)}b[h++]=g}}return b};var Ia={encode:Ha,F:!1,G:""};const Ja=[F("ae"),"a",F("oe"),"o",F("sh"),"s",F("th"),"t",F("ph"),"f",F("pf"),"f",F("(?![aeo])h(?![aeo])"),"",F("(?!^[aeo])h(?!^[aeo])"),""];function Ha(a,b){a&&(a=Da.call(this,a).join(" "),2<a.length&&(a=E(a,Ja)),b||(1<a.length&&(a=ha(a)),a&&(a=a.split(" "))));return a||[]};var La={encode:Ka,F:!1,G:""};const Ma=F("(?!\\b)[aeo]");function Ka(a){a&&(a=Ha.call(this,a,!0),1<a.length&&(a=a.replace(Ma,"")),1<a.length&&(a=ha(a)),a&&(a=a.split(" ")));return a||[]};G["latin:default"]=ja;G["latin:simple"]=Ba;G["latin:balance"]=Ea;G["latin:advanced"]=Ia;G["latin:extra"]=La;const W=self;let Y;const Z={Index:K,Document:Q,Worker:O,registerCharset:function(a,b){G[a]=b},registerLanguage:function(a,b){ka[a]=b}};(Y=W.define)&&Y.amd?Y([],function(){return Z}):W.exports?W.exports=Z:W.FlexSearch=Z;

719
dist/flexsearch.compact.debug.js vendored Normal file
View File

@@ -0,0 +1,719 @@
/**!
* FlexSearch.js v0.7.39 (Compact)
* Author and Copyright: Thomas Wilkerling
* Licence: Apache-2.0
* Hosted by Nextapps GmbH
* https://github.com/nextapps-de/flexsearch
*/
(function(self){'use strict';
var t;
function v(a) {
return "undefined" !== typeof a ? a : !0;
}
function w(a) {
const b = Array(a);
for (let c = 0; c < a; c++) {
b[c] = z();
}
return b;
}
function z() {
return Object.create(null);
}
function aa(a, b) {
return b.length - a.length;
}
function C(a) {
return "string" === typeof a;
}
function D(a) {
return "object" === typeof a;
}
;function E(a, b) {
var c = ba;
if (a && (b && (a = F(a, b)), this.G && (a = F(a, this.G)), this.H && 1 < a.length && (a = F(a, this.H)), c || "" === c)) {
b = a.split(c);
if (this.filter) {
a = this.filter;
c = b.length;
const e = [];
for (let d = 0, f = 0; d < c; d++) {
const g = b[d];
g && !a[g] && (e[f++] = g);
}
a = e;
} else {
a = b;
}
return a;
}
return a;
}
const ba = /[\p{Z}\p{S}\p{P}\p{C}]+/u, ca = /[\u0300-\u036f]/g;
function H(a, b) {
const c = Object.keys(a), e = c.length, d = [];
let f = "", g = 0;
for (let h = 0, k, m; h < e; h++) {
k = c[h], (m = a[k]) ? (d[g++] = I(b ? "(?!\\b)" + k + "(\\b|_)" : k), d[g++] = m) : f += (f ? "|" : "") + k;
}
f && (d[g++] = I(b ? "(?!\\b)(" + f + ")(\\b|_)" : "(" + f + ")"), d[g] = "");
return d;
}
function F(a, b) {
for (let c = 0, e = b.length; c < e && (a = a.replace(b[c], b[c + 1]), a); c += 2) {
}
return a;
}
function I(a) {
return new RegExp(a, "g");
}
function J(a) {
let b = "", c = "";
for (let e = 0, d = a.length, f; e < d; e++) {
(f = a[e]) !== c && (b += c = f);
}
return b;
}
;var da = {encode:K, B:!1, C:""};
function K(a) {
return E.call(this, ("" + a).toLowerCase(), !1);
}
;const ea = {}, L = {};
function fa(a) {
M(a, "add");
M(a, "append");
M(a, "search");
M(a, "update");
M(a, "remove");
}
function M(a, b) {
a[b + "Async"] = function() {
const c = this, e = arguments;
var d = e[e.length - 1];
let f;
"function" === typeof d && (f = d, delete e[e.length - 1]);
d = new Promise(function(g) {
setTimeout(function() {
c.async = !0;
const h = c[b].apply(c, e);
c.async = !1;
g(h);
});
});
return f ? (d.then(f), this) : d;
};
}
;function ha(a, b, c, e) {
const d = a.length;
let f = [], g, h, k = 0;
e && (e = []);
for (let m = d - 1; 0 <= m; m--) {
const n = a[m], u = n.length, q = z();
let r = !g;
for (let l = 0; l < u; l++) {
const p = n[l], A = p.length;
if (A) {
for (let B = 0, y, x; B < A; B++) {
if (x = p[B], g) {
if (g[x]) {
if (!m) {
if (c) {
c--;
} else {
if (f[k++] = x, k === b) {
return f;
}
}
}
if (m || e) {
q[x] = 1;
}
r = !0;
}
if (e && (y = (h[x] || 0) + 1, h[x] = y, y < d)) {
const G = e[y - 2] || (e[y - 2] = []);
G[G.length] = x;
}
} else {
q[x] = 1;
}
}
}
}
if (e) {
g || (h = q);
} else if (!r) {
return [];
}
g = q;
}
if (e) {
for (let m = e.length - 1, n, u; 0 <= m; m--) {
n = e[m];
u = n.length;
for (let q = 0, r; q < u; q++) {
if (r = n[q], !g[r]) {
if (c) {
c--;
} else {
if (f[k++] = r, k === b) {
return f;
}
}
g[r] = 1;
}
}
}
}
return f;
}
function ia(a, b) {
const c = z(), e = z(), d = [];
for (let f = 0; f < a.length; f++) {
c[a[f]] = 1;
}
for (let f = 0, g; f < b.length; f++) {
g = b[f];
for (let h = 0, k; h < g.length; h++) {
k = g[h], c[k] && !e[k] && (e[k] = 1, d[d.length] = k);
}
}
return d;
}
;const ka = {memory:{charset:"latin:extra", A:3, m:4, D:!1}, performance:{A:3, m:3, s:!1, context:{depth:2, A:1}}, match:{charset:"latin:extra", C:"reverse"}, score:{charset:"latin:advanced", A:20, m:3, context:{depth:3, A:9}}, "default":{}};
function O(a, b) {
if (!(this instanceof O)) {
return new O(a);
}
var c;
let e;
if (a) {
if (C(a)) {
ka[a] || console.warn("Preset not found: " + a), a = ka[a];
} else {
if (c = a.preset) {
c[c] || console.warn("Preset not found: " + c), a = Object.assign({}, c[c], a);
}
}
c = a.charset;
e = a.lang;
C(c) && (-1 === c.indexOf(":") && (c += ":default"), c = L[c]);
C(e) && (e = ea[e]);
} else {
a = {};
}
let d, f, g = a.context || {};
this.encode = a.encode || c && c.encode || K;
this.register = b || z();
this.A = d = a.resolution || 9;
this.C = b = c && c.C || a.tokenize || "strict";
this.depth = "strict" === b && g.depth;
this.h = v(g.bidirectional);
this.s = f = v(a.optimize);
this.D = v(a.fastupdate);
this.m = a.minlength || 1;
this.F = a.boost;
this.map = f ? w(d) : z();
this.o = d = g.resolution || 1;
this.l = f ? w(d) : z();
this.B = c && c.B || a.rtl;
this.G = (b = a.matcher || e && e.G) && H(b, !1);
this.H = (b = a.stemmer || e && e.H) && H(b, !0);
if (a = b = a.filter || e && e.filter) {
a = b;
c = z();
for (let h = 0, k = a.length; h < k; h++) {
c[a[h]] = 1;
}
a = c;
}
this.filter = a;
}
t = O.prototype;
t.append = function(a, b) {
return this.add(a, b, !0);
};
t.add = function(a, b, c, e) {
if (b && (a || 0 === a)) {
if (!e && !c && this.register[a]) {
return this.update(a, b);
}
b = this.encode(b);
if (e = b.length) {
const m = z(), n = z(), u = this.depth, q = this.A;
for (let r = 0; r < e; r++) {
let l = b[this.B ? e - 1 - r : r];
var d = l.length;
if (l && d >= this.m && (u || !n[l])) {
var f = P(q, e, r), g = "";
switch(this.C) {
case "full":
if (2 < d) {
for (f = 0; f < d; f++) {
for (var h = d; h > f; h--) {
if (h - f >= this.m) {
var k = P(q, e, r, d, f);
g = l.substring(f, h);
Q(this, n, g, k, a, c);
}
}
}
break;
}
case "reverse":
if (1 < d) {
for (h = d - 1; 0 < h; h--) {
g = l[h] + g, g.length >= this.m && Q(this, n, g, P(q, e, r, d, h), a, c);
}
g = "";
}
case "forward":
if (1 < d) {
for (h = 0; h < d; h++) {
g += l[h], g.length >= this.m && Q(this, n, g, f, a, c);
}
break;
}
default:
if (this.F && (f = Math.min(f / this.F(b, l, r) | 0, q - 1)), Q(this, n, l, f, a, c), u && 1 < e && r < e - 1) {
for (d = z(), g = this.o, f = l, h = Math.min(u + 1, e - r), d[f] = 1, k = 1; k < h; k++) {
if ((l = b[this.B ? e - 1 - r - k : r + k]) && l.length >= this.m && !d[l]) {
d[l] = 1;
const p = this.h && l > f;
Q(this, m, p ? f : l, P(g + (e / 2 > g ? 0 : 1), e, r, h - 1, k - 1), a, c, p ? l : f);
}
}
}
}
}
}
this.D || (this.register[a] = 1);
}
}
return this;
};
function P(a, b, c, e, d) {
return c && 1 < a ? b + (e || 0) <= a ? c + (d || 0) : (a - 1) / (b + (e || 0)) * (c + (d || 0)) + 1 | 0 : 0;
}
function Q(a, b, c, e, d, f, g) {
let h = g ? a.l : a.map;
if (!b[c] || g && !b[c][g]) {
a.s && (h = h[e]), g ? (b = b[c] || (b[c] = z()), b[g] = 1, h = h[g] || (h[g] = z())) : b[c] = 1, h = h[c] || (h[c] = []), a.s || (h = h[e] || (h[e] = [])), f && h.includes(d) || (h[h.length] = d, a.D && (a = a.register[d] || (a.register[d] = []), a[a.length] = h));
}
}
t.search = function(a, b, c) {
c || (!b && D(a) ? (c = a, a = c.query) : D(b) && (c = b));
let e = [], d;
let f, g = 0;
if (c) {
a = c.query || a;
b = c.limit;
g = c.offset || 0;
var h = c.context;
f = c.suggest;
}
if (a && (a = this.encode("" + a), d = a.length, 1 < d)) {
c = z();
var k = [];
for (let n = 0, u = 0, q; n < d; n++) {
if ((q = a[n]) && q.length >= this.m && !c[q]) {
if (this.s || f || this.map[q]) {
k[u++] = q, c[q] = 1;
} else {
return e;
}
}
}
a = k;
d = a.length;
}
if (!d) {
return e;
}
b || (b = 100);
h = this.depth && 1 < d && !1 !== h;
c = 0;
let m;
h ? (m = a[0], c = 1) : 1 < d && a.sort(aa);
for (let n, u; c < d; c++) {
u = a[c];
h ? (n = la(this, e, f, b, g, 2 === d, u, m), f && !1 === n && e.length || (m = u)) : n = la(this, e, f, b, g, 1 === d, u);
if (n) {
return n;
}
if (f && c === d - 1) {
k = e.length;
if (!k) {
if (h) {
h = 0;
c = -1;
continue;
}
return e;
}
if (1 === k) {
return ma(e[0], b, g);
}
}
}
return ha(e, b, g, f);
};
function la(a, b, c, e, d, f, g, h) {
let k = [], m = h ? a.l : a.map;
a.s || (m = na(m, g, h, a.h));
if (m) {
let n = 0;
const u = Math.min(m.length, h ? a.o : a.A);
for (let q = 0, r = 0, l, p; q < u; q++) {
if (l = m[q]) {
if (a.s && (l = na(l, g, h, a.h)), d && l && f && (p = l.length, p <= d ? (d -= p, l = null) : (l = l.slice(d), d = 0)), l && (k[n++] = l, f && (r += l.length, r >= e))) {
break;
}
}
}
if (n) {
if (f) {
return ma(k, e, 0);
}
b[b.length] = k;
return;
}
}
return !c && k;
}
function ma(a, b, c) {
a = 1 === a.length ? a[0] : [].concat.apply([], a);
return c || a.length > b ? a.slice(c, c + b) : a;
}
function na(a, b, c, e) {
c ? (e = e && b > c, a = (a = a[e ? b : c]) && a[e ? c : b]) : a = a[b];
return a;
}
t.contain = function(a) {
return !!this.register[a];
};
t.update = function(a, b) {
return this.remove(a).add(a, b);
};
t.remove = function(a, b) {
const c = this.register[a];
if (c) {
if (this.D) {
for (let e = 0, d; e < c.length; e++) {
d = c[e], d.splice(d.indexOf(a), 1);
}
} else {
R(this.map, a, this.A, this.s), this.depth && R(this.l, a, this.o, this.s);
}
b || delete this.register[a];
}
return this;
};
function R(a, b, c, e, d) {
let f = 0;
if (a.constructor === Array) {
if (d) {
b = a.indexOf(b), -1 !== b ? 1 < a.length && (a.splice(b, 1), f++) : f++;
} else {
d = Math.min(a.length, c);
for (let g = 0, h; g < d; g++) {
if (h = a[g]) {
f = R(h, b, c, e, d), e || f || delete a[g];
}
}
}
} else {
for (let g in a) {
(f = R(a[g], b, c, e, d)) || delete a[g];
}
}
return f;
}
fa(O.prototype);
function T(a) {
if (!(this instanceof T)) {
return new T(a);
}
var b = a.document || a.doc || a, c;
this.F = [];
this.h = [];
this.o = [];
this.register = z();
this.key = (c = b.key || b.id) && U(c, this.o) || "id";
this.D = v(a.fastupdate);
this.l = (c = b.store) && !0 !== c && [];
this.store = c && z();
this.async = !1;
c = z();
let e = b.index || b.field || b;
C(e) && (e = [e]);
for (let d = 0, f, g; d < e.length; d++) {
f = e[d], C(f) || (g = f, f = f.field), g = D(g) ? Object.assign({}, a, g) : a, this.I || (c[f] = new O(g, this.register)), this.F[d] = U(f, this.o), this.h[d] = f;
}
if (this.l) {
for (a = b.store, C(a) && (a = [a]), b = 0; b < a.length; b++) {
this.l[b] = U(a[b], this.o);
}
}
this.index = c;
}
function U(a, b) {
const c = a.split(":");
let e = 0;
for (let d = 0; d < c.length; d++) {
a = c[d], 0 <= a.indexOf("[]") && (a = a.substring(0, a.length - 2)) && (b[e] = !0), a && (c[e++] = a);
}
e < c.length && (c.length = e);
return 1 < e ? c : c[0];
}
function oa(a, b) {
if (C(b)) {
a = a[b];
} else {
for (let c = 0; a && c < b.length; c++) {
a = a[b[c]];
}
}
return a;
}
function V(a, b, c, e, d) {
a = a[d];
if (e === c.length - 1) {
b[d] = a;
} else if (a) {
if (a.constructor === Array) {
for (b = b[d] = Array(a.length), d = 0; d < a.length; d++) {
V(a, b, c, e, d);
}
} else {
b = b[d] || (b[d] = z()), d = c[++e], V(a, b, c, e, d);
}
}
}
function W(a, b, c, e, d, f, g, h) {
if (a = a[g]) {
if (e === b.length - 1) {
if (a.constructor === Array) {
if (c[e]) {
for (b = 0; b < a.length; b++) {
d.add(f, a[b], !0, !0);
}
return;
}
a = a.join(" ");
}
d.add(f, a, h, !0);
} else {
if (a.constructor === Array) {
for (g = 0; g < a.length; g++) {
W(a, b, c, e, d, f, g, h);
}
} else {
g = b[++e], W(a, b, c, e, d, f, g, h);
}
}
}
}
t = T.prototype;
t.add = function(a, b, c) {
D(a) && (b = a, a = oa(b, this.key));
if (b && (a || 0 === a)) {
if (!c && this.register[a]) {
return this.update(a, b);
}
for (let e = 0, d, f; e < this.h.length; e++) {
f = this.h[e], d = this.F[e], C(d) && (d = [d]), W(b, d, this.o, 0, this.index[f], a, d[0], c);
}
if (this.store && (!c || !this.store[a])) {
let e;
if (this.l) {
e = z();
for (let d = 0, f; d < this.l.length; d++) {
f = this.l[d], C(f) ? e[f] = b[f] : V(b, e, f, 0, f[0]);
}
}
this.store[a] = e || b;
}
}
return this;
};
t.append = function(a, b) {
return this.add(a, b, !0);
};
t.update = function(a, b) {
return this.remove(a).add(a, b);
};
t.remove = function(a) {
D(a) && (a = oa(a, this.key));
if (this.register[a]) {
for (let b = 0; b < this.h.length && (this.index[this.h[b]].remove(a, !this.I), !this.D); b++) {
}
this.store && delete this.store[a];
delete this.register[a];
}
return this;
};
t.search = function(a, b, c, e) {
c || (!b && D(a) ? (c = a, a = "") : D(b) && (c = b, b = 0));
let d = [], f = [], g, h, k, m, n, u, q = 0;
if (c) {
if (c.constructor === Array) {
k = c, c = null;
} else {
a = c.query || a;
k = (g = c.pluck) || c.index || c.field;
m = !1;
h = this.store && c.enrich;
n = "and" === c.bool;
b = c.limit || b || 100;
u = c.offset || 0;
if (m && (C(m) && (m = [m]), !a)) {
for (let l = 0, p; l < m.length; l++) {
if (p = pa.call(this, m[l], b, u, h)) {
d[d.length] = p, q++;
}
}
return q ? d : [];
}
C(k) && (k = [k]);
}
}
k || (k = this.h);
n = n && (1 < k.length || m && 1 < m.length);
const r = !e && (this.I || this.async) && [];
for (let l = 0, p, A, B; l < k.length; l++) {
let y;
A = k[l];
C(A) || (y = A, A = y.field, a = y.query || a, b = y.limit || b, h = y.enrich || h);
if (r) {
r[l] = this.index[A].searchAsync(a, b, y || c);
} else {
e ? p = e[l] : p = this.index[A].search(a, b, y || c);
B = p && p.length;
if (m && B) {
const x = [];
let G = 0;
n && (x[0] = [p]);
for (let S = 0, ja, N; S < m.length; S++) {
if (ja = m[S], B = (N = this.J[ja]) && N.length) {
G++, x[x.length] = n ? [N] : N;
}
}
G && (p = n ? ha(x, b || 100, u || 0) : ia(p, x), B = p.length);
}
if (B) {
f[q] = A, d[q++] = p;
} else if (n) {
return [];
}
}
}
if (r) {
const l = this;
return new Promise(function(p) {
Promise.all(r).then(function(A) {
p(l.search(a, b, c, A));
});
});
}
if (!q) {
return [];
}
if (g && (!h || !this.store)) {
return d[0];
}
for (let l = 0, p; l < f.length; l++) {
p = d[l];
p.length && h && (p = qa.call(this, p));
if (g) {
return p;
}
d[l] = {field:f[l], result:p};
}
return d;
};
function pa(a, b, c, e) {
let d = this.J[a], f = d && d.length - c;
if (f && 0 < f) {
if (f > b || c) {
d = d.slice(c, c + b);
}
e && (d = qa.call(this, d));
return {tag:a, result:d};
}
}
function qa(a) {
const b = Array(a.length);
for (let c = 0, e; c < a.length; c++) {
e = a[c], b[c] = {id:e, doc:this.store[e]};
}
return b;
}
t.contain = function(a) {
return !!this.register[a];
};
t.get = function(a) {
return this.store[a];
};
t.set = function(a, b) {
this.store[a] = b;
return this;
};
fa(T.prototype);
var sa = {encode:ra, B:!1, C:""};
const ta = [I("[\u00e0\u00e1\u00e2\u00e3\u00e4\u00e5]"), "a", I("[\u00e8\u00e9\u00ea\u00eb]"), "e", I("[\u00ec\u00ed\u00ee\u00ef]"), "i", I("[\u00f2\u00f3\u00f4\u00f5\u00f6\u0151]"), "o", I("[\u00f9\u00fa\u00fb\u00fc\u0171]"), "u", I("[\u00fd\u0177\u00ff]"), "y", I("\u00f1"), "n", I("[\u00e7c]"), "k", I("\u00df"), "s", I(" & "), " and "];
function ra(a) {
var b = a = "" + a;
b.normalize && (b = b.normalize("NFD").replace(ca, ""));
return E.call(this, b.toLowerCase(), !a.normalize && ta);
}
;var va = {encode:ua, B:!1, C:"strict"};
const wa = /[^a-z0-9]+/, xa = {b:"p", v:"f", w:"f", z:"s", x:"s", "\u00df":"s", d:"t", n:"m", c:"k", g:"k", j:"k", q:"k", i:"e", y:"e", u:"o"};
function ua(a) {
a = ra.call(this, a).join(" ");
const b = [];
if (a) {
const c = a.split(wa), e = c.length;
for (let d = 0, f, g = 0; d < e; d++) {
if ((a = c[d]) && (!this.filter || !this.filter[a])) {
f = a[0];
let h = xa[f] || f, k = h;
for (let m = 1; m < a.length; m++) {
f = a[m];
const n = xa[f] || f;
n && n !== k && (h += n, k = n);
}
b[g++] = h;
}
}
}
return b;
}
;var za = {encode:ya, B:!1, C:""};
const Aa = [I("ae"), "a", I("oe"), "o", I("sh"), "s", I("th"), "t", I("ph"), "f", I("pf"), "f", I("(?![aeo])h(?![aeo])"), "", I("(?!^[aeo])h(?!^[aeo])"), ""];
function ya(a, b) {
a && (a = ua.call(this, a).join(" "), 2 < a.length && (a = F(a, Aa)), b || (1 < a.length && (a = J(a)), a && (a = a.split(" "))));
return a || [];
}
;var Ca = {encode:Ba, B:!1, C:""};
const Da = I("(?!\\b)[aeo]");
function Ba(a) {
a && (a = ya.call(this, a, !0), 1 < a.length && (a = a.replace(Da, "")), 1 < a.length && (a = J(a)), a && (a = a.split(" ")));
return a || [];
}
;L["latin:default"] = da;
L["latin:simple"] = sa;
L["latin:balance"] = va;
L["latin:advanced"] = za;
L["latin:extra"] = Ca;
const X = self;
let Y;
const Z = {Index:O, Document:T, Worker:null, registerCharset:function(a, b) {
L[a] = b;
}, registerLanguage:function(a, b) {
ea[a] = b;
}};
(Y = X.define) && Y.amd ? Y([], function() {
return Z;
}) : X.exports ? X.exports = Z : X.FlexSearch = Z;
}(this));

View File

@@ -1,27 +1,27 @@
/**!
* FlexSearch.js v0.7.31 (Compact)
* FlexSearch.js v0.7.39 (Compact)
* Author and Copyright: Thomas Wilkerling
* Licence: Apache-2.0
* Hosted by Nextapps GmbH
* https://github.com/nextapps-de/flexsearch
*/
(function(self){'use strict';var t;function v(a){return"undefined"!==typeof a?a:!0}function w(a){const b=Array(a);for(let c=0;c<a;c++)b[c]=y();return b}function y(){return Object.create(null)}function aa(a,b){return b.length-a.length}function C(a){return"string"===typeof a}function D(a){return"object"===typeof a};function E(a,b){var c=ba;if(a&&(b&&(a=F(a,b)),this.G&&(a=F(a,this.G)),this.H&&1<a.length&&(a=F(a,this.H)),c||""===c)){a=a.split(c);if(this.filter){b=this.filter;c=a.length;const e=[];for(let d=0,f=0;d<c;d++){const g=a[d];g&&!b[g]&&(e[f++]=g)}a=e}return a}return a}const ba=/[\p{Z}\p{S}\p{P}\p{C}]+/u,ca=/[\u0300-\u036f]/g;
function H(a,b){const c=Object.keys(a),e=c.length,d=[];let f="",g=0;for(let h=0,k,m;h<e;h++)k=c[h],(m=a[k])?(d[g++]=I(b?"(?!\\b)"+k+"(\\b|_)":k),d[g++]=m):f+=(f?"|":"")+k;f&&(d[g++]=I(b?"(?!\\b)("+f+")(\\b|_)":"("+f+")"),d[g]="");return d}function F(a,b){for(let c=0,e=b.length;c<e&&(a=a.replace(b[c],b[c+1]),a);c+=2);return a}function I(a){return new RegExp(a,"g")}function J(a){let b="",c="";for(let e=0,d=a.length,f;e<d;e++)(f=a[e])!==c&&(b+=c=f);return b};var da={encode:K,B:!1,C:""};function K(a){return E.call(this,(""+a).toLowerCase(),!1)};const ea={},L={};function fa(a){M(a,"add");M(a,"append");M(a,"search");M(a,"update");M(a,"remove")}function M(a,b){a[b+"Async"]=function(){const c=this,e=arguments;var d=e[e.length-1];let f;"function"===typeof d&&(f=d,delete e[e.length-1]);d=new Promise(function(g){setTimeout(function(){c.async=!0;const h=c[b].apply(c,e);c.async=!1;g(h)})});return f?(d.then(f),this):d}};function ha(a,b,c,e){const d=a.length;let f=[],g,h,k=0;e&&(e=[]);for(let m=d-1;0<=m;m--){const n=a[m],u=n.length,q=y();let r=!g;for(let l=0;l<u;l++){const p=n[l],z=p.length;if(z)for(let B=0,A,x;B<z;B++)if(x=p[B],g){if(g[x]){if(!m)if(c)c--;else if(f[k++]=x,k===b)return f;if(m||e)q[x]=1;r=!0}if(e&&(A=(h[x]||0)+1,h[x]=A,A<d)){const G=e[A-2]||(e[A-2]=[]);G[G.length]=x}}else q[x]=1}if(e)g||(h=q);else if(!r)return[];g=q}if(e)for(let m=e.length-1,n,u;0<=m;m--){n=e[m];u=n.length;for(let q=0,r;q<u;q++)if(r=
n[q],!g[r]){if(c)c--;else if(f[k++]=r,k===b)return f;g[r]=1}}return f}function ja(a,b){const c=y(),e=y(),d=[];for(let f=0;f<a.length;f++)c[a[f]]=1;for(let f=0,g;f<b.length;f++){g=b[f];for(let h=0,k;h<g.length;h++)k=g[h],c[k]&&!e[k]&&(e[k]=1,d[d.length]=k)}return d};const ka={memory:{charset:"latin:extra",A:3,m:4,D:!1},performance:{A:3,m:3,s:!1,context:{depth:2,A:1}},match:{charset:"latin:extra",C:"reverse"},score:{charset:"latin:advanced",A:20,m:3,context:{depth:3,A:9}},"default":{}};function O(a,b){if(!(this instanceof O))return new O(a);var c;let e;a?(C(a)?a=ka[a]:(c=a.preset)&&(a=Object.assign({},c[c],a)),c=a.charset,e=a.lang,C(c)&&(-1===c.indexOf(":")&&(c+=":default"),c=L[c]),C(e)&&(e=ea[e])):a={};let d,f,g=a.context||{};this.encode=a.encode||c&&c.encode||K;this.register=b||y();this.A=d=a.resolution||9;this.C=b=c&&c.C||a.tokenize||"strict";this.depth="strict"===b&&g.depth;this.h=v(g.bidirectional);this.s=f=v(a.optimize);this.D=v(a.fastupdate);this.m=a.minlength||1;this.F=
a.boost;this.map=f?w(d):y();this.o=d=g.resolution||1;this.l=f?w(d):y();this.B=c&&c.B||a.rtl;this.G=(b=a.matcher||e&&e.G)&&H(b,!1);this.H=(b=a.stemmer||e&&e.H)&&H(b,!0);if(a=b=a.filter||e&&e.filter){a=b;c=y();for(let h=0,k=a.length;h<k;h++)c[a[h]]=1;a=c}this.filter=a}t=O.prototype;t.append=function(a,b){return this.add(a,b,!0)};
t.add=function(a,b,c,e){if(b&&(a||0===a)){if(!e&&!c&&this.register[a])return this.update(a,b);b=this.encode(b);if(e=b.length){const m=y(),n=y(),u=this.depth,q=this.A;for(let r=0;r<e;r++){let l=b[this.B?e-1-r:r];var d=l.length;if(l&&d>=this.m&&(u||!n[l])){var f=P(q,e,r),g="";switch(this.C){case "full":if(2<d){for(f=0;f<d;f++)for(var h=d;h>f;h--)if(h-f>=this.m){var k=P(q,e,r,d,f);g=l.substring(f,h);Q(this,n,g,k,a,c)}break}case "reverse":if(1<d){for(h=d-1;0<h;h--)g=l[h]+g,g.length>=this.m&&Q(this,n,
g,P(q,e,r,d,h),a,c);g=""}case "forward":if(1<d){for(h=0;h<d;h++)g+=l[h],g.length>=this.m&&Q(this,n,g,f,a,c);break}default:if(this.F&&(f=Math.min(f/this.F(b,l,r)|0,q-1)),Q(this,n,l,f,a,c),u&&1<e&&r<e-1)for(d=y(),g=this.o,f=l,h=Math.min(u+1,e-r),d[f]=1,k=1;k<h;k++)if((l=b[this.B?e-1-r-k:r+k])&&l.length>=this.m&&!d[l]){d[l]=1;const p=this.h&&l>f;Q(this,m,p?f:l,P(g+(e/2>g?0:1),e,r,h-1,k-1),a,c,p?l:f)}}}}this.D||(this.register[a]=1)}}return this};
function P(a,b,c,e,d){return c&&1<a?b+(e||0)<=a?c+(d||0):(a-1)/(b+(e||0))*(c+(d||0))+1|0:0}function Q(a,b,c,e,d,f,g){let h=g?a.l:a.map;if(!b[c]||g&&!b[c][g])a.s&&(h=h[e]),g?(b=b[c]||(b[c]=y()),b[g]=1,h=h[g]||(h[g]=y())):b[c]=1,h=h[c]||(h[c]=[]),a.s||(h=h[e]||(h[e]=[])),f&&h.includes(d)||(h[h.length]=d,a.D&&(a=a.register[d]||(a.register[d]=[]),a[a.length]=h))}
t.search=function(a,b,c){c||(!b&&D(a)?(c=a,a=c.query):D(b)&&(c=b));let e=[],d;let f,g=0;if(c){a=c.query||a;b=c.limit;g=c.offset||0;var h=c.context;f=c.suggest}if(a&&(a=this.encode(""+a),d=a.length,1<d)){c=y();var k=[];for(let n=0,u=0,q;n<d;n++)if((q=a[n])&&q.length>=this.m&&!c[q])if(this.s||f||this.map[q])k[u++]=q,c[q]=1;else return e;a=k;d=a.length}if(!d)return e;b||(b=100);h=this.depth&&1<d&&!1!==h;c=0;let m;h?(m=a[0],c=1):1<d&&a.sort(aa);for(let n,u;c<d;c++){u=a[c];h?(n=la(this,e,f,b,g,2===d,u,
(function(self){'use strict';var t;function v(a){return"undefined"!==typeof a?a:!0}function w(a){const b=Array(a);for(let c=0;c<a;c++)b[c]=z();return b}function z(){return Object.create(null)}function aa(a,b){return b.length-a.length}function C(a){return"string"===typeof a}function D(a){return"object"===typeof a};function E(a,b){var c=ba;if(a&&(b&&(a=F(a,b)),this.G&&(a=F(a,this.G)),this.H&&1<a.length&&(a=F(a,this.H)),c||""===c)){b=a.split(c);if(this.filter){a=this.filter;c=b.length;const e=[];for(let d=0,f=0;d<c;d++){const g=b[d];g&&!a[g]&&(e[f++]=g)}a=e}else a=b;return a}return a}const ba=/[\p{Z}\p{S}\p{P}\p{C}]+/u,ca=/[\u0300-\u036f]/g;
function H(a,b){const c=Object.keys(a),e=c.length,d=[];let f="",g=0;for(let h=0,k,m;h<e;h++)k=c[h],(m=a[k])?(d[g++]=I(b?"(?!\\b)"+k+"(\\b|_)":k),d[g++]=m):f+=(f?"|":"")+k;f&&(d[g++]=I(b?"(?!\\b)("+f+")(\\b|_)":"("+f+")"),d[g]="");return d}function F(a,b){for(let c=0,e=b.length;c<e&&(a=a.replace(b[c],b[c+1]),a);c+=2);return a}function I(a){return new RegExp(a,"g")}function J(a){let b="",c="";for(let e=0,d=a.length,f;e<d;e++)(f=a[e])!==c&&(b+=c=f);return b};var da={encode:K,B:!1,C:""};function K(a){return E.call(this,(""+a).toLowerCase(),!1)};const ea={},L={};function fa(a){M(a,"add");M(a,"append");M(a,"search");M(a,"update");M(a,"remove")}function M(a,b){a[b+"Async"]=function(){const c=this,e=arguments;var d=e[e.length-1];let f;"function"===typeof d&&(f=d,delete e[e.length-1]);d=new Promise(function(g){setTimeout(function(){c.async=!0;const h=c[b].apply(c,e);c.async=!1;g(h)})});return f?(d.then(f),this):d}};function ha(a,b,c,e){const d=a.length;let f=[],g,h,k=0;e&&(e=[]);for(let m=d-1;0<=m;m--){const n=a[m],u=n.length,q=z();let r=!g;for(let l=0;l<u;l++){const p=n[l],A=p.length;if(A)for(let B=0,y,x;B<A;B++)if(x=p[B],g){if(g[x]){if(!m)if(c)c--;else if(f[k++]=x,k===b)return f;if(m||e)q[x]=1;r=!0}if(e&&(y=(h[x]||0)+1,h[x]=y,y<d)){const G=e[y-2]||(e[y-2]=[]);G[G.length]=x}}else q[x]=1}if(e)g||(h=q);else if(!r)return[];g=q}if(e)for(let m=e.length-1,n,u;0<=m;m--){n=e[m];u=n.length;for(let q=0,r;q<u;q++)if(r=
n[q],!g[r]){if(c)c--;else if(f[k++]=r,k===b)return f;g[r]=1}}return f}function ja(a,b){const c=z(),e=z(),d=[];for(let f=0;f<a.length;f++)c[a[f]]=1;for(let f=0,g;f<b.length;f++){g=b[f];for(let h=0,k;h<g.length;h++)k=g[h],c[k]&&!e[k]&&(e[k]=1,d[d.length]=k)}return d};const ka={memory:{charset:"latin:extra",A:3,m:4,D:!1},performance:{A:3,m:3,s:!1,context:{depth:2,A:1}},match:{charset:"latin:extra",C:"reverse"},score:{charset:"latin:advanced",A:20,m:3,context:{depth:3,A:9}},"default":{}};function O(a,b){if(!(this instanceof O))return new O(a);var c;let e;a?(C(a)?a=ka[a]:(c=a.preset)&&(a=Object.assign({},c[c],a)),c=a.charset,e=a.lang,C(c)&&(-1===c.indexOf(":")&&(c+=":default"),c=L[c]),C(e)&&(e=ea[e])):a={};let d,f,g=a.context||{};this.encode=a.encode||c&&c.encode||K;this.register=b||z();this.A=d=a.resolution||9;this.C=b=c&&c.C||a.tokenize||"strict";this.depth="strict"===b&&g.depth;this.h=v(g.bidirectional);this.s=f=v(a.optimize);this.D=v(a.fastupdate);this.m=a.minlength||1;this.F=
a.boost;this.map=f?w(d):z();this.o=d=g.resolution||1;this.l=f?w(d):z();this.B=c&&c.B||a.rtl;this.G=(b=a.matcher||e&&e.G)&&H(b,!1);this.H=(b=a.stemmer||e&&e.H)&&H(b,!0);if(a=b=a.filter||e&&e.filter){a=b;c=z();for(let h=0,k=a.length;h<k;h++)c[a[h]]=1;a=c}this.filter=a}t=O.prototype;t.append=function(a,b){return this.add(a,b,!0)};
t.add=function(a,b,c,e){if(b&&(a||0===a)){if(!e&&!c&&this.register[a])return this.update(a,b);b=this.encode(b);if(e=b.length){const m=z(),n=z(),u=this.depth,q=this.A;for(let r=0;r<e;r++){let l=b[this.B?e-1-r:r];var d=l.length;if(l&&d>=this.m&&(u||!n[l])){var f=P(q,e,r),g="";switch(this.C){case "full":if(2<d){for(f=0;f<d;f++)for(var h=d;h>f;h--)if(h-f>=this.m){var k=P(q,e,r,d,f);g=l.substring(f,h);Q(this,n,g,k,a,c)}break}case "reverse":if(1<d){for(h=d-1;0<h;h--)g=l[h]+g,g.length>=this.m&&Q(this,n,
g,P(q,e,r,d,h),a,c);g=""}case "forward":if(1<d){for(h=0;h<d;h++)g+=l[h],g.length>=this.m&&Q(this,n,g,f,a,c);break}default:if(this.F&&(f=Math.min(f/this.F(b,l,r)|0,q-1)),Q(this,n,l,f,a,c),u&&1<e&&r<e-1)for(d=z(),g=this.o,f=l,h=Math.min(u+1,e-r),d[f]=1,k=1;k<h;k++)if((l=b[this.B?e-1-r-k:r+k])&&l.length>=this.m&&!d[l]){d[l]=1;const p=this.h&&l>f;Q(this,m,p?f:l,P(g+(e/2>g?0:1),e,r,h-1,k-1),a,c,p?l:f)}}}}this.D||(this.register[a]=1)}}return this};
function P(a,b,c,e,d){return c&&1<a?b+(e||0)<=a?c+(d||0):(a-1)/(b+(e||0))*(c+(d||0))+1|0:0}function Q(a,b,c,e,d,f,g){let h=g?a.l:a.map;if(!b[c]||g&&!b[c][g])a.s&&(h=h[e]),g?(b=b[c]||(b[c]=z()),b[g]=1,h=h[g]||(h[g]=z())):b[c]=1,h=h[c]||(h[c]=[]),a.s||(h=h[e]||(h[e]=[])),f&&h.includes(d)||(h[h.length]=d,a.D&&(a=a.register[d]||(a.register[d]=[]),a[a.length]=h))}
t.search=function(a,b,c){c||(!b&&D(a)?(c=a,a=c.query):D(b)&&(c=b));let e=[],d;let f,g=0;if(c){a=c.query||a;b=c.limit;g=c.offset||0;var h=c.context;f=c.suggest}if(a&&(a=this.encode(""+a),d=a.length,1<d)){c=z();var k=[];for(let n=0,u=0,q;n<d;n++)if((q=a[n])&&q.length>=this.m&&!c[q])if(this.s||f||this.map[q])k[u++]=q,c[q]=1;else return e;a=k;d=a.length}if(!d)return e;b||(b=100);h=this.depth&&1<d&&!1!==h;c=0;let m;h?(m=a[0],c=1):1<d&&a.sort(aa);for(let n,u;c<d;c++){u=a[c];h?(n=la(this,e,f,b,g,2===d,u,
m),f&&!1===n&&e.length||(m=u)):n=la(this,e,f,b,g,1===d,u);if(n)return n;if(f&&c===d-1){k=e.length;if(!k){if(h){h=0;c=-1;continue}return e}if(1===k)return ma(e[0],b,g)}}return ha(e,b,g,f)};
function la(a,b,c,e,d,f,g,h){let k=[],m=h?a.l:a.map;a.s||(m=na(m,g,h,a.h));if(m){let n=0;const u=Math.min(m.length,h?a.o:a.A);for(let q=0,r=0,l,p;q<u;q++)if(l=m[q])if(a.s&&(l=na(l,g,h,a.h)),d&&l&&f&&(p=l.length,p<=d?(d-=p,l=null):(l=l.slice(d),d=0)),l&&(k[n++]=l,f&&(r+=l.length,r>=e)))break;if(n){if(f)return ma(k,e,0);b[b.length]=k;return}}return!c&&k}function ma(a,b,c){a=1===a.length?a[0]:[].concat.apply([],a);return c||a.length>b?a.slice(c,c+b):a}
function na(a,b,c,e){c?(e=e&&b>c,a=(a=a[e?b:c])&&a[e?c:b]):a=a[b];return a}t.contain=function(a){return!!this.register[a]};t.update=function(a,b){return this.remove(a).add(a,b)};t.remove=function(a,b){const c=this.register[a];if(c){if(this.D)for(let e=0,d;e<c.length;e++)d=c[e],d.splice(d.indexOf(a),1);else R(this.map,a,this.A,this.s),this.depth&&R(this.l,a,this.o,this.s);b||delete this.register[a]}return this};
function R(a,b,c,e,d){let f=0;if(a.constructor===Array)if(d)b=a.indexOf(b),-1!==b?1<a.length&&(a.splice(b,1),f++):f++;else{d=Math.min(a.length,c);for(let g=0,h;g<d;g++)if(h=a[g])f=R(h,b,c,e,d),e||f||delete a[g]}else for(let g in a)(f=R(a[g],b,c,e,d))||delete a[g];return f}fa(O.prototype);function T(a){if(!(this instanceof T))return new T(a);var b=a.document||a.doc||a,c;this.F=[];this.h=[];this.o=[];this.register=y();this.key=(c=b.key||b.id)&&U(c,this.o)||"id";this.D=v(a.fastupdate);this.l=(c=b.store)&&!0!==c&&[];this.store=c&&y();this.async=!1;c=y();let e=b.index||b.field||b;C(e)&&(e=[e]);for(let d=0,f,g;d<e.length;d++)f=e[d],C(f)||(g=f,f=f.field),g=D(g)?Object.assign({},a,g):a,this.I||(c[f]=new O(g,this.register)),this.F[d]=U(f,this.o),this.h[d]=f;if(this.l)for(a=b.store,C(a)&&(a=
function R(a,b,c,e,d){let f=0;if(a.constructor===Array)if(d)b=a.indexOf(b),-1!==b?1<a.length&&(a.splice(b,1),f++):f++;else{d=Math.min(a.length,c);for(let g=0,h;g<d;g++)if(h=a[g])f=R(h,b,c,e,d),e||f||delete a[g]}else for(let g in a)(f=R(a[g],b,c,e,d))||delete a[g];return f}fa(O.prototype);function T(a){if(!(this instanceof T))return new T(a);var b=a.document||a.doc||a,c;this.F=[];this.h=[];this.o=[];this.register=z();this.key=(c=b.key||b.id)&&U(c,this.o)||"id";this.D=v(a.fastupdate);this.l=(c=b.store)&&!0!==c&&[];this.store=c&&z();this.async=!1;c=z();let e=b.index||b.field||b;C(e)&&(e=[e]);for(let d=0,f,g;d<e.length;d++)f=e[d],C(f)||(g=f,f=f.field),g=D(g)?Object.assign({},a,g):a,this.I||(c[f]=new O(g,this.register)),this.F[d]=U(f,this.o),this.h[d]=f;if(this.l)for(a=b.store,C(a)&&(a=
[a]),b=0;b<a.length;b++)this.l[b]=U(a[b],this.o);this.index=c}function U(a,b){const c=a.split(":");let e=0;for(let d=0;d<c.length;d++)a=c[d],0<=a.indexOf("[]")&&(a=a.substring(0,a.length-2))&&(b[e]=!0),a&&(c[e++]=a);e<c.length&&(c.length=e);return 1<e?c:c[0]}function oa(a,b){if(C(b))a=a[b];else for(let c=0;a&&c<b.length;c++)a=a[b[c]];return a}
function V(a,b,c,e,d){a=a[d];if(e===c.length-1)b[d]=a;else if(a)if(a.constructor===Array)for(b=b[d]=Array(a.length),d=0;d<a.length;d++)V(a,b,c,e,d);else b=b[d]||(b[d]=y()),d=c[++e],V(a,b,c,e,d)}function W(a,b,c,e,d,f,g,h){if(a=a[g])if(e===b.length-1){if(a.constructor===Array){if(c[e]){for(b=0;b<a.length;b++)d.add(f,a[b],!0,!0);return}a=a.join(" ")}d.add(f,a,h,!0)}else if(a.constructor===Array)for(g=0;g<a.length;g++)W(a,b,c,e,d,f,g,h);else g=b[++e],W(a,b,c,e,d,f,g,h)}t=T.prototype;
t.add=function(a,b,c){D(a)&&(b=a,a=oa(b,this.key));if(b&&(a||0===a)){if(!c&&this.register[a])return this.update(a,b);for(let e=0,d,f;e<this.h.length;e++)f=this.h[e],d=this.F[e],C(d)&&(d=[d]),W(b,d,this.o,0,this.index[f],a,d[0],c);if(this.store&&(!c||!this.store[a])){let e;if(this.l){e=y();for(let d=0,f;d<this.l.length;d++)f=this.l[d],C(f)?e[f]=b[f]:V(b,e,f,0,f[0])}this.store[a]=e||b}}return this};t.append=function(a,b){return this.add(a,b,!0)};t.update=function(a,b){return this.remove(a).add(a,b)};
function V(a,b,c,e,d){a=a[d];if(e===c.length-1)b[d]=a;else if(a)if(a.constructor===Array)for(b=b[d]=Array(a.length),d=0;d<a.length;d++)V(a,b,c,e,d);else b=b[d]||(b[d]=z()),d=c[++e],V(a,b,c,e,d)}function W(a,b,c,e,d,f,g,h){if(a=a[g])if(e===b.length-1){if(a.constructor===Array){if(c[e]){for(b=0;b<a.length;b++)d.add(f,a[b],!0,!0);return}a=a.join(" ")}d.add(f,a,h,!0)}else if(a.constructor===Array)for(g=0;g<a.length;g++)W(a,b,c,e,d,f,g,h);else g=b[++e],W(a,b,c,e,d,f,g,h)}t=T.prototype;
t.add=function(a,b,c){D(a)&&(b=a,a=oa(b,this.key));if(b&&(a||0===a)){if(!c&&this.register[a])return this.update(a,b);for(let e=0,d,f;e<this.h.length;e++)f=this.h[e],d=this.F[e],C(d)&&(d=[d]),W(b,d,this.o,0,this.index[f],a,d[0],c);if(this.store&&(!c||!this.store[a])){let e;if(this.l){e=z();for(let d=0,f;d<this.l.length;d++)f=this.l[d],C(f)?e[f]=b[f]:V(b,e,f,0,f[0])}this.store[a]=e||b}}return this};t.append=function(a,b){return this.add(a,b,!0)};t.update=function(a,b){return this.remove(a).add(a,b)};
t.remove=function(a){D(a)&&(a=oa(a,this.key));if(this.register[a]){for(let b=0;b<this.h.length&&(this.index[this.h[b]].remove(a,!this.I),!this.D);b++);this.store&&delete this.store[a];delete this.register[a]}return this};
t.search=function(a,b,c,e){c||(!b&&D(a)?(c=a,a=""):D(b)&&(c=b,b=0));let d=[],f=[],g,h,k,m,n,u,q=0;if(c)if(c.constructor===Array)k=c,c=null;else{a=c.query||a;k=(g=c.pluck)||c.index||c.field;m=!1;h=this.store&&c.enrich;n="and"===c.bool;b=c.limit||b||100;u=c.offset||0;if(m&&(C(m)&&(m=[m]),!a)){for(let l=0,p;l<m.length;l++)if(p=pa.call(this,m[l],b,u,h))d[d.length]=p,q++;return q?d:[]}C(k)&&(k=[k])}k||(k=this.h);n=n&&(1<k.length||m&&1<m.length);const r=!e&&(this.I||this.async)&&[];for(let l=0,p,z,B;l<
k.length;l++){let A;z=k[l];C(z)||(A=z,z=A.field,a=A.query||a,b=A.limit||b);if(r)r[l]=this.index[z].searchAsync(a,b,A||c);else{e?p=e[l]:p=this.index[z].search(a,b,A||c);B=p&&p.length;if(m&&B){const x=[];let G=0;n&&(x[0]=[p]);for(let S=0,ia,N;S<m.length;S++)if(ia=m[S],B=(N=this.J[ia])&&N.length)G++,x[x.length]=n?[N]:N;G&&(p=n?ha(x,b||100,u||0):ja(p,x),B=p.length)}if(B)f[q]=z,d[q++]=p;else if(n)return[]}}if(r){const l=this;return new Promise(function(p){Promise.all(r).then(function(z){p(l.search(a,b,
c,z))})})}if(!q)return[];if(g&&(!h||!this.store))return d[0];for(let l=0,p;l<f.length;l++){p=d[l];p.length&&h&&(p=qa.call(this,p));if(g)return p;d[l]={field:f[l],result:p}}return d};function pa(a,b,c,e){let d=this.J[a],f=d&&d.length-c;if(f&&0<f){if(f>b||c)d=d.slice(c,c+b);e&&(d=qa.call(this,d));return{tag:a,result:d}}}function qa(a){const b=Array(a.length);for(let c=0,e;c<a.length;c++)e=a[c],b[c]={id:e,doc:this.store[e]};return b}t.contain=function(a){return!!this.register[a]};t.get=function(a){return this.store[a]};
t.search=function(a,b,c,e){c||(!b&&D(a)?(c=a,a=""):D(b)&&(c=b,b=0));let d=[],f=[],g,h,k,m,n,u,q=0;if(c)if(c.constructor===Array)k=c,c=null;else{a=c.query||a;k=(g=c.pluck)||c.index||c.field;m=!1;h=this.store&&c.enrich;n="and"===c.bool;b=c.limit||b||100;u=c.offset||0;if(m&&(C(m)&&(m=[m]),!a)){for(let l=0,p;l<m.length;l++)if(p=pa.call(this,m[l],b,u,h))d[d.length]=p,q++;return q?d:[]}C(k)&&(k=[k])}k||(k=this.h);n=n&&(1<k.length||m&&1<m.length);const r=!e&&(this.I||this.async)&&[];for(let l=0,p,A,B;l<
k.length;l++){let y;A=k[l];C(A)||(y=A,A=y.field,a=y.query||a,b=y.limit||b,h=y.enrich||h);if(r)r[l]=this.index[A].searchAsync(a,b,y||c);else{e?p=e[l]:p=this.index[A].search(a,b,y||c);B=p&&p.length;if(m&&B){const x=[];let G=0;n&&(x[0]=[p]);for(let S=0,ia,N;S<m.length;S++)if(ia=m[S],B=(N=this.J[ia])&&N.length)G++,x[x.length]=n?[N]:N;G&&(p=n?ha(x,b||100,u||0):ja(p,x),B=p.length)}if(B)f[q]=A,d[q++]=p;else if(n)return[]}}if(r){const l=this;return new Promise(function(p){Promise.all(r).then(function(A){p(l.search(a,
b,c,A))})})}if(!q)return[];if(g&&(!h||!this.store))return d[0];for(let l=0,p;l<f.length;l++){p=d[l];p.length&&h&&(p=qa.call(this,p));if(g)return p;d[l]={field:f[l],result:p}}return d};function pa(a,b,c,e){let d=this.J[a],f=d&&d.length-c;if(f&&0<f){if(f>b||c)d=d.slice(c,c+b);e&&(d=qa.call(this,d));return{tag:a,result:d}}}function qa(a){const b=Array(a.length);for(let c=0,e;c<a.length;c++)e=a[c],b[c]={id:e,doc:this.store[e]};return b}t.contain=function(a){return!!this.register[a]};t.get=function(a){return this.store[a]};
t.set=function(a,b){this.store[a]=b;return this};fa(T.prototype);var sa={encode:ra,B:!1,C:""};const ta=[I("[\u00e0\u00e1\u00e2\u00e3\u00e4\u00e5]"),"a",I("[\u00e8\u00e9\u00ea\u00eb]"),"e",I("[\u00ec\u00ed\u00ee\u00ef]"),"i",I("[\u00f2\u00f3\u00f4\u00f5\u00f6\u0151]"),"o",I("[\u00f9\u00fa\u00fb\u00fc\u0171]"),"u",I("[\u00fd\u0177\u00ff]"),"y",I("\u00f1"),"n",I("[\u00e7c]"),"k",I("\u00df"),"s",I(" & ")," and "];function ra(a){var b=a=""+a;b.normalize&&(b=b.normalize("NFD").replace(ca,""));return E.call(this,b.toLowerCase(),!a.normalize&&ta)};var va={encode:ua,B:!1,C:"strict"};const wa=/[^a-z0-9]+/,xa={b:"p",v:"f",w:"f",z:"s",x:"s","\u00df":"s",d:"t",n:"m",c:"k",g:"k",j:"k",q:"k",i:"e",y:"e",u:"o"};function ua(a){a=ra.call(this,a).join(" ");const b=[];if(a){const c=a.split(wa),e=c.length;for(let d=0,f,g=0;d<e;d++)if((a=c[d])&&(!this.filter||!this.filter[a])){f=a[0];let h=xa[f]||f,k=h;for(let m=1;m<a.length;m++){f=a[m];const n=xa[f]||f;n&&n!==k&&(h+=n,k=n)}b[g++]=h}}return b};var za={encode:ya,B:!1,C:""};const Aa=[I("ae"),"a",I("oe"),"o",I("sh"),"s",I("th"),"t",I("ph"),"f",I("pf"),"f",I("(?![aeo])h(?![aeo])"),"",I("(?!^[aeo])h(?!^[aeo])"),""];function ya(a,b){a&&(a=ua.call(this,a).join(" "),2<a.length&&(a=F(a,Aa)),b||(1<a.length&&(a=J(a)),a&&(a=a.split(" "))));return a||[]};var Ca={encode:Ba,B:!1,C:""};const Da=I("(?!\\b)[aeo]");function Ba(a){a&&(a=ya.call(this,a,!0),1<a.length&&(a=a.replace(Da,"")),1<a.length&&(a=J(a)),a&&(a=a.split(" ")));return a||[]};L["latin:default"]=da;L["latin:simple"]=sa;L["latin:balance"]=va;L["latin:advanced"]=za;L["latin:extra"]=Ca;const X=self;let Y;const Z={Index:O,Document:T,Worker:null,registerCharset:function(a,b){L[a]=b},registerLanguage:function(a,b){ea[a]=b}};(Y=X.define)&&Y.amd?Y([],function(){return Z}):X.exports?X.exports=Z:X.FlexSearch=Z;}(this));

719
dist/flexsearch.compact.module.debug.js vendored Normal file
View File

@@ -0,0 +1,719 @@
/**!
* FlexSearch.js v0.7.39 (Compact.module)
* Author and Copyright: Thomas Wilkerling
* Licence: Apache-2.0
* Hosted by Nextapps GmbH
* https://github.com/nextapps-de/flexsearch
*/
(function(self){'use strict';
var t;
function v(a) {
return "undefined" !== typeof a ? a : !0;
}
function w(a) {
const b = Array(a);
for (let c = 0; c < a; c++) {
b[c] = z();
}
return b;
}
function z() {
return Object.create(null);
}
function aa(a, b) {
return b.length - a.length;
}
function C(a) {
return "string" === typeof a;
}
function D(a) {
return "object" === typeof a;
}
;function E(a, b) {
var c = ba;
if (a && (b && (a = F(a, b)), this.G && (a = F(a, this.G)), this.H && 1 < a.length && (a = F(a, this.H)), c || "" === c)) {
b = a.split(c);
if (this.filter) {
a = this.filter;
c = b.length;
const e = [];
for (let d = 0, f = 0; d < c; d++) {
const g = b[d];
g && !a[g] && (e[f++] = g);
}
a = e;
} else {
a = b;
}
return a;
}
return a;
}
const ba = /[\p{Z}\p{S}\p{P}\p{C}]+/u, ca = /[\u0300-\u036f]/g;
function H(a, b) {
const c = Object.keys(a), e = c.length, d = [];
let f = "", g = 0;
for (let h = 0, k, m; h < e; h++) {
k = c[h], (m = a[k]) ? (d[g++] = I(b ? "(?!\\b)" + k + "(\\b|_)" : k), d[g++] = m) : f += (f ? "|" : "") + k;
}
f && (d[g++] = I(b ? "(?!\\b)(" + f + ")(\\b|_)" : "(" + f + ")"), d[g] = "");
return d;
}
function F(a, b) {
for (let c = 0, e = b.length; c < e && (a = a.replace(b[c], b[c + 1]), a); c += 2) {
}
return a;
}
function I(a) {
return new RegExp(a, "g");
}
function J(a) {
let b = "", c = "";
for (let e = 0, d = a.length, f; e < d; e++) {
(f = a[e]) !== c && (b += c = f);
}
return b;
}
;var da = {encode:K, B:!1, C:""};
function K(a) {
return E.call(this, ("" + a).toLowerCase(), !1);
}
;const ea = {}, L = {};
function fa(a) {
M(a, "add");
M(a, "append");
M(a, "search");
M(a, "update");
M(a, "remove");
}
function M(a, b) {
a[b + "Async"] = function() {
const c = this, e = arguments;
var d = e[e.length - 1];
let f;
"function" === typeof d && (f = d, delete e[e.length - 1]);
d = new Promise(function(g) {
setTimeout(function() {
c.async = !0;
const h = c[b].apply(c, e);
c.async = !1;
g(h);
});
});
return f ? (d.then(f), this) : d;
};
}
;function ha(a, b, c, e) {
const d = a.length;
let f = [], g, h, k = 0;
e && (e = []);
for (let m = d - 1; 0 <= m; m--) {
const n = a[m], u = n.length, q = z();
let r = !g;
for (let l = 0; l < u; l++) {
const p = n[l], A = p.length;
if (A) {
for (let B = 0, y, x; B < A; B++) {
if (x = p[B], g) {
if (g[x]) {
if (!m) {
if (c) {
c--;
} else {
if (f[k++] = x, k === b) {
return f;
}
}
}
if (m || e) {
q[x] = 1;
}
r = !0;
}
if (e && (y = (h[x] || 0) + 1, h[x] = y, y < d)) {
const G = e[y - 2] || (e[y - 2] = []);
G[G.length] = x;
}
} else {
q[x] = 1;
}
}
}
}
if (e) {
g || (h = q);
} else if (!r) {
return [];
}
g = q;
}
if (e) {
for (let m = e.length - 1, n, u; 0 <= m; m--) {
n = e[m];
u = n.length;
for (let q = 0, r; q < u; q++) {
if (r = n[q], !g[r]) {
if (c) {
c--;
} else {
if (f[k++] = r, k === b) {
return f;
}
}
g[r] = 1;
}
}
}
}
return f;
}
function ia(a, b) {
const c = z(), e = z(), d = [];
for (let f = 0; f < a.length; f++) {
c[a[f]] = 1;
}
for (let f = 0, g; f < b.length; f++) {
g = b[f];
for (let h = 0, k; h < g.length; h++) {
k = g[h], c[k] && !e[k] && (e[k] = 1, d[d.length] = k);
}
}
return d;
}
;const ka = {memory:{charset:"latin:extra", A:3, m:4, D:!1}, performance:{A:3, m:3, s:!1, context:{depth:2, A:1}}, match:{charset:"latin:extra", C:"reverse"}, score:{charset:"latin:advanced", A:20, m:3, context:{depth:3, A:9}}, "default":{}};
function O(a, b) {
if (!(this instanceof O)) {
return new O(a);
}
var c;
let e;
if (a) {
if (C(a)) {
ka[a] || console.warn("Preset not found: " + a), a = ka[a];
} else {
if (c = a.preset) {
c[c] || console.warn("Preset not found: " + c), a = Object.assign({}, c[c], a);
}
}
c = a.charset;
e = a.lang;
C(c) && (-1 === c.indexOf(":") && (c += ":default"), c = L[c]);
C(e) && (e = ea[e]);
} else {
a = {};
}
let d, f, g = a.context || {};
this.encode = a.encode || c && c.encode || K;
this.register = b || z();
this.A = d = a.resolution || 9;
this.C = b = c && c.C || a.tokenize || "strict";
this.depth = "strict" === b && g.depth;
this.h = v(g.bidirectional);
this.s = f = v(a.optimize);
this.D = v(a.fastupdate);
this.m = a.minlength || 1;
this.F = a.boost;
this.map = f ? w(d) : z();
this.o = d = g.resolution || 1;
this.l = f ? w(d) : z();
this.B = c && c.B || a.rtl;
this.G = (b = a.matcher || e && e.G) && H(b, !1);
this.H = (b = a.stemmer || e && e.H) && H(b, !0);
if (a = b = a.filter || e && e.filter) {
a = b;
c = z();
for (let h = 0, k = a.length; h < k; h++) {
c[a[h]] = 1;
}
a = c;
}
this.filter = a;
}
t = O.prototype;
t.append = function(a, b) {
return this.add(a, b, !0);
};
t.add = function(a, b, c, e) {
if (b && (a || 0 === a)) {
if (!e && !c && this.register[a]) {
return this.update(a, b);
}
b = this.encode(b);
if (e = b.length) {
const m = z(), n = z(), u = this.depth, q = this.A;
for (let r = 0; r < e; r++) {
let l = b[this.B ? e - 1 - r : r];
var d = l.length;
if (l && d >= this.m && (u || !n[l])) {
var f = P(q, e, r), g = "";
switch(this.C) {
case "full":
if (2 < d) {
for (f = 0; f < d; f++) {
for (var h = d; h > f; h--) {
if (h - f >= this.m) {
var k = P(q, e, r, d, f);
g = l.substring(f, h);
Q(this, n, g, k, a, c);
}
}
}
break;
}
case "reverse":
if (1 < d) {
for (h = d - 1; 0 < h; h--) {
g = l[h] + g, g.length >= this.m && Q(this, n, g, P(q, e, r, d, h), a, c);
}
g = "";
}
case "forward":
if (1 < d) {
for (h = 0; h < d; h++) {
g += l[h], g.length >= this.m && Q(this, n, g, f, a, c);
}
break;
}
default:
if (this.F && (f = Math.min(f / this.F(b, l, r) | 0, q - 1)), Q(this, n, l, f, a, c), u && 1 < e && r < e - 1) {
for (d = z(), g = this.o, f = l, h = Math.min(u + 1, e - r), d[f] = 1, k = 1; k < h; k++) {
if ((l = b[this.B ? e - 1 - r - k : r + k]) && l.length >= this.m && !d[l]) {
d[l] = 1;
const p = this.h && l > f;
Q(this, m, p ? f : l, P(g + (e / 2 > g ? 0 : 1), e, r, h - 1, k - 1), a, c, p ? l : f);
}
}
}
}
}
}
this.D || (this.register[a] = 1);
}
}
return this;
};
function P(a, b, c, e, d) {
return c && 1 < a ? b + (e || 0) <= a ? c + (d || 0) : (a - 1) / (b + (e || 0)) * (c + (d || 0)) + 1 | 0 : 0;
}
function Q(a, b, c, e, d, f, g) {
let h = g ? a.l : a.map;
if (!b[c] || g && !b[c][g]) {
a.s && (h = h[e]), g ? (b = b[c] || (b[c] = z()), b[g] = 1, h = h[g] || (h[g] = z())) : b[c] = 1, h = h[c] || (h[c] = []), a.s || (h = h[e] || (h[e] = [])), f && h.includes(d) || (h[h.length] = d, a.D && (a = a.register[d] || (a.register[d] = []), a[a.length] = h));
}
}
t.search = function(a, b, c) {
c || (!b && D(a) ? (c = a, a = c.query) : D(b) && (c = b));
let e = [], d;
let f, g = 0;
if (c) {
a = c.query || a;
b = c.limit;
g = c.offset || 0;
var h = c.context;
f = c.suggest;
}
if (a && (a = this.encode("" + a), d = a.length, 1 < d)) {
c = z();
var k = [];
for (let n = 0, u = 0, q; n < d; n++) {
if ((q = a[n]) && q.length >= this.m && !c[q]) {
if (this.s || f || this.map[q]) {
k[u++] = q, c[q] = 1;
} else {
return e;
}
}
}
a = k;
d = a.length;
}
if (!d) {
return e;
}
b || (b = 100);
h = this.depth && 1 < d && !1 !== h;
c = 0;
let m;
h ? (m = a[0], c = 1) : 1 < d && a.sort(aa);
for (let n, u; c < d; c++) {
u = a[c];
h ? (n = la(this, e, f, b, g, 2 === d, u, m), f && !1 === n && e.length || (m = u)) : n = la(this, e, f, b, g, 1 === d, u);
if (n) {
return n;
}
if (f && c === d - 1) {
k = e.length;
if (!k) {
if (h) {
h = 0;
c = -1;
continue;
}
return e;
}
if (1 === k) {
return ma(e[0], b, g);
}
}
}
return ha(e, b, g, f);
};
function la(a, b, c, e, d, f, g, h) {
let k = [], m = h ? a.l : a.map;
a.s || (m = na(m, g, h, a.h));
if (m) {
let n = 0;
const u = Math.min(m.length, h ? a.o : a.A);
for (let q = 0, r = 0, l, p; q < u; q++) {
if (l = m[q]) {
if (a.s && (l = na(l, g, h, a.h)), d && l && f && (p = l.length, p <= d ? (d -= p, l = null) : (l = l.slice(d), d = 0)), l && (k[n++] = l, f && (r += l.length, r >= e))) {
break;
}
}
}
if (n) {
if (f) {
return ma(k, e, 0);
}
b[b.length] = k;
return;
}
}
return !c && k;
}
function ma(a, b, c) {
a = 1 === a.length ? a[0] : [].concat.apply([], a);
return c || a.length > b ? a.slice(c, c + b) : a;
}
function na(a, b, c, e) {
c ? (e = e && b > c, a = (a = a[e ? b : c]) && a[e ? c : b]) : a = a[b];
return a;
}
t.contain = function(a) {
return !!this.register[a];
};
t.update = function(a, b) {
return this.remove(a).add(a, b);
};
t.remove = function(a, b) {
const c = this.register[a];
if (c) {
if (this.D) {
for (let e = 0, d; e < c.length; e++) {
d = c[e], d.splice(d.indexOf(a), 1);
}
} else {
R(this.map, a, this.A, this.s), this.depth && R(this.l, a, this.o, this.s);
}
b || delete this.register[a];
}
return this;
};
function R(a, b, c, e, d) {
let f = 0;
if (a.constructor === Array) {
if (d) {
b = a.indexOf(b), -1 !== b ? 1 < a.length && (a.splice(b, 1), f++) : f++;
} else {
d = Math.min(a.length, c);
for (let g = 0, h; g < d; g++) {
if (h = a[g]) {
f = R(h, b, c, e, d), e || f || delete a[g];
}
}
}
} else {
for (let g in a) {
(f = R(a[g], b, c, e, d)) || delete a[g];
}
}
return f;
}
fa(O.prototype);
function T(a) {
if (!(this instanceof T)) {
return new T(a);
}
var b = a.document || a.doc || a, c;
this.F = [];
this.h = [];
this.o = [];
this.register = z();
this.key = (c = b.key || b.id) && U(c, this.o) || "id";
this.D = v(a.fastupdate);
this.l = (c = b.store) && !0 !== c && [];
this.store = c && z();
this.async = !1;
c = z();
let e = b.index || b.field || b;
C(e) && (e = [e]);
for (let d = 0, f, g; d < e.length; d++) {
f = e[d], C(f) || (g = f, f = f.field), g = D(g) ? Object.assign({}, a, g) : a, this.I || (c[f] = new O(g, this.register)), this.F[d] = U(f, this.o), this.h[d] = f;
}
if (this.l) {
for (a = b.store, C(a) && (a = [a]), b = 0; b < a.length; b++) {
this.l[b] = U(a[b], this.o);
}
}
this.index = c;
}
function U(a, b) {
const c = a.split(":");
let e = 0;
for (let d = 0; d < c.length; d++) {
a = c[d], 0 <= a.indexOf("[]") && (a = a.substring(0, a.length - 2)) && (b[e] = !0), a && (c[e++] = a);
}
e < c.length && (c.length = e);
return 1 < e ? c : c[0];
}
function oa(a, b) {
if (C(b)) {
a = a[b];
} else {
for (let c = 0; a && c < b.length; c++) {
a = a[b[c]];
}
}
return a;
}
function V(a, b, c, e, d) {
a = a[d];
if (e === c.length - 1) {
b[d] = a;
} else if (a) {
if (a.constructor === Array) {
for (b = b[d] = Array(a.length), d = 0; d < a.length; d++) {
V(a, b, c, e, d);
}
} else {
b = b[d] || (b[d] = z()), d = c[++e], V(a, b, c, e, d);
}
}
}
function W(a, b, c, e, d, f, g, h) {
if (a = a[g]) {
if (e === b.length - 1) {
if (a.constructor === Array) {
if (c[e]) {
for (b = 0; b < a.length; b++) {
d.add(f, a[b], !0, !0);
}
return;
}
a = a.join(" ");
}
d.add(f, a, h, !0);
} else {
if (a.constructor === Array) {
for (g = 0; g < a.length; g++) {
W(a, b, c, e, d, f, g, h);
}
} else {
g = b[++e], W(a, b, c, e, d, f, g, h);
}
}
}
}
t = T.prototype;
t.add = function(a, b, c) {
D(a) && (b = a, a = oa(b, this.key));
if (b && (a || 0 === a)) {
if (!c && this.register[a]) {
return this.update(a, b);
}
for (let e = 0, d, f; e < this.h.length; e++) {
f = this.h[e], d = this.F[e], C(d) && (d = [d]), W(b, d, this.o, 0, this.index[f], a, d[0], c);
}
if (this.store && (!c || !this.store[a])) {
let e;
if (this.l) {
e = z();
for (let d = 0, f; d < this.l.length; d++) {
f = this.l[d], C(f) ? e[f] = b[f] : V(b, e, f, 0, f[0]);
}
}
this.store[a] = e || b;
}
}
return this;
};
t.append = function(a, b) {
return this.add(a, b, !0);
};
t.update = function(a, b) {
return this.remove(a).add(a, b);
};
t.remove = function(a) {
D(a) && (a = oa(a, this.key));
if (this.register[a]) {
for (let b = 0; b < this.h.length && (this.index[this.h[b]].remove(a, !this.I), !this.D); b++) {
}
this.store && delete this.store[a];
delete this.register[a];
}
return this;
};
t.search = function(a, b, c, e) {
c || (!b && D(a) ? (c = a, a = "") : D(b) && (c = b, b = 0));
let d = [], f = [], g, h, k, m, n, u, q = 0;
if (c) {
if (c.constructor === Array) {
k = c, c = null;
} else {
a = c.query || a;
k = (g = c.pluck) || c.index || c.field;
m = !1;
h = this.store && c.enrich;
n = "and" === c.bool;
b = c.limit || b || 100;
u = c.offset || 0;
if (m && (C(m) && (m = [m]), !a)) {
for (let l = 0, p; l < m.length; l++) {
if (p = pa.call(this, m[l], b, u, h)) {
d[d.length] = p, q++;
}
}
return q ? d : [];
}
C(k) && (k = [k]);
}
}
k || (k = this.h);
n = n && (1 < k.length || m && 1 < m.length);
const r = !e && (this.I || this.async) && [];
for (let l = 0, p, A, B; l < k.length; l++) {
let y;
A = k[l];
C(A) || (y = A, A = y.field, a = y.query || a, b = y.limit || b, h = y.enrich || h);
if (r) {
r[l] = this.index[A].searchAsync(a, b, y || c);
} else {
e ? p = e[l] : p = this.index[A].search(a, b, y || c);
B = p && p.length;
if (m && B) {
const x = [];
let G = 0;
n && (x[0] = [p]);
for (let S = 0, ja, N; S < m.length; S++) {
if (ja = m[S], B = (N = this.J[ja]) && N.length) {
G++, x[x.length] = n ? [N] : N;
}
}
G && (p = n ? ha(x, b || 100, u || 0) : ia(p, x), B = p.length);
}
if (B) {
f[q] = A, d[q++] = p;
} else if (n) {
return [];
}
}
}
if (r) {
const l = this;
return new Promise(function(p) {
Promise.all(r).then(function(A) {
p(l.search(a, b, c, A));
});
});
}
if (!q) {
return [];
}
if (g && (!h || !this.store)) {
return d[0];
}
for (let l = 0, p; l < f.length; l++) {
p = d[l];
p.length && h && (p = qa.call(this, p));
if (g) {
return p;
}
d[l] = {field:f[l], result:p};
}
return d;
};
function pa(a, b, c, e) {
let d = this.J[a], f = d && d.length - c;
if (f && 0 < f) {
if (f > b || c) {
d = d.slice(c, c + b);
}
e && (d = qa.call(this, d));
return {tag:a, result:d};
}
}
function qa(a) {
const b = Array(a.length);
for (let c = 0, e; c < a.length; c++) {
e = a[c], b[c] = {id:e, doc:this.store[e]};
}
return b;
}
t.contain = function(a) {
return !!this.register[a];
};
t.get = function(a) {
return this.store[a];
};
t.set = function(a, b) {
this.store[a] = b;
return this;
};
fa(T.prototype);
var sa = {encode:ra, B:!1, C:""};
const ta = [I("[\u00e0\u00e1\u00e2\u00e3\u00e4\u00e5]"), "a", I("[\u00e8\u00e9\u00ea\u00eb]"), "e", I("[\u00ec\u00ed\u00ee\u00ef]"), "i", I("[\u00f2\u00f3\u00f4\u00f5\u00f6\u0151]"), "o", I("[\u00f9\u00fa\u00fb\u00fc\u0171]"), "u", I("[\u00fd\u0177\u00ff]"), "y", I("\u00f1"), "n", I("[\u00e7c]"), "k", I("\u00df"), "s", I(" & "), " and "];
function ra(a) {
var b = a = "" + a;
b.normalize && (b = b.normalize("NFD").replace(ca, ""));
return E.call(this, b.toLowerCase(), !a.normalize && ta);
}
;var va = {encode:ua, B:!1, C:"strict"};
const wa = /[^a-z0-9]+/, xa = {b:"p", v:"f", w:"f", z:"s", x:"s", "\u00df":"s", d:"t", n:"m", c:"k", g:"k", j:"k", q:"k", i:"e", y:"e", u:"o"};
function ua(a) {
a = ra.call(this, a).join(" ");
const b = [];
if (a) {
const c = a.split(wa), e = c.length;
for (let d = 0, f, g = 0; d < e; d++) {
if ((a = c[d]) && (!this.filter || !this.filter[a])) {
f = a[0];
let h = xa[f] || f, k = h;
for (let m = 1; m < a.length; m++) {
f = a[m];
const n = xa[f] || f;
n && n !== k && (h += n, k = n);
}
b[g++] = h;
}
}
}
return b;
}
;var za = {encode:ya, B:!1, C:""};
const Aa = [I("ae"), "a", I("oe"), "o", I("sh"), "s", I("th"), "t", I("ph"), "f", I("pf"), "f", I("(?![aeo])h(?![aeo])"), "", I("(?!^[aeo])h(?!^[aeo])"), ""];
function ya(a, b) {
a && (a = ua.call(this, a).join(" "), 2 < a.length && (a = F(a, Aa)), b || (1 < a.length && (a = J(a)), a && (a = a.split(" "))));
return a || [];
}
;var Ca = {encode:Ba, B:!1, C:""};
const Da = I("(?!\\b)[aeo]");
function Ba(a) {
a && (a = ya.call(this, a, !0), 1 < a.length && (a = a.replace(Da, "")), 1 < a.length && (a = J(a)), a && (a = a.split(" ")));
return a || [];
}
;L["latin:default"] = da;
L["latin:simple"] = sa;
L["latin:balance"] = va;
L["latin:advanced"] = za;
L["latin:extra"] = Ca;
const X = self;
let Y;
const Z = {Index:O, Document:T, Worker:null, registerCharset:function(a, b) {
L[a] = b;
}, registerLanguage:function(a, b) {
ea[a] = b;
}};
(Y = X.define) && Y.amd ? Y([], function() {
return Z;
}) : X.exports ? X.exports = Z : X.FlexSearch = Z;
}(this));

27
dist/flexsearch.compact.module.min.js vendored Normal file
View File

@@ -0,0 +1,27 @@
/**!
* FlexSearch.js v0.7.39 (Compact.module)
* Author and Copyright: Thomas Wilkerling
* Licence: Apache-2.0
* Hosted by Nextapps GmbH
* https://github.com/nextapps-de/flexsearch
*/
(function(self){'use strict';var t;function v(a){return"undefined"!==typeof a?a:!0}function w(a){const b=Array(a);for(let c=0;c<a;c++)b[c]=z();return b}function z(){return Object.create(null)}function aa(a,b){return b.length-a.length}function C(a){return"string"===typeof a}function D(a){return"object"===typeof a};function E(a,b){var c=ba;if(a&&(b&&(a=F(a,b)),this.G&&(a=F(a,this.G)),this.H&&1<a.length&&(a=F(a,this.H)),c||""===c)){b=a.split(c);if(this.filter){a=this.filter;c=b.length;const e=[];for(let d=0,f=0;d<c;d++){const g=b[d];g&&!a[g]&&(e[f++]=g)}a=e}else a=b;return a}return a}const ba=/[\p{Z}\p{S}\p{P}\p{C}]+/u,ca=/[\u0300-\u036f]/g;
function H(a,b){const c=Object.keys(a),e=c.length,d=[];let f="",g=0;for(let h=0,k,m;h<e;h++)k=c[h],(m=a[k])?(d[g++]=I(b?"(?!\\b)"+k+"(\\b|_)":k),d[g++]=m):f+=(f?"|":"")+k;f&&(d[g++]=I(b?"(?!\\b)("+f+")(\\b|_)":"("+f+")"),d[g]="");return d}function F(a,b){for(let c=0,e=b.length;c<e&&(a=a.replace(b[c],b[c+1]),a);c+=2);return a}function I(a){return new RegExp(a,"g")}function J(a){let b="",c="";for(let e=0,d=a.length,f;e<d;e++)(f=a[e])!==c&&(b+=c=f);return b};var da={encode:K,B:!1,C:""};function K(a){return E.call(this,(""+a).toLowerCase(),!1)};const ea={},L={};function fa(a){M(a,"add");M(a,"append");M(a,"search");M(a,"update");M(a,"remove")}function M(a,b){a[b+"Async"]=function(){const c=this,e=arguments;var d=e[e.length-1];let f;"function"===typeof d&&(f=d,delete e[e.length-1]);d=new Promise(function(g){setTimeout(function(){c.async=!0;const h=c[b].apply(c,e);c.async=!1;g(h)})});return f?(d.then(f),this):d}};function ha(a,b,c,e){const d=a.length;let f=[],g,h,k=0;e&&(e=[]);for(let m=d-1;0<=m;m--){const n=a[m],u=n.length,q=z();let r=!g;for(let l=0;l<u;l++){const p=n[l],A=p.length;if(A)for(let B=0,y,x;B<A;B++)if(x=p[B],g){if(g[x]){if(!m)if(c)c--;else if(f[k++]=x,k===b)return f;if(m||e)q[x]=1;r=!0}if(e&&(y=(h[x]||0)+1,h[x]=y,y<d)){const G=e[y-2]||(e[y-2]=[]);G[G.length]=x}}else q[x]=1}if(e)g||(h=q);else if(!r)return[];g=q}if(e)for(let m=e.length-1,n,u;0<=m;m--){n=e[m];u=n.length;for(let q=0,r;q<u;q++)if(r=
n[q],!g[r]){if(c)c--;else if(f[k++]=r,k===b)return f;g[r]=1}}return f}function ja(a,b){const c=z(),e=z(),d=[];for(let f=0;f<a.length;f++)c[a[f]]=1;for(let f=0,g;f<b.length;f++){g=b[f];for(let h=0,k;h<g.length;h++)k=g[h],c[k]&&!e[k]&&(e[k]=1,d[d.length]=k)}return d};const ka={memory:{charset:"latin:extra",A:3,m:4,D:!1},performance:{A:3,m:3,s:!1,context:{depth:2,A:1}},match:{charset:"latin:extra",C:"reverse"},score:{charset:"latin:advanced",A:20,m:3,context:{depth:3,A:9}},"default":{}};function O(a,b){if(!(this instanceof O))return new O(a);var c;let e;a?(C(a)?a=ka[a]:(c=a.preset)&&(a=Object.assign({},c[c],a)),c=a.charset,e=a.lang,C(c)&&(-1===c.indexOf(":")&&(c+=":default"),c=L[c]),C(e)&&(e=ea[e])):a={};let d,f,g=a.context||{};this.encode=a.encode||c&&c.encode||K;this.register=b||z();this.A=d=a.resolution||9;this.C=b=c&&c.C||a.tokenize||"strict";this.depth="strict"===b&&g.depth;this.h=v(g.bidirectional);this.s=f=v(a.optimize);this.D=v(a.fastupdate);this.m=a.minlength||1;this.F=
a.boost;this.map=f?w(d):z();this.o=d=g.resolution||1;this.l=f?w(d):z();this.B=c&&c.B||a.rtl;this.G=(b=a.matcher||e&&e.G)&&H(b,!1);this.H=(b=a.stemmer||e&&e.H)&&H(b,!0);if(a=b=a.filter||e&&e.filter){a=b;c=z();for(let h=0,k=a.length;h<k;h++)c[a[h]]=1;a=c}this.filter=a}t=O.prototype;t.append=function(a,b){return this.add(a,b,!0)};
t.add=function(a,b,c,e){if(b&&(a||0===a)){if(!e&&!c&&this.register[a])return this.update(a,b);b=this.encode(b);if(e=b.length){const m=z(),n=z(),u=this.depth,q=this.A;for(let r=0;r<e;r++){let l=b[this.B?e-1-r:r];var d=l.length;if(l&&d>=this.m&&(u||!n[l])){var f=P(q,e,r),g="";switch(this.C){case "full":if(2<d){for(f=0;f<d;f++)for(var h=d;h>f;h--)if(h-f>=this.m){var k=P(q,e,r,d,f);g=l.substring(f,h);Q(this,n,g,k,a,c)}break}case "reverse":if(1<d){for(h=d-1;0<h;h--)g=l[h]+g,g.length>=this.m&&Q(this,n,
g,P(q,e,r,d,h),a,c);g=""}case "forward":if(1<d){for(h=0;h<d;h++)g+=l[h],g.length>=this.m&&Q(this,n,g,f,a,c);break}default:if(this.F&&(f=Math.min(f/this.F(b,l,r)|0,q-1)),Q(this,n,l,f,a,c),u&&1<e&&r<e-1)for(d=z(),g=this.o,f=l,h=Math.min(u+1,e-r),d[f]=1,k=1;k<h;k++)if((l=b[this.B?e-1-r-k:r+k])&&l.length>=this.m&&!d[l]){d[l]=1;const p=this.h&&l>f;Q(this,m,p?f:l,P(g+(e/2>g?0:1),e,r,h-1,k-1),a,c,p?l:f)}}}}this.D||(this.register[a]=1)}}return this};
function P(a,b,c,e,d){return c&&1<a?b+(e||0)<=a?c+(d||0):(a-1)/(b+(e||0))*(c+(d||0))+1|0:0}function Q(a,b,c,e,d,f,g){let h=g?a.l:a.map;if(!b[c]||g&&!b[c][g])a.s&&(h=h[e]),g?(b=b[c]||(b[c]=z()),b[g]=1,h=h[g]||(h[g]=z())):b[c]=1,h=h[c]||(h[c]=[]),a.s||(h=h[e]||(h[e]=[])),f&&h.includes(d)||(h[h.length]=d,a.D&&(a=a.register[d]||(a.register[d]=[]),a[a.length]=h))}
t.search=function(a,b,c){c||(!b&&D(a)?(c=a,a=c.query):D(b)&&(c=b));let e=[],d;let f,g=0;if(c){a=c.query||a;b=c.limit;g=c.offset||0;var h=c.context;f=c.suggest}if(a&&(a=this.encode(""+a),d=a.length,1<d)){c=z();var k=[];for(let n=0,u=0,q;n<d;n++)if((q=a[n])&&q.length>=this.m&&!c[q])if(this.s||f||this.map[q])k[u++]=q,c[q]=1;else return e;a=k;d=a.length}if(!d)return e;b||(b=100);h=this.depth&&1<d&&!1!==h;c=0;let m;h?(m=a[0],c=1):1<d&&a.sort(aa);for(let n,u;c<d;c++){u=a[c];h?(n=la(this,e,f,b,g,2===d,u,
m),f&&!1===n&&e.length||(m=u)):n=la(this,e,f,b,g,1===d,u);if(n)return n;if(f&&c===d-1){k=e.length;if(!k){if(h){h=0;c=-1;continue}return e}if(1===k)return ma(e[0],b,g)}}return ha(e,b,g,f)};
function la(a,b,c,e,d,f,g,h){let k=[],m=h?a.l:a.map;a.s||(m=na(m,g,h,a.h));if(m){let n=0;const u=Math.min(m.length,h?a.o:a.A);for(let q=0,r=0,l,p;q<u;q++)if(l=m[q])if(a.s&&(l=na(l,g,h,a.h)),d&&l&&f&&(p=l.length,p<=d?(d-=p,l=null):(l=l.slice(d),d=0)),l&&(k[n++]=l,f&&(r+=l.length,r>=e)))break;if(n){if(f)return ma(k,e,0);b[b.length]=k;return}}return!c&&k}function ma(a,b,c){a=1===a.length?a[0]:[].concat.apply([],a);return c||a.length>b?a.slice(c,c+b):a}
function na(a,b,c,e){c?(e=e&&b>c,a=(a=a[e?b:c])&&a[e?c:b]):a=a[b];return a}t.contain=function(a){return!!this.register[a]};t.update=function(a,b){return this.remove(a).add(a,b)};t.remove=function(a,b){const c=this.register[a];if(c){if(this.D)for(let e=0,d;e<c.length;e++)d=c[e],d.splice(d.indexOf(a),1);else R(this.map,a,this.A,this.s),this.depth&&R(this.l,a,this.o,this.s);b||delete this.register[a]}return this};
function R(a,b,c,e,d){let f=0;if(a.constructor===Array)if(d)b=a.indexOf(b),-1!==b?1<a.length&&(a.splice(b,1),f++):f++;else{d=Math.min(a.length,c);for(let g=0,h;g<d;g++)if(h=a[g])f=R(h,b,c,e,d),e||f||delete a[g]}else for(let g in a)(f=R(a[g],b,c,e,d))||delete a[g];return f}fa(O.prototype);function T(a){if(!(this instanceof T))return new T(a);var b=a.document||a.doc||a,c;this.F=[];this.h=[];this.o=[];this.register=z();this.key=(c=b.key||b.id)&&U(c,this.o)||"id";this.D=v(a.fastupdate);this.l=(c=b.store)&&!0!==c&&[];this.store=c&&z();this.async=!1;c=z();let e=b.index||b.field||b;C(e)&&(e=[e]);for(let d=0,f,g;d<e.length;d++)f=e[d],C(f)||(g=f,f=f.field),g=D(g)?Object.assign({},a,g):a,this.I||(c[f]=new O(g,this.register)),this.F[d]=U(f,this.o),this.h[d]=f;if(this.l)for(a=b.store,C(a)&&(a=
[a]),b=0;b<a.length;b++)this.l[b]=U(a[b],this.o);this.index=c}function U(a,b){const c=a.split(":");let e=0;for(let d=0;d<c.length;d++)a=c[d],0<=a.indexOf("[]")&&(a=a.substring(0,a.length-2))&&(b[e]=!0),a&&(c[e++]=a);e<c.length&&(c.length=e);return 1<e?c:c[0]}function oa(a,b){if(C(b))a=a[b];else for(let c=0;a&&c<b.length;c++)a=a[b[c]];return a}
function V(a,b,c,e,d){a=a[d];if(e===c.length-1)b[d]=a;else if(a)if(a.constructor===Array)for(b=b[d]=Array(a.length),d=0;d<a.length;d++)V(a,b,c,e,d);else b=b[d]||(b[d]=z()),d=c[++e],V(a,b,c,e,d)}function W(a,b,c,e,d,f,g,h){if(a=a[g])if(e===b.length-1){if(a.constructor===Array){if(c[e]){for(b=0;b<a.length;b++)d.add(f,a[b],!0,!0);return}a=a.join(" ")}d.add(f,a,h,!0)}else if(a.constructor===Array)for(g=0;g<a.length;g++)W(a,b,c,e,d,f,g,h);else g=b[++e],W(a,b,c,e,d,f,g,h)}t=T.prototype;
t.add=function(a,b,c){D(a)&&(b=a,a=oa(b,this.key));if(b&&(a||0===a)){if(!c&&this.register[a])return this.update(a,b);for(let e=0,d,f;e<this.h.length;e++)f=this.h[e],d=this.F[e],C(d)&&(d=[d]),W(b,d,this.o,0,this.index[f],a,d[0],c);if(this.store&&(!c||!this.store[a])){let e;if(this.l){e=z();for(let d=0,f;d<this.l.length;d++)f=this.l[d],C(f)?e[f]=b[f]:V(b,e,f,0,f[0])}this.store[a]=e||b}}return this};t.append=function(a,b){return this.add(a,b,!0)};t.update=function(a,b){return this.remove(a).add(a,b)};
t.remove=function(a){D(a)&&(a=oa(a,this.key));if(this.register[a]){for(let b=0;b<this.h.length&&(this.index[this.h[b]].remove(a,!this.I),!this.D);b++);this.store&&delete this.store[a];delete this.register[a]}return this};
t.search=function(a,b,c,e){c||(!b&&D(a)?(c=a,a=""):D(b)&&(c=b,b=0));let d=[],f=[],g,h,k,m,n,u,q=0;if(c)if(c.constructor===Array)k=c,c=null;else{a=c.query||a;k=(g=c.pluck)||c.index||c.field;m=!1;h=this.store&&c.enrich;n="and"===c.bool;b=c.limit||b||100;u=c.offset||0;if(m&&(C(m)&&(m=[m]),!a)){for(let l=0,p;l<m.length;l++)if(p=pa.call(this,m[l],b,u,h))d[d.length]=p,q++;return q?d:[]}C(k)&&(k=[k])}k||(k=this.h);n=n&&(1<k.length||m&&1<m.length);const r=!e&&(this.I||this.async)&&[];for(let l=0,p,A,B;l<
k.length;l++){let y;A=k[l];C(A)||(y=A,A=y.field,a=y.query||a,b=y.limit||b,h=y.enrich||h);if(r)r[l]=this.index[A].searchAsync(a,b,y||c);else{e?p=e[l]:p=this.index[A].search(a,b,y||c);B=p&&p.length;if(m&&B){const x=[];let G=0;n&&(x[0]=[p]);for(let S=0,ia,N;S<m.length;S++)if(ia=m[S],B=(N=this.J[ia])&&N.length)G++,x[x.length]=n?[N]:N;G&&(p=n?ha(x,b||100,u||0):ja(p,x),B=p.length)}if(B)f[q]=A,d[q++]=p;else if(n)return[]}}if(r){const l=this;return new Promise(function(p){Promise.all(r).then(function(A){p(l.search(a,
b,c,A))})})}if(!q)return[];if(g&&(!h||!this.store))return d[0];for(let l=0,p;l<f.length;l++){p=d[l];p.length&&h&&(p=qa.call(this,p));if(g)return p;d[l]={field:f[l],result:p}}return d};function pa(a,b,c,e){let d=this.J[a],f=d&&d.length-c;if(f&&0<f){if(f>b||c)d=d.slice(c,c+b);e&&(d=qa.call(this,d));return{tag:a,result:d}}}function qa(a){const b=Array(a.length);for(let c=0,e;c<a.length;c++)e=a[c],b[c]={id:e,doc:this.store[e]};return b}t.contain=function(a){return!!this.register[a]};t.get=function(a){return this.store[a]};
t.set=function(a,b){this.store[a]=b;return this};fa(T.prototype);var sa={encode:ra,B:!1,C:""};const ta=[I("[\u00e0\u00e1\u00e2\u00e3\u00e4\u00e5]"),"a",I("[\u00e8\u00e9\u00ea\u00eb]"),"e",I("[\u00ec\u00ed\u00ee\u00ef]"),"i",I("[\u00f2\u00f3\u00f4\u00f5\u00f6\u0151]"),"o",I("[\u00f9\u00fa\u00fb\u00fc\u0171]"),"u",I("[\u00fd\u0177\u00ff]"),"y",I("\u00f1"),"n",I("[\u00e7c]"),"k",I("\u00df"),"s",I(" & ")," and "];function ra(a){var b=a=""+a;b.normalize&&(b=b.normalize("NFD").replace(ca,""));return E.call(this,b.toLowerCase(),!a.normalize&&ta)};var va={encode:ua,B:!1,C:"strict"};const wa=/[^a-z0-9]+/,xa={b:"p",v:"f",w:"f",z:"s",x:"s","\u00df":"s",d:"t",n:"m",c:"k",g:"k",j:"k",q:"k",i:"e",y:"e",u:"o"};function ua(a){a=ra.call(this,a).join(" ");const b=[];if(a){const c=a.split(wa),e=c.length;for(let d=0,f,g=0;d<e;d++)if((a=c[d])&&(!this.filter||!this.filter[a])){f=a[0];let h=xa[f]||f,k=h;for(let m=1;m<a.length;m++){f=a[m];const n=xa[f]||f;n&&n!==k&&(h+=n,k=n)}b[g++]=h}}return b};var za={encode:ya,B:!1,C:""};const Aa=[I("ae"),"a",I("oe"),"o",I("sh"),"s",I("th"),"t",I("ph"),"f",I("pf"),"f",I("(?![aeo])h(?![aeo])"),"",I("(?!^[aeo])h(?!^[aeo])"),""];function ya(a,b){a&&(a=ua.call(this,a).join(" "),2<a.length&&(a=F(a,Aa)),b||(1<a.length&&(a=J(a)),a&&(a=a.split(" "))));return a||[]};var Ca={encode:Ba,B:!1,C:""};const Da=I("(?!\\b)[aeo]");function Ba(a){a&&(a=ya.call(this,a,!0),1<a.length&&(a=a.replace(Da,"")),1<a.length&&(a=J(a)),a&&(a=a.split(" ")));return a||[]};L["latin:default"]=da;L["latin:simple"]=sa;L["latin:balance"]=va;L["latin:advanced"]=za;L["latin:extra"]=Ca;const X=self;let Y;const Z={Index:O,Document:T,Worker:null,registerCharset:function(a,b){L[a]=b},registerLanguage:function(a,b){ea[a]=b}};(Y=X.define)&&Y.amd?Y([],function(){return Z}):X.exports?X.exports=Z:X.FlexSearch=Z;}(this));

View File

@@ -1,959 +0,0 @@
/**!
* FlexSearch.js v0.7.31 (Debug)
* Author and Copyright: Thomas Wilkerling
* Licence: Apache-2.0
* Hosted by Nextapps GmbH
* https://github.com/nextapps-de/flexsearch
*/
(function(self){'use strict';
function r(a, b) {
return "undefined" !== typeof a ? a : b;
}
function v(a) {
const b = Array(a);
for (let c = 0; c < a; c++) {
b[c] = w();
}
return b;
}
function w() {
return Object.create(null);
}
function aa(a, b) {
return b.length - a.length;
}
function x(a) {
return "string" === typeof a;
}
function z(a) {
return "object" === typeof a;
}
function D(a) {
return "function" === typeof a;
}
;function ba(a, b, c, d) {
if (a && (b && (a = E(a, b)), this.matcher && (a = E(a, this.matcher)), this.stemmer && 1 < a.length && (a = E(a, this.stemmer)), d && 1 < a.length && (a = F(a)), c || "" === c)) {
a = a.split(c);
if (this.filter) {
b = this.filter;
c = a.length;
d = [];
for (let e = 0, f = 0; e < c; e++) {
const g = a[e];
g && !b[g] && (d[f++] = g);
}
a = d;
}
return a;
}
return a;
}
const ca = /[\p{Z}\p{S}\p{P}\p{C}]+/u, da = /[\u0300-\u036f]/g;
function ea(a, b) {
const c = Object.keys(a), d = c.length, e = [];
let f = "", g = 0;
for (let h = 0, k, m; h < d; h++) {
k = c[h], (m = a[k]) ? (e[g++] = G(b ? "(?!\\b)" + k + "(\\b|_)" : k), e[g++] = m) : f += (f ? "|" : "") + k;
}
f && (e[g++] = G(b ? "(?!\\b)(" + f + ")(\\b|_)" : "(" + f + ")"), e[g] = "");
return e;
}
function E(a, b) {
for (let c = 0, d = b.length; c < d && (a = a.replace(b[c], b[c + 1]), a); c += 2) {
}
return a;
}
function G(a) {
return new RegExp(a, "g");
}
function F(a) {
let b = "", c = "";
for (let d = 0, e = a.length, f; d < e; d++) {
(f = a[d]) !== c && (b += c = f);
}
return b;
}
;var ha = {encode:fa, rtl:!1, tokenize:""};
function fa(a) {
return ba.call(this, ("" + a).toLowerCase(), !1, ca, !1);
}
;const ia = {}, I = {};
function ja(a) {
J(a, "add");
J(a, "append");
J(a, "search");
J(a, "update");
J(a, "remove");
}
function J(a, b) {
a[b + "Async"] = function() {
const c = this, d = arguments;
var e = d[d.length - 1];
let f;
D(e) && (f = e, delete d[d.length - 1]);
e = new Promise(function(g) {
setTimeout(function() {
c.async = !0;
const h = c[b].apply(c, d);
c.async = !1;
g(h);
});
});
return f ? (e.then(f), this) : e;
};
}
;function ka(a, b, c, d) {
const e = a.length;
let f = [], g, h, k = 0;
d && (d = []);
for (let m = e - 1; 0 <= m; m--) {
const p = a[m], u = p.length, q = w();
let n = !g;
for (let l = 0; l < u; l++) {
const t = p[l], y = t.length;
if (y) {
for (let C = 0, B, A; C < y; C++) {
if (A = t[C], g) {
if (g[A]) {
if (!m) {
if (c) {
c--;
} else {
if (f[k++] = A, k === b) {
return f;
}
}
}
if (m || d) {
q[A] = 1;
}
n = !0;
}
if (d && (B = (h[A] || 0) + 1, h[A] = B, B < e)) {
const H = d[B - 2] || (d[B - 2] = []);
H[H.length] = A;
}
} else {
q[A] = 1;
}
}
}
}
if (d) {
g || (h = q);
} else if (!n) {
return [];
}
g = q;
}
if (d) {
for (let m = d.length - 1, p, u; 0 <= m; m--) {
p = d[m];
u = p.length;
for (let q = 0, n; q < u; q++) {
if (n = p[q], !g[n]) {
if (c) {
c--;
} else {
if (f[k++] = n, k === b) {
return f;
}
}
g[n] = 1;
}
}
}
}
return f;
}
function la(a, b) {
const c = w(), d = w(), e = [];
for (let f = 0; f < a.length; f++) {
c[a[f]] = 1;
}
for (let f = 0, g; f < b.length; f++) {
g = b[f];
for (let h = 0, k; h < g.length; h++) {
k = g[h], c[k] && !d[k] && (d[k] = 1, e[e.length] = k);
}
}
return e;
}
;function K(a) {
this.limit = !0 !== a && a;
this.cache = w();
this.queue = [];
}
function ma(a, b, c) {
z(a) && (a = a.query);
let d = this.cache.get(a);
d || (d = this.search(a, b, c), this.cache.set(a, d));
return d;
}
K.prototype.set = function(a, b) {
if (!this.cache[a]) {
var c = this.queue.length;
c === this.limit ? delete this.cache[this.queue[c - 1]] : c++;
for (--c; 0 < c; c--) {
this.queue[c] = this.queue[c - 1];
}
this.queue[0] = a;
}
this.cache[a] = b;
};
K.prototype.get = function(a) {
const b = this.cache[a];
if (this.limit && b && (a = this.queue.indexOf(a))) {
const c = this.queue[a - 1];
this.queue[a - 1] = this.queue[a];
this.queue[a] = c;
}
return b;
};
K.prototype.del = function(a) {
for (let b = 0, c, d; b < this.queue.length; b++) {
d = this.queue[b], c = this.cache[d], c.includes(a) && (this.queue.splice(b--, 1), delete this.cache[d]);
}
};
const na = {memory:{charset:"latin:extra", resolution:3, minlength:4, fastupdate:!1}, performance:{resolution:3, minlength:3, optimize:!1, context:{depth:2, resolution:1}}, match:{charset:"latin:extra", tokenize:"reverse",}, score:{charset:"latin:advanced", resolution:20, minlength:3, context:{depth:3, resolution:9,}}, "default":{},};
function pa(a, b, c, d, e, f, g) {
setTimeout(function() {
const h = a(c ? c + "." + d : d, JSON.stringify(g));
h && h.then ? h.then(function() {
b.export(a, b, c, e, f + 1);
}) : b.export(a, b, c, e, f + 1);
});
}
;function L(a, b) {
if (!(this instanceof L)) {
return new L(a);
}
var c;
if (a) {
if (x(a)) {
na[a] || console.warn("Preset not found: " + a), a = na[a];
} else {
if (c = a.preset) {
c[c] || console.warn("Preset not found: " + c), a = Object.assign({}, c[c], a);
}
}
c = a.charset;
var d = a.lang;
x(c) && (-1 === c.indexOf(":") && (c += ":default"), c = I[c]);
x(d) && (d = ia[d]);
} else {
a = {};
}
let e, f, g = a.context || {};
this.encode = a.encode || c && c.encode || fa;
this.register = b || w();
this.resolution = e = a.resolution || 9;
this.tokenize = b = c && c.tokenize || a.tokenize || "strict";
this.depth = "strict" === b && g.depth;
this.bidirectional = r(g.bidirectional, !0);
this.optimize = f = r(a.optimize, !0);
this.fastupdate = r(a.fastupdate, !0);
this.minlength = a.minlength || 1;
this.boost = a.boost;
this.map = f ? v(e) : w();
this.resolution_ctx = e = g.resolution || 1;
this.ctx = f ? v(e) : w();
this.rtl = c && c.rtl || a.rtl;
this.matcher = (b = a.matcher || d && d.matcher) && ea(b, !1);
this.stemmer = (b = a.stemmer || d && d.stemmer) && ea(b, !0);
if (c = b = a.filter || d && d.filter) {
c = b;
d = w();
for (let h = 0, k = c.length; h < k; h++) {
d[c[h]] = 1;
}
c = d;
}
this.filter = c;
this.cache = (b = a.cache) && new K(b);
}
L.prototype.append = function(a, b) {
return this.add(a, b, !0);
};
L.prototype.add = function(a, b, c, d) {
if (b && (a || 0 === a)) {
if (!d && !c && this.register[a]) {
return this.update(a, b);
}
b = this.encode("" + b);
if (d = b.length) {
const m = w(), p = w(), u = this.depth, q = this.resolution;
for (let n = 0; n < d; n++) {
let l = b[this.rtl ? d - 1 - n : n];
var e = l.length;
if (l && e >= this.minlength && (u || !p[l])) {
var f = M(q, d, n), g = "";
switch(this.tokenize) {
case "full":
if (2 < e) {
for (f = 0; f < e; f++) {
for (var h = e; h > f; h--) {
if (h - f >= this.minlength) {
var k = M(q, d, n, e, f);
g = l.substring(f, h);
this.push_index(p, g, k, a, c);
}
}
}
break;
}
case "reverse":
if (1 < e) {
for (h = e - 1; 0 < h; h--) {
g = l[h] + g, g.length >= this.minlength && (k = M(q, d, n, e, h), this.push_index(p, g, k, a, c));
}
g = "";
}
case "forward":
if (1 < e) {
for (h = 0; h < e; h++) {
g += l[h], g.length >= this.minlength && this.push_index(p, g, f, a, c);
}
break;
}
default:
if (this.boost && (f = Math.min(f / this.boost(b, l, n) | 0, q - 1)), this.push_index(p, l, f, a, c), u && 1 < d && n < d - 1) {
for (e = w(), g = this.resolution_ctx, f = l, h = Math.min(u + 1, d - n), e[f] = 1, k = 1; k < h; k++) {
if ((l = b[this.rtl ? d - 1 - n - k : n + k]) && l.length >= this.minlength && !e[l]) {
e[l] = 1;
const t = M(g + (d / 2 > g ? 0 : 1), d, n, h - 1, k - 1), y = this.bidirectional && l > f;
this.push_index(m, y ? f : l, t, a, c, y ? l : f);
}
}
}
}
}
}
this.fastupdate || (this.register[a] = 1);
}
}
return this;
};
function M(a, b, c, d, e) {
return c && 1 < a ? b + (d || 0) <= a ? c + (e || 0) : (a - 1) / (b + (d || 0)) * (c + (e || 0)) + 1 | 0 : 0;
}
L.prototype.push_index = function(a, b, c, d, e, f) {
let g = f ? this.ctx : this.map;
if (!a[b] || f && !a[b][f]) {
this.optimize && (g = g[c]), f ? (a = a[b] || (a[b] = w()), a[f] = 1, g = g[f] || (g[f] = w())) : a[b] = 1, g = g[b] || (g[b] = []), this.optimize || (g = g[c] || (g[c] = [])), e && g.includes(d) || (g[g.length] = d, this.fastupdate && (a = this.register[d] || (this.register[d] = []), a[a.length] = g));
}
};
L.prototype.search = function(a, b, c) {
c || (!b && z(a) ? (c = a, a = c.query) : z(b) && (c = b));
let d = [], e;
let f, g = 0;
if (c) {
a = c.query || a;
b = c.limit;
g = c.offset || 0;
var h = c.context;
f = c.suggest;
}
if (a && (a = this.encode("" + a), e = a.length, 1 < e)) {
c = w();
var k = [];
for (let p = 0, u = 0, q; p < e; p++) {
if ((q = a[p]) && q.length >= this.minlength && !c[q]) {
if (this.optimize || f || this.map[q]) {
k[u++] = q, c[q] = 1;
} else {
return d;
}
}
}
a = k;
e = a.length;
}
if (!e) {
return d;
}
b || (b = 100);
h = this.depth && 1 < e && !1 !== h;
c = 0;
let m;
h ? (m = a[0], c = 1) : 1 < e && a.sort(aa);
for (let p, u; c < e; c++) {
u = a[c];
h ? (p = this.add_result(d, f, b, g, 2 === e, u, m), f && !1 === p && d.length || (m = u)) : p = this.add_result(d, f, b, g, 1 === e, u);
if (p) {
return p;
}
if (f && c === e - 1) {
k = d.length;
if (!k) {
if (h) {
h = 0;
c = -1;
continue;
}
return d;
}
if (1 === k) {
return qa(d[0], b, g);
}
}
}
return ka(d, b, g, f);
};
L.prototype.add_result = function(a, b, c, d, e, f, g) {
let h = [], k = g ? this.ctx : this.map;
this.optimize || (k = ra(k, f, g, this.bidirectional));
if (k) {
let m = 0;
const p = Math.min(k.length, g ? this.resolution_ctx : this.resolution);
for (let u = 0, q = 0, n, l; u < p; u++) {
if (n = k[u]) {
if (this.optimize && (n = ra(n, f, g, this.bidirectional)), d && n && e && (l = n.length, l <= d ? (d -= l, n = null) : (n = n.slice(d), d = 0)), n && (h[m++] = n, e && (q += n.length, q >= c))) {
break;
}
}
}
if (m) {
if (e) {
return qa(h, c, 0);
}
a[a.length] = h;
return;
}
}
return !b && h;
};
function qa(a, b, c) {
a = 1 === a.length ? a[0] : [].concat.apply([], a);
return c || a.length > b ? a.slice(c, c + b) : a;
}
function ra(a, b, c, d) {
c ? (d = d && b > c, a = (a = a[d ? b : c]) && a[d ? c : b]) : a = a[b];
return a;
}
L.prototype.contain = function(a) {
return !!this.register[a];
};
L.prototype.update = function(a, b) {
return this.remove(a).add(a, b);
};
L.prototype.remove = function(a, b) {
const c = this.register[a];
if (c) {
if (this.fastupdate) {
for (let d = 0, e; d < c.length; d++) {
e = c[d], e.splice(e.indexOf(a), 1);
}
} else {
N(this.map, a, this.resolution, this.optimize), this.depth && N(this.ctx, a, this.resolution_ctx, this.optimize);
}
b || delete this.register[a];
this.cache && this.cache.del(a);
}
return this;
};
function N(a, b, c, d, e) {
let f = 0;
if (a.constructor === Array) {
if (e) {
b = a.indexOf(b), -1 !== b ? 1 < a.length && (a.splice(b, 1), f++) : f++;
} else {
e = Math.min(a.length, c);
for (let g = 0, h; g < e; g++) {
if (h = a[g]) {
f = N(h, b, c, d, e), d || f || delete a[g];
}
}
}
} else {
for (let g in a) {
(f = N(a[g], b, c, d, e)) || delete a[g];
}
}
return f;
}
L.prototype.searchCache = ma;
L.prototype.export = function(a, b, c, d, e) {
let f, g;
switch(e || (e = 0)) {
case 0:
f = "reg";
if (this.fastupdate) {
g = w();
for (let h in this.register) {
g[h] = 1;
}
} else {
g = this.register;
}
break;
case 1:
f = "cfg";
g = {doc:0, opt:this.optimize ? 1 : 0};
break;
case 2:
f = "map";
g = this.map;
break;
case 3:
f = "ctx";
g = this.ctx;
break;
default:
return;
}
pa(a, b || this, c, f, d, e, g);
return !0;
};
L.prototype.import = function(a, b) {
if (b) {
switch(x(b) && (b = JSON.parse(b)), a) {
case "cfg":
this.optimize = !!b.opt;
break;
case "reg":
this.fastupdate = !1;
this.register = b;
break;
case "map":
this.map = b;
break;
case "ctx":
this.ctx = b;
}
}
};
ja(L.prototype);
function sa(a) {
a = a.data;
var b = self._index;
const c = a.args;
var d = a.task;
switch(d) {
case "init":
d = a.options || {};
a = a.factory;
b = d.encode;
d.cache = !1;
b && 0 === b.indexOf("function") && (d.encode = Function("return " + b)());
a ? (Function("return " + a)()(self), self._index = new self.FlexSearch.Index(d), delete self.FlexSearch) : self._index = new L(d);
break;
default:
a = a.id, b = b[d].apply(b, c), postMessage("search" === d ? {id:a, msg:b} : {id:a});
}
}
;let ta = 0;
function O(a) {
if (!(this instanceof O)) {
return new O(a);
}
var b;
a ? D(b = a.encode) && (a.encode = b.toString()) : a = {};
(b = (self || window)._factory) && (b = b.toString());
const c = "undefined" === typeof window && self.exports, d = this;
this.worker = ua(b, c, a.worker);
this.resolver = w();
if (this.worker) {
if (c) {
this.worker.on("message", function(e) {
d.resolver[e.id](e.msg);
delete d.resolver[e.id];
});
} else {
this.worker.onmessage = function(e) {
e = e.data;
d.resolver[e.id](e.msg);
delete d.resolver[e.id];
};
}
this.worker.postMessage({task:"init", factory:b, options:a});
}
}
Q("add");
Q("append");
Q("search");
Q("update");
Q("remove");
function Q(a) {
O.prototype[a] = O.prototype[a + "Async"] = function() {
const b = this, c = [].slice.call(arguments);
var d = c[c.length - 1];
let e;
D(d) && (e = d, c.splice(c.length - 1, 1));
d = new Promise(function(f) {
setTimeout(function() {
b.resolver[++ta] = f;
b.worker.postMessage({task:a, id:ta, args:c});
});
});
return e ? (d.then(e), this) : d;
};
}
function ua(a, b, c) {
let d;
try {
d = b ? eval('new (require("worker_threads")["Worker"])("../dist/node/node.js")') : a ? new Worker(URL.createObjectURL(new Blob(["onmessage=" + sa.toString()], {type:"text/javascript"}))) : new Worker(x(c) ? c : "worker/worker.js", {type:"module"});
} catch (e) {
}
return d;
}
;function R(a) {
if (!(this instanceof R)) {
return new R(a);
}
var b = a.document || a.doc || a, c;
this.tree = [];
this.field = [];
this.marker = [];
this.register = w();
this.key = (c = b.key || b.id) && S(c, this.marker) || "id";
this.fastupdate = r(a.fastupdate, !0);
this.storetree = (c = b.store) && !0 !== c && [];
this.store = c && w();
this.tag = (c = b.tag) && S(c, this.marker);
this.tagindex = c && w();
this.cache = (c = a.cache) && new K(c);
a.cache = !1;
this.worker = a.worker;
this.async = !1;
c = w();
let d = b.index || b.field || b;
x(d) && (d = [d]);
for (let e = 0, f, g; e < d.length; e++) {
f = d[e], x(f) || (g = f, f = f.field), g = z(g) ? Object.assign({}, a, g) : a, this.worker && (c[f] = new O(g), c[f].worker || (this.worker = !1)), this.worker || (c[f] = new L(g, this.register)), this.tree[e] = S(f, this.marker), this.field[e] = f;
}
if (this.storetree) {
for (a = b.store, x(a) && (a = [a]), b = 0; b < a.length; b++) {
this.storetree[b] = S(a[b], this.marker);
}
}
this.index = c;
}
function S(a, b) {
const c = a.split(":");
let d = 0;
for (let e = 0; e < c.length; e++) {
a = c[e], 0 <= a.indexOf("[]") && (a = a.substring(0, a.length - 2)) && (b[d] = !0), a && (c[d++] = a);
}
d < c.length && (c.length = d);
return 1 < d ? c : c[0];
}
function T(a, b) {
if (x(b)) {
a = a[b];
} else {
for (let c = 0; a && c < b.length; c++) {
a = a[b[c]];
}
}
return a;
}
function U(a, b, c, d, e) {
a = a[e];
if (d === c.length - 1) {
b[e] = a;
} else if (a) {
if (a.constructor === Array) {
for (b = b[e] = Array(a.length), e = 0; e < a.length; e++) {
U(a, b, c, d, e);
}
} else {
b = b[e] || (b[e] = w()), e = c[++d], U(a, b, c, d, e);
}
}
}
function V(a, b, c, d, e, f, g, h) {
if (a = a[g]) {
if (d === b.length - 1) {
if (a.constructor === Array) {
if (c[d]) {
for (b = 0; b < a.length; b++) {
e.add(f, a[b], !0, !0);
}
return;
}
a = a.join(" ");
}
e.add(f, a, h, !0);
} else {
if (a.constructor === Array) {
for (g = 0; g < a.length; g++) {
V(a, b, c, d, e, f, g, h);
}
} else {
g = b[++d], V(a, b, c, d, e, f, g, h);
}
}
}
}
R.prototype.add = function(a, b, c) {
z(a) && (b = a, a = T(b, this.key));
if (b && (a || 0 === a)) {
if (!c && this.register[a]) {
return this.update(a, b);
}
for (let d = 0, e, f; d < this.field.length; d++) {
f = this.field[d], e = this.tree[d], x(e) && (e = [e]), V(b, e, this.marker, 0, this.index[f], a, e[0], c);
}
if (this.tag) {
let d = T(b, this.tag), e = w();
x(d) && (d = [d]);
for (let f = 0, g, h; f < d.length; f++) {
if (g = d[f], !e[g] && (e[g] = 1, h = this.tagindex[g] || (this.tagindex[g] = []), !c || !h.includes(a))) {
if (h[h.length] = a, this.fastupdate) {
const k = this.register[a] || (this.register[a] = []);
k[k.length] = h;
}
}
}
}
if (this.store && (!c || !this.store[a])) {
let d;
if (this.storetree) {
d = w();
for (let e = 0, f; e < this.storetree.length; e++) {
f = this.storetree[e], x(f) ? d[f] = b[f] : U(b, d, f, 0, f[0]);
}
}
this.store[a] = d || b;
}
}
return this;
};
R.prototype.append = function(a, b) {
return this.add(a, b, !0);
};
R.prototype.update = function(a, b) {
return this.remove(a).add(a, b);
};
R.prototype.remove = function(a) {
z(a) && (a = T(a, this.key));
if (this.register[a]) {
for (var b = 0; b < this.field.length && (this.index[this.field[b]].remove(a, !this.worker), !this.fastupdate); b++) {
}
if (this.tag && !this.fastupdate) {
for (let c in this.tagindex) {
b = this.tagindex[c];
const d = b.indexOf(a);
-1 !== d && (1 < b.length ? b.splice(d, 1) : delete this.tagindex[c]);
}
}
this.store && delete this.store[a];
delete this.register[a];
}
return this;
};
R.prototype.search = function(a, b, c, d) {
c || (!b && z(a) ? (c = a, a = "") : z(b) && (c = b, b = 0));
let e = [], f = [], g, h, k, m, p, u, q = 0;
if (c) {
if (c.constructor === Array) {
k = c, c = null;
} else {
a = c.query || a;
k = (g = c.pluck) || c.index || c.field;
m = c.tag;
h = this.store && c.enrich;
p = "and" === c.bool;
b = c.limit || b || 100;
u = c.offset || 0;
if (m && (x(m) && (m = [m]), !a)) {
for (let l = 0, t; l < m.length; l++) {
if (t = va.call(this, m[l], b, u, h)) {
e[e.length] = t, q++;
}
}
return q ? e : [];
}
x(k) && (k = [k]);
}
}
k || (k = this.field);
p = p && (1 < k.length || m && 1 < m.length);
const n = !d && (this.worker || this.async) && [];
for (let l = 0, t, y, C; l < k.length; l++) {
let B;
y = k[l];
x(y) || (B = y, y = B.field, a = B.query || a, b = B.limit || b);
if (n) {
n[l] = this.index[y].searchAsync(a, b, B || c);
} else {
C = (t = d ? d[l] : this.index[y].search(a, b, B || c)) && t.length;
if (m && C) {
const A = [];
let H = 0;
p && (A[0] = [t]);
for (let W = 0, oa, P; W < m.length; W++) {
if (oa = m[W], C = (P = this.tagindex[oa]) && P.length) {
H++, A[A.length] = p ? [P] : P;
}
}
H && (t = p ? ka(A, b || 100, u || 0) : la(t, A), C = t.length);
}
if (C) {
f[q] = y, e[q++] = t;
} else if (p) {
return [];
}
}
}
if (n) {
const l = this;
return new Promise(function(t) {
Promise.all(n).then(function(y) {
t(l.search(a, b, c, y));
});
});
}
if (!q) {
return [];
}
if (g && (!h || !this.store)) {
return e[0];
}
for (let l = 0, t; l < f.length; l++) {
t = e[l];
t.length && h && (t = wa.call(this, t));
if (g) {
return t;
}
e[l] = {field:f[l], result:t};
}
return e;
};
function va(a, b, c, d) {
let e = this.tagindex[a], f = e && e.length - c;
if (f && 0 < f) {
if (f > b || c) {
e = e.slice(c, c + b);
}
d && (e = wa.call(this, e));
return {tag:a, result:e};
}
}
function wa(a) {
const b = Array(a.length);
for (let c = 0, d; c < a.length; c++) {
d = a[c], b[c] = {id:d, doc:this.store[d]};
}
return b;
}
R.prototype.contain = function(a) {
return !!this.register[a];
};
R.prototype.get = function(a) {
return this.store[a];
};
R.prototype.set = function(a, b) {
this.store[a] = b;
return this;
};
R.prototype.searchCache = ma;
R.prototype.export = function(a, b, c, d, e) {
e || (e = 0);
d || (d = 0);
if (d < this.field.length) {
const f = this.field[d], g = this.index[f];
b = this;
setTimeout(function() {
g.export(a, b, e ? f : "", d, e++) || (d++, e = 1, b.export(a, b, f, d, e));
});
} else {
let f, g;
switch(e) {
case 1:
f = "tag";
g = this.tagindex;
break;
case 2:
f = "store";
g = this.store;
break;
default:
return;
}
pa(a, this, c, f, d, e, g);
}
};
R.prototype.import = function(a, b) {
if (b) {
switch(x(b) && (b = JSON.parse(b)), a) {
case "tag":
this.tagindex = b;
break;
case "reg":
this.fastupdate = !1;
this.register = b;
for (let d = 0, e; d < this.field.length; d++) {
e = this.index[this.field[d]], e.register = b, e.fastupdate = !1;
}
break;
case "store":
this.store = b;
break;
default:
a = a.split(".");
const c = a[0];
a = a[1];
c && a && this.index[c].import(a, b);
}
}
};
ja(R.prototype);
var ya = {encode:xa, rtl:!1, tokenize:""};
const za = G("[\u00e0\u00e1\u00e2\u00e3\u00e4\u00e5]"), Aa = G("[\u00e8\u00e9\u00ea\u00eb]"), Ba = G("[\u00ec\u00ed\u00ee\u00ef]"), Ca = G("[\u00f2\u00f3\u00f4\u00f5\u00f6\u0151]"), Da = G("[\u00f9\u00fa\u00fb\u00fc\u0171]"), Ea = G("[\u00fd\u0177\u00ff]"), Fa = G("\u00f1"), Ga = G("[\u00e7c]"), Ha = G("\u00df"), Ia = G(" & "), Ja = [za, "a", Aa, "e", Ba, "i", Ca, "o", Da, "u", Ea, "y", Fa, "n", Ga, "k", Ha, "s", Ia, " and "];
function xa(a) {
var b = a = "" + a;
b.normalize && (b = b.normalize("NFD").replace(da, ""));
return ba.call(this, b.toLowerCase(), !a.normalize && Ja, ca, !1);
}
;var La = {encode:Ka, rtl:!1, tokenize:"strict"};
const Ma = /[^a-z0-9]+/, Na = {b:"p", v:"f", w:"f", z:"s", x:"s", "\u00df":"s", d:"t", n:"m", c:"k", g:"k", j:"k", q:"k", i:"e", y:"e", u:"o"};
function Ka(a) {
a = xa.call(this, a).join(" ");
const b = [];
if (a) {
const c = a.split(Ma), d = c.length;
for (let e = 0, f, g = 0; e < d; e++) {
if ((a = c[e]) && (!this.filter || !this.filter[a])) {
f = a[0];
let h = Na[f] || f, k = h;
for (let m = 1; m < a.length; m++) {
f = a[m];
const p = Na[f] || f;
p && p !== k && (h += p, k = p);
}
b[g++] = h;
}
}
}
return b;
}
;var Pa = {encode:Oa, rtl:!1, tokenize:""};
const Qa = G("ae"), Ra = G("oe"), Sa = G("sh"), Ta = G("th"), Ua = G("ph"), Va = G("pf"), Wa = [Qa, "a", Ra, "o", Sa, "s", Ta, "t", Ua, "f", Va, "f", G("(?![aeo])h(?![aeo])"), "", G("(?!^[aeo])h(?!^[aeo])"), ""];
function Oa(a, b) {
a && (a = Ka.call(this, a).join(" "), 2 < a.length && (a = E(a, Wa)), b || (1 < a.length && (a = F(a)), a && (a = a.split(" "))));
return a || [];
}
;var Ya = {encode:Xa, rtl:!1, tokenize:""};
const Za = G("(?!\\b)[aeo]");
function Xa(a) {
a && (a = Oa.call(this, a, !0), 1 < a.length && (a = a.replace(Za, "")), 1 < a.length && (a = F(a)), a && (a = a.split(" ")));
return a || [];
}
;I["latin:default"] = ha;
I["latin:simple"] = ya;
I["latin:balance"] = La;
I["latin:advanced"] = Pa;
I["latin:extra"] = Ya;
const X = self;
let Y;
const Z = {Index:L, Document:R, Worker:O, registerCharset:function(a, b) {
I[a] = b;
}, registerLanguage:function(a, b) {
ia[a] = b;
}};
(Y = X.define) && Y.amd ? Y([], function() {
return Z;
}) : X.exports ? X.exports = Z : X.FlexSearch = Z;
}(this));

1334
dist/flexsearch.es5.debug.js vendored Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,46 +0,0 @@
/**!
* FlexSearch.js v0.7.31 (ES5)
* Author and Copyright: Thomas Wilkerling
* Licence: Apache-2.0
* Hosted by Nextapps GmbH
* https://github.com/nextapps-de/flexsearch
*/
(function(self){'use strict';var t;function aa(a){var b=0;return function(){return b<a.length?{done:!1,value:a[b++]}:{done:!0}}}var v="function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){if(a==Array.prototype||a==Object.prototype)return a;a[b]=c.value;return a};
function ba(a){a=["object"==typeof globalThis&&globalThis,a,"object"==typeof window&&window,"object"==typeof self&&self,"object"==typeof global&&global];for(var b=0;b<a.length;++b){var c=a[b];if(c&&c.Math==Math)return c}throw Error("Cannot find global object");}var w=ba(this);function y(a,b){if(b)a:{var c=w;a=a.split(".");for(var d=0;d<a.length-1;d++){var f=a[d];if(!(f in c))break a;c=c[f]}a=a[a.length-1];d=c[a];b=b(d);b!=d&&null!=b&&v(c,a,{configurable:!0,writable:!0,value:b})}}
y("Symbol",function(a){function b(g){if(this instanceof b)throw new TypeError("Symbol is not a constructor");return new c(d+(g||"")+"_"+f++,g)}function c(g,e){this.h=g;v(this,"description",{configurable:!0,writable:!0,value:e})}if(a)return a;c.prototype.toString=function(){return this.h};var d="jscomp_symbol_"+(1E9*Math.random()>>>0)+"_",f=0;return b});
y("Symbol.iterator",function(a){if(a)return a;a=Symbol("Symbol.iterator");for(var b="Array Int8Array Uint8Array Uint8ClampedArray Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array".split(" "),c=0;c<b.length;c++){var d=w[b[c]];"function"===typeof d&&"function"!=typeof d.prototype[a]&&v(d.prototype,a,{configurable:!0,writable:!0,value:function(){return ca(aa(this))}})}return a});function ca(a){a={next:a};a[Symbol.iterator]=function(){return this};return a}
function da(a,b){a instanceof String&&(a+="");var c=0,d=!1,f={next:function(){if(!d&&c<a.length){var g=c++;return{value:b(g,a[g]),done:!1}}d=!0;return{done:!0,value:void 0}}};f[Symbol.iterator]=function(){return f};return f}y("Array.prototype.keys",function(a){return a?a:function(){return da(this,function(b){return b})}});function ea(a){var b="undefined"!=typeof Symbol&&Symbol.iterator&&a[Symbol.iterator];return b?b.call(a):{next:aa(a)}}
y("Promise",function(a){function b(e){this.l=0;this.m=void 0;this.h=[];this.M=!1;var h=this.o();try{e(h.resolve,h.reject)}catch(k){h.reject(k)}}function c(){this.h=null}function d(e){return e instanceof b?e:new b(function(h){h(e)})}if(a)return a;c.prototype.l=function(e){if(null==this.h){this.h=[];var h=this;this.m(function(){h.D()})}this.h.push(e)};var f=w.setTimeout;c.prototype.m=function(e){f(e,0)};c.prototype.D=function(){for(;this.h&&this.h.length;){var e=this.h;this.h=[];for(var h=0;h<e.length;++h){var k=
e[h];e[h]=null;try{k()}catch(l){this.o(l)}}}this.h=null};c.prototype.o=function(e){this.m(function(){throw e;})};b.prototype.o=function(){function e(l){return function(p){k||(k=!0,l.call(h,p))}}var h=this,k=!1;return{resolve:e(this.S),reject:e(this.D)}};b.prototype.S=function(e){if(e===this)this.D(new TypeError("A Promise cannot resolve to itself"));else if(e instanceof b)this.U(e);else{a:switch(typeof e){case "object":var h=null!=e;break a;case "function":h=!0;break a;default:h=!1}h?this.R(e):this.I(e)}};
b.prototype.R=function(e){var h=void 0;try{h=e.then}catch(k){this.D(k);return}"function"==typeof h?this.V(h,e):this.I(e)};b.prototype.D=function(e){this.N(2,e)};b.prototype.I=function(e){this.N(1,e)};b.prototype.N=function(e,h){if(0!=this.l)throw Error("Cannot settle("+e+", "+h+"): Promise already settled in state"+this.l);this.l=e;this.m=h;2===this.l&&this.T();this.O()};b.prototype.T=function(){var e=this;f(function(){if(e.P()){var h=w.console;"undefined"!==typeof h&&h.error(e.m)}},1)};b.prototype.P=
function(){if(this.M)return!1;var e=w.CustomEvent,h=w.Event,k=w.dispatchEvent;if("undefined"===typeof k)return!0;"function"===typeof e?e=new e("unhandledrejection",{cancelable:!0}):"function"===typeof h?e=new h("unhandledrejection",{cancelable:!0}):(e=w.document.createEvent("CustomEvent"),e.initCustomEvent("unhandledrejection",!1,!0,e));e.promise=this;e.reason=this.m;return k(e)};b.prototype.O=function(){if(null!=this.h){for(var e=0;e<this.h.length;++e)g.l(this.h[e]);this.h=null}};var g=new c;b.prototype.U=
function(e){var h=this.o();e.J(h.resolve,h.reject)};b.prototype.V=function(e,h){var k=this.o();try{e.call(h,k.resolve,k.reject)}catch(l){k.reject(l)}};b.prototype.then=function(e,h){function k(m,q){return"function"==typeof m?function(r){try{l(m(r))}catch(u){p(u)}}:q}var l,p,n=new b(function(m,q){l=m;p=q});this.J(k(e,l),k(h,p));return n};b.prototype.catch=function(e){return this.then(void 0,e)};b.prototype.J=function(e,h){function k(){switch(l.l){case 1:e(l.m);break;case 2:h(l.m);break;default:throw Error("Unexpected state: "+
l.l);}}var l=this;null==this.h?g.l(k):this.h.push(k);this.M=!0};b.resolve=d;b.reject=function(e){return new b(function(h,k){k(e)})};b.race=function(e){return new b(function(h,k){for(var l=ea(e),p=l.next();!p.done;p=l.next())d(p.value).J(h,k)})};b.all=function(e){var h=ea(e),k=h.next();return k.done?d([]):new b(function(l,p){function n(r){return function(u){m[r]=u;q--;0==q&&l(m)}}var m=[],q=0;do m.push(void 0),q++,d(k.value).J(n(m.length-1),p),k=h.next();while(!k.done)})};return b});
y("Object.is",function(a){return a?a:function(b,c){return b===c?0!==b||1/b===1/c:b!==b&&c!==c}});y("Array.prototype.includes",function(a){return a?a:function(b,c){var d=this;d instanceof String&&(d=String(d));var f=d.length;c=c||0;for(0>c&&(c=Math.max(c+f,0));c<f;c++){var g=d[c];if(g===b||Object.is(g,b))return!0}return!1}});
y("String.prototype.includes",function(a){return a?a:function(b,c){if(null==this)throw new TypeError("The 'this' value for String.prototype.includes must not be null or undefined");if(b instanceof RegExp)throw new TypeError("First argument to String.prototype.includes must not be a regular expression");return-1!==this.indexOf(b,c||0)}});
var fa="function"==typeof Object.assign?Object.assign:function(a,b){for(var c=1;c<arguments.length;c++){var d=arguments[c];if(d)for(var f in d)Object.prototype.hasOwnProperty.call(d,f)&&(a[f]=d[f])}return a};y("Object.assign",function(a){return a||fa});function C(a){return"undefined"!==typeof a?a:!0}function ha(a){for(var b=Array(a),c=0;c<a;c++)b[c]=D();return b}function D(){return Object.create(null)}function ia(a,b){return b.length-a.length}function E(a){return"string"===typeof a}function F(a){return"object"===typeof a}function G(a){return"function"===typeof a};function ja(a,b){var c=ka;if(a&&(b&&(a=I(a,b)),this.K&&(a=I(a,this.K)),this.L&&1<a.length&&(a=I(a,this.L)),c||""===c)){a=a.split(c);if(this.filter){b=this.filter;c=a.length;for(var d=[],f=0,g=0;f<c;f++){var e=a[f];e&&!b[e]&&(d[g++]=e)}a=d}return a}return a}var ka=/[\p{Z}\p{S}\p{P}\p{C}]+/u,la=/[\u0300-\u036f]/g;
function ma(a,b){for(var c=Object.keys(a),d=c.length,f=[],g="",e=0,h=0,k,l;h<d;h++)k=c[h],(l=a[k])?(f[e++]=J(b?"(?!\\b)"+k+"(\\b|_)":k),f[e++]=l):g+=(g?"|":"")+k;g&&(f[e++]=J(b?"(?!\\b)("+g+")(\\b|_)":"("+g+")"),f[e]="");return f}function I(a,b){for(var c=0,d=b.length;c<d&&(a=a.replace(b[c],b[c+1]),a);c+=2);return a}function J(a){return new RegExp(a,"g")}function na(a){for(var b="",c="",d=0,f=a.length,g=void 0;d<f;d++)(g=a[d])!==c&&(b+=c=g);return b};var pa={encode:oa,G:!1,H:""};function oa(a){return ja.call(this,(""+a).toLowerCase(),!1)};var qa={},K={};function ra(a){L(a,"add");L(a,"append");L(a,"search");L(a,"update");L(a,"remove")}function L(a,b){a[b+"Async"]=function(){var c=this,d=arguments,f=d[d.length-1];if(G(f)){var g=f;delete d[d.length-1]}f=new Promise(function(e){setTimeout(function(){c.async=!0;var h=c[b].apply(c,d);c.async=!1;e(h)})});return g?(f.then(g),this):f}};function sa(a,b,c,d){var f=a.length,g=[],e,h=0;d&&(d=[]);for(var k=f-1;0<=k;k--){for(var l=a[k],p=l.length,n=D(),m=!B,q=0;q<p;q++){var r=l[q],u=r.length;if(u)for(var A=0,x,z;A<u;A++)if(z=r[A],B){if(B[z]){if(!k)if(c)c--;else if(g[h++]=z,h===b)return g;if(k||d)n[z]=1;m=!0}d&&(x=(e[z]||0)+1,e[z]=x,x<f&&(x=d[x-2]||(d[x-2]=[]),x[x.length]=z))}else n[z]=1}if(d)B||(e=n);else if(!m)return[];var B=n}if(d)for(a=d.length-1;0<=a;a--)for(f=d[a],e=f.length,k=0;k<e;k++)if(l=f[k],!B[l]){if(c)c--;else if(g[h++]=l,
h===b)return g;B[l]=1}return g}function ta(a,b){for(var c=D(),d=D(),f=[],g=0;g<a.length;g++)c[a[g]]=1;for(a=0;a<b.length;a++){g=b[a];for(var e=0,h;e<g.length;e++)h=g[e],c[h]&&!d[h]&&(d[h]=1,f[f.length]=h)}return f};function M(a){this.l=!0!==a&&a;this.cache=D();this.h=[]}function ua(a,b,c){F(a)&&(a=a.query);var d=this.cache.get(a);d||(d=this.search(a,b,c),this.cache.set(a,d));return d}M.prototype.set=function(a,b){if(!this.cache[a]){var c=this.h.length;c===this.l?delete this.cache[this.h[c-1]]:c++;for(--c;0<c;c--)this.h[c]=this.h[c-1];this.h[0]=a}this.cache[a]=b};M.prototype.get=function(a){var b=this.cache[a];if(this.l&&b&&(a=this.h.indexOf(a))){var c=this.h[a-1];this.h[a-1]=this.h[a];this.h[a]=c}return b};var va={memory:{charset:"latin:extra",F:3,C:4,s:!1},performance:{F:3,C:3,B:!1,context:{depth:2,F:1}},match:{charset:"latin:extra",H:"reverse"},score:{charset:"latin:advanced",F:20,C:3,context:{depth:3,F:9}},"default":{}};function wa(a,b,c,d,f,g,e){setTimeout(function(){var h=a(c?c+"."+d:d,JSON.stringify(e));h&&h.then?h.then(function(){b.export(a,b,c,f,g+1)}):b.export(a,b,c,f,g+1)})};function N(a,b){if(!(this instanceof N))return new N(a);var c;if(a){E(a)?a=va[a]:(c=a.preset)&&(a=Object.assign({},c[c],a));c=a.charset;var d=a.lang;E(c)&&(-1===c.indexOf(":")&&(c+=":default"),c=K[c]);E(d)&&(d=qa[d])}else a={};var f,g,e=a.context||{};this.encode=a.encode||c&&c.encode||oa;this.register=b||D();this.F=f=a.resolution||9;this.H=b=c&&c.H||a.tokenize||"strict";this.depth="strict"===b&&e.depth;this.l=C(e.bidirectional);this.B=g=C(a.optimize);this.s=C(a.fastupdate);this.C=a.minlength||1;this.o=
a.boost;this.map=g?ha(f):D();this.m=f=e.resolution||1;this.h=g?ha(f):D();this.G=c&&c.G||a.rtl;this.K=(b=a.matcher||d&&d.K)&&ma(b,!1);this.L=(b=a.stemmer||d&&d.L)&&ma(b,!0);if(c=b=a.filter||d&&d.filter){c=b;d=D();e=0;for(f=c.length;e<f;e++)d[c[e]]=1;c=d}this.filter=c;this.cache=(b=a.cache)&&new M(b)}t=N.prototype;t.append=function(a,b){return this.add(a,b,!0)};
t.add=function(a,b,c,d){if(b&&(a||0===a)){if(!d&&!c&&this.register[a])return this.update(a,b);b=this.encode(b);if(d=b.length){for(var f=D(),g=D(),e=this.depth,h=this.F,k=0;k<d;k++){var l=b[this.G?d-1-k:k],p=l.length;if(l&&p>=this.C&&(e||!g[l])){var n=O(h,d,k),m="";switch(this.H){case "full":if(2<p){for(n=0;n<p;n++)for(var q=p;q>n;q--)if(q-n>=this.C){var r=O(h,d,k,p,n);m=l.substring(n,q);P(this,g,m,r,a,c)}break}case "reverse":if(1<p){for(q=p-1;0<q;q--)m=l[q]+m,m.length>=this.C&&P(this,g,m,O(h,d,k,
p,q),a,c);m=""}case "forward":if(1<p){for(q=0;q<p;q++)m+=l[q],m.length>=this.C&&P(this,g,m,n,a,c);break}default:if(this.o&&(n=Math.min(n/this.o(b,l,k)|0,h-1)),P(this,g,l,n,a,c),e&&1<d&&k<d-1)for(p=D(),m=this.m,n=l,q=Math.min(e+1,d-k),r=p[n]=1;r<q;r++)if((l=b[this.G?d-1-k-r:k+r])&&l.length>=this.C&&!p[l]){p[l]=1;var u=this.l&&l>n;P(this,f,u?n:l,O(m+(d/2>m?0:1),d,k,q-1,r-1),a,c,u?l:n)}}}}this.s||(this.register[a]=1)}}return this};
function O(a,b,c,d,f){return c&&1<a?b+(d||0)<=a?c+(f||0):(a-1)/(b+(d||0))*(c+(f||0))+1|0:0}function P(a,b,c,d,f,g,e){var h=e?a.h:a.map;if(!b[c]||e&&!b[c][e])a.B&&(h=h[d]),e?(b=b[c]||(b[c]=D()),b[e]=1,h=h[e]||(h[e]=D())):b[c]=1,h=h[c]||(h[c]=[]),a.B||(h=h[d]||(h[d]=[])),g&&h.includes(f)||(h[h.length]=f,a.s&&(a=a.register[f]||(a.register[f]=[]),a[a.length]=h))}
t.search=function(a,b,c){c||(!b&&F(a)?(c=a,a=c.query):F(b)&&(c=b));var d=[],f=0;if(c){a=c.query||a;b=c.limit;f=c.offset||0;var g=c.context;var e=c.suggest}if(a){a=this.encode(""+a);var h=a.length;if(1<h){c=D();for(var k=[],l=0,p=0,n;l<h;l++)if((n=a[l])&&n.length>=this.C&&!c[n])if(this.B||e||this.map[n])k[p++]=n,c[n]=1;else return d;a=k;h=a.length}}if(!h)return d;b||(b=100);g=this.depth&&1<h&&!1!==g;c=0;if(g){var m=a[0];c=1}else 1<h&&a.sort(ia);for(;c<h;c++){l=a[c];g?(k=xa(this,d,e,b,f,2===h,l,m),
e&&!1===k&&d.length||(m=l)):k=xa(this,d,e,b,f,1===h,l);if(k)return k;if(e&&c===h-1){k=d.length;if(!k){if(g){g=0;c=-1;continue}return d}if(1===k)return ya(d[0],b,f)}}return sa(d,b,f,e)};
function xa(a,b,c,d,f,g,e,h){var k=[],l=h?a.h:a.map;a.B||(l=za(l,e,h,a.l));if(l){for(var p=0,n=Math.min(l.length,h?a.m:a.F),m=0,q=0,r,u;m<n;m++)if(r=l[m])if(a.B&&(r=za(r,e,h,a.l)),f&&r&&g&&(u=r.length,u<=f?(f-=u,r=null):(r=r.slice(f),f=0)),r&&(k[p++]=r,g&&(q+=r.length,q>=d)))break;if(p){if(g)return ya(k,d,0);b[b.length]=k;return}}return!c&&k}function ya(a,b,c){a=1===a.length?a[0]:[].concat.apply([],a);return c||a.length>b?a.slice(c,c+b):a}
function za(a,b,c,d){c?(d=d&&b>c,a=(a=a[d?b:c])&&a[d?c:b]):a=a[b];return a}t.contain=function(a){return!!this.register[a]};t.update=function(a,b){return this.remove(a).add(a,b)};
t.remove=function(a,b){var c=this.register[a];if(c){if(this.s)for(var d=0,f;d<c.length;d++)f=c[d],f.splice(f.indexOf(a),1);else Q(this.map,a,this.F,this.B),this.depth&&Q(this.h,a,this.m,this.B);b||delete this.register[a];if(this.cache)for(b=this.cache,c=0;c<b.h.length;c++)f=b.h[c],d=b.cache[f],d.includes(a)&&(b.h.splice(c--,1),delete b.cache[f])}return this};
function Q(a,b,c,d,f){var g=0;if(a.constructor===Array)if(f)b=a.indexOf(b),-1!==b?1<a.length&&(a.splice(b,1),g++):g++;else{f=Math.min(a.length,c);for(var e=0,h;e<f;e++)if(h=a[e])g=Q(h,b,c,d,f),d||g||delete a[e]}else for(e in a)(g=Q(a[e],b,c,d,f))||delete a[e];return g}t.searchCache=ua;
t.export=function(a,b,c,d,f){switch(f||(f=0)){case 0:var g="reg";if(this.s){var e=D();for(var h in this.register)e[h]=1}else e=this.register;break;case 1:g="cfg";e={doc:0,opt:this.B?1:0};break;case 2:g="map";e=this.map;break;case 3:g="ctx";e=this.h;break;default:return}wa(a,b||this,c,g,d,f,e);return!0};t.import=function(a,b){if(b)switch(E(b)&&(b=JSON.parse(b)),a){case "cfg":this.B=!!b.opt;break;case "reg":this.s=!1;this.register=b;break;case "map":this.map=b;break;case "ctx":this.h=b}};ra(N.prototype);function Aa(a){a=a.data;var b=self._index,c=a.args,d=a.task;switch(d){case "init":d=a.options||{};a=a.factory;b=d.encode;d.cache=!1;b&&0===b.indexOf("function")&&(d.encode=Function("return "+b)());a?(Function("return "+a)()(self),self._index=new self.FlexSearch.Index(d),delete self.FlexSearch):self._index=new N(d);break;default:a=a.id,b=b[d].apply(b,c),postMessage("search"===d?{id:a,msg:b}:{id:a})}};var Ba=0;function R(a){if(!(this instanceof R))return new R(a);var b;a?G(b=a.encode)&&(a.encode=b.toString()):a={};(b=(self||window)._factory)&&(b=b.toString());var c="undefined"===typeof window&&self.exports,d=this;this.A=Ca(b,c,a.worker);this.h=D();if(this.A){if(c)this.A.on("message",function(f){d.h[f.id](f.msg);delete d.h[f.id]});else this.A.onmessage=function(f){f=f.data;d.h[f.id](f.msg);delete d.h[f.id]};this.A.postMessage({task:"init",factory:b,options:a})}}S("add");S("append");S("search");
S("update");S("remove");function S(a){R.prototype[a]=R.prototype[a+"Async"]=function(){var b=this,c=[].slice.call(arguments),d=c[c.length-1];if(G(d)){var f=d;c.splice(c.length-1,1)}d=new Promise(function(g){setTimeout(function(){b.h[++Ba]=g;b.A.postMessage({task:a,id:Ba,args:c})})});return f?(d.then(f),this):d}}
function Ca(a,b,c){try{var d=b?eval('new (require("worker_threads")["Worker"])("../dist/node/node.js")'):a?new Worker(URL.createObjectURL(new Blob(["onmessage="+Aa.toString()],{type:"text/javascript"}))):new Worker(E(c)?c:"worker/worker.js",{type:"module"})}catch(f){}return d};function T(a){if(!(this instanceof T))return new T(a);var b=a.document||a.doc||a,c;this.I=[];this.h=[];this.m=[];this.register=D();this.key=(c=b.key||b.id)&&U(c,this.m)||"id";this.s=C(a.fastupdate);this.o=(c=b.store)&&!0!==c&&[];this.store=c&&D();this.D=(c=b.tag)&&U(c,this.m);this.l=c&&D();this.cache=(c=a.cache)&&new M(c);a.cache=!1;this.A=a.worker;this.async=!1;c=D();var d=b.index||b.field||b;E(d)&&(d=[d]);for(var f=0,g,e=void 0;f<d.length;f++)g=d[f],E(g)||(e=g,g=g.field),e=F(e)?Object.assign({},
a,e):a,this.A&&(c[g]=new R(e),c[g].A||(this.A=!1)),this.A||(c[g]=new N(e,this.register)),this.I[f]=U(g,this.m),this.h[f]=g;if(this.o)for(a=b.store,E(a)&&(a=[a]),b=0;b<a.length;b++)this.o[b]=U(a[b],this.m);this.index=c}function U(a,b){for(var c=a.split(":"),d=0,f=0;f<c.length;f++)a=c[f],0<=a.indexOf("[]")&&(a=a.substring(0,a.length-2))&&(b[d]=!0),a&&(c[d++]=a);d<c.length&&(c.length=d);return 1<d?c:c[0]}function V(a,b){if(E(b))a=a[b];else for(var c=0;a&&c<b.length;c++)a=a[b[c]];return a}
function W(a,b,c,d,f){a=a[f];if(d===c.length-1)b[f]=a;else if(a)if(a.constructor===Array)for(b=b[f]=Array(a.length),f=0;f<a.length;f++)W(a,b,c,d,f);else b=b[f]||(b[f]=D()),f=c[++d],W(a,b,c,d,f)}function X(a,b,c,d,f,g,e,h){if(a=a[e])if(d===b.length-1){if(a.constructor===Array){if(c[d]){for(b=0;b<a.length;b++)f.add(g,a[b],!0,!0);return}a=a.join(" ")}f.add(g,a,h,!0)}else if(a.constructor===Array)for(e=0;e<a.length;e++)X(a,b,c,d,f,g,e,h);else e=b[++d],X(a,b,c,d,f,g,e,h)}t=T.prototype;
t.add=function(a,b,c){F(a)&&(b=a,a=V(b,this.key));if(b&&(a||0===a)){if(!c&&this.register[a])return this.update(a,b);for(var d=0,f,g;d<this.h.length;d++)g=this.h[d],f=this.I[d],E(f)&&(f=[f]),X(b,f,this.m,0,this.index[g],a,f[0],c);if(this.D){d=V(b,this.D);f=D();E(d)&&(d=[d]);g=0;for(var e;g<d.length;g++)if(e=d[g],!f[e]&&(f[e]=1,e=this.l[e]||(this.l[e]=[]),!c||!e.includes(a)))if(e[e.length]=a,this.s){var h=this.register[a]||(this.register[a]=[]);h[h.length]=e}}if(this.store&&(!c||!this.store[a])){if(this.o){var k=
D();for(c=0;c<this.o.length;c++)d=this.o[c],E(d)?k[d]=b[d]:W(b,k,d,0,d[0])}this.store[a]=k||b}}return this};t.append=function(a,b){return this.add(a,b,!0)};t.update=function(a,b){return this.remove(a).add(a,b)};
t.remove=function(a){F(a)&&(a=V(a,this.key));if(this.register[a]){for(var b=0;b<this.h.length&&(this.index[this.h[b]].remove(a,!this.A),!this.s);b++);if(this.D&&!this.s)for(var c in this.l){b=this.l[c];var d=b.indexOf(a);-1!==d&&(1<b.length?b.splice(d,1):delete this.l[c])}this.store&&delete this.store[a];delete this.register[a]}return this};
t.search=function(a,b,c,d){c||(!b&&F(a)?(c=a,a=""):F(b)&&(c=b,b=0));var f=[],g=[],e,h=0;if(c)if(c.constructor===Array){var k=c;c=null}else{a=c.query||a;k=(e=c.pluck)||c.index||c.field;var l=c.tag;var p=this.store&&c.enrich;var n="and"===c.bool;b=c.limit||b||100;var m=c.offset||0;if(l&&(E(l)&&(l=[l]),!a)){g=0;for(e=void 0;g<l.length;g++)if(e=Da.call(this,l[g],b,m,p))f[f.length]=e,h++;return h?f:[]}E(k)&&(k=[k])}k||(k=this.h);n=n&&(1<k.length||l&&1<l.length);for(var q=!d&&(this.A||this.async)&&[],r=
0,u=void 0,A=void 0,x=void 0;r<k.length;r++)if(x=void 0,A=k[r],E(A)||(x=A,A=x.field,a=x.query||a,b=x.limit||b),q)q[r]=this.index[A].searchAsync(a,b,x||c);else{d?u=d[r]:u=this.index[A].search(a,b,x||c);x=u&&u.length;if(l&&x){var z=[],B=0;n&&(z[0]=[u]);var Z=0,H=void 0;for(H=void 0;Z<l.length;Z++)if(H=l[Z],x=(H=this.l[H])&&H.length)B++,z[z.length]=n?[H]:H;B&&(u=n?sa(z,b||100,m||0):ta(u,z),x=u.length)}if(x)g[h]=A,f[h++]=u;else if(n)return[]}if(q){var La=this;return new Promise(function(Ma){Promise.all(q).then(function(Na){Ma(La.search(a,
b,c,Na))})})}if(!h)return[];if(e&&(!p||!this.store))return f[0];l=0;for(m=void 0;l<g.length;l++){m=f[l];m.length&&p&&(m=Ea.call(this,m));if(e)return m;f[l]={field:g[l],result:m}}return f};function Da(a,b,c,d){var f=this.l[a],g=f&&f.length-c;if(g&&0<g){if(g>b||c)f=f.slice(c,c+b);d&&(f=Ea.call(this,f));return{tag:a,result:f}}}function Ea(a){for(var b=Array(a.length),c=0,d;c<a.length;c++)d=a[c],b[c]={id:d,doc:this.store[d]};return b}t.contain=function(a){return!!this.register[a]};t.get=function(a){return this.store[a]};
t.set=function(a,b){this.store[a]=b;return this};t.searchCache=ua;t.export=function(a,b,c,d,f){f||(f=0);d||(d=0);if(d<this.h.length){var g=this.h[d],e=this.index[g];b=this;setTimeout(function(){e.export(a,b,f?g:"",d,f++)||(d++,f=1,b.export(a,b,g,d,f))})}else{switch(f){case 1:var h="tag";var k=this.l;break;case 2:h="store";k=this.store;break;default:return}wa(a,this,c,h,d,f,k)}};
t.import=function(a,b){if(b)switch(E(b)&&(b=JSON.parse(b)),a){case "tag":this.l=b;break;case "reg":this.s=!1;this.register=b;a=0;for(var c;a<this.h.length;a++)c=this.index[this.h[a]],c.register=b,c.s=!1;break;case "store":this.store=b;break;default:a=a.split("."),c=a[0],a=a[1],c&&a&&this.index[c].import(a,b)}};ra(T.prototype);var Ga={encode:Fa,G:!1,H:""},Ha=[J("[\u00e0\u00e1\u00e2\u00e3\u00e4\u00e5]"),"a",J("[\u00e8\u00e9\u00ea\u00eb]"),"e",J("[\u00ec\u00ed\u00ee\u00ef]"),"i",J("[\u00f2\u00f3\u00f4\u00f5\u00f6\u0151]"),"o",J("[\u00f9\u00fa\u00fb\u00fc\u0171]"),"u",J("[\u00fd\u0177\u00ff]"),"y",J("\u00f1"),"n",J("[\u00e7c]"),"k",J("\u00df"),"s",J(" & ")," and "];function Fa(a){var b=a=""+a;b.normalize&&(b=b.normalize("NFD").replace(la,""));return ja.call(this,b.toLowerCase(),!a.normalize&&Ha)};var Ja={encode:Ia,G:!1,H:"strict"},Ka=/[^a-z0-9]+/,Oa={b:"p",v:"f",w:"f",z:"s",x:"s","\u00df":"s",d:"t",n:"m",c:"k",g:"k",j:"k",q:"k",i:"e",y:"e",u:"o"};function Ia(a){a=Fa.call(this,a).join(" ");var b=[];if(a)for(var c=a.split(Ka),d=c.length,f=0,g,e=0;f<d;f++)if((a=c[f])&&(!this.filter||!this.filter[a])){g=a[0];for(var h=Oa[g]||g,k=h,l=1;l<a.length;l++)g=a[l],(g=Oa[g]||g)&&g!==k&&(h+=g,k=g);b[e++]=h}return b};var Qa={encode:Pa,G:!1,H:""},Ra=[J("ae"),"a",J("oe"),"o",J("sh"),"s",J("th"),"t",J("ph"),"f",J("pf"),"f",J("(?![aeo])h(?![aeo])"),"",J("(?!^[aeo])h(?!^[aeo])"),""];function Pa(a,b){a&&(a=Ia.call(this,a).join(" "),2<a.length&&(a=I(a,Ra)),b||(1<a.length&&(a=na(a)),a&&(a=a.split(" "))));return a||[]};var Ta={encode:Sa,G:!1,H:""},Ua=J("(?!\\b)[aeo]");function Sa(a){a&&(a=Pa.call(this,a,!0),1<a.length&&(a=a.replace(Ua,"")),1<a.length&&(a=na(a)),a&&(a=a.split(" ")));return a||[]};K["latin:default"]=pa;K["latin:simple"]=Ga;K["latin:balance"]=Ja;K["latin:advanced"]=Qa;K["latin:extra"]=Ta;var Y=self,Va,Wa={Index:N,Document:T,Worker:R,registerCharset:function(a,b){K[a]=b},registerLanguage:function(a,b){qa[a]=b}};(Va=Y.define)&&Va.amd?Va([],function(){return Wa}):Y.exports?Y.exports=Wa:Y.FlexSearch=Wa;}(this));

48
dist/flexsearch.es5.min.js vendored Normal file
View File

@@ -0,0 +1,48 @@
/**!
* FlexSearch.js v0.7.39 (Es5)
* Author and Copyright: Thomas Wilkerling
* Licence: Apache-2.0
* Hosted by Nextapps GmbH
* https://github.com/nextapps-de/flexsearch
*/
(function(self){'use strict';var t;function aa(a){var b=0;return function(){return b<a.length?{done:!1,value:a[b++]}:{done:!0}}}var v="function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){if(a==Array.prototype||a==Object.prototype)return a;a[b]=c.value;return a};
function ba(a){a=["object"==typeof globalThis&&globalThis,a,"object"==typeof window&&window,"object"==typeof self&&self,"object"==typeof global&&global];for(var b=0;b<a.length;++b){var c=a[b];if(c&&c.Math==Math)return c}throw Error("Cannot find global object");}var x=ba(this);function y(a,b){if(b)a:{var c=x;a=a.split(".");for(var d=0;d<a.length-1;d++){var e=a[d];if(!(e in c))break a;c=c[e]}a=a[a.length-1];d=c[a];b=b(d);b!=d&&null!=b&&v(c,a,{configurable:!0,writable:!0,value:b})}}
y("Symbol",function(a){function b(g){if(this instanceof b)throw new TypeError("Symbol is not a constructor");return new c(d+(g||"")+"_"+e++,g)}function c(g,f){this.h=g;v(this,"description",{configurable:!0,writable:!0,value:f})}if(a)return a;c.prototype.toString=function(){return this.h};var d="jscomp_symbol_"+(1E9*Math.random()>>>0)+"_",e=0;return b});
y("Symbol.iterator",function(a){if(a)return a;a=Symbol("Symbol.iterator");for(var b="Array Int8Array Uint8Array Uint8ClampedArray Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array".split(" "),c=0;c<b.length;c++){var d=x[b[c]];"function"===typeof d&&"function"!=typeof d.prototype[a]&&v(d.prototype,a,{configurable:!0,writable:!0,value:function(){return ca(aa(this))}})}return a});function ca(a){a={next:a};a[Symbol.iterator]=function(){return this};return a}
function da(a,b){a instanceof String&&(a+="");var c=0,d=!1,e={next:function(){if(!d&&c<a.length){var g=c++;return{value:b(g,a[g]),done:!1}}d=!0;return{done:!0,value:void 0}}};e[Symbol.iterator]=function(){return e};return e}y("Array.prototype.keys",function(a){return a?a:function(){return da(this,function(b){return b})}});
function ea(a){var b="undefined"!=typeof Symbol&&Symbol.iterator&&a[Symbol.iterator];if(b)return b.call(a);if("number"==typeof a.length)return{next:aa(a)};throw Error(String(a)+" is not an iterable or ArrayLike");}
y("Promise",function(a){function b(f){this.l=0;this.m=void 0;this.h=[];this.M=!1;var h=this.o();try{f(h.resolve,h.reject)}catch(k){h.reject(k)}}function c(){this.h=null}function d(f){return f instanceof b?f:new b(function(h){h(f)})}if(a)return a;c.prototype.l=function(f){if(null==this.h){this.h=[];var h=this;this.m(function(){h.D()})}this.h.push(f)};var e=x.setTimeout;c.prototype.m=function(f){e(f,0)};c.prototype.D=function(){for(;this.h&&this.h.length;){var f=this.h;this.h=[];for(var h=0;h<f.length;++h){var k=
f[h];f[h]=null;try{k()}catch(l){this.o(l)}}}this.h=null};c.prototype.o=function(f){this.m(function(){throw f;})};b.prototype.o=function(){function f(l){return function(m){k||(k=!0,l.call(h,m))}}var h=this,k=!1;return{resolve:f(this.S),reject:f(this.D)}};b.prototype.S=function(f){if(f===this)this.D(new TypeError("A Promise cannot resolve to itself"));else if(f instanceof b)this.U(f);else{a:switch(typeof f){case "object":var h=null!=f;break a;case "function":h=!0;break a;default:h=!1}h?this.R(f):this.I(f)}};
b.prototype.R=function(f){var h=void 0;try{h=f.then}catch(k){this.D(k);return}"function"==typeof h?this.V(h,f):this.I(f)};b.prototype.D=function(f){this.N(2,f)};b.prototype.I=function(f){this.N(1,f)};b.prototype.N=function(f,h){if(0!=this.l)throw Error("Cannot settle("+f+", "+h+"): Promise already settled in state"+this.l);this.l=f;this.m=h;2===this.l&&this.T();this.O()};b.prototype.T=function(){var f=this;e(function(){if(f.P()){var h=x.console;"undefined"!==typeof h&&h.error(f.m)}},1)};b.prototype.P=
function(){if(this.M)return!1;var f=x.CustomEvent,h=x.Event,k=x.dispatchEvent;if("undefined"===typeof k)return!0;"function"===typeof f?f=new f("unhandledrejection",{cancelable:!0}):"function"===typeof h?f=new h("unhandledrejection",{cancelable:!0}):(f=x.document.createEvent("CustomEvent"),f.initCustomEvent("unhandledrejection",!1,!0,f));f.promise=this;f.reason=this.m;return k(f)};b.prototype.O=function(){if(null!=this.h){for(var f=0;f<this.h.length;++f)g.l(this.h[f]);this.h=null}};var g=new c;b.prototype.U=
function(f){var h=this.o();f.J(h.resolve,h.reject)};b.prototype.V=function(f,h){var k=this.o();try{f.call(h,k.resolve,k.reject)}catch(l){k.reject(l)}};b.prototype.then=function(f,h){function k(n,q){return"function"==typeof n?function(r){try{l(n(r))}catch(u){m(u)}}:q}var l,m,p=new b(function(n,q){l=n;m=q});this.J(k(f,l),k(h,m));return p};b.prototype.catch=function(f){return this.then(void 0,f)};b.prototype.J=function(f,h){function k(){switch(l.l){case 1:f(l.m);break;case 2:h(l.m);break;default:throw Error("Unexpected state: "+
l.l);}}var l=this;null==this.h?g.l(k):this.h.push(k);this.M=!0};b.resolve=d;b.reject=function(f){return new b(function(h,k){k(f)})};b.race=function(f){return new b(function(h,k){for(var l=ea(f),m=l.next();!m.done;m=l.next())d(m.value).J(h,k)})};b.all=function(f){var h=ea(f),k=h.next();return k.done?d([]):new b(function(l,m){function p(r){return function(u){n[r]=u;q--;0==q&&l(n)}}var n=[],q=0;do n.push(void 0),q++,d(k.value).J(p(n.length-1),m),k=h.next();while(!k.done)})};return b});
y("Object.is",function(a){return a?a:function(b,c){return b===c?0!==b||1/b===1/c:b!==b&&c!==c}});y("Array.prototype.includes",function(a){return a?a:function(b,c){var d=this;d instanceof String&&(d=String(d));var e=d.length;c=c||0;for(0>c&&(c=Math.max(c+e,0));c<e;c++){var g=d[c];if(g===b||Object.is(g,b))return!0}return!1}});
y("String.prototype.includes",function(a){return a?a:function(b,c){if(null==this)throw new TypeError("The 'this' value for String.prototype.includes must not be null or undefined");if(b instanceof RegExp)throw new TypeError("First argument to String.prototype.includes must not be a regular expression");return-1!==this.indexOf(b,c||0)}});
var fa="function"==typeof Object.assign?Object.assign:function(a,b){for(var c=1;c<arguments.length;c++){var d=arguments[c];if(d)for(var e in d)Object.prototype.hasOwnProperty.call(d,e)&&(a[e]=d[e])}return a};y("Object.assign",function(a){return a||fa});function C(a){return"undefined"!==typeof a?a:!0}function ha(a){for(var b=Array(a),c=0;c<a;c++)b[c]=D();return b}function D(){return Object.create(null)}function ia(a,b){return b.length-a.length}function E(a){return"string"===typeof a}function F(a){return"object"===typeof a}function G(a){return"function"===typeof a};function ja(a,b){var c=ka;if(a&&(b&&(a=I(a,b)),this.K&&(a=I(a,this.K)),this.L&&1<a.length&&(a=I(a,this.L)),c||""===c)){a=a.split(c);if(this.filter){b=this.filter;c=a.length;for(var d=[],e=0,g=0;e<c;e++){var f=a[e];f&&!b[f]&&(d[g++]=f)}a=d}return a}return a}var ka=/[\p{Z}\p{S}\p{P}\p{C}]+/u,la=/[\u0300-\u036f]/g;
function ma(a,b){for(var c=Object.keys(a),d=c.length,e=[],g="",f=0,h=0,k,l;h<d;h++)k=c[h],(l=a[k])?(e[f++]=J(b?"(?!\\b)"+k+"(\\b|_)":k),e[f++]=l):g+=(g?"|":"")+k;g&&(e[f++]=J(b?"(?!\\b)("+g+")(\\b|_)":"("+g+")"),e[f]="");return e}function I(a,b){for(var c=0,d=b.length;c<d&&(a=a.replace(b[c],b[c+1]),a);c+=2);return a}function J(a){return new RegExp(a,"g")}function na(a){for(var b="",c="",d=0,e=a.length,g=void 0;d<e;d++)(g=a[d])!==c&&(b+=c=g);return b};var pa={encode:oa,G:!1,H:""};function oa(a){return ja.call(this,(""+a).toLowerCase(),!1)};var qa={},K={};function ra(a){L(a,"add");L(a,"append");L(a,"search");L(a,"update");L(a,"remove")}function L(a,b){a[b+"Async"]=function(){var c=this,d=arguments,e=d[d.length-1];if(G(e)){var g=e;delete d[d.length-1]}e=new Promise(function(f){setTimeout(function(){c.async=!0;var h=c[b].apply(c,d);c.async=!1;f(h)})});return g?(e.then(g),this):e}};function sa(a,b,c,d){var e=a.length,g=[],f,h=0;d&&(d=[]);for(var k=e-1;0<=k;k--){for(var l=a[k],m=l.length,p=D(),n=!B,q=0;q<m;q++){var r=l[q],u=r.length;if(u)for(var A=0,w,z;A<u;A++)if(z=r[A],B){if(B[z]){if(!k)if(c)c--;else if(g[h++]=z,h===b)return g;if(k||d)p[z]=1;n=!0}d&&(w=(f[z]||0)+1,f[z]=w,w<e&&(w=d[w-2]||(d[w-2]=[]),w[w.length]=z))}else p[z]=1}if(d)B||(f=p);else if(!n)return[];var B=p}if(d)for(a=d.length-1;0<=a;a--)for(e=d[a],f=e.length,k=0;k<f;k++)if(l=e[k],!B[l]){if(c)c--;else if(g[h++]=l,
h===b)return g;B[l]=1}return g}function ta(a,b){for(var c=D(),d=D(),e=[],g=0;g<a.length;g++)c[a[g]]=1;for(a=0;a<b.length;a++){g=b[a];for(var f=0,h;f<g.length;f++)h=g[f],c[h]&&!d[h]&&(d[h]=1,e[e.length]=h)}return e};function M(a){this.l=!0!==a&&a;this.cache=D();this.h=[]}function ua(a,b,c){F(a)&&(a=a.query);var d=this.cache.get(a);d||(d=this.search(a,b,c),this.cache.set(a,d));return d}M.prototype.set=function(a,b){if(!this.cache[a]){var c=this.h.length;c===this.l?delete this.cache[this.h[c-1]]:c++;for(--c;0<c;c--)this.h[c]=this.h[c-1];this.h[0]=a}this.cache[a]=b};M.prototype.get=function(a){var b=this.cache[a];if(this.l&&b&&(a=this.h.indexOf(a))){var c=this.h[a-1];this.h[a-1]=this.h[a];this.h[a]=c}return b};var va={memory:{charset:"latin:extra",F:3,C:4,s:!1},performance:{F:3,C:3,B:!1,context:{depth:2,F:1}},match:{charset:"latin:extra",H:"reverse"},score:{charset:"latin:advanced",F:20,C:3,context:{depth:3,F:9}},"default":{}};function wa(a,b,c,d,e,g,f,h){setTimeout(function(){var k=a(c?c+"."+d:d,JSON.stringify(f));k&&k.then?k.then(function(){b.export(a,b,c,e,g+1,h)}):b.export(a,b,c,e,g+1,h)})};function N(a,b){if(!(this instanceof N))return new N(a);var c;if(a){E(a)?a=va[a]:(c=a.preset)&&(a=Object.assign({},c[c],a));c=a.charset;var d=a.lang;E(c)&&(-1===c.indexOf(":")&&(c+=":default"),c=K[c]);E(d)&&(d=qa[d])}else a={};var e,g,f=a.context||{};this.encode=a.encode||c&&c.encode||oa;this.register=b||D();this.F=e=a.resolution||9;this.H=b=c&&c.H||a.tokenize||"strict";this.depth="strict"===b&&f.depth;this.l=C(f.bidirectional);this.B=g=C(a.optimize);this.s=C(a.fastupdate);this.C=a.minlength||1;this.o=
a.boost;this.map=g?ha(e):D();this.m=e=f.resolution||1;this.h=g?ha(e):D();this.G=c&&c.G||a.rtl;this.K=(b=a.matcher||d&&d.K)&&ma(b,!1);this.L=(b=a.stemmer||d&&d.L)&&ma(b,!0);if(c=b=a.filter||d&&d.filter){c=b;d=D();f=0;for(e=c.length;f<e;f++)d[c[f]]=1;c=d}this.filter=c;this.cache=(b=a.cache)&&new M(b)}t=N.prototype;t.append=function(a,b){return this.add(a,b,!0)};
t.add=function(a,b,c,d){if(b&&(a||0===a)){if(!d&&!c&&this.register[a])return this.update(a,b);b=this.encode(b);if(d=b.length){for(var e=D(),g=D(),f=this.depth,h=this.F,k=0;k<d;k++){var l=b[this.G?d-1-k:k],m=l.length;if(l&&m>=this.C&&(f||!g[l])){var p=O(h,d,k),n="";switch(this.H){case "full":if(2<m){for(p=0;p<m;p++)for(var q=m;q>p;q--)if(q-p>=this.C){var r=O(h,d,k,m,p);n=l.substring(p,q);P(this,g,n,r,a,c)}break}case "reverse":if(1<m){for(q=m-1;0<q;q--)n=l[q]+n,n.length>=this.C&&P(this,g,n,O(h,d,k,
m,q),a,c);n=""}case "forward":if(1<m){for(q=0;q<m;q++)n+=l[q],n.length>=this.C&&P(this,g,n,p,a,c);break}default:if(this.o&&(p=Math.min(p/this.o(b,l,k)|0,h-1)),P(this,g,l,p,a,c),f&&1<d&&k<d-1)for(m=D(),n=this.m,p=l,q=Math.min(f+1,d-k),r=m[p]=1;r<q;r++)if((l=b[this.G?d-1-k-r:k+r])&&l.length>=this.C&&!m[l]){m[l]=1;var u=this.l&&l>p;P(this,e,u?p:l,O(n+(d/2>n?0:1),d,k,q-1,r-1),a,c,u?l:p)}}}}this.s||(this.register[a]=1)}}return this};
function O(a,b,c,d,e){return c&&1<a?b+(d||0)<=a?c+(e||0):(a-1)/(b+(d||0))*(c+(e||0))+1|0:0}function P(a,b,c,d,e,g,f){var h=f?a.h:a.map;if(!b[c]||f&&!b[c][f])a.B&&(h=h[d]),f?(b=b[c]||(b[c]=D()),b[f]=1,h=h[f]||(h[f]=D())):b[c]=1,h=h[c]||(h[c]=[]),a.B||(h=h[d]||(h[d]=[])),g&&h.includes(e)||(h[h.length]=e,a.s&&(a=a.register[e]||(a.register[e]=[]),a[a.length]=h))}
t.search=function(a,b,c){c||(!b&&F(a)?(c=a,a=c.query):F(b)&&(c=b));var d=[],e=0;if(c){a=c.query||a;b=c.limit;e=c.offset||0;var g=c.context;var f=c.suggest}if(a){a=this.encode(""+a);var h=a.length;if(1<h){c=D();for(var k=[],l=0,m=0,p;l<h;l++)if((p=a[l])&&p.length>=this.C&&!c[p])if(this.B||f||this.map[p])k[m++]=p,c[p]=1;else return d;a=k;h=a.length}}if(!h)return d;b||(b=100);g=this.depth&&1<h&&!1!==g;c=0;if(g){var n=a[0];c=1}else 1<h&&a.sort(ia);for(;c<h;c++){l=a[c];g?(k=xa(this,d,f,b,e,2===h,l,n),
f&&!1===k&&d.length||(n=l)):k=xa(this,d,f,b,e,1===h,l);if(k)return k;if(f&&c===h-1){k=d.length;if(!k){if(g){g=0;c=-1;continue}return d}if(1===k)return ya(d[0],b,e)}}return sa(d,b,e,f)};
function xa(a,b,c,d,e,g,f,h){var k=[],l=h?a.h:a.map;a.B||(l=za(l,f,h,a.l));if(l){for(var m=0,p=Math.min(l.length,h?a.m:a.F),n=0,q=0,r,u;n<p;n++)if(r=l[n])if(a.B&&(r=za(r,f,h,a.l)),e&&r&&g&&(u=r.length,u<=e?(e-=u,r=null):(r=r.slice(e),e=0)),r&&(k[m++]=r,g&&(q+=r.length,q>=d)))break;if(m){if(g)return ya(k,d,0);b[b.length]=k;return}}return!c&&k}function ya(a,b,c){a=1===a.length?a[0]:[].concat.apply([],a);return c||a.length>b?a.slice(c,c+b):a}
function za(a,b,c,d){c?(d=d&&b>c,a=(a=a[d?b:c])&&a[d?c:b]):a=a[b];return a}t.contain=function(a){return!!this.register[a]};t.update=function(a,b){return this.remove(a).add(a,b)};
t.remove=function(a,b){var c=this.register[a];if(c){if(this.s)for(var d=0,e;d<c.length;d++)e=c[d],e.splice(e.indexOf(a),1);else Q(this.map,a,this.F,this.B),this.depth&&Q(this.h,a,this.m,this.B);b||delete this.register[a];if(this.cache)for(b=this.cache,c=0;c<b.h.length;c++)e=b.h[c],d=b.cache[e],d.includes(a)&&(b.h.splice(c--,1),delete b.cache[e])}return this};
function Q(a,b,c,d,e){var g=0;if(a.constructor===Array)if(e)b=a.indexOf(b),-1!==b?1<a.length&&(a.splice(b,1),g++):g++;else{e=Math.min(a.length,c);for(var f=0,h;f<e;f++)if(h=a[f])g=Q(h,b,c,d,e),d||g||delete a[f]}else for(f in a)(g=Q(a[f],b,c,d,e))||delete a[f];return g}t.searchCache=ua;
t.export=function(a,b,c,d,e,g){var f=!0;"undefined"===typeof g&&(f=new Promise(function(m){g=m}));switch(e||(e=0)){case 0:var h="reg";if(this.s){var k=D();for(var l in this.register)k[l]=1}else k=this.register;break;case 1:h="cfg";k={doc:0,opt:this.B?1:0};break;case 2:h="map";k=this.map;break;case 3:h="ctx";k=this.h;break;default:"undefined"===typeof c&&g&&g();return}wa(a,b||this,c,h,d,e,k,g);return f};
t.import=function(a,b){if(b)switch(E(b)&&(b=JSON.parse(b)),a){case "cfg":this.B=!!b.opt;break;case "reg":this.s=!1;this.register=b;break;case "map":this.map=b;break;case "ctx":this.h=b}};ra(N.prototype);function Aa(a){a=a.data;var b=self._index,c=a.args,d=a.task;switch(d){case "init":d=a.options||{};a=a.factory;b=d.encode;d.cache=!1;b&&0===b.indexOf("function")&&(d.encode=Function("return "+b)());a?(Function("return "+a)()(self),self._index=new self.FlexSearch.Index(d),delete self.FlexSearch):self._index=new N(d);break;default:a=a.id,b=b[d].apply(b,c),postMessage("search"===d?{id:a,msg:b}:{id:a})}};var Ba=0;function R(a){if(!(this instanceof R))return new R(a);var b;a?G(b=a.encode)&&(a.encode=b.toString()):a={};(b=(self||window)._factory)&&(b=b.toString());var c="undefined"===typeof window&&self.exports,d=this;this.A=Ca(b,c,a.worker);this.h=D();if(this.A){if(c)this.A.on("message",function(e){d.h[e.id](e.msg);delete d.h[e.id]});else this.A.onmessage=function(e){e=e.data;d.h[e.id](e.msg);delete d.h[e.id]};this.A.postMessage({task:"init",factory:b,options:a})}}S("add");S("append");S("search");
S("update");S("remove");function S(a){R.prototype[a]=R.prototype[a+"Async"]=function(){var b=this,c=[].slice.call(arguments),d=c[c.length-1];if(G(d)){var e=d;c.splice(c.length-1,1)}d=new Promise(function(g){setTimeout(function(){b.h[++Ba]=g;b.A.postMessage({task:a,id:Ba,args:c})})});return e?(d.then(e),this):d}}
function Ca(a,b,c){try{var d=b?eval('new (require("worker_threads")["Worker"])("../dist/node/node.js")'):a?new Worker(URL.createObjectURL(new Blob(["onmessage="+Aa.toString()],{type:"text/javascript"}))):new Worker(E(c)?c:"worker/worker.js",{type:"module"})}catch(e){}return d};function T(a){if(!(this instanceof T))return new T(a);var b=a.document||a.doc||a,c;this.I=[];this.h=[];this.m=[];this.register=D();this.key=(c=b.key||b.id)&&U(c,this.m)||"id";this.s=C(a.fastupdate);this.o=(c=b.store)&&!0!==c&&[];this.store=c&&D();this.D=(c=b.tag)&&U(c,this.m);this.l=c&&D();this.cache=(c=a.cache)&&new M(c);a.cache=!1;this.A=a.worker;this.async=!1;c=D();var d=b.index||b.field||b;E(d)&&(d=[d]);for(var e=0,g,f=void 0;e<d.length;e++)g=d[e],E(g)||(f=g,g=g.field),f=F(f)?Object.assign({},
a,f):a,this.A&&(c[g]=new R(f),c[g].A||(this.A=!1)),this.A||(c[g]=new N(f,this.register)),this.I[e]=U(g,this.m),this.h[e]=g;if(this.o)for(a=b.store,E(a)&&(a=[a]),b=0;b<a.length;b++)this.o[b]=U(a[b],this.m);this.index=c}function U(a,b){for(var c=a.split(":"),d=0,e=0;e<c.length;e++)a=c[e],0<=a.indexOf("[]")&&(a=a.substring(0,a.length-2))&&(b[d]=!0),a&&(c[d++]=a);d<c.length&&(c.length=d);return 1<d?c:c[0]}function V(a,b){if(E(b))a=a[b];else for(var c=0;a&&c<b.length;c++)a=a[b[c]];return a}
function W(a,b,c,d,e){a=a[e];if(d===c.length-1)b[e]=a;else if(a)if(a.constructor===Array)for(b=b[e]=Array(a.length),e=0;e<a.length;e++)W(a,b,c,d,e);else b=b[e]||(b[e]=D()),e=c[++d],W(a,b,c,d,e)}function X(a,b,c,d,e,g,f,h){if(a=a[f])if(d===b.length-1){if(a.constructor===Array){if(c[d]){for(b=0;b<a.length;b++)e.add(g,a[b],!0,!0);return}a=a.join(" ")}e.add(g,a,h,!0)}else if(a.constructor===Array)for(f=0;f<a.length;f++)X(a,b,c,d,e,g,f,h);else f=b[++d],X(a,b,c,d,e,g,f,h)}t=T.prototype;
t.add=function(a,b,c){F(a)&&(b=a,a=V(b,this.key));if(b&&(a||0===a)){if(!c&&this.register[a])return this.update(a,b);for(var d=0,e,g;d<this.h.length;d++)g=this.h[d],e=this.I[d],E(e)&&(e=[e]),X(b,e,this.m,0,this.index[g],a,e[0],c);if(this.D){d=V(b,this.D);e=D();E(d)&&(d=[d]);g=0;for(var f;g<d.length;g++)if(f=d[g],!e[f]&&(e[f]=1,f=this.l[f]||(this.l[f]=[]),!c||!f.includes(a)))if(f[f.length]=a,this.s){var h=this.register[a]||(this.register[a]=[]);h[h.length]=f}}if(this.store&&(!c||!this.store[a])){if(this.o){var k=
D();for(c=0;c<this.o.length;c++)d=this.o[c],E(d)?k[d]=b[d]:W(b,k,d,0,d[0])}this.store[a]=k||b}}return this};t.append=function(a,b){return this.add(a,b,!0)};t.update=function(a,b){return this.remove(a).add(a,b)};
t.remove=function(a){F(a)&&(a=V(a,this.key));if(this.register[a]){for(var b=0;b<this.h.length&&(this.index[this.h[b]].remove(a,!this.A),!this.s);b++);if(this.D&&!this.s)for(var c in this.l){b=this.l[c];var d=b.indexOf(a);-1!==d&&(1<b.length?b.splice(d,1):delete this.l[c])}this.store&&delete this.store[a];delete this.register[a]}return this};
t.search=function(a,b,c,d){c||(!b&&F(a)?(c=a,a=""):F(b)&&(c=b,b=0));var e=[],g=[],f,h=0;if(c)if(c.constructor===Array){var k=c;c=null}else{a=c.query||a;k=(f=c.pluck)||c.index||c.field;var l=c.tag;var m=this.store&&c.enrich;var p="and"===c.bool;b=c.limit||b||100;var n=c.offset||0;if(l&&(E(l)&&(l=[l]),!a)){g=0;for(f=void 0;g<l.length;g++)if(f=Da.call(this,l[g],b,n,m))e[e.length]=f,h++;return h?e:[]}E(k)&&(k=[k])}k||(k=this.h);p=p&&(1<k.length||l&&1<l.length);for(var q=!d&&(this.A||this.async)&&[],r=
0,u=void 0,A=void 0,w=void 0;r<k.length;r++)if(w=void 0,A=k[r],E(A)||(w=A,A=w.field,a=w.query||a,b=w.limit||b,m=w.enrich||m),q)q[r]=this.index[A].searchAsync(a,b,w||c);else{d?u=d[r]:u=this.index[A].search(a,b,w||c);w=u&&u.length;if(l&&w){var z=[],B=0;p&&(z[0]=[u]);var Z=0,H=void 0;for(H=void 0;Z<l.length;Z++)if(H=l[Z],w=(H=this.l[H])&&H.length)B++,z[z.length]=p?[H]:H;B&&(u=p?sa(z,b||100,n||0):ta(u,z),w=u.length)}if(w)g[h]=A,e[h++]=u;else if(p)return[]}if(q){var La=this;return new Promise(function(Ma){Promise.all(q).then(function(Na){Ma(La.search(a,
b,c,Na))})})}if(!h)return[];if(f&&(!m||!this.store))return e[0];l=0;for(n=void 0;l<g.length;l++){n=e[l];n.length&&m&&(n=Ea.call(this,n));if(f)return n;e[l]={field:g[l],result:n}}return e};function Da(a,b,c,d){var e=this.l[a],g=e&&e.length-c;if(g&&0<g){if(g>b||c)e=e.slice(c,c+b);d&&(e=Ea.call(this,e));return{tag:a,result:e}}}function Ea(a){for(var b=Array(a.length),c=0,d;c<a.length;c++)d=a[c],b[c]={id:d,doc:this.store[d]};return b}t.contain=function(a){return!!this.register[a]};t.get=function(a){return this.store[a]};
t.set=function(a,b){this.store[a]=b;return this};t.searchCache=ua;t.export=function(a,b,c,d,e,g){var f;"undefined"===typeof g&&(f=new Promise(function(p){g=p}));e||(e=0);d||(d=0);if(d<this.h.length){var h=this.h[d],k=this.index[h];b=this;setTimeout(function(){k.export(a,b,e?h:"",d,e++,g)||(d++,e=1,b.export(a,b,h,d,e,g))})}else{switch(e){case 1:var l="tag";var m=this.l;c=null;break;case 2:l="store";m=this.store;c=null;break;default:g();return}wa(a,this,c,l,d,e,m,g)}return f};
t.import=function(a,b){if(b)switch(E(b)&&(b=JSON.parse(b)),a){case "tag":this.l=b;break;case "reg":this.s=!1;this.register=b;a=0;for(var c;a<this.h.length;a++)c=this.index[this.h[a]],c.register=b,c.s=!1;break;case "store":this.store=b;break;default:a=a.split("."),c=a[0],a=a[1],c&&a&&this.index[c].import(a,b)}};ra(T.prototype);var Ga={encode:Fa,G:!1,H:""},Ha=[J("[\u00e0\u00e1\u00e2\u00e3\u00e4\u00e5]"),"a",J("[\u00e8\u00e9\u00ea\u00eb]"),"e",J("[\u00ec\u00ed\u00ee\u00ef]"),"i",J("[\u00f2\u00f3\u00f4\u00f5\u00f6\u0151]"),"o",J("[\u00f9\u00fa\u00fb\u00fc\u0171]"),"u",J("[\u00fd\u0177\u00ff]"),"y",J("\u00f1"),"n",J("[\u00e7c]"),"k",J("\u00df"),"s",J(" & ")," and "];function Fa(a){var b=a=""+a;b.normalize&&(b=b.normalize("NFD").replace(la,""));return ja.call(this,b.toLowerCase(),!a.normalize&&Ha)};var Ja={encode:Ia,G:!1,H:"strict"},Ka=/[^a-z0-9]+/,Oa={b:"p",v:"f",w:"f",z:"s",x:"s","\u00df":"s",d:"t",n:"m",c:"k",g:"k",j:"k",q:"k",i:"e",y:"e",u:"o"};function Ia(a){a=Fa.call(this,a).join(" ");var b=[];if(a)for(var c=a.split(Ka),d=c.length,e=0,g,f=0;e<d;e++)if((a=c[e])&&(!this.filter||!this.filter[a])){g=a[0];for(var h=Oa[g]||g,k=h,l=1;l<a.length;l++)g=a[l],(g=Oa[g]||g)&&g!==k&&(h+=g,k=g);b[f++]=h}return b};var Qa={encode:Pa,G:!1,H:""},Ra=[J("ae"),"a",J("oe"),"o",J("sh"),"s",J("th"),"t",J("ph"),"f",J("pf"),"f",J("(?![aeo])h(?![aeo])"),"",J("(?!^[aeo])h(?!^[aeo])"),""];function Pa(a,b){a&&(a=Ia.call(this,a).join(" "),2<a.length&&(a=I(a,Ra)),b||(1<a.length&&(a=na(a)),a&&(a=a.split(" "))));return a||[]};var Ta={encode:Sa,G:!1,H:""},Ua=J("(?!\\b)[aeo]");function Sa(a){a&&(a=Pa.call(this,a,!0),1<a.length&&(a=a.replace(Ua,"")),1<a.length&&(a=na(a)),a&&(a=a.split(" ")));return a||[]};K["latin:default"]=pa;K["latin:simple"]=Ga;K["latin:balance"]=Ja;K["latin:advanced"]=Qa;K["latin:extra"]=Ta;var Y=self,Va,Wa={Index:N,Document:T,Worker:R,registerCharset:function(a,b){K[a]=b},registerLanguage:function(a,b){qa[a]=b}};(Va=Y.define)&&Va.amd?Va([],function(){return Wa}):Y.exports?Y.exports=Wa:Y.FlexSearch=Wa;}(this));

373
dist/flexsearch.light.debug.js vendored Normal file
View File

@@ -0,0 +1,373 @@
/**!
* FlexSearch.js v0.7.39 (Light)
* Author and Copyright: Thomas Wilkerling
* Licence: Apache-2.0
* Hosted by Nextapps GmbH
* https://github.com/nextapps-de/flexsearch
*/
(function(self){'use strict';
function t(a) {
return "undefined" !== typeof a ? a : !0;
}
function v(a) {
const b = Array(a);
for (let c = 0; c < a; c++) {
b[c] = y();
}
return b;
}
function y() {
return Object.create(null);
}
function z(a, b) {
return b.length - a.length;
}
;const A = /[\p{Z}\p{S}\p{P}\p{C}]+/u;
function B(a, b) {
const c = Object.keys(a), d = c.length, e = [];
let h = "", f = 0;
for (let g = 0, l, n; g < d; g++) {
l = c[g], (n = a[l]) ? (e[f++] = new RegExp(b ? "(?!\\b)" + l + "(\\b|_)" : l, "g"), e[f++] = n) : h += (h ? "|" : "") + l;
}
h && (e[f++] = new RegExp(b ? "(?!\\b)(" + h + ")(\\b|_)" : "(" + h + ")", "g"), e[f] = "");
return e;
}
function C(a, b) {
for (let c = 0, d = b.length; c < d && (a = a.replace(b[c], b[c + 1]), a); c += 2) {
}
return a;
}
;function D(a) {
if (a = ("" + a).toLowerCase()) {
if (this.o && (a = C(a, this.o)), this.A && 1 < a.length && (a = C(a, this.A)), A || "" === A) {
const b = a.split(A);
if (this.filter) {
a = this.filter;
const c = b.length, d = [];
for (let e = 0, h = 0; e < c; e++) {
const f = b[e];
f && !a[f] && (d[h++] = f);
}
a = d;
} else {
a = b;
}
}
}
return a;
}
;const F = {}, G = {};
function H(a, b, c, d) {
const e = a.length;
let h = [], f, g, l = 0;
d && (d = []);
for (let n = e - 1; 0 <= n; n--) {
const m = a[n], r = m.length, p = y();
let q = !f;
for (let k = 0; k < r; k++) {
const u = m[k], M = u.length;
if (M) {
for (let E = 0, x, w; E < M; E++) {
if (w = u[E], f) {
if (f[w]) {
if (!n) {
if (c) {
c--;
} else {
if (h[l++] = w, l === b) {
return h;
}
}
}
if (n || d) {
p[w] = 1;
}
q = !0;
}
if (d && (x = (g[w] || 0) + 1, g[w] = x, x < e)) {
const N = d[x - 2] || (d[x - 2] = []);
N[N.length] = w;
}
} else {
p[w] = 1;
}
}
}
}
if (d) {
f || (g = p);
} else if (!q) {
return [];
}
f = p;
}
if (d) {
for (let n = d.length - 1, m, r; 0 <= n; n--) {
m = d[n];
r = m.length;
for (let p = 0, q; p < r; p++) {
if (q = m[p], !f[q]) {
if (c) {
c--;
} else {
if (h[l++] = q, l === b) {
return h;
}
}
f[q] = 1;
}
}
}
}
return h;
}
;function I(a, b) {
if (!(this instanceof I)) {
return new I(a);
}
let c;
if (a) {
var d = a.charset;
c = a.lang;
"string" === typeof d && (-1 === d.indexOf(":") && (d += ":default"), d = G[d]);
"string" === typeof c && (c = F[c]);
} else {
a = {};
}
let e, h, f = a.context || {};
this.encode = a.encode || d && d.encode || D;
this.register = b || y();
this.s = e = a.resolution || 9;
this.B = b = d && d.B || a.tokenize || "strict";
this.i = "strict" === b && f.depth;
this.j = t(f.bidirectional);
this.g = h = t(a.optimize);
this.m = t(a.fastupdate);
this.h = a.minlength || 1;
this.C = a.boost;
this.map = h ? v(e) : y();
this.v = e = f.resolution || 1;
this.l = h ? v(e) : y();
this.u = d && d.u || a.rtl;
this.o = (b = a.matcher || c && c.o) && B(b, !1);
this.A = (b = a.stemmer || c && c.A) && B(b, !0);
if (a = b = a.filter || c && c.filter) {
a = b;
d = y();
for (let g = 0, l = a.length; g < l; g++) {
d[a[g]] = 1;
}
a = d;
}
this.filter = a;
}
I.prototype.append = function(a, b) {
return this.add(a, b, !0);
};
I.prototype.add = function(a, b, c, d) {
if (b && (a || 0 === a)) {
if (!d && !c && this.register[a]) {
return this.update(a, b);
}
b = this.encode(b);
if (d = b.length) {
const n = y(), m = y(), r = this.i, p = this.s;
for (let q = 0; q < d; q++) {
let k = b[this.u ? d - 1 - q : q];
var e = k.length;
if (k && e >= this.h && (r || !m[k])) {
var h = J(p, d, q), f = "";
switch(this.B) {
case "full":
if (2 < e) {
for (h = 0; h < e; h++) {
for (var g = e; g > h; g--) {
if (g - h >= this.h) {
var l = J(p, d, q, e, h);
f = k.substring(h, g);
K(this, m, f, l, a, c);
}
}
}
break;
}
case "reverse":
if (1 < e) {
for (g = e - 1; 0 < g; g--) {
f = k[g] + f, f.length >= this.h && K(this, m, f, J(p, d, q, e, g), a, c);
}
f = "";
}
case "forward":
if (1 < e) {
for (g = 0; g < e; g++) {
f += k[g], f.length >= this.h && K(this, m, f, h, a, c);
}
break;
}
default:
if (this.C && (h = Math.min(h / this.C(b, k, q) | 0, p - 1)), K(this, m, k, h, a, c), r && 1 < d && q < d - 1) {
for (e = y(), f = this.v, h = k, g = Math.min(r + 1, d - q), e[h] = 1, l = 1; l < g; l++) {
if ((k = b[this.u ? d - 1 - q - l : q + l]) && k.length >= this.h && !e[k]) {
e[k] = 1;
const u = this.j && k > h;
K(this, n, u ? h : k, J(f + (d / 2 > f ? 0 : 1), d, q, g - 1, l - 1), a, c, u ? k : h);
}
}
}
}
}
}
this.m || (this.register[a] = 1);
}
}
return this;
};
function J(a, b, c, d, e) {
return c && 1 < a ? b + (d || 0) <= a ? c + (e || 0) : (a - 1) / (b + (d || 0)) * (c + (e || 0)) + 1 | 0 : 0;
}
function K(a, b, c, d, e, h, f) {
let g = f ? a.l : a.map;
if (!b[c] || f && !b[c][f]) {
a.g && (g = g[d]), f ? (b = b[c] || (b[c] = y()), b[f] = 1, g = g[f] || (g[f] = y())) : b[c] = 1, g = g[c] || (g[c] = []), a.g || (g = g[d] || (g[d] = [])), h && g.includes(e) || (g[g.length] = e, a.m && (a = a.register[e] || (a.register[e] = []), a[a.length] = g));
}
}
I.prototype.search = function(a, b, c) {
c || (b || "object" !== typeof a ? "object" === typeof b && (c = b) : (c = a, a = c.query));
let d = [], e;
let h, f = 0;
if (c) {
a = c.query || a;
b = c.limit;
f = c.offset || 0;
var g = c.context;
h = !1;
}
if (a && (a = this.encode("" + a), e = a.length, 1 < e)) {
c = y();
var l = [];
for (let m = 0, r = 0, p; m < e; m++) {
if ((p = a[m]) && p.length >= this.h && !c[p]) {
if (this.g || h || this.map[p]) {
l[r++] = p, c[p] = 1;
} else {
return d;
}
}
}
a = l;
e = a.length;
}
if (!e) {
return d;
}
b || (b = 100);
g = this.i && 1 < e && !1 !== g;
c = 0;
let n;
g ? (n = a[0], c = 1) : 1 < e && a.sort(z);
for (let m, r; c < e; c++) {
r = a[c];
g ? (m = L(this, d, h, b, f, 2 === e, r, n), h && !1 === m && d.length || (n = r)) : m = L(this, d, h, b, f, 1 === e, r);
if (m) {
return m;
}
if (h && c === e - 1) {
l = d.length;
if (!l) {
if (g) {
g = 0;
c = -1;
continue;
}
return d;
}
if (1 === l) {
return O(d[0], b, f);
}
}
}
return H(d, b, f, h);
};
function L(a, b, c, d, e, h, f, g) {
let l = [], n = g ? a.l : a.map;
a.g || (n = P(n, f, g, a.j));
if (n) {
let m = 0;
const r = Math.min(n.length, g ? a.v : a.s);
for (let p = 0, q = 0, k, u; p < r; p++) {
if (k = n[p]) {
if (a.g && (k = P(k, f, g, a.j)), e && k && h && (u = k.length, u <= e ? (e -= u, k = null) : (k = k.slice(e), e = 0)), k && (l[m++] = k, h && (q += k.length, q >= d))) {
break;
}
}
}
if (m) {
if (h) {
return O(l, d, 0);
}
b[b.length] = l;
return;
}
}
return !c && l;
}
function O(a, b, c) {
a = 1 === a.length ? a[0] : [].concat.apply([], a);
return c || a.length > b ? a.slice(c, c + b) : a;
}
function P(a, b, c, d) {
c ? (d = d && b > c, a = (a = a[d ? b : c]) && a[d ? c : b]) : a = a[b];
return a;
}
I.prototype.contain = function(a) {
return !!this.register[a];
};
I.prototype.update = function(a, b) {
return this.remove(a).add(a, b);
};
I.prototype.remove = function(a, b) {
const c = this.register[a];
if (c) {
if (this.m) {
for (let d = 0, e; d < c.length; d++) {
e = c[d], e.splice(e.indexOf(a), 1);
}
} else {
Q(this.map, a, this.s, this.g), this.i && Q(this.l, a, this.v, this.g);
}
b || delete this.register[a];
}
return this;
};
function Q(a, b, c, d, e) {
let h = 0;
if (a.constructor === Array) {
if (e) {
b = a.indexOf(b), -1 !== b ? 1 < a.length && (a.splice(b, 1), h++) : h++;
} else {
e = Math.min(a.length, c);
for (let f = 0, g; f < e; f++) {
if (g = a[f]) {
h = Q(g, b, c, d, e), d || h || delete a[f];
}
}
}
} else {
for (let f in a) {
(h = Q(a[f], b, c, d, e)) || delete a[f];
}
}
return h;
}
;const R = self;
let S;
const T = {Index:I, Document:null, Worker:null, registerCharset:function(a, b) {
G[a] = b;
}, registerLanguage:function(a, b) {
F[a] = b;
}};
(S = R.define) && S.amd ? S([], function() {
return T;
}) : R.exports ? R.exports = T : R.FlexSearch = T;
}(this));

View File

@@ -1,18 +0,0 @@
/**!
* FlexSearch.js v0.7.31 (Light)
* Author and Copyright: Thomas Wilkerling
* Licence: Apache-2.0
* Hosted by Nextapps GmbH
* https://github.com/nextapps-de/flexsearch
*/
(function(self){'use strict';function t(a){return"undefined"!==typeof a?a:!0}function v(a){const c=Array(a);for(let b=0;b<a;b++)c[b]=y();return c}function y(){return Object.create(null)}function z(a,c){return c.length-a.length};const A=/[\p{Z}\p{S}\p{P}\p{C}]+/u;function B(a,c){const b=Object.keys(a),d=b.length,e=[];let h="",f=0;for(let g=0,l,n;g<d;g++)l=b[g],(n=a[l])?(e[f++]=new RegExp(c?"(?!\\b)"+l+"(\\b|_)":l,"g"),e[f++]=n):h+=(h?"|":"")+l;h&&(e[f++]=new RegExp(c?"(?!\\b)("+h+")(\\b|_)":"("+h+")","g"),e[f]="");return e}function C(a,c){for(let b=0,d=c.length;b<d&&(a=a.replace(c[b],c[b+1]),a);b+=2);return a};function D(a){if(a=(""+a).toLowerCase())if(this.o&&(a=C(a,this.o)),this.A&&1<a.length&&(a=C(a,this.A)),A||""===A)if(a=a.split(A),this.filter){var c=this.filter;const b=a.length,d=[];for(let e=0,h=0;e<b;e++){const f=a[e];f&&!c[f]&&(d[h++]=f)}a=d}return a};const F={},G={};function H(a,c,b,d){const e=a.length;let h=[],f,g,l=0;d&&(d=[]);for(let n=e-1;0<=n;n--){const m=a[n],r=m.length,p=y();let q=!f;for(let k=0;k<r;k++){const u=m[k],M=u.length;if(M)for(let E=0,x,w;E<M;E++)if(w=u[E],f){if(f[w]){if(!n)if(b)b--;else if(h[l++]=w,l===c)return h;if(n||d)p[w]=1;q=!0}if(d&&(x=(g[w]||0)+1,g[w]=x,x<e)){const N=d[x-2]||(d[x-2]=[]);N[N.length]=w}}else p[w]=1}if(d)f||(g=p);else if(!q)return[];f=p}if(d)for(let n=d.length-1,m,r;0<=n;n--){m=d[n];r=m.length;for(let p=0,q;p<r;p++)if(q=
m[p],!f[q]){if(b)b--;else if(h[l++]=q,l===c)return h;f[q]=1}}return h};function I(a,c){if(!(this instanceof I))return new I(a);let b;if(a){var d=a.charset;b=a.lang;"string"===typeof d&&(-1===d.indexOf(":")&&(d+=":default"),d=G[d]);"string"===typeof b&&(b=F[b])}else a={};let e,h,f=a.context||{};this.encode=a.encode||d&&d.encode||D;this.register=c||y();this.s=e=a.resolution||9;this.B=c=d&&d.B||a.tokenize||"strict";this.i="strict"===c&&f.depth;this.j=t(f.bidirectional);this.g=h=t(a.optimize);this.m=t(a.fastupdate);this.h=a.minlength||1;this.C=a.boost;this.map=h?v(e):y();
this.v=e=f.resolution||1;this.l=h?v(e):y();this.u=d&&d.u||a.rtl;this.o=(c=a.matcher||b&&b.o)&&B(c,!1);this.A=(c=a.stemmer||b&&b.A)&&B(c,!0);if(a=c=a.filter||b&&b.filter){a=c;d=y();for(let g=0,l=a.length;g<l;g++)d[a[g]]=1;a=d}this.filter=a}I.prototype.append=function(a,c){return this.add(a,c,!0)};
I.prototype.add=function(a,c,b,d){if(c&&(a||0===a)){if(!d&&!b&&this.register[a])return this.update(a,c);c=this.encode(c);if(d=c.length){const n=y(),m=y(),r=this.i,p=this.s;for(let q=0;q<d;q++){let k=c[this.u?d-1-q:q];var e=k.length;if(k&&e>=this.h&&(r||!m[k])){var h=J(p,d,q),f="";switch(this.B){case "full":if(2<e){for(h=0;h<e;h++)for(var g=e;g>h;g--)if(g-h>=this.h){var l=J(p,d,q,e,h);f=k.substring(h,g);K(this,m,f,l,a,b)}break}case "reverse":if(1<e){for(g=e-1;0<g;g--)f=k[g]+f,f.length>=this.h&&K(this,
m,f,J(p,d,q,e,g),a,b);f=""}case "forward":if(1<e){for(g=0;g<e;g++)f+=k[g],f.length>=this.h&&K(this,m,f,h,a,b);break}default:if(this.C&&(h=Math.min(h/this.C(c,k,q)|0,p-1)),K(this,m,k,h,a,b),r&&1<d&&q<d-1)for(e=y(),f=this.v,h=k,g=Math.min(r+1,d-q),e[h]=1,l=1;l<g;l++)if((k=c[this.u?d-1-q-l:q+l])&&k.length>=this.h&&!e[k]){e[k]=1;const u=this.j&&k>h;K(this,n,u?h:k,J(f+(d/2>f?0:1),d,q,g-1,l-1),a,b,u?k:h)}}}}this.m||(this.register[a]=1)}}return this};
function J(a,c,b,d,e){return b&&1<a?c+(d||0)<=a?b+(e||0):(a-1)/(c+(d||0))*(b+(e||0))+1|0:0}function K(a,c,b,d,e,h,f){let g=f?a.l:a.map;if(!c[b]||f&&!c[b][f])a.g&&(g=g[d]),f?(c=c[b]||(c[b]=y()),c[f]=1,g=g[f]||(g[f]=y())):c[b]=1,g=g[b]||(g[b]=[]),a.g||(g=g[d]||(g[d]=[])),h&&g.includes(e)||(g[g.length]=e,a.m&&(a=a.register[e]||(a.register[e]=[]),a[a.length]=g))}
I.prototype.search=function(a,c,b){b||(c||"object"!==typeof a?"object"===typeof c&&(b=c):(b=a,a=b.query));let d=[],e;let h,f=0;if(b){a=b.query||a;c=b.limit;f=b.offset||0;var g=b.context;h=!1}if(a&&(a=this.encode(""+a),e=a.length,1<e)){b=y();var l=[];for(let m=0,r=0,p;m<e;m++)if((p=a[m])&&p.length>=this.h&&!b[p])if(this.g||h||this.map[p])l[r++]=p,b[p]=1;else return d;a=l;e=a.length}if(!e)return d;c||(c=100);g=this.i&&1<e&&!1!==g;b=0;let n;g?(n=a[0],b=1):1<e&&a.sort(z);for(let m,r;b<e;b++){r=a[b];g?
(m=L(this,d,h,c,f,2===e,r,n),h&&!1===m&&d.length||(n=r)):m=L(this,d,h,c,f,1===e,r);if(m)return m;if(h&&b===e-1){l=d.length;if(!l){if(g){g=0;b=-1;continue}return d}if(1===l)return O(d[0],c,f)}}return H(d,c,f,h)};
function L(a,c,b,d,e,h,f,g){let l=[],n=g?a.l:a.map;a.g||(n=P(n,f,g,a.j));if(n){let m=0;const r=Math.min(n.length,g?a.v:a.s);for(let p=0,q=0,k,u;p<r;p++)if(k=n[p])if(a.g&&(k=P(k,f,g,a.j)),e&&k&&h&&(u=k.length,u<=e?(e-=u,k=null):(k=k.slice(e),e=0)),k&&(l[m++]=k,h&&(q+=k.length,q>=d)))break;if(m){if(h)return O(l,d,0);c[c.length]=l;return}}return!b&&l}function O(a,c,b){a=1===a.length?a[0]:[].concat.apply([],a);return b||a.length>c?a.slice(b,b+c):a}
function P(a,c,b,d){b?(d=d&&c>b,a=(a=a[d?c:b])&&a[d?b:c]):a=a[c];return a}I.prototype.contain=function(a){return!!this.register[a]};I.prototype.update=function(a,c){return this.remove(a).add(a,c)};I.prototype.remove=function(a,c){const b=this.register[a];if(b){if(this.m)for(let d=0,e;d<b.length;d++)e=b[d],e.splice(e.indexOf(a),1);else Q(this.map,a,this.s,this.g),this.i&&Q(this.l,a,this.v,this.g);c||delete this.register[a]}return this};
function Q(a,c,b,d,e){let h=0;if(a.constructor===Array)if(e)c=a.indexOf(c),-1!==c?1<a.length&&(a.splice(c,1),h++):h++;else{e=Math.min(a.length,b);for(let f=0,g;f<e;f++)if(g=a[f])h=Q(g,c,b,d,e),d||h||delete a[f]}else for(let f in a)(h=Q(a[f],c,b,d,e))||delete a[f];return h};const R=self;let S;const T={Index:I,Document:null,Worker:null,registerCharset:function(a,c){G[a]=c},registerLanguage:function(a,c){F[a]=c}};(S=R.define)&&S.amd?S([],function(){return T}):R.exports?R.exports=T:R.FlexSearch=T;}(this));

18
dist/flexsearch.light.min.js vendored Normal file
View File

@@ -0,0 +1,18 @@
/**!
* FlexSearch.js v0.7.39 (Light)
* Author and Copyright: Thomas Wilkerling
* Licence: Apache-2.0
* Hosted by Nextapps GmbH
* https://github.com/nextapps-de/flexsearch
*/
(function(self){'use strict';function t(a){return"undefined"!==typeof a?a:!0}function v(a){const b=Array(a);for(let c=0;c<a;c++)b[c]=y();return b}function y(){return Object.create(null)}function z(a,b){return b.length-a.length};const A=/[\p{Z}\p{S}\p{P}\p{C}]+/u;function B(a,b){const c=Object.keys(a),d=c.length,e=[];let h="",f=0;for(let g=0,l,n;g<d;g++)l=c[g],(n=a[l])?(e[f++]=new RegExp(b?"(?!\\b)"+l+"(\\b|_)":l,"g"),e[f++]=n):h+=(h?"|":"")+l;h&&(e[f++]=new RegExp(b?"(?!\\b)("+h+")(\\b|_)":"("+h+")","g"),e[f]="");return e}function C(a,b){for(let c=0,d=b.length;c<d&&(a=a.replace(b[c],b[c+1]),a);c+=2);return a};function D(a){if(a=(""+a).toLowerCase())if(this.o&&(a=C(a,this.o)),this.A&&1<a.length&&(a=C(a,this.A)),A||""===A){const b=a.split(A);if(this.filter){a=this.filter;const c=b.length,d=[];for(let e=0,h=0;e<c;e++){const f=b[e];f&&!a[f]&&(d[h++]=f)}a=d}else a=b}return a};const F={},G={};function H(a,b,c,d){const e=a.length;let h=[],f,g,l=0;d&&(d=[]);for(let n=e-1;0<=n;n--){const m=a[n],r=m.length,p=y();let q=!f;for(let k=0;k<r;k++){const u=m[k],M=u.length;if(M)for(let E=0,x,w;E<M;E++)if(w=u[E],f){if(f[w]){if(!n)if(c)c--;else if(h[l++]=w,l===b)return h;if(n||d)p[w]=1;q=!0}if(d&&(x=(g[w]||0)+1,g[w]=x,x<e)){const N=d[x-2]||(d[x-2]=[]);N[N.length]=w}}else p[w]=1}if(d)f||(g=p);else if(!q)return[];f=p}if(d)for(let n=d.length-1,m,r;0<=n;n--){m=d[n];r=m.length;for(let p=0,q;p<r;p++)if(q=
m[p],!f[q]){if(c)c--;else if(h[l++]=q,l===b)return h;f[q]=1}}return h};function I(a,b){if(!(this instanceof I))return new I(a);let c;if(a){var d=a.charset;c=a.lang;"string"===typeof d&&(-1===d.indexOf(":")&&(d+=":default"),d=G[d]);"string"===typeof c&&(c=F[c])}else a={};let e,h,f=a.context||{};this.encode=a.encode||d&&d.encode||D;this.register=b||y();this.s=e=a.resolution||9;this.B=b=d&&d.B||a.tokenize||"strict";this.i="strict"===b&&f.depth;this.j=t(f.bidirectional);this.g=h=t(a.optimize);this.m=t(a.fastupdate);this.h=a.minlength||1;this.C=a.boost;this.map=h?v(e):y();
this.v=e=f.resolution||1;this.l=h?v(e):y();this.u=d&&d.u||a.rtl;this.o=(b=a.matcher||c&&c.o)&&B(b,!1);this.A=(b=a.stemmer||c&&c.A)&&B(b,!0);if(a=b=a.filter||c&&c.filter){a=b;d=y();for(let g=0,l=a.length;g<l;g++)d[a[g]]=1;a=d}this.filter=a}I.prototype.append=function(a,b){return this.add(a,b,!0)};
I.prototype.add=function(a,b,c,d){if(b&&(a||0===a)){if(!d&&!c&&this.register[a])return this.update(a,b);b=this.encode(b);if(d=b.length){const n=y(),m=y(),r=this.i,p=this.s;for(let q=0;q<d;q++){let k=b[this.u?d-1-q:q];var e=k.length;if(k&&e>=this.h&&(r||!m[k])){var h=J(p,d,q),f="";switch(this.B){case "full":if(2<e){for(h=0;h<e;h++)for(var g=e;g>h;g--)if(g-h>=this.h){var l=J(p,d,q,e,h);f=k.substring(h,g);K(this,m,f,l,a,c)}break}case "reverse":if(1<e){for(g=e-1;0<g;g--)f=k[g]+f,f.length>=this.h&&K(this,
m,f,J(p,d,q,e,g),a,c);f=""}case "forward":if(1<e){for(g=0;g<e;g++)f+=k[g],f.length>=this.h&&K(this,m,f,h,a,c);break}default:if(this.C&&(h=Math.min(h/this.C(b,k,q)|0,p-1)),K(this,m,k,h,a,c),r&&1<d&&q<d-1)for(e=y(),f=this.v,h=k,g=Math.min(r+1,d-q),e[h]=1,l=1;l<g;l++)if((k=b[this.u?d-1-q-l:q+l])&&k.length>=this.h&&!e[k]){e[k]=1;const u=this.j&&k>h;K(this,n,u?h:k,J(f+(d/2>f?0:1),d,q,g-1,l-1),a,c,u?k:h)}}}}this.m||(this.register[a]=1)}}return this};
function J(a,b,c,d,e){return c&&1<a?b+(d||0)<=a?c+(e||0):(a-1)/(b+(d||0))*(c+(e||0))+1|0:0}function K(a,b,c,d,e,h,f){let g=f?a.l:a.map;if(!b[c]||f&&!b[c][f])a.g&&(g=g[d]),f?(b=b[c]||(b[c]=y()),b[f]=1,g=g[f]||(g[f]=y())):b[c]=1,g=g[c]||(g[c]=[]),a.g||(g=g[d]||(g[d]=[])),h&&g.includes(e)||(g[g.length]=e,a.m&&(a=a.register[e]||(a.register[e]=[]),a[a.length]=g))}
I.prototype.search=function(a,b,c){c||(b||"object"!==typeof a?"object"===typeof b&&(c=b):(c=a,a=c.query));let d=[],e;let h,f=0;if(c){a=c.query||a;b=c.limit;f=c.offset||0;var g=c.context;h=!1}if(a&&(a=this.encode(""+a),e=a.length,1<e)){c=y();var l=[];for(let m=0,r=0,p;m<e;m++)if((p=a[m])&&p.length>=this.h&&!c[p])if(this.g||h||this.map[p])l[r++]=p,c[p]=1;else return d;a=l;e=a.length}if(!e)return d;b||(b=100);g=this.i&&1<e&&!1!==g;c=0;let n;g?(n=a[0],c=1):1<e&&a.sort(z);for(let m,r;c<e;c++){r=a[c];g?
(m=L(this,d,h,b,f,2===e,r,n),h&&!1===m&&d.length||(n=r)):m=L(this,d,h,b,f,1===e,r);if(m)return m;if(h&&c===e-1){l=d.length;if(!l){if(g){g=0;c=-1;continue}return d}if(1===l)return O(d[0],b,f)}}return H(d,b,f,h)};
function L(a,b,c,d,e,h,f,g){let l=[],n=g?a.l:a.map;a.g||(n=P(n,f,g,a.j));if(n){let m=0;const r=Math.min(n.length,g?a.v:a.s);for(let p=0,q=0,k,u;p<r;p++)if(k=n[p])if(a.g&&(k=P(k,f,g,a.j)),e&&k&&h&&(u=k.length,u<=e?(e-=u,k=null):(k=k.slice(e),e=0)),k&&(l[m++]=k,h&&(q+=k.length,q>=d)))break;if(m){if(h)return O(l,d,0);b[b.length]=l;return}}return!c&&l}function O(a,b,c){a=1===a.length?a[0]:[].concat.apply([],a);return c||a.length>b?a.slice(c,c+b):a}
function P(a,b,c,d){c?(d=d&&b>c,a=(a=a[d?b:c])&&a[d?c:b]):a=a[b];return a}I.prototype.contain=function(a){return!!this.register[a]};I.prototype.update=function(a,b){return this.remove(a).add(a,b)};I.prototype.remove=function(a,b){const c=this.register[a];if(c){if(this.m)for(let d=0,e;d<c.length;d++)e=c[d],e.splice(e.indexOf(a),1);else Q(this.map,a,this.s,this.g),this.i&&Q(this.l,a,this.v,this.g);b||delete this.register[a]}return this};
function Q(a,b,c,d,e){let h=0;if(a.constructor===Array)if(e)b=a.indexOf(b),-1!==b?1<a.length&&(a.splice(b,1),h++):h++;else{e=Math.min(a.length,c);for(let f=0,g;f<e;f++)if(g=a[f])h=Q(g,b,c,d,e),d||h||delete a[f]}else for(let f in a)(h=Q(a[f],b,c,d,e))||delete a[f];return h};const R=self;let S;const T={Index:I,Document:null,Worker:null,registerCharset:function(a,b){G[a]=b},registerLanguage:function(a,b){F[a]=b}};(S=R.define)&&S.amd?S([],function(){return T}):R.exports?R.exports=T:R.FlexSearch=T;}(this));

372
dist/flexsearch.light.module.debug.js vendored Normal file
View File

@@ -0,0 +1,372 @@
/**!
* FlexSearch.js v0.7.39 (Light.module)
* Author and Copyright: Thomas Wilkerling
* Licence: Apache-2.0
* Hosted by Nextapps GmbH
* https://github.com/nextapps-de/flexsearch
*/
function t(a) {
return "undefined" !== typeof a ? a : !0;
}
function v(a) {
const b = Array(a);
for (let c = 0; c < a; c++) {
b[c] = y();
}
return b;
}
function y() {
return Object.create(null);
}
function z(a, b) {
return b.length - a.length;
}
;const A = /[\p{Z}\p{S}\p{P}\p{C}]+/u;
function B(a, b) {
const c = Object.keys(a), d = c.length, e = [];
let h = "", f = 0;
for (let g = 0, l, n; g < d; g++) {
l = c[g], (n = a[l]) ? (e[f++] = new RegExp(b ? "(?!\\b)" + l + "(\\b|_)" : l, "g"), e[f++] = n) : h += (h ? "|" : "") + l;
}
h && (e[f++] = new RegExp(b ? "(?!\\b)(" + h + ")(\\b|_)" : "(" + h + ")", "g"), e[f] = "");
return e;
}
function C(a, b) {
for (let c = 0, d = b.length; c < d && (a = a.replace(b[c], b[c + 1]), a); c += 2) {
}
return a;
}
;function D(a) {
if (a = ("" + a).toLowerCase()) {
if (this.o && (a = C(a, this.o)), this.A && 1 < a.length && (a = C(a, this.A)), A || "" === A) {
const b = a.split(A);
if (this.filter) {
a = this.filter;
const c = b.length, d = [];
for (let e = 0, h = 0; e < c; e++) {
const f = b[e];
f && !a[f] && (d[h++] = f);
}
a = d;
} else {
a = b;
}
}
}
return a;
}
;const F = {}, G = {};
function H(a, b, c, d) {
const e = a.length;
let h = [], f, g, l = 0;
d && (d = []);
for (let n = e - 1; 0 <= n; n--) {
const m = a[n], r = m.length, p = y();
let q = !f;
for (let k = 0; k < r; k++) {
const u = m[k], M = u.length;
if (M) {
for (let E = 0, x, w; E < M; E++) {
if (w = u[E], f) {
if (f[w]) {
if (!n) {
if (c) {
c--;
} else {
if (h[l++] = w, l === b) {
return h;
}
}
}
if (n || d) {
p[w] = 1;
}
q = !0;
}
if (d && (x = (g[w] || 0) + 1, g[w] = x, x < e)) {
const N = d[x - 2] || (d[x - 2] = []);
N[N.length] = w;
}
} else {
p[w] = 1;
}
}
}
}
if (d) {
f || (g = p);
} else if (!q) {
return [];
}
f = p;
}
if (d) {
for (let n = d.length - 1, m, r; 0 <= n; n--) {
m = d[n];
r = m.length;
for (let p = 0, q; p < r; p++) {
if (q = m[p], !f[q]) {
if (c) {
c--;
} else {
if (h[l++] = q, l === b) {
return h;
}
}
f[q] = 1;
}
}
}
}
return h;
}
;function I(a, b) {
if (!(this instanceof I)) {
return new I(a);
}
let c;
if (a) {
var d = a.charset;
c = a.lang;
"string" === typeof d && (-1 === d.indexOf(":") && (d += ":default"), d = G[d]);
"string" === typeof c && (c = F[c]);
} else {
a = {};
}
let e, h, f = a.context || {};
this.encode = a.encode || d && d.encode || D;
this.register = b || y();
this.s = e = a.resolution || 9;
this.B = b = d && d.B || a.tokenize || "strict";
this.i = "strict" === b && f.depth;
this.j = t(f.bidirectional);
this.g = h = t(a.optimize);
this.m = t(a.fastupdate);
this.h = a.minlength || 1;
this.C = a.boost;
this.map = h ? v(e) : y();
this.v = e = f.resolution || 1;
this.l = h ? v(e) : y();
this.u = d && d.u || a.rtl;
this.o = (b = a.matcher || c && c.o) && B(b, !1);
this.A = (b = a.stemmer || c && c.A) && B(b, !0);
if (a = b = a.filter || c && c.filter) {
a = b;
d = y();
for (let g = 0, l = a.length; g < l; g++) {
d[a[g]] = 1;
}
a = d;
}
this.filter = a;
}
I.prototype.append = function(a, b) {
return this.add(a, b, !0);
};
I.prototype.add = function(a, b, c, d) {
if (b && (a || 0 === a)) {
if (!d && !c && this.register[a]) {
return this.update(a, b);
}
b = this.encode(b);
if (d = b.length) {
const n = y(), m = y(), r = this.i, p = this.s;
for (let q = 0; q < d; q++) {
let k = b[this.u ? d - 1 - q : q];
var e = k.length;
if (k && e >= this.h && (r || !m[k])) {
var h = J(p, d, q), f = "";
switch(this.B) {
case "full":
if (2 < e) {
for (h = 0; h < e; h++) {
for (var g = e; g > h; g--) {
if (g - h >= this.h) {
var l = J(p, d, q, e, h);
f = k.substring(h, g);
K(this, m, f, l, a, c);
}
}
}
break;
}
case "reverse":
if (1 < e) {
for (g = e - 1; 0 < g; g--) {
f = k[g] + f, f.length >= this.h && K(this, m, f, J(p, d, q, e, g), a, c);
}
f = "";
}
case "forward":
if (1 < e) {
for (g = 0; g < e; g++) {
f += k[g], f.length >= this.h && K(this, m, f, h, a, c);
}
break;
}
default:
if (this.C && (h = Math.min(h / this.C(b, k, q) | 0, p - 1)), K(this, m, k, h, a, c), r && 1 < d && q < d - 1) {
for (e = y(), f = this.v, h = k, g = Math.min(r + 1, d - q), e[h] = 1, l = 1; l < g; l++) {
if ((k = b[this.u ? d - 1 - q - l : q + l]) && k.length >= this.h && !e[k]) {
e[k] = 1;
const u = this.j && k > h;
K(this, n, u ? h : k, J(f + (d / 2 > f ? 0 : 1), d, q, g - 1, l - 1), a, c, u ? k : h);
}
}
}
}
}
}
this.m || (this.register[a] = 1);
}
}
return this;
};
function J(a, b, c, d, e) {
return c && 1 < a ? b + (d || 0) <= a ? c + (e || 0) : (a - 1) / (b + (d || 0)) * (c + (e || 0)) + 1 | 0 : 0;
}
function K(a, b, c, d, e, h, f) {
let g = f ? a.l : a.map;
if (!b[c] || f && !b[c][f]) {
a.g && (g = g[d]), f ? (b = b[c] || (b[c] = y()), b[f] = 1, g = g[f] || (g[f] = y())) : b[c] = 1, g = g[c] || (g[c] = []), a.g || (g = g[d] || (g[d] = [])), h && g.includes(e) || (g[g.length] = e, a.m && (a = a.register[e] || (a.register[e] = []), a[a.length] = g));
}
}
I.prototype.search = function(a, b, c) {
c || (b || "object" !== typeof a ? "object" === typeof b && (c = b) : (c = a, a = c.query));
let d = [], e;
let h, f = 0;
if (c) {
a = c.query || a;
b = c.limit;
f = c.offset || 0;
var g = c.context;
h = !1;
}
if (a && (a = this.encode("" + a), e = a.length, 1 < e)) {
c = y();
var l = [];
for (let m = 0, r = 0, p; m < e; m++) {
if ((p = a[m]) && p.length >= this.h && !c[p]) {
if (this.g || h || this.map[p]) {
l[r++] = p, c[p] = 1;
} else {
return d;
}
}
}
a = l;
e = a.length;
}
if (!e) {
return d;
}
b || (b = 100);
g = this.i && 1 < e && !1 !== g;
c = 0;
let n;
g ? (n = a[0], c = 1) : 1 < e && a.sort(z);
for (let m, r; c < e; c++) {
r = a[c];
g ? (m = L(this, d, h, b, f, 2 === e, r, n), h && !1 === m && d.length || (n = r)) : m = L(this, d, h, b, f, 1 === e, r);
if (m) {
return m;
}
if (h && c === e - 1) {
l = d.length;
if (!l) {
if (g) {
g = 0;
c = -1;
continue;
}
return d;
}
if (1 === l) {
return O(d[0], b, f);
}
}
}
return H(d, b, f, h);
};
function L(a, b, c, d, e, h, f, g) {
let l = [], n = g ? a.l : a.map;
a.g || (n = P(n, f, g, a.j));
if (n) {
let m = 0;
const r = Math.min(n.length, g ? a.v : a.s);
for (let p = 0, q = 0, k, u; p < r; p++) {
if (k = n[p]) {
if (a.g && (k = P(k, f, g, a.j)), e && k && h && (u = k.length, u <= e ? (e -= u, k = null) : (k = k.slice(e), e = 0)), k && (l[m++] = k, h && (q += k.length, q >= d))) {
break;
}
}
}
if (m) {
if (h) {
return O(l, d, 0);
}
b[b.length] = l;
return;
}
}
return !c && l;
}
function O(a, b, c) {
a = 1 === a.length ? a[0] : [].concat.apply([], a);
return c || a.length > b ? a.slice(c, c + b) : a;
}
function P(a, b, c, d) {
c ? (d = d && b > c, a = (a = a[d ? b : c]) && a[d ? c : b]) : a = a[b];
return a;
}
I.prototype.contain = function(a) {
return !!this.register[a];
};
I.prototype.update = function(a, b) {
return this.remove(a).add(a, b);
};
I.prototype.remove = function(a, b) {
const c = this.register[a];
if (c) {
if (this.m) {
for (let d = 0, e; d < c.length; d++) {
e = c[d], e.splice(e.indexOf(a), 1);
}
} else {
Q(this.map, a, this.s, this.g), this.i && Q(this.l, a, this.v, this.g);
}
b || delete this.register[a];
}
return this;
};
function Q(a, b, c, d, e) {
let h = 0;
if (a.constructor === Array) {
if (e) {
b = a.indexOf(b), -1 !== b ? 1 < a.length && (a.splice(b, 1), h++) : h++;
} else {
e = Math.min(a.length, c);
for (let f = 0, g; f < e; f++) {
if (g = a[f]) {
h = Q(g, b, c, d, e), d || h || delete a[f];
}
}
}
} else {
for (let f in a) {
(h = Q(a[f], b, c, d, e)) || delete a[f];
}
}
return h;
}
;const R = self;
let S;
const T = {Index:I, Document:null, Worker:null, registerCharset:function(a, b) {
G[a] = b;
}, registerLanguage:function(a, b) {
F[a] = b;
}};
(S = R.define) && S.amd ? S([], function() {
return T;
}) : R.exports ? R.exports = T : R.FlexSearch = T;

18
dist/flexsearch.light.module.min.js vendored Normal file
View File

@@ -0,0 +1,18 @@
/**!
* FlexSearch.js v0.7.39 (Light.module)
* Author and Copyright: Thomas Wilkerling
* Licence: Apache-2.0
* Hosted by Nextapps GmbH
* https://github.com/nextapps-de/flexsearch
*/
function t(a){return"undefined"!==typeof a?a:!0}function v(a){const b=Array(a);for(let c=0;c<a;c++)b[c]=y();return b}function y(){return Object.create(null)}function z(a,b){return b.length-a.length};const A=/[\p{Z}\p{S}\p{P}\p{C}]+/u;function B(a,b){const c=Object.keys(a),d=c.length,e=[];let h="",f=0;for(let g=0,l,n;g<d;g++)l=c[g],(n=a[l])?(e[f++]=new RegExp(b?"(?!\\b)"+l+"(\\b|_)":l,"g"),e[f++]=n):h+=(h?"|":"")+l;h&&(e[f++]=new RegExp(b?"(?!\\b)("+h+")(\\b|_)":"("+h+")","g"),e[f]="");return e}function C(a,b){for(let c=0,d=b.length;c<d&&(a=a.replace(b[c],b[c+1]),a);c+=2);return a};function D(a){if(a=(""+a).toLowerCase())if(this.o&&(a=C(a,this.o)),this.A&&1<a.length&&(a=C(a,this.A)),A||""===A){const b=a.split(A);if(this.filter){a=this.filter;const c=b.length,d=[];for(let e=0,h=0;e<c;e++){const f=b[e];f&&!a[f]&&(d[h++]=f)}a=d}else a=b}return a};const F={},G={};function H(a,b,c,d){const e=a.length;let h=[],f,g,l=0;d&&(d=[]);for(let n=e-1;0<=n;n--){const m=a[n],r=m.length,p=y();let q=!f;for(let k=0;k<r;k++){const u=m[k],M=u.length;if(M)for(let E=0,x,w;E<M;E++)if(w=u[E],f){if(f[w]){if(!n)if(c)c--;else if(h[l++]=w,l===b)return h;if(n||d)p[w]=1;q=!0}if(d&&(x=(g[w]||0)+1,g[w]=x,x<e)){const N=d[x-2]||(d[x-2]=[]);N[N.length]=w}}else p[w]=1}if(d)f||(g=p);else if(!q)return[];f=p}if(d)for(let n=d.length-1,m,r;0<=n;n--){m=d[n];r=m.length;for(let p=0,q;p<r;p++)if(q=
m[p],!f[q]){if(c)c--;else if(h[l++]=q,l===b)return h;f[q]=1}}return h};function I(a,b){if(!(this instanceof I))return new I(a);let c;if(a){var d=a.charset;c=a.lang;"string"===typeof d&&(-1===d.indexOf(":")&&(d+=":default"),d=G[d]);"string"===typeof c&&(c=F[c])}else a={};let e,h,f=a.context||{};this.encode=a.encode||d&&d.encode||D;this.register=b||y();this.s=e=a.resolution||9;this.B=b=d&&d.B||a.tokenize||"strict";this.i="strict"===b&&f.depth;this.j=t(f.bidirectional);this.g=h=t(a.optimize);this.m=t(a.fastupdate);this.h=a.minlength||1;this.C=a.boost;this.map=h?v(e):y();
this.v=e=f.resolution||1;this.l=h?v(e):y();this.u=d&&d.u||a.rtl;this.o=(b=a.matcher||c&&c.o)&&B(b,!1);this.A=(b=a.stemmer||c&&c.A)&&B(b,!0);if(a=b=a.filter||c&&c.filter){a=b;d=y();for(let g=0,l=a.length;g<l;g++)d[a[g]]=1;a=d}this.filter=a}I.prototype.append=function(a,b){return this.add(a,b,!0)};
I.prototype.add=function(a,b,c,d){if(b&&(a||0===a)){if(!d&&!c&&this.register[a])return this.update(a,b);b=this.encode(b);if(d=b.length){const n=y(),m=y(),r=this.i,p=this.s;for(let q=0;q<d;q++){let k=b[this.u?d-1-q:q];var e=k.length;if(k&&e>=this.h&&(r||!m[k])){var h=J(p,d,q),f="";switch(this.B){case "full":if(2<e){for(h=0;h<e;h++)for(var g=e;g>h;g--)if(g-h>=this.h){var l=J(p,d,q,e,h);f=k.substring(h,g);K(this,m,f,l,a,c)}break}case "reverse":if(1<e){for(g=e-1;0<g;g--)f=k[g]+f,f.length>=this.h&&K(this,
m,f,J(p,d,q,e,g),a,c);f=""}case "forward":if(1<e){for(g=0;g<e;g++)f+=k[g],f.length>=this.h&&K(this,m,f,h,a,c);break}default:if(this.C&&(h=Math.min(h/this.C(b,k,q)|0,p-1)),K(this,m,k,h,a,c),r&&1<d&&q<d-1)for(e=y(),f=this.v,h=k,g=Math.min(r+1,d-q),e[h]=1,l=1;l<g;l++)if((k=b[this.u?d-1-q-l:q+l])&&k.length>=this.h&&!e[k]){e[k]=1;const u=this.j&&k>h;K(this,n,u?h:k,J(f+(d/2>f?0:1),d,q,g-1,l-1),a,c,u?k:h)}}}}this.m||(this.register[a]=1)}}return this};
function J(a,b,c,d,e){return c&&1<a?b+(d||0)<=a?c+(e||0):(a-1)/(b+(d||0))*(c+(e||0))+1|0:0}function K(a,b,c,d,e,h,f){let g=f?a.l:a.map;if(!b[c]||f&&!b[c][f])a.g&&(g=g[d]),f?(b=b[c]||(b[c]=y()),b[f]=1,g=g[f]||(g[f]=y())):b[c]=1,g=g[c]||(g[c]=[]),a.g||(g=g[d]||(g[d]=[])),h&&g.includes(e)||(g[g.length]=e,a.m&&(a=a.register[e]||(a.register[e]=[]),a[a.length]=g))}
I.prototype.search=function(a,b,c){c||(b||"object"!==typeof a?"object"===typeof b&&(c=b):(c=a,a=c.query));let d=[],e;let h,f=0;if(c){a=c.query||a;b=c.limit;f=c.offset||0;var g=c.context;h=!1}if(a&&(a=this.encode(""+a),e=a.length,1<e)){c=y();var l=[];for(let m=0,r=0,p;m<e;m++)if((p=a[m])&&p.length>=this.h&&!c[p])if(this.g||h||this.map[p])l[r++]=p,c[p]=1;else return d;a=l;e=a.length}if(!e)return d;b||(b=100);g=this.i&&1<e&&!1!==g;c=0;let n;g?(n=a[0],c=1):1<e&&a.sort(z);for(let m,r;c<e;c++){r=a[c];g?
(m=L(this,d,h,b,f,2===e,r,n),h&&!1===m&&d.length||(n=r)):m=L(this,d,h,b,f,1===e,r);if(m)return m;if(h&&c===e-1){l=d.length;if(!l){if(g){g=0;c=-1;continue}return d}if(1===l)return O(d[0],b,f)}}return H(d,b,f,h)};
function L(a,b,c,d,e,h,f,g){let l=[],n=g?a.l:a.map;a.g||(n=P(n,f,g,a.j));if(n){let m=0;const r=Math.min(n.length,g?a.v:a.s);for(let p=0,q=0,k,u;p<r;p++)if(k=n[p])if(a.g&&(k=P(k,f,g,a.j)),e&&k&&h&&(u=k.length,u<=e?(e-=u,k=null):(k=k.slice(e),e=0)),k&&(l[m++]=k,h&&(q+=k.length,q>=d)))break;if(m){if(h)return O(l,d,0);b[b.length]=l;return}}return!c&&l}function O(a,b,c){a=1===a.length?a[0]:[].concat.apply([],a);return c||a.length>b?a.slice(c,c+b):a}
function P(a,b,c,d){c?(d=d&&b>c,a=(a=a[d?b:c])&&a[d?c:b]):a=a[b];return a}I.prototype.contain=function(a){return!!this.register[a]};I.prototype.update=function(a,b){return this.remove(a).add(a,b)};I.prototype.remove=function(a,b){const c=this.register[a];if(c){if(this.m)for(let d=0,e;d<c.length;d++)e=c[d],e.splice(e.indexOf(a),1);else Q(this.map,a,this.s,this.g),this.i&&Q(this.l,a,this.v,this.g);b||delete this.register[a]}return this};
function Q(a,b,c,d,e){let h=0;if(a.constructor===Array)if(e)b=a.indexOf(b),-1!==b?1<a.length&&(a.splice(b,1),h++):h++;else{e=Math.min(a.length,c);for(let f=0,g;f<e;f++)if(g=a[f])h=Q(g,b,c,d,e),d||h||delete a[f]}else for(let f in a)(h=Q(a[f],b,c,d,e))||delete a[f];return h};const R=self;let S;const T={Index:I,Document:null,Worker:null,registerCharset:function(a,b){G[a]=b},registerLanguage:function(a,b){F[a]=b}};(S=R.define)&&S.amd?S([],function(){return T}):R.exports?R.exports=T:R.FlexSearch=T;

51
dist/module-debug/async.js vendored Normal file
View File

@@ -0,0 +1,51 @@
import { IndexInterface, DocumentInterface } from "./type.js";
//import { promise as Promise } from "./polyfill.js";
import { is_function, is_object, is_string } from "./common.js";
export default function (prototype) {
register(prototype, "add");
register(prototype, "append");
register(prototype, "search");
register(prototype, "update");
register(prototype, "remove");
}
function register(prototype, key) {
prototype[key + "Async"] = function () {
/** @type {IndexInterface|DocumentInterface} */
const self = this,
args = /*[].slice.call*/arguments,
arg = args[args.length - 1];
let callback;
if (is_function(arg)) {
callback = arg;
delete args[args.length - 1];
}
const promise = new Promise(function (resolve) {
setTimeout(function () {
self.async = !0;
const res = self[key].apply(self, args);
self.async = !1;
resolve(res);
});
});
if (callback) {
promise.then(callback);
return this;
} else {
return promise;
}
};
}

168
dist/module-debug/cache.js vendored Normal file
View File

@@ -0,0 +1,168 @@
import { IndexInterface, DocumentInterface } from "./type.js";
import { create_object, is_object } from "./common.js";
/**
* @param {boolean|number=} limit
* @constructor
*/
function CacheClass(limit) {
/** @private */
this.limit = !0 !== limit && limit;
/** @private */
this.cache = create_object();
/** @private */
this.queue = [];
//this.clear();
}
export default CacheClass;
/**
* @param {string|Object} query
* @param {number|Object=} limit
* @param {Object=} options
* @this {IndexInterface}
* @returns {Array<number|string>}
*/
export function searchCache(query, limit, options) {
if (is_object(query)) {
query = query.query;
}
let cache = this.cache.get(query);
if (!cache) {
cache = this.search(query, limit, options);
this.cache.set(query, cache);
}
return cache;
}
// CacheClass.prototype.clear = function(){
//
// /** @private */
// this.cache = create_object();
//
// /** @private */
// this.queue = [];
// };
CacheClass.prototype.set = function (key, value) {
if (!this.cache[key]) {
// it is just a shame that native function array.shift() performs so bad
// const length = this.queue.length;
//
// this.queue[length] = key;
//
// if(length === this.limit){
//
// delete this.cache[this.queue.shift()];
// }
// the same bad performance
// this.queue.unshift(key);
//
// if(this.queue.length === this.limit){
//
// this.queue.pop();
// }
// fast implementation variant
// let length = this.queue.length;
//
// if(length === this.limit){
//
// length--;
//
// delete this.cache[this.queue[0]];
//
// for(let x = 0; x < length; x++){
//
// this.queue[x] = this.queue[x + 1];
// }
// }
//
// this.queue[length] = key;
// current fastest implementation variant
// theoretically that should not perform better compared to the example above
let length = this.queue.length;
if (length === this.limit) {
delete this.cache[this.queue[length - 1]];
} else {
length++;
}
for (let x = length - 1; 0 < x; x--) {
this.queue[x] = this.queue[x - 1];
}
this.queue[0] = key;
}
this.cache[key] = value;
};
CacheClass.prototype.get = function (key) {
const cache = this.cache[key];
if (this.limit && cache) {
// probably the indexOf() method performs faster when matched content is on front (left-to-right)
// using lastIndexOf() does not help, it performs almost slower
const pos = this.queue.indexOf(key);
// if(pos < this.queue.length - 1){
//
// const tmp = this.queue[pos];
// this.queue[pos] = this.queue[pos + 1];
// this.queue[pos + 1] = tmp;
// }
if (pos) {
const tmp = this.queue[pos - 1];
this.queue[pos - 1] = this.queue[pos];
this.queue[pos] = tmp;
}
}
return cache;
};
CacheClass.prototype.del = function (id) {
for (let i = 0, item, key; i < this.queue.length; i++) {
key = this.queue[i];
item = this.cache[key];
if (item.includes(id)) {
this.queue.splice(i--, 1);
delete this.cache[key];
}
}
};

78
dist/module-debug/common.js vendored Normal file
View File

@@ -0,0 +1,78 @@
export function parse_option(value, default_value) {
return "undefined" != typeof value ? value : default_value;
}
/**
* @param {!number} count
* @returns {Array<Object>}
*/
export function create_object_array(count) {
const array = Array(count);
for (let i = 0; i < count; i++) {
array[i] = create_object();
}
return array;
}
export function create_arrays(count) {
const array = Array(count);
for (let i = 0; i < count; i++) {
array[i] = [];
}
return array;
}
/**
* @param {!Object} obj
* @returns {Array<string>}
*/
export function get_keys(obj) {
return Object.keys(obj);
}
export function create_object() {
return Object.create(null);
}
export function concat(arrays) {
return [].concat.apply([], arrays);
}
export function sort_by_length_down(a, b) {
return b.length - a.length;
}
export function is_array(val) {
return val.constructor === Array;
}
export function is_string(val) {
return "string" == typeof val;
}
export function is_object(val) {
return "object" == typeof val;
}
export function is_function(val) {
return "function" == typeof val;
}

731
dist/module-debug/document.js vendored Normal file
View File

@@ -0,0 +1,731 @@
/**!
* FlexSearch.js
* Author and Copyright: Thomas Wilkerling
* Licence: Apache-2.0
* Hosted by Nextapps GmbH
* https://github.com/nextapps-de/flexsearch
*/
import Index from "./index.js";
import { DocumentInterface } from "./type.js";
import Cache, { searchCache } from "./cache.js";
import { create_object, is_array, is_string, is_object, parse_option, get_keys } from "./common.js";
import apply_async from "./async.js";
import { intersect, intersect_union } from "./intersect.js";
import { exportDocument, importDocument } from "./serialize.js";
import WorkerIndex from "./worker/index.js";
/**
* @constructor
* @implements {DocumentInterface}
* @param {Object=} options
* @return {Document}
*/
function Document(options) {
if (!(this instanceof Document)) {
return new Document(options);
}
const document = options.document || options.doc || options;
let opt;
this.tree = [];
this.field = [];
this.marker = [];
this.register = create_object();
this.key = (opt = document.key || document.id) && parse_tree(opt, this.marker) || "id";
this.fastupdate = parse_option(options.fastupdate, /* append: */ /* skip update: */ /* skip_update: */!0);
this.storetree = (opt = document.store) && !0 !== opt && [];
this.store = opt && create_object();
// TODO case-insensitive tags
this.tag = (opt = document.tag) && parse_tree(opt, this.marker);
this.tagindex = opt && create_object();
this.cache = (opt = options.cache) && new Cache(opt);
// do not apply cache again for the indexes
options.cache = !1;
this.worker = options.worker;
// this switch is used by recall of promise callbacks
this.async = !1;
/** @export */
this.index = parse_descriptor.call(this, options, document);
}
export default Document;
/**
* @this Document
*/
function parse_descriptor(options, document) {
const index = create_object();
let field = document.index || document.field || document;
if (is_string(field)) {
field = [field];
}
for (let i = 0, key, opt; i < field.length; i++) {
key = field[i];
if (!is_string(key)) {
opt = key;
key = key.field;
}
opt = is_object(opt) ? Object.assign({}, options, opt) : options;
if (this.worker) {
index[key] = new WorkerIndex(opt);
if (!index[key].worker) {
this.worker = !1;
}
}
if (!this.worker) {
index[key] = new Index(opt, this.register);
}
this.tree[i] = parse_tree(key, this.marker);
this.field[i] = key;
}
if (this.storetree) {
let store = document.store;
if (is_string(store)) {
store = [store];
}
for (let i = 0; i < store.length; i++) {
this.storetree[i] = parse_tree(store[i], this.marker);
}
}
return index;
}
function parse_tree(key, marker) {
const tree = key.split(":");
let count = 0;
for (let i = 0; i < tree.length; i++) {
key = tree[i];
if (0 <= key.indexOf("[]")) {
key = key.substring(0, key.length - 2);
if (key) {
marker[count] = !0;
}
}
if (key) {
tree[count++] = key;
}
}
if (count < tree.length) {
tree.length = count;
}
return 1 < count ? tree : tree[0];
}
// TODO support generic function created from string when tree depth > 1
function parse_simple(obj, tree) {
if (is_string(tree)) {
obj = obj[tree];
} else {
for (let i = 0; obj && i < tree.length; i++) {
obj = obj[tree[i]];
}
}
return obj;
}
// TODO support generic function created from string when tree depth > 1
function store_value(obj, store, tree, pos, key) {
obj = obj[key];
// reached target field
if (pos === tree.length - 1) {
// store target value
store[key] = obj;
} else if (obj) {
if (is_array(obj)) {
store = store[key] = Array(obj.length);
for (let i = 0; i < obj.length; i++) {
// do not increase pos (an array is not a field)
store_value(obj, store, tree, pos, i);
}
} else {
store = store[key] || (store[key] = create_object());
key = tree[++pos];
store_value(obj, store, tree, pos, key);
}
}
}
function add_index(obj, tree, marker, pos, index, id, key, _append) {
obj = obj[key];
if (obj) {
// reached target field
if (pos === tree.length - 1) {
// handle target value
if (is_array(obj)) {
// append array contents so each entry gets a new scoring context
if (marker[pos]) {
for (let i = 0; i < obj.length; i++) {
index.add(id, obj[i], !0, !0);
}
return;
}
// or join array contents and use one scoring context
obj = obj.join(" ");
}
index.add(id, obj, _append, !0);
} else {
if (is_array(obj)) {
for (let i = 0; i < obj.length; i++) {
// do not increase index, an array is not a field
add_index(obj, tree, marker, pos, index, id, i, _append);
}
} else {
key = tree[++pos];
add_index(obj, tree, marker, pos, index, id, key, _append);
}
}
}
}
/**
*
* @param id
* @param content
* @param {boolean=} _append
* @returns {Document|Promise}
*/
Document.prototype.add = function (id, content, _append) {
if (is_object(id)) {
content = id;
id = parse_simple(content, this.key);
}
if (content && (id || 0 === id)) {
if (!_append && this.register[id]) {
return this.update(id, content);
}
for (let i = 0, tree, field; i < this.field.length; i++) {
field = this.field[i];
tree = this.tree[i];
if (is_string(tree)) {
tree = [tree];
}
add_index(content, tree, this.marker, 0, this.index[field], id, tree[0], _append);
}
if (this.tag) {
let tag = parse_simple(content, this.tag),
dupes = create_object();
if (is_string(tag)) {
tag = [tag];
}
for (let i = 0, key, arr; i < tag.length; i++) {
key = tag[i];
if (!dupes[key]) {
dupes[key] = 1;
arr = this.tagindex[key] || (this.tagindex[key] = []);
if (!_append || !arr.includes(id)) {
arr[arr.length] = id;
// add a reference to the register for fast updates
if (this.fastupdate) {
const tmp = this.register[id] || (this.register[id] = []);
tmp[tmp.length] = arr;
}
}
}
}
}
// TODO: how to handle store when appending contents?
if (this.store && (!_append || !this.store[id])) {
let store;
if (this.storetree) {
store = create_object();
for (let i = 0, tree; i < this.storetree.length; i++) {
tree = this.storetree[i];
if (is_string(tree)) {
store[tree] = content[tree];
} else {
store_value(content, store, tree, 0, tree[0]);
}
}
}
this.store[id] = store || content;
}
}
return this;
};
Document.prototype.append = function (id, content) {
return this.add(id, content, !0);
};
Document.prototype.update = function (id, content) {
return this.remove(id).add(id, content);
};
Document.prototype.remove = function (id) {
if (is_object(id)) {
id = parse_simple(id, this.key);
}
if (this.register[id]) {
for (let i = 0; i < this.field.length; i++) {
// workers does not share the register
this.index[this.field[i]].remove(id, !this.worker);
if (this.fastupdate) {
// when fastupdate was enabled all ids are removed
break;
}
}
if (this.tag) {
// when fastupdate was enabled all ids are already removed
if (!this.fastupdate) {
for (let key in this.tagindex) {
const tag = this.tagindex[key],
pos = tag.indexOf(id);
if (-1 !== pos) {
if (1 < tag.length) {
tag.splice(pos, 1);
} else {
delete this.tagindex[key];
}
}
}
}
}
if (this.store) {
delete this.store[id];
}
delete this.register[id];
}
return this;
};
/**
* @param {!string|Object} query
* @param {number|Object=} limit
* @param {Object=} options
* @param {Array<Array>=} _resolve For internal use only.
* @returns {Promise|Array}
*/
Document.prototype.search = function (query, limit, options, _resolve) {
if (!options) {
if (!limit && is_object(query)) {
options = /** @type {Object} */query;
query = "";
} else if (is_object(limit)) {
options = /** @type {Object} */limit;
limit = 0;
}
}
let result = [],
result_field = [],
pluck,
enrich,
field,
tag,
bool,
offset,
count = 0;
if (options) {
if (is_array(options)) {
field = options;
options = null;
} else {
query = options.query || query;
pluck = options.pluck;
field = pluck || options.index || options.field /*|| (is_string(options) && [options])*/;
tag = options.tag;
enrich = this.store && options.enrich;
bool = "and" === options.bool;
limit = options.limit || limit || 100;
offset = options.offset || 0;
if (tag) {
if (is_string(tag)) {
tag = [tag];
}
// when tags is used and no query was set,
// then just return the tag indexes
if (!query) {
for (let i = 0, res; i < tag.length; i++) {
res = get_tag.call(this, tag[i], limit, offset, enrich);
if (res) {
result[result.length] = res;
count++;
}
}
return count ? result : [];
}
}
if (is_string(field)) {
field = [field];
}
}
}
field || (field = this.field);
bool = bool && (1 < field.length || tag && 1 < tag.length);
const promises = !_resolve && (this.worker || this.async) && [];
// TODO solve this in one loop below
for (let i = 0, res, key, len; i < field.length; i++) {
let field_options;
key = field[i];
if (!is_string(key)) {
field_options = key;
key = field_options.field;
query = field_options.query || query;
limit = field_options.limit || limit;
enrich = field_options.enrich || enrich;
}
if (promises) {
promises[i] = this.index[key].searchAsync(query, limit, field_options || options);
// just collect and continue
continue;
} else if (_resolve) {
res = _resolve[i];
} else {
// inherit options also when search? it is just for laziness, Object.assign() has a cost
res = this.index[key].search(query, limit, field_options || options);
}
len = res && res.length;
if (tag && len) {
const arr = [];
let count = 0;
if (bool) {
// prepare for intersection
arr[0] = [res];
}
for (let y = 0, key, res; y < tag.length; y++) {
key = tag[y];
res = this.tagindex[key];
len = res && res.length;
if (len) {
count++;
arr[arr.length] = bool ? [res] : res;
}
}
if (count) {
if (bool) {
res = intersect(arr, limit || 100, offset || 0);
} else {
res = intersect_union(res, arr);
}
len = res.length;
}
}
if (len) {
result_field[count] = key;
result[count++] = res;
} else if (bool) {
return [];
}
}
if (promises) {
const self = this;
// anyone knows a better workaround of optionally having async promises?
// the promise.all() needs to be wrapped into additional promise,
// otherwise the recursive callback wouldn't run before return
return new Promise(function (resolve) {
Promise.all(promises).then(function (result) {
resolve(self.search(query, limit, options, result));
});
});
}
if (!count) {
// fast path "not found"
return [];
}
if (pluck && (!enrich || !this.store)) {
// fast path optimization
return result[0];
}
for (let i = 0, res; i < result_field.length; i++) {
res = result[i];
if (res.length) {
if (enrich) {
res = apply_enrich.call(this, res);
}
}
if (pluck) {
return res;
}
result[i] = {
field: result_field[i],
result: res
};
}
return result;
};
/**
* @this Document
*/
function get_tag(key, limit, offset) {
let res = this.tagindex[key],
len = res && res.length - offset;
}
/**
* @this Document
*/
function apply_enrich(res) {
const arr = Array(res.length);
for (let x = 0, id; x < res.length; x++) {
id = res[x];
arr[x] = {
id: id,
doc: this.store[id]
};
}
return arr;
}
Document.prototype.contain = function (id) {
return !!this.register[id];
};
Document.prototype.get = function (id) {
return this.store[id];
};
Document.prototype.set = function (id, data) {
this.store[id] = data;
return this;
};
Document.prototype.searchCache = searchCache;
Document.prototype.export = exportDocument;
Document.prototype.import = importDocument;
apply_async(Document.prototype);

35
dist/module-debug/engine.js vendored Normal file
View File

@@ -0,0 +1,35 @@
import { searchCache } from "./cache";
/**
* @constructor
* @abstract
*/
function Engine(index) {
//if(this.constructor === Engine){
if (this instanceof Engine) {
throw new Error("Can't instantiate abstract class!");
}
index.prototype.searchCache = searchCache;
index.prototype.addAsync = addAsync;
index.prototype.appendAsync = appendAsync;
index.prototype.searchAsync = searchAsync;
index.prototype.updateAsync = updateAsync;
index.prototype.removeAsync = removeAsync;
}
Engine.prototype.searchCache = searchCache;
Engine.prototype.addAsync = addAsync;
Engine.prototype.appendAsync = appendAsync;
Engine.prototype.searchAsync = searchAsync;
Engine.prototype.updateAsync = updateAsync;
Engine.prototype.removeAsync = removeAsync;

22
dist/module-debug/global.js vendored Normal file
View File

@@ -0,0 +1,22 @@
export const global_lang = {};
export const global_charset = {};
/**
* @param {!string} name
* @param {Object} charset
*/
export function registerCharset(name, charset) {
global_charset[name] = charset;
}
/**
* @param {!string} name
* @param {Object} lang
*/
export function registerLanguage(name, lang) {
global_lang[name] = lang;
}

784
dist/module-debug/index.js vendored Normal file
View File

@@ -0,0 +1,784 @@
/**!
* FlexSearch.js
* Author and Copyright: Thomas Wilkerling
* Licence: Apache-2.0
* Hosted by Nextapps GmbH
* https://github.com/nextapps-de/flexsearch
*/
import { IndexInterface } from "./type.js";
import { encode as default_encoder } from "./lang/latin/default.js";
import { create_object, create_object_array, concat, sort_by_length_down, is_array, is_string, is_object, parse_option } from "./common.js";
import { pipeline, init_stemmer_or_matcher, init_filter } from "./lang.js";
import { global_lang, global_charset } from "./global.js";
import apply_async from "./async.js";
import { intersect } from "./intersect.js";
import Cache, { searchCache } from "./cache.js";
import apply_preset from "./preset.js";
import { exportIndex, importIndex } from "./serialize.js";
/**
* @constructor
* @implements IndexInterface
* @param {Object=} options
* @param {Object=} _register
* @return {Index}
*/
function Index(options, _register) {
if (!(this instanceof Index)) {
return new Index(options);
}
let charset, lang, tmp;
if (options) {
options = apply_preset(options);
charset = options.charset;
lang = options.lang;
if (is_string(charset)) {
if (-1 === charset.indexOf(":")) {
charset += ":default";
}
charset = global_charset[charset];
}
if (is_string(lang)) {
lang = global_lang[lang];
}
} else {
options = {};
}
let resolution,
optimize,
context = options.context || {};
this.encode = options.encode || charset && charset.encode || default_encoder;
this.register = _register || create_object();
this.resolution = resolution = options.resolution || 9;
this.tokenize = tmp = charset && charset.tokenize || options.tokenize || "strict";
this.depth = "strict" === tmp && context.depth;
this.bidirectional = parse_option(context.bidirectional, /* append: */ /* skip update: */ /* skip_update: */!0);
this.optimize = optimize = parse_option(options.optimize, !0);
this.fastupdate = parse_option(options.fastupdate, !0);
this.minlength = options.minlength || 1;
this.boost = options.boost;
// when not using the memory strategy the score array should not pre-allocated to its full length
this.map = optimize ? create_object_array(resolution) : create_object();
this.resolution_ctx = resolution = context.resolution || 1;
this.ctx = optimize ? create_object_array(resolution) : create_object();
this.rtl = charset && charset.rtl || options.rtl;
this.matcher = (tmp = options.matcher || lang && lang.matcher) && init_stemmer_or_matcher(tmp, !1);
this.stemmer = (tmp = options.stemmer || lang && lang.stemmer) && init_stemmer_or_matcher(tmp, !0);
this.filter = (tmp = options.filter || lang && lang.filter) && init_filter(tmp);
this.cache = (tmp = options.cache) && new Cache(tmp);
}
export default Index;
//Index.prototype.pipeline = pipeline;
/**
* @param {!number|string} id
* @param {!string} content
*/
Index.prototype.append = function (id, content) {
return this.add(id, content, !0);
};
// TODO:
// string + number as text
// boolean, null, undefined as ?
/**
* @param {!number|string} id
* @param {!string} content
* @param {boolean=} _append
* @param {boolean=} _skip_update
*/
Index.prototype.add = function (id, content, _append, _skip_update) {
if (content && (id || 0 === id)) {
if (!_skip_update && !_append && this.register[id]) {
return this.update(id, content);
}
content = this.encode("" + content);
const length = content.length;
if (length) {
// check context dupes to skip all contextual redundancy along a document
const dupes_ctx = create_object(),
dupes = create_object(),
depth = this.depth,
resolution = this.resolution;
for (let i = 0; i < length; i++) {
let term = content[this.rtl ? length - 1 - i : i],
term_length = term.length;
// skip dupes will break the context chain
if (term && term_length >= this.minlength && (depth || !dupes[term])) {
let score = get_score(resolution, length, i),
token = "";
switch (this.tokenize) {
case "full":
if (2 < term_length) {
for (let x = 0; x < term_length; x++) {
for (let y = term_length; y > x; y--) {
if (y - x >= this.minlength) {
const partial_score = get_score(resolution, length, i, term_length, x);
token = term.substring(x, y);
this.push_index(dupes, token, partial_score, id, _append);
}
}
}
break;
}
// fallthrough to next case when term length < 3
case "reverse":
// skip last round (this token exist already in "forward")
if (1 < term_length) {
for (let x = term_length - 1; 0 < x; x--) {
token = term[x] + token;
if (token.length >= this.minlength) {
const partial_score = get_score(resolution, length, i, term_length, x);
this.push_index(dupes, token, partial_score, id, _append);
}
}
token = "";
}
// fallthrough to next case to apply forward also
case "forward":
if (1 < term_length) {
for (let x = 0; x < term_length; x++) {
token += term[x];
if (token.length >= this.minlength) {
this.push_index(dupes, token, score, id, _append);
}
}
break;
}
// fallthrough to next case when token has a length of 1
default:
// case "strict":
if (this.boost) {
score = Math.min(0 | score / this.boost(content, term, i), resolution - 1);
}
this.push_index(dupes, term, score, id, _append);
// context is just supported by tokenizer "strict"
if (depth) {
if (1 < length && i < length - 1) {
// check inner dupes to skip repeating words in the current context
const dupes_inner = create_object(),
resolution = this.resolution_ctx,
keyword = term,
size = Math.min(depth + 1, length - i);
dupes_inner[keyword] = 1;
for (let x = 1; x < size; x++) {
term = content[this.rtl ? length - 1 - i - x : i + x];
if (term && term.length >= this.minlength && !dupes_inner[term]) {
dupes_inner[term] = 1;
const context_score = get_score(resolution + (length / 2 > resolution ? 0 : 1), length, i, size - 1, x - 1),
swap = this.bidirectional && term > keyword;
this.push_index(dupes_ctx, swap ? keyword : term, context_score, id, _append, swap ? term : keyword);
}
}
}
}
}
}
}
this.fastupdate || (this.register[id] = 1);
}
}
return this;
};
/**
* @param {number} resolution
* @param {number} length
* @param {number} i
* @param {number=} term_length
* @param {number=} x
* @returns {number}
*/
function get_score(resolution, length, i, term_length, x) {
// console.log("resolution", resolution);
// console.log("length", length);
// console.log("term_length", term_length);
// console.log("i", i);
// console.log("x", x);
// console.log((resolution - 1) / (length + (term_length || 0)) * (i + (x || 0)) + 1);
// the first resolution slot is reserved for the best match,
// when a query matches the first word(s).
// also to stretch score to the whole range of resolution, the
// calculation is shift by one and cut the floating point.
// this needs the resolution "1" to be handled additionally.
// do not stretch the resolution more than the term length will
// improve performance and memory, also it improves scoring in
// most cases between a short document and a long document
return i && 1 < resolution ? length + (term_length || 0) <= resolution ? i + (x || 0) : 0 | (resolution - 1) / (length + (term_length || 0)) * (i + (x || 0)) + 1 : 0;
}
/**
* @private
* @param dupes
* @param value
* @param score
* @param id
* @param {boolean=} append
* @param {string=} keyword
*/
Index.prototype.push_index = function (dupes, value, score, id, append, keyword) {
let arr = keyword ? this.ctx : this.map;
if (!dupes[value] || keyword && !dupes[value][keyword]) {
if (this.optimize) {
arr = arr[score];
}
if (keyword) {
dupes = dupes[value] || (dupes[value] = create_object());
dupes[keyword] = 1;
arr = arr[keyword] || (arr[keyword] = create_object());
} else {
dupes[value] = 1;
}
arr = arr[value] || (arr[value] = []);
if (!this.optimize) {
arr = arr[score] || (arr[score] = []);
}
if (!append || !arr.includes(id)) {
arr[arr.length] = id;
// add a reference to the register for fast updates
if (this.fastupdate) {
const tmp = this.register[id] || (this.register[id] = []);
tmp[tmp.length] = arr;
}
}
}
};
/**
* @param {string|Object} query
* @param {number|Object=} limit
* @param {Object=} options
* @returns {Array<number|string>}
*/
Index.prototype.search = function (query, limit, options) {
if (!options) {
if (!limit && is_object(query)) {
options = /** @type {Object} */query;
query = options.query;
} else if (is_object(limit)) {
options = /** @type {Object} */limit;
}
}
let result = [],
length,
context,
suggest,
offset = 0;
if (options) {
query = options.query || query;
limit = options.limit;
offset = options.offset || 0;
context = options.context;
suggest = options.suggest;
}
if (query) {
query = /** @type {Array} */this.encode("" + query);
length = query.length;
// TODO: solve this in one single loop below
if (1 < length) {
const dupes = create_object(),
query_new = [];
for (let i = 0, count = 0, term; i < length; i++) {
term = query[i];
if (term && term.length >= this.minlength && !dupes[term]) {
// this fast path can just apply when not in memory-optimized mode
if (!this.optimize && !suggest && !this.map[term]) {
// fast path "not found"
return result;
} else {
query_new[count++] = term;
dupes[term] = 1;
}
}
}
query = query_new;
length = query.length;
}
}
if (!length) {
return result;
}
limit || (limit = 100);
let depth = this.depth && 1 < length && !1 !== context,
index = 0,
keyword;
if (depth) {
keyword = query[0];
index = 1;
} else {
if (1 < length) {
query.sort(sort_by_length_down);
}
}
for (let arr, term; index < length; index++) {
term = query[index];
// console.log(keyword);
// console.log(term);
// console.log("");
if (depth) {
arr = this.add_result(result, suggest, limit, offset, 2 === length, term, keyword);
// console.log(arr);
// console.log(result);
// when suggestion enabled just forward keyword if term was found
// as long as the result is empty forward the pointer also
if (!suggest || !1 !== arr || !result.length) {
keyword = term;
}
} else {
arr = this.add_result(result, suggest, limit, offset, 1 === length, term);
}
if (arr) {
return (/** @type {Array<number|string>} */arr
);
}
// apply suggestions on last loop or fallback
if (suggest && index == length - 1) {
let length = result.length;
if (!length) {
if (depth) {
// fallback to non-contextual search when no result was found
depth = 0;
index = -1;
continue;
}
return result;
} else if (1 === length) {
// fast path optimization
return single_result(result[0], limit, offset);
}
}
}
return intersect(result, limit, offset, suggest);
};
/**
* Returns an array when the result is done (to stop the process immediately),
* returns false when suggestions is enabled and no result was found,
* or returns nothing when a set was pushed successfully to the results
*
* @private
* @param {Array} result
* @param {Array} suggest
* @param {number} limit
* @param {number} offset
* @param {boolean} single_term
* @param {string} term
* @param {string=} keyword
* @return {Array<Array<string|number>>|boolean|undefined}
*/
Index.prototype.add_result = function (result, suggest, limit, offset, single_term, term, keyword) {
let word_arr = [],
arr = keyword ? this.ctx : this.map;
if (!this.optimize) {
arr = get_array(arr, term, keyword, this.bidirectional);
}
if (arr) {
let count = 0;
const arr_len = Math.min(arr.length, keyword ? this.resolution_ctx : this.resolution);
// relevance:
for (let x = 0, size = 0, tmp, len; x < arr_len; x++) {
tmp = arr[x];
if (tmp) {
if (this.optimize) {
tmp = get_array(tmp, term, keyword, this.bidirectional);
}
if (offset) {
if (tmp && single_term) {
len = tmp.length;
if (len <= offset) {
offset -= len;
tmp = null;
} else {
tmp = tmp.slice(offset);
offset = 0;
}
}
}
if (tmp) {
// keep score (sparse array):
//word_arr[x] = tmp;
// simplified score order:
word_arr[count++] = tmp;
if (single_term) {
size += tmp.length;
if (size >= limit) {
// fast path optimization
break;
}
}
}
}
}
if (count) {
if (single_term) {
// fast path optimization
// offset was already applied at this point
return single_result(word_arr, limit, 0);
}
result[result.length] = word_arr;
return;
}
}
// return an empty array will stop the loop,
// to prevent stop when using suggestions return a false value
return !suggest && word_arr;
};
function single_result(result, limit, offset) {
if (1 === result.length) {
result = result[0];
} else {
result = concat(result);
}
return offset || result.length > limit ? result.slice(offset, offset + limit) : result;
}
function get_array(arr, term, keyword, bidirectional) {
if (keyword) {
// the frequency of the starting letter is slightly less
// on the last half of the alphabet (m-z) in almost every latin language,
// so we sort downwards (https://en.wikipedia.org/wiki/Letter_frequency)
const swap = bidirectional && term > keyword;
arr = arr[swap ? term : keyword];
arr = arr && arr[swap ? keyword : term];
} else {
arr = arr[term];
}
return arr;
}
Index.prototype.contain = function (id) {
return !!this.register[id];
};
Index.prototype.update = function (id, content) {
return this.remove(id).add(id, content);
};
/**
* @param {boolean=} _skip_deletion
*/
Index.prototype.remove = function (id, _skip_deletion) {
const refs = this.register[id];
if (refs) {
if (this.fastupdate) {
// fast updates performs really fast but did not fully cleanup the key entries
for (let i = 0, tmp; i < refs.length; i++) {
tmp = refs[i];
tmp.splice(tmp.indexOf(id), 1);
}
} else {
remove_index(this.map, id, this.resolution, this.optimize);
if (this.depth) {
remove_index(this.ctx, id, this.resolution_ctx, this.optimize);
}
}
_skip_deletion || delete this.register[id];
if (this.cache) {
this.cache.del(id);
}
}
return this;
};
/**
* @param map
* @param id
* @param res
* @param optimize
* @param {number=} resolution
* @return {number}
*/
function remove_index(map, id, res, optimize, resolution) {
let count = 0;
if (is_array(map)) {
// the first array is the score array in both strategies
if (!resolution) {
resolution = Math.min(map.length, res);
for (let x = 0, arr; x < resolution; x++) {
arr = map[x];
if (arr) {
count = remove_index(arr, id, res, optimize, resolution);
if (!optimize && !count) {
// when not memory optimized the score index should removed
delete map[x];
}
}
}
} else {
const pos = map.indexOf(id);
if (-1 !== pos) {
// fast path, when length is 1 or lower then the whole field gets deleted
if (1 < map.length) {
map.splice(pos, 1);
count++;
}
} else {
count++;
}
}
} else {
for (let key in map) {
count = remove_index(map[key], id, res, optimize, resolution);
if (!count) {
delete map[key];
}
}
}
return count;
}
Index.prototype.searchCache = searchCache;
Index.prototype.export = exportIndex;
Index.prototype.import = importIndex;
apply_async(Index.prototype);

394
dist/module-debug/intersect.js vendored Normal file
View File

@@ -0,0 +1,394 @@
import { create_object, concat } from "./common.js";
/**
* Implementation based on Array.includes() provides better performance,
* but it needs at least one word in the query which is less frequent.
* Also on large indexes it does not scale well performance-wise.
* This strategy also lacks of suggestion capabilities (matching & sorting).
*
* @param arrays
* @param limit
* @param offset
* @param {boolean|Array=} suggest
* @returns {Array}
*/
// export function intersect(arrays, limit, offset, suggest) {
//
// const length = arrays.length;
// let result = [];
// let check;
//
// // determine shortest array and collect results
// // from the sparse relevance arrays
//
// let smallest_size;
// let smallest_arr;
// let smallest_index;
//
// for(let x = 0; x < length; x++){
//
// const arr = arrays[x];
// const len = arr.length;
//
// let size = 0;
//
// for(let y = 0, tmp; y < len; y++){
//
// tmp = arr[y];
//
// if(tmp){
//
// size += tmp.length;
// }
// }
//
// if(!smallest_size || (size < smallest_size)){
//
// smallest_size = size;
// smallest_arr = arr;
// smallest_index = x;
// }
// }
//
// smallest_arr = smallest_arr.length === 1 ?
//
// smallest_arr[0]
// :
// concat(smallest_arr);
//
// if(suggest){
//
// suggest = [smallest_arr];
// check = create_object();
// }
//
// let size = 0;
// let steps = 0;
//
// // process terms in reversed order often results in better performance.
// // the outer loop must be the words array, using the
// // smallest array here disables the "fast fail" optimization.
//
// for(let x = length - 1; x >= 0; x--){
//
// if(x !== smallest_index){
//
// steps++;
//
// const word_arr = arrays[x];
// const word_arr_len = word_arr.length;
// const new_arr = [];
//
// let count = 0;
//
// for(let z = 0, id; z < smallest_arr.length; z++){
//
// id = smallest_arr[z];
//
// let found;
//
// // process relevance in forward order (direction is
// // important for adding IDs during the last round)
//
// for(let y = 0; y < word_arr_len; y++){
//
// const arr = word_arr[y];
//
// if(arr.length){
//
// found = arr.includes(id);
//
// if(found){
//
// // check if in last round
//
// if(steps === length - 1){
//
// if(offset){
//
// offset--;
// }
// else{
//
// result[size++] = id;
//
// if(size === limit){
//
// // fast path "end reached"
//
// return result;
// }
// }
//
// if(suggest){
//
// check[id] = 1;
// }
// }
//
// break;
// }
// }
// }
//
// if(found){
//
// new_arr[count++] = id;
// }
// }
//
// if(suggest){
//
// suggest[steps] = new_arr;
// }
// else if(!count){
//
// return [];
// }
//
// smallest_arr = new_arr;
// }
// }
//
// if(suggest){
//
// // needs to iterate in reverse direction
//
// for(let x = suggest.length - 1, arr, len; x >= 0; x--){
//
// arr = suggest[x];
// len = arr && arr.length;
//
// if(len){
//
// for(let y = 0, id; y < len; y++){
//
// id = arr[y];
//
// if(!check[id]){
//
// check[id] = 1;
//
// if(offset){
//
// offset--;
// }
// else{
//
// result[size++] = id;
//
// if(size === limit){
//
// // fast path "end reached"
//
// return result;
// }
// }
// }
// }
// }
// }
// }
//
// return result;
// }
/**
* Implementation based on Object[key] provides better suggestions
* capabilities and has less performance scaling issues on large indexes.
*
* @param arrays
* @param limit
* @param offset
* @param {boolean|Array=} suggest
* @returns {Array}
*/
export function intersect(arrays, limit, offset, suggest) {
const length = arrays.length;
let result = [],
check,
check_suggest,
size = 0;
if (suggest) {
suggest = [];
}
// process terms in reversed order often has advantage for the fast path "end reached".
// also a reversed order prioritize the order of words from a query.
for (let x = length - 1; 0 <= x; x--) {
const word_arr = arrays[x],
word_arr_len = word_arr.length,
check_new = create_object();
let found = !check;
// process relevance in forward order (direction is
// important for adding IDs during the last round)
for (let y = 0; y < word_arr_len; y++) {
const arr = word_arr[y],
arr_len = arr.length;
if (arr_len) {
// loop through IDs
for (let z = 0, check_idx, id; z < arr_len; z++) {
id = arr[z];
if (check) {
if (check[id]) {
// check if in last round
if (!x) {
if (offset) {
offset--;
} else {
result[size++] = id;
if (size === limit) {
// fast path "end reached"
return result;
}
}
}
if (x || suggest) {
check_new[id] = 1;
}
found = /* append: */ /* skip update: */ /* skip_update: */!0;
}
if (suggest) {
check_idx = (check_suggest[id] || 0) + 1;
check_suggest[id] = check_idx;
// do not adding IDs which are already included in the result (saves one loop)
// the first intersection match has the check index 2, so shift by -2
if (check_idx < length) {
const tmp = suggest[check_idx - 2] || (suggest[check_idx - 2] = []);
tmp[tmp.length] = id;
}
}
} else {
// pre-fill in first round
check_new[id] = 1;
}
}
}
}
if (suggest) {
// re-use the first pre-filled check for suggestions
check || (check_suggest = check_new);
} else if (!found) {
return [];
}
check = check_new;
}
if (suggest) {
// needs to iterate in reverse direction
for (let x = suggest.length - 1, arr, len; 0 <= x; x--) {
arr = suggest[x];
len = arr.length;
for (let y = 0, id; y < len; y++) {
id = arr[y];
if (!check[id]) {
if (offset) {
offset--;
} else {
result[size++] = id;
if (size === limit) {
// fast path "end reached"
return result;
}
}
check[id] = 1;
}
}
}
}
return result;
}
/**
* @param mandatory
* @param arrays
* @returns {Array}
*/
export function intersect_union(mandatory, arrays) {
const check = create_object(),
union = create_object(),
result = [];
for (let x = 0; x < mandatory.length; x++) {
check[mandatory[x]] = 1;
}
for (let x = 0, arr; x < arrays.length; x++) {
arr = arrays[x];
for (let y = 0, id; y < arr.length; y++) {
id = arr[y];
if (check[id]) {
if (!union[id]) {
union[id] = 1;
result[result.length] = id;
}
}
}
}
return result;
}

321
dist/module-debug/lang.js vendored Normal file
View File

@@ -0,0 +1,321 @@
import { IndexInterface } from "./type.js";
import { create_object, get_keys } from "./common.js";
/**
* @param {!string} str
* @param {boolean|Array<string|RegExp>=} normalize
* @param {boolean|string|RegExp=} split
* @param {boolean=} _collapse
* @returns {string|Array<string>}
* @this IndexInterface
*/
export function pipeline(str, normalize, split, _collapse) {
if (str) {
if (normalize) {
str = replace(str, /** @type {Array<string|RegExp>} */normalize);
}
if (this.matcher) {
str = replace(str, this.matcher);
}
if (this.stemmer && 1 < str.length) {
str = replace(str, this.stemmer);
}
if (_collapse && 1 < str.length) {
str = collapse(str);
}
if (split || "" === split) {
const words = str.split( /** @type {string|RegExp} */split);
return this.filter ? filter(words, this.filter) : words;
}
}
return str;
}
// TODO improve normalize + remove non-delimited chars like in "I'm" + split on whitespace+
export const regex_whitespace = /[\p{Z}\p{S}\p{P}\p{C}]+/u;
// https://github.com/nextapps-de/flexsearch/pull/414
//export const regex_whitespace = /[\s\xA0\u2000-\u200B\u2028\u2029\u3000\ufeff!"#$%&'()*+,\-./:;<=>?@[\\\]^_`{|}~]/
const regex_normalize = /[\u0300-\u036f]/g;
export function normalize(str) {
if (str.normalize) {
str = str.normalize("NFD").replace(regex_normalize, "");
}
return str;
}
/**
* @param {!string} str
* @param {boolean|Array<string|RegExp>=} normalize
* @param {boolean|string|RegExp=} split
* @param {boolean=} _collapse
* @returns {string|Array<string>}
*/
// FlexSearch.prototype.pipeline = function(str, normalize, split, _collapse){
//
// if(str){
//
// if(normalize && str){
//
// str = replace(str, /** @type {Array<string|RegExp>} */ (normalize));
// }
//
// if(str && this.matcher){
//
// str = replace(str, this.matcher);
// }
//
// if(this.stemmer && str.length > 1){
//
// str = replace(str, this.stemmer);
// }
//
// if(_collapse && str.length > 1){
//
// str = collapse(str);
// }
//
// if(str){
//
// if(split || (split === "")){
//
// const words = str.split(/** @type {string|RegExp} */ (split));
//
// return this.filter ? filter(words, this.filter) : words;
// }
// }
// }
//
// return str;
// };
// export function pipeline(str, normalize, matcher, stemmer, split, _filter, _collapse){
//
// if(str){
//
// if(normalize && str){
//
// str = replace(str, normalize);
// }
//
// if(matcher && str){
//
// str = replace(str, matcher);
// }
//
// if(stemmer && str.length > 1){
//
// str = replace(str, stemmer);
// }
//
// if(_collapse && str.length > 1){
//
// str = collapse(str);
// }
//
// if(str){
//
// if(split !== false){
//
// str = str.split(split);
//
// if(_filter){
//
// str = filter(str, _filter);
// }
// }
// }
// }
//
// return str;
// }
/**
* @param {Array<string>} words
* @returns {Object<string, string>}
*/
export function init_filter(words) {
const filter = create_object();
for (let i = 0, length = words.length; i < length; i++) {
filter[words[i]] = 1;
}
return filter;
}
/**
* @param {!Object<string, string>} obj
* @param {boolean} is_stemmer
* @returns {Array}
*/
export function init_stemmer_or_matcher(obj, is_stemmer) {
const keys = get_keys(obj),
length = keys.length,
final = [];
let removal = "",
count = 0;
for (let i = 0, key, tmp; i < length; i++) {
key = keys[i];
tmp = obj[key];
if (tmp) {
final[count++] = regex(is_stemmer ? "(?!\\b)" + key + "(\\b|_)" : key);
final[count++] = tmp;
} else {
removal += (removal ? "|" : "") + key;
}
}
if (removal) {
final[count++] = regex(is_stemmer ? "(?!\\b)(" + removal + ")(\\b|_)" : "(" + removal + ")");
final[count] = "";
}
return final;
}
/**
* @param {!string} str
* @param {Array} regexp
* @returns {string}
*/
export function replace(str, regexp) {
for (let i = 0, len = regexp.length; i < len; i += 2) {
str = str.replace(regexp[i], regexp[i + 1]);
if (!str) {
break;
}
}
return str;
}
/**
* @param {!string} str
* @returns {RegExp}
*/
export function regex(str) {
return new RegExp(str, "g");
}
/**
* Regex: replace(/(?:(\w)(?:\1)*)/g, "$1")
* @param {!string} string
* @returns {string}
*/
export function collapse(string) {
let final = "",
prev = "";
for (let i = 0, len = string.length, char; i < len; i++) {
if ((char = string[i]) !== prev) {
final += prev = char;
}
}
return final;
}
// TODO using fast-swap
export function filter(words, map) {
const length = words.length,
filtered = [];
for (let i = 0, count = 0; i < length; i++) {
const word = words[i];
if (word && !map[word]) {
filtered[count++] = word;
}
}
return filtered;
}
// const chars = {a:1, e:1, i:1, o:1, u:1, y:1};
//
// function collapse_repeating_chars(string){
//
// let collapsed_string = "",
// char_prev = "",
// char_next = "";
//
// for(let i = 0; i < string.length; i++){
//
// const char = string[i];
//
// if(char !== char_prev){
//
// if(i && (char === "h")){
//
// if((chars[char_prev] && chars[char_next]) || (char_prev === " ")){
//
// collapsed_string += char;
// }
// }
// else{
//
// collapsed_string += char;
// }
// }
//
// char_next = (
//
// (i === (string.length - 1)) ?
//
// ""
// :
// string[i + 1]
// );
//
// char_prev = char;
// }
//
// return collapsed_string;
// }

View File

@@ -0,0 +1,27 @@
import { IndexInterface } from "../../type.js";
import { pipeline } from "../../lang.js";
export const rtl = /* append: */ /* skip update: */ /* skip_update: */!0;
export const tokenize = "";
export default {
encode: encode,
rtl: !0
};
const regex = /[\x00-\x7F]+/g,
split = /\s+/;
/**
* @param {string|number} str
* @this IndexInterface
*/
export function encode(str) {
return pipeline.call(this,
/* string: */("" + str).replace(regex, " "),
/* normalize: */
/* collapse: */!1,
/* split: */split, !1);
}

41
dist/module-debug/lang/at.js vendored Normal file
View File

@@ -0,0 +1,41 @@
/**
* http://www.ranks.nl/stopwords
* @type {Array<string>}
*/
export const filter = ["aber", "als", "am", "an", "auch", "auf", "aus", "bei", "bin", "bis", "bist", "da", "dadurch", "daher", "darum", "das", "daß", "dass", "dein", "deine", "dem", "den", "der", "des", "dessen", "deshalb", "die", "dies", "dieser", "dieses", "doch", "dort", "du", "durch", "ein", "eine", "einem", "einen", "einer", "eines", "er", "es", "euer", "eure", "für", "hatte", "hatten", "hattest", "hattet", "hier", "hinter", "ich", "ihr", "ihre", "im", "in", "ist", "ja", "jede", "jedem", "jeden", "jeder", "jedes", "jener", "jenes", "jetzt", "kann", "kannst", "können", "könnt", "machen", "mein", "meine", "mit", "muß", "mußt", "musst", "müssen", "müßt", "nach", "nachdem", "nein", "nicht", "nun", "oder", "seid", "sein", "seine", "sich", "sie", "sind", "soll", "sollen", "sollst", "sollt", "sonst", "soweit", "sowie", "und", "unser", "unsere", "unter", "vom", "von", "vor", "wann", "warum", "was", "weiter", "weitere", "wenn", "wer", "werde", "werden", "werdet", "weshalb", "wie", "wieder", "wieso", "wir", "wird", "wirst", "wo", "woher", "wohin", "zu", "zum", "zur", "über"];
/**
* @type {Object<string, string>}
*/
export const stemmer = {
niss: "",
isch: "",
lich: "",
heit: "",
keit: "",
end: "",
ung: "",
est: "",
ern: "",
em: "",
er: "",
en: "",
es: "",
st: "",
ig: "",
ik: "",
e: "",
s: ""
};
export const matcher = {};
export default {
filter: filter,
stemmer: stemmer,
matcher: matcher
};

26
dist/module-debug/lang/cjk/default.js vendored Normal file
View File

@@ -0,0 +1,26 @@
import { IndexInterface } from "../../type.js";
import { pipeline } from "../../lang.js";
export const rtl = /* normalize: */ /* collapse: */
/* normalize: */
/* collapse: */!1;
export const tokenize = "strict";
export default {
encode: encode,
rtl: !1,
tokenize: "strict"
};
const regex = /[\x00-\x7F]+/g;
/**
* @param {string|number} str
* @this IndexInterface
*/
export function encode(str) {
return pipeline.call(this,
/* string: */("" + str).replace(regex, ""), !1,
/* split: */"", !1);
}

View File

@@ -0,0 +1,27 @@
import { IndexInterface } from "../../type.js";
import { pipeline } from "../../lang.js";
export const rtl = /* normalize: */ /* collapse: */ /* normalize: */ /* collapse: */
/* normalize: */
/* collapse: */!1;
export const tokenize = "";
export default {
encode: encode,
rtl: !1
};
const regex = /[\x00-\x7F]+/g,
split = /\s+/;
/**
* @param {string|number} str
* @this IndexInterface
*/
export function encode(str) {
return pipeline.call(this,
/* string: */("" + str).replace(regex, " "), !1,
/* split: */split, !1);
}

54
dist/module-debug/lang/de.js vendored Normal file
View File

@@ -0,0 +1,54 @@
/**
* Filter are also known as "stopwords", they completely filter out words from being indexed.
* Source: http://www.ranks.nl/stopwords
* Object Definition: Just provide an array of words.
* @type {Array<string>}
*/
export const filter = ["aber", "als", "am", "an", "auch", "auf", "aus", "bei", "bin", "bis", "bist", "da", "dadurch", "daher", "darum", "das", "daß", "dass", "dein", "deine", "dem", "den", "der", "des", "dessen", "deshalb", "die", "dies", "dieser", "dieses", "doch", "dort", "du", "durch", "ein", "eine", "einem", "einen", "einer", "eines", "er", "es", "euer", "eure", "für", "hatte", "hatten", "hattest", "hattet", "hier", "hinter", "ich", "ihr", "ihre", "im", "in", "ist", "ja", "jede", "jedem", "jeden", "jeder", "jedes", "jener", "jenes", "jetzt", "kann", "kannst", "können", "könnt", "machen", "mein", "meine", "mit", "muß", "mußt", "musst", "müssen", "müßt", "nach", "nachdem", "nein", "nicht", "nun", "oder", "seid", "sein", "seine", "sich", "sie", "sind", "soll", "sollen", "sollst", "sollt", "sonst", "soweit", "sowie", "und", "unser", "unsere", "unter", "vom", "von", "vor", "wann", "warum", "was", "weiter", "weitere", "wenn", "wer", "werde", "werden", "werdet", "weshalb", "wie", "wieder", "wieso", "wir", "wird", "wirst", "wo", "woher", "wohin", "zu", "zum", "zur", "über"];
/**
* Stemmer removes word endings and is a kind of "partial normalization". A word ending just matched when the word length is bigger than the matched partial.
* Example: The word "correct" and "correctness" could be the same word, so you can define {"ness": ""} to normalize the ending.
* Object Definition: the key represents the word ending, the value contains the replacement (or empty string for removal).
* @type {Object<string, string>}
*/
export const stemmer = {
niss: "",
isch: "",
lich: "",
heit: "",
keit: "",
ell: "",
bar: "",
end: "",
ung: "",
est: "",
ern: "",
em: "",
er: "",
en: "",
es: "",
st: "",
ig: "",
ik: "",
e: "",
s: ""
};
/**
* Matcher replaces all occurrences of a given string regardless of its position and is also a kind of "partial normalization".
* Object Definition: the key represents the target term, the value contains the search string which should be replaced (could also be an array of multiple terms).
* @type {Object<string, Array<string>|string>}
*/
export const matcher = {};
export default {
filter: filter,
stemmer: stemmer,
matcher: matcher
};

100
dist/module-debug/lang/en.js vendored Normal file
View File

@@ -0,0 +1,100 @@
/**
* http://www.ranks.nl/stopwords
* @type {Array<string>}
*/
export const filter = ["a", "about", "above", "after", "again", "against", "all", "also", "am", "an", "and", "any", "are", "aren't", "as", "at",
//"back",
"be", "because", "been", "before", "being", "below",
//"between",
"both", "but", "by", "can", "cannot", "can't", "come", "could", "couldn't",
//"day",
"did", "didn't", "do", "does", "doesn't", "doing", "dont", "down", "during", "each", "even", "few", "first", "for", "from", "further", "get",
//"give",
"go",
//"good",
"had", "hadn't", "has", "hasn't", "have", "haven't", "having", "he", "hed",
//"hell",
"her", "here", "here's", "hers", "herself", "hes", "him", "himself", "his", "how", "how's", "i", "id", "if", "ill", "im", "in", "into", "is", "isn't", "it", "it's", "itself", "i've", "just", "know", "let's", "like",
//"look",
"make", "me", "more", "most", "mustn't", "my", "myself", "new", "no", "nor", "not", "now", "of", "off", "on", "once",
//"one",
"only", "or", "other", "ought", "our", "our's", "ourselves", "out", "over", "own",
//"people",
"same", "say", "see", "shan't", "she", "she'd", "shell", "shes", "should", "shouldn't", "so", "some", "such",
//"take",
"than", "that", "that's", "the", "their", "theirs", "them", "themselves", "then", "there", "there's", "these", "they", "they'd", "they'll", "they're", "they've",
//"think",
"this", "those", "through", "time", "to", "too",
//"two",
//"under",
"until", "up", "us",
//"use",
"very", "want", "was", "wasn't", "way", "we", "wed", "well", "were", "weren't", "we've", "what", "what's", "when", "when's", "where", "where's", "which", "while", "who", "whom", "who's", "why", "why's", "will", "with", "won't",
//"work",
"would", "wouldn't",
//"year",
"you", "you'd", "you'll", "your", "you're", "your's", "yourself", "yourselves", "you've"];
/**
* @type {Object<string, string>}
*/
export const stemmer = {
ational: "ate",
iveness: "ive",
fulness: "ful",
ousness: "ous",
ization: "ize",
tional: "tion",
biliti: "ble",
icate: "ic",
ative: "",
alize: "al",
iciti: "ic",
entli: "ent",
ousli: "ous",
alism: "al",
ation: "ate",
aliti: "al",
iviti: "ive",
ement: "",
enci: "ence",
anci: "ance",
izer: "ize",
alli: "al",
ator: "ate",
logi: "log",
ical: "ic",
ance: "",
ence: "",
ness: "",
able: "",
ible: "",
ment: "",
eli: "e",
bli: "ble",
ful: "",
ant: "",
ent: "",
ism: "",
ate: "",
iti: "",
ous: "",
ive: "",
ize: "",
al: "",
ou: "",
er: "",
ic: ""
};
export const matcher = {};
export default {
filter: filter,
stemmer: stemmer,
matcher: matcher
};

View File

@@ -0,0 +1,89 @@
import { IndexInterface } from "../../type.js";
import { regex, replace, collapse } from "../../lang.js";
import { encode as encode_balance } from "./balance.js";
export const rtl = /* normalize: */
/* collapse: */ /* normalize: */ /* collapse: */ /* normalize: */ /* collapse: */!1;
export const tokenize = "";
export default {
encode: encode,
rtl: !1,
tokenize: ""
// Phonetic Normalization
};const regex_ae = regex("ae"),
//regex_ai = regex("ai"),
//regex_ay = regex("ay"),
//regex_ey = regex("ey"),
regex_oe = regex("oe"),
//regex_ue = regex("ue"),
//regex_ie = regex("ie"),
//regex_sz = regex("sz"),
//regex_zs = regex("zs"),
//regex_ck = regex("ck"),
//regex_cc = regex("cc"),
regex_sh = regex("sh"),
regex_th = regex("th"),
//regex_dt = regex("dt"),
regex_ph = regex("ph"),
regex_pf = regex("pf"),
pairs = [regex_ae, "a",
// regex_ai, "ei",
// regex_ay, "ei",
// regex_ey, "ei",
regex_oe, "o",
// regex_ue, "u",
// regex_ie, "i",
// regex_sz, "s",
// regex_zs, "s",
regex_sh, "s",
// regex_ck, "k",
// regex_cc, "k",
regex_th, "t",
// regex_dt, "t",
regex_ph, "f", regex_pf, "f",
// regex_ou, "o",
// regex_uo, "u"
// regex("(?![aeiouy])h(?![aeiouy])"), "",
// regex("(?!^[aeiouy])h(?!^[aeiouy])"), ""
regex("(?![aeo])h(?![aeo])"), "", regex("(?!^[aeo])h(?!^[aeo])"), ""];
//regex_ou = regex("ou"),
//regex_uo = regex("uo");
/**
* @param {string|number} str
* @param {boolean=} _skip_postprocessing
* @this IndexInterface
*/
export function encode(str, _skip_postprocessing) {
if (str) {
str = encode_balance.call(this, str).join(" ");
if (2 < str.length) {
str = replace(str, pairs);
}
if (!_skip_postprocessing) {
if (1 < str.length) {
str = collapse(str);
}
if (str) {
str = str.split(" ");
}
}
}
return str || [];
}

119
dist/module-debug/lang/latin/balance.js vendored Normal file
View File

@@ -0,0 +1,119 @@
import { IndexInterface } from "../../type.js";
import { encode as encode_simple } from "./simple.js";
// custom soundex implementation
export const rtl = /* normalize: */ /* collapse: */
/* normalize: */ /* collapse: */ /* normalize: */ /* collapse: */!1;
export const tokenize = "strict";
export default {
encode: encode,
rtl: !1,
tokenize: "strict"
//const regex_whitespace = /[\W_]+/g;
};const regex_strip = /[^a-z0-9]+/,
soundex = {
b: "p",
//"p": "p",
//"f": "f",
v: "f", w: "f",
//"s": "s",
z: "s",
x: "s",
ß: "s",
d: "t",
//"t": "t",
//"l": "l",
//"m": "m",
n: "m",
c: "k",
g: "k",
j: "k",
//"k": "k",
q: "k",
//"r": "r",
//"h": "h",
//"a": "a",
//"e": "e",
i: "e",
y: "e",
//"o": "o",
u: "o"
};
// const pairs = [
// regex_whitespace, " ",
// regex_strip, ""
// ];
// modified
/**
* @param {string|number} str
* @this IndexInterface
*/
export function encode(str) {
str = encode_simple.call(this, str).join(" ");
// str = this.pipeline(
//
// /* string: */ normalize("" + str).toLowerCase(),
// /* normalize: */ false,
// /* split: */ false,
// /* collapse: */ false
// );
const result = [];
if (str) {
const words = str.split(regex_strip),
length = words.length;
for (let x = 0, tmp, count = 0; x < length; x++) {
if ((str = words[x]) && ( /*&& (str.length > 2)*/!this.filter || !this.filter[str])) {
tmp = str[0];
let code = soundex[tmp] || tmp,
previous = code; //str[0];
//soundex[code] || code;
for (let i = 1; i < str.length; i++) {
tmp = str[i];
const current = soundex[tmp] || tmp;
if (current && current !== previous) {
code += current;
previous = current;
// if(code.length === 7){
//
// break;
// }
}
}
result[count++] = code; //(code + "0000").substring(0, 4);
}
}
}
return result;
}

23
dist/module-debug/lang/latin/default.js vendored Normal file
View File

@@ -0,0 +1,23 @@
import { IndexInterface } from "../../type.js";
import { pipeline, normalize, regex_whitespace } from "../../lang.js";
export const rtl = /* normalize: */
/* collapse: */ /* normalize: */ /* collapse: */ /* normalize: */ /* collapse: */
/* normalize: */
/* collapse: */!1;
export const tokenize = "";
export default {
encode: encode,
rtl: !1,
tokenize: ""
/**
* @param {string|number} str
* @this IndexInterface
*/
};export function encode(str) {
return pipeline.call(this,
/* string: */("" + str).toLowerCase(), !1, /* split: */regex_whitespace, !1);
}

65
dist/module-debug/lang/latin/extra.js vendored Normal file
View File

@@ -0,0 +1,65 @@
import { IndexInterface } from "../../type.js";
import { regex, replace, collapse } from "../../lang.js";
import { encode as encode_advanced } from "./advanced.js";
export const rtl = /* normalize: */ /* collapse: */ /* normalize: */ /* collapse: */ /* normalize: */ /* collapse: */ /* normalize: */ /* collapse: */!1;
export const tokenize = "";
export default {
encode: encode,
rtl: !1,
tokenize: ""
// Soundex Normalization
};const prefix = "(?!\\b)",
//soundex_b = regex(prefix + "p"),
// soundex_s = regex(prefix + "z"),
// soundex_k = regex(prefix + "[cgq]"),
// soundex_m = regex(prefix + "n"),
// soundex_t = regex(prefix + "d"),
// soundex_f = regex(prefix + "[vw]"),
//regex_vowel = regex(prefix + "[aeiouy]");
regex_vowel = regex("(?!\\b)[aeo]"),
pairs = [
// soundex_b, "b",
// soundex_s, "s",
// soundex_k, "k",
// soundex_m, "m",
// soundex_t, "t",
// soundex_f, "f",
// regex("(?![aeiouy])h(?![aeiouy])"), "",
// regex("(?!^[aeiouy])h(?!^[aeiouy])"), "",
regex_vowel, ""];
/**
* @param {string|number} str
* @this IndexInterface
*/
export function encode(str) {
if (str) {
str = encode_advanced.call(this, str, /* append: */ /* skip update: */ /* skip_update: */ /* skip post-processing: */!0);
if (1 < str.length) {
//str = replace(str, pairs);
str = str.replace(regex_vowel, "");
}
if (1 < str.length) {
str = collapse(str);
}
if (str) {
str = str.split(" ");
}
}
return str || [];
}

45
dist/module-debug/lang/latin/simple.js vendored Normal file
View File

@@ -0,0 +1,45 @@
import { IndexInterface } from "../../type.js";
import { pipeline, normalize, regex_whitespace, regex } from "../../lang.js";
export const rtl = /* normalize: */ /* collapse: */ /* normalize: */ /* collapse: */ /* normalize: */ /* collapse: */ /* normalize: */ /* collapse: */
/* collapse: */!1;
export const tokenize = "";
export default {
encode: encode,
rtl: !1,
tokenize: ""
// Charset Normalization
};const //regex_whitespace = /\W+/,
//regex_strip = regex("[^a-z0-9 ]"),
regex_a = regex("[àáâãäå]"),
regex_e = regex("[èéêë]"),
regex_i = regex("[ìíîï]"),
regex_o = regex("[òóôõöő]"),
regex_u = regex("[ùúûüű]"),
regex_y = regex("[ýŷÿ]"),
regex_n = regex("ñ"),
regex_c = regex("[çc]"),
regex_s = regex("ß"),
regex_and = regex(" & "),
pairs = [regex_a, "a", regex_e, "e", regex_i, "i", regex_o, "o", regex_u, "u", regex_y, "y", regex_n, "n", regex_c, "k", regex_s, "s", regex_and, " and "
//regex_whitespace, " "
//regex_strip, ""
];
/**
* @param {string|number} str
* @this IndexInterface
*/
export function encode(str) {
str = "" + str;
return pipeline.call(this,
/* string: */normalize(str).toLowerCase(),
/* normalize: */!str.normalize && pairs,
/* split: */regex_whitespace, !1);
}

100
dist/module-debug/lang/us.js vendored Normal file
View File

@@ -0,0 +1,100 @@
/**
* http://www.ranks.nl/stopwords
* @type {Array<string>}
*/
export const filter = ["a", "about", "above", "after", "again", "against", "all", "also", "am", "an", "and", "any", "are", "aren't", "as", "at",
//"back",
"be", "because", "been", "before", "being", "below",
//"between",
"both", "but", "by", "can", "cannot", "can't", "come", "could", "couldn't",
//"day",
"did", "didn't", "do", "does", "doesn't", "doing", "dont", "down", "during", "each", "even", "few", "first", "for", "from", "further", "get",
//"give",
"go",
//"good",
"had", "hadn't", "has", "hasn't", "have", "haven't", "having", "he", "hed",
//"hell",
"her", "here", "here's", "hers", "herself", "hes", "him", "himself", "his", "how", "how's", "i", "id", "if", "ill", "im", "in", "into", "is", "isn't", "it", "it's", "itself", "i've", "just", "know", "let's", "like",
//"look",
"make", "me", "more", "most", "mustn't", "my", "myself", "new", "no", "nor", "not", "now", "of", "off", "on", "once",
//"one",
"only", "or", "other", "ought", "our", "our's", "ourselves", "out", "over", "own",
//"people",
"same", "say", "see", "shan't", "she", "she'd", "shell", "shes", "should", "shouldn't", "so", "some", "such",
//"take",
"than", "that", "that's", "the", "their", "theirs", "them", "themselves", "then", "there", "there's", "these", "they", "they'd", "they'll", "they're", "they've",
//"think",
"this", "those", "through", "time", "to", "too",
//"two",
//"under",
"until", "up", "us",
//"use",
"very", "want", "was", "wasn't", "way", "we", "wed", "well", "were", "weren't", "we've", "what", "what's", "when", "when's", "where", "where's", "which", "while", "who", "whom", "who's", "why", "why's", "will", "with", "won't",
//"work",
"would", "wouldn't",
//"year",
"you", "you'd", "you'll", "your", "you're", "your's", "yourself", "yourselves", "you've"];
/**
* @type {Object<string, string>}
*/
export const stemmer = {
ational: "ate",
iveness: "ive",
fulness: "ful",
ousness: "ous",
ization: "ize",
tional: "tion",
biliti: "ble",
icate: "ic",
ative: "",
alize: "al",
iciti: "ic",
entli: "ent",
ousli: "ous",
alism: "al",
ation: "ate",
aliti: "al",
iviti: "ive",
ement: "",
enci: "ence",
anci: "ance",
izer: "ize",
alli: "al",
ator: "ate",
logi: "log",
ical: "ic",
ance: "",
ence: "",
ness: "",
able: "",
ible: "",
ment: "",
eli: "e",
bli: "ble",
ful: "",
ant: "",
ent: "",
ism: "",
ate: "",
iti: "",
ous: "",
ive: "",
ize: "",
al: "",
ou: "",
er: "",
ic: ""
};
export const matcher = {};
export default {
filter: filter,
stemmer: stemmer,
matcher: matcher
};

74
dist/module-debug/polyfill.js vendored Normal file
View File

@@ -0,0 +1,74 @@
export let promise = Promise;
Object.assign || (Object.assign = function () {
const args = arguments,
size = args.length,
obj = args[0];
for (let x = 1, current, keys, length; x < size; x++) {
current = args[x];
keys = Object.keys(current);
length = keys.length;
for (let i = 0, key; i < length; i++) {
key = keys[i];
obj[key] = current[key];
}
}
return obj;
});
// Object.values || (Object.values = function(obj){
//
// const keys = Object.keys(obj);
// const length = keys.length;
// const values = new Array(length);
//
// for(let x = 0; x < length; x++){
//
// values[x] = obj[keys[x]];
// }
//
// return values;
// });
if (!promise) {
/**
* @param {Function} fn
* @constructor
*/
function SimplePromise(fn) {
this.callback = null;
const self = this;
fn(function (val) {
if (self.callback) {
self.callback(val);
// self.callback = null;
// self = null;
}
});
}
/**
* @param {Function} callback
*/
SimplePromise.prototype.then = function (callback) {
this.callback = callback;
};
promise = SimplePromise;
}

97
dist/module-debug/preset.js vendored Normal file
View File

@@ -0,0 +1,97 @@
import { is_string } from "./common.js";
/**
* @enum {Object}
* @const
*/
const preset = {
memory: {
charset: "latin:extra",
//tokenize: "strict",
resolution: 3,
//threshold: 0,
minlength: 4,
fastupdate: /* normalize: */ /* collapse: */ /* normalize: */ /* collapse: */ /* normalize: */ /* collapse: */ /* normalize: */
/* collapse: */
/* collapse: */!1
},
performance: {
//charset: "latin",
//tokenize: "strict",
resolution: 3,
minlength: 3,
//fastupdate: true,
optimize: !1, //fastupdate: true,
context: {
depth: 2, resolution: 1
//bidirectional: false
}
},
match: {
charset: "latin:extra",
tokenize: "reverse"
//resolution: 9,
//threshold: 0
},
score: {
charset: "latin:advanced",
//tokenize: "strict",
resolution: 20,
minlength: 3,
context: {
depth: 3,
resolution: 9
//bidirectional: true
}
},
default: {
// charset: "latin:default",
// tokenize: "strict",
// resolution: 3,
// threshold: 0,
// depth: 3
}
// "fast": {
// //charset: "latin",
// //tokenize: "strict",
// threshold: 8,
// resolution: 9,
// depth: 1
// }
};
export default function apply_preset(options) {
if (is_string(options)) {
if (!preset[options]) {
console.warn("Preset not found: " + options);
}
options = preset[options];
} else {
const preset = options.preset;
if (preset) {
if (!preset[preset]) {
console.warn("Preset not found: " + preset);
}
options = Object.assign({}, preset[preset], /** @type {Object} */options);
}
}
return options;
}

271
dist/module-debug/serialize.js vendored Normal file
View File

@@ -0,0 +1,271 @@
// TODO return promises instead of inner await
import { IndexInterface, DocumentInterface } from "./type.js";
import { create_object, is_string } from "./common.js";
function async(callback, self, field, key, index_doc, index, data, on_done) {
setTimeout(function () {
const res = callback(field ? field + "." + key : key, JSON.stringify(data));
// await isn't supported by ES5
if (res && res.then) {
res.then(function () {
self.export(callback, self, field, index_doc, index + 1, on_done);
});
} else {
self.export(callback, self, field, index_doc, index + 1, on_done);
}
});
}
/**
* @this IndexInterface
*/
export function exportIndex(callback, self, field, index_doc, index, on_done) {
let return_value = /* append: */ /* skip update: */ /* skip_update: */ /* skip post-processing: */!0;
if ('undefined' == typeof on_done) {
return_value = new Promise(resolve => {
on_done = resolve;
});
}
let key, data;
switch (index || (index = 0)) {
case 0:
key = "reg";
// fastupdate isn't supported by export
if (this.fastupdate) {
data = create_object();
for (let key in this.register) {
data[key] = 1;
}
} else {
data = this.register;
}
break;
case 1:
key = "cfg";
data = {
doc: 0,
opt: this.optimize ? 1 : 0
};
break;
case 2:
key = "map";
data = this.map;
break;
case 3:
key = "ctx";
data = this.ctx;
break;
default:
if ('undefined' == typeof field && on_done) {
on_done();
}
return;
}
async(callback, self || this, field, key, index_doc, index, data, on_done);
return return_value;
}
/**
* @this IndexInterface
*/
export function importIndex(key, data) {
if (!data) {
return;
}
if (is_string(data)) {
data = JSON.parse(data);
}
switch (key) {
case "cfg":
this.optimize = !!data.opt;
break;
case "reg":
// fastupdate isn't supported by import
this.fastupdate = /* normalize: */ /* collapse: */ /* normalize: */ /* collapse: */ /* normalize: */ /* collapse: */ /* normalize: */ /* collapse: */ /* collapse: */!1;
this.register = data;
break;
case "map":
this.map = data;
break;
case "ctx":
this.ctx = data;
break;
}
}
/**
* @this DocumentInterface
*/
export function exportDocument(callback, self, field, index_doc, index, on_done) {
let return_value;
if ('undefined' == typeof on_done) {
return_value = new Promise(resolve => {
on_done = resolve;
});
}
index || (index = 0);
index_doc || (index_doc = 0);
if (index_doc < this.field.length) {
const field = this.field[index_doc],
idx = this.index[field];
self = this;
setTimeout(function () {
if (!idx.export(callback, self, index ? field /*.replace(":", "-")*/ : "", index_doc, index++, on_done)) {
index_doc++;
index = 1;
self.export(callback, self, field, index_doc, index, on_done);
}
});
} else {
let key, data;
switch (index) {
case 1:
key = "tag";
data = this.tagindex;
field = null;
break;
case 2:
key = "store";
data = this.store;
field = null;
break;
// case 3:
//
// key = "reg";
// data = this.register;
// break;
default:
on_done();
return;
}
async(callback, this, field, key, index_doc, index, data, on_done);
}
return return_value;
}
/**
* @this DocumentInterface
*/
export function importDocument(key, data) {
if (!data) {
return;
}
if (is_string(data)) {
data = JSON.parse(data);
}
switch (key) {
case "tag":
this.tagindex = data;
break;
case "reg":
// fastupdate isn't supported by import
this.fastupdate = !1;
this.register = data;
for (let i = 0, index; i < this.field.length; i++) {
index = this.index[this.field[i]];
index.register = data;
index.fastupdate = !1;
}
break;
case "store":
this.store = data;
break;
default:
key = key.split(".");
const field = key[0];
key = key[1];
if (field && key) {
this.index[field].import(key, data);
}
}
}

69
dist/module-debug/type.js vendored Normal file
View File

@@ -0,0 +1,69 @@
/**
* @interface
*/
export function IndexInterface() {
this.cache = null;
this.matcher = null;
this.stemmer = null;
this.filter = null;
}
/**
* @param {!string} str
* @param {boolean|Array<string|RegExp>=} normalize
* @param {boolean|string|RegExp=} split
* @param {boolean=} collapse
* @returns {string|Array<string>}
*/
//IndexInterface.prototype.pipeline;
/**
* @param {!number|string} id
* @param {!string} content
*/
IndexInterface.prototype.add;
/**
* @param {!number|string} id
* @param {!string} content
*/
IndexInterface.prototype.append;
/**
* @param {!string|Object} query
* @param {number|Object=} limit
* @param {Object=} options
* @returns {Array<number|string>}
*/
IndexInterface.prototype.search;
/**
* @param {!number|string} id
* @param {!string} content
*/
IndexInterface.prototype.update;
/**
* @param {!number|string} id
*/
IndexInterface.prototype.remove;
/**
* @interface
*/
export function DocumentInterface() {
this.field = null;
/** @type IndexInterface */
this.index = null;
}

52
dist/module-debug/worker/handler.js vendored Normal file
View File

@@ -0,0 +1,52 @@
import Index from "../index.js";
export default function (data) {
data = data.data;
/** @type Index */
const index = self._index,
args = data.args,
task = data.task;
switch (task) {
case "init":
const options = data.options || {},
factory = data.factory,
encode = options.encode;
options.cache = /* normalize: */ /* collapse: */ /* normalize: */
/* collapse: */ /* normalize: */ /* collapse: */ /* normalize: */ /* collapse: */ /* collapse: */!1;
if (encode && 0 === encode.indexOf("function")) {
options.encode = Function("return " + encode)();
}
if (factory) {
// export the FlexSearch global payload to "self"
Function("return " + factory)()(self);
/** @type Index */
self._index = new self.FlexSearch.Index(options);
// destroy the exported payload
delete self.FlexSearch;
} else {
self._index = new Index(options);
}
break;
default:
const id = data.id,
message = index[task].apply(index, args);
postMessage("search" === task ? { id: id, msg: message } : { id: id });
}
}

136
dist/module-debug/worker/index.js vendored Normal file
View File

@@ -0,0 +1,136 @@
//import { promise as Promise } from "../polyfill.js";
import { create_object, is_function, is_object, is_string } from "../common.js";
import handler from "./handler.js";
let pid = 0;
/**
* @param {Object=} options
* @constructor
*/
function WorkerIndex(options) {
if (!(this instanceof WorkerIndex)) {
return new WorkerIndex(options);
}
let opt;
if (options) {
if (is_function(opt = options.encode)) {
options.encode = opt.toString();
}
} else {
options = {};
}
// the factory is the outer wrapper from the build
// we use "self" as a trap for node.js
let factory = (self || window)._factory;
if (factory) {
factory = factory.toString();
}
const is_node_js = "undefined" == typeof window && self.exports,
_self = this;
this.worker = create(factory, is_node_js, options.worker);
this.resolver = create_object();
if (!this.worker) {
return;
}
if (is_node_js) {
this.worker.on("message", function (msg) {
_self.resolver[msg.id](msg.msg);
delete _self.resolver[msg.id];
});
} else {
this.worker.onmessage = function (msg) {
msg = msg.data;
_self.resolver[msg.id](msg.msg);
delete _self.resolver[msg.id];
};
}
this.worker.postMessage({
task: "init",
factory: factory,
options: options
});
}
export default WorkerIndex;
register("add");
register("append");
register("search");
register("update");
register("remove");
function register(key) {
WorkerIndex.prototype[key] = WorkerIndex.prototype[key + "Async"] = function () {
const self = this,
args = [].slice.call(arguments),
arg = args[args.length - 1];
let callback;
if (is_function(arg)) {
callback = arg;
args.splice(args.length - 1, 1);
}
const promise = new Promise(function (resolve) {
setTimeout(function () {
self.resolver[++pid] = resolve;
self.worker.postMessage({
task: key,
id: pid,
args: args
});
});
});
if (callback) {
promise.then(callback);
return this;
} else {
return promise;
}
};
}
function create(factory, is_node_js, worker_path) {
let worker;
try {
worker = is_node_js ? eval('new (require("worker_threads")["Worker"])("../dist/node/node.js")') : factory ? new Worker(URL.createObjectURL(new Blob(["onmessage=" + handler.toString()], { type: "text/javascript" }))) : new Worker(is_string(worker_path) ? worker_path : "worker/worker.js", { type: "module" });
} catch (e) {}
return worker;
}

36
dist/module-debug/worker/node.js vendored Normal file
View File

@@ -0,0 +1,36 @@
const { parentPort } = require("worker_threads"),
{ Index } = require("../flexsearch.bundle.min.js");
let index;
parentPort.on("message", function (data) {
/** @type Index */
const args = data.args,
task = data.task,
id = data.id;
switch (task) {
case "init":
const options = data.options || {},
encode = options.encode;
options.cache = /* normalize: */ /* collapse: */ /* normalize: */ /* collapse: */ /* normalize: */ /* collapse: */ /* normalize: */ /* collapse: */ /* collapse: */!1;
if (encode && 0 === encode.indexOf("function")) {
options.encode = new Function("return " + encode)();
}
index = new Index(options);
break;
default:
const message = index[task].apply(index, args);
parentPort.postMessage("search" === task ? { id: id, msg: message } : { id: id });
}
});

2
dist/module-debug/worker/worker.js vendored Normal file
View File

@@ -0,0 +1,2 @@
import handler from "./handler.js";
onmessage = handler;

1
dist/module-min/async.js vendored Normal file
View File

@@ -0,0 +1 @@
import{IndexInterface,DocumentInterface}from"./type.js";import{is_function,is_object,is_string}from"./common.js";export default function(a){register(a,"add"),register(a,"append"),register(a,"search"),register(a,"update"),register(a,"remove")}function register(a,b){a[b+"Async"]=function(){const a=this,c=arguments,d=c[c.length-1];let e;is_function(d)&&(e=d,delete c[c.length-1]);const f=new Promise(function(d){setTimeout(function(){a.async=!0;const e=a[b].apply(a,c);a.async=!1,d(e)})});return e?(f.then(e),this):f}}

1
dist/module-min/cache.js vendored Normal file
View File

@@ -0,0 +1 @@
import{IndexInterface,DocumentInterface}from"./type.js";import{create_object,is_object}from"./common.js";function CacheClass(a){this.limit=!0!==a&&a,this.cache=create_object(),this.queue=[]}export default CacheClass;export function searchCache(a,b,c){is_object(a)&&(a=a.query);let d=this.cache.get(a);return d||(d=this.search(a,b,c),this.cache.set(a,d)),d}CacheClass.prototype.set=function(a,b){if(!this.cache[a]){let b=this.queue.length;b===this.limit?delete this.cache[this.queue[b-1]]:b++;for(let a=b-1;0<a;a--)this.queue[a]=this.queue[a-1];this.queue[0]=a}this.cache[a]=b},CacheClass.prototype.get=function(a){const b=this.cache[a];if(this.limit&&b){const b=this.queue.indexOf(a);if(b){const a=this.queue[b-1];this.queue[b-1]=this.queue[b],this.queue[b]=a}}return b},CacheClass.prototype.del=function(a){for(let b,c,d=0;d<this.queue.length;d++)c=this.queue[d],b=this.cache[c],b.includes(a)&&(this.queue.splice(d--,1),delete this.cache[c])};

1
dist/module-min/common.js vendored Normal file
View File

@@ -0,0 +1 @@
export function parse_option(a,b){return"undefined"==typeof a?b:a}export function create_object_array(a){const b=Array(a);for(let c=0;c<a;c++)b[c]=create_object();return b}export function create_arrays(a){const b=Array(a);for(let c=0;c<a;c++)b[c]=[];return b}export function get_keys(a){return Object.keys(a)}export function create_object(){return Object.create(null)}export function concat(a){return[].concat.apply([],a)}export function sort_by_length_down(c,a){return a.length-c.length}export function is_array(a){return a.constructor===Array}export function is_string(a){return"string"==typeof a}export function is_object(a){return"object"==typeof a}export function is_function(a){return"function"==typeof a}

1
dist/module-min/document.js vendored Normal file

File diff suppressed because one or more lines are too long

1
dist/module-min/engine.js vendored Normal file
View File

@@ -0,0 +1 @@
import{searchCache}from"./cache";function Engine(a){a.prototype.searchCache=searchCache,a.prototype.addAsync=addAsync,a.prototype.appendAsync=appendAsync,a.prototype.searchAsync=searchAsync,a.prototype.updateAsync=updateAsync,a.prototype.removeAsync=removeAsync}Engine.prototype.searchCache=searchCache,Engine.prototype.addAsync=addAsync,Engine.prototype.appendAsync=appendAsync,Engine.prototype.searchAsync=searchAsync,Engine.prototype.updateAsync=updateAsync,Engine.prototype.removeAsync=removeAsync;

1
dist/module-min/global.js vendored Normal file
View File

@@ -0,0 +1 @@
export const global_lang={};export const global_charset={};export function registerCharset(a,b){global_charset[a]=b}export function registerLanguage(a,b){global_lang[a]=b}

1
dist/module-min/index.js vendored Normal file

File diff suppressed because one or more lines are too long

1
dist/module-min/intersect.js vendored Normal file
View File

@@ -0,0 +1 @@
import{create_object,concat}from"./common.js";export function intersect(a,b,c,d){const e=a.length;let f,g,h=[],i=0;d&&(d=[]);for(let j=e-1;0<=j;j--){const k=a[j],l=k.length,m=create_object();let n=!f;for(let a=0;a<l;a++){const l=k[a],o=l.length;if(o)for(let a,k,p=0;p<o;p++)if(k=l[p],f){if(f[k]){if(!j)if(c)c--;else if(h[i++]=k,i===b)return h;(j||d)&&(m[k]=1),n=!0}if(d&&(a=(g[k]||0)+1,g[k]=a,a<e)){const b=d[a-2]||(d[a-2]=[]);b[b.length]=k}}else m[k]=1}if(d)f||(g=m);else if(!n)return[];f=m}if(d)for(let a,e,g=d.length-1;0<=g;g--){a=d[g],e=a.length;for(let d,g=0;g<e;g++)if(d=a[g],!f[d]){if(c)c--;else if(h[i++]=d,i===b)return h;f[d]=1}}return h}export function intersect_union(a,b){const c=create_object(),d=create_object(),e=[];for(let d=0;d<a.length;d++)c[a[d]]=1;for(let f,g=0;g<b.length;g++){f=b[g];for(let a,b=0;b<f.length;b++)a=f[b],c[a]&&!d[a]&&(d[a]=1,e[e.length]=a)}return e}

1
dist/module-min/lang.js vendored Normal file
View File

@@ -0,0 +1 @@
import{IndexInterface}from"./type.js";import{create_object,get_keys}from"./common.js";export function pipeline(a,b,c,d){if(a&&(b&&(a=replace(a,b)),this.matcher&&(a=replace(a,this.matcher)),this.stemmer&&1<a.length&&(a=replace(a,this.stemmer)),d&&1<a.length&&(a=collapse(a)),c||""===c)){const b=a.split(c);return this.filter?filter(b,this.filter):b}return a}export const regex_whitespace=/[\p{Z}\p{S}\p{P}\p{C}]+/u;const regex_normalize=/[\u0300-\u036f]/g;export function normalize(a){return a.normalize&&(a=a.normalize("NFD").replace(regex_normalize,"")),a}export function init_filter(a){const b=create_object();for(let c=0,d=a.length;c<d;c++)b[a[c]]=1;return b}export function init_stemmer_or_matcher(a,b){const c=get_keys(a),d=c.length,e=[];let f="",g=0;for(let h,j,k=0;k<d;k++)h=c[k],j=a[h],j?(e[g++]=regex(b?"(?!\\b)"+h+"(\\b|_)":h),e[g++]=j):f+=(f?"|":"")+h;return f&&(e[g++]=regex(b?"(?!\\b)("+f+")(\\b|_)":"("+f+")"),e[g]=""),e}export function replace(a,b){for(let c=0,d=b.length;c<d&&(a=a.replace(b[c],b[c+1]),!!a);c+=2);return a}export function regex(a){return new RegExp(a,"g")}export function collapse(a){let b="",c="";for(let d,e=0,f=a.length;e<f;e++)(d=a[e])!==c&&(b+=c=d);return b}export function filter(a,b){const c=a.length,d=[];for(let e=0,f=0;e<c;e++){const c=a[e];c&&!b[c]&&(d[f++]=c)}return d}

View File

@@ -0,0 +1 @@
import{IndexInterface}from"../../type.js";import{pipeline}from"../../lang.js";export const rtl=!0;export const tokenize="";export default{encode:encode,rtl:!0};const regex=/[\x00-\x7F]+/g,split=/\s+/;export function encode(a){return pipeline.call(this,(""+a).replace(regex," "),!1,split,!1)}

1
dist/module-min/lang/at.js vendored Normal file
View File

@@ -0,0 +1 @@
export const filter=["aber","als","am","an","auch","auf","aus","bei","bin","bis","bist","da","dadurch","daher","darum","das","da\xDF","dass","dein","deine","dem","den","der","des","dessen","deshalb","die","dies","dieser","dieses","doch","dort","du","durch","ein","eine","einem","einen","einer","eines","er","es","euer","eure","f\xFCr","hatte","hatten","hattest","hattet","hier","hinter","ich","ihr","ihre","im","in","ist","ja","jede","jedem","jeden","jeder","jedes","jener","jenes","jetzt","kann","kannst","k\xF6nnen","k\xF6nnt","machen","mein","meine","mit","mu\xDF","mu\xDFt","musst","m\xFCssen","m\xFC\xDFt","nach","nachdem","nein","nicht","nun","oder","seid","sein","seine","sich","sie","sind","soll","sollen","sollst","sollt","sonst","soweit","sowie","und","unser","unsere","unter","vom","von","vor","wann","warum","was","weiter","weitere","wenn","wer","werde","werden","werdet","weshalb","wie","wieder","wieso","wir","wird","wirst","wo","woher","wohin","zu","zum","zur","\xFCber"];export const stemmer={niss:"",isch:"",lich:"",heit:"",keit:"",end:"",ung:"",est:"",ern:"",em:"",er:"",en:"",es:"",st:"",ig:"",ik:"",e:"",s:""};export const matcher={};export default{filter:filter,stemmer:stemmer,matcher:matcher};

1
dist/module-min/lang/cjk/default.js vendored Normal file
View File

@@ -0,0 +1 @@
import{IndexInterface}from"../../type.js";import{pipeline}from"../../lang.js";export const rtl=!1;export const tokenize="strict";export default{encode:encode,rtl:!1,tokenize:"strict"};const regex=/[\x00-\x7F]+/g;export function encode(a){return pipeline.call(this,(""+a).replace(regex,""),!1,"",!1)}

View File

@@ -0,0 +1 @@
import{IndexInterface}from"../../type.js";import{pipeline}from"../../lang.js";export const rtl=!1;export const tokenize="";export default{encode:encode,rtl:!1};const regex=/[\x00-\x7F]+/g,split=/\s+/;export function encode(a){return pipeline.call(this,(""+a).replace(regex," "),!1,split,!1)}

1
dist/module-min/lang/de.js vendored Normal file
View File

@@ -0,0 +1 @@
export const filter=["aber","als","am","an","auch","auf","aus","bei","bin","bis","bist","da","dadurch","daher","darum","das","da\xDF","dass","dein","deine","dem","den","der","des","dessen","deshalb","die","dies","dieser","dieses","doch","dort","du","durch","ein","eine","einem","einen","einer","eines","er","es","euer","eure","f\xFCr","hatte","hatten","hattest","hattet","hier","hinter","ich","ihr","ihre","im","in","ist","ja","jede","jedem","jeden","jeder","jedes","jener","jenes","jetzt","kann","kannst","k\xF6nnen","k\xF6nnt","machen","mein","meine","mit","mu\xDF","mu\xDFt","musst","m\xFCssen","m\xFC\xDFt","nach","nachdem","nein","nicht","nun","oder","seid","sein","seine","sich","sie","sind","soll","sollen","sollst","sollt","sonst","soweit","sowie","und","unser","unsere","unter","vom","von","vor","wann","warum","was","weiter","weitere","wenn","wer","werde","werden","werdet","weshalb","wie","wieder","wieso","wir","wird","wirst","wo","woher","wohin","zu","zum","zur","\xFCber"];export const stemmer={niss:"",isch:"",lich:"",heit:"",keit:"",ell:"",bar:"",end:"",ung:"",est:"",ern:"",em:"",er:"",en:"",es:"",st:"",ig:"",ik:"",e:"",s:""};export const matcher={};export default{filter:filter,stemmer:stemmer,matcher:matcher};

1
dist/module-min/lang/en.js vendored Normal file
View File

@@ -0,0 +1 @@
export const filter=["a","about","above","after","again","against","all","also","am","an","and","any","are","aren't","as","at","be","because","been","before","being","below","both","but","by","can","cannot","can't","come","could","couldn't","did","didn't","do","does","doesn't","doing","dont","down","during","each","even","few","first","for","from","further","get","go","had","hadn't","has","hasn't","have","haven't","having","he","hed","her","here","here's","hers","herself","hes","him","himself","his","how","how's","i","id","if","ill","im","in","into","is","isn't","it","it's","itself","i've","just","know","let's","like","make","me","more","most","mustn't","my","myself","new","no","nor","not","now","of","off","on","once","only","or","other","ought","our","our's","ourselves","out","over","own","same","say","see","shan't","she","she'd","shell","shes","should","shouldn't","so","some","such","than","that","that's","the","their","theirs","them","themselves","then","there","there's","these","they","they'd","they'll","they're","they've","this","those","through","time","to","too","until","up","us","very","want","was","wasn't","way","we","wed","well","were","weren't","we've","what","what's","when","when's","where","where's","which","while","who","whom","who's","why","why's","will","with","won't","would","wouldn't","you","you'd","you'll","your","you're","your's","yourself","yourselves","you've"];export const stemmer={ational:"ate",iveness:"ive",fulness:"ful",ousness:"ous",ization:"ize",tional:"tion",biliti:"ble",icate:"ic",ative:"",alize:"al",iciti:"ic",entli:"ent",ousli:"ous",alism:"al",ation:"ate",aliti:"al",iviti:"ive",ement:"",enci:"ence",anci:"ance",izer:"ize",alli:"al",ator:"ate",logi:"log",ical:"ic",ance:"",ence:"",ness:"",able:"",ible:"",ment:"",eli:"e",bli:"ble",ful:"",ant:"",ent:"",ism:"",ate:"",iti:"",ous:"",ive:"",ize:"",al:"",ou:"",er:"",ic:""};export const matcher={};export default{filter:filter,stemmer:stemmer,matcher:matcher};

View File

@@ -0,0 +1 @@
import{IndexInterface}from"../../type.js";import{regex,replace,collapse}from"../../lang.js";import{encode as encode_balance}from"./balance.js";export const rtl=!1;export const tokenize="";export default{encode:encode,rtl:!1,tokenize:""};const regex_ae=regex("ae"),regex_oe=regex("oe"),regex_sh=regex("sh"),regex_th=regex("th"),regex_ph=regex("ph"),regex_pf=regex("pf"),pairs=[regex_ae,"a",regex_oe,"o",regex_sh,"s",regex_th,"t",regex_ph,"f",regex_pf,"f",regex("(?![aeo])h(?![aeo])"),"",regex("(?!^[aeo])h(?!^[aeo])"),""];export function encode(a,b){return a&&(a=encode_balance.call(this,a).join(" "),2<a.length&&(a=replace(a,pairs)),!b&&(1<a.length&&(a=collapse(a)),a&&(a=a.split(" ")))),a||[]}

1
dist/module-min/lang/latin/balance.js vendored Normal file
View File

@@ -0,0 +1 @@
import{IndexInterface}from"../../type.js";import{encode as encode_simple}from"./simple.js";export const rtl=!1;export const tokenize="strict";export default{encode:encode,rtl:!1,tokenize:"strict"};const regex_strip=/[^a-z0-9]+/,soundex={b:"p",v:"f",w:"f",z:"s",x:"s",ß:"s",d:"t",n:"m",c:"k",g:"k",j:"k",q:"k",i:"e",y:"e",u:"o"};export function encode(a){a=encode_simple.call(this,a).join(" ");const b=[];if(a){const c=a.split(regex_strip),d=c.length;for(let e,f=0,g=0;f<d;f++)if((a=c[f])&&(!this.filter||!this.filter[a])){e=a[0];let c=soundex[e]||e,d=c;for(let b=1;b<a.length;b++){e=a[b];const f=soundex[e]||e;f&&f!==d&&(c+=f,d=f)}b[g++]=c}}return b}

1
dist/module-min/lang/latin/default.js vendored Normal file
View File

@@ -0,0 +1 @@
import{IndexInterface}from"../../type.js";import{pipeline,normalize,regex_whitespace}from"../../lang.js";export const rtl=!1;export const tokenize="";export default{encode:encode,rtl:!1,tokenize:""};export function encode(a){return pipeline.call(this,(""+a).toLowerCase(),!1,regex_whitespace,!1)}

1
dist/module-min/lang/latin/extra.js vendored Normal file
View File

@@ -0,0 +1 @@
import{IndexInterface}from"../../type.js";import{regex,replace,collapse}from"../../lang.js";import{encode as encode_advanced}from"./advanced.js";export const rtl=!1;export const tokenize="";export default{encode:encode,rtl:!1,tokenize:""};const prefix="(?!\\b)",regex_vowel=regex("(?!\\b)[aeo]"),pairs=[regex_vowel,""];export function encode(a){return a&&(a=encode_advanced.call(this,a,!0),1<a.length&&(a=a.replace(regex_vowel,"")),1<a.length&&(a=collapse(a)),a&&(a=a.split(" "))),a||[]}

1
dist/module-min/lang/latin/simple.js vendored Normal file
View File

@@ -0,0 +1 @@
import{IndexInterface}from"../../type.js";import{pipeline,normalize,regex_whitespace,regex}from"../../lang.js";export const rtl=!1;export const tokenize="";export default{encode:encode,rtl:!1,tokenize:""};const regex_a=regex("[\xE0\xE1\xE2\xE3\xE4\xE5]"),regex_e=regex("[\xE8\xE9\xEA\xEB]"),regex_i=regex("[\xEC\xED\xEE\xEF]"),regex_o=regex("[\xF2\xF3\xF4\xF5\xF6\u0151]"),regex_u=regex("[\xF9\xFA\xFB\xFC\u0171]"),regex_y=regex("[\xFD\u0177\xFF]"),regex_n=regex("\xF1"),regex_c=regex("[\xE7c]"),regex_s=regex("\xDF"),regex_and=regex(" & "),pairs=[regex_a,"a",regex_e,"e",regex_i,"i",regex_o,"o",regex_u,"u",regex_y,"y",regex_n,"n",regex_c,"k",regex_s,"s",regex_and," and "];export function encode(a){return a=""+a,pipeline.call(this,normalize(a).toLowerCase(),!a.normalize&&pairs,regex_whitespace,!1)}

1
dist/module-min/lang/us.js vendored Normal file
View File

@@ -0,0 +1 @@
export const filter=["a","about","above","after","again","against","all","also","am","an","and","any","are","aren't","as","at","be","because","been","before","being","below","both","but","by","can","cannot","can't","come","could","couldn't","did","didn't","do","does","doesn't","doing","dont","down","during","each","even","few","first","for","from","further","get","go","had","hadn't","has","hasn't","have","haven't","having","he","hed","her","here","here's","hers","herself","hes","him","himself","his","how","how's","i","id","if","ill","im","in","into","is","isn't","it","it's","itself","i've","just","know","let's","like","make","me","more","most","mustn't","my","myself","new","no","nor","not","now","of","off","on","once","only","or","other","ought","our","our's","ourselves","out","over","own","same","say","see","shan't","she","she'd","shell","shes","should","shouldn't","so","some","such","than","that","that's","the","their","theirs","them","themselves","then","there","there's","these","they","they'd","they'll","they're","they've","this","those","through","time","to","too","until","up","us","very","want","was","wasn't","way","we","wed","well","were","weren't","we've","what","what's","when","when's","where","where's","which","while","who","whom","who's","why","why's","will","with","won't","would","wouldn't","you","you'd","you'll","your","you're","your's","yourself","yourselves","you've"];export const stemmer={ational:"ate",iveness:"ive",fulness:"ful",ousness:"ous",ization:"ize",tional:"tion",biliti:"ble",icate:"ic",ative:"",alize:"al",iciti:"ic",entli:"ent",ousli:"ous",alism:"al",ation:"ate",aliti:"al",iviti:"ive",ement:"",enci:"ence",anci:"ance",izer:"ize",alli:"al",ator:"ate",logi:"log",ical:"ic",ance:"",ence:"",ness:"",able:"",ible:"",ment:"",eli:"e",bli:"ble",ful:"",ant:"",ent:"",ism:"",ate:"",iti:"",ous:"",ive:"",ize:"",al:"",ou:"",er:"",ic:""};export const matcher={};export default{filter:filter,stemmer:stemmer,matcher:matcher};

1
dist/module-min/polyfill.js vendored Normal file
View File

@@ -0,0 +1 @@
export let promise=Promise;if(Object.assign||(Object.assign=function(){const a=arguments,b=a.length,c=a[0];for(let d,e,f,g=1;g<b;g++){d=a[g],e=Object.keys(d),f=e.length;for(let a,b=0;b<f;b++)a=e[b],c[a]=d[a]}return c}),!promise){function a(a){this.callback=null;const b=this;a(function(a){b.callback&&b.callback(a)})}a.prototype.then=function(a){this.callback=a},promise=a}

1
dist/module-min/preset.js vendored Normal file
View File

@@ -0,0 +1 @@
import{is_string}from"./common.js";const preset={memory:{charset:"latin:extra",resolution:3,minlength:4,fastupdate:!1},performance:{resolution:3,minlength:3,optimize:!1,context:{depth:2,resolution:1}},match:{charset:"latin:extra",tokenize:"reverse"},score:{charset:"latin:advanced",resolution:20,minlength:3,context:{depth:3,resolution:9}},default:{}};export default function apply_preset(a){if(is_string(a))!1,a=preset[a];else{const b=a.preset;b&&(!1,a=Object.assign({},b[b],a))}return a}

1
dist/module-min/serialize.js vendored Normal file
View File

@@ -0,0 +1 @@
import{IndexInterface,DocumentInterface}from"./type.js";import{create_object,is_string}from"./common.js";function async(a,b,c,d,e,f,g,h){setTimeout(function(){const i=a(c?c+"."+d:d,JSON.stringify(g));i&&i.then?i.then(function(){b.export(a,b,c,e,f+1,h)}):b.export(a,b,c,e,f+1,h)})}export function exportIndex(a,b,c,d,e,f){let g=!0;"undefined"==typeof f&&(g=new Promise(a=>{f=a}));let h,i;switch(e||(e=0)){case 0:if(h="reg",this.fastupdate)for(let a in i=create_object(),this.register)i[a]=1;else i=this.register;break;case 1:h="cfg",i={doc:0,opt:this.optimize?1:0};break;case 2:h="map",i=this.map;break;case 3:h="ctx",i=this.ctx;break;default:return void("undefined"==typeof c&&f&&f());}return async(a,b||this,c,h,d,e,i,f),g}export function importIndex(a,b){b&&(is_string(b)&&(b=JSON.parse(b)),"cfg"===a?this.optimize=!!b.opt:"reg"===a?(this.fastupdate=!1,this.register=b):"map"===a?this.map=b:"ctx"===a?this.ctx=b:void 0)}export function exportDocument(a,b,c,d,e,f){let g;if("undefined"==typeof f&&(g=new Promise(a=>{f=a})),e||(e=0),d||(d=0),d<this.field.length){const c=this.field[d],g=this.index[c];b=this,setTimeout(function(){g.export(a,b,e?c:"",d,e++,f)||(d++,e=1,b.export(a,b,c,d,e,f))})}else{let b,g;switch(e){case 1:b="tag",g=this.tagindex,c=null;break;case 2:b="store",g=this.store,c=null;break;default:return void f();}async(a,this,c,b,d,e,g,f)}return g}export function importDocument(a,b){if(b)switch(is_string(b)&&(b=JSON.parse(b)),a){case"tag":this.tagindex=b;break;case"reg":this.fastupdate=!1,this.register=b;for(let a,c=0;c<this.field.length;c++)a=this.index[this.field[c]],a.register=b,a.fastupdate=!1;break;case"store":this.store=b;break;default:a=a.split(".");const c=a[0];a=a[1],c&&a&&this.index[c].import(a,b);}}

1
dist/module-min/type.js vendored Normal file
View File

@@ -0,0 +1 @@
export function IndexInterface(){this.cache=null,this.matcher=null,this.stemmer=null,this.filter=null}IndexInterface.prototype.add,IndexInterface.prototype.append,IndexInterface.prototype.search,IndexInterface.prototype.update,IndexInterface.prototype.remove;export function DocumentInterface(){this.field=null,this.index=null}

1
dist/module-min/worker/handler.js vendored Normal file
View File

@@ -0,0 +1 @@
import Index from"../index.js";export default function(a){a=a.data;const b=self._index,c=a.args,d=a.task;switch(d){case"init":const e=a.options||{},f=a.factory,g=e.encode;e.cache=!1,g&&0===g.indexOf("function")&&(e.encode=Function("return "+g)()),f?(Function("return "+f)()(self),self._index=new self.FlexSearch.Index(e),delete self.FlexSearch):self._index=new Index(e);break;default:const h=a.id,i=b[d].apply(b,c);postMessage("search"===d?{id:h,msg:i}:{id:h});}}

1
dist/module-min/worker/index.js vendored Normal file
View File

@@ -0,0 +1 @@
import{create_object,is_function,is_object,is_string}from"../common.js";import handler from"./handler.js";let pid=0;function WorkerIndex(a){if(!(this instanceof WorkerIndex))return new WorkerIndex(a);let b;a?is_function(b=a.encode)&&(a.encode=b.toString()):a={};let c=(self||window)._factory;c&&(c=c.toString());const d="undefined"==typeof window&&self.exports,e=this;this.worker=create(c,d,a.worker),this.resolver=create_object();this.worker&&(d?this.worker.on("message",function(a){e.resolver[a.id](a.msg),delete e.resolver[a.id]}):this.worker.onmessage=function(a){a=a.data,e.resolver[a.id](a.msg),delete e.resolver[a.id]},this.worker.postMessage({task:"init",factory:c,options:a}))}export default WorkerIndex;register("add"),register("append"),register("search"),register("update"),register("remove");function register(a){WorkerIndex.prototype[a]=WorkerIndex.prototype[a+"Async"]=function(){const b=this,c=[].slice.call(arguments),d=c[c.length-1];let e;is_function(d)&&(e=d,c.splice(c.length-1,1));const f=new Promise(function(d){setTimeout(function(){b.resolver[++pid]=d,b.worker.postMessage({task:a,id:pid,args:c})})});return e?(f.then(e),this):f}}function create(factory,is_node_js,worker_path){let worker;try{worker=is_node_js?eval("new (require(\"worker_threads\")[\"Worker\"])(\"../dist/node/node.js\")"):factory?new Worker(URL.createObjectURL(new Blob(["onmessage="+handler.toString()],{type:"text/javascript"}))):new Worker(is_string(worker_path)?worker_path:"worker/worker.js",{type:"module"})}catch(a){}return worker}

1
dist/module-min/worker/node.js vendored Normal file
View File

@@ -0,0 +1 @@
const{parentPort}=require("worker_threads"),{Index}=require("../flexsearch.bundle.min.js");let index;parentPort.on("message",function(a){const b=a.args,c=a.task,d=a.id;switch(c){case"init":const e=a.options||{},f=e.encode;e.cache=!1,f&&0===f.indexOf("function")&&(e.encode=new Function("return "+f)()),index=new Index(e);break;default:const g=index[c].apply(index,b);parentPort.postMessage("search"===c?{id:d,msg:g}:{id:d});}});

1
dist/module-min/worker/worker.js vendored Normal file
View File

@@ -0,0 +1 @@
import handler from"./handler.js";onmessage=handler;

52
dist/module/async.js vendored
View File

@@ -1 +1,51 @@
import{IndexInterface,DocumentInterface}from"./type.js";import{is_function,is_object,is_string}from"./common.js";export default function(a){register(a,"add"),register(a,"append"),register(a,"search"),register(a,"update"),register(a,"remove")}function register(a,b){a[b+"Async"]=function(){const a=this,c=arguments,d=c[c.length-1];let e;is_function(d)&&(e=d,delete c[c.length-1]);const f=new Promise(function(d){setTimeout(function(){a.async=!0;const e=a[b].apply(a,c);a.async=!1,d(e)})});return e?(f.then(e),this):f}}
import { IndexInterface, DocumentInterface } from "./type.js";
//import { promise as Promise } from "./polyfill.js";
import { is_function, is_object, is_string } from "./common.js";
export default function (prototype) {
register(prototype, "add");
register(prototype, "append");
register(prototype, "search");
register(prototype, "update");
register(prototype, "remove");
}
function register(prototype, key) {
prototype[key + "Async"] = function () {
/** @type {IndexInterface|DocumentInterface} */
const self = this,
args = /*[].slice.call*/arguments,
arg = args[args.length - 1];
let callback;
if (is_function(arg)) {
callback = arg;
delete args[args.length - 1];
}
const promise = new Promise(function (resolve) {
setTimeout(function () {
self.async = !0;
const res = self[key].apply(self, args);
self.async = !1;
resolve(res);
});
});
if (callback) {
promise.then(callback);
return this;
} else {
return promise;
}
};
}

169
dist/module/cache.js vendored
View File

@@ -1 +1,168 @@
import{IndexInterface,DocumentInterface}from"./type.js";import{create_object,is_object}from"./common.js";function CacheClass(a){this.limit=!0!==a&&a,this.cache=create_object(),this.queue=[]}export default CacheClass;export function searchCache(a,b,c){is_object(a)&&(a=a.query);let d=this.cache.get(a);return d||(d=this.search(a,b,c),this.cache.set(a,d)),d}CacheClass.prototype.set=function(a,b){if(!this.cache[a]){let b=this.queue.length;b===this.limit?delete this.cache[this.queue[b-1]]:b++;for(let a=b-1;0<a;a--)this.queue[a]=this.queue[a-1];this.queue[0]=a}this.cache[a]=b},CacheClass.prototype.get=function(a){const b=this.cache[a];if(this.limit&&b){const b=this.queue.indexOf(a);if(b){const a=this.queue[b-1];this.queue[b-1]=this.queue[b],this.queue[b]=a}}return b},CacheClass.prototype.del=function(a){for(let b,c,d=0;d<this.queue.length;d++)c=this.queue[d],b=this.cache[c],b.includes(a)&&(this.queue.splice(d--,1),delete this.cache[c])};
import { IndexInterface, DocumentInterface } from "./type.js";
import { create_object, is_object } from "./common.js";
/**
* @param {boolean|number=} limit
* @constructor
*/
function CacheClass(limit) {
/** @private */
this.limit = !0 !== limit && limit;
/** @private */
this.cache = create_object();
/** @private */
this.queue = [];
//this.clear();
}
export default CacheClass;
/**
* @param {string|Object} query
* @param {number|Object=} limit
* @param {Object=} options
* @this {IndexInterface}
* @returns {Array<number|string>}
*/
export function searchCache(query, limit, options) {
if (is_object(query)) {
query = query.query;
}
let cache = this.cache.get(query);
if (!cache) {
cache = this.search(query, limit, options);
this.cache.set(query, cache);
}
return cache;
}
// CacheClass.prototype.clear = function(){
//
// /** @private */
// this.cache = create_object();
//
// /** @private */
// this.queue = [];
// };
CacheClass.prototype.set = function (key, value) {
if (!this.cache[key]) {
// it is just a shame that native function array.shift() performs so bad
// const length = this.queue.length;
//
// this.queue[length] = key;
//
// if(length === this.limit){
//
// delete this.cache[this.queue.shift()];
// }
// the same bad performance
// this.queue.unshift(key);
//
// if(this.queue.length === this.limit){
//
// this.queue.pop();
// }
// fast implementation variant
// let length = this.queue.length;
//
// if(length === this.limit){
//
// length--;
//
// delete this.cache[this.queue[0]];
//
// for(let x = 0; x < length; x++){
//
// this.queue[x] = this.queue[x + 1];
// }
// }
//
// this.queue[length] = key;
// current fastest implementation variant
// theoretically that should not perform better compared to the example above
let length = this.queue.length;
if (length === this.limit) {
delete this.cache[this.queue[length - 1]];
} else {
length++;
}
for (let x = length - 1; 0 < x; x--) {
this.queue[x] = this.queue[x - 1];
}
this.queue[0] = key;
}
this.cache[key] = value;
};
CacheClass.prototype.get = function (key) {
const cache = this.cache[key];
if (this.limit && cache) {
// probably the indexOf() method performs faster when matched content is on front (left-to-right)
// using lastIndexOf() does not help, it performs almost slower
const pos = this.queue.indexOf(key);
// if(pos < this.queue.length - 1){
//
// const tmp = this.queue[pos];
// this.queue[pos] = this.queue[pos + 1];
// this.queue[pos + 1] = tmp;
// }
if (pos) {
const tmp = this.queue[pos - 1];
this.queue[pos - 1] = this.queue[pos];
this.queue[pos] = tmp;
}
}
return cache;
};
CacheClass.prototype.del = function (id) {
for (let i = 0, item, key; i < this.queue.length; i++) {
key = this.queue[i];
item = this.cache[key];
if (item.includes(id)) {
this.queue.splice(i--, 1);
delete this.cache[key];
}
}
};

79
dist/module/common.js vendored
View File

@@ -1 +1,78 @@
export function parse_option(a,b){return"undefined"==typeof a?b:a}export function create_object_array(a){const b=Array(a);for(let c=0;c<a;c++)b[c]=create_object();return b}export function create_arrays(a){const b=Array(a);for(let c=0;c<a;c++)b[c]=[];return b}export function get_keys(a){return Object.keys(a)}export function create_object(){return Object.create(null)}export function concat(a){return[].concat.apply([],a)}export function sort_by_length_down(c,a){return a.length-c.length}export function is_array(a){return a.constructor===Array}export function is_string(a){return"string"==typeof a}export function is_object(a){return"object"==typeof a}export function is_function(a){return"function"==typeof a}
export function parse_option(value, default_value) {
return "undefined" != typeof value ? value : default_value;
}
/**
* @param {!number} count
* @returns {Array<Object>}
*/
export function create_object_array(count) {
const array = Array(count);
for (let i = 0; i < count; i++) {
array[i] = create_object();
}
return array;
}
export function create_arrays(count) {
const array = Array(count);
for (let i = 0; i < count; i++) {
array[i] = [];
}
return array;
}
/**
* @param {!Object} obj
* @returns {Array<string>}
*/
export function get_keys(obj) {
return Object.keys(obj);
}
export function create_object() {
return Object.create(null);
}
export function concat(arrays) {
return [].concat.apply([], arrays);
}
export function sort_by_length_down(a, b) {
return b.length - a.length;
}
export function is_array(val) {
return val.constructor === Array;
}
export function is_string(val) {
return "string" == typeof val;
}
export function is_object(val) {
return "object" == typeof val;
}
export function is_function(val) {
return "function" == typeof val;
}

View File

@@ -1 +0,0 @@
export const DEBUG=!1;export const POLYFILL=!0;export const SUPPORT_WORKER=!0;export const SUPPORT_ENCODER=!0;export const SUPPORT_CACHE=!0;export const SUPPORT_ASYNC=!0;export const SUPPORT_STORE=!0;export const SUPPORT_TAGS=!0;export const SUPPORT_SUGGESTION=!0;export const SUPPORT_SERIALIZE=!0;export const SUPPORT_DOCUMENT=!0;

File diff suppressed because one or more lines are too long

29
dist/module/engine.js vendored
View File

@@ -1 +1,28 @@
import{DEBUG,SUPPORT_ASYNC,SUPPORT_CACHE}from"./config";import{searchCache}from"./cache";function Engine(a){if(DEBUG&&this instanceof Engine)throw new Error("Can't instantiate abstract class!");SUPPORT_CACHE&&(a.prototype.searchCache=searchCache),SUPPORT_ASYNC&&(a.prototype.addAsync=addAsync,a.prototype.appendAsync=appendAsync,a.prototype.searchAsync=searchAsync,a.prototype.updateAsync=updateAsync,a.prototype.removeAsync=removeAsync)}SUPPORT_CACHE&&(Engine.prototype.searchCache=searchCache),SUPPORT_ASYNC&&(Engine.prototype.addAsync=addAsync,Engine.prototype.appendAsync=appendAsync,Engine.prototype.searchAsync=searchAsync,Engine.prototype.updateAsync=updateAsync,Engine.prototype.removeAsync=removeAsync);
import { searchCache } from "./cache";
/**
* @constructor
* @abstract
*/
function Engine(index) {
index.prototype.searchCache = searchCache;
index.prototype.addAsync = addAsync;
index.prototype.appendAsync = appendAsync;
index.prototype.searchAsync = searchAsync;
index.prototype.updateAsync = updateAsync;
index.prototype.removeAsync = removeAsync;
}
Engine.prototype.searchCache = searchCache;
Engine.prototype.addAsync = addAsync;
Engine.prototype.appendAsync = appendAsync;
Engine.prototype.searchAsync = searchAsync;
Engine.prototype.updateAsync = updateAsync;
Engine.prototype.removeAsync = removeAsync;

23
dist/module/global.js vendored
View File

@@ -1 +1,22 @@
export const global_lang={};export const global_charset={};export function registerCharset(a,b){global_charset[a]=b}export function registerLanguage(a,b){global_lang[a]=b}
export const global_lang = {};
export const global_charset = {};
/**
* @param {!string} name
* @param {Object} charset
*/
export function registerCharset(name, charset) {
global_charset[name] = charset;
}
/**
* @param {!string} name
* @param {Object} lang
*/
export function registerLanguage(name, lang) {
global_lang[name] = lang;
}

785
dist/module/index.js vendored

File diff suppressed because one or more lines are too long

View File

@@ -1 +1,394 @@
import{create_object,concat}from"./common.js";export function intersect(a,b,c,d){const e=a.length;let f,g,h=[],i=0;d&&(d=[]);for(let j=e-1;0<=j;j--){const k=a[j],l=k.length,m=create_object();let n=!f;for(let a=0;a<l;a++){const l=k[a],o=l.length;if(o)for(let a,k,p=0;p<o;p++)if(k=l[p],f){if(f[k]){if(!j)if(c)c--;else if(h[i++]=k,i===b)return h;(j||d)&&(m[k]=1),n=!0}if(d&&(a=(g[k]||0)+1,g[k]=a,a<e)){const b=d[a-2]||(d[a-2]=[]);b[b.length]=k}}else m[k]=1}if(d)f||(g=m);else if(!n)return[];f=m}if(d)for(let a,e,g=d.length-1;0<=g;g--){a=d[g],e=a.length;for(let d,g=0;g<e;g++)if(d=a[g],!f[d]){if(c)c--;else if(h[i++]=d,i===b)return h;f[d]=1}}return h}export function intersect_union(a,b){const c=create_object(),d=create_object(),e=[];for(let d=0;d<a.length;d++)c[a[d]]=1;for(let f,g=0;g<b.length;g++){f=b[g];for(let a,b=0;b<f.length;b++)a=f[b],c[a]&&!d[a]&&(d[a]=1,e[e.length]=a)}return e}
import { create_object, concat } from "./common.js";
/**
* Implementation based on Array.includes() provides better performance,
* but it needs at least one word in the query which is less frequent.
* Also on large indexes it does not scale well performance-wise.
* This strategy also lacks of suggestion capabilities (matching & sorting).
*
* @param arrays
* @param limit
* @param offset
* @param {boolean|Array=} suggest
* @returns {Array}
*/
// export function intersect(arrays, limit, offset, suggest) {
//
// const length = arrays.length;
// let result = [];
// let check;
//
// // determine shortest array and collect results
// // from the sparse relevance arrays
//
// let smallest_size;
// let smallest_arr;
// let smallest_index;
//
// for(let x = 0; x < length; x++){
//
// const arr = arrays[x];
// const len = arr.length;
//
// let size = 0;
//
// for(let y = 0, tmp; y < len; y++){
//
// tmp = arr[y];
//
// if(tmp){
//
// size += tmp.length;
// }
// }
//
// if(!smallest_size || (size < smallest_size)){
//
// smallest_size = size;
// smallest_arr = arr;
// smallest_index = x;
// }
// }
//
// smallest_arr = smallest_arr.length === 1 ?
//
// smallest_arr[0]
// :
// concat(smallest_arr);
//
// if(suggest){
//
// suggest = [smallest_arr];
// check = create_object();
// }
//
// let size = 0;
// let steps = 0;
//
// // process terms in reversed order often results in better performance.
// // the outer loop must be the words array, using the
// // smallest array here disables the "fast fail" optimization.
//
// for(let x = length - 1; x >= 0; x--){
//
// if(x !== smallest_index){
//
// steps++;
//
// const word_arr = arrays[x];
// const word_arr_len = word_arr.length;
// const new_arr = [];
//
// let count = 0;
//
// for(let z = 0, id; z < smallest_arr.length; z++){
//
// id = smallest_arr[z];
//
// let found;
//
// // process relevance in forward order (direction is
// // important for adding IDs during the last round)
//
// for(let y = 0; y < word_arr_len; y++){
//
// const arr = word_arr[y];
//
// if(arr.length){
//
// found = arr.includes(id);
//
// if(found){
//
// // check if in last round
//
// if(steps === length - 1){
//
// if(offset){
//
// offset--;
// }
// else{
//
// result[size++] = id;
//
// if(size === limit){
//
// // fast path "end reached"
//
// return result;
// }
// }
//
// if(suggest){
//
// check[id] = 1;
// }
// }
//
// break;
// }
// }
// }
//
// if(found){
//
// new_arr[count++] = id;
// }
// }
//
// if(suggest){
//
// suggest[steps] = new_arr;
// }
// else if(!count){
//
// return [];
// }
//
// smallest_arr = new_arr;
// }
// }
//
// if(suggest){
//
// // needs to iterate in reverse direction
//
// for(let x = suggest.length - 1, arr, len; x >= 0; x--){
//
// arr = suggest[x];
// len = arr && arr.length;
//
// if(len){
//
// for(let y = 0, id; y < len; y++){
//
// id = arr[y];
//
// if(!check[id]){
//
// check[id] = 1;
//
// if(offset){
//
// offset--;
// }
// else{
//
// result[size++] = id;
//
// if(size === limit){
//
// // fast path "end reached"
//
// return result;
// }
// }
// }
// }
// }
// }
// }
//
// return result;
// }
/**
* Implementation based on Object[key] provides better suggestions
* capabilities and has less performance scaling issues on large indexes.
*
* @param arrays
* @param limit
* @param offset
* @param {boolean|Array=} suggest
* @returns {Array}
*/
export function intersect(arrays, limit, offset, suggest) {
const length = arrays.length;
let result = [],
check,
check_suggest,
size = 0;
if (suggest) {
suggest = [];
}
// process terms in reversed order often has advantage for the fast path "end reached".
// also a reversed order prioritize the order of words from a query.
for (let x = length - 1; 0 <= x; x--) {
const word_arr = arrays[x],
word_arr_len = word_arr.length,
check_new = create_object();
let found = !check;
// process relevance in forward order (direction is
// important for adding IDs during the last round)
for (let y = 0; y < word_arr_len; y++) {
const arr = word_arr[y],
arr_len = arr.length;
if (arr_len) {
// loop through IDs
for (let z = 0, check_idx, id; z < arr_len; z++) {
id = arr[z];
if (check) {
if (check[id]) {
// check if in last round
if (!x) {
if (offset) {
offset--;
} else {
result[size++] = id;
if (size === limit) {
// fast path "end reached"
return result;
}
}
}
if (x || suggest) {
check_new[id] = 1;
}
found = /* append: */ /* skip update: */ /* skip_update: */!0;
}
if (suggest) {
check_idx = (check_suggest[id] || 0) + 1;
check_suggest[id] = check_idx;
// do not adding IDs which are already included in the result (saves one loop)
// the first intersection match has the check index 2, so shift by -2
if (check_idx < length) {
const tmp = suggest[check_idx - 2] || (suggest[check_idx - 2] = []);
tmp[tmp.length] = id;
}
}
} else {
// pre-fill in first round
check_new[id] = 1;
}
}
}
}
if (suggest) {
// re-use the first pre-filled check for suggestions
check || (check_suggest = check_new);
} else if (!found) {
return [];
}
check = check_new;
}
if (suggest) {
// needs to iterate in reverse direction
for (let x = suggest.length - 1, arr, len; 0 <= x; x--) {
arr = suggest[x];
len = arr.length;
for (let y = 0, id; y < len; y++) {
id = arr[y];
if (!check[id]) {
if (offset) {
offset--;
} else {
result[size++] = id;
if (size === limit) {
// fast path "end reached"
return result;
}
}
check[id] = 1;
}
}
}
}
return result;
}
/**
* @param mandatory
* @param arrays
* @returns {Array}
*/
export function intersect_union(mandatory, arrays) {
const check = create_object(),
union = create_object(),
result = [];
for (let x = 0; x < mandatory.length; x++) {
check[mandatory[x]] = 1;
}
for (let x = 0, arr; x < arrays.length; x++) {
arr = arrays[x];
for (let y = 0, id; y < arr.length; y++) {
id = arr[y];
if (check[id]) {
if (!union[id]) {
union[id] = 1;
result[result.length] = id;
}
}
}
}
return result;
}

322
dist/module/lang.js vendored
View File

@@ -1 +1,321 @@
import{IndexInterface}from"./type.js";import{create_object,get_keys}from"./common.js";export function pipeline(a,b,c,d){if(a&&(b&&(a=replace(a,b)),this.matcher&&(a=replace(a,this.matcher)),this.stemmer&&1<a.length&&(a=replace(a,this.stemmer)),d&&1<a.length&&(a=collapse(a)),c||""===c)){const b=a.split(c);return this.filter?filter(b,this.filter):b}return a}export const regex_whitespace=/[\p{Z}\p{S}\p{P}\p{C}]+/u;const regex_normalize=/[\u0300-\u036f]/g;export function normalize(a){return a.normalize&&(a=a.normalize("NFD").replace(regex_normalize,"")),a}export function init_filter(a){const b=create_object();for(let c=0,d=a.length;c<d;c++)b[a[c]]=1;return b}export function init_stemmer_or_matcher(a,b){const c=get_keys(a),d=c.length,e=[];let f="",g=0;for(let h,j,k=0;k<d;k++)h=c[k],j=a[h],j?(e[g++]=regex(b?"(?!\\b)"+h+"(\\b|_)":h),e[g++]=j):f+=(f?"|":"")+h;return f&&(e[g++]=regex(b?"(?!\\b)("+f+")(\\b|_)":"("+f+")"),e[g]=""),e}export function replace(a,b){for(let c=0,d=b.length;c<d&&(a=a.replace(b[c],b[c+1]),!!a);c+=2);return a}export function regex(a){return new RegExp(a,"g")}export function collapse(a){let b="",c="";for(let d,e=0,f=a.length;e<f;e++)(d=a[e])!==c&&(b+=c=d);return b}export function filter(a,b){const c=a.length,d=[];for(let e=0,f=0;e<c;e++){const c=a[e];c&&!b[c]&&(d[f++]=c)}return d}
import { IndexInterface } from "./type.js";
import { create_object, get_keys } from "./common.js";
/**
* @param {!string} str
* @param {boolean|Array<string|RegExp>=} normalize
* @param {boolean|string|RegExp=} split
* @param {boolean=} _collapse
* @returns {string|Array<string>}
* @this IndexInterface
*/
export function pipeline(str, normalize, split, _collapse) {
if (str) {
if (normalize) {
str = replace(str, /** @type {Array<string|RegExp>} */normalize);
}
if (this.matcher) {
str = replace(str, this.matcher);
}
if (this.stemmer && 1 < str.length) {
str = replace(str, this.stemmer);
}
if (_collapse && 1 < str.length) {
str = collapse(str);
}
if (split || "" === split) {
const words = str.split( /** @type {string|RegExp} */split);
return this.filter ? filter(words, this.filter) : words;
}
}
return str;
}
// TODO improve normalize + remove non-delimited chars like in "I'm" + split on whitespace+
export const regex_whitespace = /[\p{Z}\p{S}\p{P}\p{C}]+/u;
// https://github.com/nextapps-de/flexsearch/pull/414
//export const regex_whitespace = /[\s\xA0\u2000-\u200B\u2028\u2029\u3000\ufeff!"#$%&'()*+,\-./:;<=>?@[\\\]^_`{|}~]/
const regex_normalize = /[\u0300-\u036f]/g;
export function normalize(str) {
if (str.normalize) {
str = str.normalize("NFD").replace(regex_normalize, "");
}
return str;
}
/**
* @param {!string} str
* @param {boolean|Array<string|RegExp>=} normalize
* @param {boolean|string|RegExp=} split
* @param {boolean=} _collapse
* @returns {string|Array<string>}
*/
// FlexSearch.prototype.pipeline = function(str, normalize, split, _collapse){
//
// if(str){
//
// if(normalize && str){
//
// str = replace(str, /** @type {Array<string|RegExp>} */ (normalize));
// }
//
// if(str && this.matcher){
//
// str = replace(str, this.matcher);
// }
//
// if(this.stemmer && str.length > 1){
//
// str = replace(str, this.stemmer);
// }
//
// if(_collapse && str.length > 1){
//
// str = collapse(str);
// }
//
// if(str){
//
// if(split || (split === "")){
//
// const words = str.split(/** @type {string|RegExp} */ (split));
//
// return this.filter ? filter(words, this.filter) : words;
// }
// }
// }
//
// return str;
// };
// export function pipeline(str, normalize, matcher, stemmer, split, _filter, _collapse){
//
// if(str){
//
// if(normalize && str){
//
// str = replace(str, normalize);
// }
//
// if(matcher && str){
//
// str = replace(str, matcher);
// }
//
// if(stemmer && str.length > 1){
//
// str = replace(str, stemmer);
// }
//
// if(_collapse && str.length > 1){
//
// str = collapse(str);
// }
//
// if(str){
//
// if(split !== false){
//
// str = str.split(split);
//
// if(_filter){
//
// str = filter(str, _filter);
// }
// }
// }
// }
//
// return str;
// }
/**
* @param {Array<string>} words
* @returns {Object<string, string>}
*/
export function init_filter(words) {
const filter = create_object();
for (let i = 0, length = words.length; i < length; i++) {
filter[words[i]] = 1;
}
return filter;
}
/**
* @param {!Object<string, string>} obj
* @param {boolean} is_stemmer
* @returns {Array}
*/
export function init_stemmer_or_matcher(obj, is_stemmer) {
const keys = get_keys(obj),
length = keys.length,
final = [];
let removal = "",
count = 0;
for (let i = 0, key, tmp; i < length; i++) {
key = keys[i];
tmp = obj[key];
if (tmp) {
final[count++] = regex(is_stemmer ? "(?!\\b)" + key + "(\\b|_)" : key);
final[count++] = tmp;
} else {
removal += (removal ? "|" : "") + key;
}
}
if (removal) {
final[count++] = regex(is_stemmer ? "(?!\\b)(" + removal + ")(\\b|_)" : "(" + removal + ")");
final[count] = "";
}
return final;
}
/**
* @param {!string} str
* @param {Array} regexp
* @returns {string}
*/
export function replace(str, regexp) {
for (let i = 0, len = regexp.length; i < len; i += 2) {
str = str.replace(regexp[i], regexp[i + 1]);
if (!str) {
break;
}
}
return str;
}
/**
* @param {!string} str
* @returns {RegExp}
*/
export function regex(str) {
return new RegExp(str, "g");
}
/**
* Regex: replace(/(?:(\w)(?:\1)*)/g, "$1")
* @param {!string} string
* @returns {string}
*/
export function collapse(string) {
let final = "",
prev = "";
for (let i = 0, len = string.length, char; i < len; i++) {
if ((char = string[i]) !== prev) {
final += prev = char;
}
}
return final;
}
// TODO using fast-swap
export function filter(words, map) {
const length = words.length,
filtered = [];
for (let i = 0, count = 0; i < length; i++) {
const word = words[i];
if (word && !map[word]) {
filtered[count++] = word;
}
}
return filtered;
}
// const chars = {a:1, e:1, i:1, o:1, u:1, y:1};
//
// function collapse_repeating_chars(string){
//
// let collapsed_string = "",
// char_prev = "",
// char_next = "";
//
// for(let i = 0; i < string.length; i++){
//
// const char = string[i];
//
// if(char !== char_prev){
//
// if(i && (char === "h")){
//
// if((chars[char_prev] && chars[char_next]) || (char_prev === " ")){
//
// collapsed_string += char;
// }
// }
// else{
//
// collapsed_string += char;
// }
// }
//
// char_next = (
//
// (i === (string.length - 1)) ?
//
// ""
// :
// string[i + 1]
// );
//
// char_prev = char;
// }
//
// return collapsed_string;
// }

View File

@@ -1 +1,27 @@
import{IndexInterface}from"../../type.js";import{pipeline}from"../../lang.js";export const rtl=!0;export const tokenize="";export default{encode:encode,rtl:!0};const regex=/[\x00-\x7F]+/g,split=/\s+/;export function encode(a){return pipeline.call(this,(""+a).replace(regex," "),!1,split,!1)}
import { IndexInterface } from "../../type.js";
import { pipeline } from "../../lang.js";
export const rtl = /* append: */ /* skip update: */ /* skip_update: */!0;
export const tokenize = "";
export default {
encode: encode,
rtl: !0
};
const regex = /[\x00-\x7F]+/g,
split = /\s+/;
/**
* @param {string|number} str
* @this IndexInterface
*/
export function encode(str) {
return pipeline.call(this,
/* string: */("" + str).replace(regex, " "),
/* normalize: */
/* collapse: */!1,
/* split: */split, !1);
}

View File

@@ -1 +1,41 @@
export const filter=["aber","als","am","an","auch","auf","aus","bei","bin","bis","bist","da","dadurch","daher","darum","das","da\xDF","dass","dein","deine","dem","den","der","des","dessen","deshalb","die","dies","dieser","dieses","doch","dort","du","durch","ein","eine","einem","einen","einer","eines","er","es","euer","eure","f\xFCr","hatte","hatten","hattest","hattet","hier","hinter","ich","ihr","ihre","im","in","ist","ja","jede","jedem","jeden","jeder","jedes","jener","jenes","jetzt","kann","kannst","k\xF6nnen","k\xF6nnt","machen","mein","meine","mit","mu\xDF","mu\xDFt","musst","m\xFCssen","m\xFC\xDFt","nach","nachdem","nein","nicht","nun","oder","seid","sein","seine","sich","sie","sind","soll","sollen","sollst","sollt","sonst","soweit","sowie","und","unser","unsere","unter","vom","von","vor","wann","warum","was","weiter","weitere","wenn","wer","werde","werden","werdet","weshalb","wie","wieder","wieso","wir","wird","wirst","wo","woher","wohin","zu","zum","zur","\xFCber"];export const stemmer={niss:"",isch:"",lich:"",heit:"",keit:"",end:"",ung:"",est:"",ern:"",em:"",er:"",en:"",es:"",st:"",ig:"",ik:"",e:"",s:""};export const matcher={};export default{filter:filter,stemmer:stemmer,matcher:matcher};
/**
* http://www.ranks.nl/stopwords
* @type {Array<string>}
*/
export const filter = ["aber", "als", "am", "an", "auch", "auf", "aus", "bei", "bin", "bis", "bist", "da", "dadurch", "daher", "darum", "das", "daß", "dass", "dein", "deine", "dem", "den", "der", "des", "dessen", "deshalb", "die", "dies", "dieser", "dieses", "doch", "dort", "du", "durch", "ein", "eine", "einem", "einen", "einer", "eines", "er", "es", "euer", "eure", "für", "hatte", "hatten", "hattest", "hattet", "hier", "hinter", "ich", "ihr", "ihre", "im", "in", "ist", "ja", "jede", "jedem", "jeden", "jeder", "jedes", "jener", "jenes", "jetzt", "kann", "kannst", "können", "könnt", "machen", "mein", "meine", "mit", "muß", "mußt", "musst", "müssen", "müßt", "nach", "nachdem", "nein", "nicht", "nun", "oder", "seid", "sein", "seine", "sich", "sie", "sind", "soll", "sollen", "sollst", "sollt", "sonst", "soweit", "sowie", "und", "unser", "unsere", "unter", "vom", "von", "vor", "wann", "warum", "was", "weiter", "weitere", "wenn", "wer", "werde", "werden", "werdet", "weshalb", "wie", "wieder", "wieso", "wir", "wird", "wirst", "wo", "woher", "wohin", "zu", "zum", "zur", "über"];
/**
* @type {Object<string, string>}
*/
export const stemmer = {
niss: "",
isch: "",
lich: "",
heit: "",
keit: "",
end: "",
ung: "",
est: "",
ern: "",
em: "",
er: "",
en: "",
es: "",
st: "",
ig: "",
ik: "",
e: "",
s: ""
};
export const matcher = {};
export default {
filter: filter,
stemmer: stemmer,
matcher: matcher
};

View File

@@ -1 +1,26 @@
import{IndexInterface}from"../../type.js";import{pipeline}from"../../lang.js";export const rtl=!1;export const tokenize="strict";export default{encode:encode,rtl:!1,tokenize:"strict"};const regex=/[\x00-\x7F]+/g;export function encode(a){return pipeline.call(this,(""+a).replace(regex,""),!1,"",!1)}
import { IndexInterface } from "../../type.js";
import { pipeline } from "../../lang.js";
export const rtl = /* normalize: */ /* collapse: */
/* normalize: */
/* collapse: */!1;
export const tokenize = "strict";
export default {
encode: encode,
rtl: !1,
tokenize: "strict"
};
const regex = /[\x00-\x7F]+/g;
/**
* @param {string|number} str
* @this IndexInterface
*/
export function encode(str) {
return pipeline.call(this,
/* string: */("" + str).replace(regex, ""), !1,
/* split: */"", !1);
}

View File

@@ -1 +1,27 @@
import{IndexInterface}from"../../type.js";import{pipeline}from"../../lang.js";export const rtl=!1;export const tokenize="";export default{encode:encode,rtl:!1};const regex=/[\x00-\x7F]+/g,split=/\s+/;export function encode(a){return pipeline.call(this,(""+a).replace(regex," "),!1,split,!1)}
import { IndexInterface } from "../../type.js";
import { pipeline } from "../../lang.js";
export const rtl = /* normalize: */ /* collapse: */ /* normalize: */ /* collapse: */
/* normalize: */
/* collapse: */!1;
export const tokenize = "";
export default {
encode: encode,
rtl: !1
};
const regex = /[\x00-\x7F]+/g,
split = /\s+/;
/**
* @param {string|number} str
* @this IndexInterface
*/
export function encode(str) {
return pipeline.call(this,
/* string: */("" + str).replace(regex, " "), !1,
/* split: */split, !1);
}

View File

@@ -1 +1,54 @@
export const filter=["aber","als","am","an","auch","auf","aus","bei","bin","bis","bist","da","dadurch","daher","darum","das","da\xDF","dass","dein","deine","dem","den","der","des","dessen","deshalb","die","dies","dieser","dieses","doch","dort","du","durch","ein","eine","einem","einen","einer","eines","er","es","euer","eure","f\xFCr","hatte","hatten","hattest","hattet","hier","hinter","ich","ihr","ihre","im","in","ist","ja","jede","jedem","jeden","jeder","jedes","jener","jenes","jetzt","kann","kannst","k\xF6nnen","k\xF6nnt","machen","mein","meine","mit","mu\xDF","mu\xDFt","musst","m\xFCssen","m\xFC\xDFt","nach","nachdem","nein","nicht","nun","oder","seid","sein","seine","sich","sie","sind","soll","sollen","sollst","sollt","sonst","soweit","sowie","und","unser","unsere","unter","vom","von","vor","wann","warum","was","weiter","weitere","wenn","wer","werde","werden","werdet","weshalb","wie","wieder","wieso","wir","wird","wirst","wo","woher","wohin","zu","zum","zur","\xFCber"];export const stemmer={niss:"",isch:"",lich:"",heit:"",keit:"",ell:"",bar:"",end:"",ung:"",est:"",ern:"",em:"",er:"",en:"",es:"",st:"",ig:"",ik:"",e:"",s:""};export const matcher={};export default{filter:filter,stemmer:stemmer,matcher:matcher};
/**
* Filter are also known as "stopwords", they completely filter out words from being indexed.
* Source: http://www.ranks.nl/stopwords
* Object Definition: Just provide an array of words.
* @type {Array<string>}
*/
export const filter = ["aber", "als", "am", "an", "auch", "auf", "aus", "bei", "bin", "bis", "bist", "da", "dadurch", "daher", "darum", "das", "daß", "dass", "dein", "deine", "dem", "den", "der", "des", "dessen", "deshalb", "die", "dies", "dieser", "dieses", "doch", "dort", "du", "durch", "ein", "eine", "einem", "einen", "einer", "eines", "er", "es", "euer", "eure", "für", "hatte", "hatten", "hattest", "hattet", "hier", "hinter", "ich", "ihr", "ihre", "im", "in", "ist", "ja", "jede", "jedem", "jeden", "jeder", "jedes", "jener", "jenes", "jetzt", "kann", "kannst", "können", "könnt", "machen", "mein", "meine", "mit", "muß", "mußt", "musst", "müssen", "müßt", "nach", "nachdem", "nein", "nicht", "nun", "oder", "seid", "sein", "seine", "sich", "sie", "sind", "soll", "sollen", "sollst", "sollt", "sonst", "soweit", "sowie", "und", "unser", "unsere", "unter", "vom", "von", "vor", "wann", "warum", "was", "weiter", "weitere", "wenn", "wer", "werde", "werden", "werdet", "weshalb", "wie", "wieder", "wieso", "wir", "wird", "wirst", "wo", "woher", "wohin", "zu", "zum", "zur", "über"];
/**
* Stemmer removes word endings and is a kind of "partial normalization". A word ending just matched when the word length is bigger than the matched partial.
* Example: The word "correct" and "correctness" could be the same word, so you can define {"ness": ""} to normalize the ending.
* Object Definition: the key represents the word ending, the value contains the replacement (or empty string for removal).
* @type {Object<string, string>}
*/
export const stemmer = {
niss: "",
isch: "",
lich: "",
heit: "",
keit: "",
ell: "",
bar: "",
end: "",
ung: "",
est: "",
ern: "",
em: "",
er: "",
en: "",
es: "",
st: "",
ig: "",
ik: "",
e: "",
s: ""
};
/**
* Matcher replaces all occurrences of a given string regardless of its position and is also a kind of "partial normalization".
* Object Definition: the key represents the target term, the value contains the search string which should be replaced (could also be an array of multiple terms).
* @type {Object<string, Array<string>|string>}
*/
export const matcher = {};
export default {
filter: filter,
stemmer: stemmer,
matcher: matcher
};

101
dist/module/lang/en.js vendored
View File

@@ -1 +1,100 @@
export const filter=["a","about","above","after","again","against","all","also","am","an","and","any","are","aren't","as","at","be","because","been","before","being","below","both","but","by","can","cannot","can't","come","could","couldn't","did","didn't","do","does","doesn't","doing","dont","down","during","each","even","few","first","for","from","further","get","go","had","hadn't","has","hasn't","have","haven't","having","he","hed","her","here","here's","hers","herself","hes","him","himself","his","how","how's","i","id","if","ill","im","in","into","is","isn't","it","it's","itself","i've","just","know","let's","like","make","me","more","most","mustn't","my","myself","new","no","nor","not","now","of","off","on","once","only","or","other","ought","our","our's","ourselves","out","over","own","same","say","see","shan't","she","she'd","shell","shes","should","shouldn't","so","some","such","than","that","that's","the","their","theirs","them","themselves","then","there","there's","these","they","they'd","they'll","they're","they've","this","those","through","time","to","too","until","up","us","very","want","was","wasn't","way","we","wed","well","were","weren't","we've","what","what's","when","when's","where","where's","which","while","who","whom","who's","why","why's","will","with","won't","would","wouldn't","you","you'd","you'll","your","you're","your's","yourself","yourselves","you've"];export const stemmer={ational:"ate",iveness:"ive",fulness:"ful",ousness:"ous",ization:"ize",tional:"tion",biliti:"ble",icate:"ic",ative:"",alize:"al",iciti:"ic",entli:"ent",ousli:"ous",alism:"al",ation:"ate",aliti:"al",iviti:"ive",ement:"",enci:"ence",anci:"ance",izer:"ize",alli:"al",ator:"ate",logi:"log",ical:"ic",ance:"",ence:"",ness:"",able:"",ible:"",ment:"",eli:"e",bli:"ble",ful:"",ant:"",ent:"",ism:"",ate:"",iti:"",ous:"",ive:"",ize:"",al:"",ou:"",er:"",ic:""};export const matcher={};export default{filter:filter,stemmer:stemmer,matcher:matcher};
/**
* http://www.ranks.nl/stopwords
* @type {Array<string>}
*/
export const filter = ["a", "about", "above", "after", "again", "against", "all", "also", "am", "an", "and", "any", "are", "aren't", "as", "at",
//"back",
"be", "because", "been", "before", "being", "below",
//"between",
"both", "but", "by", "can", "cannot", "can't", "come", "could", "couldn't",
//"day",
"did", "didn't", "do", "does", "doesn't", "doing", "dont", "down", "during", "each", "even", "few", "first", "for", "from", "further", "get",
//"give",
"go",
//"good",
"had", "hadn't", "has", "hasn't", "have", "haven't", "having", "he", "hed",
//"hell",
"her", "here", "here's", "hers", "herself", "hes", "him", "himself", "his", "how", "how's", "i", "id", "if", "ill", "im", "in", "into", "is", "isn't", "it", "it's", "itself", "i've", "just", "know", "let's", "like",
//"look",
"make", "me", "more", "most", "mustn't", "my", "myself", "new", "no", "nor", "not", "now", "of", "off", "on", "once",
//"one",
"only", "or", "other", "ought", "our", "our's", "ourselves", "out", "over", "own",
//"people",
"same", "say", "see", "shan't", "she", "she'd", "shell", "shes", "should", "shouldn't", "so", "some", "such",
//"take",
"than", "that", "that's", "the", "their", "theirs", "them", "themselves", "then", "there", "there's", "these", "they", "they'd", "they'll", "they're", "they've",
//"think",
"this", "those", "through", "time", "to", "too",
//"two",
//"under",
"until", "up", "us",
//"use",
"very", "want", "was", "wasn't", "way", "we", "wed", "well", "were", "weren't", "we've", "what", "what's", "when", "when's", "where", "where's", "which", "while", "who", "whom", "who's", "why", "why's", "will", "with", "won't",
//"work",
"would", "wouldn't",
//"year",
"you", "you'd", "you'll", "your", "you're", "your's", "yourself", "yourselves", "you've"];
/**
* @type {Object<string, string>}
*/
export const stemmer = {
ational: "ate",
iveness: "ive",
fulness: "ful",
ousness: "ous",
ization: "ize",
tional: "tion",
biliti: "ble",
icate: "ic",
ative: "",
alize: "al",
iciti: "ic",
entli: "ent",
ousli: "ous",
alism: "al",
ation: "ate",
aliti: "al",
iviti: "ive",
ement: "",
enci: "ence",
anci: "ance",
izer: "ize",
alli: "al",
ator: "ate",
logi: "log",
ical: "ic",
ance: "",
ence: "",
ness: "",
able: "",
ible: "",
ment: "",
eli: "e",
bli: "ble",
ful: "",
ant: "",
ent: "",
ism: "",
ate: "",
iti: "",
ous: "",
ive: "",
ize: "",
al: "",
ou: "",
er: "",
ic: ""
};
export const matcher = {};
export default {
filter: filter,
stemmer: stemmer,
matcher: matcher
};

View File

@@ -1 +1,89 @@
import{IndexInterface}from"../../type.js";import{regex,replace,collapse}from"../../lang.js";import{encode as encode_balance}from"./balance.js";export const rtl=!1;export const tokenize="";export default{encode:encode,rtl:!1,tokenize:""};const regex_ae=regex("ae"),regex_oe=regex("oe"),regex_sh=regex("sh"),regex_th=regex("th"),regex_ph=regex("ph"),regex_pf=regex("pf"),pairs=[regex_ae,"a",regex_oe,"o",regex_sh,"s",regex_th,"t",regex_ph,"f",regex_pf,"f",regex("(?![aeo])h(?![aeo])"),"",regex("(?!^[aeo])h(?!^[aeo])"),""];export function encode(a,b){return a&&(a=encode_balance.call(this,a).join(" "),2<a.length&&(a=replace(a,pairs)),!b&&(1<a.length&&(a=collapse(a)),a&&(a=a.split(" ")))),a||[]}
import { IndexInterface } from "../../type.js";
import { regex, replace, collapse } from "../../lang.js";
import { encode as encode_balance } from "./balance.js";
export const rtl = /* normalize: */
/* collapse: */ /* normalize: */ /* collapse: */ /* normalize: */ /* collapse: */!1;
export const tokenize = "";
export default {
encode: encode,
rtl: !1,
tokenize: ""
// Phonetic Normalization
};const regex_ae = regex("ae"),
//regex_ai = regex("ai"),
//regex_ay = regex("ay"),
//regex_ey = regex("ey"),
regex_oe = regex("oe"),
//regex_ue = regex("ue"),
//regex_ie = regex("ie"),
//regex_sz = regex("sz"),
//regex_zs = regex("zs"),
//regex_ck = regex("ck"),
//regex_cc = regex("cc"),
regex_sh = regex("sh"),
regex_th = regex("th"),
//regex_dt = regex("dt"),
regex_ph = regex("ph"),
regex_pf = regex("pf"),
pairs = [regex_ae, "a",
// regex_ai, "ei",
// regex_ay, "ei",
// regex_ey, "ei",
regex_oe, "o",
// regex_ue, "u",
// regex_ie, "i",
// regex_sz, "s",
// regex_zs, "s",
regex_sh, "s",
// regex_ck, "k",
// regex_cc, "k",
regex_th, "t",
// regex_dt, "t",
regex_ph, "f", regex_pf, "f",
// regex_ou, "o",
// regex_uo, "u"
// regex("(?![aeiouy])h(?![aeiouy])"), "",
// regex("(?!^[aeiouy])h(?!^[aeiouy])"), ""
regex("(?![aeo])h(?![aeo])"), "", regex("(?!^[aeo])h(?!^[aeo])"), ""];
//regex_ou = regex("ou"),
//regex_uo = regex("uo");
/**
* @param {string|number} str
* @param {boolean=} _skip_postprocessing
* @this IndexInterface
*/
export function encode(str, _skip_postprocessing) {
if (str) {
str = encode_balance.call(this, str).join(" ");
if (2 < str.length) {
str = replace(str, pairs);
}
if (!_skip_postprocessing) {
if (1 < str.length) {
str = collapse(str);
}
if (str) {
str = str.split(" ");
}
}
}
return str || [];
}

View File

@@ -1 +1,119 @@
import{IndexInterface}from"../../type.js";import{encode as encode_simple}from"./simple.js";export const rtl=!1;export const tokenize="strict";export default{encode:encode,rtl:!1,tokenize:"strict"};const regex_strip=/[^a-z0-9]+/,soundex={b:"p",v:"f",w:"f",z:"s",x:"s",ß:"s",d:"t",n:"m",c:"k",g:"k",j:"k",q:"k",i:"e",y:"e",u:"o"};export function encode(a){a=encode_simple.call(this,a).join(" ");const b=[];if(a){const c=a.split(regex_strip),d=c.length;for(let e,f=0,g=0;f<d;f++)if((a=c[f])&&(!this.filter||!this.filter[a])){e=a[0];let c=soundex[e]||e,d=c;for(let b=1;b<a.length;b++){e=a[b];const f=soundex[e]||e;f&&f!==d&&(c+=f,d=f)}b[g++]=c}}return b}
import { IndexInterface } from "../../type.js";
import { encode as encode_simple } from "./simple.js";
// custom soundex implementation
export const rtl = /* normalize: */ /* collapse: */
/* normalize: */ /* collapse: */ /* normalize: */ /* collapse: */!1;
export const tokenize = "strict";
export default {
encode: encode,
rtl: !1,
tokenize: "strict"
//const regex_whitespace = /[\W_]+/g;
};const regex_strip = /[^a-z0-9]+/,
soundex = {
b: "p",
//"p": "p",
//"f": "f",
v: "f", w: "f",
//"s": "s",
z: "s",
x: "s",
ß: "s",
d: "t",
//"t": "t",
//"l": "l",
//"m": "m",
n: "m",
c: "k",
g: "k",
j: "k",
//"k": "k",
q: "k",
//"r": "r",
//"h": "h",
//"a": "a",
//"e": "e",
i: "e",
y: "e",
//"o": "o",
u: "o"
};
// const pairs = [
// regex_whitespace, " ",
// regex_strip, ""
// ];
// modified
/**
* @param {string|number} str
* @this IndexInterface
*/
export function encode(str) {
str = encode_simple.call(this, str).join(" ");
// str = this.pipeline(
//
// /* string: */ normalize("" + str).toLowerCase(),
// /* normalize: */ false,
// /* split: */ false,
// /* collapse: */ false
// );
const result = [];
if (str) {
const words = str.split(regex_strip),
length = words.length;
for (let x = 0, tmp, count = 0; x < length; x++) {
if ((str = words[x]) && ( /*&& (str.length > 2)*/!this.filter || !this.filter[str])) {
tmp = str[0];
let code = soundex[tmp] || tmp,
previous = code; //str[0];
//soundex[code] || code;
for (let i = 1; i < str.length; i++) {
tmp = str[i];
const current = soundex[tmp] || tmp;
if (current && current !== previous) {
code += current;
previous = current;
// if(code.length === 7){
//
// break;
// }
}
}
result[count++] = code; //(code + "0000").substring(0, 4);
}
}
}
return result;
}

View File

@@ -1 +1,23 @@
import{IndexInterface}from"../../type.js";import{pipeline,normalize,regex_whitespace}from"../../lang.js";export const rtl=!1;export const tokenize="";export default{encode:encode,rtl:!1,tokenize:""};export function encode(a){return pipeline.call(this,(""+a).toLowerCase(),!1,regex_whitespace,!1)}
import { IndexInterface } from "../../type.js";
import { pipeline, normalize, regex_whitespace } from "../../lang.js";
export const rtl = /* normalize: */
/* collapse: */ /* normalize: */ /* collapse: */ /* normalize: */ /* collapse: */
/* normalize: */
/* collapse: */!1;
export const tokenize = "";
export default {
encode: encode,
rtl: !1,
tokenize: ""
/**
* @param {string|number} str
* @this IndexInterface
*/
};export function encode(str) {
return pipeline.call(this,
/* string: */("" + str).toLowerCase(), !1, /* split: */regex_whitespace, !1);
}

View File

@@ -1 +1,65 @@
import{IndexInterface}from"../../type.js";import{regex,replace,collapse}from"../../lang.js";import{encode as encode_advanced}from"./advanced.js";export const rtl=!1;export const tokenize="";export default{encode:encode,rtl:!1,tokenize:""};const prefix="(?!\\b)",regex_vowel=regex("(?!\\b)[aeo]"),pairs=[regex_vowel,""];export function encode(a){return a&&(a=encode_advanced.call(this,a,!0),1<a.length&&(a=a.replace(regex_vowel,"")),1<a.length&&(a=collapse(a)),a&&(a=a.split(" "))),a||[]}
import { IndexInterface } from "../../type.js";
import { regex, replace, collapse } from "../../lang.js";
import { encode as encode_advanced } from "./advanced.js";
export const rtl = /* normalize: */ /* collapse: */ /* normalize: */ /* collapse: */ /* normalize: */ /* collapse: */ /* normalize: */ /* collapse: */!1;
export const tokenize = "";
export default {
encode: encode,
rtl: !1,
tokenize: ""
// Soundex Normalization
};const prefix = "(?!\\b)",
//soundex_b = regex(prefix + "p"),
// soundex_s = regex(prefix + "z"),
// soundex_k = regex(prefix + "[cgq]"),
// soundex_m = regex(prefix + "n"),
// soundex_t = regex(prefix + "d"),
// soundex_f = regex(prefix + "[vw]"),
//regex_vowel = regex(prefix + "[aeiouy]");
regex_vowel = regex("(?!\\b)[aeo]"),
pairs = [
// soundex_b, "b",
// soundex_s, "s",
// soundex_k, "k",
// soundex_m, "m",
// soundex_t, "t",
// soundex_f, "f",
// regex("(?![aeiouy])h(?![aeiouy])"), "",
// regex("(?!^[aeiouy])h(?!^[aeiouy])"), "",
regex_vowel, ""];
/**
* @param {string|number} str
* @this IndexInterface
*/
export function encode(str) {
if (str) {
str = encode_advanced.call(this, str, /* append: */ /* skip update: */ /* skip_update: */ /* skip post-processing: */!0);
if (1 < str.length) {
//str = replace(str, pairs);
str = str.replace(regex_vowel, "");
}
if (1 < str.length) {
str = collapse(str);
}
if (str) {
str = str.split(" ");
}
}
return str || [];
}

View File

@@ -1 +1,45 @@
import{IndexInterface}from"../../type.js";import{pipeline,normalize,regex_whitespace,regex}from"../../lang.js";export const rtl=!1;export const tokenize="";export default{encode:encode,rtl:!1,tokenize:""};const regex_a=regex("[\xE0\xE1\xE2\xE3\xE4\xE5]"),regex_e=regex("[\xE8\xE9\xEA\xEB]"),regex_i=regex("[\xEC\xED\xEE\xEF]"),regex_o=regex("[\xF2\xF3\xF4\xF5\xF6\u0151]"),regex_u=regex("[\xF9\xFA\xFB\xFC\u0171]"),regex_y=regex("[\xFD\u0177\xFF]"),regex_n=regex("\xF1"),regex_c=regex("[\xE7c]"),regex_s=regex("\xDF"),regex_and=regex(" & "),pairs=[regex_a,"a",regex_e,"e",regex_i,"i",regex_o,"o",regex_u,"u",regex_y,"y",regex_n,"n",regex_c,"k",regex_s,"s",regex_and," and "];export function encode(a){return a=""+a,pipeline.call(this,normalize(a).toLowerCase(),!a.normalize&&pairs,regex_whitespace,!1)}
import { IndexInterface } from "../../type.js";
import { pipeline, normalize, regex_whitespace, regex } from "../../lang.js";
export const rtl = /* normalize: */ /* collapse: */ /* normalize: */ /* collapse: */ /* normalize: */ /* collapse: */ /* normalize: */ /* collapse: */
/* collapse: */!1;
export const tokenize = "";
export default {
encode: encode,
rtl: !1,
tokenize: ""
// Charset Normalization
};const //regex_whitespace = /\W+/,
//regex_strip = regex("[^a-z0-9 ]"),
regex_a = regex("[àáâãäå]"),
regex_e = regex("[èéêë]"),
regex_i = regex("[ìíîï]"),
regex_o = regex("[òóôõöő]"),
regex_u = regex("[ùúûüű]"),
regex_y = regex("[ýŷÿ]"),
regex_n = regex("ñ"),
regex_c = regex("[çc]"),
regex_s = regex("ß"),
regex_and = regex(" & "),
pairs = [regex_a, "a", regex_e, "e", regex_i, "i", regex_o, "o", regex_u, "u", regex_y, "y", regex_n, "n", regex_c, "k", regex_s, "s", regex_and, " and "
//regex_whitespace, " "
//regex_strip, ""
];
/**
* @param {string|number} str
* @this IndexInterface
*/
export function encode(str) {
str = "" + str;
return pipeline.call(this,
/* string: */normalize(str).toLowerCase(),
/* normalize: */!str.normalize && pairs,
/* split: */regex_whitespace, !1);
}

101
dist/module/lang/us.js vendored
View File

@@ -1 +1,100 @@
export const filter=["a","about","above","after","again","against","all","also","am","an","and","any","are","aren't","as","at","be","because","been","before","being","below","both","but","by","can","cannot","can't","come","could","couldn't","did","didn't","do","does","doesn't","doing","dont","down","during","each","even","few","first","for","from","further","get","go","had","hadn't","has","hasn't","have","haven't","having","he","hed","her","here","here's","hers","herself","hes","him","himself","his","how","how's","i","id","if","ill","im","in","into","is","isn't","it","it's","itself","i've","just","know","let's","like","make","me","more","most","mustn't","my","myself","new","no","nor","not","now","of","off","on","once","only","or","other","ought","our","our's","ourselves","out","over","own","same","say","see","shan't","she","she'd","shell","shes","should","shouldn't","so","some","such","than","that","that's","the","their","theirs","them","themselves","then","there","there's","these","they","they'd","they'll","they're","they've","this","those","through","time","to","too","until","up","us","very","want","was","wasn't","way","we","wed","well","were","weren't","we've","what","what's","when","when's","where","where's","which","while","who","whom","who's","why","why's","will","with","won't","would","wouldn't","you","you'd","you'll","your","you're","your's","yourself","yourselves","you've"];export const stemmer={ational:"ate",iveness:"ive",fulness:"ful",ousness:"ous",ization:"ize",tional:"tion",biliti:"ble",icate:"ic",ative:"",alize:"al",iciti:"ic",entli:"ent",ousli:"ous",alism:"al",ation:"ate",aliti:"al",iviti:"ive",ement:"",enci:"ence",anci:"ance",izer:"ize",alli:"al",ator:"ate",logi:"log",ical:"ic",ance:"",ence:"",ness:"",able:"",ible:"",ment:"",eli:"e",bli:"ble",ful:"",ant:"",ent:"",ism:"",ate:"",iti:"",ous:"",ive:"",ize:"",al:"",ou:"",er:"",ic:""};export const matcher={};export default{filter:filter,stemmer:stemmer,matcher:matcher};
/**
* http://www.ranks.nl/stopwords
* @type {Array<string>}
*/
export const filter = ["a", "about", "above", "after", "again", "against", "all", "also", "am", "an", "and", "any", "are", "aren't", "as", "at",
//"back",
"be", "because", "been", "before", "being", "below",
//"between",
"both", "but", "by", "can", "cannot", "can't", "come", "could", "couldn't",
//"day",
"did", "didn't", "do", "does", "doesn't", "doing", "dont", "down", "during", "each", "even", "few", "first", "for", "from", "further", "get",
//"give",
"go",
//"good",
"had", "hadn't", "has", "hasn't", "have", "haven't", "having", "he", "hed",
//"hell",
"her", "here", "here's", "hers", "herself", "hes", "him", "himself", "his", "how", "how's", "i", "id", "if", "ill", "im", "in", "into", "is", "isn't", "it", "it's", "itself", "i've", "just", "know", "let's", "like",
//"look",
"make", "me", "more", "most", "mustn't", "my", "myself", "new", "no", "nor", "not", "now", "of", "off", "on", "once",
//"one",
"only", "or", "other", "ought", "our", "our's", "ourselves", "out", "over", "own",
//"people",
"same", "say", "see", "shan't", "she", "she'd", "shell", "shes", "should", "shouldn't", "so", "some", "such",
//"take",
"than", "that", "that's", "the", "their", "theirs", "them", "themselves", "then", "there", "there's", "these", "they", "they'd", "they'll", "they're", "they've",
//"think",
"this", "those", "through", "time", "to", "too",
//"two",
//"under",
"until", "up", "us",
//"use",
"very", "want", "was", "wasn't", "way", "we", "wed", "well", "were", "weren't", "we've", "what", "what's", "when", "when's", "where", "where's", "which", "while", "who", "whom", "who's", "why", "why's", "will", "with", "won't",
//"work",
"would", "wouldn't",
//"year",
"you", "you'd", "you'll", "your", "you're", "your's", "yourself", "yourselves", "you've"];
/**
* @type {Object<string, string>}
*/
export const stemmer = {
ational: "ate",
iveness: "ive",
fulness: "ful",
ousness: "ous",
ization: "ize",
tional: "tion",
biliti: "ble",
icate: "ic",
ative: "",
alize: "al",
iciti: "ic",
entli: "ent",
ousli: "ous",
alism: "al",
ation: "ate",
aliti: "al",
iviti: "ive",
ement: "",
enci: "ence",
anci: "ance",
izer: "ize",
alli: "al",
ator: "ate",
logi: "log",
ical: "ic",
ance: "",
ence: "",
ness: "",
able: "",
ible: "",
ment: "",
eli: "e",
bli: "ble",
ful: "",
ant: "",
ent: "",
ism: "",
ate: "",
iti: "",
ous: "",
ive: "",
ize: "",
al: "",
ou: "",
er: "",
ic: ""
};
export const matcher = {};
export default {
filter: filter,
stemmer: stemmer,
matcher: matcher
};

View File

@@ -1 +1,74 @@
import{POLYFILL,SUPPORT_ASYNC}from"./config.js";export let promise=Promise;if(POLYFILL&&(Object.assign||(Object.assign=function(){const a=arguments,b=a.length,c=a[0];for(let d,e,f,g=1;g<b;g++){d=a[g],e=Object.keys(d),f=e.length;for(let a,b=0;b<f;b++)a=e[b],c[a]=d[a]}return c}),SUPPORT_ASYNC&&!promise)){function a(a){this.callback=null;const b=this;a(function(a){b.callback&&b.callback(a)})}a.prototype.then=function(a){this.callback=a},promise=a}
export let promise = Promise;
Object.assign || (Object.assign = function () {
const args = arguments,
size = args.length,
obj = args[0];
for (let x = 1, current, keys, length; x < size; x++) {
current = args[x];
keys = Object.keys(current);
length = keys.length;
for (let i = 0, key; i < length; i++) {
key = keys[i];
obj[key] = current[key];
}
}
return obj;
});
// Object.values || (Object.values = function(obj){
//
// const keys = Object.keys(obj);
// const length = keys.length;
// const values = new Array(length);
//
// for(let x = 0; x < length; x++){
//
// values[x] = obj[keys[x]];
// }
//
// return values;
// });
if (!promise) {
/**
* @param {Function} fn
* @constructor
*/
function SimplePromise(fn) {
this.callback = null;
const self = this;
fn(function (val) {
if (self.callback) {
self.callback(val);
// self.callback = null;
// self = null;
}
});
}
/**
* @param {Function} callback
*/
SimplePromise.prototype.then = function (callback) {
this.callback = callback;
};
promise = SimplePromise;
}

88
dist/module/preset.js vendored
View File

@@ -1 +1,87 @@
import{DEBUG}from"./config.js";import{is_string}from"./common.js";const preset={memory:{charset:"latin:extra",resolution:3,minlength:4,fastupdate:!1},performance:{resolution:3,minlength:3,optimize:!1,context:{depth:2,resolution:1}},match:{charset:"latin:extra",tokenize:"reverse"},score:{charset:"latin:advanced",resolution:20,minlength:3,context:{depth:3,resolution:9}},default:{}};export default function apply_preset(a){if(is_string(a))DEBUG&&!preset[a]&&console.warn("Preset not found: "+a),a=preset[a];else{const b=a.preset;b&&(DEBUG&&!b[b]&&console.warn("Preset not found: "+b),a=Object.assign({},b[b],a))}return a}
import { is_string } from "./common.js";
/**
* @enum {Object}
* @const
*/
const preset = {
memory: {
charset: "latin:extra",
//tokenize: "strict",
resolution: 3,
//threshold: 0,
minlength: 4,
fastupdate: /* normalize: */ /* collapse: */ /* normalize: */ /* collapse: */ /* normalize: */ /* collapse: */ /* normalize: */
/* collapse: */
/* collapse: */!1
},
performance: {
//charset: "latin",
//tokenize: "strict",
resolution: 3,
minlength: 3,
//fastupdate: true,
optimize: !1, //fastupdate: true,
context: {
depth: 2, resolution: 1
//bidirectional: false
}
},
match: {
charset: "latin:extra",
tokenize: "reverse"
//resolution: 9,
//threshold: 0
},
score: {
charset: "latin:advanced",
//tokenize: "strict",
resolution: 20,
minlength: 3,
context: {
depth: 3,
resolution: 9
//bidirectional: true
}
},
default: {
// charset: "latin:default",
// tokenize: "strict",
// resolution: 3,
// threshold: 0,
// depth: 3
}
// "fast": {
// //charset: "latin",
// //tokenize: "strict",
// threshold: 8,
// resolution: 9,
// depth: 1
// }
};
export default function apply_preset(options) {
if (is_string(options)) {
options = preset[options];
} else {
const preset = options.preset;
if (preset) {
options = Object.assign({}, preset[preset], /** @type {Object} */options);
}
}
return options;
}

Some files were not shown because too many files have changed in this diff Show More