chessops
chessops

Chess and chess variant rules and operations in TypeScript.
Documentation
View TypeDoc
Features
- 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
Example
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());
License
chessops is licensed under the GNU General Public License 3 or any later
version at your choice. See LICENSE.txt for details.