From 7b34ad150bc67ec81a03e261be89f706ed1a40df Mon Sep 17 00:00:00 2001 From: KuchtaVR6 Date: Sun, 22 Feb 2026 18:28:39 +0000 Subject: [PATCH] fix: add TypeScript declarations for SCSS modules and images, consolidate CI workflows - Add type declarations for .module.scss files - Add type declarations for image imports (png, jpg, svg, etc.) - Update tsconfig.json to include new type declaration files - Consolidate duplicate lint/typecheck workflows into single Code Quality Check - Remove redundant pr-lint-check.yml and push-lint-check.yml - Unified workflow runs both ESLint and TypeScript checks --- .github/workflows/pr-lint-check.yml | 58 --------------------------- .github/workflows/push-lint-check.yml | 52 ------------------------ .github/workflows/typecheck.yml | 23 +++++++++-- AGENTS.md | 19 +-------- src/types/images.d.ts | 29 ++++++++++++++ src/types/scss.d.ts | 4 ++ tsconfig.json | 2 +- 7 files changed, 54 insertions(+), 133 deletions(-) delete mode 100644 .github/workflows/pr-lint-check.yml delete mode 100644 .github/workflows/push-lint-check.yml create mode 100644 src/types/images.d.ts create mode 100644 src/types/scss.d.ts diff --git a/.github/workflows/pr-lint-check.yml b/.github/workflows/pr-lint-check.yml deleted file mode 100644 index 39b24a5..0000000 --- a/.github/workflows/pr-lint-check.yml +++ /dev/null @@ -1,58 +0,0 @@ -name: PR Lint Check - -on: - pull_request: - branches: - - main - - master - - develop - -jobs: - lint: - name: Run ESLint - runs-on: ubuntu-latest - - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: '18' - - - name: Setup pnpm - uses: pnpm/action-setup@v4 - with: - version: 10 - - - name: Get pnpm store directory - shell: bash - run: | - echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV - - - name: Setup pnpm cache - uses: actions/cache@v4 - with: - path: ${{ env.STORE_PATH }} - key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} - restore-keys: | - ${{ runner.os }}-pnpm-store- - - - name: Install dependencies - run: pnpm install --frozen-lockfile - - - name: Run ESLint - run: pnpm run lint - - - name: Comment PR on failure - if: failure() - uses: actions/github-script@v7 - with: - script: | - github.rest.issues.createComment({ - issue_number: context.issue.number, - owner: context.repo.owner, - repo: context.repo.repo, - body: '❌ ESLint check failed. Please fix the linting errors before merging.' - }) diff --git a/.github/workflows/push-lint-check.yml b/.github/workflows/push-lint-check.yml deleted file mode 100644 index 2242160..0000000 --- a/.github/workflows/push-lint-check.yml +++ /dev/null @@ -1,52 +0,0 @@ -name: Push Lint Check - -on: - push: - branches: - - main - - master - - develop - - '**' - -jobs: - lint: - name: Run ESLint on Push - runs-on: ubuntu-latest - - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: '18' - - - name: Setup pnpm - uses: pnpm/action-setup@v4 - with: - version: 10 - - - name: Get pnpm store directory - shell: bash - run: | - echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV - - - name: Setup pnpm cache - uses: actions/cache@v4 - with: - path: ${{ env.STORE_PATH }} - key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} - restore-keys: | - ${{ runner.os }}-pnpm-store- - - - name: Install dependencies - run: pnpm install --frozen-lockfile - - - name: Run ESLint - run: pnpm run lint - - - name: Notify on failure - if: failure() - run: | - echo "::error::ESLint check failed. Please run 'pnpm run lintfix' locally to fix issues." diff --git a/.github/workflows/typecheck.yml b/.github/workflows/typecheck.yml index e6a8c94..255bd68 100644 --- a/.github/workflows/typecheck.yml +++ b/.github/workflows/typecheck.yml @@ -1,4 +1,4 @@ -name: TypeScript Type Check +name: Code Quality Check on: push: @@ -14,8 +14,8 @@ on: - develop jobs: - typecheck: - name: TypeScript Type Check + quality-check: + name: Lint & Type Check runs-on: ubuntu-latest steps: @@ -48,10 +48,25 @@ jobs: - name: Install dependencies run: pnpm install --frozen-lockfile + - name: Run ESLint + run: pnpm run lint + - name: Run TypeScript type check run: pnpm run typecheck + - name: Comment PR on failure + if: failure() && github.event_name == 'pull_request' + uses: actions/github-script@v7 + with: + script: | + github.rest.issues.createComment({ + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + body: '❌ Code quality check failed. Please run `./windsurf-commands.sh lintfix` and `./windsurf-commands.sh typecheck` locally to fix issues.' + }) + - name: Notify on failure if: failure() run: | - echo "::error::TypeScript type check failed. Please fix type errors before merging." + echo "::error::Code quality check failed. Please fix linting and type errors before merging." diff --git a/AGENTS.md b/AGENTS.md index d76dc36..345e87d 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -55,17 +55,6 @@ ## Development Workflow -### Commands -- `pnpm dev` - Start dev server (port 4000) -- `pnpm build` - Production build -- `pnpm start` - Start production server -- `pnpm lint` - Check for linting issues -- `pnpm lintfix` - Auto-fix linting issues -- `pnpm typecheck` - Run TypeScript type checking -- `pnpm security:audit` - Run security vulnerability scan -- `pnpm security:check` - Generate security report (JSON) -- `pnpm security:outdated` - Check for outdated dependencies - ### Windsurf Commands Helper Script The project includes `windsurf-commands.sh` for common development tasks: @@ -83,13 +72,7 @@ The project includes `windsurf-commands.sh` for common development tasks: - Script provides consistent interface for development commands - All commands use `pnpm` internally - Includes error handling and user-friendly output with emojis -- Can be used interchangeably with direct `pnpm run` commands - -### Before Committing -1. Run `pnpm run lintfix` and `pnpm run lint` (or use `./windsurf-commands.sh lintfix` and `./windsurf-commands.sh lint`) -2. Run `pnpm run typecheck` (or `./windsurf-commands.sh typecheck`) to ensure TypeScript compiles -3. Run `pnpm run security:audit` (or `./windsurf-commands.sh security:audit`) to check for vulnerabilities -4. Test changes in browser +- Avoid using `pnpm run` commands directly ## File Naming - **Components**: PascalCase (`MainPage.tsx`) diff --git a/src/types/images.d.ts b/src/types/images.d.ts new file mode 100644 index 0000000..2a586ac --- /dev/null +++ b/src/types/images.d.ts @@ -0,0 +1,29 @@ +declare module "*.png" { + const value: string; + export default value; +} + +declare module "*.jpg" { + const value: string; + export default value; +} + +declare module "*.jpeg" { + const value: string; + export default value; +} + +declare module "*.svg" { + const value: string; + export default value; +} + +declare module "*.gif" { + const value: string; + export default value; +} + +declare module "*.webp" { + const value: string; + export default value; +} diff --git a/src/types/scss.d.ts b/src/types/scss.d.ts new file mode 100644 index 0000000..c4bd634 --- /dev/null +++ b/src/types/scss.d.ts @@ -0,0 +1,4 @@ +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} diff --git a/tsconfig.json b/tsconfig.json index e06a445..6fbed95 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -23,6 +23,6 @@ "@/*": ["./*"] } }, - "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts", "src/types/**/*.d.ts"], "exclude": ["node_modules"] }