Fix ESLint errors: replace any types, escape HTML entities, convert require to imports, ignore config files

This commit is contained in:
nmemmert committed 2025-10-23 08:13:39 -04:00
1 parent 3d8ba5b8f0
commit 8b189f4caa
8 files changed
+1418 -16

No files matched your search

+8
View File
@@ -12,6 +12,14 @@ const eslintConfig = defineConfig([
"out/**",
"build/**",
"next-env.d.ts",
// Additional ignores for generated/config files:
"public/sw.js",
"public/workbox-*.js",
"public/firebase-messaging-sw.js",
"jest.config.js",
"jest.setup.js",
"next-i18next.config.js",
"next.config.ts",
]),
]);
+1 -1
View File
@@ -1,5 +1,5 @@
import type { NextConfig } from "next";
const withPWA = require('next-pwa');
import withPWA from 'next-pwa';
const nextConfig: NextConfig = {
output: 'standalone',
+1394
View File
File diff suppressed because it is too large. Load diff
+1
View File
@@ -32,6 +32,7 @@
"@testing-library/user-event": "^14.6.1",
"@types/jest": "^30.0.0",
"@types/node": "^20",
"@types/nodemailer": "^7.0.2",
"@types/react": "^19",
"@types/react-csv": "^1.1.10",
"@types/react-dom": "^19",
+2 -3
View File
@@ -1,14 +1,13 @@
import { NextRequest, NextResponse } from 'next/server';
import { doc, getDoc } from 'firebase/firestore';
import { db } from '@/lib/firebase';
const nodemailer = require('nodemailer');
import nodemailer from 'nodemailer';
function generatePrayerEmailHTML(message: string, subject: string) {
// Parse the message to extract prayer details
const lines = message.split('\n');
let currentPrayer = null;
let prayers = [];
const prayers = [];
let summarySection = false;
for (const line of lines) {
+2 -3
View File
@@ -2,14 +2,13 @@ import { NextRequest, NextResponse } from 'next/server';
import { doc, getDoc, collection, getDocs, updateDoc } from 'firebase/firestore';
import { db } from '@/lib/firebase';
import { admin } from '@/lib/firebase-admin';
const nodemailer = require('nodemailer');
import nodemailer from 'nodemailer';
function generatePrayerEmailHTML(message: string, subject: string) {
// Parse the message to extract prayer details
const lines = message.split('\n');
let currentPrayer = null;
let prayers = [];
const prayers = [];
let summarySection = false;
for (const line of lines) {
+6 -5
View File
@@ -108,14 +108,15 @@ export default function Admin() {
try {
await setDoc(doc(db, 'config', 'smtp'), config);
setMessage('SMTP configuration saved successfully!');
} catch (error: any) {
} catch (error: unknown) {
console.error('Error saving config:', error);
if (error.code === 'permission-denied') {
const err = error as { code?: string; message?: string };
if (err.code === 'permission-denied') {
setMessage('Permission denied. Please check your authentication and Firestore security rules.');
} else if (error.code === 'unavailable') {
} else if (err.code === 'unavailable') {
setMessage('Firestore is currently unavailable. Please try again later.');
} else {
setMessage(`Error saving configuration: ${error.message || 'Unknown error'}`);
setMessage(`Error saving configuration: ${err.message || 'Unknown error'}`);
}
} finally {
setSaving(false);
@@ -171,7 +172,7 @@ export default function Admin() {
return (
<div className="max-w-2xl mx-auto p-6 bg-red-900 border border-red-700 rounded-lg">
<h2 className="text-xl font-bold text-red-100 mb-2">Access Denied</h2>
<p className="text-red-200">You don't have permission to access the admin panel.</p>
<p className="text-red-200">You don&apos;t have permission to access the admin panel.</p>
</div>
);
}
+4 -4
View File
@@ -22,14 +22,14 @@ export default function Login() {
}
try {
await signup(email, password);
} catch (err: any) {
setError(err.message);
} catch (err: unknown) {
setError(err instanceof Error ? err.message : 'An error occurred');
}
} else {
try {
await login(email, password);
} catch (err: any) {
setError(err.message);
} catch (err: unknown) {
setError(err instanceof Error ? err.message : 'An error occurred');
}
}
};