diff --git a/packages/api/.env b/packages/api/.env index b38955061..0c59dcd77 100644 --- a/packages/api/.env +++ b/packages/api/.env @@ -4,11 +4,11 @@ DEVMODE=1 # HIDE_APP_EDITOR=1 -DEVWEB=1 -LOGINS=admin,test +# DEVWEB=1 +# LOGINS=admin,test -LOGIN_PASSWORD_admin=admin -LOGIN_PERMISSIONS_admin=* +# LOGIN_PASSWORD_admin=admin +# LOGIN_PERMISSIONS_admin=* -LOGIN_PASSWORD_test=test -LOGIN_PERMISSIONS_test=~*, widgets/database +# LOGIN_PASSWORD_test=test +# LOGIN_PERMISSIONS_test=~*, widgets/database diff --git a/packages/tools/src/filterName.ts b/packages/tools/src/filterName.ts index fd43404db..e8110e12f 100644 --- a/packages/tools/src/filterName.ts +++ b/packages/tools/src/filterName.ts @@ -33,6 +33,27 @@ import _compact from 'lodash/compact'; // return DoMatch(Filter, value) || camelMatch; // } +function fuzzysearch(needle, haystack) { + var hlen = haystack.length; + var nlen = needle.length; + if (nlen > hlen) { + return false; + } + if (nlen === hlen) { + return needle === haystack; + } + outer: for (var i = 0, j = 0; i < nlen; i++) { + var nch = needle.charCodeAt(i); + while (j < hlen) { + if (haystack.charCodeAt(j++) === nch) { + continue outer; + } + } + return false; + } + return true; +} + export function filterName(filter: string, ...names: string[]) { if (!filter) return true; @@ -42,7 +63,7 @@ export function filterName(filter: string, ...names: string[]) { const namesCompacted = _compact(names); for (const token of tokens) { const tokenUpper = token.toUpperCase(); - const found = namesCompacted.find(name => name.toUpperCase().includes(tokenUpper)); + const found = namesCompacted.find(name => fuzzysearch(tokenUpper, name.toUpperCase())); if (!found) return false; }