Chess and chess variant rules and operations
npm install chessops

Chess and chess variant rules and operations in TypeScript.
- Read and write FEN
- Vocabulary
- Square
- SquareSet (implemented as bitboards)
- Color
- Role (piece type)
- Piece (Role and Color)
- Board (map of piece positions)
- Castles
- Setup (a not necessarily legal position)
- Position (base class for legal positions, Chess is a concrete implementation)
- Variant rules:
Standard chess, Crazyhouse, King of the Hill, Three-check,
Antichess, Atomic, Horde, Racing Kings
- Move making
- Legal move and drop move generation
- Game end and outcome
- Insufficient material
- Setup validation
- Supports Chess960
- Attacks and rays
using Hyperbola Quintessence (faster to initialize than Magic Bitboards)
- Read and write UCI move notation
- Read and write SAN
- Read and write PGN
- Parser supports asynchronous streaming
- Game tree model
- Transform game tree to augment nodes with arbitrary user data
- Parse comments with evaluations, clocks and shapes
- Transformations: Mirroring and rotating
- Compatibility:
chessground and
scalachess
``javascript
import { Chess } from 'chessops/chess';
import { parseFen } from 'chessops/fen';
const setup = parseFen('r1bqkbnr/ppp2Qpp/2np4/4p3/2B1P3/8/PPPP1PPP/RNB1K1NR b KQkq - 0 4').unwrap();
const pos = Chess.fromSetup(setup).unwrap();
console.assert(pos.isCheckmate());
``
chessops is licensed under the GNU General Public License 3 or any later
version at your choice. See LICENSE.txt for details.