chore: update packages + eslint + lint

This commit is contained in:
diced
2025-12-08 01:29:12 -08:00
parent 5d27c14b77
commit ca09b1319d
5 changed files with 1718 additions and 1764 deletions

View File

@@ -1,15 +1,17 @@
import unusedImports from 'eslint-plugin-unused-imports';
import tseslint from 'typescript-eslint';
import prettier from 'eslint-plugin-prettier';
import prettierConfig from 'eslint-config-prettier';
import reactHooksPlugin from 'eslint-plugin-react-hooks';
import reactPlugin from 'eslint-plugin-react';
import reactRefreshPlugin from 'eslint-plugin-react-refresh';
import jsxA11yPlugin from 'eslint-plugin-jsx-a11y';
import path from 'node:path'; import path from 'node:path';
import { fileURLToPath } from 'node:url'; import { fileURLToPath } from 'node:url';
import fs from 'node:fs'; import fs from 'node:fs';
import tseslint from 'typescript-eslint';
import reactPlugin from 'eslint-plugin-react';
import reactHooksPlugin from 'eslint-plugin-react-hooks';
import reactRefreshPlugin from 'eslint-plugin-react-refresh';
import jsxA11yPlugin from 'eslint-plugin-jsx-a11y';
import prettier from 'eslint-plugin-prettier';
import prettierConfig from 'eslint-config-prettier';
import unusedImports from 'eslint-plugin-unused-imports';
const __filename = fileURLToPath(import.meta.url); const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename); const __dirname = path.dirname(__filename);
@@ -20,63 +22,57 @@ const gitignorePatterns = gitignoreContent
.filter((line) => line.trim() && !line.startsWith('#')) .filter((line) => line.trim() && !line.startsWith('#'))
.map((pattern) => pattern.trim()); .map((pattern) => pattern.trim());
export default tseslint.config( const reactRecommendedRules = reactPlugin.configs.recommended.rules;
const reactHooksRecommendedRules = reactHooksPlugin.configs['recommended-latest'].rules;
const reactRefreshRules = reactRefreshPlugin.configs.vite.rules;
import { defineConfig } from 'eslint/config';
export default defineConfig(
tseslint.configs.recommended,
jsxA11yPlugin.flatConfigs.recommended,
reactPlugin.configs.flat.recommended,
reactHooksPlugin.configs.flat.recommended,
reactRefreshPlugin.configs.vite,
{ ignores: gitignorePatterns }, { ignores: gitignorePatterns },
{
extends: [
tseslint.configs.recommended,
reactHooksPlugin.configs['recommended-latest'],
reactRefreshPlugin.configs.vite,
],
},
{ {
files: ['**/*.{js,mjs,cjs,ts,tsx}'], files: ['**/*.{js,mjs,cjs,ts,tsx}'],
languageOptions: { languageOptions: {
ecmaVersion: 'latest', ecmaVersion: 'latest',
sourceType: 'module', sourceType: 'module',
parserOptions: { parserOptions: {
ecmaFeatures: { ecmaFeatures: { jsx: true },
jsx: true,
}, },
}, },
},
plugins: {
'unused-imports': unusedImports,
prettier: prettier,
react: reactPlugin,
'jsx-a11y': jsxA11yPlugin,
},
rules: {
...reactPlugin.configs.recommended.rules,
plugins: {
react: reactPlugin,
'react-hooks': reactHooksPlugin,
prettier,
'unused-imports': unusedImports,
},
rules: {
...prettierConfig.rules, ...prettierConfig.rules,
'prettier/prettier': [
'error', 'prettier/prettier': ['error', {}, { fileInfoOptions: { withNodeModules: false } }],
{},
{
fileInfoOptions: {
withNodeModules: false,
},
},
],
'linebreak-style': ['error', 'unix'], 'linebreak-style': ['error', 'unix'],
quotes: [ quotes: ['error', 'single', { avoidEscape: true }],
'error',
'single',
{
avoidEscape: true,
},
],
semi: ['error', 'always'], semi: ['error', 'always'],
'jsx-quotes': ['error', 'prefer-single'], 'jsx-quotes': ['error', 'prefer-single'],
indent: 'off', indent: 'off',
'react/prop-types': 'off', 'react/prop-types': 'off',
'react-hooks/rules-of-hooks': 'off', 'react-hooks/rules-of-hooks': 'off',
'react-hooks/exhaustive-deps': 'off', 'react-hooks/exhaustive-deps': 'off',
'react-hooks/set-state-in-effect': 'warn',
'react-refresh/only-export-components': 'off', 'react-refresh/only-export-components': 'off',
'react/jsx-uses-react': 'warn', 'react/jsx-uses-react': 'warn',
'react/jsx-uses-vars': 'warn', 'react/jsx-uses-vars': 'warn',
'react/no-danger-with-children': 'warn', 'react/no-danger-with-children': 'warn',
@@ -87,28 +83,29 @@ export default tseslint.config(
'react/react-in-jsx-scope': 'off', 'react/react-in-jsx-scope': 'off',
'react/require-render-return': 'error', 'react/require-render-return': 'error',
'react/style-prop-object': 'warn', 'react/style-prop-object': 'warn',
'jsx-a11y/alt-text': 'off',
'react/display-name': 'off', 'react/display-name': 'off',
'jsx-a11y/alt-text': 'off',
'jsx-a11y/no-autofocus': 'off',
'jsx-a11y/click-events-have-key-events': 'off',
'jsx-a11y/no-static-element-interactions': 'off',
'no-unused-vars': 'off', 'no-unused-vars': 'off',
'@typescript-eslint/no-unused-vars': 'off', '@typescript-eslint/no-unused-vars': 'off',
'unused-imports/no-unused-imports': 'error', 'unused-imports/no-unused-imports': 'error',
'unused-imports/no-unused-vars': [ 'unused-imports/no-unused-vars': [
'warn', 'warn',
{ { vars: 'all', varsIgnorePattern: '^_', args: 'after-used', argsIgnorePattern: '^_' },
vars: 'all',
varsIgnorePattern: '^_',
args: 'after-used',
argsIgnorePattern: '^_',
},
], ],
'@typescript-eslint/ban-ts-comment': 'off', '@typescript-eslint/ban-ts-comment': 'off',
'@typescript-eslint/no-explicit-any': 'off', '@typescript-eslint/no-explicit-any': 'off',
'@typescript-eslint/no-unused-expressions': 'off', '@typescript-eslint/no-unused-expressions': 'off',
}, },
settings: { settings: {
react: { react: { version: 'detect' },
version: 'detect',
},
}, },
}, },
); );

View File

@@ -28,95 +28,95 @@
"@dnd-kit/utilities": "^3.2.2", "@dnd-kit/utilities": "^3.2.2",
"@fastify/cookie": "^11.0.2", "@fastify/cookie": "^11.0.2",
"@fastify/cors": "^11.1.0", "@fastify/cors": "^11.1.0",
"@fastify/multipart": "^9.0.3", "@fastify/multipart": "^9.3.0",
"@fastify/rate-limit": "^10.3.0", "@fastify/rate-limit": "^10.3.0",
"@fastify/sensible": "^6.0.3", "@fastify/sensible": "^6.0.4",
"@fastify/static": "^8.2.0", "@fastify/static": "^8.3.0",
"@github/webauthn-json": "^2.1.1", "@github/webauthn-json": "^2.1.1",
"@mantine/charts": "^8.2.8", "@mantine/charts": "^8.3.9",
"@mantine/code-highlight": "^8.2.8", "@mantine/code-highlight": "^8.3.9",
"@mantine/core": "^8.2.8", "@mantine/core": "^8.3.9",
"@mantine/dates": "^8.2.8", "@mantine/dates": "^8.3.9",
"@mantine/dropzone": "^8.2.8", "@mantine/dropzone": "^8.3.9",
"@mantine/form": "^8.2.8", "@mantine/form": "^8.3.9",
"@mantine/hooks": "^8.2.8", "@mantine/hooks": "^8.3.9",
"@mantine/modals": "^8.2.8", "@mantine/modals": "^8.3.9",
"@mantine/notifications": "^8.2.8", "@mantine/notifications": "^8.3.9",
"@prisma/adapter-pg": "6.13.0", "@prisma/adapter-pg": "6.13.0",
"@prisma/client": "6.13.0", "@prisma/client": "6.13.0",
"@prisma/engines": "6.13.0", "@prisma/engines": "6.13.0",
"@prisma/internals": "6.13.0", "@prisma/internals": "6.13.0",
"@prisma/migrate": "6.13.0", "@prisma/migrate": "6.13.0",
"@smithy/node-http-handler": "^4.1.1", "@smithy/node-http-handler": "^4.1.1",
"@tabler/icons-react": "^3.34.1", "@tabler/icons-react": "^3.35.0",
"archiver": "^7.0.1", "archiver": "^7.0.1",
"argon2": "^0.44.0", "argon2": "^0.44.0",
"asciinema-player": "^3.10.0", "asciinema-player": "^3.12.1",
"bytes": "^3.1.2", "bytes": "^3.1.2",
"clsx": "^2.1.1", "clsx": "^2.1.1",
"colorette": "^2.0.20", "colorette": "^2.0.20",
"commander": "^14.0.0", "commander": "^14.0.2",
"cookie": "^1.0.2", "cookie": "^1.1.1",
"cross-env": "^10.0.0", "cross-env": "^10.1.0",
"dayjs": "^1.11.18", "dayjs": "^1.11.19",
"dotenv": "^17.2.2", "dotenv": "^17.2.3",
"fast-glob": "^3.3.3", "fast-glob": "^3.3.3",
"fastify": "^5.5.0", "fastify": "^5.6.2",
"fastify-plugin": "^5.0.1", "fastify-plugin": "^5.1.0",
"fluent-ffmpeg": "^2.1.3", "fluent-ffmpeg": "^2.1.3",
"highlight.js": "^11.11.1", "highlight.js": "^11.11.1",
"iron-session": "^8.0.4", "iron-session": "^8.0.4",
"isomorphic-dompurify": "^2.26.0", "isomorphic-dompurify": "^2.33.0",
"katex": "^0.16.22", "katex": "^0.16.27",
"mantine-datatable": "^8.2.0", "mantine-datatable": "^8.3.9",
"ms": "^2.1.3", "ms": "^2.1.3",
"multer": "2.0.2", "multer": "2.0.2",
"otplib": "^12.0.1", "otplib": "^12.0.1",
"prisma": "6.13.0", "prisma": "6.13.0",
"qrcode": "^1.5.4", "qrcode": "^1.5.4",
"react": "^19.1.1", "react": "^19.2.1",
"react-dom": "^19.1.1", "react-dom": "^19.2.1",
"react-markdown": "^10.1.0", "react-markdown": "^10.1.0",
"react-router-dom": "^7.8.2", "react-router-dom": "^7.10.1",
"react-window": "1.8.11", "react-window": "1.8.11",
"remark-gfm": "^4.0.1", "remark-gfm": "^4.0.1",
"sharp": "^0.34.3", "sharp": "^0.34.5",
"swr": "^2.3.6", "swr": "^2.3.7",
"typescript-eslint": "^8.42.0", "typescript-eslint": "^8.48.1",
"vite": "^7.1.4", "vite": "^7.2.7",
"zod": "^4.1.5", "zod": "^4.1.13",
"zustand": "^5.0.8" "zustand": "^5.0.9"
}, },
"devDependencies": { "devDependencies": {
"@types/archiver": "^7.0.0", "@types/archiver": "^7.0.0",
"@types/bytes": "^3.1.5", "@types/bytes": "^3.1.5",
"@types/fluent-ffmpeg": "^2.1.27", "@types/fluent-ffmpeg": "^2.1.28",
"@types/katex": "^0.16.7", "@types/katex": "^0.16.7",
"@types/ms": "^2.1.0", "@types/ms": "^2.1.0",
"@types/multer": "^2.0.0", "@types/multer": "^2.0.0",
"@types/node": "^24.3.0", "@types/node": "^24.10.1",
"@types/qrcode": "^1.5.5", "@types/qrcode": "^1.5.6",
"@types/react": "^19.1.12", "@types/react": "^19.2.7",
"@types/react-dom": "^19.1.9", "@types/react-dom": "^19.2.3",
"@types/react-window": "^1.8.8", "@types/react-window": "^1.8.8",
"@vitejs/plugin-react": "^5.0.2", "@vitejs/plugin-react": "^5.1.1",
"eslint": "^9.34.0", "eslint": "^9.39.1",
"eslint-config-prettier": "^10.1.8", "eslint-config-prettier": "^10.1.8",
"eslint-plugin-jsx-a11y": "^6.10.2", "eslint-plugin-jsx-a11y": "^6.10.2",
"eslint-plugin-prettier": "^5.5.4", "eslint-plugin-prettier": "^5.5.4",
"eslint-plugin-react": "^7.37.5", "eslint-plugin-react": "^7.37.5",
"eslint-plugin-react-hooks": "^5.2.0", "eslint-plugin-react-hooks": "^7.0.1",
"eslint-plugin-react-refresh": "^0.4.20", "eslint-plugin-react-refresh": "^0.4.24",
"eslint-plugin-unused-imports": "^4.2.0", "eslint-plugin-unused-imports": "^4.3.0",
"postcss": "^8.5.6", "postcss": "^8.5.6",
"postcss-preset-mantine": "^1.18.0", "postcss-preset-mantine": "^1.18.0",
"postcss-simple-vars": "^7.0.1", "postcss-simple-vars": "^7.0.1",
"prettier": "^3.6.2", "prettier": "^3.7.4",
"sass": "^1.92.0", "sass": "^1.94.2",
"tsc-alias": "^1.8.16", "tsc-alias": "^1.8.16",
"tsup": "^8.5.0", "tsup": "^8.5.1",
"tsx": "^4.20.5", "tsx": "^4.21.0",
"typescript": "^5.9.2" "typescript": "^5.9.3"
}, },
"engines": { "engines": {
"node": ">=22" "node": ">=22"

3277
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,5 +1,5 @@
import { Export4 } from '@/lib/import/version4/validateExport'; import { Export4 } from '@/lib/import/version4/validateExport';
import { Box, Button, Checkbox, Code, Collapse, Group, Paper, Table, Text } from '@mantine/core'; import { Box, Button, Checkbox, Collapse, Group, Paper, Table, Text } from '@mantine/core';
import { useDisclosure } from '@mantine/hooks'; import { useDisclosure } from '@mantine/hooks';
export default function Export4ImportSettings({ export default function Export4ImportSettings({

View File

@@ -209,7 +209,7 @@ async function main() {
} }
}); });
server.setErrorHandler((error, _, res) => { server.setErrorHandler((error: { statusCode: number; message: string }, _, res) => {
if (error.statusCode) { if (error.statusCode) {
res.status(error.statusCode); res.status(error.statusCode);
res.send({ error: error.message, statusCode: error.statusCode }); res.send({ error: error.message, statusCode: error.statusCode });