diff --git a/spinifex/services/spinifexui/frontend/.oxlintrc.json b/spinifex/services/spinifexui/frontend/.oxlintrc.json index e3a31bde8..6a8a691c9 100644 --- a/spinifex/services/spinifexui/frontend/.oxlintrc.json +++ b/spinifex/services/spinifexui/frontend/.oxlintrc.json @@ -39,7 +39,6 @@ "promise/prefer-await-to-callbacks": "off", "react-perf/jsx-no-new-function-as-prop": "off", "typescript/no-confusing-void-expression": "off", - "typescript/prefer-nullish-coalescing": "off", "typescript/return-await": "off", "typescript/no-floating-promises": "off", "typescript/strict-boolean-expressions": "off", diff --git a/spinifex/services/spinifexui/frontend/src/components/detail-row.tsx b/spinifex/services/spinifexui/frontend/src/components/detail-row.tsx index 3d4c20a76..44e4e15e7 100644 --- a/spinifex/services/spinifexui/frontend/src/components/detail-row.tsx +++ b/spinifex/services/spinifexui/frontend/src/components/detail-row.tsx @@ -11,6 +11,7 @@ export function DetailRow({
{label}
+ {/* oxlint-disable-next-line typescript/prefer-nullish-coalescing */} {value || —}
diff --git a/spinifex/services/spinifexui/frontend/src/mutations/ec2.ts b/spinifex/services/spinifexui/frontend/src/mutations/ec2.ts index a34538383..bf0f1999e 100644 --- a/spinifex/services/spinifexui/frontend/src/mutations/ec2.ts +++ b/spinifex/services/spinifexui/frontend/src/mutations/ec2.ts @@ -117,6 +117,7 @@ export function useCreateInstance() { KeyName: params.keyName, MinCount: params.count, MaxCount: params.count, + // oxlint-disable-next-line typescript/prefer-nullish-coalescing SubnetId: params.subnetId || undefined, }) return getEc2Client().send(command) @@ -232,6 +233,7 @@ export function useCreateSnapshot() { mutationFn: (params: CreateSnapshotFormData) => { const command = new CreateSnapshotCommand({ VolumeId: params.volumeId, + // oxlint-disable-next-line typescript/prefer-nullish-coalescing Description: params.description || undefined, }) return getEc2Client().send(command) @@ -264,6 +266,7 @@ export function useCopySnapshot() { const command = new CopySnapshotCommand({ SourceSnapshotId: params.sourceSnapshotId, SourceRegion: params.sourceRegion, + // oxlint-disable-next-line typescript/prefer-nullish-coalescing Description: params.description || undefined, }) return getEc2Client().send(command) @@ -281,6 +284,7 @@ export function useAttachVolume() { const command = new AttachVolumeCommand({ VolumeId: params.volumeId, InstanceId: params.instanceId, + // oxlint-disable-next-line typescript/prefer-nullish-coalescing Device: params.device || undefined, }) return getEc2Client().send(command) @@ -298,6 +302,7 @@ export function useDetachVolume() { mutationFn: (params: DetachVolumeFormData) => { const command = new DetachVolumeCommand({ VolumeId: params.volumeId, + // oxlint-disable-next-line typescript/prefer-nullish-coalescing InstanceId: params.instanceId || undefined, Force: params.force, }) @@ -347,6 +352,7 @@ export function useCreateImage() { const command = new CreateImageCommand({ InstanceId: params.instanceId, Name: params.name, + // oxlint-disable-next-line typescript/prefer-nullish-coalescing Description: params.description || undefined, }) return getEc2Client().send(command) @@ -402,6 +408,7 @@ export function useCreateSubnet() { const command = new CreateSubnetCommand({ VpcId: params.vpcId, CidrBlock: params.cidrBlock, + // oxlint-disable-next-line typescript/prefer-nullish-coalescing AvailabilityZone: params.availabilityZone || undefined, }) return getEc2Client().send(command) diff --git a/spinifex/services/spinifexui/frontend/src/mutations/iam.ts b/spinifex/services/spinifexui/frontend/src/mutations/iam.ts index c0498053a..f688a6911 100644 --- a/spinifex/services/spinifexui/frontend/src/mutations/iam.ts +++ b/spinifex/services/spinifexui/frontend/src/mutations/iam.ts @@ -26,6 +26,7 @@ export function useCreateUser() { mutationFn: (params: CreateUserFormData) => { const command = new CreateUserCommand({ UserName: params.userName, + // oxlint-disable-next-line typescript/prefer-nullish-coalescing Path: params.path || undefined, }) return getIamClient().send(command) @@ -101,6 +102,7 @@ export function useCreatePolicy() { mutationFn: (params: CreatePolicyFormData) => { const command = new CreatePolicyCommand({ PolicyName: params.policyName, + // oxlint-disable-next-line typescript/prefer-nullish-coalescing Description: params.description || undefined, PolicyDocument: params.policyDocument, }) diff --git a/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/(images)/describe-images/index.tsx b/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/(images)/describe-images/index.tsx index 6940c7763..9bc625755 100644 --- a/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/(images)/describe-images/index.tsx +++ b/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/(images)/describe-images/index.tsx @@ -24,7 +24,7 @@ export const Route = createFileRoute("/_auth/ec2/(images)/describe-images/")({ function Images() { const { data } = useSuspenseQuery(ec2ImagesQueryOptions) - const images = data.Images || [] + const images = data.Images ?? [] return ( <> diff --git a/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/(instances)/describe-instances/$id.tsx b/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/(instances)/describe-instances/$id.tsx index dbb3af699..a53d08bb2 100644 --- a/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/(instances)/describe-instances/$id.tsx +++ b/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/(instances)/describe-instances/$id.tsx @@ -247,11 +247,13 @@ function InstanceDetail() { {/* Network & Security */} + {/* oxlint-disable typescript/prefer-nullish-coalescing */} {(instance.PrivateIpAddress || instance.PublicIpAddress || instance.VpcId || instance.SubnetId || (instance.SecurityGroups && instance.SecurityGroups.length > 0)) && ( + /* oxlint-enable typescript/prefer-nullish-coalescing */ Network & Security diff --git a/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/(instances)/describe-instances/index.tsx b/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/(instances)/describe-instances/index.tsx index 8a4ba5878..612ae0bb1 100644 --- a/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/(instances)/describe-instances/index.tsx +++ b/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/(instances)/describe-instances/index.tsx @@ -38,8 +38,8 @@ function Ec2() { const instances = ( data.Reservations?.flatMap( - (reservation: Reservation) => reservation.Instances || [], - ) || [] + (reservation: Reservation) => reservation.Instances ?? [], + ) ?? [] ).toSorted((a, b) => { const pa = statePriority[a.State?.Name ?? ""] ?? 6 const pb = statePriority[b.State?.Name ?? ""] ?? 6 diff --git a/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/(instances)/run-instances.tsx b/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/(instances)/run-instances.tsx index 4080a5219..f663a2e0b 100644 --- a/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/(instances)/run-instances.tsx +++ b/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/(instances)/run-instances.tsx @@ -60,7 +60,7 @@ function CreateInstance() { for (const type of instanceTypesData.InstanceTypes ?? []) { const typeName = type.InstanceType if (typeName) { - instanceTypeCounts[typeName] = (instanceTypeCounts[typeName] || 0) + 1 + instanceTypeCounts[typeName] = (instanceTypeCounts[typeName] ?? 0) + 1 } } @@ -151,7 +151,7 @@ function CreateInstance() { > {selectedImage - ? `${selectedImage.Name || "Unnamed"} (${selectedImage.Architecture})` + ? `${selectedImage.Name ?? "Unnamed"} (${selectedImage.Architecture})` : ""} @@ -161,7 +161,7 @@ function CreateInstance() { key={image.ImageId} value={image.ImageId ?? ""} > - {image.Name || "Unnamed"} ({image.Architecture}) + {image.Name ?? "Unnamed"} ({image.Architecture}) ))} diff --git a/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/(key)/describe-key-pairs/$id.tsx b/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/(key)/describe-key-pairs/$id.tsx index 4ed4c684f..08a118da1 100644 --- a/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/(key)/describe-key-pairs/$id.tsx +++ b/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/(key)/describe-key-pairs/$id.tsx @@ -106,7 +106,7 @@ function KeyPairDetail() { {keyPair.Tags.map((tag) => ( ))} diff --git a/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/(key)/describe-key-pairs/index.tsx b/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/(key)/describe-key-pairs/index.tsx index 4c2bc18d9..254b0031c 100644 --- a/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/(key)/describe-key-pairs/index.tsx +++ b/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/(key)/describe-key-pairs/index.tsx @@ -24,7 +24,7 @@ export const Route = createFileRoute("/_auth/ec2/(key)/describe-key-pairs/")({ function KeyPairs() { const { data } = useSuspenseQuery(ec2KeyPairsQueryOptions) - const keyPairs = (data.KeyPairs || []).toSorted((a, b) => { + const keyPairs = (data.KeyPairs ?? []).toSorted((a, b) => { const nameA = a.KeyName?.toLowerCase() ?? "" const nameB = b.KeyName?.toLowerCase() ?? "" return nameA.localeCompare(nameB) diff --git a/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/(snapshots)/describe-snapshots/index.tsx b/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/(snapshots)/describe-snapshots/index.tsx index 7fd022493..ed32657d6 100644 --- a/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/(snapshots)/describe-snapshots/index.tsx +++ b/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/(snapshots)/describe-snapshots/index.tsx @@ -27,7 +27,7 @@ export const Route = createFileRoute( function Snapshots() { const { data } = useSuspenseQuery(ec2SnapshotsQueryOptions) - const snapshots = data.Snapshots || [] + const snapshots = data.Snapshots ?? [] return ( <> diff --git a/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/(subnet)/create-subnet.tsx b/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/(subnet)/create-subnet.tsx index 946715274..21c8bfb9d 100644 --- a/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/(subnet)/create-subnet.tsx +++ b/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/(subnet)/create-subnet.tsx @@ -152,7 +152,7 @@ function CreateSubnet() { onValueChange={(value) => field.onChange(value === "none" ? "" : value) } - value={field.value || "none"} + value={field.value ?? "none"} > diff --git a/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/(subnet)/describe-subnets/index.tsx b/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/(subnet)/describe-subnets/index.tsx index 8872cce7b..fc77b50f6 100644 --- a/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/(subnet)/describe-subnets/index.tsx +++ b/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/(subnet)/describe-subnets/index.tsx @@ -26,7 +26,7 @@ export const Route = createFileRoute("/_auth/ec2/(subnet)/describe-subnets/")({ function Subnets() { const { data } = useSuspenseQuery(ec2SubnetsQueryOptions) - const subnets = data.Subnets || [] + const subnets = data.Subnets ?? [] return ( <> diff --git a/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/(volumes)/describe-volumes/$id.tsx b/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/(volumes)/describe-volumes/$id.tsx index 58d964025..181a2f831 100644 --- a/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/(volumes)/describe-volumes/$id.tsx +++ b/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/(volumes)/describe-volumes/$id.tsx @@ -113,7 +113,7 @@ function VolumeDetail() { try { await detachMutation.mutateAsync({ volumeId: id, - instanceId: instanceId || undefined, + instanceId: instanceId ?? undefined, force: detachForce || undefined, }) closeDialog() diff --git a/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/(volumes)/describe-volumes/index.tsx b/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/(volumes)/describe-volumes/index.tsx index 7ef7a6d10..a0b5d9028 100644 --- a/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/(volumes)/describe-volumes/index.tsx +++ b/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/(volumes)/describe-volumes/index.tsx @@ -25,7 +25,7 @@ export const Route = createFileRoute("/_auth/ec2/(volumes)/describe-volumes/")({ function Volumes() { const { data } = useSuspenseQuery(ec2VolumesQueryOptions) - const volumes = data.Volumes || [] + const volumes = data.Volumes ?? [] return ( <> diff --git a/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/(vpc)/describe-vpcs/index.tsx b/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/(vpc)/describe-vpcs/index.tsx index 4d4dc38a8..8222daf52 100644 --- a/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/(vpc)/describe-vpcs/index.tsx +++ b/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/(vpc)/describe-vpcs/index.tsx @@ -26,7 +26,7 @@ export const Route = createFileRoute("/_auth/ec2/(vpc)/describe-vpcs/")({ function Vpcs() { const { data } = useSuspenseQuery(ec2VpcsQueryOptions) - const vpcs = data.Vpcs || [] + const vpcs = data.Vpcs ?? [] return ( <> diff --git a/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/-components/ami-details.tsx b/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/-components/ami-details.tsx index f1d035101..a11aa1b8f 100644 --- a/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/-components/ami-details.tsx +++ b/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/-components/ami-details.tsx @@ -47,7 +47,7 @@ export function AmiDetails({ label="Virtualization Type" value={image.VirtualizationType} /> - + diff --git a/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/-components/instance-actions.tsx b/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/-components/instance-actions.tsx index 185a28675..255758082 100644 --- a/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/-components/instance-actions.tsx +++ b/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/-components/instance-actions.tsx @@ -27,7 +27,7 @@ export function InstanceActions({ instanceId, state }: InstanceActionsProps) { const rebootMutation = useRebootInstance() const terminateMutation = useTerminateInstance() - const isTransitioning = TRANSITIONING_STATES.has(state || "") + const isTransitioning = TRANSITIONING_STATES.has(state ?? "") if (isTransitioning && state !== "terminated") { return ( diff --git a/spinifex/services/spinifexui/frontend/src/routes/_auth/iam/(policies)/list-policies/$policyArn.tsx b/spinifex/services/spinifexui/frontend/src/routes/_auth/iam/(policies)/list-policies/$policyArn.tsx index 52903e9f0..523bf5509 100644 --- a/spinifex/services/spinifexui/frontend/src/routes/_auth/iam/(policies)/list-policies/$policyArn.tsx +++ b/spinifex/services/spinifexui/frontend/src/routes/_auth/iam/(policies)/list-policies/$policyArn.tsx @@ -117,7 +117,7 @@ function PolicyDetail() { - + { + const policies = (data.Policies ?? []).toSorted((a, b) => { const nameA = a.PolicyName?.toLowerCase() ?? "" const nameB = b.PolicyName?.toLowerCase() ?? "" return nameA.localeCompare(nameB) diff --git a/spinifex/services/spinifexui/frontend/src/routes/_auth/iam/(users)/list-users/$userName.tsx b/spinifex/services/spinifexui/frontend/src/routes/_auth/iam/(users)/list-users/$userName.tsx index 3fc5c1b69..8182bd8d0 100644 --- a/spinifex/services/spinifexui/frontend/src/routes/_auth/iam/(users)/list-users/$userName.tsx +++ b/spinifex/services/spinifexui/frontend/src/routes/_auth/iam/(users)/list-users/$userName.tsx @@ -84,9 +84,9 @@ function UserDetail() { ) const user = userData.User - const accessKeys = accessKeysData.AccessKeyMetadata || [] - const attachedPolicies = attachedPoliciesData.AttachedPolicies || [] - const allPolicies = allPoliciesData.Policies || [] + const accessKeys = accessKeysData.AccessKeyMetadata ?? [] + const attachedPolicies = attachedPoliciesData.AttachedPolicies ?? [] + const allPolicies = allPoliciesData.Policies ?? [] const attachedArns = new Set(attachedPolicies.map((p) => p.PolicyArn)) const availablePolicies = allPolicies.filter( diff --git a/spinifex/services/spinifexui/frontend/src/routes/_auth/iam/(users)/list-users/index.tsx b/spinifex/services/spinifexui/frontend/src/routes/_auth/iam/(users)/list-users/index.tsx index f6d7eaba5..b7d83a78f 100644 --- a/spinifex/services/spinifexui/frontend/src/routes/_auth/iam/(users)/list-users/index.tsx +++ b/spinifex/services/spinifexui/frontend/src/routes/_auth/iam/(users)/list-users/index.tsx @@ -21,7 +21,7 @@ export const Route = createFileRoute("/_auth/iam/(users)/list-users/")({ function Users() { const { data } = useSuspenseQuery(iamUsersQueryOptions) - const users = (data.Users || []).toSorted((a, b) => { + const users = (data.Users ?? []).toSorted((a, b) => { const nameA = a.UserName?.toLowerCase() ?? "" const nameB = b.UserName?.toLowerCase() ?? "" return nameA.localeCompare(nameB) diff --git a/spinifex/services/spinifexui/frontend/src/routes/_auth/s3/-components/object-list-item.tsx b/spinifex/services/spinifexui/frontend/src/routes/_auth/s3/-components/object-list-item.tsx index abe6ceb1b..d04c82fab 100644 --- a/spinifex/services/spinifexui/frontend/src/routes/_auth/s3/-components/object-list-item.tsx +++ b/spinifex/services/spinifexui/frontend/src/routes/_auth/s3/-components/object-list-item.tsx @@ -85,7 +85,7 @@ export function ObjectListItem({
- {formatSize(object.Size || 0)} + {formatSize(object.Size ?? 0)}