js-chess-engine 1.0.3 → 2.0.1-rc.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 (104) hide show
  1. package/README.md +586 -205
  2. package/dist/adapters/APIAdapter.d.ts +88 -0
  3. package/dist/adapters/APIAdapter.d.ts.map +1 -0
  4. package/dist/adapters/APIAdapter.js +225 -0
  5. package/dist/adapters/APIAdapter.js.map +1 -0
  6. package/dist/ai/AIEngine.d.ts +42 -0
  7. package/dist/ai/AIEngine.d.ts.map +1 -0
  8. package/dist/ai/AIEngine.js +62 -0
  9. package/dist/ai/AIEngine.js.map +1 -0
  10. package/dist/ai/Evaluator.d.ts +48 -0
  11. package/dist/ai/Evaluator.d.ts.map +1 -0
  12. package/dist/ai/Evaluator.js +248 -0
  13. package/dist/ai/Evaluator.js.map +1 -0
  14. package/dist/ai/MoveOrdering.d.ts +60 -0
  15. package/dist/ai/MoveOrdering.d.ts.map +1 -0
  16. package/dist/ai/MoveOrdering.js +173 -0
  17. package/dist/ai/MoveOrdering.js.map +1 -0
  18. package/dist/ai/Search.d.ts +62 -0
  19. package/dist/ai/Search.d.ts.map +1 -0
  20. package/dist/ai/Search.js +340 -0
  21. package/dist/ai/Search.js.map +1 -0
  22. package/dist/ai/TranspositionTable.d.ts +100 -0
  23. package/dist/ai/TranspositionTable.d.ts.map +1 -0
  24. package/dist/ai/TranspositionTable.js +176 -0
  25. package/dist/ai/TranspositionTable.js.map +1 -0
  26. package/dist/core/AttackDetector.d.ts +52 -0
  27. package/dist/core/AttackDetector.d.ts.map +1 -0
  28. package/dist/core/AttackDetector.js +387 -0
  29. package/dist/core/AttackDetector.js.map +1 -0
  30. package/dist/core/Board.d.ts +109 -0
  31. package/dist/core/Board.d.ts.map +1 -0
  32. package/dist/core/Board.js +410 -0
  33. package/dist/core/Board.js.map +1 -0
  34. package/dist/core/MoveGenerator.d.ts +48 -0
  35. package/dist/core/MoveGenerator.d.ts.map +1 -0
  36. package/dist/core/MoveGenerator.js +678 -0
  37. package/dist/core/MoveGenerator.js.map +1 -0
  38. package/dist/core/Position.d.ts +135 -0
  39. package/dist/core/Position.d.ts.map +1 -0
  40. package/dist/core/Position.js +351 -0
  41. package/dist/core/Position.js.map +1 -0
  42. package/dist/core/index.d.ts +9 -0
  43. package/dist/core/index.d.ts.map +1 -0
  44. package/dist/core/index.js +25 -0
  45. package/dist/core/index.js.map +1 -0
  46. package/dist/core/zobrist.d.ts +93 -0
  47. package/dist/core/zobrist.d.ts.map +1 -0
  48. package/dist/core/zobrist.js +273 -0
  49. package/dist/core/zobrist.js.map +1 -0
  50. package/dist/index.d.ts +154 -0
  51. package/dist/index.d.ts.map +1 -0
  52. package/dist/index.js +353 -0
  53. package/dist/index.js.map +1 -0
  54. package/dist/types/ai.types.d.ts +97 -0
  55. package/dist/types/ai.types.d.ts.map +1 -0
  56. package/dist/types/ai.types.js +17 -0
  57. package/dist/types/ai.types.js.map +1 -0
  58. package/dist/types/board.types.d.ts +140 -0
  59. package/dist/types/board.types.d.ts.map +1 -0
  60. package/dist/types/board.types.js +34 -0
  61. package/dist/types/board.types.js.map +1 -0
  62. package/dist/types/index.d.ts +7 -0
  63. package/dist/types/index.d.ts.map +1 -0
  64. package/dist/types/index.js +26 -0
  65. package/dist/types/index.js.map +1 -0
  66. package/dist/types/move.types.d.ts +70 -0
  67. package/dist/types/move.types.d.ts.map +1 -0
  68. package/dist/types/move.types.js +53 -0
  69. package/dist/types/move.types.js.map +1 -0
  70. package/dist/utils/constants.d.ts +123 -0
  71. package/dist/utils/constants.d.ts.map +1 -0
  72. package/dist/utils/constants.js +259 -0
  73. package/dist/utils/constants.js.map +1 -0
  74. package/dist/utils/conversion.d.ts +152 -0
  75. package/dist/utils/conversion.d.ts.map +1 -0
  76. package/dist/utils/conversion.js +288 -0
  77. package/dist/utils/conversion.js.map +1 -0
  78. package/dist/utils/environment.d.ts +33 -0
  79. package/dist/utils/environment.d.ts.map +1 -0
  80. package/dist/utils/environment.js +71 -0
  81. package/dist/utils/environment.js.map +1 -0
  82. package/dist/utils/fen.d.ts +28 -0
  83. package/dist/utils/fen.d.ts.map +1 -0
  84. package/dist/utils/fen.js +203 -0
  85. package/dist/utils/fen.js.map +1 -0
  86. package/package.json +25 -29
  87. package/.eslintrc.json +0 -16
  88. package/.github/workflows/main.yml +0 -20
  89. package/.nvmrc +0 -1
  90. package/CHANGELOG.md +0 -597
  91. package/dist/js-chess-engine.js +0 -1
  92. package/example/aiMatch.mjs +0 -21
  93. package/example/console.mjs +0 -37
  94. package/example/server.mjs +0 -27
  95. package/lib/Board.mjs +0 -946
  96. package/lib/const/board.mjs +0 -838
  97. package/lib/js-chess-engine.mjs +0 -99
  98. package/lib/utils.mjs +0 -154
  99. package/test/.eslintrc.json +0 -11
  100. package/test/ai.test.mjs +0 -132
  101. package/test/badge.svg +0 -1
  102. package/test/importExport.mjs +0 -108
  103. package/test/moves.test.mjs +0 -798
  104. 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,48 +1,44 @@
