mrkeyoor.com_
Sat 24 Oct 22:54 UTC
npmCLI & Toolingupdated 24 Oct 2026

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.

Verdict

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.

API stability3/5This rates the inspectability of the pinned 0.6.0 contract, not future API stability. The supplied entry point exposes calls and defaults, and the filter source shows collection, sorting and trimming. The query-only preparation cache is a material integration limit. No upgrade or compatibility test is supplied, so the evidence supports an inspectable contract with limits under the stated rubric.
Docs3/5The supplied README explains consecutive matches, acronyms, path scoring and the purpose of maxInners. Those details help a developer evaluate rankings. Source inspection is still needed to establish option mutation and query-only cache reuse. This supports a middle rating for useful documentation with material integration details that require reading the implementation.
Maintenance2/5This is a limited assessment of the published contributor tooling, not current maintainer activity. The 0.6.0 manifest declares a Grunt test script and coffee-script ~1.7 among its development dependencies. That provides a documented starting point, but no successful contributor build, current response history or security assessment is supplied. Those unanswered questions keep the rating at 2.
Ecosystem2/5This rates the documented integration starting point rather than adoption. The npm manifest identifies a JavaScript entry point, and the source exports matching functions through CommonJS. That gives a concrete route to evaluate. Browser, framework and TypeScript compatibility remain untested, and the evidence supplies no adoption measurement. Under the rubric, substantial integration questions remain.

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.
Skip it if

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

PackageRegistryPick it when
fuse.jsnpmCandidate 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.
fuzzysortnpmCandidate 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.