Skip to content

Commit 7aeee19

Browse files
committed
Improve README value proposition and clarity
- Enhance opening description with clear benefits - Add 'Why use this?' section with emojis for scannability - Fix pnpm overrides syntax (use pnpm.overrides field) - Reorganize usage examples by use case (Parse/Build/Constructor/Convert) - Make examples more concise and scannable
1 parent 83b027c commit 7aeee19

File tree

1 file changed

+42
-31
lines changed

1 file changed

+42
-31
lines changed

README.md

Lines changed: 42 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -6,24 +6,27 @@
66
[![Follow @SocketSecurity](https://img.shields.io/twitter/follow/SocketSecurity?style=social)](https://twitter.com/SocketSecurity)
77
[![Follow @socket.dev on Bluesky](https://img.shields.io/badge/[email protected]?style=social&logo=bluesky)](https://bsky.app/profile/socket.dev)
88

9-
TypeScript-first Package URL parser. Drop-in replacement for [`packageurl-js`](https://socket.dev/npm/package/packageurl-js).
9+
TypeScript-first Package URL (purl) parser and builder. **Drop-in replacement** for [`packageurl-js`](https://socket.dev/npm/package/packageurl-js) with better types and zero dependencies.
1010

11-
- TypeScript support
12-
- Zero dependencies
13-
- [Package URL spec](https://github.com/package-url/purl-spec) compliant
14-
- Builder pattern API
11+
**Why use this?**
12+
- 🎯 **TypeScript-first**: Full type safety and IntelliSense
13+
- 📦 **Zero dependencies**: No supply chain bloat
14+
-**Spec compliant**: Implements [Package URL specification](https://github.com/package-url/purl-spec)
15+
- 🔨 **Builder API**: Fluent, ecosystem-specific builders
1516

1617
## Installation
1718

1819
```sh
1920
pnpm install @socketregistry/packageurl-js
2021
```
2122

22-
**Package override** (recommended):
23+
**Package override** (recommended for drop-in replacement):
2324
```json
2425
{
25-
"overrides": {
26-
"packageurl-js": "npm:@socketregistry/packageurl-js@^1"
26+
"pnpm": {
27+
"overrides": {
28+
"packageurl-js": "npm:@socketregistry/packageurl-js@^1"
29+
}
2730
}
2831
}
2932
```
@@ -32,49 +35,57 @@ pnpm install @socketregistry/packageurl-js
3235

3336
## Usage
3437

38+
**Parse existing purls:**
3539
```javascript
36-
import { PackageURL, PackageURLBuilder, UrlConverter } from '@socketregistry/packageurl-js'
40+
import { PackageURL } from '@socketregistry/packageurl-js'
3741

38-
// Parse from string
3942
const purl = PackageURL.fromString('pkg:npm/[email protected]')
4043
console.log(purl.name) // 'lodash'
44+
console.log(purl.version) // '4.17.21'
45+
```
4146

42-
// Create from components
43-
const newPurl = new PackageURL('npm', null, 'express', '4.18.2')
44-
// -> 'pkg:npm/[email protected]'
47+
**Build new purls (recommended):**
48+
```javascript
49+
import { PackageURLBuilder } from '@socketregistry/packageurl-js'
4550

46-
// Builder pattern - ecosystem-specific builders
47-
const npmPurl = PackageURLBuilder
48-
.npm()
49-
.name('lodash')
50-
.version('4.17.21')
51-
.build()
51+
// npm packages
52+
PackageURLBuilder.npm().name('lodash').version('4.17.21').build()
5253
// -> 'pkg:npm/[email protected]'
5354

54-
const pythonPurl = PackageURLBuilder
55-
.pypi()
56-
.name('requests')
57-
.version('2.28.1')
58-
.build()
55+
// Python packages
56+
PackageURLBuilder.pypi().name('requests').version('2.28.1').build()
5957
// -> 'pkg:pypi/[email protected]'
6058

61-
const javaPurl = PackageURLBuilder
62-
.maven()
59+
// Maven with namespace and qualifiers
60+
PackageURLBuilder.maven()
6361
.namespace('org.springframework')
6462
.name('spring-core')
6563
.version('5.3.21')
6664
.qualifier('classifier', 'sources')
6765
.build()
6866
// -> 'pkg:maven/org.springframework/[email protected]?classifier=sources'
67+
```
68+
69+
**Constructor API:**
70+
```javascript
71+
import { PackageURL } from '@socketregistry/packageurl-js'
72+
73+
new PackageURL('npm', null, 'express', '4.18.2')
74+
// -> 'pkg:npm/[email protected]'
6975

70-
// Subpaths for packages like npm/@babel/runtime
71-
const subpathPurl = new PackageURL('npm', '@babel', 'runtime', '7.18.6', null, 'helpers/typeof.js')
76+
// With namespace and subpath
77+
new PackageURL('npm', '@babel', 'runtime', '7.18.6', null, 'helpers/typeof.js')
7278
// -> 'pkg:npm/%40babel/[email protected]#helpers/typeof.js'
79+
```
7380

74-
// URL conversion
75-
const repoUrl = UrlConverter.toRepositoryUrl(purl)
81+
**Convert to URLs:**
82+
```javascript
83+
import { UrlConverter } from '@socketregistry/packageurl-js'
84+
85+
UrlConverter.toRepositoryUrl(purl)
7686
// -> 'https://github.com/lodash/lodash'
77-
const downloadUrl = UrlConverter.toDownloadUrl(purl)
87+
88+
UrlConverter.toDownloadUrl(purl)
7889
// -> 'https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz'
7990
```
8091

0 commit comments

Comments
 (0)