1
1
  {
2
2
  "name": "js-chess-engine",
3
- "version": "1.0.3",
3
+ "version": "2.0.1-rc.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/js-chess-engine.js",
10
+ "main": "dist/index.js",
11
+ "types": "dist/index.d.ts",
12
+ "files": [
13
+ "dist"
14
+ ],
11
15
  "scripts": {
12
- "server:watch": "nodemon --experimental-modules example/server.mjs",
13
- "console:watch": "nodemon --experimental-modules example/console.mjs",
14
- "test": "npm run test:eslint && mocha --experimental-modules --timeout 20000",
15
- "test:eslint": "eslint --ext mjs,js lib test",
16
- "test:badge": "npm run test:eslint && mocha --reporter mocha-badge-generator --timeout 20000 --experimental-modules && git add test/badge.svg",
17
- "build": "webpack --config webpack.config.js",
18
- "version": "conventional-changelog -p angular -i CHANGELOG.md -s && git add CHANGELOG.md",
19
- "preversion": "npm run test:badge && npm run build && git add -A dist"
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
29
  "repository": "github:josefjadrny/js-chess-engine",
23
30
  "homepage": "https://github.com/josefjadrny/js-chess-engine#readme",
24
31
  "license": "MIT",
25
32
  "engines": {
26
- "node": ">=20 <21"
33
+ "node": ">=24"
27
34
  },
28
35
  "devDependencies": {
29
- "chai": "^4.2.0",
30
- "conventional-changelog-cli": "^2.0.34",
31
- "es6-template-strings": "^2.0.1",
32
- "eslint": "^7.0.0",
33
- "eslint-config-standard": "^14.1.1",
34
- "eslint-plugin-import": "^2.20.2",
35
- "eslint-plugin-jest": "^23.10.0",
36
- "eslint-plugin-mocha": "^6.3.0",
37
- "eslint-plugin-node": "^11.1.0",
38
- "eslint-plugin-promise": "^4.2.1",
39
- "eslint-plugin-standard": "^4.0.1",
40
- "fastify": "^2.14.1",
41
- "fastify-cors": "^3.0.3",
42
- "mocha": "^9.1.3",
43
- "mocha-badge-generator": "^0.3.0",
44
- "nodemon": "^2.0.3",
45
- "webpack": "^4.43.0",
46
- "webpack-cli": "^4.9.1"
36
+ "@types/jest": "^30.0.0",
37
+ "@types/node": "^25.0.9",
38
+ "conventional-changelog-cli": "^5.0.0",
39
+ "jest": "^30.2.0",
40
+ "ts-jest": "^29.4.6",
41
+ "ts-node": "^10.9.2",
42
+ "typescript": "^5.9.3"
47
43
  }
48
44
  }
package/.eslintrc.json DELETED
@@ -1,16 +0,0 @@
1
- {
2
- "env": {
3
- "es6": true
4
- },
5
- "extends": [
6
- "standard"
7
- ],
8
- "parserOptions": {
9
- "ecmaVersion": 2020,
10
- "sourceType": "module"
11
- },
12
- "rules": {
13
- "indent": ["error", 4],
14
- "comma-dangle": ["error", "always-multiline"]
15
- }
16
- }
@@ -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: [18.x, 20.x]
12
-
13
- steps:
14
- - uses: actions/checkout@v2
15
- - name: Use Node.js ${{ matrix.node-version }}
16
- uses: actions/setup-node@v2
17
- with:
18
- node-version: ${{ matrix.node-version }}
19
- - run: npm install
20
- - run: npm test
package/.nvmrc DELETED
@@ -1 +0,0 @@
1
- 20