fuzzaldrin-plus review
A short result list can still require scoring the entire input. fuzzaldrin-plus 0.6.0 provides fuzzy filtering and string scoring for JavaScript applications. Its filter sorts positive-scoring candidates in descending order. maxResults trims that sorted list; maxInners limits how many positive candidates reach it. An early collection limit can exclude a better candidate later in the input.
Evaluate fuzzaldrin-plus 0.6.0 for a local picker when you can own the interface and check its rankings against your labels. Start without maxInners, use maxResults for display length, and keep preparation settings consistent. If changing preparation settings for the same query is a requirement, resolve the query-only cache limitation before adopting this version.
Answers from our run
fuzzaldrin-plus or fuse.js: which should you use?
fuse.js: Candidate for further evaluation: the Fuse.js 7.5.0 npm manifest declares separate import and require exports with type declaration paths. Consider it when those packaging declarations matter to your shortlist. They do not establish compatibility with your application or better rankings. Evaluate fuzzaldrin-plus 0.6.0 for a local picker when you can own the interface and check its rankings against your labels.
When should you not use fuzzaldrin-plus?
You expect maxResults to cap scoring work. It trims the list after candidate collection and sorting.
Use it if
- You're building a local file picker and want to evaluate filename-aware ranking. Path scoring is enabled by default in 0.6.0.
- Your command palette has strings or objects with a string field, and you can supply the interface around the matching functions.
- You can compare the library's rankings with expected matches from your own labels before adopting it.
- You can keep query preparation settings consistent and account for the module's query-only preparation cache.
- You expect maxResults to cap scoring work. It trims the list after candidate collection and sorting.
- You need the best matches from the entire input but intend to set maxInners. That limit can stop collection before later candidates are scored.
- You need a finished search interface with keyboard navigation and accessible result announcements. The supplied entry point exports matching functions.
- You require verified browser, Node or TypeScript compatibility before adoption. No compatibility tests are supplied.
- Your integration changes preparation settings for the same query and requires each call to prepare it independently. The supplied implementation can reuse preparation cached under that query string.
Setup reality
Install the pinned package with npm install --save-exact fuzzaldrin-plus@0.6.0. The version-specific npm record names ./lib/fuzzaldrin.js as its entry point, and the supplied source uses CommonJS exports. The examples below illustrate calls through require('fuzzaldrin-plus'); they were not executed. Contributor tooling is separate: the manifest's test script uses Grunt, and its development dependencies include CoffeeScript.
Decide whether candidates are paths. Path scoring defaults to true. For ordinary command labels, pass usePathScoring: false. For stored paths with forward slashes, explicitly pass pathSeparator: '/' to choose that separator. When filtering objects, key selects candidate[key] directly, and the filter returns the original candidates.
Handle an empty query in your application because filter returns an empty array. Use maxResults to limit the returned list. Leave maxInners unset during the first ranking evaluation so that collection does not stop before later candidates are considered. No benchmark is supplied to establish an appropriate collection limit for your data.
The option parser mutates the options object by filling defaults and attaching preparedQuery. A fresh options object prevents an attached prepared query from carrying over to a different query string. It does not isolate preparation settings: the module also caches a prepared query globally and reuses it whenever the query string matches, without comparing options. Calling prepareQuery again with the same string therefore does not necessarily rebuild preparation after settings change. An explicit preparedQuery is also accepted without checking that it matches the query argument. Keep preparation settings consistent in the illustrated integration. The supplied evidence does not establish a cache-reset API or a verified workaround for changing those settings.
This guide is based on supplied documentation and source at the npm record's gitHead. No application execution, passing-test count, install timing, benchmark, browser check or security audit is supplied. Start your own evaluation with expected matches from a small candidate list, then examine broad queries against the full list.
The numerical ratings are documentation-based editorial judgments on a 1-5 scale. A 1 means insufficient evidence for an integration decision; 2 means a documented starting point with substantial unanswered questions; 3 means an inspectable contract with material limits; 4 requires broader documented coverage; 5 also requires independent verification. Each rationale identifies what the evidence supports. Unknown adoption, compatibility and maintainer responsiveness do not earn points.
Patterns
Rank command labels rank-command-labels
const fuzzy = require('fuzzaldrin-plus');
const commands = ['Git: Push', 'Git: Pull', 'Open File'];
const matches = fuzzy.filter(commands, 'gp', { usePathScoring: false });
console.log(matches);Source-based illustration for 0.6.0, not executed. Explicitly disable path scoring for ordinary labels. Compare the returned order with your expected choices; no output order is asserted here.
Keep IDs on object candidates filter-objects
const fuzzy = require('fuzzaldrin-plus');
const commands = [
{ id: 'push', label: 'Git Push' },
{ id: 'open', label: 'Open File' }
];
const matches = fuzzy.filter(commands, 'gp', {
key: 'label', usePathScoring: false
});
console.log(matches.map(item => item.id));Source-based illustration for 0.6.0, not executed. The filter reads candidate[key] directly and returns original candidates. Supply string values in that field. The key does not traverse a nested property path.
Limit the returned list limit-visible-results
const fuzzy = require('fuzzaldrin-plus');
const labels = ['Open File', 'Open Folder', 'Close File'];
const matches = fuzzy.filter(labels, 'of', {
maxResults: 2, usePathScoring: false
});
console.log(matches);Source-based illustration for 0.6.0, not executed. maxResults trims the list after collection and sorting. It does not cap the number of candidates scored.
Set an early collection limit deliberately cap-collected-matches
const fuzzy = require('fuzzaldrin-plus');
const labels = ['Open File', 'Open Folder', 'Open Favorites'];
const matches = fuzzy.filter(labels, 'of', {
maxInners: 2, maxResults: 1, usePathScoring: false
});
console.log(matches);Source-based illustration for 0.6.0, not executed. maxInners limits positive-scoring candidates collected before sorting. Once the cap is reached, later candidates are not considered. Input order can therefore affect the available results.
Choose what an empty query shows handle-empty-query
const fuzzy = require('fuzzaldrin-plus');
const labels = ['Open File', 'Save File'];
function suggestions(query) {
if (!query.length) return labels.slice(0, 2);
return fuzzy.filter(labels, query, { usePathScoring: false });
}
console.log(suggestions(''));Source-based illustration for 0.6.0, not executed. This wrapper expects a string query and supplies initial suggestions itself. Calling filter with an empty query returns an empty array.
Choose the separator used by stored paths rank-posix-paths
const fuzzy = require('fuzzaldrin-plus');
const paths = ['src/user/model.js', 'test/user/model.test.js'];
const matches = fuzzy.filter(paths, 'user/model', {
usePathScoring: true, pathSeparator: '/'
});
console.log(matches);Source-based illustration for 0.6.0, not executed. The default separator depends on the platform. This call explicitly selects forward slashes, but does not force query preparation to rebuild if the module already cached this query with other settings. Keep preparation settings consistent.
Inspect a single candidate score score-single-label
const fuzzy = require('fuzzaldrin-plus');
const value = fuzzy.score('Git Push', 'gp', { usePathScoring: false });
console.log(value);Source-based illustration for 0.6.0, not executed. score takes the candidate first and the query second. The README describes scores as a way to order candidates for the same query; the value is not a calibrated probability or a performance measurement.
Reuse a prepared query with fixed settings prepare-shared-query
const fuzzy = require('fuzzaldrin-plus');
const query = 'gp';
// Keep preparation settings consistent throughout this integration.
const preparedQuery = fuzzy.prepareQuery(query, { pathSeparator: '/' });
const labels = ['Git Push', 'Git Pull'];
const scored = labels.map(label => ({
label,
score: fuzzy.score(label, query, {
preparedQuery, pathSeparator: '/', usePathScoring: false
})
}));
console.log(scored);Source-based illustration for 0.6.0, not executed. This demonstrates explicit reuse with fixed settings, not a cache workaround. prepareQuery uses the same parser as filter and score. If the module's cached query string matches, it reuses that preparation without comparing options. Calling prepareQuery again does not guarantee a rebuild after settings change, and passing an explicit preparedQuery bypasses any query-match validation.
Create fresh options for changing queries keep-call-options-fresh
const fuzzy = require('fuzzaldrin-plus');
const labels = ['Open File', 'Save File'];
function search(query) {
return fuzzy.filter(labels, query, {
usePathScoring: false, maxResults: 2
});
}
console.log(search('of'));
console.log(search('sf'));Source-based illustration for 0.6.0, not executed. Fresh objects prevent a preparedQuery attached to one call's options from carrying into the next call. They do not bypass the separate module-level cache, which compares query strings without comparing preparation settings.
Alternatives
| Package | Registry | Pick it when |
|---|---|---|
| fuse.js | npm | Candidate for further evaluation: the Fuse.js 7.5.0 npm manifest declares separate import and require exports with type declaration paths. Consider it when those packaging declarations matter to your shortlist. They do not establish compatibility with your application or better rankings. |
| fuzzysort | npm | Candidate for further evaluation: fuzzysort 4.0.2 describes itself as 'Fast SublimeText-like fuzzy search for JavaScript'. Consider it when Sublime Text-style matching is part of your brief. 'Fast' is the publisher's wording; no comparative performance or ranking test is supplied. |
More cli & tooling guides
commander · chalk · click · esbuild · typescript · yargs · the whole shelf →
How this guide is made: grounded in the library's documentation, release notes, changelog, and issue history, on a fixed rubric — not a hands-on install of every release. The 50 most-downloaded entries are additionally install-verified in clean containers. Corrections: contact the desk.