set up eslint and prettier

This commit is contained in:
2026-02-12 20:54:14 +01:00
parent 759e336956
commit 316055652f
60 changed files with 12758 additions and 2724 deletions

View File

@@ -0,0 +1,3 @@
import baseConfig from "@zendegi/eslint-config/base";
export default baseConfig;

View File

@@ -9,7 +9,9 @@
"default": "./src/*.ts"
}
},
"scripts": {},
"scripts": {
"lint": "eslint ."
},
"dependencies": {
"@zendegi/db": "workspace:*",
"@zendegi/env": "workspace:*",
@@ -19,6 +21,8 @@
},
"devDependencies": {
"@zendegi/config": "workspace:*",
"@zendegi/eslint-config": "workspace:*",
"eslint": "^9.17.0",
"typescript": "catalog:"
}
}

View File

@@ -0,0 +1,3 @@
import baseConfig from "@zendegi/eslint-config/base";
export default baseConfig;

View File

@@ -14,6 +14,7 @@
"db:generate": "drizzle-kit generate",
"db:studio": "drizzle-kit studio",
"db:migrate": "drizzle-kit migrate",
"lint": "eslint .",
"db:start": "docker compose up -d",
"db:watch": "docker compose up",
"db:stop": "docker compose stop",
@@ -29,7 +30,9 @@
"devDependencies": {
"@types/pg": "^8.16.0",
"@zendegi/config": "workspace:*",
"@zendegi/eslint-config": "workspace:*",
"drizzle-kit": "^0.31.8",
"eslint": "^9.17.0",
"typescript": "catalog:"
}
}

View File

@@ -1,5 +1,5 @@
import { relations } from "drizzle-orm";
import { pgTable, text, timestamp, boolean, index } from "drizzle-orm/pg-core";
import { boolean, index, pgTable, text, timestamp } from "drizzle-orm/pg-core";
export const user = pgTable("user", {
id: text("id").primaryKey(),
@@ -30,7 +30,7 @@ export const session = pgTable(
.notNull()
.references(() => user.id, { onDelete: "cascade" }),
},
(table) => [index("session_userId_idx").on(table.userId)],
(table) => [index("session_userId_idx").on(table.userId)]
);
export const account = pgTable(
@@ -54,7 +54,7 @@ export const account = pgTable(
.$onUpdate(() => /* @__PURE__ */ new Date())
.notNull(),
},
(table) => [index("account_userId_idx").on(table.userId)],
(table) => [index("account_userId_idx").on(table.userId)]
);
export const verification = pgTable(
@@ -70,7 +70,7 @@ export const verification = pgTable(
.$onUpdate(() => /* @__PURE__ */ new Date())
.notNull(),
},
(table) => [index("verification_identifier_idx").on(table.identifier)],
(table) => [index("verification_identifier_idx").on(table.identifier)]
);
export const userRelations = relations(user, ({ many }) => ({

3
packages/env/eslint.config.mjs vendored Normal file
View File

@@ -0,0 +1,3 @@
import baseConfig from "@zendegi/eslint-config/base";
export default baseConfig;

View File

@@ -7,6 +7,9 @@
"./server": "./src/server.ts",
"./web": "./src/web.ts"
},
"scripts": {
"lint": "eslint ."
},
"dependencies": {
"@t3-oss/env-core": "^0.13.1",
"dotenv": "catalog:",
@@ -15,6 +18,8 @@
"devDependencies": {
"@types/node": "catalog:",
"@zendegi/config": "workspace:*",
"@zendegi/eslint-config": "workspace:*",
"eslint": "^9.17.0",
"typescript": "catalog:"
}
}

View File

@@ -8,7 +8,9 @@ export const env = createEnv({
BETTER_AUTH_SECRET: z.string().min(32),
BETTER_AUTH_URL: z.url(),
CORS_ORIGIN: z.url(),
NODE_ENV: z.enum(["development", "production", "test"]).default("development"),
NODE_ENV: z
.enum(["development", "production", "test"])
.default("development"),
},
runtimeEnv: process.env,
emptyStringAsUndefined: true,

View File

@@ -0,0 +1,3 @@
import { tanstackConfig } from "@tanstack/eslint-config";
export default [...tanstackConfig];

View File

@@ -0,0 +1,20 @@
{
"name": "@zendegi/eslint-config",
"version": "0.0.0",
"private": true,
"type": "module",
"exports": {
"./base": "./base.js",
"./react": "./react.js"
},
"dependencies": {
"@tanstack/eslint-config": "^0.3.4",
"eslint-plugin-jsx-a11y": "^6.10.2",
"eslint-plugin-react": "^7.37.0",
"eslint-plugin-react-hooks": "^5.1.0"
},
"peerDependencies": {
"eslint": "^9.0.0",
"typescript": "^5.0.0"
}
}

38
packages/eslint-config/react.js vendored Normal file
View File

@@ -0,0 +1,38 @@
import jsxA11y from "eslint-plugin-jsx-a11y";
import react from "eslint-plugin-react";
import reactHooks from "eslint-plugin-react-hooks";
import baseConfig from "./base.js";
export default [
...baseConfig,
{
files: ["**/*.tsx", "**/*.jsx"],
...react.configs.flat.recommended,
...react.configs.flat["jsx-runtime"],
settings: {
react: { version: "detect" },
},
rules: {
...react.configs.flat.recommended.rules,
...react.configs.flat["jsx-runtime"].rules,
"react/react-in-jsx-scope": "off",
"react/prop-types": "off",
},
},
{
files: ["**/*.tsx", "**/*.jsx"],
plugins: { "react-hooks": reactHooks },
rules: {
"react-hooks/rules-of-hooks": "error",
"react-hooks/exhaustive-deps": "warn",
},
},
{
files: ["**/*.tsx", "**/*.jsx"],
...jsxA11y.flatConfigs.recommended,
rules: {
...jsxA11y.flatConfigs.recommended.rules,
"jsx-a11y/label-has-associated-control": ["error", { assert: "either" }],
},
},
];