From 0fc46487763358e58ec842fc4d5c4b538f33bcc3 Mon Sep 17 00:00:00 2001 From: Dan Adajian Date: Sat, 15 Jul 2023 11:14:15 -0500 Subject: [PATCH] fix(repo): set noUncheckedIndexAccess to true (#252) Co-authored-by: danadajian --- app/backend/src/fetchCurrentPage.ts | 2 +- app/backend/src/getGroupedKeys.ts | 15 +++++++++------ app/backend/src/updateBaseImagesInS3.ts | 2 +- app/frontend/components/image-views.tsx | 4 ++-- app/frontend/components/main-page.tsx | 6 +++++- tsconfig.json | 3 ++- 6 files changed, 20 insertions(+), 12 deletions(-) diff --git a/app/backend/src/fetchCurrentPage.ts b/app/backend/src/fetchCurrentPage.ts index 38ad82e6..8347115b 100644 --- a/app/backend/src/fetchCurrentPage.ts +++ b/app/backend/src/fetchCurrentPage.ts @@ -11,7 +11,7 @@ export const fetchCurrentPage = async ({ }: FetchCurrentPageInput) => { const paginatedKeys = await getGroupedKeys(hash, bucket); const currentPage = paginatedKeys[page - 1]; - if (!currentPage) { + if (!currentPage?.keys) { throw new TRPCError({ code: 'NOT_FOUND', message: `Page ${page} does not exist. Only ${paginatedKeys.length} pages were found.`, diff --git a/app/backend/src/getGroupedKeys.ts b/app/backend/src/getGroupedKeys.ts index a7f96fcd..bf2ec490 100644 --- a/app/backend/src/getGroupedKeys.ts +++ b/app/backend/src/getGroupedKeys.ts @@ -17,14 +17,17 @@ export const getGroupedKeys = async (hash: string, bucket: string) => { const imageObjects = keys.map(parse); const groupedImages = groupBy(imageObjects, 'dir'); const groupedKeys = Object.keys(groupedImages) - .filter( - key => - groupedImages[key].length > 1 || - groupedImages[key].find(item => item.name === NEW_IMAGE_NAME) - ) + .filter(key => { + const groupedImage = groupedImages[key]; + return ( + groupedImage && + (groupedImage.length > 1 || + groupedImage.find(item => item.name === NEW_IMAGE_NAME)) + ); + }) .map(key => ({ title: getPathFromKey(key), - keys: groupedImages[key].map(({ base, dir }) => join(dir, base)), + keys: groupedImages[key]?.map(({ base, dir }) => join(dir, base)), })); if (!groupedKeys.length) { diff --git a/app/backend/src/updateBaseImagesInS3.ts b/app/backend/src/updateBaseImagesInS3.ts index 14bd447c..fd3b3abc 100644 --- a/app/backend/src/updateBaseImagesInS3.ts +++ b/app/backend/src/updateBaseImagesInS3.ts @@ -34,7 +34,7 @@ export const filterNewImages = (s3Paths: string[]) => { export const getBaseImagePaths = (newImagePaths: string[]) => { return newImagePaths.map(path => { - const commitHash = path.split('/')[0]; + const commitHash = path.split('/')[0] ?? ''; return path .replace(commitHash, BASE_IMAGES_DIRECTORY) .replace(NEW_IMAGE_NAME, BASE_IMAGE_NAME); diff --git a/app/frontend/components/image-views.tsx b/app/frontend/components/image-views.tsx index 873752b7..ec46a1bb 100644 --- a/app/frontend/components/image-views.tsx +++ b/app/frontend/components/image-views.tsx @@ -43,8 +43,8 @@ export const SingleImageView: React.FC = ({ })} {images[selectedImageIndex].name} ); diff --git a/app/frontend/components/main-page.tsx b/app/frontend/components/main-page.tsx index a04e998c..d60652fa 100644 --- a/app/frontend/components/main-page.tsx +++ b/app/frontend/components/main-page.tsx @@ -139,7 +139,11 @@ const getViewType = async ( if (images.length === 1) { return undefined; } - const firstImage = images[0].base64; + const firstImage = images[0]?.base64; + if (!firstImage) { + return undefined; + } + const shouldViewSideBySide = await imageIsSmallEnoughForSideBySide( firstImage ); diff --git a/tsconfig.json b/tsconfig.json index 53de021f..6600d9c9 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -14,6 +14,7 @@ "isolatedModules": true, "jsx": "react-jsx", "strict": true, - "noEmit": true + "noEmit": true, + "noUncheckedIndexedAccess": true } }