import { Region , Run } from 'sarif' ; function getHostname ( url ) { if ( ! url ) return undefined ; try { return new URL ( url ) . hostname ; } catch ( _ ) { return undefined ; } } export function getRepoUri ( uri , run , region ? ) { if ( ! uri ) return undefined ; const versionControlDetails = run . versionControlProvenance ?. [ 0 ] ; if ( ! versionControlDetails ) return undefined ; const { repositoryUri , revisionId } = versionControlDetails ; const hostname = getHostname ( repositoryUri ) ; if ( ! hostname ) return undefined ; if ( hostname . endsWith ( 'azure.com' ) || hostname ?. endsWith ( 'visualstudio.com' ) ) { let repoUri = revisionId ? `${ repositoryUri }?path=${ encodeURIComponent ( uri ) }&version=GC${ revisionId }` : `${ repositoryUri }?path=${ encodeURIComponent ( uri ) }` ; if ( region ?. startLine ) { repoUri += `&line=${ region ! . startLine }` ; repoUri += `&lineEnd=${ region ! . endLine ?? ( region ! . startLine + ( region ! . endColumn ? 0 : 1 ) ) }` ; repoUri += `&lineStartColumn=${ region ! . startColumn ?? 1 }` ; if ( region ?. endColumn ) { repoUri += `&lineEndColumn=${ region ! . endColumn }` ; } } return repoUri ; } if ( hostname . endsWith ( 'github.com' ) ) { let repoUri = `${ repositoryUri }/blob/${ revisionId ?? 'main' }${ uri }` ; if ( region ?. startLine ) { repoUri += `#L${ region ! . startLine }` ; } return repoUri ; } return undefined ; }