pgn-manager
v1.0.1
Published
Libraray built on top of chess.js and pgn-parser to load and process PGN files in typescript.
Downloads
123
Maintainers
Readme
PGN Manager 📦♟️
A powerful TypeScript/JavaScript library for managing chess PGN (Portable Game Notation) files with support for variations and game traversal.
Features ✨
- Parse PGN strings into manageable objects
- Navigate through main lines and variations
- Access FEN positions for any move
- Handle game headers
- Traverse moves forward and backward
- Full TypeScript support
Installation 🚀
npm install pgn-manager
Usage 💻
import PGNManager from 'pgn-manager';
// Initialize with a PGN string
const pgn = `1. e4 e5 2. Nf3 Nc6 (2... d6 3. d4) 3. Bb5 *`;
const manager = new PGNManager(pgn);
// Get the first move
const firstMove = manager.getFirstMove();
// Navigate through moves
const nextMove = manager.nextMove(firstMove);
const prevMove = manager.previousMove(nextMove);
// Get FEN position for a move
const fen = manager.getMoveFen(firstMove);
// Access game headers
const headers = manager.headers;
API Reference 📚
Constructor
new PGNManager(pgn: string)
: Creates a new PGN manager instance
Properties
pgn
: Get the raw PGN stringparsedPGN
: Get the parsed PGN objectheaders
: Get game headers array
Methods
getMove(moveNumber: number)
: Get move by numbergetMoveNumber(move: Move)
: Get number for a movenextMove(move: Move)
: Get next move in the sequencepreviousMove(move: Move)
: Get previous movehasNextMove(move: Move)
: Check if move has a next movegetFirstMove()
: Get the first move of the gamegetLastMove()
: Get the last move of the gamegetMoveFen(move: Move)
: Get FEN position after movegetParentRav(move: Move)
: Get parent variation for move
Examples 🎯
Traversing Main Line
const manager = new PGNManager("1. e4 e5 2. Nf3 Nc6 3. Bb5 *");
let move = manager.getFirstMove();
while (manager.hasNextMove(move)) {
console.log(move.move);
move = manager.nextMove(move);
}
Working with Variations
const manager = new PGNManager("1. e4 e5 2. Nf3 Nc6 (2... d6 3. d4) 3. Bb5 *");
const move = manager.getMove(2); // Get second move
const variation = manager.getParentRav(move);
if (variation) {
console.log("Move is part of a variation!");
}
Contributing 🤝
Contributions are welcome! Feel free to submit issues and pull requests.
License 📄
MIT License - feel free to use this in your projects!