From 070398cc4d3cd018e53e060a87f3f7ee66970e3c Mon Sep 17 00:00:00 2001 From: hschinmaybharadwaj Date: Sat, 13 Jun 2026 17:23:59 +0530 Subject: [PATCH] Sync api-security-scanner updates --- .../api-security-scanner/.env.example | 6 +- .../api-security-scanner/README.md | 14 +- .../conf/docker/dev/fastapi.docker | 10 +- .../conf/docker/dev/vite.docker | 9 +- .../conf/docker/prod/fastapi.docker | 10 +- .../conf/docker/prod/vite.docker | 13 +- .../conf/nginx/prod.nginx | 4 +- .../frontend/package.json | 21 +- .../frontend/pnpm-lock.yaml | 249 +++++++++++------- .../frontend/src/config/constants.ts | 2 +- 10 files changed, 184 insertions(+), 154 deletions(-) diff --git a/PROJECTS/intermediate/api-security-scanner/.env.example b/PROJECTS/intermediate/api-security-scanner/.env.example index 9d201af9..72033832 100644 --- a/PROJECTS/intermediate/api-security-scanner/.env.example +++ b/PROJECTS/intermediate/api-security-scanner/.env.example @@ -32,9 +32,9 @@ BACKEND_PORT=8000 CORS_ORIGINS=http://localhost:5173,http://localhost:3000,http://localhost,http://localhost:8000 # Frontend API URL -# When using Docker with nginx: http://localhost/api -# When running Vite directly (npm run dev): http://localhost:8000 -VITE_API_URL=http://localhost/api +# When using Docker with nginx: http://localhost/api/ +# When running Vite directly (npm run dev): http://localhost:8000/ +VITE_API_URL=http://localhost/api/ # --------------------------------------------- # Docker Host Port Mappings diff --git a/PROJECTS/intermediate/api-security-scanner/README.md b/PROJECTS/intermediate/api-security-scanner/README.md index 5570b7ac..d7851be3 100644 --- a/PROJECTS/intermediate/api-security-scanner/README.md +++ b/PROJECTS/intermediate/api-security-scanner/README.md @@ -16,19 +16,7 @@ > Full-stack API vulnerability scanner targeting the OWASP API Security Top 10 with configurable scan modules and a React dashboard. -

- - Watch on YouTube - -

- -

- - Video Thumbnail - -

