UNPKG

foxts

Version:

Opinionated collection of common TypeScript utils by @SukkaW

1 lines 834 B
import{falseFn as t}from"../noop/index.mjs";const n=new Set([".","?","*","+","^","$","|","(",")","{","}","[","]","\\"]);function e(t,o=!1){const r={},i=(t,n)=>{let e,o=r;for(let r=0,i=t.length;r<i;++r)(e=t.charAt(r))in o||(o[e]=n?{"":""}:{}),o=o[e];o[""]=""};for(let n=0,e=t.length;n<e;++n)i(t[n],o);const c=()=>(function t(e){let o,r=!1;const i=[],c=[];for(const l in e){if(!l){r=!0;continue}((o=t(e[l]))?i:c).push(("-"===l?"\\x2d":n.has(l)?"\\"+l:l)+o)}if(r&&null==o)return"";const l=!i.length;c.length&&i.push(c[1]?"["+c.join("")+"]":c[0]);let s=i[1]?"(?:"+i.join("|")+")":i[0];return r&&(s=l?s+"?":"(?:"+s+")?"),s||""})(r);return{tree:r,add:i,toString:c,toRe:()=>new RegExp((o?"^":"")+c())}}function o(n,r=!1){if(0===n.length)return t;const i=e(n,r).toRe();return i.test.bind(i)}export{o as createRetrieKeywordFilter,e as retrie};