npm-package-arg
Advanced tools
Comparing version 10.0.0 to 10.1.0
'use strict' | ||
module.exports = npa | ||
module.exports.resolve = resolve | ||
module.exports.toPurl = toPurl | ||
module.exports.Result = Result | ||
@@ -90,2 +91,20 @@ | ||
const defaultRegistry = 'https://registry.npmjs.org' | ||
function toPurl (arg, reg = defaultRegistry) { | ||
const res = npa(arg) | ||
if (res.type !== 'version') { | ||
throw invalidPurlType(res.type, res.raw) | ||
} | ||
// URI-encode leading @ of scoped packages | ||
let purl = 'pkg:npm/' + res.name.replace(/^@/, '%40') + '@' + res.rawSpec | ||
if (reg !== defaultRegistry) { | ||
purl += '?repository_url=' + reg | ||
} | ||
return purl | ||
} | ||
function invalidPackageName (name, valid, raw) { | ||
@@ -105,2 +124,9 @@ // eslint-disable-next-line max-len | ||
function invalidPurlType (type, raw) { | ||
// eslint-disable-next-line max-len | ||
const err = new Error(`Invalid type "${type}" of package "${raw}": Purl can only be generated for "version" types.`) | ||
err.code = 'EINVALIDPURLTYPE' | ||
return err | ||
} | ||
function Result (opts) { | ||
@@ -107,0 +133,0 @@ this.type = opts.type |
{ | ||
"name": "npm-package-arg", | ||
"version": "10.0.0", | ||
"version": "10.1.0", | ||
"description": "Parse the things that can be arguments to `npm install`", | ||
@@ -21,3 +21,3 @@ "main": "./lib/npa.js", | ||
"@npmcli/eslint-config": "^4.0.0", | ||
"@npmcli/template-oss": "4.6.1", | ||
"@npmcli/template-oss": "4.10.0", | ||
"tap": "^16.0.1" | ||
@@ -58,4 +58,4 @@ }, | ||
"//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", | ||
"version": "4.6.1" | ||
"version": "4.10.0" | ||
} | ||
} |
@@ -48,2 +48,12 @@ # npm-package-arg | ||
### var purl = npa.toPurl(*arg*, *reg*) | ||
Returns the [purl (package URL)](https://github.com/package-url/purl-spec) form of the given pacakge name/spec. | ||
* *arg* - A package/version string. For example: `foo@1.0.0` or `@bar/foo@2.0.0-alpha.1`. | ||
* *reg* - Optionally the URL to the package registry. If not specified, assumes the default | ||
`https://registry.npmjs.org`. | ||
**Throws** if the package name is invalid, or the supplied arg can't be resolved to a purl. | ||
## RESULT OBJECT | ||
@@ -50,0 +60,0 @@ |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
19715
388
97