Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
177 commits
Select commit Hold shift + click to select a range
62cb918
Upgrade next to 15.5
lucasdoell Sep 12, 2025
891d781
Enable typed routes in Next.js configuration
lucasdoell Sep 12, 2025
3f04b7b
Update packages
lucasdoell Sep 16, 2025
f60252e
Refactor SearchParams and add PagePropsWithLocale and LayoutPropsWith…
lucasdoell Sep 16, 2025
2af6375
Migrate to Next.js 15
lucasdoell Sep 16, 2025
e4c016f
Update translations for map page
lucasdoell Sep 15, 2025
7ea67d9
Update email rendering to await asynchronous operation in auth.ts
lucasdoell Sep 16, 2025
f1f7c4e
Update types to support typed routes
lucasdoell Sep 16, 2025
bfacbc1
Update typecheck script in package.json to include Next.js type gener…
lucasdoell Sep 16, 2025
51769d7
Refactor layout components to use updated LayoutProps type
lucasdoell Sep 16, 2025
41a54e8
Remove LayoutPropsWithLocale type from next.ts
lucasdoell Sep 16, 2025
041518d
Merge pull request #58 from luxdotdev/main
lucasdoell Sep 16, 2025
4b2ac81
Bump version to 2.0
lucasdoell Sep 16, 2025
d091aaf
Remove turbo script
lucasdoell Sep 16, 2025
cd45ea5
Replace next lint with eslint
lucasdoell Sep 16, 2025
48bb31f
Update dependencies
lucasdoell Sep 16, 2025
42aee28
Update Tailwind to v4
lucasdoell Sep 16, 2025
2799e8d
Update eslint config
lucasdoell Sep 16, 2025
461747f
Bump shadcn version
lucasdoell Sep 16, 2025
177e152
Update components to newest version
lucasdoell Sep 16, 2025
8d3f6f6
Restore utils.ts
lucasdoell Sep 16, 2025
b441ef4
Fix use-toast import
lucasdoell Sep 16, 2025
5acba33
Reformat with prettier
lucasdoell Sep 16, 2025
7667caa
Fix string literal issue
lucasdoell Sep 16, 2025
5060043
Fix translation issues with auth pages
lucasdoell Sep 16, 2025
26c59be
Update translations for scrim edit page
lucasdoell Sep 16, 2025
b1106af
Fix import issues
lucasdoell Sep 16, 2025
6459552
Enable auth interrupts
lucasdoell Sep 16, 2025
ec5e0ae
Refactor API routes to satisfy ESLint
lucasdoell Sep 16, 2025
65ca4a0
Fix import issues within app routes
lucasdoell Sep 16, 2025
270988c
Update imports in components directory
lucasdoell Sep 16, 2025
a1ab913
Refactor parameter documentation in DTO files
lucasdoell Sep 16, 2025
b55fbc3
Refactor type imports to use 'type' syntax across lib directory
lucasdoell Sep 16, 2025
904bb60
Refactor type imports to use 'type' syntax in type definitions
lucasdoell Sep 16, 2025
6bc70eb
Refactor test files to use 'type' syntax for TypeScript imports and r…
lucasdoell Sep 16, 2025
a8d61b2
Fix eslint config
lucasdoell Sep 17, 2025
6705691
Update package dependencies and ESLint configurations in package.json…
lucasdoell Sep 17, 2025
d670e9e
Update TypeScript target version to ES2017 in tsconfig.json
lucasdoell Sep 17, 2025
1153c7c
Fix eslint issues
lucasdoell Sep 17, 2025
542f5a4
Update linting scripts to generate types
lucasdoell Sep 17, 2025
81fb856
Change import syntax in vitest.config.ts from ES module to CommonJS f…
lucasdoell Sep 17, 2025
606ce78
Revert previous change
lucasdoell Sep 17, 2025
a06f38a
Bump CI/CD node versions
lucasdoell Sep 17, 2025
017883b
Convert next.config.js to TS
lucasdoell Sep 17, 2025
d081345
Add suppressHydrationWarning to html element in RootLayout
lucasdoell Sep 17, 2025
b6acfed
Refactor discord icon component to remove unused props
lucasdoell Sep 17, 2025
aef0e26
Add new translations for sign in and terms page
lucasdoell Sep 17, 2025
c2e601e
Update auth pages with new design
lucasdoell Sep 17, 2025
7fd1140
Add metadata generation and layout for terms of service page
lucasdoell Sep 17, 2025
9b921e6
Update discord icon component to accept props
lucasdoell Sep 17, 2025
c70f55f
Add Terms of Service page with structured content and translations
lucasdoell Sep 17, 2025
529a8e8
Refactor UserAuthForm component to use new layout
lucasdoell Sep 17, 2025
d1b7b4d
Add new translations for last used and provider options in authentica…
lucasdoell Sep 17, 2025
e1e56fc
Enhance UserAuthForm to display last signed-in provider with badges a…
lucasdoell Sep 17, 2025
6b5dde2
Update ScrimPagination component to apply background class to Card fo…
lucasdoell Sep 17, 2025
ee0e2da
Update scrim card styles for new card header styles
lucasdoell Sep 17, 2025
316aa6b
Fix alignment with edit icon and scrim name
lucasdoell Sep 17, 2025
7d82980
Update package.json and pnpm-lock.yaml to include new dependencies fo…
lucasdoell Sep 17, 2025
3d200d5
Add @effect/language-service plugin to TypeScript configuration
lucasdoell Sep 17, 2025
0d0e449
Adjust replay code alignment
lucasdoell Sep 17, 2025
4dd0f2c
Add BetaBanner component to display a notification for beta users in …
lucasdoell Sep 17, 2025
52446d6
Add new prohibited use clause regarding NSFW content in English, Kore…
lucasdoell Sep 17, 2025
4458c3e
Refactor BetaBanner component to use ClientOnly
lucasdoell Sep 17, 2025
bd9d704
Add Effect-based email library
lucasdoell Sep 17, 2025
f005ea7
Remove old email sending service
lucasdoell Sep 17, 2025
a87cf27
Replace sendEmail import with email service
lucasdoell Sep 17, 2025
f67abdf
Use LayoutProps type for all layouts in the app
lucasdoell Sep 17, 2025
35f123d
Refactor BetaBanner export to named function and update import in layout
lucasdoell Sep 17, 2025
685c937
Add Notification model to Prisma schema
lucasdoell Sep 17, 2025
65d41a7
Update package.json and pnpm-lock.yaml to include @xstate/store versi…
lucasdoell Sep 17, 2025
53a64e0
Add notifications translations for English, Korean, and Chinese in JS…
lucasdoell Sep 17, 2025
259d31f
Add notifications store with context management and operations for ha…
lucasdoell Sep 17, 2025
6f80ae6
Add custom hook for managing notifications with polling, fetching, an…
lucasdoell Sep 17, 2025
b0696d5
Add NotificationService with CRUD operations for in-app notifications…
lucasdoell Sep 17, 2025
00d03d0
Add Notifications component with UI for displaying and managing in-ap…
lucasdoell Sep 17, 2025
0280224
Add API routes for managing in-app notifications
lucasdoell Sep 17, 2025
ab095b1
Add POST route for marking notifications as read with user authentica…
lucasdoell Sep 17, 2025
568f990
Add Notifications component to DashboardLayout
lucasdoell Sep 17, 2025
0f34436
Fix markAsRead function to accept string ID instead of parsed integer
lucasdoell Sep 17, 2025
1ebf865
Refactor useNotifications hook to remove polling logic and simplify n…
lucasdoell Sep 17, 2025
0b5441d
Implement notification fetching on bell click and update notification…
lucasdoell Sep 17, 2025
a64fb7a
Add in-app notification creation for users when a new scrim is uploaded
lucasdoell Sep 17, 2025
8a46bbf
Enhance NotificationItem to prevent event propagation on mark as read…
lucasdoell Sep 17, 2025
8463a26
Remove external link handling from NotificationItem component
lucasdoell Sep 17, 2025
4e52330
Add in-app notification for team invite acceptance
lucasdoell Sep 17, 2025
cc8d819
Refactor AddMemberCard component for improved layout
lucasdoell Sep 17, 2025
118a645
Refactor Team component layout to enhance user card presentation
lucasdoell Sep 17, 2025
2dcd8be
Add in-app notifications for team members when a scrim is deleted
lucasdoell Sep 17, 2025
87575be
Add Notifications component to Scrim, Map, and Player dashboard pages
lucasdoell Sep 18, 2025
57c0565
Delete existing migration
lucasdoell Sep 25, 2025
a887286
Baseline db for prisma migrations
lucasdoell Sep 25, 2025
a96c15b
Add AuditLog model and AuditLogAction enum to schema
lucasdoell Sep 25, 2025
9c6e347
Add GitHub Actions workflow for Prisma migrations deployment
lucasdoell Sep 25, 2025
70797f4
Reformat
lucasdoell Sep 25, 2025
fbe0dcb
Add AuditLog service implementation with error handling and retry logic
lucasdoell Sep 25, 2025
622d1bf
Integrate audit logging into team invite process to track invitations…
lucasdoell Sep 25, 2025
fc29a2a
Update audit log service to use userEmail instead of adminName in log…
lucasdoell Sep 25, 2025
f9491ca
Rename adminName to userEmail in AuditLog model
lucasdoell Sep 25, 2025
e8308d0
Add isTaggedError utility function to check for tagged errors
lucasdoell Sep 25, 2025
c1a633e
Refactor team invite process to improve error handling and logging
lucasdoell Sep 25, 2025
521222f
Integrate audit logging into impersonate user route to track user imp…
lucasdoell Sep 25, 2025
cbc9c67
Integrate audit logging into bug report submission to track user actions
lucasdoell Sep 25, 2025
61f6fc5
Integrate audit logging into map creation process to track user actions
lucasdoell Sep 25, 2025
2059254
Integrate audit logging into scrim creation process
lucasdoell Sep 25, 2025
8d1042b
Integrate audit logging into map removal process
lucasdoell Sep 25, 2025
3f737e0
Integrate audit logging into scrim removal process
lucasdoell Sep 25, 2025
08bd951
Integrate audit logging into scrim update process
lucasdoell Sep 25, 2025
09df64e
Integrate audit logging into team creation process
lucasdoell Sep 25, 2025
5436f93
Integrate audit logging into team member demotion process
lucasdoell Sep 25, 2025
07acbfe
Integrate audit logging into team joining process
lucasdoell Sep 25, 2025
07cfb64
Integrate audit logging into team member promotion process
lucasdoell Sep 25, 2025
10dfdc5
Integrate audit logging into team removal process
lucasdoell Sep 25, 2025
2afc119
Integrate audit logging into user removal from team process
lucasdoell Sep 25, 2025
1dabe0a
Integrate audit logging into team ownership transfer process
lucasdoell Sep 25, 2025
4477f38
Integrate audit logging into team avatar update process
lucasdoell Sep 25, 2025
3a673d1
Integrate audit logging into team name update process
lucasdoell Sep 25, 2025
f531283
Integrate audit logging into user account deletion process
lucasdoell Sep 25, 2025
2667a12
Integrate audit logging into user avatar update process
lucasdoell Sep 25, 2025
f81010f
Integrate audit logging into user name update process
lucasdoell Sep 25, 2025
e06e290
Add user subscription webhook constructor for Discord notifications
lucasdoell Sep 25, 2025
09791bf
Add user unsubscription webhook constructor for Discord notifications
lucasdoell Sep 25, 2025
ce0e0b1
Add Discord webhook notifications for user subscription and unsubscri…
lucasdoell Sep 25, 2025
02d7d73
Implement centralized error handling for email sending process
lucasdoell Sep 25, 2025
ddb2d93
Update scrim deletion notification description for consistency
lucasdoell Sep 25, 2025
1503b7b
Refine team invite notification description for clarity
lucasdoell Sep 25, 2025
a270f70
Change Logger to named export from default export
lucasdoell Sep 25, 2025
ec3b90a
Update imports to use named export for Logger across multiple files
lucasdoell Sep 25, 2025
fc9f83f
Refactor default imports to named imports
lucasdoell Sep 25, 2025
d0f6eaf
Replace default Link imports with named imports from the UI component…
lucasdoell Sep 25, 2025
b61b973
Update Link component usage to include Route type for improved type s…
lucasdoell Sep 25, 2025
1d0c40b
Change ScrimLoading from named export to default export
lucasdoell Sep 25, 2025
eae4233
Refactor ScrimDashboardPage layout for improved structure and accessi…
lucasdoell Sep 25, 2025
0aa4f0a
Add guest navigation support in DashboardLayout for unauthenticated u…
lucasdoell Sep 25, 2025
49ee430
Add ProximityPrefetch component for prefetching nearby routes based o…
lucasdoell Sep 25, 2025
47f939d
Add react-scan
lucasdoell Sep 25, 2025
2e330b1
Move Tailwind indicator to devtools folder
lucasdoell Sep 25, 2025
d4e1b35
Add ReactScan component to enable rendering tracking with react-scan
lucasdoell Sep 25, 2025
08f7bd1
Add DevTools component to integrate ReactScan, TailwindIndicator, Rea…
lucasdoell Sep 25, 2025
d124f80
Add DevTools component
lucasdoell Sep 25, 2025
bfcbe2f
Add API route for fetching audit logs with filtering and pagination
lucasdoell Sep 26, 2025
6fe04a2
Move admin settings to impersonate user page
lucasdoell Sep 26, 2025
9263e0d
Improve admin route handling UI for settings page
lucasdoell Sep 26, 2025
bcb40a5
Add use-debounce package for improved performance in React components
lucasdoell Sep 26, 2025
2bcc891
Add audit logs link to settings sidebar and adjust layout for consist…
lucasdoell Sep 26, 2025
1d1a837
Add DownloadAuditLogs component for exporting audit logs as CSV
lucasdoell Sep 26, 2025
08302ad
Add AuditLog component for displaying and filtering audit logs with p…
lucasdoell Sep 26, 2025
c23e8c6
Add audit logs layout and page components with user role validation
lucasdoell Sep 26, 2025
061353d
Add new action types to audit log for user, team, scrim, map, and sys…
lucasdoell Sep 26, 2025
a6ba544
Add audit log entry for suspicious activity detection during scrim cr…
lucasdoell Sep 26, 2025
868e7d1
Add API route for user search with role validation and pagination sup…
lucasdoell Sep 26, 2025
076bf87
Add dashboard and user search localization strings to en.json
lucasdoell Sep 26, 2025
b0fc6cc
Add billing plan filter to user search API route
lucasdoell Sep 26, 2025
fedd7ad
Add dashboard link to admin navigation in settings layout
lucasdoell Sep 26, 2025
2e9ccda
Add UserSearch component for admin with search and filter functionality
lucasdoell Sep 26, 2025
3b465fc
Add StatsCards component to display key admin statistics with localiz…
lucasdoell Sep 26, 2025
c861436
Add AdminDashboard component with user role validation, localization,…
lucasdoell Sep 26, 2025
530fb3d
Add createdAt and updatedAt fields to User model in schema.prisma and…
lucasdoell Sep 26, 2025
bcd1800
Remove teamId column from User model in schema.prisma
lucasdoell Sep 26, 2025
c50b5a7
Update StatsCards component to fetch user statistics from the database
lucasdoell Sep 26, 2025
29440df
Add MonthlyUserChart component to visualize monthly user data with ac…
lucasdoell Sep 26, 2025
24f493c
Add Admin Analytics page and layout with user role validation and mon…
lucasdoell Sep 26, 2025
19be271
Add Analytics link to admin navigation in settings layout
lucasdoell Sep 26, 2025
f691787
Add Scrim Activity chart to Admin Analytics page with data fetching a…
lucasdoell Sep 26, 2025
27a3d38
Add Team Creation and User Roles Distribution charts to Admin Analyti…
lucasdoell Sep 26, 2025
6450137
Add Signup Methods chart to Admin Analytics page with data fetching a…
lucasdoell Sep 26, 2025
073b820
Add Billing Plan Distribution chart to Admin Analytics page with data…
lucasdoell Sep 26, 2025
0aed098
Refactor Admin Analytics page to reorganize charts and update titles …
lucasdoell Sep 26, 2025
0176b2b
Add Scrim Activity and Conversion Rate cards to Admin Analytics page
lucasdoell Sep 26, 2025
b684475
Re-add teamId column to User model
lucasdoell Sep 26, 2025
0d8e061
Update TeamManagerPieChart to use role as key for Cell components
lucasdoell Sep 26, 2025
7efb549
Adjust sidebar width in SettingsLayout
lucasdoell Sep 26, 2025
337f8d0
Remove unnecessary margin from sidebar in SettingsLayout
lucasdoell Sep 27, 2025
d9d1494
Update analytics data fetching to include team owners and rename metr…
lucasdoell Sep 27, 2025
1d7e85d
Add join date range filter to user search functionality
lucasdoell Sep 27, 2025
7e42b82
Update scrim removal logic to handle null teamId case
lucasdoell Sep 27, 2025
fe1885b
Enhance scrim removal logic to account for null teamId values
lucasdoell Sep 27, 2025
9779c89
Fix
lucasdoell Sep 27, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
44 changes: 0 additions & 44 deletions .eslintrc.json

