From df8d1659c7fab8ee75cffe313b5b910bb6988bb9 Mon Sep 17 00:00:00 2001 From: Valerio Ageno Date: Sat, 27 Apr 2024 10:40:14 +0200 Subject: [PATCH] feat: add lint and format scripts --- .gitignore | 5 ++ .prettierignore | 2 + .prettierrc | 5 ++ eslintrc.cjs | 107 ++++++++++++++++++++++++++ package.json | 25 ++++++ packages/vite-fs-router/README.md | 2 + packages/vite-fs-router/package.json | 13 ++++ packages/vite-fs-router/src/index.ts | 0 packages/vite-fs-router/tsconfig.json | 9 +++ tsconfig.json | 27 +++++++ turbo.json | 6 +- 11 files changed, 200 insertions(+), 1 deletion(-) create mode 100644 .gitignore create mode 100644 .prettierignore create mode 100644 .prettierrc create mode 100644 eslintrc.cjs create mode 100644 package.json create mode 100644 packages/vite-fs-router/package.json create mode 100644 packages/vite-fs-router/src/index.ts create mode 100644 packages/vite-fs-router/tsconfig.json create mode 100644 tsconfig.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..b8e88be6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +node_modules/ +dist/ +.turbo/ + +pnpm-lock.yaml diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 00000000..9809a241 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,2 @@ +dist/ +pnpm-lock.yaml diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 00000000..e3b414c7 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,5 @@ +{ + "semi": false, + "singleQuote": true, + "trailingComma": "all" +} diff --git a/eslintrc.cjs b/eslintrc.cjs new file mode 100644 index 00000000..8d3f47a3 --- /dev/null +++ b/eslintrc.cjs @@ -0,0 +1,107 @@ +// @ts-check + +/** @type {import('eslint').Linter.Config} */ +const config = { + root: true, + reportUnusedDisableDirectives: true, + ignorePatterns: ["**/build", "**/dist"], + parser: "@typescript-eslint/parser", + plugins: ["@typescript-eslint", "import"], + extends: [ + "eslint:recommended", + "plugin:@typescript-eslint/recommended", + "plugin:@typescript-eslint/stylistic", + "plugin:import/recommended", + "plugin:import/typescript", + "prettier", + ], + env: { + browser: true, + es2020: true, + }, + parserOptions: { + tsconfigRootDir: __dirname, + project: true, + sourceType: "module", + ecmaVersion: 2020, + }, + settings: { + "import/parsers": { + "@typescript-eslint/parser": [".ts", ".tsx"], + }, + "import/resolver": { + typescript: true, + }, + react: { + version: "detect", + }, + }, + rules: { + "@typescript-eslint/array-type": "error", + "@typescript-eslint/ban-types": "error", + "@typescript-eslint/ban-ts-comment": "error", + "@typescript-eslint/consistent-type-definitions": "error", + "@typescript-eslint/consistent-type-imports": [ + "error", + { prefer: "type-imports" }, + ], + "@typescript-eslint/explicit-module-boundary-types": "error", + "@typescript-eslint/method-signature-style": ["error", "property"], + "@typescript-eslint/naming-convention": [ + "error", + { + selector: "typeParameter", + format: ["PascalCase"], + leadingUnderscore: "forbid", + trailingUnderscore: "forbid", + custom: { + regex: "^(T|T[A-Z][A-Za-z]+)$", + match: true, + }, + }, + ], + "@typescript-eslint/no-empty-function": "error", + "@typescript-eslint/no-empty-interface": "error", + "@typescript-eslint/no-explicit-any": "error", + "@typescript-eslint/no-non-null-assertion": "error", + "@typescript-eslint/no-unnecessary-condition": "error", + "@typescript-eslint/no-unnecessary-type-assertion": "error", + "@typescript-eslint/no-unused-vars": "error", + "@typescript-eslint/no-inferrable-types": [ + "error", + { ignoreParameters: true }, + ], + "import/default": "error", + "import/export": "error", + "import/namespace": "error", + "import/newline-after-import": "error", + "import/no-cycle": "error", + "import/no-duplicates": "off", + "import/no-named-as-default-member": "error", + "import/no-unused-modules": "error", + "import/order": [ + "error", + { + groups: [ + "builtin", + "external", + "internal", + "parent", + "sibling", + "index", + "object", + "type", + ], + }, + ], + "no-case-declarations": "error", + "no-empty": "error", + "no-prototype-builtins": "error", + "no-redeclare": "error", + "no-shadow": "error", + "no-undef": "error", + "sort-imports": "error", + }, +}; + +module.exports = config; diff --git a/package.json b/package.json new file mode 100644 index 00000000..5e44c06e --- /dev/null +++ b/package.json @@ -0,0 +1,25 @@ +{ + "name": "tuono", + "version": "0.1.0", + "description": "", + "main": "index.js", + "packageManager": "pnpm@8.12.1", + "scripts": { + "lint": "turbo lint", + "format": "turbo format" + }, + "keywords": [], + "author": "", + "license": "MIT", + "devDependencies": { + "@typescript-eslint/eslint-plugin": "^6.20.0", + "@typescript-eslint/parser": "^6.20.0", + "eslint": "^8.56.0", + "eslint-config-prettier": "^9.1.0", + "eslint-import-resolver-typescript": "^3.6.1", + "eslint-plugin-import": "^2.29.1", + "eslint-plugin-react": "^7.33.2", + "eslint-plugin-react-hooks": "^4.6.0", + "prettier": "^3.2.4" + } +} diff --git a/packages/vite-fs-router/README.md b/packages/vite-fs-router/README.md index 6c1c9de8..a6c9a95e 100644 --- a/packages/vite-fs-router/README.md +++ b/packages/vite-fs-router/README.md @@ -1,5 +1,7 @@ # [Tuono] Vite FS Router +> Strongly inspired by [@tanstack/router/router-vite-plugin](https://github.com/TanStack/router/tree/main/packages/router-vite-plugin) + This is the [vite](https://vitejs.dev/) plugin that automatically handles the file system routing. diff --git a/packages/vite-fs-router/package.json b/packages/vite-fs-router/package.json new file mode 100644 index 00000000..d1324cc6 --- /dev/null +++ b/packages/vite-fs-router/package.json @@ -0,0 +1,13 @@ +{ + "name": "vite-fs-router", + "version": "0.1.0", + "description": "", + "main": "src/index.js", + "scripts": { + "lint": "eslint --ext .ts,.tsx ./src -c ../../eslintrc.cjs", + "format": "prettier --ignore-unknown '**/*'" + }, + "keywords": [], + "author": "Valerio Ageno", + "license": "MIT" +} diff --git a/packages/vite-fs-router/src/index.ts b/packages/vite-fs-router/src/index.ts new file mode 100644 index 00000000..e69de29b diff --git a/packages/vite-fs-router/tsconfig.json b/packages/vite-fs-router/tsconfig.json new file mode 100644 index 00000000..8a280fea --- /dev/null +++ b/packages/vite-fs-router/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "include": ["src", "vite.config.ts", "tests"], + "exclude": ["tests/test-files/**", "tests/snapshots/**"], + "compilerOptions": { + "jsx": "react", + }, +} + diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 00000000..caebdc5e --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,27 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "compilerOptions": { + "allowJs": true, + "allowSyntheticDefaultImports": true, + "allowUnreachableCode": false, + "allowUnusedLabels": false, + "checkJs": true, + "declaration": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "isolatedModules": true, + "lib": ["DOM", "DOM.Iterable", "ES2022"], + "module": "ES2022", + "moduleResolution": "Bundler", + "noEmit": true, + "noImplicitReturns": true, + "noUncheckedIndexedAccess": true, + "noUnusedLocals": false, + "noUnusedParameters": false, + "resolveJsonModule": true, + "skipLibCheck": true, + "strict": true, + "target": "ES2020", + }, + "include": [".eslintrc.cjs", "prettier.config.js"], +} diff --git a/turbo.json b/turbo.json index 17e6cb8a..b2f1fbf4 100644 --- a/turbo.json +++ b/turbo.json @@ -1,3 +1,7 @@ { - "$schema": "https://turbo.build/schema.json" + "$schema": "https://turbo.build/schema.json", + "pipeline": { + "lint": {}, + "format": {} + } }