Socket
Socket
Sign inDemoInstall

fzf

Package Overview
Dependencies
Maintainers
1
Versions
8
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

fzf - npm Package Compare versions

Comparing version 0.5.1 to 0.5.2

README.md

1367

dist/fzf.es.js
/** @license
* fzf v0.5.1
* Copyright (c) 2021-2022 Ajit
* fzf v0.5.2
* Copyright (c) 2021 Ajit
* Licensed under BSD 3-Clause
*/
const t={216:"O",223:"s",248:"o",273:"d",295:"h",305:"i",320:"l",322:"l",359:"t",383:"s",384:"b",385:"B",387:"b",390:"O",392:"c",393:"D",394:"D",396:"d",398:"E",400:"E",402:"f",403:"G",407:"I",409:"k",410:"l",412:"M",413:"N",414:"n",415:"O",421:"p",427:"t",429:"t",430:"T",434:"V",436:"y",438:"z",477:"e",485:"g",544:"N",545:"d",549:"z",564:"l",565:"n",566:"t",567:"j",570:"A",571:"C",572:"c",573:"L",574:"T",575:"s",576:"z",579:"B",580:"U",581:"V",582:"E",583:"e",584:"J",585:"j",586:"Q",587:"q",588:"R",589:"r",590:"Y",591:"y",592:"a",593:"a",595:"b",596:"o",597:"c",598:"d",599:"d",600:"e",603:"e",604:"e",605:"e",606:"e",607:"j",608:"g",609:"g",610:"G",613:"h",614:"h",616:"i",618:"I",619:"l",620:"l",621:"l",623:"m",624:"m",625:"m",626:"n",627:"n",628:"N",629:"o",633:"r",634:"r",635:"r",636:"r",637:"r",638:"r",639:"r",640:"R",641:"R",642:"s",647:"t",648:"t",649:"u",651:"v",652:"v",653:"w",654:"y",655:"Y",656:"z",657:"z",663:"c",665:"B",666:"e",667:"G",668:"H",669:"j",670:"k",671:"L",672:"q",686:"h",867:"a",868:"e",869:"i",870:"o",871:"u",872:"c",873:"d",874:"h",875:"m",876:"r",877:"t",878:"v",879:"x",7424:"A",7427:"B",7428:"C",7429:"D",7431:"E",7432:"e",7433:"i",7434:"J",7435:"K",7436:"L",7437:"M",7438:"N",7439:"O",7440:"O",7441:"o",7442:"o",7443:"o",7446:"o",7447:"o",7448:"P",7449:"R",7450:"R",7451:"T",7452:"U",7453:"u",7454:"u",7455:"m",7456:"V",7457:"W",7458:"Z",7522:"i",7523:"r",7524:"u",7525:"v",7834:"a",7835:"s",8305:"i",8341:"h",8342:"k",8343:"l",8344:"m",8345:"n",8346:"p",8347:"s",8348:"t",8580:"c"};for(let at="̀".codePointAt(0);at<="ͯ".codePointAt(0);++at){const e=String.fromCodePoint(at);for(const n of"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"){const r=(n+e).normalize().codePointAt(0);r>126&&(t[r]=n)}}const e={a:[7844,7863],e:[7870,7879],o:[7888,7907],u:[7912,7921]};for(const at of Object.keys(e)){const n=at.toUpperCase();for(let r=e[at][0];r<=e[at][1];++r)t[r]=r%2==0?n:at}function n(e){if(e<192||e>8580)return e;const n=t[e];return void 0!==n?n.codePointAt(0):e}function r(t,e){return t>e?t:e}const s=t=>t.split("").map((t=>t.codePointAt(0))),o=t=>t.map((t=>String.fromCodePoint(t))).join(""),i=new Set(" \f\n\r\t\v  \u2028\u2029   \ufeff".split("").map((t=>t.codePointAt(0))));for(let at=" ".codePointAt(0);at<=" ".codePointAt(0);at++)i.add(at);const l=t=>i.has(t),c=t=>{let e=0;for(const n of t){if(!l(n))break;e++}return e},a=t=>{let e=0;for(let n=t.length-1;n>=0&&l(t[n]);n--)e++;return e},u="".codePointAt(0),f="A".codePointAt(0),h="Z".codePointAt(0),d="a".codePointAt(0),g="z".codePointAt(0),m="0".codePointAt(0),p="9".codePointAt(0);function b(t,e,n){return n?t:e-t-1}var y,P;function w(t){return t?new Set:null}function z(t,e,n){if(null!==e&&e.i16.length>t+n){return[t+n,e.i16.subarray(t,t+n)]}return[t,new Int16Array(n)]}function L(t,e,n){if(null!==e&&e.i32.length>t+n){return[t+n,e.i32.subarray(t,t+n)]}return[t,new Int32Array(n)]}function S(t){return t>=d&&t<=g?1:t>=f&&t<=h?2:t>=m&&t<=p?4:0}function A(t){const e=String.fromCodePoint(t);return e!==e.toUpperCase()?1:e!==e.toLowerCase()?2:null!==e.match(/\p{Number}/gu)?4:null!==e.match(/\p{Letter}/gu)?3:0}function C(t){return t<=u?S(t):A(t)}function v(t,e){return 0===t&&0!==e?8:1===t&&2===e||4!==t&&4===e?7:0===e?8:0}function k(t,e,n,r){let s=t.slice(r),o=s.indexOf(n);if(0===o)return r;if(!e&&n>=d&&n<=g){o>0&&(s=s.slice(0,o));const t=s.indexOf(n-32);t>=0&&(o=t)}return o<0?-1:r+o}function x(t){for(const e of t)if(e>=128)return!1;return!0}function E(t,e,n){if(!x(t))return 0;if(!x(e))return-1;let r=0,s=0;for(let o=0;o<e.length;o++){if(s=k(t,n,e[o],s),s<0)return-1;0===o&&s>0&&(r=s-1),s++}return r}(P=y||(y={}))[P.NonWord=0]="NonWord",P[P.Lower=1]="Lower",P[P.Upper=2]="Upper",P[P.Letter=3]="Letter",P[P.Number=4]="Number";const N=(t,e,s,o,i,l,c)=>{const a=i.length;if(0===a)return[{start:0,end:0,score:0},w(l)];const f=o.length;if(null!==c&&f*a>c.i16.length)return O(t,e,s,o,i,l);const h=E(o,i,t);if(h<0)return[{start:-1,end:-1,score:0},null];let d=0,g=0,m=null,p=null,b=null,y=null;[d,m]=z(d,c,f),[d,p]=z(d,c,f),[d,b]=z(d,c,f),[g,y]=L(g,c,a);const[,P]=L(g,c,f);for(let n=0;n<P.length;n++)P[n]=o[n];let C=0,k=0,x=0,N=0;const F=i[0];let R=i[0],q=0,I=0,W=!1,j=P.subarray(h),M=m.subarray(h).subarray(0,j.length),B=p.subarray(h).subarray(0,j.length),U=b.subarray(h).subarray(0,j.length);for(let[w,z]of j.entries()){let o=null;z<=u?(o=S(z),t||2!==o||(z+=32)):(o=A(z),t||2!==o||(z=String.fromCodePoint(z).toLowerCase().codePointAt(0)),e&&(z=n(z))),j[w]=z;const l=v(I,o);if(U[w]=l,I=o,z===R&&(x<a&&(y[x]=h+w,x++,R=i[Math.min(x,a-1)]),N=h+w),z===F){const t=16+2*l;if(M[w]=t,B[w]=1,1===a&&(s&&t>C||!s&&t>=C)&&(C=t,k=h+w,s&&8===l))break;W=!1}else M[w]=r(W?q+-1:q+-3,0),B[w]=0,W=!0;q=M[w]}if(x!==a)return[{start:-1,end:-1,score:0},null];if(1===a){const t={start:k,end:k+1,score:C};if(!l)return[t,null];const e=new Set;return e.add(k),[t,e]}const T=y[0],D=N-T+1;let G=null;[d,G]=z(d,c,D*a);{const t=m.subarray(T,N+1);for(const[e,n]of t.entries())G[e]=n}let[,V]=z(d,c,D*a);{const t=p.subarray(T,N+1);for(const[e,n]of t.entries())V[e]=n}const J=y.subarray(1),Y=i.slice(1).slice(0,J.length);for(const[n,u]of J.entries()){let t=!1;const e=Y[n],o=n+1,i=o*D,l=P.subarray(u,N+1),c=b.subarray(u).subarray(0,l.length),f=V.subarray(i+u-T).subarray(0,l.length),h=V.subarray(i+u-T-1-D).subarray(0,l.length),d=G.subarray(i+u-T).subarray(0,l.length),g=G.subarray(i+u-T-1-D).subarray(0,l.length),m=G.subarray(i+u-T-1).subarray(0,l.length);m[0]=0;for(const[n,p]of l.entries()){const i=n+u;let l=0,y=0,P=0;if(y=t?m[n]+-1:m[n]+-3,e===p){l=g[n]+16;let t=c[n];P=h[n]+1,8===t?P=1:P>1&&(t=r(t,r(4,b[i-P+1]))),l+t<y?(l+=c[n],P=0):l+=t}f[n]=P,t=l<y;const w=r(r(l,y),0);o===a-1&&(s&&w>C||!s&&w>=C)&&(C=w,k=i),d[n]=w}}const Z=w(l);let H=T;if(l&&null!==Z){let t=a-1;H=k;let e=!0;for(;;){const n=t*D,r=H-T,s=G[n+r];let o=0,i=0;if(t>0&&H>=y[t]&&(o=G[n-D+r-1]),H>y[t]&&(i=G[n+r-1]),s>o&&(s>i||s===i&&e)){if(Z.add(H),0===t)break;t--}e=V[n+r]>1||n+D+r+1<V.length&&V[n+D+r+1]>0,H--}}return[{start:H,end:k+1,score:C},Z]};function F(t,e,s,o,i,l,c){let a=0,d=0,g=!1,m=0,p=0;const b=w(c);let y=0;i>0&&(y=C(s[i-1]));for(let P=i;P<l;P++){let i=s[P];const l=C(i);if(t||(i>=f&&i<=h?i+=32:i>u&&(i=String.fromCodePoint(i).toLowerCase().codePointAt(0))),e&&(i=n(i)),i===o[a]){c&&null!==b&&b.add(P),d+=16;let t=v(y,l);0===m?p=t:(8===t&&(p=t),t=r(r(t,p),4)),d+=0===a?2*t:t,g=!1,m++,a++}else d+=g?-1:-3,g=!0,m=0,p=0;y=l}return[d,b]}const O=(t,e,r,s,o,i,l)=>{if(0===o.length)return[{start:0,end:0,score:0},null];if(E(s,o,t)<0)return[{start:-1,end:-1,score:0},null];let c=0,a=-1,d=-1;const g=s.length,m=o.length;for(let p=0;p<g;p++){let i=s[b(p,g,r)];t||(i>=f&&i<=h?i+=32:i>u&&(i=String.fromCodePoint(i).toLowerCase().codePointAt(0))),e&&(i=n(i));if(i===o[b(c,m,r)]&&(a<0&&(a=p),c++,c===m)){d=p+1;break}}if(a>=0&&d>=0){c--;for(let e=d-1;e>=a;e--){let n=s[b(e,g,r)];t||(n>=f&&n<=h?n+=32:n>u&&(n=String.fromCodePoint(n).toLowerCase().codePointAt(0)));if(n===o[b(c,m,r)]&&(c--,c<0)){a=e;break}}if(!r){const t=a;a=g-d,d=g-t}const[n,l]=F(t,e,s,o,a,d,i);return[{start:a,end:d,score:n},l]}return[{start:-1,end:-1,score:0},null]},R=(t,e,r,s,o,i,l)=>{if(0===o.length)return[{start:0,end:0,score:0},null];const c=s.length,a=o.length;if(c<a)return[{start:-1,end:-1,score:0},null];if(E(s,o,t)<0)return[{start:-1,end:-1,score:0},null];let d=0,g=-1,m=0,p=-1;for(let w=0;w<c;w++){const i=b(w,c,r);let l=s[i];t||(l>=f&&l<=h?l+=32:l>u&&(l=String.fromCodePoint(l).toLowerCase().codePointAt(0))),e&&(l=n(l));const z=b(d,a,r);if(o[z]===l){if(0===z&&(y=s,m=0===(P=i)?8:v(C(y[P-1]),C(y[P]))),d++,d===a){if(m>p&&(g=w,p=m),8===m)break;w-=d-1,d=0,m=0}}else w-=d,d=0,m=0}var y,P;if(g>=0){let n=0,i=0;r?(n=g-a+1,i=g+1):(n=c-(g+1),i=c-(g-a+1));const[l]=F(t,e,s,o,n,i,!1);return[{start:n,end:i,score:l},null]}return[{start:-1,end:-1,score:0},null]};const q=(I=2048,{i16:new Int16Array(102400),i32:new Int32Array(I)});var I,W,j;(j=W||(W={}))[j.Fuzzy=0]="Fuzzy",j[j.Exact=1]="Exact",j[j.Prefix=2]="Prefix",j[j.Suffix=3]="Suffix",j[j.Equal=4]="Equal";const M={0:N,1:R,2:(t,e,r,s,o,i,a)=>{if(0===o.length)return[{start:0,end:0,score:0},null];let u=0;if(l(o[0])||(u=c(s)),s.length-u<o.length)return[{start:-1,end:-1,score:0},null];for(const[l,c]of o.entries()){let r=s[u+l];if(t||(r=String.fromCodePoint(r).toLowerCase().codePointAt(0)),e&&(r=n(r)),r!==c)return[{start:-1,end:-1,score:0},null]}const f=o.length,[h]=F(t,e,s,o,u,u+f,!1);return[{start:u,end:u+f,score:h},null]},3:(t,e,r,s,o,i,c)=>{let u=s.length;if(0!==o.length&&l(o[o.length-1])||(u-=a(s)),0===o.length)return[{start:u,end:u,score:0},null];const f=u-o.length;if(f<0)return[{start:-1,end:-1,score:0},null];for(const[l,a]of o.entries()){let r=s[l+f];if(t||(r=String.fromCodePoint(r).toLowerCase().codePointAt(0)),e&&(r=n(r)),r!==a)return[{start:-1,end:-1,score:0},null]}const h=u-o.length,d=u,[g]=F(t,e,s,o,h,d,!1);return[{start:h,end:d,score:g},null]},4:(t,e,r,s,i,u,f)=>{const h=i.length;if(0===h)return[{start:-1,end:-1,score:0},null];let d=0;l(i[0])||(d=c(s));let g=0;if(l(i[h-1])||(g=a(s)),s.length-d-g!=h)return[{start:-1,end:-1,score:0},null];let m=!0;if(e){const e=s;for(const[r,s]of i.entries()){let o=e[d+r];if(t||(o=String.fromCodePoint(o).toLowerCase().codePointAt(0)),n(s)!==n(o)){m=!1;break}}}else{let e=o(s).substring(d,s.length-g);t||(e=e.toLowerCase()),m=e===o(i)}return m?[{start:d,end:d+h,score:24*h+8},null]:[{start:-1,end:-1,score:0},null]}};function B(t,e,r,i){let l=!0;{const t=(i=i.trimLeft()).trimRight();i=t.endsWith("\\")&&" "===i[t.length]?t+" ":t}let c=!1,a=[];a=function(t,e,r,i){const l=(i=i.replace(/\\ /g,"\t")).split(/ +/),c=[];let a=[],u=!1,f=!1;for(const h of l){let i=0,l=!1,d=h.replace(/\t/g," ");const g=d.toLowerCase(),m="case-sensitive"===e||"smart-case"===e&&d!==g,p=r&&g===o(s(g).map(n));if(m||(d=g),t||(i=1),a.length>0&&!f&&"|"===d)u=!1,f=!0;else if(f=!1,d.startsWith("!")&&(l=!0,i=1,d=d.substring(1)),"$"!==d&&d.endsWith("$")&&(i=3,d=d.substring(0,d.length-1)),d.startsWith("'")?(i=t&&!l?1:0,d=d.substring(1)):d.startsWith("^")&&(i=3===i?4:2,d=d.substring(1)),d.length>0){u&&(c.push(a),a=[]);let t=s(d);p&&(t=t.map(n)),a.push({typ:i,inv:l,text:t,caseSensitive:m,normalize:p}),u=!0}}a.length>0&&c.push(a);return c}(t,e,r,i);t:for(const n of a)for(const[e,r]of n.entries())if(r.inv||(c=!0),(!l||e>0||r.inv||t&&0!==r.typ||!t&&1!==r.typ)&&(l=!1,c))break t;return{str:i,termSets:a,sortable:c,cacheable:l,fuzzy:t}}const U=(t,e,r)=>{let o=!1;switch(e){case"smart-case":t.toLowerCase()!==t&&(o=!0);break;case"case-sensitive":o=!0;break;case"case-insensitive":t=t.toLowerCase(),o=!1}let i=s(t);return r&&(i=i.map(n)),{queryRunes:i,caseSensitive:o}};function T(t,e,n,r,s,o,i){for(const l of e){const[e,c]=t(n,r,s,l.text,o,!0,i);if(e.start>=0){const t=e.start+l.prefixLength,n=e.end+l.prefixLength;if(null!==c){const r=new Set;return c.forEach((t=>r.add(l.prefixLength+t))),[[t,n],e.score,r]}return[[t,n],e.score,c]}}return[[-1,-1],0,null]}function D(t,e){const n=Object.keys(t).map((t=>parseInt(t,10))).sort(((t,e)=>e-t));let r=[];for(const s of n)if(r=r.concat(t[s]),r.length>=e)break;return r}function G(t,e,n){return r=>{const s=this.runesList[r];if(e.length>s.length)return;let[o,i]=this.algoFn(n,this.opts.normalize,this.opts.forward,s,e,!0,q);if(-1===o.start)return;if(!1===this.opts.fuzzy){i=new Set;for(let t=o.start;t<o.end;++t)i.add(t)}const l=this.opts.sort?o.score:0;void 0===t[l]&&(t[l]=[]),t[l].push({item:this.items[r],...o,positions:null!=i?i:new Set})}}function V(t,e){return n=>{const r=function(t,e,n,r){const s=[{text:t,prefixLength:0}],o=[];let i=0;const l=new Set;for(const c of e.termSets){let t=[0,0],e=0,a=!1;for(const o of c){let i=M[o.typ];o.typ===W.Fuzzy&&(i=n);const[c,u,f]=T(i,s,o.caseSensitive,o.normalize,r,o.text,q);if(c[0]>=0){if(o.inv)continue;if(t=c,e=u,a=!0,null!==f)f.forEach((t=>l.add(t)));else for(let t=c[0];t<c[1];++t)l.add(t);break}o.inv&&(t=[0,0],e=0,a=!0)}a&&(o.push(t),i+=e)}return{offsets:o,totalScore:i,allPos:l}}(this.runesList[n],e,this.algoFn,this.opts.forward);if(r.offsets.length!==e.termSets.length)return;let s=-1,o=-1;r.allPos.size>0&&(s=Math.min(...r.allPos),o=Math.max(...r.allPos)+1);const i=this.opts.sort?r.totalScore:0;void 0===t[i]&&(t[i]=[]),t[i].push({score:r.totalScore,item:this.items[n],positions:r.allPos,start:s,end:o})}}function J(t){const{queryRunes:e,caseSensitive:n}=U(t,this.opts.casing,this.opts.normalize),r={},s=G.bind(this)(r,e,n);for(let o=0,i=this.runesList.length;o<i;++o)s(o);return D(r,this.opts.limit)}function Y(t){const e=B(Boolean(this.opts.fuzzy),this.opts.casing,this.opts.normalize,t),n={},r=V.bind(this)(n,e);for(let s=0,o=this.runesList.length;s<o;++s)r(s);return D(n,this.opts.limit)}const Z="undefined"!=typeof require&&"undefined"==typeof window;function H(t,e,n,r){return new Promise(((s,o)=>{let i=0,l=Math.min(1e3,e);const c=()=>{if(t.cancelled)return o("search cancelled");for(;i<l;++i)n(i);l<e?(l=Math.min(l+1e3,e),Z?setImmediate(c):setTimeout(c)):s(r())};c()}))}function K(t,e){const{queryRunes:n,caseSensitive:r}=U(t,this.opts.casing,this.opts.normalize),s={};return H(e,this.runesList.length,G.bind(this)(s,n,r),(()=>D(s,this.opts.limit)))}function Q(t,e){const n=B(Boolean(this.opts.fuzzy),this.opts.casing,this.opts.normalize,t),r={};return H(e,this.runesList.length,V.bind(this)(r,n),(()=>D(r,this.opts.limit)))}const $={limit:1/0,selector:t=>t,casing:"smart-case",normalize:!0,fuzzy:"v2",tiebreakers:[],sort:!0,forward:!0};class X{constructor(t,...e){switch(this.opts={...$,...e[0]},this.items=t,this.runesList=t.map((t=>s(this.opts.selector(t).normalize()))),this.algoFn=R,this.opts.fuzzy){case"v2":this.algoFn=N;break;case"v1":this.algoFn=O}}}const _={...$,match:J};class tt extends X{constructor(t,...e){super(t,...e),this.opts={..._,...e[0]}}find(t){if(0===t.length||0===this.items.length)return this.items.slice(0,this.opts.limit).map(rt);return t=t.normalize(),st(this.opts.match.bind(this)(t),this.opts)}}const et={...$,match:K};class nt extends X{constructor(t,...e){super(t,...e),this.opts={...et,...e[0]},this.token={cancelled:!1}}async find(t){if(this.token.cancelled=!0,this.token={cancelled:!1},0===t.length||0===this.items.length)return this.items.slice(0,this.opts.limit).map(rt);return t=t.normalize(),st(await this.opts.match.bind(this)(t,this.token),this.opts)}}const rt=t=>({item:t,start:-1,end:-1,score:0,positions:new Set});function st(t,e){if(e.sort){const{selector:n}=e;t.sort(((t,r)=>{if(t.score===r.score)for(const s of e.tiebreakers){const e=s(t,r,n);if(0!==e)return e}return 0}))}return Number.isFinite(e.limit)&&t.splice(e.limit),t}function ot(t,e,n){return n(t.item).length-n(e.item).length}function it(t,e){return t.start-e.start}class lt{constructor(t,...e){this.finder=new tt(t,...e),this.find=this.finder.find.bind(this.finder)}}class ct{constructor(t,...e){this.finder=new nt(t,...e),this.find=this.finder.find.bind(this.finder)}}export{ct as AsyncFzf,lt as Fzf,K as asyncBasicMatch,Q as asyncExtendedMatch,J as basicMatch,ot as byLengthAsc,it as byStartAsc,Y as extendedMatch};
const normalized = {
216: "O",
223: "s",
248: "o",
273: "d",
295: "h",
305: "i",
320: "l",
322: "l",
359: "t",
383: "s",
384: "b",
385: "B",
387: "b",
390: "O",
392: "c",
393: "D",
394: "D",
396: "d",
398: "E",
400: "E",
402: "f",
403: "G",
407: "I",
409: "k",
410: "l",
412: "M",
413: "N",
414: "n",
415: "O",
421: "p",
427: "t",
429: "t",
430: "T",
434: "V",
436: "y",
438: "z",
477: "e",
485: "g",
544: "N",
545: "d",
549: "z",
564: "l",
565: "n",
566: "t",
567: "j",
570: "A",
571: "C",
572: "c",
573: "L",
574: "T",
575: "s",
576: "z",
579: "B",
580: "U",
581: "V",
582: "E",
583: "e",
584: "J",
585: "j",
586: "Q",
587: "q",
588: "R",
589: "r",
590: "Y",
591: "y",
592: "a",
593: "a",
595: "b",
596: "o",
597: "c",
598: "d",
599: "d",
600: "e",
603: "e",
604: "e",
605: "e",
606: "e",
607: "j",
608: "g",
609: "g",
610: "G",
613: "h",
614: "h",
616: "i",
618: "I",
619: "l",
620: "l",
621: "l",
623: "m",
624: "m",
625: "m",
626: "n",
627: "n",
628: "N",
629: "o",
633: "r",
634: "r",
635: "r",
636: "r",
637: "r",
638: "r",
639: "r",
640: "R",
641: "R",
642: "s",
647: "t",
648: "t",
649: "u",
651: "v",
652: "v",
653: "w",
654: "y",
655: "Y",
656: "z",
657: "z",
663: "c",
665: "B",
666: "e",
667: "G",
668: "H",
669: "j",
670: "k",
671: "L",
672: "q",
686: "h",
867: "a",
868: "e",
869: "i",
870: "o",
871: "u",
872: "c",
873: "d",
874: "h",
875: "m",
876: "r",
877: "t",
878: "v",
879: "x",
7424: "A",
7427: "B",
7428: "C",
7429: "D",
7431: "E",
7432: "e",
7433: "i",
7434: "J",
7435: "K",
7436: "L",
7437: "M",
7438: "N",
7439: "O",
7440: "O",
7441: "o",
7442: "o",
7443: "o",
7446: "o",
7447: "o",
7448: "P",
7449: "R",
7450: "R",
7451: "T",
7452: "U",
7453: "u",
7454: "u",
7455: "m",
7456: "V",
7457: "W",
7458: "Z",
7522: "i",
7523: "r",
7524: "u",
7525: "v",
7834: "a",
7835: "s",
8305: "i",
8341: "h",
8342: "k",
8343: "l",
8344: "m",
8345: "n",
8346: "p",
8347: "s",
8348: "t",
8580: "c"
};
for (let i = "\u0300".codePointAt(0); i <= "\u036F".codePointAt(0); ++i) {
const diacritic = String.fromCodePoint(i);
for (const asciiChar of "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz") {
const withDiacritic = (asciiChar + diacritic).normalize();
const withDiacriticCodePoint = withDiacritic.codePointAt(0);
if (withDiacriticCodePoint > 126) {
normalized[withDiacriticCodePoint] = asciiChar;
}
}
}
const ranges = {
a: [7844, 7863],
e: [7870, 7879],
o: [7888, 7907],
u: [7912, 7921]
};
for (const lowerChar of Object.keys(ranges)) {
const upperChar = lowerChar.toUpperCase();
for (let i = ranges[lowerChar][0]; i <= ranges[lowerChar][1]; ++i) {
normalized[i] = i % 2 === 0 ? upperChar : lowerChar;
}
}
function normalizeRune(rune) {
if (rune < 192 || rune > 8580) {
return rune;
}
const normalizedChar = normalized[rune];
if (normalizedChar !== void 0)
return normalizedChar.codePointAt(0);
return rune;
}
function toShort(number) {
return number;
}
function toInt(number) {
return number;
}
function maxInt16(num1, num2) {
return num1 > num2 ? num1 : num2;
}
const strToRunes = (str) => str.split("").map((s) => s.codePointAt(0));
const runesToStr = (runes) => runes.map((r) => String.fromCodePoint(r)).join("");
const whitespaceRunes = new Set(
" \f\n\r \v\xA0\u1680\u2028\u2029\u202F\u205F\u3000\uFEFF".split("").map((v) => v.codePointAt(0))
);
for (let codePoint = "\u2000".codePointAt(0); codePoint <= "\u200A".codePointAt(0); codePoint++) {
whitespaceRunes.add(codePoint);
}
const isWhitespace = (rune) => whitespaceRunes.has(rune);
const whitespacesAtStart = (runes) => {
let whitespaces = 0;
for (const rune of runes) {
if (isWhitespace(rune))
whitespaces++;
else
break;
}
return whitespaces;
};
const whitespacesAtEnd = (runes) => {
let whitespaces = 0;
for (let i = runes.length - 1; i >= 0; i--) {
if (isWhitespace(runes[i]))
whitespaces++;
else
break;
}
return whitespaces;
};
const MAX_ASCII = "\x7F".codePointAt(0);
const CAPITAL_A_RUNE = "A".codePointAt(0);
const CAPITAL_Z_RUNE = "Z".codePointAt(0);
const SMALL_A_RUNE = "a".codePointAt(0);
const SMALL_Z_RUNE = "z".codePointAt(0);
const NUMERAL_ZERO_RUNE = "0".codePointAt(0);
const NUMERAL_NINE_RUNE = "9".codePointAt(0);
function indexAt(index, max, forward) {
if (forward) {
return index;
}
return max - index - 1;
}
const SCORE_MATCH = 16, SCORE_GAP_START = -3, SCORE_GAP_EXTENTION = -1, BONUS_BOUNDARY = SCORE_MATCH / 2, BONUS_NON_WORD = SCORE_MATCH / 2, BONUS_CAMEL_123 = BONUS_BOUNDARY + SCORE_GAP_EXTENTION, BONUS_CONSECUTIVE = -(SCORE_GAP_START + SCORE_GAP_EXTENTION), BONUS_FIRST_CHAR_MULTIPLIER = 2;
function createPosSet(withPos) {
if (withPos) {
return /* @__PURE__ */ new Set();
}
return null;
}
function alloc16(offset, slab2, size) {
if (slab2 !== null && slab2.i16.length > offset + size) {
const subarray = slab2.i16.subarray(offset, offset + size);
return [offset + size, subarray];
}
return [offset, new Int16Array(size)];
}
function alloc32(offset, slab2, size) {
if (slab2 !== null && slab2.i32.length > offset + size) {
const subarray = slab2.i32.subarray(offset, offset + size);
return [offset + size, subarray];
}
return [offset, new Int32Array(size)];
}
function charClassOfAscii(rune) {
if (rune >= SMALL_A_RUNE && rune <= SMALL_Z_RUNE) {
return 1;
} else if (rune >= CAPITAL_A_RUNE && rune <= CAPITAL_Z_RUNE) {
return 2;
} else if (rune >= NUMERAL_ZERO_RUNE && rune <= NUMERAL_NINE_RUNE) {
return 4;
} else {
return 0;
}
}
function charClassOfNonAscii(rune) {
const char = String.fromCodePoint(rune);
if (char !== char.toUpperCase()) {
return 1;
} else if (char !== char.toLowerCase()) {
return 2;
} else if (char.match(/\p{Number}/gu) !== null) {
return 4;
} else if (char.match(/\p{Letter}/gu) !== null) {
return 3;
}
return 0;
}
function charClassOf(rune) {
if (rune <= MAX_ASCII) {
return charClassOfAscii(rune);
}
return charClassOfNonAscii(rune);
}
function bonusFor(prevClass, currClass) {
if (prevClass === 0 && currClass !== 0) {
return BONUS_BOUNDARY;
} else if (prevClass === 1 && currClass === 2 || prevClass !== 4 && currClass === 4) {
return BONUS_CAMEL_123;
} else if (currClass === 0) {
return BONUS_NON_WORD;
}
return 0;
}
function bonusAt(input, idx) {
if (idx === 0) {
return BONUS_BOUNDARY;
}
return bonusFor(charClassOf(input[idx - 1]), charClassOf(input[idx]));
}
function trySkip(input, caseSensitive, char, from) {
let rest = input.slice(from);
let idx = rest.indexOf(char);
if (idx === 0) {
return from;
}
if (!caseSensitive && char >= SMALL_A_RUNE && char <= SMALL_Z_RUNE) {
if (idx > 0) {
rest = rest.slice(0, idx);
}
const uidx = rest.indexOf(char - 32);
if (uidx >= 0) {
idx = uidx;
}
}
if (idx < 0) {
return -1;
}
return from + idx;
}
function isAscii(runes) {
for (const rune of runes) {
if (rune >= 128) {
return false;
}
}
return true;
}
function asciiFuzzyIndex(input, pattern, caseSensitive) {
if (!isAscii(input)) {
return 0;
}
if (!isAscii(pattern)) {
return -1;
}
let firstIdx = 0, idx = 0;
for (let pidx = 0; pidx < pattern.length; pidx++) {
idx = trySkip(input, caseSensitive, pattern[pidx], idx);
if (idx < 0) {
return -1;
}
if (pidx === 0 && idx > 0) {
firstIdx = idx - 1;
}
idx++;
}
return firstIdx;
}
const fuzzyMatchV2 = (caseSensitive, normalize, forward, input, pattern, withPos, slab2) => {
const M = pattern.length;
if (M === 0) {
return [{ start: 0, end: 0, score: 0 }, createPosSet(withPos)];
}
const N = input.length;
if (slab2 !== null && N * M > slab2.i16.length) {
return fuzzyMatchV1(caseSensitive, normalize, forward, input, pattern, withPos);
}
const idx = asciiFuzzyIndex(input, pattern, caseSensitive);
if (idx < 0) {
return [{ start: -1, end: -1, score: 0 }, null];
}
let offset16 = 0, offset32 = 0, H0 = null, C0 = null, B = null, F = null;
[offset16, H0] = alloc16(offset16, slab2, N);
[offset16, C0] = alloc16(offset16, slab2, N);
[offset16, B] = alloc16(offset16, slab2, N);
[offset32, F] = alloc32(offset32, slab2, M);
const [, T] = alloc32(offset32, slab2, N);
for (let i = 0; i < T.length; i++) {
T[i] = input[i];
}
let maxScore = toShort(0), maxScorePos = 0;
let pidx = 0, lastIdx = 0;
const pchar0 = pattern[0];
let pchar = pattern[0], prevH0 = toShort(0), prevCharClass = 0, inGap = false;
let Tsub = T.subarray(idx);
let H0sub = H0.subarray(idx).subarray(0, Tsub.length), C0sub = C0.subarray(idx).subarray(0, Tsub.length), Bsub = B.subarray(idx).subarray(0, Tsub.length);
for (let [off, char] of Tsub.entries()) {
let charClass = null;
if (char <= MAX_ASCII) {
charClass = charClassOfAscii(char);
if (!caseSensitive && charClass === 2) {
char += 32;
}
} else {
charClass = charClassOfNonAscii(char);
if (!caseSensitive && charClass === 2) {
char = String.fromCodePoint(char).toLowerCase().codePointAt(0);
}
if (normalize) {
char = normalizeRune(char);
}
}
Tsub[off] = char;
const bonus = bonusFor(prevCharClass, charClass);
Bsub[off] = bonus;
prevCharClass = charClass;
if (char === pchar) {
if (pidx < M) {
F[pidx] = toInt(idx + off);
pidx++;
pchar = pattern[Math.min(pidx, M - 1)];
}
lastIdx = idx + off;
}
if (char === pchar0) {
const score = SCORE_MATCH + bonus * BONUS_FIRST_CHAR_MULTIPLIER;
H0sub[off] = score;
C0sub[off] = 1;
if (M === 1 && (forward && score > maxScore || !forward && score >= maxScore)) {
maxScore = score;
maxScorePos = idx + off;
if (forward && bonus === BONUS_BOUNDARY) {
break;
}
}
inGap = false;
} else {
if (inGap) {
H0sub[off] = maxInt16(prevH0 + SCORE_GAP_EXTENTION, 0);
} else {
H0sub[off] = maxInt16(prevH0 + SCORE_GAP_START, 0);
}
C0sub[off] = 0;
inGap = true;
}
prevH0 = H0sub[off];
}
if (pidx !== M) {
return [{ start: -1, end: -1, score: 0 }, null];
}
if (M === 1) {
const result = {
start: maxScorePos,
end: maxScorePos + 1,
score: maxScore
};
if (!withPos) {
return [result, null];
}
const pos2 = /* @__PURE__ */ new Set();
pos2.add(maxScorePos);
return [result, pos2];
}
const f0 = F[0];
const width = lastIdx - f0 + 1;
let H = null;
[offset16, H] = alloc16(offset16, slab2, width * M);
{
const toCopy = H0.subarray(f0, lastIdx + 1);
for (const [i, v] of toCopy.entries()) {
H[i] = v;
}
}
let [, C] = alloc16(offset16, slab2, width * M);
{
const toCopy = C0.subarray(f0, lastIdx + 1);
for (const [i, v] of toCopy.entries()) {
C[i] = v;
}
}
const Fsub = F.subarray(1);
const Psub = pattern.slice(1).slice(0, Fsub.length);
for (const [off, f] of Fsub.entries()) {
let inGap2 = false;
const pchar2 = Psub[off], pidx2 = off + 1, row = pidx2 * width, Tsub2 = T.subarray(f, lastIdx + 1), Bsub2 = B.subarray(f).subarray(0, Tsub2.length), Csub = C.subarray(row + f - f0).subarray(0, Tsub2.length), Cdiag = C.subarray(row + f - f0 - 1 - width).subarray(0, Tsub2.length), Hsub = H.subarray(row + f - f0).subarray(0, Tsub2.length), Hdiag = H.subarray(row + f - f0 - 1 - width).subarray(0, Tsub2.length), Hleft = H.subarray(row + f - f0 - 1).subarray(0, Tsub2.length);
Hleft[0] = 0;
for (const [off2, char] of Tsub2.entries()) {
const col = off2 + f;
let s1 = 0, s2 = 0, consecutive = 0;
if (inGap2) {
s2 = Hleft[off2] + SCORE_GAP_EXTENTION;
} else {
s2 = Hleft[off2] + SCORE_GAP_START;
}
if (pchar2 === char) {
s1 = Hdiag[off2] + SCORE_MATCH;
let b = Bsub2[off2];
consecutive = Cdiag[off2] + 1;
if (b === BONUS_BOUNDARY) {
consecutive = 1;
} else if (consecutive > 1) {
b = maxInt16(b, maxInt16(BONUS_CONSECUTIVE, B[col - consecutive + 1]));
}
if (s1 + b < s2) {
s1 += Bsub2[off2];
consecutive = 0;
} else {
s1 += b;
}
}
Csub[off2] = consecutive;
inGap2 = s1 < s2;
const score = maxInt16(maxInt16(s1, s2), 0);
if (pidx2 === M - 1 && (forward && score > maxScore || !forward && score >= maxScore)) {
maxScore = score;
maxScorePos = col;
}
Hsub[off2] = score;
}
}
const pos = createPosSet(withPos);
let j = f0;
if (withPos && pos !== null) {
let i = M - 1;
j = maxScorePos;
let preferMatch = true;
while (true) {
const I = i * width, j0 = j - f0, s = H[I + j0];
let s1 = 0, s2 = 0;
if (i > 0 && j >= F[i]) {
s1 = H[I - width + j0 - 1];
}
if (j > F[i]) {
s2 = H[I + j0 - 1];
}
if (s > s1 && (s > s2 || s === s2 && preferMatch)) {
pos.add(j);
if (i === 0) {
break;
}
i--;
}
preferMatch = C[I + j0] > 1 || I + width + j0 + 1 < C.length && C[I + width + j0 + 1] > 0;
j--;
}
}
return [{ start: j, end: maxScorePos + 1, score: maxScore }, pos];
};
function calculateScore(caseSensitive, normalize, text, pattern, sidx, eidx, withPos) {
let pidx = 0, score = 0, inGap = false, consecutive = 0, firstBonus = toShort(0);
const pos = createPosSet(withPos);
let prevCharClass = 0;
if (sidx > 0) {
prevCharClass = charClassOf(text[sidx - 1]);
}
for (let idx = sidx; idx < eidx; idx++) {
let rune = text[idx];
const charClass = charClassOf(rune);
if (!caseSensitive) {
if (rune >= CAPITAL_A_RUNE && rune <= CAPITAL_Z_RUNE) {
rune += 32;
} else if (rune > MAX_ASCII) {
rune = String.fromCodePoint(rune).toLowerCase().codePointAt(0);
}
}
if (normalize) {
rune = normalizeRune(rune);
}
if (rune === pattern[pidx]) {
if (withPos && pos !== null) {
pos.add(idx);
}
score += SCORE_MATCH;
let bonus = bonusFor(prevCharClass, charClass);
if (consecutive === 0) {
firstBonus = bonus;
} else {
if (bonus === BONUS_BOUNDARY) {
firstBonus = bonus;
}
bonus = maxInt16(maxInt16(bonus, firstBonus), BONUS_CONSECUTIVE);
}
if (pidx === 0) {
score += bonus * BONUS_FIRST_CHAR_MULTIPLIER;
} else {
score += bonus;
}
inGap = false;
consecutive++;
pidx++;
} else {
if (inGap) {
score += SCORE_GAP_EXTENTION;
} else {
score += SCORE_GAP_START;
}
inGap = true;
consecutive = 0;
firstBonus = 0;
}
prevCharClass = charClass;
}
return [score, pos];
}
const fuzzyMatchV1 = (caseSensitive, normalize, forward, text, pattern, withPos, slab2) => {
if (pattern.length === 0) {
return [{ start: 0, end: 0, score: 0 }, null];
}
if (asciiFuzzyIndex(text, pattern, caseSensitive) < 0) {
return [{ start: -1, end: -1, score: 0 }, null];
}
let pidx = 0, sidx = -1, eidx = -1;
const lenRunes = text.length;
const lenPattern = pattern.length;
for (let index = 0; index < lenRunes; index++) {
let rune = text[indexAt(index, lenRunes, forward)];
if (!caseSensitive) {
if (rune >= CAPITAL_A_RUNE && rune <= CAPITAL_Z_RUNE) {
rune += 32;
} else if (rune > MAX_ASCII) {
rune = String.fromCodePoint(rune).toLowerCase().codePointAt(0);
}
}
if (normalize) {
rune = normalizeRune(rune);
}
const pchar = pattern[indexAt(pidx, lenPattern, forward)];
if (rune === pchar) {
if (sidx < 0) {
sidx = index;
}
pidx++;
if (pidx === lenPattern) {
eidx = index + 1;
break;
}
}
}
if (sidx >= 0 && eidx >= 0) {
pidx--;
for (let index = eidx - 1; index >= sidx; index--) {
const tidx = indexAt(index, lenRunes, forward);
let rune = text[tidx];
if (!caseSensitive) {
if (rune >= CAPITAL_A_RUNE && rune <= CAPITAL_Z_RUNE) {
rune += 32;
} else if (rune > MAX_ASCII) {
rune = String.fromCodePoint(rune).toLowerCase().codePointAt(0);
}
}
const pidx_ = indexAt(pidx, lenPattern, forward);
const pchar = pattern[pidx_];
if (rune === pchar) {
pidx--;
if (pidx < 0) {
sidx = index;
break;
}
}
}
if (!forward) {
const sidxTemp = sidx;
sidx = lenRunes - eidx;
eidx = lenRunes - sidxTemp;
}
const [score, pos] = calculateScore(
caseSensitive,
normalize,
text,
pattern,
sidx,
eidx,
withPos
);
return [{ start: sidx, end: eidx, score }, pos];
}
return [{ start: -1, end: -1, score: 0 }, null];
};
const exactMatchNaive = (caseSensitive, normalize, forward, text, pattern, withPos, slab2) => {
if (pattern.length === 0) {
return [{ start: 0, end: 0, score: 0 }, null];
}
const lenRunes = text.length;
const lenPattern = pattern.length;
if (lenRunes < lenPattern) {
return [{ start: -1, end: -1, score: 0 }, null];
}
if (asciiFuzzyIndex(text, pattern, caseSensitive) < 0) {
return [{ start: -1, end: -1, score: 0 }, null];
}
let pidx = 0;
let bestPos = -1, bonus = toShort(0), bestBonus = toShort(-1);
for (let index = 0; index < lenRunes; index++) {
const index_ = indexAt(index, lenRunes, forward);
let rune = text[index_];
if (!caseSensitive) {
if (rune >= CAPITAL_A_RUNE && rune <= CAPITAL_Z_RUNE) {
rune += 32;
} else if (rune > MAX_ASCII) {
rune = String.fromCodePoint(rune).toLowerCase().codePointAt(0);
}
}
if (normalize) {
rune = normalizeRune(rune);
}
const pidx_ = indexAt(pidx, lenPattern, forward);
const pchar = pattern[pidx_];
if (pchar === rune) {
if (pidx_ === 0) {
bonus = bonusAt(text, index_);
}
pidx++;
if (pidx === lenPattern) {
if (bonus > bestBonus) {
bestPos = index;
bestBonus = bonus;
}
if (bonus === BONUS_BOUNDARY) {
break;
}
index -= pidx - 1;
pidx = 0;
bonus = 0;
}
} else {
index -= pidx;
pidx = 0;
bonus = 0;
}
}
if (bestPos >= 0) {
let sidx = 0, eidx = 0;
if (forward) {
sidx = bestPos - lenPattern + 1;
eidx = bestPos + 1;
} else {
sidx = lenRunes - (bestPos + 1);
eidx = lenRunes - (bestPos - lenPattern + 1);
}
const [score] = calculateScore(caseSensitive, normalize, text, pattern, sidx, eidx, false);
return [{ start: sidx, end: eidx, score }, null];
}
return [{ start: -1, end: -1, score: 0 }, null];
};
const prefixMatch = (caseSensitive, normalize, forward, text, pattern, withPos, slab2) => {
if (pattern.length === 0) {
return [{ start: 0, end: 0, score: 0 }, null];
}
let trimmedLen = 0;
if (!isWhitespace(pattern[0])) {
trimmedLen = whitespacesAtStart(text);
}
if (text.length - trimmedLen < pattern.length) {
return [{ start: -1, end: -1, score: 0 }, null];
}
for (const [index, r] of pattern.entries()) {
let rune = text[trimmedLen + index];
if (!caseSensitive) {
rune = String.fromCodePoint(rune).toLowerCase().codePointAt(0);
}
if (normalize) {
rune = normalizeRune(rune);
}
if (rune !== r) {
return [{ start: -1, end: -1, score: 0 }, null];
}
}
const lenPattern = pattern.length;
const [score] = calculateScore(
caseSensitive,
normalize,
text,
pattern,
trimmedLen,
trimmedLen + lenPattern,
false
);
return [{ start: trimmedLen, end: trimmedLen + lenPattern, score }, null];
};
const suffixMatch = (caseSensitive, normalize, forward, text, pattern, withPos, slab2) => {
const lenRunes = text.length;
let trimmedLen = lenRunes;
if (pattern.length === 0 || !isWhitespace(pattern[pattern.length - 1])) {
trimmedLen -= whitespacesAtEnd(text);
}
if (pattern.length === 0) {
return [{ start: trimmedLen, end: trimmedLen, score: 0 }, null];
}
const diff = trimmedLen - pattern.length;
if (diff < 0) {
return [{ start: -1, end: -1, score: 0 }, null];
}
for (const [index, r] of pattern.entries()) {
let rune = text[index + diff];
if (!caseSensitive) {
rune = String.fromCodePoint(rune).toLowerCase().codePointAt(0);
}
if (normalize) {
rune = normalizeRune(rune);
}
if (rune !== r) {
return [{ start: -1, end: -1, score: 0 }, null];
}
}
const lenPattern = pattern.length;
const sidx = trimmedLen - lenPattern;
const eidx = trimmedLen;
const [score] = calculateScore(caseSensitive, normalize, text, pattern, sidx, eidx, false);
return [{ start: sidx, end: eidx, score }, null];
};
const equalMatch = (caseSensitive, normalize, forward, text, pattern, withPos, slab2) => {
const lenPattern = pattern.length;
if (lenPattern === 0) {
return [{ start: -1, end: -1, score: 0 }, null];
}
let trimmedLen = 0;
if (!isWhitespace(pattern[0])) {
trimmedLen = whitespacesAtStart(text);
}
let trimmedEndLen = 0;
if (!isWhitespace(pattern[lenPattern - 1])) {
trimmedEndLen = whitespacesAtEnd(text);
}
if (text.length - trimmedLen - trimmedEndLen != lenPattern) {
return [{ start: -1, end: -1, score: 0 }, null];
}
let match = true;
if (normalize) {
const runes = text;
for (const [idx, pchar] of pattern.entries()) {
let rune = runes[trimmedLen + idx];
if (!caseSensitive) {
rune = String.fromCodePoint(rune).toLowerCase().codePointAt(0);
}
if (normalizeRune(pchar) !== normalizeRune(rune)) {
match = false;
break;
}
}
} else {
let runesStr = runesToStr(text).substring(trimmedLen, text.length - trimmedEndLen);
if (!caseSensitive) {
runesStr = runesStr.toLowerCase();
}
match = runesStr === runesToStr(pattern);
}
if (match) {
return [
{
start: trimmedLen,
end: trimmedLen + lenPattern,
score: (SCORE_MATCH + BONUS_BOUNDARY) * lenPattern + (BONUS_FIRST_CHAR_MULTIPLIER - 1) * BONUS_BOUNDARY
},
null
];
}
return [{ start: -1, end: -1, score: 0 }, null];
};
const SLAB_16_SIZE = 100 * 1024;
const SLAB_32_SIZE = 2048;
function makeSlab(size16, size32) {
return {
i16: new Int16Array(size16),
i32: new Int32Array(size32)
};
}
const slab = makeSlab(SLAB_16_SIZE, SLAB_32_SIZE);
var TermType = /* @__PURE__ */ ((TermType2) => {
TermType2[TermType2["Fuzzy"] = 0] = "Fuzzy";
TermType2[TermType2["Exact"] = 1] = "Exact";
TermType2[TermType2["Prefix"] = 2] = "Prefix";
TermType2[TermType2["Suffix"] = 3] = "Suffix";
TermType2[TermType2["Equal"] = 4] = "Equal";
return TermType2;
})(TermType || {});
const termTypeMap = {
[0]: fuzzyMatchV2,
[1]: exactMatchNaive,
[2]: prefixMatch,
[3]: suffixMatch,
[4]: equalMatch
};
function buildPatternForExtendedMatch(fuzzy, caseMode, normalize, str) {
let cacheable = true;
str = str.trimLeft();
{
const trimmedAtRightStr = str.trimRight();
if (trimmedAtRightStr.endsWith("\\") && str[trimmedAtRightStr.length] === " ") {
str = trimmedAtRightStr + " ";
} else {
str = trimmedAtRightStr;
}
}
let sortable = false;
let termSets = [];
termSets = parseTerms(fuzzy, caseMode, normalize, str);
Loop:
for (const termSet of termSets) {
for (const [idx, term] of termSet.entries()) {
if (!term.inv) {
sortable = true;
}
if (!cacheable || idx > 0 || term.inv || fuzzy && term.typ !== 0 || !fuzzy && term.typ !== 1) {
cacheable = false;
if (sortable) {
break Loop;
}
}
}
}
return {
str,
termSets,
sortable,
cacheable,
fuzzy
};
}
function parseTerms(fuzzy, caseMode, normalize, str) {
str = str.replace(/\\ /g, " ");
const tokens = str.split(/ +/);
const sets = [];
let set = [];
let switchSet = false;
let afterBar = false;
for (const token of tokens) {
let typ = 0, inv = false, text = token.replace(/\t/g, " ");
const lowerText = text.toLowerCase();
const caseSensitive = caseMode === "case-sensitive" || caseMode === "smart-case" && text !== lowerText;
const normalizeTerm = normalize && lowerText === runesToStr(strToRunes(lowerText).map(normalizeRune));
if (!caseSensitive) {
text = lowerText;
}
if (!fuzzy) {
typ = 1;
}
if (set.length > 0 && !afterBar && text === "|") {
switchSet = false;
afterBar = true;
continue;
}
afterBar = false;
if (text.startsWith("!")) {
inv = true;
typ = 1;
text = text.substring(1);
}
if (text !== "$" && text.endsWith("$")) {
typ = 3;
text = text.substring(0, text.length - 1);
}
if (text.startsWith("'")) {
if (fuzzy && !inv) {
typ = 1;
} else {
typ = 0;
}
text = text.substring(1);
} else if (text.startsWith("^")) {
if (typ === 3) {
typ = 4;
} else {
typ = 2;
}
text = text.substring(1);
}
if (text.length > 0) {
if (switchSet) {
sets.push(set);
set = [];
}
let textRunes = strToRunes(text);
if (normalizeTerm) {
textRunes = textRunes.map(normalizeRune);
}
set.push({
typ,
inv,
text: textRunes,
caseSensitive,
normalize: normalizeTerm
});
switchSet = true;
}
}
if (set.length > 0) {
sets.push(set);
}
return sets;
}
const buildPatternForBasicMatch = (query, casing, normalize) => {
let caseSensitive = false;
switch (casing) {
case "smart-case":
if (query.toLowerCase() !== query) {
caseSensitive = true;
}
break;
case "case-sensitive":
caseSensitive = true;
break;
case "case-insensitive":
query = query.toLowerCase();
caseSensitive = false;
break;
}
let queryRunes = strToRunes(query);
if (normalize) {
queryRunes = queryRunes.map(normalizeRune);
}
return {
queryRunes,
caseSensitive
};
};
function iter(algoFn, tokens, caseSensitive, normalize, forward, pattern, slab2) {
for (const part of tokens) {
const [res, pos] = algoFn(caseSensitive, normalize, forward, part.text, pattern, true, slab2);
if (res.start >= 0) {
const sidx = res.start + part.prefixLength;
const eidx = res.end + part.prefixLength;
if (pos !== null) {
const newPos = /* @__PURE__ */ new Set();
pos.forEach((v) => newPos.add(part.prefixLength + v));
return [[sidx, eidx], res.score, newPos];
}
return [[sidx, eidx], res.score, pos];
}
}
return [[-1, -1], 0, null];
}
function computeExtendedMatch(text, pattern, fuzzyAlgo, forward) {
const input = [
{
text,
prefixLength: 0
}
];
const offsets = [];
let totalScore = 0;
const allPos = /* @__PURE__ */ new Set();
for (const termSet of pattern.termSets) {
let offset = [0, 0];
let currentScore = 0;
let matched = false;
for (const term of termSet) {
let algoFn = termTypeMap[term.typ];
if (term.typ === TermType.Fuzzy) {
algoFn = fuzzyAlgo;
}
const [off, score, pos] = iter(
algoFn,
input,
term.caseSensitive,
term.normalize,
forward,
term.text,
slab
);
const sidx = off[0];
if (sidx >= 0) {
if (term.inv) {
continue;
}
offset = off;
currentScore = score;
matched = true;
if (pos !== null) {
pos.forEach((v) => allPos.add(v));
} else {
for (let idx = off[0]; idx < off[1]; ++idx) {
allPos.add(idx);
}
}
break;
} else if (term.inv) {
offset = [0, 0];
currentScore = 0;
matched = true;
continue;
}
}
if (matched) {
offsets.push(offset);
totalScore += currentScore;
}
}
return { offsets, totalScore, allPos };
}
function getResultFromScoreMap(scoreMap, limit) {
const scoresInDesc = Object.keys(scoreMap).map((v) => parseInt(v, 10)).sort((a, b) => b - a);
let result = [];
for (const score of scoresInDesc) {
result = result.concat(scoreMap[score]);
if (result.length >= limit) {
break;
}
}
return result;
}
function getBasicMatchIter(scoreMap, queryRunes, caseSensitive) {
return (idx) => {
const itemRunes = this.runesList[idx];
if (queryRunes.length > itemRunes.length)
return;
let [match, positions] = this.algoFn(
caseSensitive,
this.opts.normalize,
this.opts.forward,
itemRunes,
queryRunes,
true,
slab
);
if (match.start === -1)
return;
if (this.opts.fuzzy === false) {
positions = /* @__PURE__ */ new Set();
for (let position = match.start; position < match.end; ++position) {
positions.add(position);
}
}
const scoreKey = this.opts.sort ? match.score : 0;
if (scoreMap[scoreKey] === void 0) {
scoreMap[scoreKey] = [];
}
scoreMap[scoreKey].push({
item: this.items[idx],
...match,
positions: positions != null ? positions : /* @__PURE__ */ new Set()
});
};
}
function getExtendedMatchIter(scoreMap, pattern) {
return (idx) => {
const runes = this.runesList[idx];
const match = computeExtendedMatch(runes, pattern, this.algoFn, this.opts.forward);
if (match.offsets.length !== pattern.termSets.length)
return;
let sidx = -1, eidx = -1;
if (match.allPos.size > 0) {
sidx = Math.min(...match.allPos);
eidx = Math.max(...match.allPos) + 1;
}
const scoreKey = this.opts.sort ? match.totalScore : 0;
if (scoreMap[scoreKey] === void 0) {
scoreMap[scoreKey] = [];
}
scoreMap[scoreKey].push({
score: match.totalScore,
item: this.items[idx],
positions: match.allPos,
start: sidx,
end: eidx
});
};
}
function basicMatch(query) {
const { queryRunes, caseSensitive } = buildPatternForBasicMatch(
query,
this.opts.casing,
this.opts.normalize
);
const scoreMap = {};
const iter2 = getBasicMatchIter.bind(this)(
scoreMap,
queryRunes,
caseSensitive
);
for (let i = 0, len = this.runesList.length; i < len; ++i) {
iter2(i);
}
return getResultFromScoreMap(scoreMap, this.opts.limit);
}
function extendedMatch(query) {
const pattern = buildPatternForExtendedMatch(
Boolean(this.opts.fuzzy),
this.opts.casing,
this.opts.normalize,
query
);
const scoreMap = {};
const iter2 = getExtendedMatchIter.bind(this)(scoreMap, pattern);
for (let i = 0, len = this.runesList.length; i < len; ++i) {
iter2(i);
}
return getResultFromScoreMap(scoreMap, this.opts.limit);
}
const isNode = typeof require !== "undefined" && typeof window === "undefined";
function asyncMatcher(token, len, iter2, onFinish) {
return new Promise((resolve, reject) => {
const INCREMENT = 1e3;
let i = 0, end = Math.min(INCREMENT, len);
const step = () => {
if (token.cancelled)
return reject("search cancelled");
for (; i < end; ++i) {
iter2(i);
}
if (end < len) {
end = Math.min(end + INCREMENT, len);
isNode ? setImmediate(step) : setTimeout(step);
} else {
resolve(onFinish());
}
};
step();
});
}
function asyncBasicMatch(query, token) {
const { queryRunes, caseSensitive } = buildPatternForBasicMatch(
query,
this.opts.casing,
this.opts.normalize
);
const scoreMap = {};
return asyncMatcher(
token,
this.runesList.length,
getBasicMatchIter.bind(this)(scoreMap, queryRunes, caseSensitive),
() => getResultFromScoreMap(scoreMap, this.opts.limit)
);
}
function asyncExtendedMatch(query, token) {
const pattern = buildPatternForExtendedMatch(
Boolean(this.opts.fuzzy),
this.opts.casing,
this.opts.normalize,
query
);
const scoreMap = {};
return asyncMatcher(
token,
this.runesList.length,
getExtendedMatchIter.bind(this)(scoreMap, pattern),
() => getResultFromScoreMap(scoreMap, this.opts.limit)
);
}
const defaultOpts = {
limit: Infinity,
selector: (v) => v,
casing: "smart-case",
normalize: true,
fuzzy: "v2",
tiebreakers: [],
sort: true,
forward: true
};
class BaseFinder {
constructor(list, ...optionsTuple) {
this.opts = { ...defaultOpts, ...optionsTuple[0] };
this.items = list;
this.runesList = list.map((item) => strToRunes(this.opts.selector(item).normalize()));
this.algoFn = exactMatchNaive;
switch (this.opts.fuzzy) {
case "v2":
this.algoFn = fuzzyMatchV2;
break;
case "v1":
this.algoFn = fuzzyMatchV1;
break;
}
}
}
const syncDefaultOpts = {
...defaultOpts,
match: basicMatch
};
class SyncFinder extends BaseFinder {
constructor(list, ...optionsTuple) {
super(list, ...optionsTuple);
this.opts = { ...syncDefaultOpts, ...optionsTuple[0] };
}
find(query) {
if (query.length === 0 || this.items.length === 0)
return this.items.slice(0, this.opts.limit).map(createResultItemWithEmptyPos);
query = query.normalize();
let result = this.opts.match.bind(this)(query);
return postProcessResultItems(result, this.opts);
}
}
const asyncDefaultOpts = {
...defaultOpts,
match: asyncBasicMatch
};
class AsyncFinder extends BaseFinder {
constructor(list, ...optionsTuple) {
super(list, ...optionsTuple);
this.opts = { ...asyncDefaultOpts, ...optionsTuple[0] };
this.token = { cancelled: false };
}
async find(query) {
this.token.cancelled = true;
this.token = { cancelled: false };
if (query.length === 0 || this.items.length === 0)
return this.items.slice(0, this.opts.limit).map(createResultItemWithEmptyPos);
query = query.normalize();
let result = await this.opts.match.bind(this)(query, this.token);
return postProcessResultItems(result, this.opts);
}
}
const createResultItemWithEmptyPos = (item) => ({
item,
start: -1,
end: -1,
score: 0,
positions: /* @__PURE__ */ new Set()
});
function postProcessResultItems(result, opts) {
if (opts.sort) {
const { selector } = opts;
result.sort((a, b) => {
if (a.score === b.score) {
for (const tiebreaker of opts.tiebreakers) {
const diff = tiebreaker(a, b, selector);
if (diff !== 0) {
return diff;
}
}
}
return 0;
});
}
if (Number.isFinite(opts.limit)) {
result.splice(opts.limit);
}
return result;
}
function byLengthAsc(a, b, selector) {
return selector(a.item).length - selector(b.item).length;
}
function byStartAsc(a, b) {
return a.start - b.start;
}
class Fzf {
constructor(list, ...optionsTuple) {
this.finder = new SyncFinder(list, ...optionsTuple);
this.find = this.finder.find.bind(this.finder);
}
}
class AsyncFzf {
constructor(list, ...optionsTuple) {
this.finder = new AsyncFinder(list, ...optionsTuple);
this.find = this.finder.find.bind(this.finder);
}
}
export { AsyncFzf, Fzf, asyncBasicMatch, asyncExtendedMatch, basicMatch, byLengthAsc, byStartAsc, extendedMatch };

