@@ -75,6 +75,15 @@ export default class ComponentDetection {
7575
7676 var json : any = JSON . parse ( results ) ;
7777 json . componentsFound . forEach ( async ( component : any ) => {
78+ // Add debug log to show components with missing packageUrl
79+ if ( ! component . component . packageUrl ) {
80+ core . debug ( `Component detected without packageUrl: ${ JSON . stringify ( {
81+ id : component . component . id ,
82+ name : component . component . name || 'unnamed' ,
83+ type : component . component . type || 'unknown'
84+ } , null , 2 ) } `) ;
85+ }
86+
7887 const packageUrl = ComponentDetection . makePackageUrl ( component . component . packageUrl ) ;
7988
8089 if ( ! packageCache . hasPackage ( packageUrl ) ) {
@@ -121,23 +130,35 @@ export default class ComponentDetection {
121130 }
122131
123132 public static makePackageUrl ( packageUrlJson : any ) : string {
124- var packageUrl = `${ packageUrlJson . Scheme } :${ packageUrlJson . Type } /` ;
125- if ( packageUrlJson . Namespace ) {
126- packageUrl += `${ packageUrlJson . Namespace . replaceAll ( "@" , "%40" ) } /` ;
133+ // Handle case when packageUrlJson is null or undefined
134+ if ( ! packageUrlJson ) {
135+ core . debug ( `Warning: Received null or undefined packageUrlJson. Unable to create package URL.` ) ;
136+ return "" ; // Return a blank string for unknown packages
127137 }
128- packageUrl += `${ packageUrlJson . Name . replaceAll ( "@" , "%40" ) } ` ;
129- if ( packageUrlJson . Version ) {
130- packageUrl += `@${ packageUrlJson . Version } ` ;
131- }
132- if ( typeof packageUrlJson . Qualifiers === "object"
133- && packageUrlJson . Qualifiers !== null
134- && Object . keys ( packageUrlJson . Qualifiers ) . length > 0 ) {
135- const qualifierString = Object . entries ( packageUrlJson . Qualifiers )
136- . map ( ( [ key , value ] ) => `${ key } =${ value } ` )
137- . join ( "&" ) ;
138- packageUrl += `?${ qualifierString } ` ;
138+
139+ try {
140+ var packageUrl = `${ packageUrlJson . Scheme } :${ packageUrlJson . Type } /` ;
141+ if ( packageUrlJson . Namespace ) {
142+ packageUrl += `${ packageUrlJson . Namespace . replaceAll ( "@" , "%40" ) } /` ;
143+ }
144+ packageUrl += `${ packageUrlJson . Name . replaceAll ( "@" , "%40" ) } ` ;
145+ if ( packageUrlJson . Version ) {
146+ packageUrl += `@${ packageUrlJson . Version } ` ;
147+ }
148+ if ( typeof packageUrlJson . Qualifiers === "object"
149+ && packageUrlJson . Qualifiers !== null
150+ && Object . keys ( packageUrlJson . Qualifiers ) . length > 0 ) {
151+ const qualifierString = Object . entries ( packageUrlJson . Qualifiers )
152+ . map ( ( [ key , value ] ) => `${ key } =${ value } ` )
153+ . join ( "&" ) ;
154+ packageUrl += `?${ qualifierString } ` ;
155+ }
156+ return packageUrl ;
157+ } catch ( error ) {
158+ core . debug ( `Error creating package URL from packageUrlJson: ${ JSON . stringify ( packageUrlJson , null , 2 ) } ` ) ;
159+ core . debug ( `Error details: ${ error } ` ) ;
160+ return "" ; // Return a blank string for error cases
139161 }
140- return packageUrl ;
141162 }
142163
143164 private static async getLatestReleaseURL ( ) : Promise < string > {
0 commit comments