New:Introducing Socket Scanning for VS Code Marketplace Extensions.Learn more →
Get Started

@csaf-rs/vers-rs

Package Overview
Dependencies
Maintainers
2
Versions
5
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@csaf-rs/vers-rs

A library for parsing and checking version range specifiers

latest
Source
npmnpm
Version
0.2.0
Version published
Maintainers
2
Created
Source

vers-rs

Build crates.io npm

A Rust library (with WASM support) for parsing, validating, and checking version range specifiers.

This library implements the version range specifier (vers) format as described in the vers-spec.

Usage

use vers_rs::schemes::semver::*;
use vers_rs::{parse, VersVersionRange};
use vers_rs::range::VersionRange;

// Parse a version range specifier with an explicit type
let range: VersVersionRange<SemVer> = "vers:npm/>=1.0.0|<2.0.0".parse().unwrap();

// Parse a version range specifier with dynamic dispatch
let dynamic_range = parse("vers:npm/>=1.0.0|<2.0.0").unwrap();

// Check if a version is within the range
assert!(range.contains("1.5.0".parse().unwrap()).unwrap());
assert!(!range.contains("2.0.0".parse().unwrap()).unwrap());

assert!(dynamic_range.contains("1.5.0".to_string()).unwrap());
assert!(!dynamic_range.contains("2.0.0".to_string()).unwrap());

Supported versioning schemes

  • Semver
  • NPM
  • Debian
  • Cargo
  • Intdot

Development

Testing

Native tests run with the usual cargo test.

WASM-specific tests (using #[wasm_bindgen_test] in src/wasm.rs) only run when targeting wasm32-unknown-unknown, and are best run with wasm-pack, which takes care of installing a matching wasm-bindgen CLI version automatically:

rustup target add wasm32-unknown-unknown
cargo install wasm-pack
wasm-pack test --node --features wasm

Node.js must be available on PATH for the --node runner. Use --headless --chrome or --headless --firefox instead to run in a headless browser.

Features

  • Parse version range specifiers in the format vers:<versioning-scheme>/<version-constraint>|<version-constraint>|...
  • Validate version range specifiers according to the rules in the specification
  • Check if a version is within a specified range
  • Support for different versioning schemes
  • Dynamic dispatch wrapper that automatically detects version schemes

TODO: Future Improvements

  • Version Comparison: Implement proper version comparison for different versioning schemes:

    • PEP440 for Python/PyPI
    • Maven versioning rules
    • RubyGems versioning rules
  • Normalization: Improve the normalization algorithm:

    • Use proper version comparison for sorting
    • Handle more edge cases
    • Optimize for better performance
  • Validation: Enhance validation:

    • Validate version formats for different versioning schemes
    • Add more detailed error messages
    • Make sort order validation a hard requirement
  • Error Handling: Improve error handling:

    • Add more specific error types
    • Provide more context in error messages

Keywords

vers

FAQs

Package last updated on 26 Oct 2026

Related posts