chore: update ESLint configuration and dependencies, remove experimental instrumentationHook from Next.js config, and adjust package scripts

- Added ESLint configuration file with Next.js and Remotion settings.
- Removed experimental instrumentationHook from next.config.mjs.
- Updated package.json scripts to use ESLint directly and enabled turbopack for development.
- Bumped various dependencies including Next.js, React, and Radix UI components.
- Changed searchTimer initialization to use undefined for better clarity in multiple components.
This commit is contained in:
sai80082
2026-04-06 17:32:46 +05:30
parent da3f865450
commit 4f7e770cf3
8 changed files with 2110 additions and 61 deletions
+2017
View File
File diff suppressed because it is too large Load Diff
+31
View File
@@ -0,0 +1,31 @@
import { defineConfig } from "eslint/config";
import nextCoreWebVitals from "eslint-config-next/core-web-vitals";
import remotion from "@remotion/eslint-plugin";
import path from "node:path";
import { fileURLToPath } from "node:url";
import js from "@eslint/js";
import { FlatCompat } from "@eslint/eslintrc";
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
const compat = new FlatCompat({
baseDirectory: __dirname,
recommendedConfig: js.configs.recommended,
allConfig: js.configs.all
});
export default defineConfig([{
extends: [...nextCoreWebVitals],
plugins: {
"@remotion": remotion,
},
rules: {
"react-hooks/exhaustive-deps": "off",
"@next/next/no-img-element": "off",
},
}, {
files: ["remotion/*.{ts,tsx}"],
extends: [...compat.extends("plugin:@remotion/recommended")],
}]);
-3
View File
@@ -3,9 +3,6 @@
const nextConfig = { const nextConfig = {
reactStrictMode: false, reactStrictMode: false,
output: 'standalone', output: 'standalone',
experimental: {
instrumentationHook: true,
},
images: { images: {
unoptimized: true, unoptimized: true,
}, },
+58 -54
View File
@@ -3,10 +3,10 @@
"version": "0.19.1", "version": "0.19.1",
"private": true, "private": true,
"scripts": { "scripts": {
"dev": "next dev", "dev": "next dev --turbopack",
"build": "next build", "build": "next build",
"start": "next start -p ${PORT:=3000} -H ${HOST:=0.0.0.0}", "start": "next start -p ${PORT:=3000} -H ${HOST:=0.0.0.0}",
"lint": "next lint", "lint": "eslint .",
"db:generate": "drizzle-kit generate --config=drizzle.app.config.ts", "db:generate": "drizzle-kit generate --config=drizzle.app.config.ts",
"db:migrate": "drizzle-kit migrate --config=drizzle.app.config.ts", "db:migrate": "drizzle-kit migrate --config=drizzle.app.config.ts",
"db:studio": "drizzle-kit studio --config=drizzle.app.config.ts" "db:studio": "drizzle-kit studio --config=drizzle.app.config.ts"
@@ -17,90 +17,94 @@
"url": "https://varunraj.in" "url": "https://varunraj.in"
}, },
"dependencies": { "dependencies": {
"@ai-sdk/openai": "^3.0.29", "@ai-sdk/openai": "^3.0.50",
"@ai-sdk/openai-compatible": "^2.0.30", "@ai-sdk/openai-compatible": "^2.0.38",
"@ai-sdk/react": "^3.0.88", "@ai-sdk/react": "^3.0.148",
"@libsql/client": "^0.17.2", "@libsql/client": "^0.17.2",
"@radix-ui/react-accordion": "^1.2.1", "@radix-ui/react-accordion": "^1.2.12",
"@radix-ui/react-alert-dialog": "^1.1.4", "@radix-ui/react-alert-dialog": "^1.1.15",
"@radix-ui/react-avatar": "^1.1.0", "@radix-ui/react-avatar": "^1.1.11",
"@radix-ui/react-checkbox": "^1.1.2", "@radix-ui/react-checkbox": "^1.3.3",
"@radix-ui/react-context-menu": "^2.2.16", "@radix-ui/react-context-menu": "^2.2.16",
"@radix-ui/react-dialog": "^1.1.1", "@radix-ui/react-dialog": "^1.1.15",
"@radix-ui/react-dropdown-menu": "^2.1.1", "@radix-ui/react-dropdown-menu": "^2.1.16",
"@radix-ui/react-hover-card": "^1.1.1", "@radix-ui/react-hover-card": "^1.1.15",
"@radix-ui/react-icons": "^1.3.0", "@radix-ui/react-icons": "^1.3.2",
"@radix-ui/react-label": "^2.1.0", "@radix-ui/react-label": "^2.1.8",
"@radix-ui/react-popover": "^1.1.1", "@radix-ui/react-popover": "^1.1.15",
"@radix-ui/react-scroll-area": "^1.1.0", "@radix-ui/react-scroll-area": "^1.2.10",
"@radix-ui/react-select": "^2.1.1", "@radix-ui/react-select": "^2.2.6",
"@radix-ui/react-slot": "^1.2.4", "@radix-ui/react-slot": "^1.2.4",
"@radix-ui/react-switch": "^1.1.0", "@radix-ui/react-switch": "^1.2.6",
"@radix-ui/react-tabs": "^1.1.0", "@radix-ui/react-tabs": "^1.1.13",
"@radix-ui/react-toast": "^1.2.1", "@radix-ui/react-toast": "^1.2.15",
"@radix-ui/react-tooltip": "^1.1.2", "@radix-ui/react-tooltip": "^1.2.8",
"@remotion/cli": "4.0.232", "@remotion/cli": "4.0.232",
"@remotion/eslint-plugin": "^4.0.232", "@remotion/eslint-plugin": "^4.0.446",
"@tanstack/react-query": "^5.69.0", "@tanstack/react-query": "^5.96.2",
"@tanstack/react-table": "^8.21.3", "@tanstack/react-table": "^8.21.3",
"@types/cookie": "^0.6.0", "@types/cookie": "^0.6.0",
"@types/qs": "^6.9.15", "@types/qs": "^6.15.0",
"@types/react-autosuggest": "^10.1.11", "@types/react-autosuggest": "^10.1.11",
"@types/react-calendar-heatmap": "^1.6.7", "@types/react-calendar-heatmap": "^1.9.0",
"@types/react-window": "^1.8.8", "@types/react-window": "^1.8.8",
"ai": "^6.0.86", "ai": "^6.0.146",
"axios": "^1.7.4", "axios": "^1.14.0",
"chrono-node": "^1.4.9", "chrono-node": "^1.4.9",
"class-variance-authority": "^0.7.0", "class-variance-authority": "^0.7.1",
"clsx": "^2.1.1", "clsx": "^2.1.1",
"cmdk": "1.0.0", "cmdk": "1.0.0",
"compatibility": "^1.0.1", "compatibility": "^1.0.1",
"cookie": "^0.6.0", "cookie": "^0.6.0",
"date-fns": "^3.6.0", "date-fns": "^3.6.0",
"date-fns-tz": "^3.2.0", "date-fns-tz": "^3.2.0",
"drizzle-orm": "^0.45.1", "drizzle-orm": "^0.45.2",
"jsonwebtoken": "^9.0.2", "jsonwebtoken": "^9.0.3",
"leaflet": "^1.9.4", "leaflet": "^1.9.4",
"leaflet-defaulticon-compatibility": "0.1.2", "leaflet-defaulticon-compatibility": "0.1.2",
"leaflet.heat": "^0.2.0", "leaflet.heat": "^0.2.0",
"lucide-react": "^0.428.0", "lucide-react": "^0.428.0",
"next": "14.2.5", "next": "15.5.14",
"next-themes": "^0.3.0", "next-themes": "^0.3.0",
"pg": "^8.12.0", "pg": "^8.20.0",
"qs": "^6.13.0", "qs": "^6.15.0",
"react": "^18", "react": "19.2.4",
"react-autosuggest": "^10.1.0", "react-autosuggest": "^10.1.0",
"react-day-picker": "9.0.8", "react-day-picker": "9.0.8",
"react-dom": "^18", "react-dom": "19.2.4",
"react-grid-gallery": "^1.0.1", "react-grid-gallery": "^1.0.1",
"react-hot-toast": "^2.5.1", "react-hot-toast": "^2.6.0",
"react-leaflet": "^4.2.1", "react-leaflet": "^4.2.1",
"react-mentions": "^4.4.10", "react-mentions": "^4.4.10",
"react-window": "^1.8.11", "react-window": "^1.8.11",
"recharts": "^2.12.7", "recharts": "^2.15.4",
"remotion": "4.0.232", "remotion": "4.0.232",
"sass": "^1.77.8", "sass": "^1.99.0",
"tailwind-merge": "^2.5.2", "tailwind-merge": "^2.6.1",
"tailwindcss-animate": "^1.0.7", "tailwindcss-animate": "^1.0.7",
"yet-another-react-lightbox": "^3.21.4", "yet-another-react-lightbox": "^3.30.1",
"zod": "^4.3.6" "zod": "^4.3.6"
}, },
"devDependencies": { "devDependencies": {
"@tanstack/eslint-plugin-query": "^5.68.0", "@tanstack/eslint-plugin-query": "^5.96.2",
"@types/jsonwebtoken": "^9.0.6", "@types/jsonwebtoken": "^9.0.10",
"@types/leaflet": "^1.9.15", "@types/leaflet": "^1.9.21",
"@types/leaflet.heat": "^0.2.4", "@types/leaflet.heat": "^0.2.5",
"@types/node": "^20", "@types/node": "^20.19.39",
"@types/pg": "^8.11.6", "@types/pg": "^8.20.0",
"@types/react": "^18", "@types/react": "19.2.14",
"@types/react-dom": "^18", "@types/react-dom": "19.2.3",
"@types/react-mentions": "^4.4.1", "@types/react-mentions": "^4.4.1",
"autoprefixer": "^10.4.20", "autoprefixer": "^10.4.27",
"drizzle-kit": "^0.31.10", "drizzle-kit": "^0.31.10",
"eslint": "^8", "eslint": "^9.39.4",
"eslint-config-next": "14.2.5", "eslint-config-next": "15.5.14",
"postcss": "^8.4.41", "postcss": "^8.5.8",
"tailwindcss": "^3.4.10", "tailwindcss": "^3.4.19",
"typescript": "^5" "typescript": "^5.9.3"
},
"overrides": {
"@types/react": "19.2.14",
"@types/react-dom": "19.2.3"
} }
} }
@@ -28,7 +28,7 @@ export default function TagMissingLocationOSMSearchAndAdd(
) { ) {
const { toast } = useToast(); const { toast } = useToast();
const [searchedPlaces, setSearchedPlaces] = useState<IPlace[] | null>(null); const [searchedPlaces, setSearchedPlaces] = useState<IPlace[] | null>(null);
const searchTimer = useRef<NodeJS.Timeout>(); const searchTimer = useRef<NodeJS.Timeout>(undefined);
const [loading, setLoading] = useState(false); const [loading, setLoading] = useState(false);
const [submitting, setSubmitting] = useState(false); const [submitting, setSubmitting] = useState(false);
const [selectedPlace, setSelectedPlace] = useState<IPlace | null>(null); const [selectedPlace, setSelectedPlace] = useState<IPlace | null>(null);
@@ -23,7 +23,7 @@ export default function TagMissingLocationSearchAndAdd(
) { ) {
const { toast } = useToast(); const { toast } = useToast();
const [searchedPlaces, setSearchedPlaces] = useState<IPlace[] | null>(null); const [searchedPlaces, setSearchedPlaces] = useState<IPlace[] | null>(null);
const searchTimer = useRef<NodeJS.Timeout>(); const searchTimer = useRef<NodeJS.Timeout>(undefined);
const [loading, setLoading] = useState(false); const [loading, setLoading] = useState(false);
const [submitting, setSubmitting] = useState(false); const [submitting, setSubmitting] = useState(false);
const [selectedPlace, setSelectedPlace] = useState<IPlace | null>(null); const [selectedPlace, setSelectedPlace] = useState<IPlace | null>(null);
@@ -54,7 +54,7 @@ export function PersonMergeDropdown({
const [open, setOpen] = useState(false); const [open, setOpen] = useState(false);
const [loading, setLoading] = useState(false); const [loading, setLoading] = useState(false);
const [similarLoading, setSimilarLoading] = useState(true); const [similarLoading, setSimilarLoading] = useState(true);
const searchTimer = useRef<NodeJS.Timeout>(); const searchTimer = useRef<NodeJS.Timeout>(undefined);
const [selectedPeople, setSelectedPeople] = useState<IPerson[]>([]); const [selectedPeople, setSelectedPeople] = useState<IPerson[]>([]);
const [primaryPerson, setPrimaryPerson] = useState<IPerson>(person); const [primaryPerson, setPrimaryPerson] = useState<IPerson>(person);
const [merging, setMerging] = useState(false); const [merging, setMerging] = useState(false);
+1 -1
View File
@@ -45,7 +45,7 @@ const Autocomplete = React.forwardRef<HTMLInputElement, AutocompleteProps>(
const [selectedIndex, setSelectedIndex] = React.useState(-1) const [selectedIndex, setSelectedIndex] = React.useState(-1)
const containerRef = React.useRef<HTMLDivElement>(null) const containerRef = React.useRef<HTMLDivElement>(null)
const inputRef = React.useRef<HTMLInputElement>(null) const inputRef = React.useRef<HTMLInputElement>(null)
const debounceTimeout = React.useRef<NodeJS.Timeout>() const debounceTimeout = React.useRef<NodeJS.Timeout>(undefined)
// Find the label for the current value // Find the label for the current value
const currentLabel = React.useMemo(() => { const currentLabel = React.useMemo(() => {