Chisle
The coding-agent plugin that bills 52% of a bare model across 20 live tasks. Terse persona + tool-output compressor + context diet.
翻訳待ち
Fast fuzzy search and string similarity for JavaScript/TypeScript, powered by Rust. fzf-style queries via nucleo, plus Levenshtein, Jaro-Winkler and more. Native in Node.js, WebAssembly in browsers, Deno, Bun and Workers.
翻訳待ち
Loading the full README.
Read the full README ↗Fuzzy search and string similarity for JavaScript and TypeScript, powered by Rust. Native in Node.js, WebAssembly in browsers, Deno, Bun and Cloudflare Workers, with one API.
Documentation · Playground · API reference · Benchmarks
FuzzyIndex answers a query over 10,000 items in about 0.2 ms, about 180x faster than fuse.js and 1.6x faster than fuzzysort with prepared targets (benchmarks). Large searches use every CPU core in Node.js.^prefix, suffix$, 'exact and !exclude terms in any order, match positions for highlighting, and opt-in typo tolerance (maxTypos).scoreMode) and whether terms may match different keys (matchMode).npm install rapid-fuzzy
Node.js 22 or later. Prebuilt binaries are installed for macOS, Linux (glibc and musl) and Windows on x64 and arm64. See the runtime guides for Node.js and SSR frameworks, browsers and bundlers, Cloudflare Workers and Deno and Bun.
import { search, closest, FuzzyIndex } from 'rapid-fuzzy';
search('typscript', ['TypeScript', 'JavaScript', 'Python']);
// → [{ item: 'TypeScript', score: 0.86, index: 0, positions: [] }]
closest('tsc', ['TypeScript', 'JavaScript', 'Python']); // → 'TypeScript'
// Searching the same items many times? Build an index once:
// it is about 10x faster per query on 1,000-10,000 items.
const index = new FuzzyIndex(['TypeScript', 'JavaScript', 'Python']);
index.search('typscript', { maxResults: 5 });
Search objects by weighted keys:
import { searchObjects } from 'rapid-fuzzy';
const users = [
{ name: 'John Smith', city: 'Tokyo' },
{ name: 'Jane Doe', city: 'Osaka' },
];
searchObjects('john tokyo', users, {
keys: [{ name: 'name', weight: 2 }, 'city'],
matchMode: 'crossKey', // terms may match different keys
});
Compare strings:
import { levenshtein, jaroWinkler, tokenSortRatio, levenshteinMany } from 'rapid-fuzzy';
levenshtein('kitten', 'sitting'); // → 3
jaroWinkler('martha', 'marhta'); // → 0.961
tokenSortRatio('new york mets', 'mets new york'); // → 1
levenshteinMany('kitten', ['sitting', 'kittens', 'kitchen']); // → [3, 1, 2]
Highlight matches:
import { search, highlight } from 'rapid-fuzzy';
const [match] = search('fzy', ['fuzzy'], { includePositions: true });
highlight(match.item, match.positions, '<b>', '</b>'); // → '<b>f</b>uz<b>zy</b>'
The documentation site covers everything in detail:
This is the beginning of the README. Read the rest at the original. Read the full README ↗