js-chess-engine 1.0.2 → 2.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.
- package/README.md +586 -205
- package/dist/adapters/APIAdapter.d.ts +88 -0
- package/dist/adapters/APIAdapter.d.ts.map +1 -0
- package/dist/adapters/APIAdapter.js +225 -0
- package/dist/adapters/APIAdapter.js.map +1 -0
- package/dist/ai/AIEngine.d.ts +42 -0
- package/dist/ai/AIEngine.d.ts.map +1 -0
- package/dist/ai/AIEngine.js +62 -0
- package/dist/ai/AIEngine.js.map +1 -0
- package/dist/ai/Evaluator.d.ts +48 -0
- package/dist/ai/Evaluator.d.ts.map +1 -0
- package/dist/ai/Evaluator.js +248 -0
- package/dist/ai/Evaluator.js.map +1 -0
- package/dist/ai/MoveOrdering.d.ts +60 -0
- package/dist/ai/MoveOrdering.d.ts.map +1 -0
- package/dist/ai/MoveOrdering.js +173 -0
- package/dist/ai/MoveOrdering.js.map +1 -0
- package/dist/ai/Search.d.ts +62 -0
- package/dist/ai/Search.d.ts.map +1 -0
- package/dist/ai/Search.js +340 -0
- package/dist/ai/Search.js.map +1 -0
- package/dist/ai/TranspositionTable.d.ts +100 -0
- package/dist/ai/TranspositionTable.d.ts.map +1 -0
- package/dist/ai/TranspositionTable.js +176 -0
- package/dist/ai/TranspositionTable.js.map +1 -0
- package/dist/core/AttackDetector.d.ts +52 -0
- package/dist/core/AttackDetector.d.ts.map +1 -0
- package/dist/core/AttackDetector.js +397 -0
- package/dist/core/AttackDetector.js.map +1 -0
- package/dist/core/Board.d.ts +109 -0
- package/dist/core/Board.d.ts.map +1 -0
- package/dist/core/Board.js +410 -0
- package/dist/core/Board.js.map +1 -0
- package/dist/core/MoveGenerator.d.ts +48 -0
- package/dist/core/MoveGenerator.d.ts.map +1 -0
- package/dist/core/MoveGenerator.js +678 -0
- package/dist/core/MoveGenerator.js.map +1 -0
- package/dist/core/Position.d.ts +135 -0
- package/dist/core/Position.d.ts.map +1 -0
- package/dist/core/Position.js +351 -0
- package/dist/core/Position.js.map +1 -0
- package/dist/core/index.d.ts +9 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +25 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/zobrist.d.ts +93 -0
- package/dist/core/zobrist.d.ts.map +1 -0
- package/dist/core/zobrist.js +273 -0
- package/dist/core/zobrist.js.map +1 -0
- package/dist/index.d.ts +154 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +353 -0
- package/dist/index.js.map +1 -0
- package/dist/types/ai.types.d.ts +97 -0
- package/dist/types/ai.types.d.ts.map +1 -0
- package/dist/types/ai.types.js +17 -0
- package/dist/types/ai.types.js.map +1 -0
- package/dist/types/board.types.d.ts +140 -0
- package/dist/types/board.types.d.ts.map +1 -0
- package/dist/types/board.types.js +34 -0
- package/dist/types/board.types.js.map +1 -0
- package/dist/types/index.d.ts +7 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +26 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/move.types.d.ts +70 -0
- package/dist/types/move.types.d.ts.map +1 -0
- package/dist/types/move.types.js +53 -0
- package/dist/types/move.types.js.map +1 -0
- package/dist/utils/constants.d.ts +123 -0
- package/dist/utils/constants.d.ts.map +1 -0
- package/dist/utils/constants.js +259 -0
- package/dist/utils/constants.js.map +1 -0
- package/dist/utils/conversion.d.ts +152 -0
- package/dist/utils/conversion.d.ts.map +1 -0
- package/dist/utils/conversion.js +288 -0
- package/dist/utils/conversion.js.map +1 -0
- package/dist/utils/environment.d.ts +33 -0
- package/dist/utils/environment.d.ts.map +1 -0
- package/dist/utils/environment.js +71 -0
- package/dist/utils/environment.js.map +1 -0
- package/dist/utils/fen.d.ts +28 -0
- package/dist/utils/fen.d.ts.map +1 -0
- package/dist/utils/fen.js +203 -0
- package/dist/utils/fen.js.map +1 -0
- package/package.json +31 -29
- package/.eslintrc.json +0 -16
- package/.github/workflows/main.yml +0 -20
- package/CHANGELOG.md +0 -587
- package/dist/js-chess-engine.js +0 -1
- package/example/aiMatch.mjs +0 -21
- package/example/console.mjs +0 -37
- package/example/server.mjs +0 -27
- package/lib/Board.mjs +0 -943
- package/lib/const/board.mjs +0 -838
- package/lib/js-chess-engine.mjs +0 -99
- package/lib/utils.mjs +0 -154
- package/test/.eslintrc.json +0 -11
- package/test/ai.test.mjs +0 -132
- package/test/badge.svg +0 -1
- package/test/importExport.mjs +0 -108
- package/test/moves.test.mjs +0 -773
- package/webpack.config.js +0 -12
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* FEN (Forsyth-Edwards Notation) parser and formatter
|
|
4
|
+
*
|
|
5
|
+
* FEN format: pieces turn castling enPassant halfMove fullMove
|
|
6
|
+
* Example: rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.parseFEN = parseFEN;
|
|
10
|
+
exports.toFEN = toFEN;
|
|
11
|
+
exports.getStartingFEN = getStartingFEN;
|
|
12
|
+
const types_1 = require("../types");
|
|
13
|
+
const Board_1 = require("../core/Board");
|
|
14
|
+
const conversion_1 = require("./conversion");
|
|
15
|
+
/**
|
|
16
|
+
* Parse a FEN string into an internal board
|
|
17
|
+
*
|
|
18
|
+
* @param fen - FEN string
|
|
19
|
+
* @returns Internal board representation
|
|
20
|
+
*/
|
|
21
|
+
function parseFEN(fen) {
|
|
22
|
+
const parts = fen.trim().split(/\s+/);
|
|
23
|
+
if (parts.length !== 6) {
|
|
24
|
+
throw new Error(`Invalid FEN: expected 6 parts, got ${parts.length}`);
|
|
25
|
+
}
|
|
26
|
+
const [piecePlacement, activeColor, castling, enPassant, halfMove, fullMove] = parts;
|
|
27
|
+
const board = (0, Board_1.createEmptyBoard)();
|
|
28
|
+
// Parse piece placement (ranks 8 to 1, separated by /)
|
|
29
|
+
const ranks = piecePlacement.split('/');
|
|
30
|
+
if (ranks.length !== 8) {
|
|
31
|
+
throw new Error(`Invalid FEN: expected 8 ranks, got ${ranks.length}`);
|
|
32
|
+
}
|
|
33
|
+
for (let rank = 0; rank < 8; rank++) {
|
|
34
|
+
const rankStr = ranks[rank];
|
|
35
|
+
let file = 0;
|
|
36
|
+
for (const char of rankStr) {
|
|
37
|
+
if (char >= '1' && char <= '8') {
|
|
38
|
+
// Empty squares
|
|
39
|
+
file += parseInt(char, 10);
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
// Piece
|
|
43
|
+
const piece = fenCharToPiece(char);
|
|
44
|
+
if (piece === null) {
|
|
45
|
+
throw new Error(`Invalid FEN: unknown piece character '${char}'`);
|
|
46
|
+
}
|
|
47
|
+
// Convert rank/file to square index
|
|
48
|
+
// FEN ranks go from 8 to 1 (top to bottom)
|
|
49
|
+
// Our indices go from 0 to 63 (bottom to top, left to right)
|
|
50
|
+
const squareIndex = (7 - rank) * 8 + file;
|
|
51
|
+
(0, Board_1.setPiece)(board, squareIndex, piece);
|
|
52
|
+
file++;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
if (file !== 8) {
|
|
56
|
+
throw new Error(`Invalid FEN: rank ${8 - rank} has ${file} files instead of 8`);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
// Parse active color
|
|
60
|
+
if (activeColor === 'w') {
|
|
61
|
+
board.turn = types_1.InternalColor.WHITE;
|
|
62
|
+
}
|
|
63
|
+
else if (activeColor === 'b') {
|
|
64
|
+
board.turn = types_1.InternalColor.BLACK;
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
throw new Error(`Invalid FEN: unknown active color '${activeColor}'`);
|
|
68
|
+
}
|
|
69
|
+
// Parse castling rights
|
|
70
|
+
board.castlingRights.whiteShort = castling.includes('K');
|
|
71
|
+
board.castlingRights.whiteLong = castling.includes('Q');
|
|
72
|
+
board.castlingRights.blackShort = castling.includes('k');
|
|
73
|
+
board.castlingRights.blackLong = castling.includes('q');
|
|
74
|
+
// Parse en passant square
|
|
75
|
+
if (enPassant !== '-') {
|
|
76
|
+
board.enPassantSquare = (0, conversion_1.squareToIndex)(enPassant.toUpperCase());
|
|
77
|
+
}
|
|
78
|
+
// Parse half-move clock (for 50-move rule)
|
|
79
|
+
board.halfMoveClock = parseInt(halfMove, 10);
|
|
80
|
+
if (isNaN(board.halfMoveClock)) {
|
|
81
|
+
throw new Error(`Invalid FEN: invalid half-move clock '${halfMove}'`);
|
|
82
|
+
}
|
|
83
|
+
// Parse full move number
|
|
84
|
+
board.fullMoveNumber = parseInt(fullMove, 10);
|
|
85
|
+
if (isNaN(board.fullMoveNumber)) {
|
|
86
|
+
throw new Error(`Invalid FEN: invalid full move number '${fullMove}'`);
|
|
87
|
+
}
|
|
88
|
+
return board;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Convert an internal board to a FEN string
|
|
92
|
+
*
|
|
93
|
+
* @param board - Internal board
|
|
94
|
+
* @returns FEN string
|
|
95
|
+
*/
|
|
96
|
+
function toFEN(board) {
|
|
97
|
+
const parts = [];
|
|
98
|
+
// 1. Piece placement (ranks 8 to 1)
|
|
99
|
+
const rankStrings = [];
|
|
100
|
+
for (let rank = 7; rank >= 0; rank--) {
|
|
101
|
+
let rankStr = '';
|
|
102
|
+
let emptyCount = 0;
|
|
103
|
+
for (let file = 0; file < 8; file++) {
|
|
104
|
+
const squareIndex = rank * 8 + file;
|
|
105
|
+
const piece = board.mailbox[squareIndex];
|
|
106
|
+
if (piece === types_1.Piece.EMPTY) {
|
|
107
|
+
emptyCount++;
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
if (emptyCount > 0) {
|
|
111
|
+
rankStr += emptyCount.toString();
|
|
112
|
+
emptyCount = 0;
|
|
113
|
+
}
|
|
114
|
+
rankStr += pieceToFenChar(piece);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
if (emptyCount > 0) {
|
|
118
|
+
rankStr += emptyCount.toString();
|
|
119
|
+
}
|
|
120
|
+
rankStrings.push(rankStr);
|
|
121
|
+
}
|
|
122
|
+
parts.push(rankStrings.join('/'));
|
|
123
|
+
// 2. Active color
|
|
124
|
+
parts.push(board.turn === types_1.InternalColor.WHITE ? 'w' : 'b');
|
|
125
|
+
// 3. Castling rights
|
|
126
|
+
let castling = '';
|
|
127
|
+
if (board.castlingRights.whiteShort)
|
|
128
|
+
castling += 'K';
|
|
129
|
+
if (board.castlingRights.whiteLong)
|
|
130
|
+
castling += 'Q';
|
|
131
|
+
if (board.castlingRights.blackShort)
|
|
132
|
+
castling += 'k';
|
|
133
|
+
if (board.castlingRights.blackLong)
|
|
134
|
+
castling += 'q';
|
|
135
|
+
parts.push(castling || '-');
|
|
136
|
+
// 4. En passant square
|
|
137
|
+
if (board.enPassantSquare !== null) {
|
|
138
|
+
parts.push((0, conversion_1.indexToSquare)(board.enPassantSquare).toLowerCase());
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
parts.push('-');
|
|
142
|
+
}
|
|
143
|
+
// 5. Half-move clock
|
|
144
|
+
parts.push(board.halfMoveClock.toString());
|
|
145
|
+
// 6. Full move number
|
|
146
|
+
parts.push(board.fullMoveNumber.toString());
|
|
147
|
+
return parts.join(' ');
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Convert a FEN character to a piece enum
|
|
151
|
+
*
|
|
152
|
+
* @param char - FEN character (K, Q, R, B, N, P, k, q, r, b, n, p)
|
|
153
|
+
* @returns Piece enum value or null if invalid
|
|
154
|
+
*/
|
|
155
|
+
function fenCharToPiece(char) {
|
|
156
|
+
switch (char) {
|
|
157
|
+
case 'K': return types_1.Piece.WHITE_KING;
|
|
158
|
+
case 'Q': return types_1.Piece.WHITE_QUEEN;
|
|
159
|
+
case 'R': return types_1.Piece.WHITE_ROOK;
|
|
160
|
+
case 'B': return types_1.Piece.WHITE_BISHOP;
|
|
161
|
+
case 'N': return types_1.Piece.WHITE_KNIGHT;
|
|
162
|
+
case 'P': return types_1.Piece.WHITE_PAWN;
|
|
163
|
+
case 'k': return types_1.Piece.BLACK_KING;
|
|
164
|
+
case 'q': return types_1.Piece.BLACK_QUEEN;
|
|
165
|
+
case 'r': return types_1.Piece.BLACK_ROOK;
|
|
166
|
+
case 'b': return types_1.Piece.BLACK_BISHOP;
|
|
167
|
+
case 'n': return types_1.Piece.BLACK_KNIGHT;
|
|
168
|
+
case 'p': return types_1.Piece.BLACK_PAWN;
|
|
169
|
+
default: return null;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Convert a piece enum to a FEN character
|
|
174
|
+
*
|
|
175
|
+
* @param piece - Piece enum value
|
|
176
|
+
* @returns FEN character
|
|
177
|
+
*/
|
|
178
|
+
function pieceToFenChar(piece) {
|
|
179
|
+
switch (piece) {
|
|
180
|
+
case types_1.Piece.WHITE_KING: return 'K';
|
|
181
|
+
case types_1.Piece.WHITE_QUEEN: return 'Q';
|
|
182
|
+
case types_1.Piece.WHITE_ROOK: return 'R';
|
|
183
|
+
case types_1.Piece.WHITE_BISHOP: return 'B';
|
|
184
|
+
case types_1.Piece.WHITE_KNIGHT: return 'N';
|
|
185
|
+
case types_1.Piece.WHITE_PAWN: return 'P';
|
|
186
|
+
case types_1.Piece.BLACK_KING: return 'k';
|
|
187
|
+
case types_1.Piece.BLACK_QUEEN: return 'q';
|
|
188
|
+
case types_1.Piece.BLACK_ROOK: return 'r';
|
|
189
|
+
case types_1.Piece.BLACK_BISHOP: return 'b';
|
|
190
|
+
case types_1.Piece.BLACK_KNIGHT: return 'n';
|
|
191
|
+
case types_1.Piece.BLACK_PAWN: return 'p';
|
|
192
|
+
default: return '';
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Get FEN for starting position
|
|
197
|
+
*
|
|
198
|
+
* @returns FEN string for standard chess starting position
|
|
199
|
+
*/
|
|
200
|
+
function getStartingFEN() {
|
|
201
|
+
return 'rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1';
|
|
202
|
+
}
|
|
203
|
+
//# sourceMappingURL=fen.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fen.js","sourceRoot":"","sources":["../../src/utils/fen.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,45 +1,47 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "js-chess-engine",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"description": "Simple and fast Node.js chess engine without dependencies",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"chess",
|
|
7
7
|
"game",
|
|
8
8
|
"chess engine"
|
|
9
9
|
],
|
|
10
|
-
"main": "dist/
|
|
10
|
+
"main": "dist/index.js",
|
|
11
|
+
"types": "dist/index.d.ts",
|
|
12
|
+
"files": [
|
|
13
|
+
"dist"
|
|
14
|
+
],
|
|
11
15
|
"scripts": {
|
|
12
|
-
"
|
|
13
|
-
"
|
|
14
|
-
"
|
|
15
|
-
"
|
|
16
|
-
"test
|
|
17
|
-
"
|
|
18
|
-
"
|
|
19
|
-
"
|
|
16
|
+
"build": "tsc",
|
|
17
|
+
"build:watch": "tsc --watch",
|
|
18
|
+
"clean": "rm -rf dist",
|
|
19
|
+
"prebuild": "npm run clean",
|
|
20
|
+
"test": "jest",
|
|
21
|
+
"test:watch": "jest --watch",
|
|
22
|
+
"test:coverage": "jest --coverage",
|
|
23
|
+
"typecheck": "tsc --noEmit",
|
|
24
|
+
"play": "node example/play.mjs",
|
|
25
|
+
"preversion": "npm test && npm run build",
|
|
26
|
+
"version": "conventional-changelog -p angular -i CHANGELOG.md -s && git add CHANGELOG.md"
|
|
20
27
|
},
|
|
21
28
|
"author": "bc.josefjadrny@gmail.com",
|
|
22
|
-
"repository":
|
|
29
|
+
"repository": {
|
|
30
|
+
"type": "git",
|
|
31
|
+
"url": "git+https://github.com/josefjadrny/js-chess-engine.git"
|
|
32
|
+
},
|
|
23
33
|
"homepage": "https://github.com/josefjadrny/js-chess-engine#readme",
|
|
24
34
|
"license": "MIT",
|
|
35
|
+
"engines": {
|
|
36
|
+
"node": ">=24"
|
|
37
|
+
},
|
|
25
38
|
"devDependencies": {
|
|
26
|
-
"
|
|
27
|
-
"
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
"
|
|
31
|
-
"
|
|
32
|
-
"
|
|
33
|
-
"eslint-plugin-mocha": "^6.3.0",
|
|
34
|
-
"eslint-plugin-node": "^11.1.0",
|
|
35
|
-
"eslint-plugin-promise": "^4.2.1",
|
|
36
|
-
"eslint-plugin-standard": "^4.0.1",
|
|
37
|
-
"fastify": "^2.14.1",
|
|
38
|
-
"fastify-cors": "^3.0.3",
|
|
39
|
-
"mocha": "^9.1.3",
|
|
40
|
-
"mocha-badge-generator": "^0.3.0",
|
|
41
|
-
"nodemon": "^2.0.3",
|
|
42
|
-
"webpack": "^4.43.0",
|
|
43
|
-
"webpack-cli": "^4.9.1"
|
|
39
|
+
"@types/jest": "^30.0.0",
|
|
40
|
+
"@types/node": "^25.0.9",
|
|
41
|
+
"conventional-changelog-cli": "^5.0.0",
|
|
42
|
+
"jest": "^30.2.0",
|
|
43
|
+
"ts-jest": "^29.4.6",
|
|
44
|
+
"ts-node": "^10.9.2",
|
|
45
|
+
"typescript": "^5.9.3"
|
|
44
46
|
}
|
|
45
47
|
}
|
package/.eslintrc.json
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
name: CI
|
|
2
|
-
|
|
3
|
-
on: [push]
|
|
4
|
-
|
|
5
|
-
jobs:
|
|
6
|
-
build:
|
|
7
|
-
runs-on: ubuntu-latest
|
|
8
|
-
|
|
9
|
-
strategy:
|
|
10
|
-
matrix:
|
|
11
|
-
node-version: [12.x, 14.x]
|
|
12
|
-
|
|
13
|
-
steps:
|
|
14
|
-
- uses: actions/checkout@v2
|
|
15
|
-
- name: Use Node.js ${{ matrix.node-version }}
|
|
16
|
-
uses: actions/setup-node@v1
|
|
17
|
-
with:
|
|
18
|
-
node-version: ${{ matrix.node-version }}
|
|
19
|
-
- run: npm install
|
|
20
|
-
- run: npm test
|