@connectorvol/chessops 0.15.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.txt +674 -0
- package/README.md +61 -0
- package/dist/cjs/attacks.js +152 -0
- package/dist/cjs/attacks.js.map +1 -0
- package/dist/cjs/board.js +143 -0
- package/dist/cjs/board.js.map +1 -0
- package/dist/cjs/chess.js +638 -0
- package/dist/cjs/chess.js.map +1 -0
- package/dist/cjs/compat.js +89 -0
- package/dist/cjs/compat.js.map +1 -0
- package/dist/cjs/debug.js +103 -0
- package/dist/cjs/debug.js.map +1 -0
- package/dist/cjs/fen.js +325 -0
- package/dist/cjs/fen.js.map +1 -0
- package/dist/cjs/index.js +94 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/pgn.js +796 -0
- package/dist/cjs/pgn.js.map +1 -0
- package/dist/cjs/san.js +174 -0
- package/dist/cjs/san.js.map +1 -0
- package/dist/cjs/setup.js +167 -0
- package/dist/cjs/setup.js.map +1 -0
- package/dist/cjs/squareSet.js +206 -0
- package/dist/cjs/squareSet.js.map +1 -0
- package/dist/cjs/transform.js +57 -0
- package/dist/cjs/transform.js.map +1 -0
- package/dist/cjs/types.js +24 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/cjs/util.js +104 -0
- package/dist/cjs/util.js.map +1 -0
- package/dist/cjs/variant.js +833 -0
- package/dist/cjs/variant.js.map +1 -0
- package/dist/esm/attacks.js +140 -0
- package/dist/esm/attacks.js.map +1 -0
- package/dist/esm/board.js +138 -0
- package/dist/esm/board.js.map +1 -0
- package/dist/esm/chess.js +624 -0
- package/dist/esm/chess.js.map +1 -0
- package/dist/esm/compat.js +81 -0
- package/dist/esm/compat.js.map +1 -0
- package/dist/esm/debug.js +94 -0
- package/dist/esm/debug.js.map +1 -0
- package/dist/esm/fen.js +308 -0
- package/dist/esm/fen.js.map +1 -0
- package/dist/esm/index.js +15 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/pgn.js +769 -0
- package/dist/esm/pgn.js.map +1 -0
- package/dist/esm/san.js +167 -0
- package/dist/esm/san.js.map +1 -0
- package/dist/esm/setup.js +157 -0
- package/dist/esm/setup.js.map +1 -0
- package/dist/esm/squareSet.js +202 -0
- package/dist/esm/squareSet.js.map +1 -0
- package/dist/esm/transform.js +48 -0
- package/dist/esm/transform.js.map +1 -0
- package/dist/esm/types.js +19 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/esm/util.js +87 -0
- package/dist/esm/util.js.map +1 -0
- package/dist/esm/variant.js +812 -0
- package/dist/esm/variant.js.map +1 -0
- package/dist/types/attacks.d.ts +58 -0
- package/dist/types/board.d.ts +62 -0
- package/dist/types/chess.d.ts +82 -0
- package/dist/types/compat.d.ts +26 -0
- package/dist/types/debug.d.ts +10 -0
- package/dist/types/fen.d.ts +40 -0
- package/dist/types/index.d.ts +14 -0
- package/dist/types/pgn.d.ts +203 -0
- package/dist/types/san.d.ts +6 -0
- package/dist/types/setup.d.ts +65 -0
- package/dist/types/squareSet.d.ts +50 -0
- package/dist/types/transform.d.ts +9 -0
- package/dist/types/types.d.ts +58 -0
- package/dist/types/util.d.ts +21 -0
- package/dist/types/variant.d.ts +92 -0
- package/package.json +86 -0
- package/src/attacks.ts +160 -0
- package/src/board.ts +168 -0
- package/src/chess.ts +687 -0
- package/src/compat.ts +120 -0
- package/src/debug.ts +100 -0
- package/src/fen.ts +328 -0
- package/src/index.ts +85 -0
- package/src/pgn.ts +876 -0
- package/src/san.ts +190 -0
- package/src/setup.ts +203 -0
- package/src/squareSet.ts +243 -0
- package/src/transform.ts +49 -0
- package/src/types.ts +93 -0
- package/src/util.ts +116 -0
- package/src/variant.ts +939 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"variant.js","sourceRoot":"","sources":["../../src/variant.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compute attacks and rays.
|
|
3
|
+
*
|
|
4
|
+
* These are low-level functions that can be used to implement chess rules.
|
|
5
|
+
*
|
|
6
|
+
* Implementation notes: Sliding attacks are computed using
|
|
7
|
+
* [Hyperbola Quintessence](https://www.chessprogramming.org/Hyperbola_Quintessence).
|
|
8
|
+
* Magic Bitboards would deliver slightly faster lookups, but also require
|
|
9
|
+
* initializing considerably larger attack tables. On the web, initialization
|
|
10
|
+
* time is important, so the chosen method may strike a better balance.
|
|
11
|
+
*
|
|
12
|
+
* @packageDocumentation
|
|
13
|
+
*/
|
|
14
|
+
import { SquareSet } from "./squareSet.js";
|
|
15
|
+
import { Color, Piece, Square } from "./types.js";
|
|
16
|
+
/**
|
|
17
|
+
* Gets squares attacked or defended by a king on `square`.
|
|
18
|
+
*/
|
|
19
|
+
export declare const kingAttacks: (square: Square) => SquareSet;
|
|
20
|
+
/**
|
|
21
|
+
* Gets squares attacked or defended by a knight on `square`.
|
|
22
|
+
*/
|
|
23
|
+
export declare const knightAttacks: (square: Square) => SquareSet;
|
|
24
|
+
/**
|
|
25
|
+
* Gets squares attacked or defended by a pawn of the given `color`
|
|
26
|
+
* on `square`.
|
|
27
|
+
*/
|
|
28
|
+
export declare const pawnAttacks: (color: Color, square: Square) => SquareSet;
|
|
29
|
+
/**
|
|
30
|
+
* Gets squares attacked or defended by a bishop on `square`, given `occupied`
|
|
31
|
+
* squares.
|
|
32
|
+
*/
|
|
33
|
+
export declare const bishopAttacks: (square: Square, occupied: SquareSet) => SquareSet;
|
|
34
|
+
/**
|
|
35
|
+
* Gets squares attacked or defended by a rook on `square`, given `occupied`
|
|
36
|
+
* squares.
|
|
37
|
+
*/
|
|
38
|
+
export declare const rookAttacks: (square: Square, occupied: SquareSet) => SquareSet;
|
|
39
|
+
/**
|
|
40
|
+
* Gets squares attacked or defended by a queen on `square`, given `occupied`
|
|
41
|
+
* squares.
|
|
42
|
+
*/
|
|
43
|
+
export declare const queenAttacks: (square: Square, occupied: SquareSet) => SquareSet;
|
|
44
|
+
/**
|
|
45
|
+
* Gets squares attacked or defended by a `piece` on `square`, given
|
|
46
|
+
* `occupied` squares.
|
|
47
|
+
*/
|
|
48
|
+
export declare const attacks: (piece: Piece, square: Square, occupied: SquareSet) => SquareSet;
|
|
49
|
+
/**
|
|
50
|
+
* Gets all squares of the rank, file or diagonal with the two squares
|
|
51
|
+
* `a` and `b`, or an empty set if they are not aligned.
|
|
52
|
+
*/
|
|
53
|
+
export declare const ray: (a: Square, b: Square) => SquareSet;
|
|
54
|
+
/**
|
|
55
|
+
* Gets all squares between `a` and `b` (bounds not included), or an empty set
|
|
56
|
+
* if they are not on the same rank, file or diagonal.
|
|
57
|
+
*/
|
|
58
|
+
export declare const between: (a: Square, b: Square) => SquareSet;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { SquareSet } from "./squareSet.js";
|
|
2
|
+
import { ByColor, ByRole, Color, Piece, Role, Square } from "./types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Piece positions on a board.
|
|
5
|
+
*
|
|
6
|
+
* Properties are sets of squares, like `board.occupied` for all occupied
|
|
7
|
+
* squares, `board[color]` for all pieces of that color, and `board[role]`
|
|
8
|
+
* for all pieces of that role. When modifying the properties directly, take
|
|
9
|
+
* care to keep them consistent.
|
|
10
|
+
*/
|
|
11
|
+
export declare class Board implements Iterable<[Square, Piece]>, ByRole<SquareSet>, ByColor<SquareSet> {
|
|
12
|
+
/**
|
|
13
|
+
* All occupied squares.
|
|
14
|
+
*/
|
|
15
|
+
occupied: SquareSet;
|
|
16
|
+
/**
|
|
17
|
+
* All squares occupied by pieces known to be promoted. This information is
|
|
18
|
+
* relevant in chess variants like Crazyhouse.
|
|
19
|
+
*/
|
|
20
|
+
promoted: SquareSet;
|
|
21
|
+
white: SquareSet;
|
|
22
|
+
black: SquareSet;
|
|
23
|
+
pawn: SquareSet;
|
|
24
|
+
knight: SquareSet;
|
|
25
|
+
bishop: SquareSet;
|
|
26
|
+
rook: SquareSet;
|
|
27
|
+
queen: SquareSet;
|
|
28
|
+
king: SquareSet;
|
|
29
|
+
private constructor();
|
|
30
|
+
static default(): Board;
|
|
31
|
+
/**
|
|
32
|
+
* Resets all pieces to the default starting position for standard chess.
|
|
33
|
+
*/
|
|
34
|
+
reset(): void;
|
|
35
|
+
static empty(): Board;
|
|
36
|
+
clear(): void;
|
|
37
|
+
clone(): Board;
|
|
38
|
+
getColor(square: Square): Color | undefined;
|
|
39
|
+
getRole(square: Square): Role | undefined;
|
|
40
|
+
get(square: Square): Piece | undefined;
|
|
41
|
+
/**
|
|
42
|
+
* Removes and returns the piece from the given `square`, if any.
|
|
43
|
+
*/
|
|
44
|
+
take(square: Square): Piece | undefined;
|
|
45
|
+
/**
|
|
46
|
+
* Put `piece` onto `square`, potentially replacing an existing piece.
|
|
47
|
+
* Returns the existing piece, if any.
|
|
48
|
+
*/
|
|
49
|
+
set(square: Square, piece: Piece): Piece | undefined;
|
|
50
|
+
has(square: Square): boolean;
|
|
51
|
+
[Symbol.iterator](): Iterator<[Square, Piece]>;
|
|
52
|
+
pieces(color: Color, role: Role): SquareSet;
|
|
53
|
+
rooksAndQueens(): SquareSet;
|
|
54
|
+
bishopsAndQueens(): SquareSet;
|
|
55
|
+
steppers(): SquareSet;
|
|
56
|
+
sliders(): SquareSet;
|
|
57
|
+
/**
|
|
58
|
+
* Finds the unique king of the given `color`, if any.
|
|
59
|
+
*/
|
|
60
|
+
kingOf(color: Color): Square | undefined;
|
|
61
|
+
}
|
|
62
|
+
export declare const boardEquals: (left: Board, right: Board) => boolean;
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { Result } from "@badrap/result";
|
|
2
|
+
import { Board } from "./board.js";
|
|
3
|
+
import { Material, RemainingChecks, Setup } from "./setup.js";
|
|
4
|
+
import { SquareSet } from "./squareSet.js";
|
|
5
|
+
import { ByCastlingSide, ByColor, CastlingSide, Color, Move, Outcome, Piece, Rules, Square } from "./types.js";
|
|
6
|
+
export declare enum IllegalSetup {
|
|
7
|
+
Empty = "ERR_EMPTY",
|
|
8
|
+
OppositeCheck = "ERR_OPPOSITE_CHECK",
|
|
9
|
+
PawnsOnBackrank = "ERR_PAWNS_ON_BACKRANK",
|
|
10
|
+
Kings = "ERR_KINGS",
|
|
11
|
+
Variant = "ERR_VARIANT"
|
|
12
|
+
}
|
|
13
|
+
export declare class PositionError extends Error {
|
|
14
|
+
}
|
|
15
|
+
export declare class Castles {
|
|
16
|
+
castlingRights: SquareSet;
|
|
17
|
+
rook: ByColor<ByCastlingSide<Square | undefined>>;
|
|
18
|
+
path: ByColor<ByCastlingSide<SquareSet>>;
|
|
19
|
+
private constructor();
|
|
20
|
+
static default(): Castles;
|
|
21
|
+
static empty(): Castles;
|
|
22
|
+
clone(): Castles;
|
|
23
|
+
private add;
|
|
24
|
+
static fromSetup(setup: Setup): Castles;
|
|
25
|
+
discardRook(square: Square): void;
|
|
26
|
+
discardColor(color: Color): void;
|
|
27
|
+
}
|
|
28
|
+
export interface Context {
|
|
29
|
+
king: Square | undefined;
|
|
30
|
+
blockers: SquareSet;
|
|
31
|
+
checkers: SquareSet;
|
|
32
|
+
variantEnd: boolean;
|
|
33
|
+
mustCapture: boolean;
|
|
34
|
+
}
|
|
35
|
+
export declare abstract class Position {
|
|
36
|
+
readonly rules: Rules;
|
|
37
|
+
board: Board;
|
|
38
|
+
pockets: Material | undefined;
|
|
39
|
+
turn: Color;
|
|
40
|
+
castles: Castles;
|
|
41
|
+
epSquare: Square | undefined;
|
|
42
|
+
remainingChecks: RemainingChecks | undefined;
|
|
43
|
+
halfmoves: number;
|
|
44
|
+
fullmoves: number;
|
|
45
|
+
protected constructor(rules: Rules);
|
|
46
|
+
reset(): void;
|
|
47
|
+
protected setupUnchecked(setup: Setup): void;
|
|
48
|
+
kingAttackers(square: Square, attacker: Color, occupied: SquareSet): SquareSet;
|
|
49
|
+
protected playCaptureAt(square: Square, captured: Piece): void;
|
|
50
|
+
ctx(): Context;
|
|
51
|
+
clone(): Position;
|
|
52
|
+
protected validate(): Result<undefined, PositionError>;
|
|
53
|
+
dropDests(_ctx?: Context): SquareSet;
|
|
54
|
+
dests(square: Square, ctx?: Context): SquareSet;
|
|
55
|
+
isVariantEnd(): boolean;
|
|
56
|
+
variantOutcome(_ctx?: Context): Outcome | undefined;
|
|
57
|
+
hasInsufficientMaterial(color: Color): boolean;
|
|
58
|
+
toSetup(): Setup;
|
|
59
|
+
isInsufficientMaterial(): boolean;
|
|
60
|
+
hasDests(ctx?: Context): boolean;
|
|
61
|
+
isLegal(move: Move, ctx?: Context): boolean;
|
|
62
|
+
isCheck(): boolean;
|
|
63
|
+
isEnd(ctx?: Context): boolean;
|
|
64
|
+
isCheckmate(ctx?: Context): boolean;
|
|
65
|
+
isStalemate(ctx?: Context): boolean;
|
|
66
|
+
outcome(ctx?: Context): Outcome | undefined;
|
|
67
|
+
allDests(ctx?: Context): Map<Square, SquareSet>;
|
|
68
|
+
play(move: Move): void;
|
|
69
|
+
}
|
|
70
|
+
export declare class Chess extends Position {
|
|
71
|
+
private constructor();
|
|
72
|
+
static default(): Chess;
|
|
73
|
+
static fromSetup(setup: Setup): Result<Chess, PositionError>;
|
|
74
|
+
clone(): Chess;
|
|
75
|
+
}
|
|
76
|
+
export declare const pseudoDests: (pos: Position, square: Square, ctx: Context) => SquareSet;
|
|
77
|
+
export declare const equalsIgnoreMoves: (left: Position, right: Position) => boolean;
|
|
78
|
+
export declare const castlingSide: (pos: Position, move: Move) => CastlingSide | undefined;
|
|
79
|
+
export declare const normalizeMove: (pos: Position, move: Move) => Move;
|
|
80
|
+
export declare const isStandardMaterialSide: (board: Board, color: Color) => boolean;
|
|
81
|
+
export declare const isStandardMaterial: (pos: Chess) => boolean;
|
|
82
|
+
export declare const isImpossibleCheck: (pos: Position) => boolean;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compatibility with other libraries.
|
|
3
|
+
*
|
|
4
|
+
* Convert between the formats used by chessops,
|
|
5
|
+
* [chessground](https://github.com/lichess-org/chessground),
|
|
6
|
+
* and [scalachess](https://github.com/lichess-org/scalachess).
|
|
7
|
+
*
|
|
8
|
+
* @packageDocumentation
|
|
9
|
+
*/
|
|
10
|
+
import { Position } from "./chess.js";
|
|
11
|
+
import { Move, Rules, SquareName } from "./types.js";
|
|
12
|
+
export interface ChessgroundDestsOpts {
|
|
13
|
+
chess960?: boolean;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Computes the legal move destinations in the format used by chessground.
|
|
17
|
+
*
|
|
18
|
+
* Includes both possible representations of castling moves (unless
|
|
19
|
+
* `chess960` mode is enabled), so that the `rookCastles` option will work
|
|
20
|
+
* correctly.
|
|
21
|
+
*/
|
|
22
|
+
export declare const chessgroundDests: (pos: Position, opts?: ChessgroundDestsOpts) => Map<SquareName, SquareName[]>;
|
|
23
|
+
export declare const chessgroundMove: (move: Move) => SquareName[];
|
|
24
|
+
export declare const scalachessCharPair: (move: Move) => string;
|
|
25
|
+
export declare const lichessRules: (variant: "standard" | "chess960" | "antichess" | "fromPosition" | "kingOfTheHill" | "threeCheck" | "atomic" | "horde" | "racingKings" | "crazyhouse") => Rules;
|
|
26
|
+
export declare const lichessVariant: (rules: Rules) => "standard" | "antichess" | "kingOfTheHill" | "threeCheck" | "atomic" | "horde" | "racingKings" | "crazyhouse";
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Board } from "./board.js";
|
|
2
|
+
import { Position } from "./chess.js";
|
|
3
|
+
import { SquareSet } from "./squareSet.js";
|
|
4
|
+
import { Piece, Square } from "./types.js";
|
|
5
|
+
export declare const squareSet: (squares: SquareSet) => string;
|
|
6
|
+
export declare const piece: (piece: Piece) => string;
|
|
7
|
+
export declare const board: (board: Board) => string;
|
|
8
|
+
export declare const square: (sq: Square) => string;
|
|
9
|
+
export declare const dests: (dests: Map<Square, SquareSet>) => string;
|
|
10
|
+
export declare const perft: (pos: Position, depth: number, log?: boolean) => number;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { Result } from "@badrap/result";
|
|
2
|
+
import { Board } from "./board.js";
|
|
3
|
+
import { Material, MaterialSide, RemainingChecks, Setup } from "./setup.js";
|
|
4
|
+
import { SquareSet } from "./squareSet.js";
|
|
5
|
+
import { Piece } from "./types.js";
|
|
6
|
+
export declare const INITIAL_BOARD_FEN = "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR";
|
|
7
|
+
export declare const INITIAL_EPD: string;
|
|
8
|
+
export declare const INITIAL_FEN: string;
|
|
9
|
+
export declare const EMPTY_BOARD_FEN = "8/8/8/8/8/8/8/8";
|
|
10
|
+
export declare const EMPTY_EPD: string;
|
|
11
|
+
export declare const EMPTY_FEN: string;
|
|
12
|
+
export declare enum InvalidFen {
|
|
13
|
+
Fen = "ERR_FEN",
|
|
14
|
+
Board = "ERR_BOARD",
|
|
15
|
+
Pockets = "ERR_POCKETS",
|
|
16
|
+
Turn = "ERR_TURN",
|
|
17
|
+
Castling = "ERR_CASTLING",
|
|
18
|
+
EpSquare = "ERR_EP_SQUARE",
|
|
19
|
+
RemainingChecks = "ERR_REMAINING_CHECKS",
|
|
20
|
+
Halfmoves = "ERR_HALFMOVES",
|
|
21
|
+
Fullmoves = "ERR_FULLMOVES"
|
|
22
|
+
}
|
|
23
|
+
export declare class FenError extends Error {
|
|
24
|
+
}
|
|
25
|
+
export declare const parseBoardFen: (boardPart: string) => Result<Board, FenError>;
|
|
26
|
+
export declare const parsePockets: (pocketPart: string) => Result<Material, FenError>;
|
|
27
|
+
export declare const parseCastlingFen: (board: Board, castlingPart: string) => Result<SquareSet, FenError>;
|
|
28
|
+
export declare const parseRemainingChecks: (part: string) => Result<RemainingChecks, FenError>;
|
|
29
|
+
export declare const parseFen: (fen: string) => Result<Setup, FenError>;
|
|
30
|
+
export interface FenOpts {
|
|
31
|
+
epd?: boolean;
|
|
32
|
+
}
|
|
33
|
+
export declare const parsePiece: (str: string) => Piece | undefined;
|
|
34
|
+
export declare const makePiece: (piece: Piece) => string;
|
|
35
|
+
export declare const makeBoardFen: (board: Board) => string;
|
|
36
|
+
export declare const makePocket: (material: MaterialSide) => string;
|
|
37
|
+
export declare const makePockets: (pocket: Material) => string;
|
|
38
|
+
export declare const makeCastlingFen: (board: Board, castlingRights: SquareSet) => string;
|
|
39
|
+
export declare const makeRemainingChecks: (checks: RemainingChecks) => string;
|
|
40
|
+
export declare const makeFen: (setup: Setup, opts?: FenOpts) => string;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export { ByCastlingSide, ByColor, ByRole, BySquare, CASTLING_SIDES, CastlingSide, Color, COLORS, DropMove, FILE_NAMES, FileName, isDrop, isNormal, Move, NormalMove, Outcome, Piece, RANK_NAMES, RankName, Role, ROLE_CHARS, RoleChar, ROLES, Rules, Square, SquareName, } from "./types.js";
|
|
2
|
+
export { charToRole, defined, kingCastlesTo, makeSquare, makeUci, opposite, parseSquare, parseUci, roleToChar, squareFile, squareRank, } from "./util.js";
|
|
3
|
+
export { SquareSet } from "./squareSet.js";
|
|
4
|
+
export { attacks, between, bishopAttacks, kingAttacks, knightAttacks, pawnAttacks, queenAttacks, ray, rookAttacks, } from "./attacks.js";
|
|
5
|
+
export { Board, boardEquals } from "./board.js";
|
|
6
|
+
export { defaultSetup, emptySetup, Material, MaterialSide, RemainingChecks, Setup, setupClone, setupEquals, } from "./setup.js";
|
|
7
|
+
export { Castles, Chess, Context, IllegalSetup, Position, PositionError } from "./chess.js";
|
|
8
|
+
export * as compat from "./compat.js";
|
|
9
|
+
export * as debug from "./debug.js";
|
|
10
|
+
export * as fen from "./fen.js";
|
|
11
|
+
export * as san from "./san.js";
|
|
12
|
+
export * as transform from "./transform.js";
|
|
13
|
+
export * as variant from "./variant.js";
|
|
14
|
+
export * as pgn from "./pgn.js";
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parse, transform and write PGN.
|
|
3
|
+
*
|
|
4
|
+
* ## Parser
|
|
5
|
+
*
|
|
6
|
+
* The parser will interpret any input as a PGN, creating a tree of
|
|
7
|
+
* syntactically valid (but not necessarily legal) moves, skipping any invalid
|
|
8
|
+
* tokens.
|
|
9
|
+
*
|
|
10
|
+
* ```ts
|
|
11
|
+
* import { parsePgn, startingPosition } from '@connectorvol/chessops/pgn';
|
|
12
|
+
* import { parseSan } from '@connectorvol/chessops/san';
|
|
13
|
+
*
|
|
14
|
+
* const pgn = '1. d4 d5 *';
|
|
15
|
+
* const games = parsePgn(pgn);
|
|
16
|
+
* for (const game of games) {
|
|
17
|
+
* const pos = startingPosition(game.headers).unwrap();
|
|
18
|
+
* for (const node of game.moves.mainline()) {
|
|
19
|
+
* const move = parseSan(pos, node.san);
|
|
20
|
+
* if (!move) break; // Illegal move
|
|
21
|
+
* pos.play(move);
|
|
22
|
+
* }
|
|
23
|
+
* }
|
|
24
|
+
* ```
|
|
25
|
+
*
|
|
26
|
+
* ## Streaming parser
|
|
27
|
+
*
|
|
28
|
+
* The module also provides a denial-of-service resistant streaming parser.
|
|
29
|
+
* It can be configured with a budget for reasonable complexity of a single
|
|
30
|
+
* game, fed with chunks of text, and will yield parsed games as they are
|
|
31
|
+
* completed.
|
|
32
|
+
*
|
|
33
|
+
* ```ts
|
|
34
|
+
*
|
|
35
|
+
* import { createReadStream } from 'fs';
|
|
36
|
+
* import { PgnParser } from '@connectorvol/chessops/pgn';
|
|
37
|
+
*
|
|
38
|
+
* const stream = createReadStream('games.pgn', { encoding: 'utf-8' });
|
|
39
|
+
*
|
|
40
|
+
* const parser = new PgnParser((game, err) => {
|
|
41
|
+
* if (err) {
|
|
42
|
+
* // Budget exceeded.
|
|
43
|
+
* stream.destroy(err);
|
|
44
|
+
* }
|
|
45
|
+
*
|
|
46
|
+
* // Use game ...
|
|
47
|
+
* });
|
|
48
|
+
*
|
|
49
|
+
* await new Promise<void>(resolve =>
|
|
50
|
+
* stream
|
|
51
|
+
* .on('data', (chunk: string) => parser.parse(chunk, { stream: true }))
|
|
52
|
+
* .on('close', () => {
|
|
53
|
+
* parser.parse('');
|
|
54
|
+
* resolve();
|
|
55
|
+
* })
|
|
56
|
+
* );
|
|
57
|
+
* ```
|
|
58
|
+
*
|
|
59
|
+
* ## Augmenting the game tree
|
|
60
|
+
*
|
|
61
|
+
* You can use `walk` to visit all nodes in the game tree, or `transform`
|
|
62
|
+
* to augment it with user data.
|
|
63
|
+
*
|
|
64
|
+
* Both allow you to provide context. You update the context inside the
|
|
65
|
+
* callback, and it is automatically `clone()`-ed at each fork.
|
|
66
|
+
* In the example below, the current position `pos` is provided as context.
|
|
67
|
+
*
|
|
68
|
+
* ```ts
|
|
69
|
+
* import { transform } from '@connectorvol/chessops/pgn';
|
|
70
|
+
* import { makeFen } from '@connectorvol/chessops/fen';
|
|
71
|
+
* import { parseSan, makeSanAndPlay } from '@connectorvol/chessops/san';
|
|
72
|
+
*
|
|
73
|
+
* const pos = startingPosition(game.headers).unwrap();
|
|
74
|
+
* game.moves = transform(game.moves, pos, (pos, node) => {
|
|
75
|
+
* const move = parseSan(pos, node.san);
|
|
76
|
+
* if (!move) {
|
|
77
|
+
* // Illegal move. Returning undefined cuts off the tree here.
|
|
78
|
+
* return;
|
|
79
|
+
* }
|
|
80
|
+
*
|
|
81
|
+
* const san = makeSanAndPlay(pos, move); // Mutating pos!
|
|
82
|
+
*
|
|
83
|
+
* return {
|
|
84
|
+
* ...node, // Keep comments and annotation glyphs
|
|
85
|
+
* san, // Normalized SAN
|
|
86
|
+
* fen: makeFen(pos.toSetup()), // Add arbitrary user data to node
|
|
87
|
+
* };
|
|
88
|
+
* });
|
|
89
|
+
* ```
|
|
90
|
+
*
|
|
91
|
+
* ## Writing
|
|
92
|
+
*
|
|
93
|
+
* Requires each node to at least have a `san` property.
|
|
94
|
+
*
|
|
95
|
+
* ```
|
|
96
|
+
* import { makePgn } from '@connectorvol/chessops/pgn';
|
|
97
|
+
*
|
|
98
|
+
* const rewrittenPgn = makePgn(game);
|
|
99
|
+
* ```
|
|
100
|
+
*
|
|
101
|
+
* @packageDocumentation
|
|
102
|
+
*/
|
|
103
|
+
import { Result } from "@badrap/result";
|
|
104
|
+
import { Position, PositionError } from "./chess.js";
|
|
105
|
+
import { FenError } from "./fen.js";
|
|
106
|
+
import { Outcome, Rules, Square } from "./types.js";
|
|
107
|
+
export interface Game<T> {
|
|
108
|
+
headers: Map<string, string>;
|
|
109
|
+
comments?: string[];
|
|
110
|
+
moves: Node<T>;
|
|
111
|
+
}
|
|
112
|
+
export declare const defaultGame: <T>(initHeaders?: () => Map<string, string>) => Game<T>;
|
|
113
|
+
export declare class Node<T> {
|
|
114
|
+
children: ChildNode<T>[];
|
|
115
|
+
mainlineNodes(): Iterable<ChildNode<T>>;
|
|
116
|
+
mainline(): Iterable<T>;
|
|
117
|
+
end(): Node<T>;
|
|
118
|
+
}
|
|
119
|
+
export declare class ChildNode<T> extends Node<T> {
|
|
120
|
+
data: T;
|
|
121
|
+
constructor(data: T);
|
|
122
|
+
}
|
|
123
|
+
export declare const isChildNode: <T>(node: Node<T>) => node is ChildNode<T>;
|
|
124
|
+
export declare const extend: <T>(node: Node<T>, data: T[]) => Node<T>;
|
|
125
|
+
export declare class Box<T> {
|
|
126
|
+
value: T;
|
|
127
|
+
constructor(value: T);
|
|
128
|
+
clone(): Box<T>;
|
|
129
|
+
}
|
|
130
|
+
export declare const transform: <T, U, C extends {
|
|
131
|
+
clone(): C;
|
|
132
|
+
}>(node: Node<T>, ctx: C, f: (ctx: C, data: T, childIndex: number) => U | undefined) => Node<U>;
|
|
133
|
+
export declare const walk: <T, C extends {
|
|
134
|
+
clone(): C;
|
|
135
|
+
}>(node: Node<T>, ctx: C, f: (ctx: C, data: T, childIndex: number) => boolean | void) => void;
|
|
136
|
+
export interface PgnNodeData {
|
|
137
|
+
san: string;
|
|
138
|
+
startingComments?: string[];
|
|
139
|
+
comments?: string[];
|
|
140
|
+
nags?: number[];
|
|
141
|
+
}
|
|
142
|
+
export declare const makeOutcome: (outcome: Outcome | undefined) => string;
|
|
143
|
+
export declare const parseOutcome: (s: string | undefined) => Outcome | undefined;
|
|
144
|
+
export declare const makePgn: (game: Game<PgnNodeData>) => string;
|
|
145
|
+
export declare const defaultHeaders: () => Map<string, string>;
|
|
146
|
+
export declare const emptyHeaders: () => Map<string, string>;
|
|
147
|
+
export interface ParseOptions {
|
|
148
|
+
stream: boolean;
|
|
149
|
+
}
|
|
150
|
+
export declare class PgnError extends Error {
|
|
151
|
+
}
|
|
152
|
+
export declare class PgnParser {
|
|
153
|
+
private emitGame;
|
|
154
|
+
private initHeaders;
|
|
155
|
+
private maxBudget;
|
|
156
|
+
private lineBuf;
|
|
157
|
+
private budget;
|
|
158
|
+
private found;
|
|
159
|
+
private state;
|
|
160
|
+
private game;
|
|
161
|
+
private stack;
|
|
162
|
+
private commentBuf;
|
|
163
|
+
constructor(emitGame: (game: Game<PgnNodeData>, err: PgnError | undefined) => void, initHeaders?: () => Map<string, string>, maxBudget?: number);
|
|
164
|
+
private resetGame;
|
|
165
|
+
private consumeBudget;
|
|
166
|
+
parse(data: string, options?: ParseOptions): void;
|
|
167
|
+
private handleLine;
|
|
168
|
+
private handleHeader;
|
|
169
|
+
private handleNag;
|
|
170
|
+
private handleComment;
|
|
171
|
+
private emit;
|
|
172
|
+
}
|
|
173
|
+
export declare const parsePgn: (pgn: string, initHeaders?: () => Map<string, string>) => Game<PgnNodeData>[];
|
|
174
|
+
export declare const parseVariant: (variant: string | undefined) => Rules | undefined;
|
|
175
|
+
export declare const makeVariant: (rules: Rules) => string | undefined;
|
|
176
|
+
export declare const startingPosition: (headers: Map<string, string>) => Result<Position, FenError | PositionError>;
|
|
177
|
+
export declare const setStartingPosition: (headers: Map<string, string>, pos: Position) => void;
|
|
178
|
+
export type CommentShapeColor = "green" | "red" | "yellow" | "blue";
|
|
179
|
+
export interface CommentShape {
|
|
180
|
+
color: CommentShapeColor;
|
|
181
|
+
from: Square;
|
|
182
|
+
to: Square;
|
|
183
|
+
}
|
|
184
|
+
export type EvaluationPawns = {
|
|
185
|
+
pawns: number;
|
|
186
|
+
depth?: number;
|
|
187
|
+
};
|
|
188
|
+
export type EvaluationMate = {
|
|
189
|
+
mate: number;
|
|
190
|
+
depth?: number;
|
|
191
|
+
};
|
|
192
|
+
export type Evaluation = EvaluationPawns | EvaluationMate;
|
|
193
|
+
export declare const isPawns: (ev: Evaluation) => ev is EvaluationPawns;
|
|
194
|
+
export declare const isMate: (ev: Evaluation) => ev is EvaluationMate;
|
|
195
|
+
export interface Comment {
|
|
196
|
+
text: string;
|
|
197
|
+
shapes: CommentShape[];
|
|
198
|
+
clock?: number;
|
|
199
|
+
emt?: number;
|
|
200
|
+
evaluation?: Evaluation;
|
|
201
|
+
}
|
|
202
|
+
export declare const makeComment: (comment: Partial<Comment>) => string;
|
|
203
|
+
export declare const parseComment: (comment: string) => Comment;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Position } from "./chess.js";
|
|
2
|
+
import { Move } from "./types.js";
|
|
3
|
+
export declare const makeSanAndPlay: (pos: Position, move: Move) => string;
|
|
4
|
+
export declare const makeSanVariation: (pos: Position, variation: Move[]) => string;
|
|
5
|
+
export declare const makeSan: (pos: Position, move: Move) => string;
|
|
6
|
+
export declare const parseSan: (pos: Position, san: string) => Move | undefined;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { Board } from "./board.js";
|
|
2
|
+
import { SquareSet } from "./squareSet.js";
|
|
3
|
+
import { ByColor, ByRole, Color, Role, Square } from "./types.js";
|
|
4
|
+
export declare class MaterialSide implements ByRole<number> {
|
|
5
|
+
pawn: number;
|
|
6
|
+
knight: number;
|
|
7
|
+
bishop: number;
|
|
8
|
+
rook: number;
|
|
9
|
+
queen: number;
|
|
10
|
+
king: number;
|
|
11
|
+
private constructor();
|
|
12
|
+
static empty(): MaterialSide;
|
|
13
|
+
static fromBoard(board: Board, color: Color): MaterialSide;
|
|
14
|
+
clone(): MaterialSide;
|
|
15
|
+
equals(other: MaterialSide): boolean;
|
|
16
|
+
add(other: MaterialSide): MaterialSide;
|
|
17
|
+
subtract(other: MaterialSide): MaterialSide;
|
|
18
|
+
nonEmpty(): boolean;
|
|
19
|
+
isEmpty(): boolean;
|
|
20
|
+
hasPawns(): boolean;
|
|
21
|
+
hasNonPawns(): boolean;
|
|
22
|
+
size(): number;
|
|
23
|
+
}
|
|
24
|
+
export declare class Material implements ByColor<MaterialSide> {
|
|
25
|
+
white: MaterialSide;
|
|
26
|
+
black: MaterialSide;
|
|
27
|
+
constructor(white: MaterialSide, black: MaterialSide);
|
|
28
|
+
static empty(): Material;
|
|
29
|
+
static fromBoard(board: Board): Material;
|
|
30
|
+
clone(): Material;
|
|
31
|
+
equals(other: Material): boolean;
|
|
32
|
+
add(other: Material): Material;
|
|
33
|
+
subtract(other: Material): Material;
|
|
34
|
+
count(role: Role): number;
|
|
35
|
+
size(): number;
|
|
36
|
+
isEmpty(): boolean;
|
|
37
|
+
nonEmpty(): boolean;
|
|
38
|
+
hasPawns(): boolean;
|
|
39
|
+
hasNonPawns(): boolean;
|
|
40
|
+
}
|
|
41
|
+
export declare class RemainingChecks implements ByColor<number> {
|
|
42
|
+
white: number;
|
|
43
|
+
black: number;
|
|
44
|
+
constructor(white: number, black: number);
|
|
45
|
+
static default(): RemainingChecks;
|
|
46
|
+
clone(): RemainingChecks;
|
|
47
|
+
equals(other: RemainingChecks): boolean;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* A not necessarily legal chess or chess variant position.
|
|
51
|
+
*/
|
|
52
|
+
export interface Setup {
|
|
53
|
+
board: Board;
|
|
54
|
+
pockets: Material | undefined;
|
|
55
|
+
turn: Color;
|
|
56
|
+
castlingRights: SquareSet;
|
|
57
|
+
epSquare: Square | undefined;
|
|
58
|
+
remainingChecks: RemainingChecks | undefined;
|
|
59
|
+
halfmoves: number;
|
|
60
|
+
fullmoves: number;
|
|
61
|
+
}
|
|
62
|
+
export declare const defaultSetup: () => Setup;
|
|
63
|
+
export declare const emptySetup: () => Setup;
|
|
64
|
+
export declare const setupClone: (setup: Setup) => Setup;
|
|
65
|
+
export declare const setupEquals: (left: Setup, right: Setup) => boolean;
|