This file was deleted.

2 changes: 1 addition & 1 deletion .github/workflows/format.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ jobs:

strategy:
matrix:
node-version: [18.x]
node-version: [22.x]

steps:
- uses: actions/checkout@v3
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ jobs:

strategy:
matrix:
node-version: [18.x]
node-version: [22.x]

steps:
- uses: actions/checkout@v3
Expand Down
39 changes: 39 additions & 0 deletions .github/workflows/migrate.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
name: Prisma Migrate Deploy
permissions:
contents: read

on:
push:
branches: [main]
workflow_dispatch:

jobs:
migrate:
runs-on: ubuntu-latest

environment:
name: production

strategy:
matrix:
node-version: [22.x]

steps:
- uses: actions/checkout@v3

- uses: pnpm/action-setup@v3
with:
version: 8

- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
cache: pnpm

- run: pnpm install --ignore-scripts

- name: Deploy Prisma migrations
env:
DATABASE_URL: ${{ secrets.DATABASE_URL_PROD }}
run: pnpm dlx prisma migrate deploy
2 changes: 1 addition & 1 deletion .github/workflows/typecheck.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ jobs:

strategy:
matrix:
node-version: [18.x]
node-version: [22.x]

steps:
- uses: actions/checkout@v3
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/vitest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:

strategy:
matrix:
node-version: [18.x]
node-version: [22.x]
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/

steps:
Expand Down
14 changes: 10 additions & 4 deletions components.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,19 @@
"rsc": true,
"tsx": true,
"tailwind": {
"config": "tailwind.config.js",
"config": "",
"css": "src/app/globals.css",
"baseColor": "zinc",
"cssVariables": true
"cssVariables": true,
"prefix": ""
},
"iconLibrary": "lucide",
"aliases": {
"components": "@/components",
"utils": "@/lib/utils"
}
"utils": "@/lib/utils",
"ui": "@/components/ui",
"lib": "@/lib",
"hooks": "@/hooks"
},
"registries": {}
}
181 changes: 181 additions & 0 deletions eslint.config.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,181 @@
// @ts-check
import { dirname } from "node:path";
import { fileURLToPath } from "node:url";

import eslintReact from "@eslint-react/eslint-plugin";
import js from "@eslint/js";
import nextPlugin from "@next/eslint-plugin-next";
import jsxA11y from "eslint-plugin-jsx-a11y";
import react from "eslint-plugin-react";
import reactHooks from "eslint-plugin-react-hooks";
import globals from "globals";
import tseslint from "typescript-eslint";

const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);

const ignores = [
// Generated / heavy
".next/**",
".turbo/**",
"dist/**",
"out/**",
"build/**",
"coverage/**",
"storybook-static/**",
"playwright-report/**",
// Project specifics you had
"**/components/ui/**",
"**/hooks/**",
"eslint.config.mjs",
"next.config.*",
"postcss.config.*",
"next-env.d.ts",
"test/**",
"vitest.config.*",
];

