diff --git a/.github/test-filters.yml b/.github/test-filters.yml index fc52e85082c..796432679e1 100644 --- a/.github/test-filters.yml +++ b/.github/test-filters.yml @@ -3,6 +3,7 @@ all: - "src/**/!(*.{md,py,sh,gitkeep,gitignore})" - "test/**/!(*.{md,py,sh,gitkeep,gitignore})" - "public/**/!(*.{md,py,sh,gitkeep,gitignore})" + - "scripts/**/!(*.{md,py,sh,gitkeep,gitignore})" # Workflows that can impact tests - ".github/workflows/test*.yml" - ".github/test-filters.yml" @@ -11,5 +12,6 @@ all: - ".nvrmc" # Updates to node version can break tests - "vite*" # vite.config.ts, vite.vitest.config.ts, vitest.workspace.ts - "tsconfig*.json" # tsconfig.json tweaking can impact compilation + - "jsconfig*.json" # jsconfig.json tweaking can impact compilation - "global.d.ts" - ".env*" \ No newline at end of file diff --git a/.github/workflows/github-pages.yml b/.github/workflows/github-pages.yml index 1aa04d67007..1588a15afeb 100644 --- a/.github/workflows/github-pages.yml +++ b/.github/workflows/github-pages.yml @@ -62,15 +62,8 @@ jobs: working-directory: ${{env.api-dir}} run: | cd pokerogue_docs - pnpm typedoc pnpm exec typedoc --out /tmp/docs --githubPages false --entryPoints ./src/ - - name: Typecheck Node.js Scripts - working-directory: ${{env.api-dir}} - run: | - cd pokerogue_docs - pnpm typecheck:scripts - - name: Commit & Push docs if: github.event_name == 'push' run: | diff --git a/.github/workflows/linting.yml b/.github/workflows/linting.yml index 82f5abd23a1..87859879710 100644 --- a/.github/workflows/linting.yml +++ b/.github/workflows/linting.yml @@ -14,34 +14,96 @@ on: jobs: run-linters: - name: Run linters + name: Run all linters runs-on: ubuntu-latest steps: - name: Check out Git repository uses: actions/checkout@v4 with: - submodules: 'recursive' + submodules: "recursive" - name: Install pnpm uses: pnpm/action-setup@v4 with: version: 10 - - name: Set up Node.js + - name: Set up Node uses: actions/setup-node@v4 with: - node-version-file: '.nvmrc' - cache: 'pnpm' + node-version-file: ".nvmrc" + cache: "pnpm" - - name: Install Node.js dependencies + - name: Install Node modules run: pnpm i - - name: Lint with Biome + # Lint files with Biome-Lint - https://biomejs.dev/linter/ + - name: Run Biome-Lint run: pnpm biome-ci + id: biome_lint + continue-on-error: true - - name: Check dependencies with depcruise + # Validate dependencies with dependency-cruiser - https://github.com/sverweij/dependency-cruiser + - name: Run Dependency-Cruise run: pnpm depcruise - - - name: Lint with ls-lint - run: pnpm ls-lint \ No newline at end of file + id: depcruise + continue-on-error: true + + # Validate types with tsc - https://www.typescriptlang.org/docs/handbook/compiler-options.html#using-the-cli + - name: Run Typecheck + run: pnpm typecheck + id: typecheck + continue-on-error: true + + # The exact same thing + - name: Run Typecheck (scripts) + run: pnpm typecheck:scripts + id: typecheck-scripts + continue-on-error: true + + - name: Evaluate for Errors + env: + BIOME_LINT_OUTCOME: ${{ steps.biome_lint.outcome }} + ESLINT_OUTCOME: ${{ steps.eslint.outcome }} + DEPCRUISE_OUTCOME: ${{ steps.depcruise.outcome }} + TYPECHECK_OUTCOME: ${{ steps.typecheck.outcome }} + TYPECHECK_SCRIPTS_OUTCOME: ${{ steps.typecheck-scripts.outcome }} + run: | + # Check for Errors + + # Make text red. + red () { + printf "\e[31m%s\e[0m" "$1" + } + + # Make text green. + green () { + printf "\e[32m%s\e[0m" "$1" + } + + print_result() { + local name=$1 + local outcome=$2 + if [ "$outcome" == "success" ]; then + printf "$(green "✅ $name: $outcome")\n" + else + printf "$(red "❌ $name: $outcome")\n" + fi + } + + print_result "Biome" "$BIOME_LINT_OUTCOME" + print_result "ESLint" "$ESLINT_OUTCOME" + print_result "Depcruise" "$DEPCRUISE_OUTCOME" + print_result "Typecheck" "$TYPECHECK_OUTCOME" + print_result "Typecheck scripts" "$TYPECHECK_SCRIPTS_OUTCOME" + + if [[ "$BIOME_LINT_OUTCOME" != "success" || \ + "$ESLINT_OUTCOME" != "success" || \ + "$DEPCRUISE_OUTCOME" != "success" || \ + "$TYPECHECK_OUTCOME" != "success" || \ + "$TYPECHECK_SCRIPTS_OUTCOME" != "success" ]]; then + printf "$(red "❌ One or more checks failed!")\n" >&2 + exit 1 + fi + + printf "$(green "✅ All checks passed!")\n" \ No newline at end of file diff --git a/src/data/balance/egg-moves.ts b/src/data/balance/egg-moves.ts index c5d2397ca1b..6831f035515 100644 --- a/src/data/balance/egg-moves.ts +++ b/src/data/balance/egg-moves.ts @@ -18,7 +18,7 @@ export const speciesEggMoves = { [SpeciesId.SPEAROW]: [ MoveId.FLOATY_FALL, MoveId.EXTREME_SPEED, MoveId.KNOCK_OFF, MoveId.TRIPLE_ARROWS ], [SpeciesId.EKANS]: [ MoveId.NOXIOUS_TORQUE, MoveId.DRAGON_DANCE, MoveId.SLACK_OFF, MoveId.SHED_TAIL ], [SpeciesId.SANDSHREW]: [ MoveId.HIGH_HORSEPOWER, MoveId.DIRE_CLAW, MoveId.SHORE_UP, MoveId.MIGHTY_CLEAVE ], - [SpeciesId.NIDORAN_F]: [ MoveId.CALM_MIND, MoveId.MOONLIGHT, MoveId.MALIGNANT_CHAIN, MoveId.SANDSEAR_STORM ], + [SpeciesId.NIDORAN_F]: [ MoveId.BANEFUL_BUNKER, MoveId.MOONLIGHT, MoveId.BARB_BARRAGE, MoveId.THOUSAND_WAVES ], [SpeciesId.NIDORAN_M]: [ MoveId.DRAGON_DANCE, MoveId.MOUNTAIN_GALE, MoveId.NOXIOUS_TORQUE, MoveId.PRECIPICE_BLADES ], [SpeciesId.VULPIX]: [ MoveId.MOONBLAST, MoveId.INFERNAL_PARADE, MoveId.MORNING_SUN, MoveId.TAIL_GLOW ], [SpeciesId.ZUBAT]: [ MoveId.FLOATY_FALL, MoveId.DIRE_CLAW, MoveId.SWORDS_DANCE, MoveId.COLLISION_COURSE ], @@ -296,7 +296,7 @@ export const speciesEggMoves = { [SpeciesId.ARCHEN]: [ MoveId.ROOST, MoveId.EARTHQUAKE, MoveId.FLOATY_FALL, MoveId.MIGHTY_CLEAVE ], [SpeciesId.TRUBBISH]: [ MoveId.COIL, MoveId.RECOVER, MoveId.DIRE_CLAW, MoveId.GIGATON_HAMMER ], [SpeciesId.ZORUA]: [ MoveId.MALIGNANT_CHAIN, MoveId.MOONBLAST, MoveId.SECRET_SWORD, MoveId.FIERY_WRATH ], - [SpeciesId.MINCCINO]: [ MoveId.ICICLE_SPEAR, MoveId.TIDY_UP, MoveId.KNOCK_OFF, MoveId.POPULATION_BOMB ], + [SpeciesId.MINCCINO]: [ MoveId.ICICLE_SPEAR, MoveId.TIDY_UP, MoveId.LOW_KICK, MoveId.POPULATION_BOMB ], [SpeciesId.GOTHITA]: [ MoveId.RECOVER, MoveId.MOONBLAST, MoveId.AURA_SPHERE, MoveId.LUMINA_CRASH ], [SpeciesId.SOLOSIS]: [ MoveId.MIST_BALL, MoveId.SPEED_SWAP, MoveId.FLAMETHROWER, MoveId.LIGHT_OF_RUIN ], [SpeciesId.DUCKLETT]: [ MoveId.SPLISHY_SPLASH, MoveId.SANDSEAR_STORM, MoveId.WILDBOLT_STORM, MoveId.QUIVER_DANCE ], @@ -313,7 +313,7 @@ export const speciesEggMoves = { [SpeciesId.TYNAMO]: [ MoveId.SCALD, MoveId.STRENGTH_SAP, MoveId.FIRE_LASH, MoveId.AURA_WHEEL ], [SpeciesId.ELGYEM]: [ MoveId.THUNDERCLAP, MoveId.BADDY_BAD, MoveId.AURA_SPHERE, MoveId.PHOTON_GEYSER ], [SpeciesId.LITWICK]: [ MoveId.GIGA_DRAIN, MoveId.EARTH_POWER, MoveId.MOONBLAST, MoveId.TORCH_SONG ], - [SpeciesId.AXEW]: [ MoveId.STONE_AXE, MoveId.DIRE_CLAW, MoveId.BITTER_BLADE, MoveId.GLAIVE_RUSH ], + [SpeciesId.AXEW]: [ MoveId.STONE_AXE, MoveId.DIRE_CLAW, MoveId.RAGING_FURY, MoveId.BITTER_BLADE ], [SpeciesId.CUBCHOO]: [ MoveId.MOUNTAIN_GALE, MoveId.AQUA_STEP, MoveId.ICE_SHARD, MoveId.COLLISION_COURSE ], [SpeciesId.CRYOGONAL]: [ MoveId.FREEZING_GLARE, MoveId.AURORA_VEIL, MoveId.NASTY_PLOT, MoveId.ORIGIN_PULSE ], [SpeciesId.SHELMET]: [ MoveId.POWER_GEM, MoveId.NASTY_PLOT, MoveId.EARTH_POWER, MoveId.STEAM_ERUPTION ], @@ -451,7 +451,7 @@ export const speciesEggMoves = { [SpeciesId.ROOKIDEE]: [ MoveId.ROOST, MoveId.BODY_PRESS, MoveId.KINGS_SHIELD, MoveId.BEHEMOTH_BASH ], [SpeciesId.BLIPBUG]: [ MoveId.HEAL_ORDER, MoveId.LUSTER_PURGE, MoveId.SLEEP_POWDER, MoveId.TAIL_GLOW ], [SpeciesId.NICKIT]: [ MoveId.BADDY_BAD, MoveId.MYSTICAL_FIRE, MoveId.SPARKLY_SWIRL, MoveId.MAKE_IT_RAIN ], - [SpeciesId.GOSSIFLEUR]: [ MoveId.PARTING_SHOT, MoveId.STRENGTH_SAP, MoveId.SAPPY_SEED, MoveId.SEED_FLARE ], + [SpeciesId.GOSSIFLEUR]: [ MoveId.BATON_PASS, MoveId.TAILWIND, MoveId.SAPPY_SEED, MoveId.SPORE ], [SpeciesId.WOOLOO]: [ MoveId.NUZZLE, MoveId.MILK_DRINK, MoveId.BODY_PRESS, MoveId.MULTI_ATTACK ], [SpeciesId.CHEWTLE]: [ MoveId.ICE_FANG, MoveId.PSYCHIC_FANGS, MoveId.SHELL_SMASH, MoveId.MIGHTY_CLEAVE ], [SpeciesId.YAMPER]: [ MoveId.ICE_FANG, MoveId.SWORDS_DANCE, MoveId.THUNDER_FANG, MoveId.BOLT_STRIKE ], @@ -517,7 +517,7 @@ export const speciesEggMoves = { [SpeciesId.TAROUNTULA]: [ MoveId.STONE_AXE, MoveId.LEECH_LIFE, MoveId.FAKE_OUT, MoveId.SPORE ], [SpeciesId.NYMBLE]: [ MoveId.KNOCK_OFF, MoveId.FELL_STINGER, MoveId.ATTACK_ORDER, MoveId.WICKED_BLOW ], [SpeciesId.PAWMI]: [ MoveId.DRAIN_PUNCH, MoveId.METEOR_MASH, MoveId.JET_PUNCH, MoveId.PLASMA_FISTS ], - [SpeciesId.TANDEMAUS]: [ MoveId.BATON_PASS, MoveId.COVET, MoveId.SIZZLY_SLIDE, MoveId.REVIVAL_BLESSING ], + [SpeciesId.TANDEMAUS]: [ MoveId.BATON_PASS, MoveId.FAKE_OUT, MoveId.POWER_UP_PUNCH, MoveId.REVIVAL_BLESSING ], [SpeciesId.FIDOUGH]: [ MoveId.SOFT_BOILED, MoveId.HIGH_HORSEPOWER, MoveId.SIZZLY_SLIDE, MoveId.TIDY_UP ], [SpeciesId.SMOLIV]: [ MoveId.STRENGTH_SAP, MoveId.EARTH_POWER, MoveId.CALM_MIND, MoveId.BOOMBURST ], [SpeciesId.SQUAWKABILLY]: [ MoveId.PARTING_SHOT, MoveId.EARTHQUAKE, MoveId.FLARE_BLITZ, MoveId.EXTREME_SPEED ],