Closed Festus1248 closed 3 months ago
Hi there,
...small correction from my side: The example I provided above is - in reference to the purl specification not a correct purl, since the value of the qualifier repository_url is not percent encoded.
But if you try with a correct purl like pkg:oci/azure-cli@sha256:9df8ac260650dbae684ab7e47916d4def942582b491d1fe0593b22eb1cac235b?repository_url=index.docker.io%2Fbitnam%2Fazure-cli%26arch%3Damd64 and you transform this into a packageURL Object and back to string (with toString() ), then the result differs from the input. See the following test, which fails:
`import { PackageURL } from 'packageurl-js';
const purl = 'pkg:oci/azure-cli@sha256:9df8ac260650dbae684ab7e47916d4def942582b491d1fe0593b22eb1cac235b?repository_url=index.docker.io%2Fbitnam%2Fazure-cli%26arch%3Damd64';
expect(PackageURL.fromString(purl).toString()).toBe(purl); ` After the toString() method, the qualifier value contains '/', which is not percent-encoded.
Sorry for the confusion!
This is handled in https://github.com/package-url/packageurl-js/pull/73 by using URLSearchParams
to encode and then turning +
into %20
for better portability. I sided with the Rust implementation.
Also leveraging standard URLSearchParams
. Deferring to standard encoders like URLSearchParams
and encodeURIComponent
for base encoding and then applying tweaks allows for less chances of mistakes (I trust standard implementations over myself).
Closed by #73
Hi there,
...maybe this is just misunderstanding from my side, but when I create a purl object for a purl like this
pkg:oci/azure-cli@sha256:9df8ac260650dbae684ab7e47916d4def942582b491d1fe0593b22eb1cac235b?repository_url=index.docker.io%2Fbitnami%2Fazure-cli\u0026arch=amd64
it seems that the (encoded) query parameter from the query parameterrepository_url
is handled as separate query parameter of the purl and not of therepository_url
. The result is:My expectation would have been:
Is my expectation wrong or is this a bug?