/** Normalize 'off'|'warn'|'error' → 0|1|2; leave arrays/objects as-is. */
function normalizeRuleEntry(value) {
if (typeof value === "string")
return value === "off" ? 0 : value === "warn" ? 1 : 2;
return value;
}

/** Merge Next presets and normalize to satisfy strict RuleEntry typing. */
const nextRulesNormalized = (() => {
const merged = {
...(nextPlugin.configs.recommended?.rules ?? {}),
...(nextPlugin.configs["core-web-vitals"]?.rules ?? {}),
};
// App Router projects: this rule is pages-router-only and can be slow.
merged["@next/next/no-html-link-for-pages"] = "off";
return Object.fromEntries(
Object.entries(merged).map(([k, v]) => [k, normalizeRuleEntry(v)])
);
})();

export default tseslint.config(
// 0) Global ignores
{ ignores },

// 1) Core JS (applies to all files unless later narrowed)
js.configs.recommended,

// 2) React & a11y (flat)
react.configs.flat.recommended,
react.configs.flat["jsx-runtime"],
reactHooks.configs["recommended-latest"],
jsxA11y.flatConfigs.recommended,

// 3) Non-typed TS rules (fast baseline for TS)
...tseslint.configs.recommended,

// 4) Project-specific + Next rules for *all* TS/JS files (no type service yet)
{
files: ["**/*.{ts,tsx,js,jsx}"],
languageOptions: {
globals: { ...globals.browser, ...globals.node },
},
plugins: { "@next/next": nextPlugin },
rules: {
// Next (normalized)
...nextRulesNormalized,

// JS
"no-undef": "off", // TS handles this
"no-console": "error",
"no-constant-binary-expression": "error",
"object-shorthand": "warn",
"prefer-template": "warn",
"no-else-return": "warn",
"func-style": ["error", "declaration", { allowArrowFunctions: true }],

// React
"react/react-in-jsx-scope": "off",
"react/prop-types": "off",
"react/jsx-curly-brace-presence": "warn",
"react/jsx-no-useless-fragment": "warn",
"react/no-array-index-key": "error",
"react/jsx-no-literals": "off",

// Hooks
"react-hooks/exhaustive-deps": "error",
},
settings: {
react: { version: "detect" },
next: { rootDir: ["."] }, // prevents plugin from walking the whole repo
},
},

// 5) Typed TS pass — *only* for your source TS
// (this is where the heavy work happens; keep the glob tight)
...tseslint.configs.recommendedTypeChecked,
eslintReact.configs["recommended-type-checked"],
{
files: ["src/**/*.{ts,tsx}"],
languageOptions: {
parserOptions: {
// Using explicit project avoids projectService scanning everything
project: ["./tsconfig.json"],
tsconfigRootDir: __dirname,
},
},
rules: {
"@typescript-eslint/no-empty-object-type": "off",
"@typescript-eslint/no-misused-promises": [
"error",
{ checksVoidReturn: { arguments: false, attributes: false } },
],
"@typescript-eslint/adjacent-overload-signatures": "error",
"@typescript-eslint/array-type": "error",
"@typescript-eslint/consistent-generic-constructors": "error",
"@typescript-eslint/consistent-type-assertions": [
"error",
{
assertionStyle: "as",
objectLiteralTypeAssertions: "allow-as-parameter",
arrayLiteralTypeAssertions: "allow-as-parameter",
},
],
"@typescript-eslint/consistent-type-definitions": ["error", "type"],
"@typescript-eslint/no-confusing-non-null-assertion": "error",
"no-empty-function": "off",
"@typescript-eslint/no-empty-function": "error",
"@typescript-eslint/no-inferrable-types": "error",
"@typescript-eslint/non-nullable-type-assertion-style": "error",
"@typescript-eslint/prefer-find": "error",
"@typescript-eslint/prefer-for-of": "error",
"@typescript-eslint/prefer-function-type": "error",
"@typescript-eslint/prefer-includes": "error",
"@typescript-eslint/prefer-nullish-coalescing": "error",
"@typescript-eslint/prefer-optional-chain": "error",
"@typescript-eslint/prefer-string-starts-ends-with": "error",
"@typescript-eslint/consistent-type-exports": [
"warn",
{ fixMixedExportsWithInlineTypeSpecifier: true },
],
"@typescript-eslint/consistent-type-imports": [
"warn",
{ fixStyle: "inline-type-imports", prefer: "type-imports" },
],
"@typescript-eslint/no-import-type-side-effects": "warn",
"@eslint-react/hooks-extra/no-direct-set-state-in-use-effect": "off",
"@eslint-react/no-array-index-key": "off",
},
},

// 6) Make tests/config/scripts *not* run the typed pass (keeps runs snappy)
{
files: [
"**/*.{test,spec}.{ts,tsx,js,jsx}",
"**/*.config.{ts,tsx,js,jsx}",
"scripts/**/*.{ts,tsx,js,jsx}",
"e2e/**/*.{ts,tsx,js,jsx}",
],
// Drop back to the non-typed baseline where possible
rules: {
"@typescript-eslint/no-misused-promises": "off",
},
}
);
Loading
Loading