7

dist/fzf.umd.js
/** @license
* fzf v0.5.1
* Copyright (c) 2021-2022 Ajit
* fzf v0.5.2
* Copyright (c) 2021 Ajit
* Licensed under BSD 3-Clause
*/
var __defProp=Object.defineProperty,__defProps=Object.defineProperties,__getOwnPropDescs=Object.getOwnPropertyDescriptors,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(t,e,n)=>e in t?__defProp(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,__spreadValues=(t,e)=>{for(var n in e||(e={}))__hasOwnProp.call(e,n)&&__defNormalProp(t,n,e[n]);if(__getOwnPropSymbols)for(var n of __getOwnPropSymbols(e))__propIsEnum.call(e,n)&&__defNormalProp(t,n,e[n]);return t},__spreadProps=(t,e)=>__defProps(t,__getOwnPropDescs(e));!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).fzf={})}(this,(function(t){"use strict";const e={216:"O",223:"s",248:"o",273:"d",295:"h",305:"i",320:"l",322:"l",359:"t",383:"s",384:"b",385:"B",387:"b",390:"O",392:"c",393:"D",394:"D",396:"d",398:"E",400:"E",402:"f",403:"G",407:"I",409:"k",410:"l",412:"M",413:"N",414:"n",415:"O",421:"p",427:"t",429:"t",430:"T",434:"V",436:"y",438:"z",477:"e",485:"g",544:"N",545:"d",549:"z",564:"l",565:"n",566:"t",567:"j",570:"A",571:"C",572:"c",573:"L",574:"T",575:"s",576:"z",579:"B",580:"U",581:"V",582:"E",583:"e",584:"J",585:"j",586:"Q",587:"q",588:"R",589:"r",590:"Y",591:"y",592:"a",593:"a",595:"b",596:"o",597:"c",598:"d",599:"d",600:"e",603:"e",604:"e",605:"e",606:"e",607:"j",608:"g",609:"g",610:"G",613:"h",614:"h",616:"i",618:"I",619:"l",620:"l",621:"l",623:"m",624:"m",625:"m",626:"n",627:"n",628:"N",629:"o",633:"r",634:"r",635:"r",636:"r",637:"r",638:"r",639:"r",640:"R",641:"R",642:"s",647:"t",648:"t",649:"u",651:"v",652:"v",653:"w",654:"y",655:"Y",656:"z",657:"z",663:"c",665:"B",666:"e",667:"G",668:"H",669:"j",670:"k",671:"L",672:"q",686:"h",867:"a",868:"e",869:"i",870:"o",871:"u",872:"c",873:"d",874:"h",875:"m",876:"r",877:"t",878:"v",879:"x",7424:"A",7427:"B",7428:"C",7429:"D",7431:"E",7432:"e",7433:"i",7434:"J",7435:"K",7436:"L",7437:"M",7438:"N",7439:"O",7440:"O",7441:"o",7442:"o",7443:"o",7446:"o",7447:"o",7448:"P",7449:"R",7450:"R",7451:"T",7452:"U",7453:"u",7454:"u",7455:"m",7456:"V",7457:"W",7458:"Z",7522:"i",7523:"r",7524:"u",7525:"v",7834:"a",7835:"s",8305:"i",8341:"h",8342:"k",8343:"l",8344:"m",8345:"n",8346:"p",8347:"s",8348:"t",8580:"c"};for(let ot="̀".codePointAt(0);ot<="ͯ".codePointAt(0);++ot){const t=String.fromCodePoint(ot);for(const n of"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"){const r=(n+t).normalize().codePointAt(0);r>126&&(e[r]=n)}}const n={a:[7844,7863],e:[7870,7879],o:[7888,7907],u:[7912,7921]};for(const ot of Object.keys(n)){const t=ot.toUpperCase();for(let r=n[ot][0];r<=n[ot][1];++r)e[r]=r%2==0?t:ot}function r(t){if(t<192||t>8580)return t;const n=e[t];return void 0!==n?n.codePointAt(0):t}function s(t,e){return t>e?t:e}const o=t=>t.split("").map((t=>t.codePointAt(0))),i=t=>t.map((t=>String.fromCodePoint(t))).join(""),l=new Set(" \f\n\r\t\v  \u2028\u2029   \ufeff".split("").map((t=>t.codePointAt(0))));for(let ot=" ".codePointAt(0);ot<=" ".codePointAt(0);ot++)l.add(ot);const a=t=>l.has(t),c=t=>{let e=0;for(const n of t){if(!a(n))break;e++}return e},u=t=>{let e=0;for(let n=t.length-1;n>=0&&a(t[n]);n--)e++;return e},f="".codePointAt(0),h="A".codePointAt(0),d="Z".codePointAt(0),p="a".codePointAt(0),g="z".codePointAt(0),m="0".codePointAt(0),b="9".codePointAt(0);function y(t,e,n){return n?t:e-t-1}const P=16;var _,w;function z(t){return t?new Set:null}function S(t,e,n){if(null!==e&&e.i16.length>t+n){return[t+n,e.i16.subarray(t,t+n)]}return[t,new Int16Array(n)]}function L(t,e,n){if(null!==e&&e.i32.length>t+n){return[t+n,e.i32.subarray(t,t+n)]}return[t,new Int32Array(n)]}function A(t){return t>=p&&t<=g?1:t>=h&&t<=d?2:t>=m&&t<=b?4:0}function v(t){const e=String.fromCodePoint(t);return e!==e.toUpperCase()?1:e!==e.toLowerCase()?2:null!==e.match(/\p{Number}/gu)?4:null!==e.match(/\p{Letter}/gu)?3:0}function C(t){return t<=f?A(t):v(t)}function O(t,e){return 0===t&&0!==e?8:1===t&&2===e||4!==t&&4===e?7:0===e?8:0}function x(t,e,n,r){let s=t.slice(r),o=s.indexOf(n);if(0===o)return r;if(!e&&n>=p&&n<=g){o>0&&(s=s.slice(0,o));const t=s.indexOf(n-32);t>=0&&(o=t)}return o<0?-1:r+o}function k(t){for(const e of t)if(e>=128)return!1;return!0}function j(t,e,n){if(!k(t))return 0;if(!k(e))return-1;let r=0,s=0;for(let o=0;o<e.length;o++){if(s=x(t,n,e[o],s),s<0)return-1;0===o&&s>0&&(r=s-1),s++}return r}(w=_||(_={}))[w.NonWord=0]="NonWord",w[w.Lower=1]="Lower",w[w.Upper=2]="Upper",w[w.Letter=3]="Letter",w[w.Number=4]="Number";const E=(t,e,n,o,i,l,a)=>{const c=i.length;if(0===c)return[{start:0,end:0,score:0},z(l)];const u=o.length;if(null!==a&&u*c>a.i16.length)return N(t,e,n,o,i,l);const h=j(o,i,t);if(h<0)return[{start:-1,end:-1,score:0},null];let d=0,p=0,g=null,m=null,b=null,y=null;[d,g]=S(d,a,u),[d,m]=S(d,a,u),[d,b]=S(d,a,u),[p,y]=L(p,a,c);const[,_]=L(p,a,u);for(let r=0;r<_.length;r++)_[r]=o[r];let w=0,C=0,x=0,k=0;const E=i[0];let M=i[0],V=0,F=0,I=!1,R=_.subarray(h),q=g.subarray(h).subarray(0,R.length),W=m.subarray(h).subarray(0,R.length),B=b.subarray(h).subarray(0,R.length);for(let[z,S]of R.entries()){let o=null;S<=f?(o=A(S),t||2!==o||(S+=32)):(o=v(S),t||2!==o||(S=String.fromCodePoint(S).toLowerCase().codePointAt(0)),e&&(S=r(S))),R[z]=S;const l=O(F,o);if(B[z]=l,F=o,S===M&&(x<c&&(y[x]=h+z,x++,M=i[Math.min(x,c-1)]),k=h+z),S===E){const t=P+2*l;if(q[z]=t,W[z]=1,1===c&&(n&&t>w||!n&&t>=w)&&(w=t,C=h+z,n&&8===l))break;I=!1}else q[z]=s(I?V+-1:V+-3,0),W[z]=0,I=!0;V=q[z]}if(x!==c)return[{start:-1,end:-1,score:0},null];if(1===c){const t={start:C,end:C+1,score:w};if(!l)return[t,null];const e=new Set;return e.add(C),[t,e]}const T=y[0],D=k-T+1;let U=null;[d,U]=S(d,a,D*c);{const t=g.subarray(T,k+1);for(const[e,n]of t.entries())U[e]=n}let[,G]=S(d,a,D*c);{const t=m.subarray(T,k+1);for(const[e,n]of t.entries())G[e]=n}const J=y.subarray(1),Y=i.slice(1).slice(0,J.length);for(const[r,f]of J.entries()){let t=!1;const e=Y[r],o=r+1,i=o*D,l=_.subarray(f,k+1),a=b.subarray(f).subarray(0,l.length),u=G.subarray(i+f-T).subarray(0,l.length),h=G.subarray(i+f-T-1-D).subarray(0,l.length),d=U.subarray(i+f-T).subarray(0,l.length),p=U.subarray(i+f-T-1-D).subarray(0,l.length),g=U.subarray(i+f-T-1).subarray(0,l.length);g[0]=0;for(const[r,m]of l.entries()){const i=r+f;let l=0,y=0,_=0;if(y=t?g[r]+-1:g[r]+-3,e===m){l=p[r]+P;let t=a[r];_=h[r]+1,8===t?_=1:_>1&&(t=s(t,s(4,b[i-_+1]))),l+t<y?(l+=a[r],_=0):l+=t}u[r]=_,t=l<y;const z=s(s(l,y),0);o===c-1&&(n&&z>w||!n&&z>=w)&&(w=z,C=i),d[r]=z}}const Z=z(l);let H=T;if(l&&null!==Z){let t=c-1;H=C;let e=!0;for(;;){const n=t*D,r=H-T,s=U[n+r];let o=0,i=0;if(t>0&&H>=y[t]&&(o=U[n-D+r-1]),H>y[t]&&(i=U[n+r-1]),s>o&&(s>i||s===i&&e)){if(Z.add(H),0===t)break;t--}e=G[n+r]>1||n+D+r+1<G.length&&G[n+D+r+1]>0,H--}}return[{start:H,end:C+1,score:w},Z]};function M(t,e,n,o,i,l,a){let c=0,u=0,p=!1,g=0,m=0;const b=z(a);let y=0;i>0&&(y=C(n[i-1]));for(let _=i;_<l;_++){let i=n[_];const l=C(i);if(t||(i>=h&&i<=d?i+=32:i>f&&(i=String.fromCodePoint(i).toLowerCase().codePointAt(0))),e&&(i=r(i)),i===o[c]){a&&null!==b&&b.add(_),u+=P;let t=O(y,l);0===g?m=t:(8===t&&(m=t),t=s(s(t,m),4)),u+=0===c?2*t:t,p=!1,g++,c++}else u+=p?-1:-3,p=!0,g=0,m=0;y=l}return[u,b]}const N=(t,e,n,s,o,i,l)=>{if(0===o.length)return[{start:0,end:0,score:0},null];if(j(s,o,t)<0)return[{start:-1,end:-1,score:0},null];let a=0,c=-1,u=-1;const p=s.length,g=o.length;for(let m=0;m<p;m++){let i=s[y(m,p,n)];t||(i>=h&&i<=d?i+=32:i>f&&(i=String.fromCodePoint(i).toLowerCase().codePointAt(0))),e&&(i=r(i));if(i===o[y(a,g,n)]&&(c<0&&(c=m),a++,a===g)){u=m+1;break}}if(c>=0&&u>=0){a--;for(let e=u-1;e>=c;e--){let r=s[y(e,p,n)];t||(r>=h&&r<=d?r+=32:r>f&&(r=String.fromCodePoint(r).toLowerCase().codePointAt(0)));if(r===o[y(a,g,n)]&&(a--,a<0)){c=e;break}}if(!n){const t=c;c=p-u,u=p-t}const[r,l]=M(t,e,s,o,c,u,i);return[{start:c,end:u,score:r},l]}return[{start:-1,end:-1,score:0},null]},V=(t,e,n,s,o,i,l)=>{if(0===o.length)return[{start:0,end:0,score:0},null];const a=s.length,c=o.length;if(a<c)return[{start:-1,end:-1,score:0},null];if(j(s,o,t)<0)return[{start:-1,end:-1,score:0},null];let u=0,p=-1,g=0,m=-1;for(let _=0;_<a;_++){const i=y(_,a,n);let l=s[i];t||(l>=h&&l<=d?l+=32:l>f&&(l=String.fromCodePoint(l).toLowerCase().codePointAt(0))),e&&(l=r(l));const w=y(u,c,n);if(o[w]===l){if(0===w&&(b=s,g=0===(P=i)?8:O(C(b[P-1]),C(b[P]))),u++,u===c){if(g>m&&(p=_,m=g),8===g)break;_-=u-1,u=0,g=0}}else _-=u,u=0,g=0}var b,P;if(p>=0){let r=0,i=0;n?(r=p-c+1,i=p+1):(r=a-(p+1),i=a-(p-c+1));const[l]=M(t,e,s,o,r,i,!1);return[{start:r,end:i,score:l},null]}return[{start:-1,end:-1,score:0},null]};const F=(I=2048,{i16:new Int16Array(102400),i32:new Int32Array(I)});var I,R,q;(q=R||(R={}))[q.Fuzzy=0]="Fuzzy",q[q.Exact=1]="Exact",q[q.Prefix=2]="Prefix",q[q.Suffix=3]="Suffix",q[q.Equal=4]="Equal";const W={0:E,1:V,2:(t,e,n,s,o,i,l)=>{if(0===o.length)return[{start:0,end:0,score:0},null];let u=0;if(a(o[0])||(u=c(s)),s.length-u<o.length)return[{start:-1,end:-1,score:0},null];for(const[a,c]of o.entries()){let n=s[u+a];if(t||(n=String.fromCodePoint(n).toLowerCase().codePointAt(0)),e&&(n=r(n)),n!==c)return[{start:-1,end:-1,score:0},null]}const f=o.length,[h]=M(t,e,s,o,u,u+f,!1);return[{start:u,end:u+f,score:h},null]},3:(t,e,n,s,o,i,l)=>{let c=s.length;if(0!==o.length&&a(o[o.length-1])||(c-=u(s)),0===o.length)return[{start:c,end:c,score:0},null];const f=c-o.length;if(f<0)return[{start:-1,end:-1,score:0},null];for(const[a,u]of o.entries()){let n=s[a+f];if(t||(n=String.fromCodePoint(n).toLowerCase().codePointAt(0)),e&&(n=r(n)),n!==u)return[{start:-1,end:-1,score:0},null]}const h=c-o.length,d=c,[p]=M(t,e,s,o,h,d,!1);return[{start:h,end:d,score:p},null]},4:(t,e,n,s,o,l,f)=>{const h=o.length;if(0===h)return[{start:-1,end:-1,score:0},null];let d=0;a(o[0])||(d=c(s));let p=0;if(a(o[h-1])||(p=u(s)),s.length-d-p!=h)return[{start:-1,end:-1,score:0},null];let g=!0;if(e){const e=s;for(const[n,s]of o.entries()){let o=e[d+n];if(t||(o=String.fromCodePoint(o).toLowerCase().codePointAt(0)),r(s)!==r(o)){g=!1;break}}}else{let e=i(s).substring(d,s.length-p);t||(e=e.toLowerCase()),g=e===i(o)}return g?[{start:d,end:d+h,score:24*h+8},null]:[{start:-1,end:-1,score:0},null]}};function B(t,e,n,s){let l=!0;{const t=(s=s.trimLeft()).trimRight();s=t.endsWith("\\")&&" "===s[t.length]?t+" ":t}let a=!1,c=[];c=function(t,e,n,s){const l=(s=s.replace(/\\ /g,"\t")).split(/ +/),a=[];let c=[],u=!1,f=!1;for(const h of l){let s=0,l=!1,d=h.replace(/\t/g," ");const p=d.toLowerCase(),g="case-sensitive"===e||"smart-case"===e&&d!==p,m=n&&p===i(o(p).map(r));if(g||(d=p),t||(s=1),c.length>0&&!f&&"|"===d)u=!1,f=!0;else if(f=!1,d.startsWith("!")&&(l=!0,s=1,d=d.substring(1)),"$"!==d&&d.endsWith("$")&&(s=3,d=d.substring(0,d.length-1)),d.startsWith("'")?(s=t&&!l?1:0,d=d.substring(1)):d.startsWith("^")&&(s=3===s?4:2,d=d.substring(1)),d.length>0){u&&(a.push(c),c=[]);let t=o(d);m&&(t=t.map(r)),c.push({typ:s,inv:l,text:t,caseSensitive:g,normalize:m}),u=!0}}c.length>0&&a.push(c);return a}(t,e,n,s);t:for(const r of c)for(const[e,n]of r.entries())if(n.inv||(a=!0),(!l||e>0||n.inv||t&&0!==n.typ||!t&&1!==n.typ)&&(l=!1,a))break t;return{str:s,termSets:c,sortable:a,cacheable:l,fuzzy:t}}const T=(t,e,n)=>{let s=!1;switch(e){case"smart-case":t.toLowerCase()!==t&&(s=!0);break;case"case-sensitive":s=!0;break;case"case-insensitive":t=t.toLowerCase(),s=!1}let i=o(t);return n&&(i=i.map(r)),{queryRunes:i,caseSensitive:s}};function D(t,e,n,r,s,o,i){for(const l of e){const[e,a]=t(n,r,s,l.text,o,!0,i);if(e.start>=0){const t=e.start+l.prefixLength,n=e.end+l.prefixLength;if(null!==a){const r=new Set;return a.forEach((t=>r.add(l.prefixLength+t))),[[t,n],e.score,r]}return[[t,n],e.score,a]}}return[[-1,-1],0,null]}function U(t,e){const n=Object.keys(t).map((t=>parseInt(t,10))).sort(((t,e)=>e-t));let r=[];for(const s of n)if(r=r.concat(t[s]),r.length>=e)break;return r}function G(t,e,n){return r=>{const s=this.runesList[r];if(e.length>s.length)return;let[o,i]=this.algoFn(n,this.opts.normalize,this.opts.forward,s,e,!0,F);if(-1===o.start)return;if(!1===this.opts.fuzzy){i=new Set;for(let t=o.start;t<o.end;++t)i.add(t)}const l=this.opts.sort?o.score:0;void 0===t[l]&&(t[l]=[]),t[l].push(__spreadProps(__spreadValues({item:this.items[r]},o),{positions:null!=i?i:new Set}))}}function J(t,e){return n=>{const r=function(t,e,n,r){const s=[{text:t,prefixLength:0}],o=[];let i=0;const l=new Set;for(const a of e.termSets){let t=[0,0],e=0,c=!1;for(const o of a){let i=W[o.typ];o.typ===R.Fuzzy&&(i=n);const[a,u,f]=D(i,s,o.caseSensitive,o.normalize,r,o.text,F);if(a[0]>=0){if(o.inv)continue;if(t=a,e=u,c=!0,null!==f)f.forEach((t=>l.add(t)));else for(let t=a[0];t<a[1];++t)l.add(t);break}o.inv&&(t=[0,0],e=0,c=!0)}c&&(o.push(t),i+=e)}return{offsets:o,totalScore:i,allPos:l}}(this.runesList[n],e,this.algoFn,this.opts.forward);if(r.offsets.length!==e.termSets.length)return;let s=-1,o=-1;r.allPos.size>0&&(s=Math.min(...r.allPos),o=Math.max(...r.allPos)+1);const i=this.opts.sort?r.totalScore:0;void 0===t[i]&&(t[i]=[]),t[i].push({score:r.totalScore,item:this.items[n],positions:r.allPos,start:s,end:o})}}function Y(t){const{queryRunes:e,caseSensitive:n}=T(t,this.opts.casing,this.opts.normalize),r={},s=G.bind(this)(r,e,n);for(let o=0,i=this.runesList.length;o<i;++o)s(o);return U(r,this.opts.limit)}const Z="undefined"!=typeof require&&"undefined"==typeof window;function H(t,e,n,r){return new Promise(((s,o)=>{let i=0,l=Math.min(1e3,e);const a=()=>{if(t.cancelled)return o("search cancelled");for(;i<l;++i)n(i);l<e?(l=Math.min(l+1e3,e),Z?setImmediate(a):setTimeout(a)):s(r())};a()}))}function K(t,e){const{queryRunes:n,caseSensitive:r}=T(t,this.opts.casing,this.opts.normalize),s={};return H(e,this.runesList.length,G.bind(this)(s,n,r),(()=>U(s,this.opts.limit)))}const Q={limit:1/0,selector:t=>t,casing:"smart-case",normalize:!0,fuzzy:"v2",tiebreakers:[],sort:!0,forward:!0};class ${constructor(t,...e){switch(this.opts=__spreadValues(__spreadValues({},Q),e[0]),this.items=t,this.runesList=t.map((t=>o(this.opts.selector(t).normalize()))),this.algoFn=V,this.opts.fuzzy){case"v2":this.algoFn=E;break;case"v1":this.algoFn=N}}}const X=__spreadProps(__spreadValues({},Q),{match:Y});class tt extends ${constructor(t,...e){super(t,...e),this.opts=__spreadValues(__spreadValues({},X),e[0])}find(t){if(0===t.length||0===this.items.length)return this.items.slice(0,this.opts.limit).map(rt);return t=t.normalize(),st(this.opts.match.bind(this)(t),this.opts)}}const et=__spreadProps(__spreadValues({},Q),{match:K});class nt extends ${constructor(t,...e){super(t,...e),this.opts=__spreadValues(__spreadValues({},et),e[0]),this.token={cancelled:!1}}async find(t){if(this.token.cancelled=!0,this.token={cancelled:!1},0===t.length||0===this.items.length)return this.items.slice(0,this.opts.limit).map(rt);return t=t.normalize(),st(await this.opts.match.bind(this)(t,this.token),this.opts)}}const rt=t=>({item:t,start:-1,end:-1,score:0,positions:new Set});function st(t,e){if(e.sort){const{selector:n}=e;t.sort(((t,r)=>{if(t.score===r.score)for(const s of e.tiebreakers){const e=s(t,r,n);if(0!==e)return e}return 0}))}return Number.isFinite(e.limit)&&t.splice(e.limit),t}t.AsyncFzf=class{constructor(t,...e){this.finder=new nt(t,...e),this.find=this.finder.find.bind(this.finder)}},t.Fzf=class{constructor(t,...e){this.finder=new tt(t,...e),this.find=this.finder.find.bind(this.finder)}},t.asyncBasicMatch=K,t.asyncExtendedMatch=function(t,e){const n=B(Boolean(this.opts.fuzzy),this.opts.casing,this.opts.normalize,t),r={};return H(e,this.runesList.length,J.bind(this)(r,n),(()=>U(r,this.opts.limit)))},t.basicMatch=Y,t.byLengthAsc=function(t,e,n){return n(t.item).length-n(e.item).length},t.byStartAsc=function(t,e){return t.start-e.start},t.extendedMatch=function(t){const e=B(Boolean(this.opts.fuzzy),this.opts.casing,this.opts.normalize,t),n={},r=J.bind(this)(n,e);for(let s=0,o=this.runesList.length;s<o;++s)r(s);return U(n,this.opts.limit)},Object.defineProperty(t,"__esModule",{value:!0}),t[Symbol.toStringTag]="Module"}));
(function(C,z){typeof exports=="object"&&typeof module!="undefined"?z(exports):typeof define=="function"&&define.amd?define(["exports"],z):(C=typeof globalThis!="undefined"?globalThis:C||self,z(C.fzf={}))})(this,function(C){"use strict";const z={216:"O",223:"s",248:"o",273:"d",295:"h",305:"i",320:"l",322:"l",359:"t",383:"s",384:"b",385:"B",387:"b",390:"O",392:"c",393:"D",394:"D",396:"d",398:"E",400:"E",402:"f",403:"G",407:"I",409:"k",410:"l",412:"M",413:"N",414:"n",415:"O",421:"p",427:"t",429:"t",430:"T",434:"V",436:"y",438:"z",477:"e",485:"g",544:"N",545:"d",549:"z",564:"l",565:"n",566:"t",567:"j",570:"A",571:"C",572:"c",573:"L",574:"T",575:"s",576:"z",579:"B",580:"U",581:"V",582:"E",583:"e",584:"J",585:"j",586:"Q",587:"q",588:"R",589:"r",590:"Y",591:"y",592:"a",593:"a",595:"b",596:"o",597:"c",598:"d",599:"d",600:"e",603:"e",604:"e",605:"e",606:"e",607:"j",608:"g",609:"g",610:"G",613:"h",614:"h",616:"i",618:"I",619:"l",620:"l",621:"l",623:"m",624:"m",625:"m",626:"n",627:"n",628:"N",629:"o",633:"r",634:"r",635:"r",636:"r",637:"r",638:"r",639:"r",640:"R",641:"R",642:"s",647:"t",648:"t",649:"u",651:"v",652:"v",653:"w",654:"y",655:"Y",656:"z",657:"z",663:"c",665:"B",666:"e",667:"G",668:"H",669:"j",670:"k",671:"L",672:"q",686:"h",867:"a",868:"e",869:"i",870:"o",871:"u",872:"c",873:"d",874:"h",875:"m",876:"r",877:"t",878:"v",879:"x",7424:"A",7427:"B",7428:"C",7429:"D",7431:"E",7432:"e",7433:"i",7434:"J",7435:"K",7436:"L",7437:"M",7438:"N",7439:"O",7440:"O",7441:"o",7442:"o",7443:"o",7446:"o",7447:"o",7448:"P",7449:"R",7450:"R",7451:"T",7452:"U",7453:"u",7454:"u",7455:"m",7456:"V",7457:"W",7458:"Z",7522:"i",7523:"r",7524:"u",7525:"v",7834:"a",7835:"s",8305:"i",8341:"h",8342:"k",8343:"l",8344:"m",8345:"n",8346:"p",8347:"s",8348:"t",8580:"c"};for(let t="\u0300".codePointAt(0);t<="\u036F".codePointAt(0);++t){const e=String.fromCodePoint(t);for(const s of"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"){const n=(s+e).normalize().codePointAt(0);n>126&&(z[n]=s)}}const rt={a:[7844,7863],e:[7870,7879],o:[7888,7907],u:[7912,7921]};for(const t of Object.keys(rt)){const e=t.toUpperCase();for(let s=rt[t][0];s<=rt[t][1];++s)z[s]=s%2===0?e:t}function E(t){if(t<192||t>8580)return t;const e=z[t];return e!==void 0?e.codePointAt(0):t}function Re(t){return t}function Ne(t){return t}function _(t,e){return t>e?t:e}const $=t=>t.split("").map(e=>e.codePointAt(0)),ot=t=>t.map(e=>String.fromCodePoint(e)).join(""),bt=new Set(` \f
\r \v\xA0\u1680\u2028\u2029\u202F\u205F\u3000\uFEFF`.split("").map(t=>t.codePointAt(0)));for(let t="\u2000".codePointAt(0);t<="\u200A".codePointAt(0);t++)bt.add(t);const B=t=>bt.has(t),pt=t=>{let e=0;for(const s of t)if(B(s))e++;else break;return e},At=t=>{let e=0;for(let s=t.length-1;s>=0&&B(t[s]);s--)e++;return e},v="\x7F".codePointAt(0),W="A".codePointAt(0),G="Z".codePointAt(0),Pt="a".codePointAt(0),yt="z".codePointAt(0),Kt="0".codePointAt(0),Yt="9".codePointAt(0);function U(t,e,s){return s?t:e-t-1}const j=16,q=-3,Z=-1,R=j/2,Jt=j/2,Xt=R+Z,St=-(q+Z),ct=2;function lt(t){return t?new Set:null}function V(t,e,s){if(e!==null&&e.i16.length>t+s){const i=e.i16.subarray(t,t+s);return[t+s,i]}return[t,new Int16Array(s)]}function Ct(t,e,s){if(e!==null&&e.i32.length>t+s){const i=e.i32.subarray(t,t+s);return[t+s,i]}return[t,new Int32Array(s)]}function Lt(t){return t>=Pt&&t<=yt?1:t>=W&&t<=G?2:t>=Kt&&t<=Yt?4:0}function Et(t){const e=String.fromCodePoint(t);return e!==e.toUpperCase()?1:e!==e.toLowerCase()?2:e.match(/\p{Number}/gu)!==null?4:e.match(/\p{Letter}/gu)!==null?3:0}function tt(t){return t<=v?Lt(t):Et(t)}function ft(t,e){return t===0&&e!==0?R:t===1&&e===2||t!==4&&e===4?Xt:e===0?Jt:0}function Qt(t,e){return e===0?R:ft(tt(t[e-1]),tt(t[e]))}function $t(t,e,s,i){let n=t.slice(i),l=n.indexOf(s);if(l===0)return i;if(!e&&s>=Pt&&s<=yt){l>0&&(n=n.slice(0,l));const u=n.indexOf(s-32);u>=0&&(l=u)}return l<0?-1:i+l}function xt(t){for(const e of t)if(e>=128)return!1;return!0}function ut(t,e,s){if(!xt(t))return 0;if(!xt(e))return-1;let i=0,n=0;for(let l=0;l<e.length;l++){if(n=$t(t,s,e[l],n),n<0)return-1;l===0&&n>0&&(i=n-1),n++}return i}const wt=(t,e,s,i,n,l,u)=>{const r=n.length;if(r===0)return[{start:0,end:0,score:0},lt(l)];const o=i.length;if(u!==null&&o*r>u.i16.length)return Mt(t,e,s,i,n,l);const f=ut(i,n,t);if(f<0)return[{start:-1,end:-1,score:0},null];let a=0,d=0,c=null,h=null,g=null,m=null;[a,c]=V(a,u,o),[a,h]=V(a,u,o),[a,g]=V(a,u,o),[d,m]=Ct(d,u,r);const[,p]=Ct(d,u,o);for(let b=0;b<p.length;b++)p[b]=i[b];let P=0,S=0,K=0,Y=0;const ye=n[0];let Ht=n[0],ht=0,Tt=0,dt=!1,J=p.subarray(f),st=c.subarray(f).subarray(0,J.length),Wt=h.subarray(f).subarray(0,J.length),Se=g.subarray(f).subarray(0,J.length);for(let[b,A]of J.entries()){let y=null;A<=v?(y=Lt(A),!t&&y===2&&(A+=32)):(y=Et(A),!t&&y===2&&(A=String.fromCodePoint(A).toLowerCase().codePointAt(0)),e&&(A=E(A))),J[b]=A;const L=ft(Tt,y);if(Se[b]=L,Tt=y,A===Ht&&(K<r&&(m[K]=f+b,K++,Ht=n[Math.min(K,r-1)]),Y=f+b),A===ye){const x=j+L*ct;if(st[b]=x,Wt[b]=1,r===1&&(s&&x>P||!s&&x>=P)&&(P=x,S=f+b,s&&L===R))break;dt=!1}else dt?st[b]=_(ht+Z,0):st[b]=_(ht+q,0),Wt[b]=0,dt=!0;ht=st[b]}if(K!==r)return[{start:-1,end:-1,score:0},null];if(r===1){const b={start:S,end:S+1,score:P};if(!l)return[b,null];const A=new Set;return A.add(S),[b,A]}const M=m[0],N=Y-M+1;let k=null;[a,k]=V(a,u,N*r);{const b=c.subarray(M,Y+1);for(const[A,y]of b.entries())k[A]=y}let[,D]=V(a,u,N*r);{const b=h.subarray(M,Y+1);for(const[A,y]of b.entries())D[A]=y}const Gt=m.subarray(1),Ce=n.slice(1).slice(0,Gt.length);for(const[b,A]of Gt.entries()){let y=!1;const L=Ce[b],x=b+1,F=x*N,w=p.subarray(A,Y+1),Zt=g.subarray(A).subarray(0,w.length),Le=D.subarray(F+A-M).subarray(0,w.length),Ee=D.subarray(F+A-M-1-N).subarray(0,w.length),xe=k.subarray(F+A-M).subarray(0,w.length),we=k.subarray(F+A-M-1-N).subarray(0,w.length),mt=k.subarray(F+A-M-1).subarray(0,w.length);mt[0]=0;for(const[I,Me]of w.entries()){const Vt=I+A;let H=0,X=0,T=0;if(y?X=mt[I]+Z:X=mt[I]+q,L===Me){H=we[I]+j;let Q=Zt[I];T=Ee[I]+1,Q===R?T=1:T>1&&(Q=_(Q,_(St,g[Vt-T+1]))),H+Q<X?(H+=Zt[I],T=0):H+=Q}Le[I]=T,y=H<X;const it=_(_(H,X),0);x===r-1&&(s&&it>P||!s&&it>=P)&&(P=it,S=Vt),xe[I]=it}}const gt=lt(l);let O=M;if(l&&gt!==null){let b=r-1;O=S;let A=!0;for(;;){const y=b*N,L=O-M,x=k[y+L];let F=0,w=0;if(b>0&&O>=m[b]&&(F=k[y-N+L-1]),O>m[b]&&(w=k[y+L-1]),x>F&&(x>w||x===w&&A)){if(gt.add(O),b===0)break;b--}A=D[y+L]>1||y+N+L+1<D.length&&D[y+N+L+1]>0,O--}}return[{start:O,end:S+1,score:P},gt]};function et(t,e,s,i,n,l,u){let r=0,o=0,f=!1,a=0,d=0;const c=lt(u);let h=0;n>0&&(h=tt(s[n-1]));for(let g=n;g<l;g++){let m=s[g];const p=tt(m);if(t||(m>=W&&m<=G?m+=32:m>v&&(m=String.fromCodePoint(m).toLowerCase().codePointAt(0))),e&&(m=E(m)),m===i[r]){u&&c!==null&&c.add(g),o+=j;let P=ft(h,p);a===0?d=P:(P===R&&(d=P),P=_(_(P,d),St)),r===0?o+=P*ct:o+=P,f=!1,a++,r++}else f?o+=Z:o+=q,f=!0,a=0,d=0;h=p}return[o,c]}const Mt=(t,e,s,i,n,l,u)=>{if(n.length===0)return[{start:0,end:0,score:0},null];if(ut(i,n,t)<0)return[{start:-1,end:-1,score:0},null];let r=0,o=-1,f=-1;const a=i.length,d=n.length;for(let c=0;c<a;c++){let h=i[U(c,a,s)];t||(h>=W&&h<=G?h+=32:h>v&&(h=String.fromCodePoint(h).toLowerCase().codePointAt(0))),e&&(h=E(h));const g=n[U(r,d,s)];if(h===g&&(o<0&&(o=c),r++,r===d)){f=c+1;break}}if(o>=0&&f>=0){r--;for(let g=f-1;g>=o;g--){const m=U(g,a,s);let p=i[m];t||(p>=W&&p<=G?p+=32:p>v&&(p=String.fromCodePoint(p).toLowerCase().codePointAt(0)));const P=U(r,d,s),S=n[P];if(p===S&&(r--,r<0)){o=g;break}}if(!s){const g=o;o=a-f,f=a-g}const[c,h]=et(t,e,i,n,o,f,l);return[{start:o,end:f,score:c},h]}return[{start:-1,end:-1,score:0},null]},Rt=(t,e,s,i,n,l,u)=>{if(n.length===0)return[{start:0,end:0,score:0},null];const r=i.length,o=n.length;if(r<o)return[{start:-1,end:-1,score:0},null];if(ut(i,n,t)<0)return[{start:-1,end:-1,score:0},null];let f=0,a=-1,d=0,c=-1;for(let h=0;h<r;h++){const g=U(h,r,s);let m=i[g];t||(m>=W&&m<=G?m+=32:m>v&&(m=String.fromCodePoint(m).toLowerCase().codePointAt(0))),e&&(m=E(m));const p=U(f,o,s);if(n[p]===m){if(p===0&&(d=Qt(i,g)),f++,f===o){if(d>c&&(a=h,c=d),d===R)break;h-=f-1,f=0,d=0}}else h-=f,f=0,d=0}if(a>=0){let h=0,g=0;s?(h=a-o+1,g=a+1):(h=r-(a+1),g=r-(a-o+1));const[m]=et(t,e,i,n,h,g,!1);return[{start:h,end:g,score:m},null]}return[{start:-1,end:-1,score:0},null]},qt=(t,e,s,i,n,l,u)=>{if(n.length===0)return[{start:0,end:0,score:0},null];let r=0;if(B(n[0])||(r=pt(i)),i.length-r<n.length)return[{start:-1,end:-1,score:0},null];for(const[a,d]of n.entries()){let c=i[r+a];if(t||(c=String.fromCodePoint(c).toLowerCase().codePointAt(0)),e&&(c=E(c)),c!==d)return[{start:-1,end:-1,score:0},null]}const o=n.length,[f]=et(t,e,i,n,r,r+o,!1);return[{start:r,end:r+o,score:f},null]},te=(t,e,s,i,n,l,u)=>{let o=i.length;if((n.length===0||!B(n[n.length-1]))&&(o-=At(i)),n.length===0)return[{start:o,end:o,score:0},null];const f=o-n.length;if(f<0)return[{start:-1,end:-1,score:0},null];for(const[g,m]of n.entries()){let p=i[g+f];if(t||(p=String.fromCodePoint(p).toLowerCase().codePointAt(0)),e&&(p=E(p)),p!==m)return[{start:-1,end:-1,score:0},null]}const a=n.length,d=o-a,c=o,[h]=et(t,e,i,n,d,c,!1);return[{start:d,end:c,score:h},null]},ee=(t,e,s,i,n,l,u)=>{const r=n.length;if(r===0)return[{start:-1,end:-1,score:0},null];let o=0;B(n[0])||(o=pt(i));let f=0;if(B(n[r-1])||(f=At(i)),i.length-o-f!=r)return[{start:-1,end:-1,score:0},null];let a=!0;if(e){const d=i;for(const[c,h]of n.entries()){let g=d[o+c];if(t||(g=String.fromCodePoint(g).toLowerCase().codePointAt(0)),E(h)!==E(g)){a=!1;break}}}else{let d=ot(i).substring(o,i.length-f);t||(d=d.toLowerCase()),a=d===ot(n)}return a?[{start:o,end:o+r,score:(j+R)*r+(ct-1)*R},null]:[{start:-1,end:-1,score:0},null]},ne=100*1024,se=2048;function ie(t,e){return{i16:new Int16Array(t),i32:new Int32Array(e)}}const Nt=ie(ne,se);var It=(t=>(t[t.Fuzzy=0]="Fuzzy",t[t.Exact=1]="Exact",t[t.Prefix=2]="Prefix",t[t.Suffix=3]="Suffix",t[t.Equal=4]="Equal",t))(It||{});const re={[0]:wt,[1]:Rt,[2]:qt,[3]:te,[4]:ee};function _t(t,e,s,i){let n=!0;i=i.trimLeft();{const r=i.trimRight();r.endsWith("\\")&&i[r.length]===" "?i=r+" ":i=r}let l=!1,u=[];u=oe(t,e,s,i);t:for(const r of u)for(const[o,f]of r.entries())if(f.inv||(l=!0),(!n||o>0||f.inv||t&&f.typ!==0||!t&&f.typ!==1)&&(n=!1,l))break t;return{str:i,termSets:u,sortable:l,cacheable:n,fuzzy:t}}function oe(t,e,s,i){i=i.replace(/\\ /g," ");const n=i.split(/ +/),l=[];let u=[],r=!1,o=!1;for(const f of n){let a=0,d=!1,c=f.replace(/\t/g," ");const h=c.toLowerCase(),g=e==="case-sensitive"||e==="smart-case"&&c!==h,m=s&&h===ot($(h).map(E));if(g||(c=h),t||(a=1),u.length>0&&!o&&c==="|"){r=!1,o=!0;continue}if(o=!1,c.startsWith("!")&&(d=!0,a=1,c=c.substring(1)),c!=="$"&&c.endsWith("$")&&(a=3,c=c.substring(0,c.length-1)),c.startsWith("'")?(t&&!d?a=1:a=0,c=c.substring(1)):c.startsWith("^")&&(a===3?a=4:a=2,c=c.substring(1)),c.length>0){r&&(l.push(u),u=[]);let p=$(c);m&&(p=p.map(E)),u.push({typ:a,inv:d,text:p,caseSensitive:g,normalize:m}),r=!0}}return u.length>0&&l.push(u),l}const kt=(t,e,s)=>{let i=!1;switch(e){case"smart-case":t.toLowerCase()!==t&&(i=!0);break;case"case-sensitive":i=!0;break;case"case-insensitive":t=t.toLowerCase(),i=!1;break}let n=$(t);return s&&(n=n.map(E)),{queryRunes:n,caseSensitive:i}};function ce(t,e,s,i,n,l,u){for(const r of e){const[o,f]=t(s,i,n,r.text,l,!0,u);if(o.start>=0){const a=o.start+r.prefixLength,d=o.end+r.prefixLength;if(f!==null){const c=new Set;return f.forEach(h=>c.add(r.prefixLength+h)),[[a,d],o.score,c]}return[[a,d],o.score,f]}}return[[-1,-1],0,null]}function le(t,e,s,i){const n=[{text:t,prefixLength:0}],l=[];let u=0;const r=new Set;for(const o of e.termSets){let f=[0,0],a=0,d=!1;for(const c of o){let h=re[c.typ];c.typ===It.Fuzzy&&(h=s);const[g,m,p]=ce(h,n,c.caseSensitive,c.normalize,i,c.text,Nt);if(g[0]>=0){if(c.inv)continue;if(f=g,a=m,d=!0,p!==null)p.forEach(S=>r.add(S));else for(let S=g[0];S<g[1];++S)r.add(S);break}else if(c.inv){f=[0,0],a=0,d=!0;continue}}d&&(l.push(f),u+=a)}return{offsets:l,totalScore:u,allPos:r}}function nt(t,e){const s=Object.keys(t).map(n=>parseInt(n,10)).sort((n,l)=>l-n);let i=[];for(const n of s)if(i=i.concat(t[n]),i.length>=e)break;return i}function Ft(t,e,s){return i=>{const n=this.runesList[i];if(e.length>n.length)return;let[l,u]=this.algoFn(s,this.opts.normalize,this.opts.forward,n,e,!0,Nt);if(l.start===-1)return;if(this.opts.fuzzy===!1){u=new Set;for(let o=l.start;o<l.end;++o)u.add(o)}const r=this.opts.sort?l.score:0;t[r]===void 0&&(t[r]=[]),t[r].push({item:this.items[i],...l,positions:u!=null?u:new Set})}}function zt(t,e){return s=>{const i=this.runesList[s],n=le(i,e,this.algoFn,this.opts.forward);if(n.offsets.length!==e.termSets.length)return;let l=-1,u=-1;n.allPos.size>0&&(l=Math.min(...n.allPos),u=Math.max(...n.allPos)+1);const r=this.opts.sort?n.totalScore:0;t[r]===void 0&&(t[r]=[]),t[r].push({score:n.totalScore,item:this.items[s],positions:n.allPos,start:l,end:u})}}function Ot(t){const{queryRunes:e,caseSensitive:s}=kt(t,this.opts.casing,this.opts.normalize),i={},n=Ft.bind(this)(i,e,s);for(let l=0,u=this.runesList.length;l<u;++l)n(l);return nt(i,this.opts.limit)}function fe(t){const e=_t(Boolean(this.opts.fuzzy),this.opts.casing,this.opts.normalize,t),s={},i=zt.bind(this)(s,e);for(let n=0,l=this.runesList.length;n<l;++n)i(n);return nt(s,this.opts.limit)}const ue=typeof require!="undefined"&&typeof window=="undefined";function Bt(t,e,s,i){return new Promise((n,l)=>{let r=0,o=Math.min(1e3,e);const f=()=>{if(t.cancelled)return l("search cancelled");for(;r<o;++r)s(r);o<e?(o=Math.min(o+1e3,e),ue?setImmediate(f):setTimeout(f)):n(i())};f()})}function vt(t,e){const{queryRunes:s,caseSensitive:i}=kt(t,this.opts.casing,this.opts.normalize),n={};return Bt(e,this.runesList.length,Ft.bind(this)(n,s,i),()=>nt(n,this.opts.limit))}function ae(t,e){const s=_t(Boolean(this.opts.fuzzy),this.opts.casing,this.opts.normalize,t),i={};return Bt(e,this.runesList.length,zt.bind(this)(i,s),()=>nt(i,this.opts.limit))}const at={limit:1/0,selector:t=>t,casing:"smart-case",normalize:!0,fuzzy:"v2",tiebreakers:[],sort:!0,forward:!0};class Ut{constructor(e,...s){switch(this.opts={...at,...s[0]},this.items=e,this.runesList=e.map(i=>$(this.opts.selector(i).normalize())),this.algoFn=Rt,this.opts.fuzzy){case"v2":this.algoFn=wt;break;case"v1":this.algoFn=Mt;break}}}const he={...at,match:Ot};class de extends Ut{constructor(e,...s){super(e,...s),this.opts={...he,...s[0]}}find(e){if(e.length===0||this.items.length===0)return this.items.slice(0,this.opts.limit).map(jt);e=e.normalize();let s=this.opts.match.bind(this)(e);return Dt(s,this.opts)}}const ge={...at,match:vt};class me extends Ut{constructor(e,...s){super(e,...s),this.opts={...ge,...s[0]},this.token={cancelled:!1}}async find(e){if(this.token.cancelled=!0,this.token={cancelled:!1},e.length===0||this.items.length===0)return this.items.slice(0,this.opts.limit).map(jt);e=e.normalize();let s=await this.opts.match.bind(this)(e,this.token);return Dt(s,this.opts)}}const jt=t=>({item:t,start:-1,end:-1,score:0,positions:new Set});function Dt(t,e){if(e.sort){const{selector:s}=e;t.sort((i,n)=>{if(i.score===n.score)for(const l of e.tiebreakers){const u=l(i,n,s);if(u!==0)return u}return 0})}return Number.isFinite(e.limit)&&t.splice(e.limit),t}function be(t,e,s){return s(t.item).length-s(e.item).length}function pe(t,e){return t.start-e.start}class Ae{constructor(e,...s){this.finder=new de(e,...s),this.find=this.finder.find.bind(this.finder)}}class Pe{constructor(e,...s){this.finder=new me(e,...s),this.find=this.finder.find.bind(this.finder)}}C.AsyncFzf=Pe,C.Fzf=Ae,C.asyncBasicMatch=vt,C.asyncExtendedMatch=ae,C.basicMatch=Ot,C.byLengthAsc=be,C.byStartAsc=pe,C.extendedMatch=fe,Object.defineProperties(C,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});

@@ -9,3 +9,3 @@ import { Slab } from "./slab";

export declare const SCORE_MATCH = 16, SCORE_GAP_START = -3, SCORE_GAP_EXTENTION = -1, BONUS_BOUNDARY: number, BONUS_NON_WORD: number, BONUS_CAMEL_123: number, BONUS_CONSECUTIVE: number, BONUS_FIRST_CHAR_MULTIPLIER = 2;
export declare type AlgoFn = (caseSensitive: boolean, normalize: boolean, forward: boolean, input: Rune[], pattern: Rune[], withPos: boolean, slab: Slab | null) => [Result, Set<number> | null];
export type AlgoFn = (caseSensitive: boolean, normalize: boolean, forward: boolean, input: Rune[], pattern: Rune[], withPos: boolean, slab: Slab | null) => [Result, Set<number> | null];
export declare const fuzzyMatchV2: AlgoFn;

@@ -12,0 +12,0 @@ export declare const fuzzyMatchV1: AlgoFn;

@@ -0,0 +0,0 @@ import { Rune } from "./runes";

import { AlgoFn } from "./algo";
import { buildPatternForExtendedMatch } from "./pattern";
import { Rune } from "./runes";
declare type Offset = [number, number];
type Offset = [number, number];
export declare function computeExtendedMatch(text: Rune[], pattern: ReturnType<typeof buildPatternForExtendedMatch>, fuzzyAlgo: AlgoFn, forward: boolean): {

@@ -6,0 +6,0 @@ offsets: Offset[];

import { AlgoFn } from "./algo";
import { Rune } from "./runes";
import { FzfResultItem, BaseOptions, SyncOptions, AsyncOptions, Tiebreaker, Token, Selector } from "./types";
export declare type ArrayElement<ArrayType extends readonly unknown[]> = ArrayType extends readonly (infer ElementType)[] ? ElementType : never;
declare type SortAttrs<U> = {
export type ArrayElement<ArrayType extends readonly unknown[]> = ArrayType extends readonly (infer ElementType)[] ? ElementType : never;
type SortAttrs<U> = {
sort?: true;

@@ -11,4 +11,4 @@ tiebreakers?: Tiebreaker<U>[];

};
declare type BaseOptsToUse<U> = Omit<Partial<BaseOptions<U>>, "sort" | "tiebreakers"> & SortAttrs<U>;
declare type BaseOptionsTuple<U> = U extends string ? [options?: BaseOptsToUse<U>] : [options: BaseOptsToUse<U> & {
type BaseOptsToUse<U> = Omit<Partial<BaseOptions<U>>, "sort" | "tiebreakers"> & SortAttrs<U>;
type BaseOptionsTuple<U> = U extends string ? [options?: BaseOptsToUse<U>] : [options: BaseOptsToUse<U> & {
selector: Selector<U>;

@@ -23,4 +23,4 @@ }];

}
export declare type SyncOptsToUse<U> = BaseOptsToUse<U> & Partial<Pick<SyncOptions<U>, "match">>;
export declare type SyncOptionsTuple<U> = U extends string ? [options?: SyncOptsToUse<U>] : [options: SyncOptsToUse<U> & {
export type SyncOptsToUse<U> = BaseOptsToUse<U> & Partial<Pick<SyncOptions<U>, "match">>;
export type SyncOptionsTuple<U> = U extends string ? [options?: SyncOptsToUse<U>] : [options: SyncOptsToUse<U> & {
selector: Selector<U>;

@@ -33,4 +33,4 @@ }];

}
export declare type AsyncOptsToUse<U> = BaseOptsToUse<U> & Partial<Pick<AsyncOptions<U>, "match">>;
export declare type AsyncOptionsTuple<U> = U extends string ? [options?: AsyncOptsToUse<U>] : [options: AsyncOptsToUse<U> & {
export type AsyncOptsToUse<U> = BaseOptsToUse<U> & Partial<Pick<AsyncOptions<U>, "match">>;
export type AsyncOptionsTuple<U> = U extends string ? [options?: AsyncOptsToUse<U>] : [options: AsyncOptsToUse<U> & {
selector: Selector<U>;

@@ -37,0 +37,0 @@ }];

@@ -7,3 +7,3 @@ import { SyncFinder, AsyncFinder } from "./finders";

export * from "./tiebreakers";
export declare type FzfOptions<U = string> = U extends string ? SyncOptsToUse<U> : SyncOptsToUse<U> & {
export type FzfOptions<U = string> = U extends string ? SyncOptsToUse<U> : SyncOptsToUse<U> & {
selector: SyncOptions<U>["selector"];

@@ -16,3 +16,3 @@ };

}
export declare type AsyncFzfOptions<U = string> = U extends string ? AsyncOptsToUse<U> : AsyncOptsToUse<U> & {
export type AsyncFzfOptions<U = string> = U extends string ? AsyncOptsToUse<U> : AsyncOptsToUse<U> & {
selector: AsyncOptions<U>["selector"];

@@ -19,0 +19,0 @@ };

@@ -0,0 +0,0 @@ import type { SyncFinder, AsyncFinder } from "./finders";

import { Rune } from "./runes";
export declare function normalizeRune(rune: Rune): Rune;

@@ -1,5 +0,5 @@

export declare type Int16 = Int16Array[0];
export declare type Int32 = Int32Array[0];
export type Int16 = Int16Array[0];
export type Int32 = Int32Array[0];
export declare function toShort(number: number): Int16;
export declare function toInt(number: number): Int32;
export declare function maxInt16(num1: number, num2: number): number;

@@ -24,3 +24,3 @@ import { Rune } from "./runes";

}
declare type TermSet = Term[];
type TermSet = Term[];
export declare function buildPatternForExtendedMatch(fuzzy: boolean, caseMode: Casing, normalize: boolean, str: string): {

@@ -27,0 +27,0 @@ str: string;

import { Int32 } from "./numerics";
export declare type Rune = Int32;
export type Rune = Int32;
export declare const strToRunes: (str: string) => number[];
export declare const runesToStr: (runes: Rune[]) => string;

@@ -0,0 +0,0 @@ export interface Slab {

import type { FzfResultItem, Selector } from "./types";
export declare function byLengthAsc<U>(a: FzfResultItem<U>, b: FzfResultItem<U>, selector: Selector<U>): number;
export declare function byStartAsc<U>(a: FzfResultItem<U>, b: FzfResultItem<U>): number;

@@ -6,3 +6,3 @@ import type { Result } from "./algo";

}
export declare type Casing = "smart-case" | "case-sensitive" | "case-insensitive";
export type Casing = "smart-case" | "case-sensitive" | "case-insensitive";
export interface FzfResultItem<U = string> extends Result {

@@ -12,4 +12,4 @@ item: U;

}
export declare type Selector<U> = BaseOptions<U>["selector"];
export declare type Tiebreaker<U> = (a: FzfResultItem<U>, b: FzfResultItem<U>, selector: Selector<U>) => number;
export type Selector<U> = BaseOptions<U>["selector"];
export type Tiebreaker<U> = (a: FzfResultItem<U>, b: FzfResultItem<U>, selector: Selector<U>) => number;
export interface BaseOptions<U> {

@@ -113,3 +113,3 @@ /**

}
export declare type SyncOptions<U> = BaseOptions<U> & {
export type SyncOptions<U> = BaseOptions<U> & {
/**

@@ -128,3 +128,3 @@ * A function that is responsible for matching list items with the query.

};
export declare type AsyncOptions<U> = BaseOptions<U> & {
export type AsyncOptions<U> = BaseOptions<U> & {
/**

@@ -131,0 +131,0 @@ * A function that is responsible for matching list items with the query.

{
"===== INFO =====": "",
"name": "fzf",
"version": "0.5.1",
"version": "0.5.2",
"description": "Do fuzzy matching using FZF algorithm in JavaScript",

@@ -20,3 +20,3 @@ "license": "BSD-3-Clause",

"email": "zlksnkwork+pkgnfo@gmail.com",
"url": "https://ajitid.in"
"url": "https://hemarkable.com"
},

@@ -32,2 +32,3 @@ "===== SCRIPTS =====": "",

"build:docs": "npm run fill-with-old-docs && npm run build:only-docs",
"fill-with-old-docs": "node scripts/fill-with-old-docs.js",
"prepack": "node scripts/prepack.cjs",

@@ -38,3 +39,3 @@ "postpack": "node scripts/postpack.cjs",

"test:cov": "jest --coverage",
"fill-with-old-docs": "node scripts/fill-with-old-docs.js"
"format": "prettier --write ."
},

@@ -49,2 +50,3 @@ "===== BUILD =====": "",

".": {
"types": "./dist/types/main.d.ts",
"import": "./dist/fzf.es.js",

@@ -59,8 +61,8 @@ "require": "./dist/fzf.umd.js"

"devDependencies": {
"@mdx-js/mdx": "^1.6.22",
"@mdx-js/react": "^1.6.22",
"@tailwindcss/typography": "^0.4.1",
"@types/jest": "^26.0.24",
"@types/jest-expect-message": "^1.0.3",
"@types/mdx-js__react": "^1.5.4",
"@mdx-js/mdx": "^2.1.1",
"@mdx-js/react": "^2.1.1",
"@mdx-js/rollup": "^2.1.1",
"@tailwindcss/typography": "^0.5.2",
"@types/jest": "^29.4.0",
"@types/mdx": "^2.0.1",
"@types/react": "^17.0.0",

@@ -72,6 +74,6 @@ "@types/react-dom": "^17.0.0",

"history": "^5.0.0",
"jest": "^27.0.6",
"jest-expect-message": "^1.0.2",
"patch-package": "^6.4.7",
"jest": "^29.4.3",
"jest-expect-message": "^1.1.3",
"postcss": "^8.3.5",
"prettier": "^2.6.2",
"preval.macro": "^5.0.0",

@@ -82,13 +84,13 @@ "prism-react-renderer": "^1.2.1",

"react-git-info": "^2.0.0",
"react-router": "^6.0.0-beta.0",
"react-router-dom": "^6.0.0-beta.0",
"react-router": "^6.8.1",
"react-router-dom": "^6.8.1",
"remark-gfm": "^3.0.1",
"shelljs": "^0.8.4",
"tailwindcss": "^2.2.4",
"ts-jest": "^27.0.3",
"typescript": "^4.3.2",
"vite": "^2.3.8",
"vite-plugin-babel-macros": "^1.0.5",
"vite-plugin-mdx": "^3.5.6"
"tailwindcss": "^3.0.24",
"ts-jest": "^29.0.5",
"typescript": "^4.9.4",
"vite": "^2.9.13",
"vite-plugin-babel-macros": "^1.0.5"
},
"type": "module"
}
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc