@socketregistry/packageurl-js


TypeScript-first Package URL (purl) parser and builder. Drop-in replacement for packageurl-js with better types and zero dependencies.
Why use this?
- 🎯 TypeScript-first: Full type safety and IntelliSense
- 📦 Zero dependencies: No supply chain bloat
- ✅ Spec compliant: Implements Package URL specification
- 🔨 Builder API: Fluent, ecosystem-specific builders
Installation
pnpm install @socketregistry/packageurl-js
Package override (recommended for drop-in replacement):
{
"pnpm": {
"overrides": {
"packageurl-js": "npm:@socketregistry/packageurl-js@^1"
}
}
}
Requirements: Node >= 18.20.4
Usage
Parse existing purls:
import { PackageURL } from '@socketregistry/packageurl-js'
const purl = PackageURL.fromString('pkg:npm/lodash@4.17.21')
console.log(purl.name)
console.log(purl.version)
Build new purls (recommended):
import { PackageURLBuilder } from '@socketregistry/packageurl-js'
PackageURLBuilder.npm().name('lodash').version('4.17.21').build()
PackageURLBuilder.pypi().name('requests').version('2.28.1').build()
PackageURLBuilder.maven()
.namespace('org.springframework')
.name('spring-core')
.version('5.3.21')
.qualifier('classifier', 'sources')
.build()
Constructor API:
import { PackageURL } from '@socketregistry/packageurl-js'
new PackageURL('npm', null, 'express', '4.18.2')
new PackageURL('npm', '@babel', 'runtime', '7.18.6', null, 'helpers/typeof.js')
Convert to URLs:
import { UrlConverter } from '@socketregistry/packageurl-js'
UrlConverter.toRepositoryUrl(purl)
UrlConverter.toDownloadUrl(purl)
Development
pnpm install
pnpm build
pnpm test
pnpm check