@@ -27,11 +27,11 @@ Copyright (c) OWASP Foundation. All Rights Reserved.
2727 */
2828
2929import type { PackageURL } from 'packageurl-js'
30+ import { PurlQualifierNames } from 'packageurl-js'
3031
3132import { tryCanonicalizeGitUrl } from "../_helpers/gitUrl"
3233import { isNotUndefined } from '../_helpers/notUndefined'
3334import type { PackageJson } from '../_helpers/packageJson'
34- import { PackageUrlQualifierNames } from '../_helpers/packageUrl'
3535import { ExternalReferenceType } from '../enums/externalReferenceType'
3636import type { Component } from '../models/component'
3737import { ExternalReference } from '../models/externalReference'
@@ -137,20 +137,24 @@ export class PackageUrlFactory extends PlainPackageUrlFactory<'npm'> {
137137 #finalizeQualifiers ( purl : PackageURL ) : PackageURL {
138138 const qualifiers = new Map ( Object . entries ( purl . qualifiers ?? { } ) )
139139
140- const downloadUrl = qualifiers . get ( PackageUrlQualifierNames . DownloadURL )
140+ const downloadUrl = qualifiers . get ( PurlQualifierNames . DownloadUrl )
141141 if ( downloadUrl !== undefined ) {
142- qualifiers . delete ( PackageUrlQualifierNames . VcsUrl )
142+ qualifiers . delete ( PurlQualifierNames . VcsUrl )
143143 if ( npmDefaultRepositoryMatcher . test ( downloadUrl ) ) {
144- qualifiers . delete ( PackageUrlQualifierNames . DownloadURL )
144+ qualifiers . delete ( PurlQualifierNames . DownloadUrl )
145145 }
146146 }
147- if ( ! qualifiers . has ( PackageUrlQualifierNames . DownloadURL ) && ! qualifiers . has ( PackageUrlQualifierNames . VcsUrl ) ) {
147+ if ( ! qualifiers . has ( PurlQualifierNames . DownloadUrl ) && ! qualifiers . has ( PurlQualifierNames . VcsUrl ) ) {
148148 // nothing to base a checksum on
149- qualifiers . delete ( PackageUrlQualifierNames . Checksum )
149+ qualifiers . delete ( PurlQualifierNames . Checksum )
150+ }
151+ if ( qualifiers . size > 0 ) {
152+ purl . qualifiers = Object . fromEntries ( qualifiers . entries ( ) )
153+ /* @ts -expect-error TS2322 */
154+ purl . qualifiers . __proto__ = null /* eslint-disable-line no-proto -- intended */
155+ } else {
156+ purl . qualifiers = undefined
150157 }
151- purl . qualifiers = qualifiers . size > 0
152- ? Object . fromEntries ( qualifiers . entries ( ) )
153- : undefined
154158
155159 return purl
156160 }
0 commit comments