- Add missing tsconfig strictness flags (noUncheckedIndexedAccess, exactOptionalPropertyTypes, noImplicitOverride, noPropertyAccessFromIndexSignature) and fix all resulting type errors - Replace ESLint/Prettier with oxlint 1.48.0 and oxfmt 0.33.0 - Pin all frontend and backend dependencies to exact versions - Pin GitHub Actions to SHA hashes with persist-credentials: false - Fix CI Python version mismatch (3.12 -> 3.14) and ruff target-version - Add vitest 4.0.18 with jsdom environment for frontend testing - Add ty 0.0.17 for Python type checking (non-blocking in CI) - Add actionlint and zizmor CI job for workflow linting and security audit - Add Dependabot config for npm, pip, and github-actions - Update CLAUDE.md and pre-commit hooks to reflect new tooling - Ignore Claude Code sandbox artifacts in gitignore Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
30 lines
900 B
TypeScript
30 lines
900 B
TypeScript
export function formatEvolutionMethod(evo: {
|
|
trigger: string
|
|
minLevel: number | null
|
|
item: string | null
|
|
heldItem: string | null
|
|
condition: string | null
|
|
}): string {
|
|
const parts: string[] = []
|
|
if (evo.trigger === 'level-up' && evo.minLevel) {
|
|
parts.push(`Level ${evo.minLevel}`)
|
|
} else if (evo.trigger === 'level-up') {
|
|
parts.push('Level up')
|
|
} else if (evo.trigger === 'use-item' && evo.item) {
|
|
parts.push(evo.item.replace(/-/g, ' ').replace(/\b\w/g, (c) => c.toUpperCase()))
|
|
} else if (evo.trigger === 'trade') {
|
|
parts.push('Trade')
|
|
} else {
|
|
parts.push(evo.trigger.replace(/-/g, ' ').replace(/\b\w/g, (c) => c.toUpperCase()))
|
|
}
|
|
if (evo.heldItem) {
|
|
parts.push(
|
|
`holding ${evo.heldItem.replace(/-/g, ' ').replace(/\b\w/g, (c) => c.toUpperCase())}`
|
|
)
|
|
}
|
|
if (evo.condition) {
|
|
parts.push(evo.condition)
|
|
}
|
|
return parts.join(', ')
|
|
}
|