@weshell/chess.js 0.0.0-stage → 1.0.0

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.
Files changed (51) hide show
  1. package/LICENSE +23 -0
  2. package/README.md +87 -2
  3. package/dist/attack.d.ts +32 -0
  4. package/dist/attack.d.ts.map +1 -0
  5. package/dist/attack.js +103 -0
  6. package/dist/attack.js.map +1 -0
  7. package/dist/board.d.ts +33 -0
  8. package/dist/board.d.ts.map +1 -0
  9. package/dist/board.js +49 -0
  10. package/dist/board.js.map +1 -0
  11. package/dist/chess.d.ts +232 -0
  12. package/dist/chess.d.ts.map +1 -0
  13. package/dist/chess.js +1335 -0
  14. package/dist/chess.js.map +1 -0
  15. package/dist/fen.d.ts +38 -0
  16. package/dist/fen.d.ts.map +1 -0
  17. package/dist/fen.js +308 -0
  18. package/dist/fen.js.map +1 -0
  19. package/dist/hash.d.ts +34 -0
  20. package/dist/hash.d.ts.map +1 -0
  21. package/dist/hash.js +98 -0
  22. package/dist/hash.js.map +1 -0
  23. package/dist/index.d.ts +3 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +2 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/move.d.ts +55 -0
  28. package/dist/move.d.ts.map +1 -0
  29. package/dist/move.js +79 -0
  30. package/dist/move.js.map +1 -0
  31. package/dist/movegen.d.ts +34 -0
  32. package/dist/movegen.d.ts.map +1 -0
  33. package/dist/movegen.js +242 -0
  34. package/dist/movegen.js.map +1 -0
  35. package/dist/node.d.ts +8 -0
  36. package/dist/node.d.ts.map +1 -0
  37. package/dist/node.js +2 -0
  38. package/dist/node.js.map +1 -0
  39. package/dist/notation.d.ts +33 -0
  40. package/dist/notation.d.ts.map +1 -0
  41. package/dist/notation.js +257 -0
  42. package/dist/notation.js.map +1 -0
  43. package/dist/pgn.d.ts +12 -0
  44. package/dist/pgn.d.ts.map +1 -0
  45. package/dist/pgn.js +1347 -0
  46. package/dist/pgn.js.map +1 -0
  47. package/dist/types.d.ts +118 -0
  48. package/dist/types.d.ts.map +1 -0
  49. package/dist/types.js +237 -0
  50. package/dist/types.js.map +1 -0
  51. package/package.json +45 -4
