Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion web/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@
"@codemirror/view": "^6.9.6",
"@harnessio/design-system": "^2.1.1",
"@harnessio/icons": "^2.1.18",
"@harnessio/react-har-service-client": "0.48.0",
"@harnessio/react-har-service-client": "0.49.0",
"@harnessio/react-ng-manager-client": "^1.40.0",
"@harnessio/react-ssca-manager-client": "^0.65.0",
"@harnessio/uicore": "^4.3.4",
Expand Down
4 changes: 2 additions & 2 deletions web/src/ar/components/Badge/ScanCategoryBadge.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,15 @@
*/

import React from 'react'
import type { PolicyFailureDetailCategory } from '@harnessio/react-har-service-client'
import type { PolicyFailureDetailCategoryV3 } from '@harnessio/react-har-service-client'

import { useStrings } from '@ar/frameworks/strings'

import Badge from './Badge'
import css from './Badge.module.scss'

interface ScanBadgeProps {
category: PolicyFailureDetailCategory
category: PolicyFailureDetailCategoryV3
}

export default function ScanCategoryBadge(props: ScanBadgeProps): JSX.Element {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

import React from 'react'
import { useToaster } from '@harnessio/uicore'
import { evaluateArtifactScan, type V3Error } from '@harnessio/react-har-service-client'
import { evaluateArtifactScanV3, type ErrorV3 } from '@harnessio/react-har-service-client'

import { useAppStore, useParentComponents } from '@ar/hooks'
import { useStrings } from '@ar/frameworks/strings'
Expand All @@ -42,15 +42,15 @@ function ReEvaluateMenuItem(props: VersionActionProps) {
}

const handleReEvaluate = async () => {
return evaluateArtifactScan({
return evaluateArtifactScanV3({
queryParams: { account_identifier: accountId || '' },
body: { versionId: data.uuid }
})
.then(() => {
clear()
showSuccess(getString('versionList.messages.reEvaluateSuccess'))
})
.catch((err: V3Error) => {
.catch((err: ErrorV3) => {
clear()
showError(err?.error?.message ?? getString('versionList.messages.reEvaluateFailed'))
})
Expand Down
8 changes: 4 additions & 4 deletions web/src/ar/pages/violations-list/ViolationsListPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import classNames from 'classnames'
import { flushSync } from 'react-dom'
import { Expander } from '@blueprintjs/core'
import { Color } from '@harnessio/design-system'
import { useGetArtifactScansQuery } from '@harnessio/react-har-service-client'
import { useGetArtifactScansV3Query } from '@harnessio/react-har-service-client'
import {
Button,
ButtonVariation,
Expand Down Expand Up @@ -61,13 +61,13 @@ export default function ViolationsListPage() {
isFetching: loading,
error,
refetch
} = useGetArtifactScansQuery({
} = useGetArtifactScansV3Query({
queryParams: {
account_identifier: accountId || '',
org_identifier: orgIdentifier,
project_identifier: projectIdentifier,
registry_id: repositoryIds,
package_type: packageTypes,
registry_ids: repositoryIds,
package_types: packageTypes,
page,
size,
search_term: searchTerm,
Expand Down
10 changes: 5 additions & 5 deletions web/src/ar/pages/violations-list/ViolationsListTable.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import React from 'react'
import classNames from 'classnames'
import type { Column } from 'react-table'
import { PaginationProps, TableV2 } from '@harnessio/uicore'
import type { ArtifactScan, ListArtifactScanResponseResponse } from '@harnessio/react-har-service-client'
import type { ArtifactScanV3, ListArtifactScanResponseV3Response } from '@harnessio/react-har-service-client'

import { useParentHooks } from '@ar/hooks'
import { useStrings } from '@ar/frameworks/strings'
Expand All @@ -33,7 +33,7 @@ import {
import css from './ViolationsListPage.module.scss'

export interface ViolationsListTableProps {
data: ListArtifactScanResponseResponse
data: ListArtifactScanResponseV3Response
gotoPage: (pageNumber: number) => void
onPageSizeChange?: PaginationProps['onPageSizeChange']
setSortBy: (sortBy: string[]) => void
Expand All @@ -57,7 +57,7 @@ export default function ViolationsListTable(props: ViolationsListTableProps): JS
onPageSizeChange
})

const columns: Column<ArtifactScan>[] = React.useMemo(() => {
const columns: Column<ArtifactScanV3>[] = React.useMemo(() => {
return [
{
Header: getString('violationsList.table.columns.package'),
Expand Down Expand Up @@ -94,11 +94,11 @@ export default function ViolationsListTable(props: ViolationsListTableProps): JS
disableSortBy: true,
width: '100%'
}
].filter(Boolean) as unknown as Column<ArtifactScan>[]
].filter(Boolean) as unknown as Column<ArtifactScanV3>[]
}, [getString])

return (
<TableV2<ArtifactScan>
<TableV2<ArtifactScanV3>
className={classNames(css.table)}
columns={columns}
data={scans}
Expand Down
6 changes: 3 additions & 3 deletions web/src/ar/pages/violations-list/__tests__/mockData.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@
* limitations under the License.
*/

import type { ArtifactScanDetails, ListArtifactScanResponseResponse } from '@harnessio/react-har-service-client'
import type { ArtifactScanDetailsV3, ListArtifactScanResponseV3Response } from '@harnessio/react-har-service-client'

export const mockData: ListArtifactScanResponseResponse = {
export const mockData: ListArtifactScanResponseV3Response = {
data: [
{
id: '1',
Expand Down Expand Up @@ -58,7 +58,7 @@ export const mockData: ListArtifactScanResponseResponse = {
pageSize: 10
}

export const mockArtifactScanDetails: ArtifactScanDetails = {
export const mockArtifactScanDetails: ArtifactScanDetailsV3 = {
id: '1',
packageType: 'NPM',
packageName: 'package1',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

import React from 'react'
import { Color } from '@harnessio/design-system'
import type { ArtifactScan } from '@harnessio/react-har-service-client'
import type { ArtifactScanV3 } from '@harnessio/react-har-service-client'
import { Button, ButtonSize, ButtonVariation, Layout, Text } from '@harnessio/uicore'
import type { TableInstance, ColumnInstance, Row, Cell, CellValue, Renderer } from 'react-table'

Expand All @@ -43,7 +43,7 @@ export interface PolicySetSpec {
scanId: string
}

type CellType = Renderer<CellTypeWithActions<ArtifactScan>>
type CellType = Renderer<CellTypeWithActions<ArtifactScanV3>>

export const DependencyAndVersionCell: CellType = ({ row }) => {
const { original } = row
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
import React from 'react'
import { Container, Layout, Text } from '@harnessio/uicore'
import { Color, FontVariation } from '@harnessio/design-system'
import type { ArtifactScanDetails } from '@harnessio/react-har-service-client'
import type { ArtifactScanDetailsV3 } from '@harnessio/react-har-service-client'

import { useRoutes } from '@ar/hooks'
import { useStrings } from '@ar/frameworks/strings'
Expand All @@ -28,7 +28,7 @@ import InformationMetrics from './InformationMetrics'
import css from './ViolationDetailsContent.module.scss'

interface BasicInformationContentProps {
data: ArtifactScanDetails
data: ArtifactScanDetailsV3
}

function BasicInformationContent({ data }: BasicInformationContentProps) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
import React from 'react'
import { Container, Layout, Text } from '@harnessio/uicore'
import { Color, FontVariation } from '@harnessio/design-system'
import type { ArtifactScanDetails } from '@harnessio/react-har-service-client'
import type { ArtifactScanDetailsV3 } from '@harnessio/react-har-service-client'

import { useStrings } from '@ar/frameworks/strings'
import { DEFAULT_DATE_TIME_FORMAT } from '@ar/constants'
Expand All @@ -28,7 +28,7 @@ import InformationMetrics from './InformationMetrics'
import css from './ViolationDetailsContent.module.scss'

interface EvaluationInformationContentProps {
data: ArtifactScanDetails
data: ArtifactScanDetailsV3
}

function EvaluationInformationContent({ data }: EvaluationInformationContentProps) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
import React from 'react'
import { Container, Layout, Text } from '@harnessio/uicore'
import { Color, FontVariation } from '@harnessio/design-system'
import type { ArtifactScanDetails } from '@harnessio/react-har-service-client'
import type { ArtifactScanDetailsV3 } from '@harnessio/react-har-service-client'

import { useStrings } from '@ar/frameworks/strings'

Expand All @@ -26,7 +26,7 @@ import InformationMetrics from './InformationMetrics'
import css from './ViolationDetailsContent.module.scss'

interface FixInformationContentProps {
data: ArtifactScanDetails
data: ArtifactScanDetailsV3
}

function FixInformationContent({ data }: FixInformationContentProps) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import { Link } from 'react-router-dom'
import type { IconProps } from '@harnessio/icons'
import { Layout, Text } from '@harnessio/uicore'
import { Color, FontVariation } from '@harnessio/design-system'
import type { ArtifactScan, PolicyFailureDetailCategory } from '@harnessio/react-har-service-client'
import type { ArtifactScanV3, PolicyFailureDetailCategoryV3 } from '@harnessio/react-har-service-client'

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

fd -t f "(ScanBadge|ScanCategoryBadge)" --extension tsx --extension ts

Repository: abhinavcode/harness

Length of output: 154


🏁 Script executed:

cat -n web/src/ar/components/Badge/ScanBadge.tsx

Repository: abhinavcode/harness

Length of output: 3795


🏁 Script executed:

cat -n web/src/ar/components/Badge/ScanCategoryBadge.tsx

Repository: abhinavcode/harness

Length of output: 2030


🏁 Script executed:

cat -n web/src/ar/pages/violations-list/components/ViolationDetailsContent/InformationMetrics.tsx

Repository: abhinavcode/harness

Length of output: 5879


🏁 Script executed:

# Verify what types these are in the service client to understand compatibility
rg "type ArtifactScanV3|interface ArtifactScanV3" -A 3 --type ts --type tsx 2>/dev/null || echo "Checking in node_modules or package..."
# Also check ArtifactVersionSummary
rg "type ArtifactVersionSummary|interface ArtifactVersionSummary" -A 3 --type ts --type tsx 2>/dev/null || echo "Not found in repo"

Repository: abhinavcode/harness

Length of output: 119


Type mismatch in ScanBadge: incompatible with V3 migration

The downstream component ScanBadge expects ArtifactVersionSummary['scanStatus'] but InformationMetrics is now passing ArtifactScanV3['scanStatus'] (line 138). This type mismatch will cause TypeScript compilation errors. Update ScanBadge to accept the V3 type.

ScanCategoryBadge correctly accepts PolicyFailureDetailCategoryV3 and is compatible.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@web/src/ar/pages/violations-list/components/ViolationDetailsContent/InformationMetrics.tsx`
at line 22, InformationMetrics now passes ArtifactScanV3['scanStatus'] into
ScanBadge but ScanBadge's prop types still expect
ArtifactVersionSummary['scanStatus'], causing a TypeScript mismatch; update
ScanBadge's prop/interface to accept the V3 scanStatus type
(ArtifactScanV3['scanStatus']) or a union that includes it, adjust the ScanBadge
component signature/props and any related prop typings/usage to reference
ArtifactScanV3 (or ArtifactScanV3 | ArtifactVersionSummary) so
InformationMetrics can pass its value without type errors while
ScanCategoryBadge can remain unchanged.


import ScanBadge from '@ar/components/Badge/ScanBadge'
import ScanCategoryBadge from '@ar/components/Badge/ScanCategoryBadge'
Expand Down Expand Up @@ -121,7 +121,7 @@ function LinkMetric(props: LinkMetricProps) {
interface StatusMetricProps {
label: string
labelIconProps?: IconProps
status: ArtifactScan['scanStatus']
status: ArtifactScanV3['scanStatus']
scanId: string
}

Expand All @@ -143,7 +143,7 @@ function ScanStatusMetric(props: StatusMetricProps) {
interface CategoryMetricProps {
label: string
labelIconProps?: IconProps
category: PolicyFailureDetailCategory
category: PolicyFailureDetailCategoryV3
}

function ScanCategoryMetric(props: CategoryMetricProps) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
import React from 'react'
import { Collapse, Layout, Text } from '@harnessio/uicore'
import { Color, FontVariation } from '@harnessio/design-system'
import type { ArtifactScanDetails, PolicySetFailureDetail } from '@harnessio/react-har-service-client'
import type { ArtifactScanDetailsV3, PolicySetFailureDetailV3 } from '@harnessio/react-har-service-client'

import { useStrings } from '@ar/frameworks/strings'
import { Separator } from '@ar/components/Separator/Separator'
Expand All @@ -29,7 +29,7 @@ import useGetPolicySetDetailsPageUrl from '../../hooks/useGetPolicyDetailsPageUr
import css from './ViolationDetailsContent.module.scss'

interface PolicySetCollapseTitleProps {
data: PolicySetFailureDetail
data: PolicySetFailureDetailV3
}
function PolicySetCollapseTitle({ data }: PolicySetCollapseTitleProps) {
const { getString } = useStrings()
Expand All @@ -50,7 +50,7 @@ function PolicySetCollapseTitle({ data }: PolicySetCollapseTitleProps) {
}

interface ViolationDetailsProps {
data: ArtifactScanDetails
data: ArtifactScanDetailsV3
}

function ViolationDetails(props: ViolationDetailsProps) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,9 @@ import { ButtonVariation, Container, Layout, Text, useToaster } from '@harnessio
import { FontVariation } from '@harnessio/design-system'
import {
Error,
evaluateArtifactScan,
useGetArtifactScanDetailsQuery,
V3Error
evaluateArtifactScanV3,
useGetArtifactScanDetailsV3Query,
ErrorV3
} from '@harnessio/react-har-service-client'

import { useAppStore, useParentComponents } from '@ar/hooks'
Expand Down Expand Up @@ -52,8 +52,8 @@ function ViolationDetailsContent(props: ViolationDetailsContentProps) {
isFetching: loading,
error,
refetch
} = useGetArtifactScanDetailsQuery({
scan_id: props.scanId,
} = useGetArtifactScanDetailsV3Query({
id: props.scanId,
queryParams: {
account_identifier: scope.accountId || ''
}
Expand All @@ -62,15 +62,15 @@ function ViolationDetailsContent(props: ViolationDetailsContentProps) {
const responseData = data?.content.data

const handleRescan = (scanId: string) => {
return evaluateArtifactScan({
return evaluateArtifactScanV3({
queryParams: { account_identifier: scope.accountId || '' },
body: { scanId }
})
.then(() => {
clear()
showSuccess(getString('versionList.messages.reEvaluateSuccess'))
})
.catch((err: V3Error) => {
.catch((err: ErrorV3) => {
clear()
showError(err?.error?.message ?? getString('versionList.messages.reEvaluateFailed'))
})
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,13 @@ import classNames from 'classnames'
import { Collapse, Container, Layout } from '@harnessio/uicore'
import type { KVO } from '@harnessio/design-system'
import type {
FixVersionDetails,
LicensePolicyFailureDetailConfig,
OssRiskLevelPolicyFailureDetailConfig,
PackageAgeViolationPolicyFailureDetailConfig,
PolicyFailureDetail,
PolicySetFailureDetail,
SecurityPolicyFailureDetailConfig
FixVersionDetailsV3,
LicensePolicyFailureDetailConfigV3,
OssRiskLevelPolicyFailureDetailConfigV3,
PackageAgeViolationPolicyFailureDetailConfigV3,
PolicyFailureDetailV3,
PolicySetFailureDetailV3,
SecurityPolicyFailureDetailConfigV3
} from '@harnessio/react-har-service-client'

import { useStrings } from '@ar/frameworks/strings'
Expand All @@ -41,16 +41,16 @@ interface ViolationFailureDetailsItemProps {
data: any
policyName: string
policyRef: string
category: PolicyFailureDetail['category']
fixVersionDetails?: FixVersionDetails
category: PolicyFailureDetailV3['category']
fixVersionDetails?: FixVersionDetailsV3
}

function SecurityPolicyFailureDetailsItem({
data,
fixVersionDetails
}: {
data: SecurityPolicyFailureDetailConfig
fixVersionDetails?: FixVersionDetails
data: SecurityPolicyFailureDetailConfigV3
fixVersionDetails?: FixVersionDetailsV3
}) {
const { vulnerabilities } = data
const { getString } = useStrings()
Expand Down Expand Up @@ -90,7 +90,7 @@ function SecurityPolicyFailureDetailsItem({
)
}

function LicensePolicyFailureDetailItem({ data }: { data: LicensePolicyFailureDetailConfig }) {
function LicensePolicyFailureDetailItem({ data }: { data: LicensePolicyFailureDetailConfigV3 }) {
const { allowedLicenses, blockedLicense } = data
const { getString } = useStrings()
return (
Expand All @@ -111,7 +111,11 @@ function LicensePolicyFailureDetailItem({ data }: { data: LicensePolicyFailureDe
)
}

function PackageAgeViolationPolicyFailureDetailItem({ data }: { data: PackageAgeViolationPolicyFailureDetailConfig }) {
function PackageAgeViolationPolicyFailureDetailItem({
data
}: {
data: PackageAgeViolationPolicyFailureDetailConfigV3
}) {
const { packageAgeThreshold, publishedOn } = data
const { getString } = useStrings()
return (
Expand All @@ -132,7 +136,7 @@ function PackageAgeViolationPolicyFailureDetailItem({ data }: { data: PackageAge
)
}

function OssRiskLevelViolationPolicyFailureDetailItem({ data }: { data: OssRiskLevelPolicyFailureDetailConfig }) {
function OssRiskLevelViolationPolicyFailureDetailItem({ data }: { data: OssRiskLevelPolicyFailureDetailConfigV3 }) {
const { ossRiskLevel } = data
const { getString } = useStrings()
return (
Expand Down Expand Up @@ -205,8 +209,8 @@ function ViolationFailureDetailsItem(props: ViolationFailureDetailsItemProps) {
}

interface ViolationFailureDetailsProps {
data: PolicySetFailureDetail
fixVersionDetails?: FixVersionDetails
data: PolicySetFailureDetailV3
fixVersionDetails?: FixVersionDetailsV3
}

function ViolationFailureDetails(props: ViolationFailureDetailsProps) {
Expand Down
Loading