All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
1.4.2 - 2026-04-14
- Reduce
exists.jsbundle from 3,300KB to 470KB by stubbing unused@socketsecurity/libinternals (sorts.js, globs.js) that were dragged in via lazy require chains but never called at runtime - Remove unused
picomatchruntime dependency and@types/picomatch— already bundled by esbuild via@socketsecurity/lib's internal pico-pack
1.4.1 - 2026-03-30
- Bounded internal caches and string processing
- Freeze cached instances for immutability
- Improved primordial coverage for consistency
- Tidied up validation helpers and consolidated shared patterns
- Component comparator uses numeric comparison
- Stringify edge case with
"0"as a valid component value - VERS containment for compound range expressions
1.4.0 - 2026-03-28
- VERS parser: First JavaScript implementation of the VERS (VErsion Range Specifier) companion spec to PURL
- URL-to-PURL conversion:
UrlConverter.fromUrl()converts registry URLs to PackageURLs toSpec()method: Returns the package identity without thepkg:type/prefixisValid()static method: Quick validation without throwingfromUrl()static method: Convenience wrapper forUrlConverter.fromUrl()- Immutable copy methods:
withVersion(),withNamespace(),withQualifier(),withQualifiers(),withSubpath()return new instances - PurlBuilder factories: Added type factories for common ecosystems
- Input validation utilities: Character detection for dangerous input
versqualifier: Added 6th standard qualifier per purl spec./existsentry point: Registry existence checks available via@socketregistry/packageurl-js/exists
- Bundle size reduced 95%: Exists functions moved to separate entry point to avoid bundling HTTP dependencies
- Hardened against prototype pollution: Built-in references captured at module load time
- Frozen constants: Module-level data structures are immutable
- Null prototype objects: All user-facing object literals use null prototypes
- Performance: Instance caching for
fromString();toString()memoized - Version lowercasing: Added for oci, pypi, and vscode-extension per upstream spec
- ReDoS prevention: Fixed potential denial-of-service in pattern matching
- Input validation: Reject dangerous characters in string components
- VERS resource limits: Constraint and value bounds enforced
- vscode-extension validation: Improved input validation
1.3.5 - 2025-11-02
- Updated @socketsecurity/lib to 3.1.2
1.3.4 - 2025-11-02
- Bundled @socketsecurity/lib internally to reduce consumer dependencies
- Improved build output with shortened module identifiers for better readability
- Internal validation for bundle dependency configuration
- Pre-commit and pre-push git hooks
1.3.3 - 2025-11-01
- Fixed reference to external file in build
1.3.2 - 2025-11-01
- Disabled minification in build output for improved readability and debugging
1.3.1 - 2025-10-21
- Use @socketsecurity/lib under the hood
1.3.0 - 2025-10-06
- Re-exported
PURL_Typeenum from@socketsecurity/registryfor type-safe package ecosystem identifiers - Re-exported
EcosystemStringtype for type annotations requiring valid PURL type strings - Documentation and usage examples for
PURL_Typeenum in README
1.2.0 - 2025-10-04
- Type coverage configuration with 100% coverage requirement
- Comprehensive backward compatibility tests for validation functions
- Converted validation functions to options pattern with backward compatibility
- Renamed normalizePath to normalizePurlPath with options pattern
- Refactored PackageURL types with explicit exports
- Fixed error handling and concurrency issues in test suite
- Improved type safety with typed arrays replacing any[]
1.1.6 - 2025-10-03
- Enhanced TypeScript strictness with explicit
| undefinedfor optional properties and parameters - Added comprehensive JSDoc documentation for core classes
- Optimized build output by disabling source map generation
1.1.5 - 2025-09-30
- Type-specific validation for cocoapods package names
- Name cannot contain whitespace
- Name cannot contain plus (+) character
- Name cannot begin with a period
- Type-specific validation for cpan package namespaces
- Namespace must be UPPERCASE when present
- Type-specific validation for swid package qualifiers
- Requires tag_id qualifier
- tag_id must not be empty
- GUID format tag_id must be lowercase
- Error message formatting in validateStrings function
1.1.4 - 2025-09-29
- Fixed publishing workflow to ensure dist folder is built before npm publish
- Changed prepublishOnly script to prevent accidental local publishing
1.1.3 - 2025-09-29
- Fixed tsgo transpilation bug that produced incorrect
exports.encodeComponent = void 0;output
1.1.2 - 2025-09-27
- Enhanced build performance and reliability
- Improved package stability
1.1.1 - 2025-09-26
- Removed pnpm engine requirement from package.json
1.1.0 - 2025-09-26
- PackageURLBuilder: Fluent API for constructing PackageURL instances with method chaining
- Static factory methods for common package types (npm, pypi, maven, gem, golang, cargo, nuget, composer)
- Support for all PackageURL components: type, namespace, name, version, qualifiers, and subpath
build()method creates validated PackageURL instancesfrom()static method creates builders from existing PackageURL instances
- UrlConverter: URL conversion utilities for Package URLs
toRepositoryUrl()converts PackageURLs to repository URLs (supports 14+ package ecosystems)toDownloadUrl()converts PackageURLs to download URLs for package artifacts- Support for multiple URL types: git, web, tarball, zip, jar, gem, wheel formats
getAllUrls()convenience method for getting both repository and download URLs- Type support checking with
supportsRepositoryUrl()andsupportsDownloadUrl()
- Support for parsing Package URLs that don't start with
pkg:scheme - Comprehensive documentation with usage examples
- Enhanced documentation with improved structure and readability
- Added features section highlighting key benefits
- Various improvements and fixes
1.0.8 - 2025-09-01
- Updated implementation for PackageURL specification changes
1.0.7 - 2025-08-15
- Bug fixes and stability improvements
1.0.1 - 2025-05-15
- Initial Socket.dev optimized package override implementation
1.0.0 - 2025-05-01
- Initial release of @socketregistry/packageurl-js
- Socket.dev optimized package override for packageurl-js
- Full compatibility with original packageurl-js API