Feat/npm plugin versions and tests - #433
Open
sreeramakhil wants to merge 6 commits into
Open
Conversation
- Add webcmd npm versions <name> command that lists all published versions of a package newest-first, with publishedAt, isLatest flag, and a direct npmjs.com URL per version. Mirrors the pypi releases cmd. - Add optional equest parameter to pmFetch in utils.js so commands can inject a fake fetch function in tests without patching globals (matches the pattern used in the pypi plugin). - Add test/npm.test.js with 14 tests covering all four commands: package, versions, downloads, search. Includes happy paths, empty result / 404 handling, input validation, and a contract test asserting browser: false for every registered command. - Expand README.md with a full command table (including the new versions command), argument descriptions, and copy-paste examples for all four commands.
Slicing publishedAt to 10 chars before sorting caused versions published on the same calendar date to lose sub-day precision, producing non-deterministic newest-first ordering. Fix: sort on the raw full timestamp first, then format to date-only inside .map(). Add a regression test with two versions sharing the same date (08:00 and 14:00) to pin the correct ordering.
… entries A version key can exist in body.time without a matching entry in body.versions (e.g. yanked or unpublished releases). The previous code returned bogus rows for those keys with an invalid URL and misleading date. Fix: cross-filter timeMap entries against body.versions so only keys that exist in both are returned. Also guard that the timestamp is a string before sorting. Update the same-day regression fixture to include matching body.versions entries and add a time-only ghost key (0.0.1-ghost) to assert it is excluded from results.
- Drop the equest parameter from pmFetch and �ersionsNpm. Instead, use withFetch in tests to stub the global etch. - Filter out pre-release and build versions by default. Add a --prereleases boolean flag (default alse) to allow including them when requested. - Update and expand tests in est/npm.test.js to cover the new pre-release filtering behavior and verify that the --prereleases flag works correctly.
…ages) - Create plugins/omnisearch/packages.js to query npm, crates.io, NuGet, RubyGems, Packagist, and Maven Central in parallel using Promise.allSettled for failure isolation. - Add support for --limit and --registries options to customize the search. - Normalize search results to a unified schema: registry, name, version, description, and url. - Create plugins/omnisearch/test/packages.test.js to cover all happy paths, filtering, limits, failure isolation, and browserless compliance. - Re-compile the plugin command manifest to register the new command.
Contributor
🟠 Maintainer review suggested — low confidenceThe automated review could not reach a fully supported conclusion. Limitations
This review is advisory and does not block merging. |
…-versions-and-tests
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Addresses all review feedback on the
npmplugin changes and introduces a new premium out-of-the-box feature: Universal Package Search.1. Refined
npm versionscommand:requestparameter fromnpmFetchandversionsNpmin favor of usingwithFetchglobally in tests (matching the other commands).--prereleasesboolean flag (defaultfalse) to include them when requested.2. Universal Package Search (
omnisearch packages):npm,crates.io(Rust),NuGet(.NET),RubyGems(Ruby),Packagist(PHP), andMaven Central(Java) in parallel.Promise.allSettledto isolate failures. If one registry rate-limits or fails, others still return results.--limitand--registriesfilters.registry,name,version,description,url.plugins/omnisearch/test/packages.test.js.Related issue: None
Type of Change
Checklist
skill-src/, I ranmake buildand committedskills/Adapter Notes
CliErrorsubclasses instead of rawErrorScreenshots / Output
$ npx vitest run plugins/npm/test/npm.test.js ✓ plugin plugins/npm/test/npm.test.js (16 tests) 20ms Test Files 1 passed (1) Tests 16 passed (16) $ npx vitest run plugins/omnisearch/test/ ✓ plugin plugins/omnisearch/test/research.test.js (1 test) 32ms ✓ plugin plugins/omnisearch/test/packages.test.js (5 tests) 42ms Test Files 2 passed (2) Tests 6 passed (6)