diff --git a/.codespellignore b/.codespellignore new file mode 100644 index 0000000..e69de29 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..2d87374 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,74 @@ +# Run formatting on all PRs + +name: CI + +on: + push: + branches: ["main"] + pull_request: + workflow_dispatch: # Allows triggering the workflow manually in GitHub UI + +# If another push to the same PR or branch happens while this workflow is still running, +# cancel the earlier run in favor of the next run. +# +# There's no point in testing an outdated version of the code. GitHub only allows +# a limited number of job runners to be active at the same time, so it's better to cancel +# pointless jobs early so that more useful jobs can run sooner. +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + format: + name: Check formatting + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: pnpm/action-setup@v4 + with: + version: 10.5.1+sha512.c424c076bd25c1a5b188c37bb1ca56cc1e136fbf530d98bcb3289982a08fd25527b8c9c4ec113be5e3393c39af04521dd647bcf1d0801eaf8ac6a7b14da313af + - uses: actions/setup-node@v4 + with: + node-version: "18.x" + cache: "pnpm" + - name: Install dependencies + run: pnpm install + - name: Check formatting + run: pnpm format:check + + lint: + name: Check linting + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: pnpm/action-setup@v4 + with: + version: 10.5.1+sha512.c424c076bd25c1a5b188c37bb1ca56cc1e136fbf530d98bcb3289982a08fd25527b8c9c4ec113be5e3393c39af04521dd647bcf1d0801eaf8ac6a7b14da313af + - uses: actions/setup-node@v4 + with: + node-version: "18.x" + cache: "pnpm" + - name: Install dependencies + run: pnpm install + - name: Check linting + run: pnpm lint + + readme-spelling: + name: Check README spelling + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: codespell-project/actions-codespell@v2 + with: + ignore_words_file: .codespellignore + path: README.md + + check-spelling: + name: Check code spelling + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: codespell-project/actions-codespell@v2 + with: + ignore_words_file: .codespellignore + path: src diff --git a/eslint.config.js b/eslint.config.js index 79a552e..af6a2b5 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -19,6 +19,11 @@ export default tseslint.config( }, rules: { ...reactHooks.configs.recommended.rules, + "@typescript-eslint/no-explicit-any": 0, + "@typescript-eslint/no-unused-vars": [ + "warn", + { args: "none", argsIgnorePattern: "^_", varsIgnorePattern: "^_" }, + ], "react-refresh/only-export-components": [ "warn", { allowConstantExport: true }, diff --git a/package.json b/package.json index aaf2e3a..a65eec3 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "build": "tsc -b && vite build", "lint": "eslint .", "format": "prettier --write .", + "format:check": "prettier --check .", "preview": "vite preview" }, "dependencies": {