- -*Learn docs here: [learn modules](#learn).* +*This is a quick overview — security theory, architecture, and full walkthroughs are in the [learn modules](#learn).* ## What It Does diff --git a/PROJECTS/intermediate/api-security-scanner/conf/docker/dev/fastapi.docker b/PROJECTS/intermediate/api-security-scanner/conf/docker/dev/fastapi.docker index aaa18c3c..4daf32d8 100644 --- a/PROJECTS/intermediate/api-security-scanner/conf/docker/dev/fastapi.docker +++ b/PROJECTS/intermediate/api-security-scanner/conf/docker/dev/fastapi.docker @@ -1,7 +1,7 @@ # ⒸAngelaMos | 2025 # Development FastAPI Dockerfile -FROM python:3.11-slim +FROM python:3.13-slim # Set environment variables ENV PYTHONUNBUFFERED=1 \ @@ -18,11 +18,11 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ postgresql-client \ && rm -rf /var/lib/apt/lists/* -# Copy only requirements first (for layer caching) -COPY backend/requirements.txt . +# Copy pyproject.toml for dependency installation +COPY backend/pyproject.toml . -# Install Python dependencies -RUN pip install --no-cache-dir -r requirements.txt +# Install Python dependencies from pyproject.toml +RUN pip install --no-cache-dir . # Copy application code COPY backend/ . diff --git a/PROJECTS/intermediate/api-security-scanner/conf/docker/dev/vite.docker b/PROJECTS/intermediate/api-security-scanner/conf/docker/dev/vite.docker index a8bcfb80..98fdfbbc 100644 --- a/PROJECTS/intermediate/api-security-scanner/conf/docker/dev/vite.docker +++ b/PROJECTS/intermediate/api-security-scanner/conf/docker/dev/vite.docker @@ -8,11 +8,14 @@ FROM node:20-alpine # Set working directory WORKDIR /app +# Install pnpm +RUN npm install -g pnpm + # Copy package files first (for layer caching) -COPY frontend/package*.json ./ +COPY frontend/package.json frontend/pnpm-lock.yaml ./ # Install dependencies -RUN npm ci +RUN pnpm install --frozen-lockfile # Copy application code (in dev this is overridden by volume mount) COPY frontend/ . @@ -21,4 +24,4 @@ COPY frontend/ . EXPOSE 5173 # Run Vite dev server with --host to allow external connections -CMD ["npm", "run", "dev", "--", "--host", "0.0.0.0"] +CMD ["pnpm", "dev", "--", "--host", "0.0.0.0"] diff --git a/PROJECTS/intermediate/api-security-scanner/conf/docker/prod/fastapi.docker b/PROJECTS/intermediate/api-security-scanner/conf/docker/prod/fastapi.docker index 3e02fa1c..e14e12d9 100644 --- a/PROJECTS/intermediate/api-security-scanner/conf/docker/prod/fastapi.docker +++ b/PROJECTS/intermediate/api-security-scanner/conf/docker/prod/fastapi.docker @@ -3,7 +3,7 @@ # Optimized for performance with gunicorn multi-worker setup # No hot reload, built image (no volume mounts) -FROM python:3.11-slim +FROM python:3.13-slim # Set environment variables ENV PYTHONUNBUFFERED=1 \ @@ -20,11 +20,11 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ postgresql-client \ && rm -rf /var/lib/apt/lists/* -# Copy only requirements first (for layer caching) -COPY backend/requirements.txt . +# Copy pyproject.toml for dependency installation +COPY backend/pyproject.toml . -# Install Python dependencies -RUN pip install --no-cache-dir -r requirements.txt +# Install Python dependencies from pyproject.toml +RUN pip install --no-cache-dir . # Install gunicorn for production RUN pip install --no-cache-dir gunicorn diff --git a/PROJECTS/intermediate/api-security-scanner/conf/docker/prod/vite.docker b/PROJECTS/intermediate/api-security-scanner/conf/docker/prod/vite.docker index 03aa3044..8ad8b2fe 100644 --- a/PROJECTS/intermediate/api-security-scanner/conf/docker/prod/vite.docker +++ b/PROJECTS/intermediate/api-security-scanner/conf/docker/prod/vite.docker @@ -9,17 +9,20 @@ FROM node:20-alpine AS builder WORKDIR /app -# Copy package files -COPY frontend/package*.json ./ +# Install pnpm +RUN npm install -g pnpm -# Install dependencies -RUN npm ci --only=production +# Copy package files +COPY frontend/package.json frontend/pnpm-lock.yaml ./ + +# Install dependencies (including dev deps for build) +RUN pnpm install --frozen-lockfile # Copy source code COPY frontend/ . # Build the app (creates dist/ folder with static files) -RUN npm run build +RUN pnpm run build diff --git a/PROJECTS/intermediate/api-security-scanner/conf/nginx/prod.nginx b/PROJECTS/intermediate/api-security-scanner/conf/nginx/prod.nginx index c926384f..c9de0e21 100644 --- a/PROJECTS/intermediate/api-security-scanner/conf/nginx/prod.nginx +++ b/PROJECTS/intermediate/api-security-scanner/conf/nginx/prod.nginx @@ -67,8 +67,8 @@ http { add_header Referrer-Policy "no-referrer-when-downgrade" always; # Backend API routes - location /api { - proxy_pass http://backend; + location /api/ { + proxy_pass http://backend/; # Apply common proxy settings proxy_http_version 1.1; diff --git a/PROJECTS/intermediate/api-security-scanner/frontend/package.json b/PROJECTS/intermediate/api-security-scanner/frontend/package.json index ec1da29d..c30a88f8 100644 --- a/PROJECTS/intermediate/api-security-scanner/frontend/package.json +++ b/PROJECTS/intermediate/api-security-scanner/frontend/package.json @@ -27,7 +27,7 @@ "@radix-ui/react-tooltip": "^1.2.8", "@tanstack/react-query": "^5.90.21", "@tanstack/react-query-devtools": "^5.91.3", - "axios": "^1.16.0", + "axios": "^1.15.2", "clsx": "^2.1.1", "date-fns": "^4.1.0", "immer": "^11.1.4", @@ -46,6 +46,7 @@ "devDependencies": { "@biomejs/biome": "^2.4.2", "@eslint/js": "^9.39.2", + "@types/node": "^20.0.0", "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^5.1.4", @@ -65,23 +66,5 @@ "typescript-eslint": "^8.56.0", "vite": "^7.3.2", "vite-tsconfig-paths": "^6.1.1" - }, - "pnpm": { - "overrides": { - "ajv@<6.14.0": ">=6.14.0", - "brace-expansion@<1.1.13": ">=1.1.13", - "brace-expansion@>=2.0.0 <2.0.3": ">=2.0.3", - "fast-uri@<=3.1.0": ">=3.1.1", - "fast-uri@<=3.1.1": ">=3.1.2", - "flatted@<3.4.0": ">=3.4.0", - "flatted@<=3.4.1": ">=3.4.2", - "minimatch@<3.1.3": ">=3.1.3", - "minimatch@<3.1.4": ">=3.1.4", - "minimatch@>=9.0.0 <9.0.6": ">=9.0.6", - "minimatch@>=9.0.0 <9.0.7": ">=9.0.7", - "postcss@<8.5.10": ">=8.5.10", - "socket.io-parser@>=4.0.0 <4.2.6": ">=4.2.6", - "ws@>=8.0.0 <8.20.1": ">=8.20.1" - } } } diff --git a/PROJECTS/intermediate/api-security-scanner/frontend/pnpm-lock.yaml b/PROJECTS/intermediate/api-security-scanner/frontend/pnpm-lock.yaml index 84ac2a8e..79429038 100644 --- a/PROJECTS/intermediate/api-security-scanner/frontend/pnpm-lock.yaml +++ b/PROJECTS/intermediate/api-security-scanner/frontend/pnpm-lock.yaml @@ -4,22 +4,6 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false -overrides: - ajv@<6.14.0: '>=6.14.0' - brace-expansion@<1.1.13: '>=1.1.13' - brace-expansion@>=2.0.0 <2.0.3: '>=2.0.3' - fast-uri@<=3.1.0: '>=3.1.1' - fast-uri@<=3.1.1: '>=3.1.2' - flatted@<3.4.0: '>=3.4.0' - flatted@<=3.4.1: '>=3.4.2' - minimatch@<3.1.3: '>=3.1.3' - minimatch@<3.1.4: '>=3.1.4' - minimatch@>=9.0.0 <9.0.6: '>=9.0.6' - minimatch@>=9.0.0 <9.0.7: '>=9.0.7' - postcss@<8.5.10: '>=8.5.10' - socket.io-parser@>=4.0.0 <4.2.6: '>=4.2.6' - ws@>=8.0.0 <8.20.1: '>=8.20.1' - importers: .: @@ -52,8 +36,8 @@ importers: specifier: ^5.91.3 version: 5.91.3(@tanstack/react-query@5.90.21(react@19.2.4))(react@19.2.4) axios: - specifier: ^1.16.0 - version: 1.16.0 + specifier: ^1.15.2 + version: 1.15.2 clsx: specifier: ^2.1.1 version: 2.1.1 @@ -103,6 +87,9 @@ importers: '@eslint/js': specifier: ^9.39.2 version: 9.39.2 + '@types/node': + specifier: ^20.0.0 + version: 20.19.41 '@types/react': specifier: ^19.2.14 version: 19.2.14 @@ -111,7 +98,7 @@ importers: version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': specifier: ^5.1.4 - version: 5.1.4(vite@7.3.2) + version: 5.1.4(vite@7.3.2(@types/node@20.19.41)) eslint: specifier: ^9.39.2 version: 9.39.2 @@ -147,7 +134,7 @@ importers: version: 1.0.0(stylelint@17.3.0(typescript@5.9.3)) stylelint-config-standard-scss: specifier: ^17.0.0 - version: 17.0.0(postcss@8.5.14)(stylelint@17.3.0(typescript@5.9.3)) + version: 17.0.0(postcss@8.5.9)(stylelint@17.3.0(typescript@5.9.3)) typescript: specifier: ~5.9.3 version: 5.9.3 @@ -156,10 +143,10 @@ importers: version: 8.56.0(eslint@9.39.2)(typescript@5.9.3) vite: specifier: ^7.3.2 - version: 7.3.2 + version: 7.3.2(@types/node@20.19.41) vite-tsconfig-paths: specifier: ^6.1.1 - version: 6.1.1(typescript@5.9.3)(vite@7.3.2) + version: 6.1.1(typescript@5.9.3)(vite@7.3.2(@types/node@20.19.41)) packages: @@ -1201,6 +1188,9 @@ packages: '@types/ms@2.1.0': resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} + '@types/node@20.19.41': + resolution: {integrity: sha512-ECymXOukMnOoVkC2bb1Vc/w/836DXncOg5m8Xj1RH7xSHZJWNYY6Zh7EH477vcnD5egKNNfy2RpNOmuChhFPgQ==} + '@types/react-dom@19.2.3': resolution: {integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==} peerDependencies: @@ -1297,6 +1287,9 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + ajv@8.18.0: resolution: {integrity: sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==} @@ -1373,8 +1366,8 @@ packages: resolution: {integrity: sha512-BASOg+YwO2C+346x3LZOeoovTIoTrRqEsqMa6fmfAV0P+U9mFr9NsyOEpiYvFjbc64NMrSswhV50WdXzdb/Z5A==} engines: {node: '>=4'} - axios@1.16.0: - resolution: {integrity: sha512-6hp5CwvTPlN2A31g5dxnwAX0orzM7pmCRDLnZSX772mv8WDqICwFjowHuPs04Mc8deIld1+ejhtaMn5vp6b+1w==} + axios@1.15.2: + resolution: {integrity: sha512-wLrXxPtcrPTsNlJmKjkPnNPK2Ihe0hn0wGSaTEiHRPxwjvJwT3hKmXF4dpqxmPO9SoNb2FsYXj/xEo0gHN+D5A==} axobject-query@4.1.0: resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} @@ -1383,21 +1376,22 @@ packages: bail@2.0.2: resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + balanced-match@3.0.1: resolution: {integrity: sha512-vjtV3hiLqYDNRoiAv0zC4QaGAMPomEoq83PRmYIofPswwZurCeWR5LByXm7SyoL0Zh5+2z0+HC7jG8gSZJUh0w==} engines: {node: '>= 16'} - balanced-match@4.0.4: - resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} - engines: {node: 18 || 20 || >=22} - baseline-browser-mapping@2.9.19: resolution: {integrity: sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==} hasBin: true - brace-expansion@5.0.6: - resolution: {integrity: sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==} - engines: {node: 18 || 20 || >=22} + brace-expansion@1.1.12: + resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} + + brace-expansion@2.0.2: + resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} @@ -1470,6 +1464,9 @@ packages: comma-separated-tokens@2.0.3: resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} @@ -1778,11 +1775,14 @@ packages: resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} engines: {node: '>=8.6.0'} + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - fast-uri@3.1.2: - resolution: {integrity: sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==} + fast-uri@3.1.0: + resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} fastest-levenshtein@1.0.16: resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} @@ -1822,8 +1822,8 @@ packages: flat-cache@6.1.20: resolution: {integrity: sha512-AhHYqwvN62NVLp4lObVXGVluiABTHapoB57EyegZVmazN+hhGhLTn3uZbOofoTw4DSDvVCadzzyChXhOAvy8uQ==} - flatted@3.4.2: - resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==} + flatted@3.3.3: + resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} follow-redirects@1.16.0: resolution: {integrity: sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==} @@ -1962,8 +1962,8 @@ packages: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} - hasown@2.0.4: - resolution: {integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==} + hasown@2.0.3: + resolution: {integrity: sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==} engines: {node: '>= 0.4'} hast-util-to-jsx-runtime@2.3.6: @@ -2191,6 +2191,9 @@ packages: json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + json-schema-traverse@1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} @@ -2373,9 +2376,8 @@ packages: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} - minimatch@10.2.5: - resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} - engines: {node: 18 || 20 || >=22} + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} minimatch@9.0.5: resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} @@ -2494,13 +2496,13 @@ packages: resolution: {integrity: sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==} engines: {node: '>=18.0'} peerDependencies: - postcss: '>=8.5.10' + postcss: ^8.4.31 postcss-scss@4.0.9: resolution: {integrity: sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==} engines: {node: '>=12.0'} peerDependencies: - postcss: '>=8.5.10' + postcss: ^8.4.29 postcss-selector-parser@7.1.1: resolution: {integrity: sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==} @@ -2509,8 +2511,12 @@ packages: postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - postcss@8.5.14: - resolution: {integrity: sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==} + postcss@8.5.6: + resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} + engines: {node: ^10 || ^12 || >=14} + + postcss@8.5.9: + resolution: {integrity: sha512-7a70Nsot+EMX9fFU3064K/kdHWZqGVY+BADLyXc8Dfv+mTLLVl6JzJpPaCZ2kQL9gIJvKXSLMHhqdRRjwQeFtw==} engines: {node: ^10 || ^12 || >=14} prelude-ls@1.2.1: @@ -2532,6 +2538,10 @@ packages: resolution: {integrity: sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==} engines: {node: '>=10'} + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + qified@0.6.0: resolution: {integrity: sha512-tsSGN1x3h569ZSU1u6diwhltLyfUWDp3YbFHedapTmpBl0B3P6U3+Qptg7xu+v+1io1EwhdPyyRHYbEw0KN2FA==} engines: {node: '>=20'} @@ -2768,8 +2778,8 @@ packages: resolution: {integrity: sha512-uP0bpjWrjQmUt5DTHq9RuoCBdFJF10cdX9X+a368j/Ft0wmaVgxlrjvK3kjvgCODOMMOz9lcaRzxmso0bTWZ/g==} engines: {node: '>=10.0.0'} - socket.io-parser@4.2.6: - resolution: {integrity: sha512-asJqbVBDsBCJx0pTqw3WfesSY0iRX+2xzWEWzrpcH7L6fLzrhyF8WPI8UaeM4YCuDfpwA/cgsdugMsmtz8EJeg==} + socket.io-parser@4.2.5: + resolution: {integrity: sha512-bPMmpy/5WWKHea5Y/jYAP6k74A+hvmRCQaJuJB6I/ML5JZq/KfNieUVo/3Mh7SAqn7TyFdIo6wqYHInG1MU1bQ==} engines: {node: '>=10.0.0'} sonner@2.0.7: @@ -2852,7 +2862,7 @@ packages: resolution: {integrity: sha512-VkVD9r7jfUT/dq3mA3/I1WXXk2U71rO5wvU2yIil9PW5o1g3UM7Xc82vHmuVJHV7Y8ok5K137fmW5u3HbhtTOA==} engines: {node: '>=20'} peerDependencies: - postcss: '>=8.5.10' + postcss: ^8.3.3 stylelint: ^17.0.0 peerDependenciesMeta: postcss: @@ -2868,7 +2878,7 @@ packages: resolution: {integrity: sha512-uLJS6xgOCBw5EMsDW7Ukji8l28qRoMnkRch15s0qwZpskXvWt9oPzMmcYM307m9GN4MxuWLsQh4I6hU9yI53cQ==} engines: {node: '>=20'} peerDependencies: - postcss: '>=8.5.10' + postcss: ^8.3.3 stylelint: ^17.0.0 peerDependenciesMeta: postcss: @@ -2986,6 +2996,9 @@ packages: resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} engines: {node: '>= 0.4'} + undici-types@6.21.0: + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + unicorn-magic@0.4.0: resolution: {integrity: sha512-wH590V9VNgYH9g3lH9wWjTrUoKsjLF6sGLjhR4sH1LWpLmCOH0Zf7PukhDA8BiS7KHe4oPNkcTHqYkj7SOGUOw==} engines: {node: '>=20'} @@ -3014,6 +3027,9 @@ packages: peerDependencies: browserslist: '>= 4.21.0' + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + use-callback-ref@1.3.3: resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==} engines: {node: '>=10'} @@ -3129,8 +3145,8 @@ packages: resolution: {integrity: sha512-YnlPC6JqnZl6aO4uRc+dx5PHguiR9S6WeoLtpxNT9wIG+BDya7ZNE1q7KOjVgaA73hKhKLpVPgJ5QA9THQ5BRg==} engines: {node: ^20.17.0 || >=22.9.0} - ws@8.20.1: - resolution: {integrity: sha512-It4dO0K5v//JtTXuPkfEOaI3uUN87iYPnqo/ZzqCoG3g8uhA66QUMs/SrM0YK7/NAu+r4LMh/9dq2A7k+rHs+w==} + ws@8.18.3: + resolution: {integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -3458,7 +3474,7 @@ snapshots: dependencies: '@eslint/object-schema': 2.1.7 debug: 4.4.3 - minimatch: 9.0.5 + minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -3472,14 +3488,14 @@ snapshots: '@eslint/eslintrc@3.3.3': dependencies: - ajv: 8.18.0 + ajv: 6.12.6 debug: 4.4.3 espree: 10.4.0 globals: 14.0.0 ignore: 5.3.2 import-fresh: 3.3.1 js-yaml: 4.1.1 - minimatch: 9.0.5 + minimatch: 3.1.2 strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color @@ -4087,6 +4103,10 @@ snapshots: '@types/ms@2.1.0': {} + '@types/node@20.19.41': + dependencies: + undici-types: 6.21.0 + '@types/react-dom@19.2.3(@types/react@19.2.14)': dependencies: '@types/react': 19.2.14 @@ -4168,7 +4188,7 @@ snapshots: '@typescript-eslint/types': 8.56.0 '@typescript-eslint/visitor-keys': 8.56.0 debug: 4.4.3 - minimatch: 10.2.5 + minimatch: 9.0.5 semver: 7.7.4 tinyglobby: 0.2.16 ts-api-utils: 2.4.0(typescript@5.9.3) @@ -4194,7 +4214,7 @@ snapshots: '@ungap/structured-clone@1.3.0': {} - '@vitejs/plugin-react@5.1.4(vite@7.3.2)': + '@vitejs/plugin-react@5.1.4(vite@7.3.2(@types/node@20.19.41))': dependencies: '@babel/core': 7.29.0 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.29.0) @@ -4202,7 +4222,7 @@ snapshots: '@rolldown/pluginutils': 1.0.0-rc.3 '@types/babel__core': 7.20.5 react-refresh: 0.18.0 - vite: 7.3.2 + vite: 7.3.2(@types/node@20.19.41) transitivePeerDependencies: - supports-color @@ -4212,10 +4232,17 @@ snapshots: acorn@8.15.0: {} + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + ajv@8.18.0: dependencies: fast-deep-equal: 3.1.3 - fast-uri: 3.1.2 + fast-uri: 3.1.0 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 @@ -4306,7 +4333,7 @@ snapshots: axe-core@4.11.1: {} - axios@1.16.0: + axios@1.15.2: dependencies: follow-redirects: 1.16.0 form-data: 4.0.5 @@ -4318,15 +4345,20 @@ snapshots: bail@2.0.2: {} - balanced-match@3.0.1: {} + balanced-match@1.0.2: {} - balanced-match@4.0.4: {} + balanced-match@3.0.1: {} baseline-browser-mapping@2.9.19: {} - brace-expansion@5.0.6: + brace-expansion@1.1.12: dependencies: - balanced-match: 4.0.4 + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.2: + dependencies: + balanced-match: 1.0.2 braces@3.0.3: dependencies: @@ -4400,6 +4432,8 @@ snapshots: comma-separated-tokens@2.0.3: {} + concat-map@0.0.1: {} + convert-source-map@2.0.0: {} cookie@1.1.1: {} @@ -4545,7 +4579,7 @@ snapshots: '@socket.io/component-emitter': 3.1.2 debug: 4.4.3 engine.io-parser: 5.2.3 - ws: 8.20.1 + ws: 8.18.3 xmlhttprequest-ssl: 2.1.2 transitivePeerDependencies: - bufferutil @@ -4649,7 +4683,7 @@ snapshots: es-errors: 1.3.0 get-intrinsic: 1.3.0 has-tostringtag: 1.0.2 - hasown: 2.0.4 + hasown: 2.0.3 es-shim-unscopables@1.1.0: dependencies: @@ -4714,7 +4748,7 @@ snapshots: hasown: 2.0.2 jsx-ast-utils: 3.3.5 language-tags: 1.0.9 - minimatch: 9.0.5 + minimatch: 3.1.2 object.fromentries: 2.0.8 safe-regex-test: 1.1.0 string.prototype.includes: 2.0.1 @@ -4746,7 +4780,7 @@ snapshots: estraverse: 5.3.0 hasown: 2.0.2 jsx-ast-utils: 3.3.5 - minimatch: 9.0.5 + minimatch: 3.1.2 object.entries: 1.1.9 object.fromentries: 2.0.8 object.values: 1.2.1 @@ -4781,7 +4815,7 @@ snapshots: '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.3 '@types/estree': 1.0.8 - ajv: 8.18.0 + ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.6 debug: 4.4.3 @@ -4800,7 +4834,7 @@ snapshots: is-glob: 4.0.3 json-stable-stringify-without-jsonify: 1.0.1 lodash.merge: 4.6.2 - minimatch: 9.0.5 + minimatch: 3.1.2 natural-compare: 1.4.0 optionator: 0.9.4 transitivePeerDependencies: @@ -4840,9 +4874,11 @@ snapshots: merge2: 1.4.1 micromatch: 4.0.8 + fast-json-stable-stringify@2.1.0: {} + fast-levenshtein@2.0.6: {} - fast-uri@3.1.2: {} + fast-uri@3.1.0: {} fastest-levenshtein@1.0.16: {} @@ -4873,16 +4909,16 @@ snapshots: flat-cache@4.0.1: dependencies: - flatted: 3.4.2 + flatted: 3.3.3 keyv: 4.5.4 flat-cache@6.1.20: dependencies: cacheable: 2.3.2 - flatted: 3.4.2 + flatted: 3.3.3 hookified: 1.15.1 - flatted@3.4.2: {} + flatted@3.3.3: {} follow-redirects@1.16.0: {} @@ -4895,7 +4931,7 @@ snapshots: asynckit: 0.4.0 combined-stream: 1.0.8 es-set-tostringtag: 2.1.0 - hasown: 2.0.4 + hasown: 2.0.3 mime-types: 2.1.35 fsevents@2.3.3: @@ -4909,7 +4945,7 @@ snapshots: call-bound: 1.0.4 define-properties: 1.2.1 functions-have-names: 1.2.3 - hasown: 2.0.4 + hasown: 2.0.3 is-callable: 1.2.7 functions-have-names@1.2.3: {} @@ -5016,7 +5052,7 @@ snapshots: dependencies: function-bind: 1.1.2 - hasown@2.0.4: + hasown@2.0.3: dependencies: function-bind: 1.1.2 @@ -5241,6 +5277,8 @@ snapshots: json-parse-even-better-errors@2.3.1: {} + json-schema-traverse@0.4.1: {} + json-schema-traverse@1.0.0: {} json-stable-stringify-without-jsonify@1.0.1: {} @@ -5542,13 +5580,13 @@ snapshots: dependencies: mime-db: 1.52.0 - minimatch@10.2.5: + minimatch@3.1.2: dependencies: - brace-expansion: 5.0.6 + brace-expansion: 1.1.12 minimatch@9.0.5: dependencies: - brace-expansion: 5.0.6 + brace-expansion: 2.0.2 ms@2.1.3: {} @@ -5665,13 +5703,13 @@ snapshots: postcss-resolve-nested-selector@0.1.6: {} - postcss-safe-parser@7.0.1(postcss@8.5.14): + postcss-safe-parser@7.0.1(postcss@8.5.6): dependencies: - postcss: 8.5.14 + postcss: 8.5.6 - postcss-scss@4.0.9(postcss@8.5.14): + postcss-scss@4.0.9(postcss@8.5.9): dependencies: - postcss: 8.5.14 + postcss: 8.5.9 postcss-selector-parser@7.1.1: dependencies: @@ -5680,7 +5718,13 @@ snapshots: postcss-value-parser@4.2.0: {} - postcss@8.5.14: + postcss@8.5.6: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + postcss@8.5.9: dependencies: nanoid: 3.3.11 picocolors: 1.1.1 @@ -5700,6 +5744,8 @@ snapshots: proxy-from-env@2.1.0: {} + punycode@2.3.1: {} + qified@0.6.0: dependencies: hookified: 1.15.1 @@ -6006,13 +6052,13 @@ snapshots: '@socket.io/component-emitter': 3.1.2 debug: 4.4.3 engine.io-client: 6.6.4 - socket.io-parser: 4.2.6 + socket.io-parser: 4.2.5 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - socket.io-parser@4.2.6: + socket.io-parser@4.2.5: dependencies: '@socket.io/component-emitter': 3.1.2 debug: 4.4.3 @@ -6121,26 +6167,26 @@ snapshots: dependencies: stylelint: 17.3.0(typescript@5.9.3) - stylelint-config-recommended-scss@17.0.0(postcss@8.5.14)(stylelint@17.3.0(typescript@5.9.3)): + stylelint-config-recommended-scss@17.0.0(postcss@8.5.9)(stylelint@17.3.0(typescript@5.9.3)): dependencies: - postcss-scss: 4.0.9(postcss@8.5.14) + postcss-scss: 4.0.9(postcss@8.5.9) stylelint: 17.3.0(typescript@5.9.3) stylelint-config-recommended: 18.0.0(stylelint@17.3.0(typescript@5.9.3)) stylelint-scss: 7.0.0(stylelint@17.3.0(typescript@5.9.3)) optionalDependencies: - postcss: 8.5.14 + postcss: 8.5.9 stylelint-config-recommended@18.0.0(stylelint@17.3.0(typescript@5.9.3)): dependencies: stylelint: 17.3.0(typescript@5.9.3) - stylelint-config-standard-scss@17.0.0(postcss@8.5.14)(stylelint@17.3.0(typescript@5.9.3)): + stylelint-config-standard-scss@17.0.0(postcss@8.5.9)(stylelint@17.3.0(typescript@5.9.3)): dependencies: stylelint: 17.3.0(typescript@5.9.3) - stylelint-config-recommended-scss: 17.0.0(postcss@8.5.14)(stylelint@17.3.0(typescript@5.9.3)) + stylelint-config-recommended-scss: 17.0.0(postcss@8.5.9)(stylelint@17.3.0(typescript@5.9.3)) stylelint-config-standard: 40.0.0(stylelint@17.3.0(typescript@5.9.3)) optionalDependencies: - postcss: 8.5.14 + postcss: 8.5.9 stylelint-config-standard@40.0.0(stylelint@17.3.0(typescript@5.9.3)): dependencies: @@ -6191,8 +6237,8 @@ snapshots: micromatch: 4.0.8 normalize-path: 3.0.0 picocolors: 1.1.1 - postcss: 8.5.14 - postcss-safe-parser: 7.0.1(postcss@8.5.14) + postcss: 8.5.6 + postcss-safe-parser: 7.0.1(postcss@8.5.6) postcss-selector-parser: 7.1.1 postcss-value-parser: 4.2.0 string-width: 8.2.0 @@ -6309,6 +6355,8 @@ snapshots: has-symbols: 1.1.0 which-boxed-primitive: 1.1.1 + undici-types@6.21.0: {} + unicorn-magic@0.4.0: {} unified@11.0.5: @@ -6350,6 +6398,10 @@ snapshots: escalade: 3.2.0 picocolors: 1.1.1 + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + use-callback-ref@1.3.3(@types/react@19.2.14)(react@19.2.4): dependencies: react: 19.2.4 @@ -6398,25 +6450,26 @@ snapshots: d3-time: 3.1.0 d3-timer: 3.0.1 - vite-tsconfig-paths@6.1.1(typescript@5.9.3)(vite@7.3.2): + vite-tsconfig-paths@6.1.1(typescript@5.9.3)(vite@7.3.2(@types/node@20.19.41)): dependencies: debug: 4.4.3 globrex: 0.1.2 tsconfck: 3.1.6(typescript@5.9.3) - vite: 7.3.2 + vite: 7.3.2(@types/node@20.19.41) transitivePeerDependencies: - supports-color - typescript - vite@7.3.2: + vite@7.3.2(@types/node@20.19.41): dependencies: esbuild: 0.27.7 fdir: 6.5.0(picomatch@4.0.4) picomatch: 4.0.4 - postcss: 8.5.14 + postcss: 8.5.9 rollup: 4.60.1 tinyglobby: 0.2.16 optionalDependencies: + '@types/node': 20.19.41 fsevents: 2.3.3 which-boxed-primitive@1.1.1: @@ -6475,7 +6528,7 @@ snapshots: imurmurhash: 0.1.4 signal-exit: 4.1.0 - ws@8.20.1: {} + ws@8.18.3: {} xmlhttprequest-ssl@2.1.2: {} diff --git a/PROJECTS/intermediate/api-security-scanner/frontend/src/config/constants.ts b/PROJECTS/intermediate/api-security-scanner/frontend/src/config/constants.ts index 484677d1..39b4ad8b 100644 --- a/PROJECTS/intermediate/api-security-scanner/frontend/src/config/constants.ts +++ b/PROJECTS/intermediate/api-security-scanner/frontend/src/config/constants.ts @@ -11,7 +11,7 @@ export const API_BASE_URL = import.meta.env.VITE_API_URL !== null && import.meta.env.VITE_API_URL !== '' ? import.meta.env.VITE_API_URL - : '/api' + : '/api/' /** * Auth API Endpoints