package/dist/move.d.ts ADDED
@@ -0,0 +1,55 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) 2025, Jeff Hlywa (jhlywa@gmail.com)
4
+ * All rights reserved.
5
+ *
6
+ * Redistribution and use in source and binary forms, with or without
7
+ * modification, are permitted provided that the following conditions are met:
8
+ *
9
+ * 1. Redistributions of source code must retain the above copyright notice,
10
+ * this list of conditions and the following disclaimer.
11
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
12
+ * this list of conditions and the following disclaimer in the documentation
13
+ * and/or other materials provided with the distribution.
14
+ *
15
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
16
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
19
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
20
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
21
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
24
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
25
+ * POSSIBILITY OF SUCH DAMAGE.
26
+ */
27
+ import type { Color, InternalMove, PieceSymbol, Square } from './types.js';
28
+ export declare class Move {
29
+ color: Color;
30
+ from: Square;
31
+ to: Square;
32
+ piece: PieceSymbol;
33
+ captured?: PieceSymbol;
34
+ promotion?: PieceSymbol;
35
+ rookFrom?: Square;
36
+ /**
37
+ * @deprecated This field is deprecated and will be removed in version 2.0.0.
38
+ * Please use move descriptor functions instead: `isCapture`, `isPromotion`,
39
+ * `isEnPassant`, `isKingsideCastle`, `isQueensideCastle`, `isCastle`, and
40
+ * `isBigPawn`
41
+ */
42
+ flags: string;
43
+ san: string;
44
+ lan: string;
45
+ before: string;
46
+ after: string;
47
+ constructor(internal: InternalMove, san: string, before: string, after: string);
48
+ isCapture(): boolean;
49
+ isPromotion(): boolean;
50
+ isEnPassant(): boolean;
51
+ isKingsideCastle(): boolean;
52
+ isQueensideCastle(): boolean;
53
+ isBigPawn(): boolean;
54
+ }
55
+ //# sourceMappingURL=move.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"move.d.ts","sourceRoot":"","sources":["../src/move.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAI1E,qBAAa,IAAI;IACf,KAAK,EAAE,KAAK,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,WAAW,CAAA;IAClB,QAAQ,CAAC,EAAE,WAAW,CAAA;IACtB,SAAS,CAAC,EAAE,WAAW,CAAA;IAMvB,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB;;;;;OAKG;IACH,KAAK,EAAE,MAAM,CAAA;IAEb,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;gBAGX,QAAQ,EAAE,YAAY,EACtB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM;IAuCf,SAAS;IAIT,WAAW;IAIX,WAAW;IAIX,gBAAgB;IAIhB,iBAAiB;IAIjB,SAAS;CAGV"}
package/dist/move.js ADDED
@@ -0,0 +1,79 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) 2025, Jeff Hlywa (jhlywa@gmail.com)
4
+ * All rights reserved.
5
+ *
6
+ * Redistribution and use in source and binary forms, with or without
7
+ * modification, are permitted provided that the following conditions are met:
8
+ *
9
+ * 1. Redistributions of source code must retain the above copyright notice,
10
+ * this list of conditions and the following disclaimer.
11
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
12
+ * this list of conditions and the following disclaimer in the documentation
13
+ * and/or other materials provided with the distribution.
14
+ *
15
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
16
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
19
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
20
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
21
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
24
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
25
+ * POSSIBILITY OF SUCH DAMAGE.
26
+ */
27
+ import { BITS, FLAGS } from './types.js';
28
+ import { algebraic } from './board.js';
29
+ export class Move {
30
+ constructor(internal, san, before, after) {
31
+ const { color, piece, from, to, flags, captured, promotion } = internal;
32
+ const fromAlgebraic = algebraic(from);
33
+ const toAlgebraic = algebraic(to);
34
+ this.color = color;
35
+ this.piece = piece;
36
+ this.from = fromAlgebraic;
37
+ this.to = toAlgebraic;
38
+ this.san = san;
39
+ this.lan = fromAlgebraic + toAlgebraic;
40
+ this.before = before;
41
+ this.after = after;
42
+ // Build the text representation of the move flags
43
+ this.flags = '';
44
+ for (const flag in BITS) {
45
+ if (BITS[flag] & flags) {
46
+ this.flags += FLAGS[flag];
47
+ }
48
+ }
49
+ if (captured) {
50
+ this.captured = captured;
51
+ }
52
+ if (internal.rookFrom !== undefined) {
53
+ this.rookFrom = algebraic(internal.rookFrom);
54
+ }
55
+ if (promotion) {
56
+ this.promotion = promotion;
57
+ this.lan += promotion;
58
+ }
59
+ }
60
+ isCapture() {
61
+ return this.flags.indexOf(FLAGS['CAPTURE']) > -1;
62
+ }
63
+ isPromotion() {
64
+ return this.flags.indexOf(FLAGS['PROMOTION']) > -1;
65
+ }
66
+ isEnPassant() {
67
+ return this.flags.indexOf(FLAGS['EP_CAPTURE']) > -1;
68
+ }
69
+ isKingsideCastle() {
70
+ return this.flags.indexOf(FLAGS['KSIDE_CASTLE']) > -1;
71
+ }
72
+ isQueensideCastle() {
73
+ return this.flags.indexOf(FLAGS['QSIDE_CASTLE']) > -1;
74
+ }
75
+ isBigPawn() {
76
+ return this.flags.indexOf(FLAGS['BIG_PAWN']) > -1;
77
+ }
78
+ }
79
+ //# sourceMappingURL=move.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"move.js","sourceRoot":"","sources":["../src/move.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAGH,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAEtC,MAAM,OAAO,IAAI;IA2Bf,YACE,QAAsB,EACtB,GAAW,EACX,MAAc,EACd,KAAa;QAEb,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,QAAQ,CAAA;QAEvE,MAAM,aAAa,GAAG,SAAS,CAAC,IAAI,CAAC,CAAA;QACrC,MAAM,WAAW,GAAG,SAAS,CAAC,EAAE,CAAC,CAAA;QAEjC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,IAAI,GAAG,aAAa,CAAA;QACzB,IAAI,CAAC,EAAE,GAAG,WAAW,CAAA;QAErB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;QACd,IAAI,CAAC,GAAG,GAAG,aAAa,GAAG,WAAW,CAAA;QACtC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAElB,kDAAkD;QAClD,IAAI,CAAC,KAAK,GAAG,EAAE,CAAA;QACf,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;YACxB,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC;gBACvB,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,CAAA;YAC3B,CAAC;QACH,CAAC;QAED,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QAC1B,CAAC;QAED,IAAI,QAAQ,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACpC,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;QAC9C,CAAC;QAED,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;YAC1B,IAAI,CAAC,GAAG,IAAI,SAAS,CAAA;QACvB,CAAC;IACH,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;IAClD,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;IACpD,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;IACrD,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;IACvD,CAAC;IAED,iBAAiB;QACf,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;IACvD,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;IACnD,CAAC;CACF"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) 2025, Jeff Hlywa (jhlywa@gmail.com)
4
+ * All rights reserved.
5
+ *
6
+ * Redistribution and use in source and binary forms, with or without
7
+ * modification, are permitted provided that the following conditions are met:
8
+ *
9
+ * 1. Redistributions of source code must retain the above copyright notice,
10
+ * this list of conditions and the following disclaimer.
11
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
12
+ * this list of conditions and the following disclaimer in the documentation
13
+ * and/or other materials provided with the distribution.
14
+ *
15
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
16
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
19
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
20
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
21
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
24
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
25
+ * POSSIBILITY OF SUCH DAMAGE.
26
+ */
27
+ import type { CastlingRookSquares, Color, InternalMove, Piece, PieceSymbol, Square } from './types.js';
28
+ export declare function addMove(moves: InternalMove[], color: Color, from: number, to: number, piece: PieceSymbol, captured?: PieceSymbol | undefined, flags?: number, rookFrom?: number | undefined): void;
29
+ export declare function addCastlingMove(moves: InternalMove[], us: Color, them: Color, side: number, board: Piece[], kings: Record<Color, number>, castling: Record<Color, number>, castlingRooks: Record<Color, CastlingRookSquares>): void;
30
+ export declare function generatePseudoMoves(board: Piece[], turn: Color, epSquare: number, kings: Record<Color, number>, castling: Record<Color, number>, castlingRooks: Record<Color, CastlingRookSquares>, { piece: forPiece, square, }?: {
31
+ piece?: PieceSymbol;
32
+ square?: Square;
33
+ }): InternalMove[];
34
+ //# sourceMappingURL=movegen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"movegen.d.ts","sourceRoot":"","sources":["../src/movegen.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,EACV,mBAAmB,EACnB,KAAK,EACL,YAAY,EACZ,KAAK,EACL,WAAW,EACX,MAAM,EACP,MAAM,YAAY,CAAA;AAkBnB,wBAAgB,OAAO,CACrB,KAAK,EAAE,YAAY,EAAE,EACrB,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,WAAW,EAClB,QAAQ,GAAE,WAAW,GAAG,SAAqB,EAC7C,KAAK,GAAE,MAAoB,EAC3B,QAAQ,GAAE,MAAM,GAAG,SAAqB,QA4BzC;AAYD,wBAAgB,eAAe,CAC7B,KAAK,EAAE,YAAY,EAAE,EACrB,EAAE,EAAE,KAAK,EACT,IAAI,EAAE,KAAK,EACX,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,KAAK,EAAE,EACd,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,EAC5B,QAAQ,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,EAC/B,aAAa,EAAE,MAAM,CAAC,KAAK,EAAE,mBAAmB,CAAC,QAgGlD;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,KAAK,EAAE,EACd,IAAI,EAAE,KAAK,EACX,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,EAC5B,QAAQ,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,EAC/B,aAAa,EAAE,MAAM,CAAC,KAAK,EAAE,mBAAmB,CAAC,EACjD,EACE,KAAK,EAAE,QAAQ,EACf,MAAM,GACP,GAAE;IAAE,KAAK,CAAC,EAAE,WAAW,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/C,YAAY,EAAE,CAiJhB"}
@@ -0,0 +1,242 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) 2025, Jeff Hlywa (jhlywa@gmail.com)
4
+ * All rights reserved.
5
+ *
6
+ * Redistribution and use in source and binary forms, with or without
7
+ * modification, are permitted provided that the following conditions are met:
8
+ *
9
+ * 1. Redistributions of source code must retain the above copyright notice,
10
+ * this list of conditions and the following disclaimer.
11
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
12
+ * this list of conditions and the following disclaimer in the documentation
13
+ * and/or other materials provided with the distribution.
14
+ *
15
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
16
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
19
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
20
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
21
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
24
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
25
+ * POSSIBILITY OF SUCH DAMAGE.
26
+ */
27
+ import { BITS, EMPTY, KING, KNIGHT, Ox88, PAWN, PAWN_OFFSETS, PIECE_OFFSETS, PROMOTIONS, RANK_1, RANK_8, SECOND_RANK, } from './types.js';
28
+ import { rank, swapColor } from './board.js';
29
+ import { attacked } from './attack.js';
30
+ export function addMove(moves, color, from, to, piece, captured = undefined, flags = BITS.NORMAL, rookFrom = undefined) {
31
+ const r = rank(to);
32
+ if (piece === PAWN && (r === RANK_1 || r === RANK_8)) {
33
+ for (let i = 0; i < PROMOTIONS.length; i++) {
34
+ const promotion = PROMOTIONS[i];
35
+ moves.push({
36
+ color,
37
+ from,
38
+ to,
39
+ piece,
40
+ captured,
41
+ promotion,
42
+ flags: flags | BITS.PROMOTION,
43
+ });
44
+ }
45
+ }
46
+ else {
47
+ moves.push({
48
+ color,
49
+ from,
50
+ to,
51
+ piece,
52
+ captured,
53
+ flags,
54
+ rookFrom,
55
+ });
56
+ }
57
+ }
58
+ /*
59
+ * CHESS960 castling generation, mirroring chessops castlingDest:
60
+ *
61
+ * - The king may not castle out of, through, or into check.
62
+ * - All squares on the king's and rook's paths (excluding their origin
63
+ * squares) must be empty.
64
+ * - The destination is checked with the king lifted off the board and the
65
+ * rook already relocated, which also covers the Chess960 corner cases
66
+ * where the king passes over or lands on the rook's origin square.
67
+ */
68
+ export function addCastlingMove(moves, us, them, side, board, kings, castling, castlingRooks) {
69
+ if (!(castling[us] & side)) {
70
+ return;
71
+ }
72
+ const rookFrom = side === BITS.KSIDE_CASTLE
73
+ ? castlingRooks[us].kside
74
+ : castlingRooks[us].qside;
75
+ const kingFrom = kings[us];
76
+ if (rookFrom === EMPTY || kingFrom === EMPTY) {
77
+ return;
78
+ }
79
+ // king and rook destinations are fixed: g/c and f/d files
80
+ const kingTo = side === BITS.KSIDE_CASTLE
81
+ ? us === 'w'
82
+ ? Ox88.g1
83
+ : Ox88.g8
84
+ : us === 'w'
85
+ ? Ox88.c1
86
+ : Ox88.c8;
87
+ const rookTo = side === BITS.KSIDE_CASTLE ? kingTo - 1 : kingTo + 1;
88
+ // the king may not castle while in check
89
+ if (attacked(board, them, kingFrom)) {
90
+ return;
91
+ }
92
+ // every square on the king's and rook's paths must be empty,
93
+ // except the king's and rook's origin squares
94
+ const path = new Set();
95
+ for (let sq = Math.min(rookFrom, rookTo); sq <= Math.max(rookFrom, rookTo); sq++) {
96
+ path.add(sq);
97
+ }
98
+ for (let sq = Math.min(kingFrom, kingTo); sq <= Math.max(kingFrom, kingTo); sq++) {
99
+ path.add(sq);
100
+ }
101
+ path.delete(kingFrom);
102
+ path.delete(rookFrom);
103
+ for (const sq of path) {
104
+ if (board[sq]) {
105
+ return;
106
+ }
107
+ }
108
+ // lift the king so sliders pass through its origin square
109
+ const kingPiece = board[kingFrom];
110
+ if (!kingPiece) {
111
+ return;
112
+ }
113
+ delete board[kingFrom];
114
+ let ok = true;
115
+ // every square the king crosses must be safe
116
+ for (let sq = Math.min(kingFrom, kingTo) + 1; sq < Math.max(kingFrom, kingTo); sq++) {
117
+ if (attacked(board, them, sq)) {
118
+ ok = false;
119
+ break;
120
+ }
121
+ }
122
+ // the destination must be safe with the rook already relocated
123
+ const rookPiece = board[rookFrom];
124
+ if (ok && rookPiece) {
125
+ delete board[rookFrom];
126
+ board[rookTo] = rookPiece;
127
+ ok = !attacked(board, them, kingTo);
128
+ board[rookFrom] = rookPiece;
129
+ if (rookTo !== rookFrom) {
130
+ delete board[rookTo];
131
+ }
132
+ }
133
+ // restore the king
134
+ board[kingFrom] = kingPiece;
135
+ if (ok) {
136
+ addMove(moves, us, kingFrom, kingTo, KING, undefined, side, rookFrom);
137
+ }
138
+ }
139
+ export function generatePseudoMoves(board, turn, epSquare, kings, castling, castlingRooks, { piece: forPiece, square, } = {}) {
140
+ const forSquare = square ? square.toLowerCase() : undefined;
141
+ const moves = [];
142
+ const us = turn;
143
+ const them = swapColor(us);
144
+ let firstSquare = Ox88.a8;
145
+ let lastSquare = Ox88.h1;
146
+ let singleSquare = false;
147
+ // are we generating moves for a single square?
148
+ if (forSquare) {
149
+ // illegal square, return empty moves
150
+ if (!(forSquare in Ox88)) {
151
+ return [];
152
+ }
153
+ else {
154
+ firstSquare = lastSquare = Ox88[forSquare];
155
+ singleSquare = true;
156
+ }
157
+ }
158
+ for (let from = firstSquare; from <= lastSquare; from++) {
159
+ // did we run off the end of the board
160
+ if (from & 0x88) {
161
+ from += 7;
162
+ continue;
163
+ }
164
+ // empty square or opponent, skip
165
+ if (!board[from] || board[from].color === them) {
166
+ continue;
167
+ }
168
+ const { type } = board[from];
169
+ let to;
170
+ if (type === PAWN) {
171
+ if (forPiece && forPiece !== type)
172
+ continue;
173
+ // single square, non-capturing
174
+ to = from + PAWN_OFFSETS[us][0];
175
+ if (!board[to]) {
176
+ addMove(moves, us, from, to, PAWN);
177
+ // double square
178
+ to = from + PAWN_OFFSETS[us][1];
179
+ if (SECOND_RANK[us] === rank(from) && !board[to]) {
180
+ addMove(moves, us, from, to, PAWN, undefined, BITS.BIG_PAWN);
181
+ }
182
+ }
183
+ // pawn captures
184
+ for (let j = 2; j < 4; j++) {
185
+ to = from + PAWN_OFFSETS[us][j];
186
+ if (to & 0x88)
187
+ continue;
188
+ if (board[to]?.color === them) {
189
+ addMove(moves, us, from, to, PAWN, board[to].type, BITS.CAPTURE);
190
+ }
191
+ else if (to === epSquare) {
192
+ addMove(moves, us, from, to, PAWN, PAWN, BITS.EP_CAPTURE);
193
+ }
194
+ }
195
+ }
196
+ else {
197
+ if (forPiece && forPiece !== type)
198
+ continue;
199
+ for (let j = 0, len = PIECE_OFFSETS[type].length; j < len; j++) {
200
+ const offset = PIECE_OFFSETS[type][j];
201
+ to = from;
202
+ while (true) {
203
+ to += offset;
204
+ if (to & 0x88)
205
+ break;
206
+ if (!board[to]) {
207
+ addMove(moves, us, from, to, type);
208
+ }
209
+ else {
210
+ // own color, stop loop
211
+ if (board[to].color === us)
212
+ break;
213
+ addMove(moves, us, from, to, type, board[to].type, BITS.CAPTURE);
214
+ break;
215
+ }
216
+ /* break, if knight or king */
217
+ if (type === KNIGHT || type === KING)
218
+ break;
219
+ }
220
+ }
221
+ }
222
+ }
223
+ /*
224
+ * check for castling if we're:
225
+ * a) generating all moves, or
226
+ * b) doing single square move generation on the king's square
227
+ */
228
+ if (forPiece === undefined || forPiece === KING) {
229
+ if (!singleSquare || lastSquare === kings[us]) {
230
+ // king-side castling
231
+ addCastlingMove(moves, us, them, BITS.KSIDE_CASTLE, board, kings, castling, castlingRooks);
232
+ // queen-side castling
233
+ addCastlingMove(moves, us, them, BITS.QSIDE_CASTLE, board, kings, castling, castlingRooks);
234
+ }
235
+ }
236
+ /*
237
+ * return all pseudo-legal moves (this includes moves that allow the king
238
+ * to be captured)
239
+ */
240
+ return moves;
241
+ }
242
+ //# sourceMappingURL=movegen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"movegen.js","sourceRoot":"","sources":["../src/movegen.ts"],"names":[],"mappings":"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"}
package/dist/node.d.ts ADDED
@@ -0,0 +1,8 @@
1
+ export type Node = {
2
+ move?: string;
3
+ suffix?: string;
4
+ nag?: string;
5
+ comment?: string;
6
+ variations: Node[];
7
+ };
8
+ //# sourceMappingURL=node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,IAAI,GAAG;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,IAAI,EAAE,CAAA;CACnB,CAAA"}
package/dist/node.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":""}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) 2025, Jeff Hlywa (jhlywa@gmail.com)
4
+ * All rights reserved.
5
+ *
6
+ * Redistribution and use in source and binary forms, with or without
7
+ * modification, are permitted provided that the following conditions are met:
8
+ *
9
+ * 1. Redistributions of source code must retain the above copyright notice,
10
+ * this list of conditions and the following disclaimer.
11
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
12
+ * this list of conditions and the following disclaimer in the documentation
13
+ * and/or other materials provided with the distribution.
14
+ *
15
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
16
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
19
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
20
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
21
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
24
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
25
+ * POSSIBILITY OF SUCH DAMAGE.
26
+ */
27
+ import type { Color, InternalMove, PieceSymbol } from './types.js';
28
+ export declare function getDisambiguator(move: InternalMove, moves: InternalMove[]): string;
29
+ export declare function inferPieceType(san: string): PieceSymbol | undefined;
30
+ export declare function strippedSan(move: string): string;
31
+ export declare function moveToSan(move: InternalMove, moves: InternalMove[]): string;
32
+ export declare function moveFromSan(move: string, turn: Color, legalMoves: InternalMove[], strict?: boolean): InternalMove | null;
33
+ //# sourceMappingURL=notation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notation.d.ts","sourceRoot":"","sources":["../src/notation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAU,MAAM,YAAY,CAAA;AAK1E,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,YAAY,EAClB,KAAK,EAAE,YAAY,EAAE,GACpB,MAAM,CAmDR;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAcnE;AAGD,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEhD;AAOD,wBAAgB,SAAS,CACvB,IAAI,EAAE,YAAY,EAClB,KAAK,EAAE,YAAY,EAAE,GACpB,MAAM,CA8BR;AAGD,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,KAAK,EACX,UAAU,EAAE,YAAY,EAAE,EAC1B,MAAM,UAAQ,GACb,YAAY,GAAG,IAAI,CAuJrB"}