{"library":"semver-parser","title":"SemVer Parser","description":"semver-parser is a JavaScript/TypeScript library designed for robust parsing, verification, and comparison of Semantic Versioning (SemVer) strings. The current stable version is 4.1.8. The package maintains a stable release cadence, with recent updates primarily focusing on tooling and maintenance rather than introducing breaking changes or new features. A key differentiator of `semver-parser` is its developer-friendly approach to 'v' prefixes; it accepts version strings like 'v1.2.3' by default, while also offering a `strict` parameter to enforce strict SemVer adherence, rejecting such prefixes. It provides both synchronous and asynchronous (Promise-based) APIs for its core functionalities, accessible through distinct import patterns, offering flexibility for various application environments and coding styles. It ships with TypeScript types for enhanced developer experience.","language":"javascript","status":"active","last_verified":"Sun Apr 19","install":{"commands":["npm install semver-parser"],"cli":null},"imports":["import { parseSemVer } from 'semver-parser'","import { isValidSemVer } from 'semver-parser'","import { promises } from 'semver-parser'; const { parseSemVer, isValidSemVer, compareSemVer } = promises;"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import { parseSemVer, isValidSemVer, compareSemVer, promises } from 'semver-parser';\n\nasync function runSemVerExamples() {\n  const versionString = 'v1.2.3-alpha.1+build.123';\n  const baseVersionString = '1.2.0';\n  const strictVersion = '1.0.0';\n\n  console.log('--- Synchronous API Examples ---');\n\n  // Parse a version string (accepts 'v' prefix by default)\n  const parsed = parseSemVer(versionString);\n  console.log(`Parsed '${versionString}':`, JSON.stringify(parsed));\n  // Expected: { version: 'v1.2.3-alpha.1+build.123', matches: true, major: 1, minor: 2, patch: 3, pre: [ 'alpha', 1 ], build: [ 'build', 123 ] }\n\n  // Parse strictly (rejects 'v' prefix)\n  const parsedStrict = parseSemVer(versionString, true);\n  console.log(`Parsed strictly '${versionString}':`, JSON.stringify(parsedStrict));\n  // Expected: { version: 'v1.2.3-alpha.1+build.123', matches: false }\n\n  // Validate a version string\n  const isValid = isValidSemVer(strictVersion);\n  console.log(`Is '${strictVersion}' valid SemVer?`, isValid); // true\n\n  const isValidVPrefixStrict = isValidSemVer('v1.0.0', true);\n  console.log(`Is 'v1.0.0' valid SemVer (strict)?`, isValidVPrefixStrict); // false\n\n  // Compare two version strings\n  const comparisonResult = compareSemVer(versionString, baseVersionString);\n  console.log(`Compare '${versionString}' vs '${baseVersionString}':`, comparisonResult);\n  // Expected: 1 (versionString is greater)\n\n  console.log('\\n--- Asynchronous API Examples ---');\n\n  // Destructure async functions from the 'promises' object\n  const { parseSemVer: parseSemVerAsync, isValidSemVer: isValidSemVerAsync, compareSemVer: compareSemVerAsync } = promises;\n\n  const parsedAsync = await parseSemVerAsync(versionString);\n  console.log(`Parsed (async) '${versionString}':`, JSON.stringify(parsedAsync));\n\n  const isValidAsync = await isValidSemVerAsync(strictVersion);\n  console.log(`Is '${strictVersion}' valid SemVer (async)?`, isValidAsync);\n\n  const comparisonAsync = await compareSemVerAsync(versionString, baseVersionString);\n  console.log(`Compare (async) '${versionString}' vs '${baseVersionString}':`, comparisonAsync);\n}\n\nrunSemVerExamples().catch(console.error);","lang":"typescript","description":"Demonstrates both synchronous and asynchronous parsing, validation, and comparison of SemVer strings, including the use of the `strict` option.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":null}