refactor: fix biome linting issues and update project documentation

- Fix 36+ biome linting issues reducing errors/warnings from 227 to 191
- Replace explicit 'any' types with proper TypeScript interfaces
- Fix React hooks dependencies and useCallback patterns
- Resolve unused variables and parameter assignment issues
- Improve accessibility with proper label associations
- Add comprehensive API documentation for admin and security features
- Update README.md with accurate PostgreSQL setup and current tech stack
- Create complete documentation for audit logging, CSP monitoring, and batch processing
- Fix outdated project information and missing developer workflows
This commit is contained in:
2025-07-11 21:50:53 +02:00
committed by Kaj Kowalski
parent 3e9e75e854
commit 1eea2cc3e4
121 changed files with 28687 additions and 4895 deletions

View File

@ -7,7 +7,8 @@
"use client";
import React, { createContext, useContext, useEffect, useState } from "react";
import type React from "react";
import { createContext, useContext, useEffect, useState, useCallback } from "react";
import { CSRFClient } from "../../lib/csrf";
interface CSRFContextType {
@ -15,9 +16,11 @@ interface CSRFContextType {
loading: boolean;
error: string | null;
refreshToken: () => Promise<void>;
addTokenToFetch: (options: RequestInit) => RequestInit;
addTokenToFormData: (formData: FormData) => FormData;
addTokenToObject: <T extends Record<string, unknown>>(obj: T) => T & { csrfToken: string };
addTokenToFetch: (_options: RequestInit) => RequestInit;
addTokenToFormData: (_formData: FormData) => FormData;
addTokenToObject: <T extends Record<string, unknown>>(
_obj: T
) => T & { csrfToken: string };
}
const CSRFContext = createContext<CSRFContextType | undefined>(undefined);
@ -37,7 +40,7 @@ export function CSRFProvider({ children }: CSRFProviderProps) {
/**
* Fetch CSRF token from server
*/
const fetchToken = async () => {
const fetchToken = useCallback(async () => {
try {
setLoading(true);
setError(null);
@ -68,13 +71,14 @@ export function CSRFProvider({ children }: CSRFProviderProps) {
throw new Error("Invalid response from CSRF endpoint");
}
} catch (err) {
const errorMessage = err instanceof Error ? err.message : "Failed to fetch CSRF token";
const errorMessage =
err instanceof Error ? err.message : "Failed to fetch CSRF token";
setError(errorMessage);
console.error("CSRF token fetch error:", errorMessage);
} finally {
setLoading(false);
}
};
}, []);
/**
* Refresh token manually
@ -88,7 +92,7 @@ export function CSRFProvider({ children }: CSRFProviderProps) {
*/
useEffect(() => {
fetchToken();
}, []);
}, [fetchToken]);
/**
* Monitor token changes in cookies
@ -118,9 +122,7 @@ export function CSRFProvider({ children }: CSRFProviderProps) {
};
return (
<CSRFContext.Provider value={contextValue}>
{children}
</CSRFContext.Provider>
<CSRFContext.Provider value={contextValue}>{children}</CSRFContext.Provider>
);
}
@ -150,4 +152,4 @@ export function withCSRF<P extends object>(Component: React.ComponentType<P>) {
WrappedComponent.displayName = `withCSRF(${Component.displayName || Component.name})`;
return WrappedComponent;
}
}