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.
Files changed (103) 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 +397 -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 +31 -29
  87. package/.eslintrc.json +0 -16
  88. package/.github/workflows/main.yml +0 -20
  89. package/CHANGELOG.md +0 -587
  90. package/dist/js-chess-engine.js +0 -1
  91. package/example/aiMatch.mjs +0 -21
  92. package/example/console.mjs +0 -37
  93. package/example/server.mjs +0 -27
  94. package/lib/Board.mjs +0 -943
  95. package/lib/const/board.mjs +0 -838
  96. package/lib/js-chess-engine.mjs +0 -99
  97. package/lib/utils.mjs +0 -154
  98. package/test/.eslintrc.json +0 -11
  99. package/test/ai.test.mjs +0 -132
  100. package/test/badge.svg +0 -1
  101. package/test/importExport.mjs +0 -108
  102. package/test/moves.test.mjs +0 -773
  103. package/webpack.config.js +0 -12
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Type definitions for js-chess-engine v2
3
+ */
4
+ export * from './board.types';
5
+ export * from './move.types';
6
+ export * from './ai.types';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,cAAc,eAAe,CAAC;AAG9B,cAAc,cAAc,CAAC;AAG7B,cAAc,YAAY,CAAC"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ /**
3
+ * Type definitions for js-chess-engine v2
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
17
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
18
+ };
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ // Export all board types
21
+ __exportStar(require("./board.types"), exports);
22
+ // Export all move types
23
+ __exportStar(require("./move.types"), exports);
24
+ // Export all AI types
25
+ __exportStar(require("./ai.types"), exports);
26
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;AAEH,yBAAyB;AACzB,gDAA8B;AAE9B,wBAAwB;AACxB,+CAA6B;AAE7B,sBAAsB;AACtB,6CAA2B"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Move-related types for js-chess-engine
3
+ */
4
+ import { Square, SquareIndex, Piece } from './board.types';
5
+ /**
6
+ * Public move representation
7
+ */
8
+ export interface PublicMove {
9
+ [from: Square]: Square;
10
+ }
11
+ /**
12
+ * Move flags for special moves
13
+ */
14
+ export declare enum MoveFlag {
15
+ NONE = 0,
16
+ EN_PASSANT = 1,
17
+ CASTLING = 2,
18
+ PROMOTION = 4,
19
+ PAWN_DOUBLE_PUSH = 8,
20
+ CAPTURE = 16
21
+ }
22
+ /**
23
+ * Promotion piece type
24
+ */
25
+ export declare enum PromotionPiece {
26
+ QUEEN = 5,// Or BLACK_QUEEN based on color
27
+ ROOK = 4,
28
+ BISHOP = 3,
29
+ KNIGHT = 2
30
+ }
31
+ /**
32
+ * Internal move representation (compact)
33
+ */
34
+ export interface InternalMove {
35
+ from: SquareIndex;
36
+ to: SquareIndex;
37
+ piece: Piece;
38
+ capturedPiece: Piece;
39
+ flags: MoveFlag;
40
+ promotionPiece?: Piece;
41
+ }
42
+ /**
43
+ * Move with score for AI search
44
+ */
45
+ export interface ScoredMove {
46
+ move: InternalMove;
47
+ score: number;
48
+ }
49
+ /**
50
+ * Castling type
51
+ */
52
+ export declare enum CastlingType {
53
+ NONE = 0,
54
+ WHITE_SHORT = 1,
55
+ WHITE_LONG = 2,
56
+ BLACK_SHORT = 3,
57
+ BLACK_LONG = 4
58
+ }
59
+ /**
60
+ * Move ordering types
61
+ */
62
+ export declare enum MoveOrderType {
63
+ TT_MOVE = 1000000,// Transposition table move
64
+ WINNING_CAPTURE = 100000,// MVV-LVA captures with positive score
65
+ KILLER_1 = 90000,// First killer move
66
+ KILLER_2 = 80000,// Second killer move
67
+ HISTORY = 0,// History heuristic (0-70000 range)
68
+ LOSING_CAPTURE = -10000
69
+ }
70
+ //# sourceMappingURL=move.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"move.types.d.ts","sourceRoot":"","sources":["../../src/types/move.types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAI3D;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1B;AAID;;GAEG;AACH,oBAAY,QAAQ;IAChB,IAAI,IAAI;IACR,UAAU,IAAI;IACd,QAAQ,IAAI;IACZ,SAAS,IAAI;IACb,gBAAgB,IAAI;IACpB,OAAO,KAAK;CACf;AAED;;GAEG;AACH,oBAAY,cAAc;IACtB,KAAK,IAAoB,CAAE,gCAAgC;IAC3D,IAAI,IAAmB;IACvB,MAAM,IAAqB;IAC3B,MAAM,IAAqB;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,WAAW,CAAC;IAClB,EAAE,EAAE,WAAW,CAAC;IAChB,KAAK,EAAE,KAAK,CAAC;IACb,aAAa,EAAE,KAAK,CAAC;IACrB,KAAK,EAAE,QAAQ,CAAC;IAChB,cAAc,CAAC,EAAE,KAAK,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,oBAAY,YAAY;IACpB,IAAI,IAAI;IACR,WAAW,IAAI;IACf,UAAU,IAAI;IACd,WAAW,IAAI;IACf,UAAU,IAAI;CACjB;AAED;;GAEG;AACH,oBAAY,aAAa;IACrB,OAAO,UAAU,CAAO,2BAA2B;IACnD,eAAe,SAAS,CAAE,uCAAuC;IACjE,QAAQ,QAAQ,CAAQ,oBAAoB;IAC5C,QAAQ,QAAQ,CAAQ,qBAAqB;IAC7C,OAAO,IAAI,CAAa,oCAAoC;IAC5D,cAAc,SAAS;CAC1B"}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ /**
3
+ * Move-related types for js-chess-engine
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.MoveOrderType = exports.CastlingType = exports.PromotionPiece = exports.MoveFlag = void 0;
7
+ // ==================== Internal Types ====================
8
+ /**
9
+ * Move flags for special moves
10
+ */
11
+ var MoveFlag;
12
+ (function (MoveFlag) {
13
+ MoveFlag[MoveFlag["NONE"] = 0] = "NONE";
14
+ MoveFlag[MoveFlag["EN_PASSANT"] = 1] = "EN_PASSANT";
15
+ MoveFlag[MoveFlag["CASTLING"] = 2] = "CASTLING";
16
+ MoveFlag[MoveFlag["PROMOTION"] = 4] = "PROMOTION";
17
+ MoveFlag[MoveFlag["PAWN_DOUBLE_PUSH"] = 8] = "PAWN_DOUBLE_PUSH";
18
+ MoveFlag[MoveFlag["CAPTURE"] = 16] = "CAPTURE";
19
+ })(MoveFlag || (exports.MoveFlag = MoveFlag = {}));
20
+ /**
21
+ * Promotion piece type
22
+ */
23
+ var PromotionPiece;
24
+ (function (PromotionPiece) {
25
+ PromotionPiece[PromotionPiece["QUEEN"] = 5] = "QUEEN";
26
+ PromotionPiece[PromotionPiece["ROOK"] = 4] = "ROOK";
27
+ PromotionPiece[PromotionPiece["BISHOP"] = 3] = "BISHOP";
28
+ PromotionPiece[PromotionPiece["KNIGHT"] = 2] = "KNIGHT";
29
+ })(PromotionPiece || (exports.PromotionPiece = PromotionPiece = {}));
30
+ /**
31
+ * Castling type
32
+ */
33
+ var CastlingType;
34
+ (function (CastlingType) {
35
+ CastlingType[CastlingType["NONE"] = 0] = "NONE";
36
+ CastlingType[CastlingType["WHITE_SHORT"] = 1] = "WHITE_SHORT";
37
+ CastlingType[CastlingType["WHITE_LONG"] = 2] = "WHITE_LONG";
38
+ CastlingType[CastlingType["BLACK_SHORT"] = 3] = "BLACK_SHORT";
39
+ CastlingType[CastlingType["BLACK_LONG"] = 4] = "BLACK_LONG";
40
+ })(CastlingType || (exports.CastlingType = CastlingType = {}));
41
+ /**
42
+ * Move ordering types
43
+ */
44
+ var MoveOrderType;
45
+ (function (MoveOrderType) {
46
+ MoveOrderType[MoveOrderType["TT_MOVE"] = 1000000] = "TT_MOVE";
47
+ MoveOrderType[MoveOrderType["WINNING_CAPTURE"] = 100000] = "WINNING_CAPTURE";
48
+ MoveOrderType[MoveOrderType["KILLER_1"] = 90000] = "KILLER_1";
49
+ MoveOrderType[MoveOrderType["KILLER_2"] = 80000] = "KILLER_2";
50
+ MoveOrderType[MoveOrderType["HISTORY"] = 0] = "HISTORY";
51
+ MoveOrderType[MoveOrderType["LOSING_CAPTURE"] = -10000] = "LOSING_CAPTURE";
52
+ })(MoveOrderType || (exports.MoveOrderType = MoveOrderType = {}));
53
+ //# sourceMappingURL=move.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"move.types.js","sourceRoot":"","sources":["../../src/types/move.types.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAaH,2DAA2D;AAE3D;;GAEG;AACH,IAAY,QAOX;AAPD,WAAY,QAAQ;IAChB,uCAAQ,CAAA;IACR,mDAAc,CAAA;IACd,+CAAY,CAAA;IACZ,iDAAa,CAAA;IACb,+DAAoB,CAAA;IACpB,8CAAY,CAAA;AAChB,CAAC,EAPW,QAAQ,wBAAR,QAAQ,QAOnB;AAED;;GAEG;AACH,IAAY,cAKX;AALD,WAAY,cAAc;IACtB,qDAAyB,CAAA;IACzB,mDAAuB,CAAA;IACvB,uDAA2B,CAAA;IAC3B,uDAA2B,CAAA;AAC/B,CAAC,EALW,cAAc,8BAAd,cAAc,QAKzB;AAsBD;;GAEG;AACH,IAAY,YAMX;AAND,WAAY,YAAY;IACpB,+CAAQ,CAAA;IACR,6DAAe,CAAA;IACf,2DAAc,CAAA;IACd,6DAAe,CAAA;IACf,2DAAc,CAAA;AAClB,CAAC,EANW,YAAY,4BAAZ,YAAY,QAMvB;AAED;;GAEG;AACH,IAAY,aAOX;AAPD,WAAY,aAAa;IACrB,6DAAiB,CAAA;IACjB,4EAAwB,CAAA;IACxB,6DAAgB,CAAA;IAChB,6DAAgB,CAAA;IAChB,uDAAW,CAAA;IACX,0EAAuB,CAAA;AAC3B,CAAC,EAPW,aAAa,6BAAb,aAAa,QAOxB"}
@@ -0,0 +1,123 @@
1
+ /**
2
+ * Constants for js-chess-engine v2
3
+ */
4
+ import { Color, Column, Row, PieceSymbol, Piece } from '../types';
5
+ export declare const BOARD_SIZE = 8;
6
+ export declare const TOTAL_SQUARES = 64;
7
+ export declare const COLUMNS: readonly Column[];
8
+ export declare const ROWS: readonly Row[];
9
+ export declare const PIECES: {
10
+ readonly KING_W: "K";
11
+ readonly QUEEN_W: "Q";
12
+ readonly ROOK_W: "R";
13
+ readonly BISHOP_W: "B";
14
+ readonly KNIGHT_W: "N";
15
+ readonly PAWN_W: "P";
16
+ readonly KING_B: "k";
17
+ readonly QUEEN_B: "q";
18
+ readonly ROOK_B: "r";
19
+ readonly BISHOP_B: "b";
20
+ readonly KNIGHT_B: "n";
21
+ readonly PAWN_B: "p";
22
+ };
23
+ export declare const COLORS: {
24
+ WHITE: Color;
25
+ BLACK: Color;
26
+ };
27
+ export declare const PIECE_VALUES: Record<Piece, number>;
28
+ /**
29
+ * Piece-square tables for positional evaluation
30
+ * From white's perspective (flipped for black)
31
+ */
32
+ export declare const PAWN_PST: readonly number[];
33
+ export declare const KNIGHT_PST: readonly number[];
34
+ export declare const BISHOP_PST: readonly number[];
35
+ export declare const ROOK_PST: readonly number[];
36
+ export declare const QUEEN_PST: readonly number[];
37
+ export declare const KING_PST_MG: readonly number[];
38
+ export declare const KING_PST_EG: readonly number[];
39
+ export declare const AI_LEVELS: readonly [1, 2, 3, 4, 5];
40
+ /**
41
+ * AI depth mapping by level
42
+ */
43
+ export declare const AI_DEPTH_BY_LEVEL: Record<number, {
44
+ BASE: number;
45
+ EXTENDED: number;
46
+ }>;
47
+ export declare const SCORE: {
48
+ MIN: number;
49
+ MAX: number;
50
+ MATE: number;
51
+ DRAW: number;
52
+ INFINITE: number;
53
+ };
54
+ /**
55
+ * Direction offsets for piece movement (0-based indexing)
56
+ *
57
+ * Board layout (0-63):
58
+ * 56 57 58 59 60 61 62 63 (Rank 8)
59
+ * 48 49 50 51 52 53 54 55 (Rank 7)
60
+ * ...
61
+ * 8 9 10 11 12 13 14 15 (Rank 2)
62
+ * 0 1 2 3 4 5 6 7 (Rank 1)
63
+ * A B C D E F G H
64
+ */
65
+ export declare const DIRECTION: {
66
+ NORTH: number;
67
+ SOUTH: number;
68
+ EAST: number;
69
+ WEST: number;
70
+ NORTH_EAST: number;
71
+ NORTH_WEST: number;
72
+ SOUTH_EAST: number;
73
+ SOUTH_WEST: number;
74
+ };
75
+ export declare const KNIGHT_MOVES: number[];
76
+ export declare const KING_MOVES: number[];
77
+ export declare const CASTLING: {
78
+ WHITE_SHORT: {
79
+ kingFrom: number;
80
+ kingTo: number;
81
+ rookFrom: number;
82
+ rookTo: number;
83
+ };
84
+ WHITE_LONG: {
85
+ kingFrom: number;
86
+ kingTo: number;
87
+ rookFrom: number;
88
+ rookTo: number;
89
+ };
90
+ BLACK_SHORT: {
91
+ kingFrom: number;
92
+ kingTo: number;
93
+ rookFrom: number;
94
+ rookTo: number;
95
+ };
96
+ BLACK_LONG: {
97
+ kingFrom: number;
98
+ kingTo: number;
99
+ rookFrom: number;
100
+ rookTo: number;
101
+ };
102
+ };
103
+ export declare const TT_SIZE = 1000000;
104
+ export declare const STARTING_FEN = "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1";
105
+ /**
106
+ * Map internal piece enum to public piece symbol
107
+ */
108
+ export declare const PIECE_TO_SYMBOL: Record<Piece, PieceSymbol | null>;
109
+ /**
110
+ * Map public piece symbol to internal piece enum
111
+ */
112
+ export declare const SYMBOL_TO_PIECE: Record<PieceSymbol, Piece>;
113
+ export declare const EVAL_WEIGHTS: {
114
+ DOUBLED_PAWN: number;
115
+ ISOLATED_PAWN: number;
116
+ PASSED_PAWN: number;
117
+ PAWN_CHAIN: number;
118
+ ROOK_OPEN_FILE: number;
119
+ ROOK_SEVENTH_RANK: number;
120
+ MOBILITY: number;
121
+ KING_PAWN_SHIELD: number;
122
+ };
123
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAIlE,eAAO,MAAM,UAAU,IAAI,CAAC;AAC5B,eAAO,MAAM,aAAa,KAAK,CAAC;AAEhC,eAAO,MAAM,OAAO,EAAE,SAAS,MAAM,EAA6C,CAAC;AACnF,eAAO,MAAM,IAAI,EAAE,SAAS,GAAG,EAA6C,CAAC;AAI7E,eAAO,MAAM,MAAM;;;;;;;;;;;;;CAaT,CAAC;AAIX,eAAO,MAAM,MAAM;WACG,KAAK;WACL,KAAK;CAC1B,CAAC;AAIF,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAc9C,CAAC;AAIF;;;GAGG;AAGH,eAAO,MAAM,QAAQ,EAAE,SAAS,MAAM,EASrC,CAAC;AAGF,eAAO,MAAM,UAAU,EAAE,SAAS,MAAM,EASvC,CAAC;AAGF,eAAO,MAAM,UAAU,EAAE,SAAS,MAAM,EASvC,CAAC;AAGF,eAAO,MAAM,QAAQ,EAAE,SAAS,MAAM,EASrC,CAAC;AAGF,eAAO,MAAM,SAAS,EAAE,SAAS,MAAM,EAStC,CAAC;AAGF,eAAO,MAAM,WAAW,EAAE,SAAS,MAAM,EASxC,CAAC;AAGF,eAAO,MAAM,WAAW,EAAE,SAAS,MAAM,EASxC,CAAC;AAIF,eAAO,MAAM,SAAS,0BAA2B,CAAC;AAElD;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAMhF,CAAC;AAIF,eAAO,MAAM,KAAK;;;;;;CAMjB,CAAC;AAIF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,SAAS;;;;;;;;;CASrB,CAAC;AAGF,eAAO,MAAM,YAAY,UAExB,CAAC;AAGF,eAAO,MAAM,UAAU,UAEtB,CAAC;AAIF,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;CAyBpB,CAAC;AAIF,eAAO,MAAM,OAAO,UAAU,CAAC;AAI/B,eAAO,MAAM,YAAY,6DAA6D,CAAC;AAIvF;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAc7D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,WAAW,EAAE,KAAK,CAatD,CAAC;AAIF,eAAO,MAAM,YAAY;;;;;;;;;CASxB,CAAC"}
@@ -0,0 +1,259 @@
1
+ "use strict";
2
+ /**
3
+ * Constants for js-chess-engine v2
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.EVAL_WEIGHTS = exports.SYMBOL_TO_PIECE = exports.PIECE_TO_SYMBOL = exports.STARTING_FEN = exports.TT_SIZE = exports.CASTLING = exports.KING_MOVES = exports.KNIGHT_MOVES = exports.DIRECTION = exports.SCORE = exports.AI_DEPTH_BY_LEVEL = exports.AI_LEVELS = exports.KING_PST_EG = exports.KING_PST_MG = exports.QUEEN_PST = exports.ROOK_PST = exports.BISHOP_PST = exports.KNIGHT_PST = exports.PAWN_PST = exports.PIECE_VALUES = exports.COLORS = exports.PIECES = exports.ROWS = exports.COLUMNS = exports.TOTAL_SQUARES = exports.BOARD_SIZE = void 0;
7
+ const types_1 = require("../types");
8
+ // ==================== Board Constants ====================
9
+ exports.BOARD_SIZE = 8;
10
+ exports.TOTAL_SQUARES = 64;
11
+ exports.COLUMNS = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'];
12
+ exports.ROWS = ['1', '2', '3', '4', '5', '6', '7', '8'];
13
+ // ==================== Piece Constants ====================
14
+ exports.PIECES = {
15
+ KING_W: 'K',
16
+ QUEEN_W: 'Q',
17
+ ROOK_W: 'R',
18
+ BISHOP_W: 'B',
19
+ KNIGHT_W: 'N',
20
+ PAWN_W: 'P',
21
+ KING_B: 'k',
22
+ QUEEN_B: 'q',
23
+ ROOK_B: 'r',
24
+ BISHOP_B: 'b',
25
+ KNIGHT_B: 'n',
26
+ PAWN_B: 'p',
27
+ };
28
+ // ==================== Color Constants ====================
29
+ exports.COLORS = {
30
+ WHITE: 'white',
31
+ BLACK: 'black',
32
+ };
33
+ // ==================== Piece Values (Centipawns) ====================
34
+ exports.PIECE_VALUES = {
35
+ [types_1.Piece.EMPTY]: 0,
36
+ [types_1.Piece.WHITE_PAWN]: 100,
37
+ [types_1.Piece.WHITE_KNIGHT]: 320,
38
+ [types_1.Piece.WHITE_BISHOP]: 330,
39
+ [types_1.Piece.WHITE_ROOK]: 500,
40
+ [types_1.Piece.WHITE_QUEEN]: 900,
41
+ [types_1.Piece.WHITE_KING]: 20000,
42
+ [types_1.Piece.BLACK_PAWN]: 100,
43
+ [types_1.Piece.BLACK_KNIGHT]: 320,
44
+ [types_1.Piece.BLACK_BISHOP]: 330,
45
+ [types_1.Piece.BLACK_ROOK]: 500,
46
+ [types_1.Piece.BLACK_QUEEN]: 900,
47
+ [types_1.Piece.BLACK_KING]: 20000,
48
+ };
49
+ // ==================== Piece-Square Tables ====================
50
+ /**
51
+ * Piece-square tables for positional evaluation
52
+ * From white's perspective (flipped for black)
53
+ */
54
+ // Pawn piece-square table
55
+ exports.PAWN_PST = [
56
+ 0, 0, 0, 0, 0, 0, 0, 0,
57
+ 50, 50, 50, 50, 50, 50, 50, 50,
58
+ 10, 10, 20, 30, 30, 20, 10, 10,
59
+ 5, 5, 10, 25, 25, 10, 5, 5,
60
+ 0, 0, 0, 20, 20, 0, 0, 0,
61
+ 5, -5, -10, 0, 0, -10, -5, 5,
62
+ 5, 10, 10, -20, -20, 10, 10, 5,
63
+ 0, 0, 0, 0, 0, 0, 0, 0
64
+ ];
65
+ // Knight piece-square table
66
+ exports.KNIGHT_PST = [
67
+ -50, -40, -30, -30, -30, -30, -40, -50,
68
+ -40, -20, 0, 0, 0, 0, -20, -40,
69
+ -30, 0, 10, 15, 15, 10, 0, -30,
70
+ -30, 5, 15, 20, 20, 15, 5, -30,
71
+ -30, 0, 15, 20, 20, 15, 0, -30,
72
+ -30, 5, 10, 15, 15, 10, 5, -30,
73
+ -40, -20, 0, 5, 5, 0, -20, -40,
74
+ -50, -40, -30, -30, -30, -30, -40, -50
75
+ ];
76
+ // Bishop piece-square table
77
+ exports.BISHOP_PST = [
78
+ -20, -10, -10, -10, -10, -10, -10, -20,
79
+ -10, 0, 0, 0, 0, 0, 0, -10,
80
+ -10, 0, 5, 10, 10, 5, 0, -10,
81
+ -10, 5, 5, 10, 10, 5, 5, -10,
82
+ -10, 0, 10, 10, 10, 10, 0, -10,
83
+ -10, 10, 10, 10, 10, 10, 10, -10,
84
+ -10, 5, 0, 0, 0, 0, 5, -10,
85
+ -20, -10, -10, -10, -10, -10, -10, -20
86
+ ];
87
+ // Rook piece-square table
88
+ exports.ROOK_PST = [
89
+ 0, 0, 0, 0, 0, 0, 0, 0,
90
+ 5, 10, 10, 10, 10, 10, 10, 5,
91
+ -5, 0, 0, 0, 0, 0, 0, -5,
92
+ -5, 0, 0, 0, 0, 0, 0, -5,
93
+ -5, 0, 0, 0, 0, 0, 0, -5,
94
+ -5, 0, 0, 0, 0, 0, 0, -5,
95
+ -5, 0, 0, 0, 0, 0, 0, -5,
96
+ 0, 0, 0, 5, 5, 0, 0, 0
97
+ ];
98
+ // Queen piece-square table
99
+ exports.QUEEN_PST = [
100
+ -20, -10, -10, -5, -5, -10, -10, -20,
101
+ -10, 0, 0, 0, 0, 0, 0, -10,
102
+ -10, 0, 5, 5, 5, 5, 0, -10,
103
+ -5, 0, 5, 5, 5, 5, 0, -5,
104
+ 0, 0, 5, 5, 5, 5, 0, -5,
105
+ -10, 5, 5, 5, 5, 5, 0, -10,
106
+ -10, 0, 5, 0, 0, 0, 0, -10,
107
+ -20, -10, -10, -5, -5, -10, -10, -20
108
+ ];
109
+ // King piece-square table (middlegame)
110
+ exports.KING_PST_MG = [
111
+ -30, -40, -40, -50, -50, -40, -40, -30,
112
+ -30, -40, -40, -50, -50, -40, -40, -30,
113
+ -30, -40, -40, -50, -50, -40, -40, -30,
114
+ -30, -40, -40, -50, -50, -40, -40, -30,
115
+ -20, -30, -30, -40, -40, -30, -30, -20,
116
+ -10, -20, -20, -20, -20, -20, -20, -10,
117
+ 20, 20, 0, 0, 0, 0, 20, 20,
118
+ 20, 30, 10, 0, 0, 10, 30, 20
119
+ ];
120
+ // King piece-square table (endgame)
121
+ exports.KING_PST_EG = [
122
+ -50, -40, -30, -20, -20, -30, -40, -50,
123
+ -30, -20, -10, 0, 0, -10, -20, -30,
124
+ -30, -10, 20, 30, 30, 20, -10, -30,
125
+ -30, -10, 30, 40, 40, 30, -10, -30,
126
+ -30, -10, 30, 40, 40, 30, -10, -30,
127
+ -30, -10, 20, 30, 30, 20, -10, -30,
128
+ -30, -30, 0, 0, 0, 0, -30, -30,
129
+ -50, -30, -30, -30, -30, -30, -30, -50
130
+ ];
131
+ // ==================== AI Constants ====================
132
+ exports.AI_LEVELS = [1, 2, 3, 4, 5];
133
+ /**
134
+ * AI depth mapping by level
135
+ */
136
+ exports.AI_DEPTH_BY_LEVEL = {
137
+ 1: { BASE: 1, EXTENDED: 2 },
138
+ 2: { BASE: 2, EXTENDED: 2 },
139
+ 3: { BASE: 3, EXTENDED: 4 }, // Increased from v1 (was 2-4)
140
+ 4: { BASE: 4, EXTENDED: 5 }, // Increased from v1 (was 3-4)
141
+ 5: { BASE: 5, EXTENDED: 6 },
142
+ };
143
+ // ==================== Score Constants ====================
144
+ exports.SCORE = {
145
+ MIN: -20000,
146
+ MAX: 20000,
147
+ MATE: 19000,
148
+ DRAW: 0,
149
+ INFINITE: 30000,
150
+ };
151
+ // ==================== Direction Offsets ====================
152
+ /**
153
+ * Direction offsets for piece movement (0-based indexing)
154
+ *
155
+ * Board layout (0-63):
156
+ * 56 57 58 59 60 61 62 63 (Rank 8)
157
+ * 48 49 50 51 52 53 54 55 (Rank 7)
158
+ * ...
159
+ * 8 9 10 11 12 13 14 15 (Rank 2)
160
+ * 0 1 2 3 4 5 6 7 (Rank 1)
161
+ * A B C D E F G H
162
+ */
163
+ exports.DIRECTION = {
164
+ NORTH: 8,
165
+ SOUTH: -8,
166
+ EAST: 1,
167
+ WEST: -1,
168
+ NORTH_EAST: 9,
169
+ NORTH_WEST: 7,
170
+ SOUTH_EAST: -7,
171
+ SOUTH_WEST: -9,
172
+ };
173
+ // Knight move offsets
174
+ exports.KNIGHT_MOVES = [
175
+ -17, -15, -10, -6, 6, 10, 15, 17
176
+ ];
177
+ // King move offsets
178
+ exports.KING_MOVES = [
179
+ -9, -8, -7, -1, 1, 7, 8, 9
180
+ ];
181
+ // ==================== Castling Constants ====================
182
+ exports.CASTLING = {
183
+ WHITE_SHORT: {
184
+ kingFrom: 4, // E1
185
+ kingTo: 6, // G1
186
+ rookFrom: 7, // H1
187
+ rookTo: 5, // F1
188
+ },
189
+ WHITE_LONG: {
190
+ kingFrom: 4, // E1
191
+ kingTo: 2, // C1
192
+ rookFrom: 0, // A1
193
+ rookTo: 3, // D1
194
+ },
195
+ BLACK_SHORT: {
196
+ kingFrom: 60, // E8
197
+ kingTo: 62, // G8
198
+ rookFrom: 63, // H8
199
+ rookTo: 61, // F8
200
+ },
201
+ BLACK_LONG: {
202
+ kingFrom: 60, // E8
203
+ kingTo: 58, // C8
204
+ rookFrom: 56, // A8
205
+ rookTo: 59, // D8
206
+ },
207
+ };
208
+ // ==================== Transposition Table Constants ====================
209
+ exports.TT_SIZE = 1000000; // 1M entries (~100MB)
210
+ // ==================== FEN Constants ====================
211
+ exports.STARTING_FEN = 'rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1';
212
+ // ==================== Piece Symbol Mapping ====================
213
+ /**
214
+ * Map internal piece enum to public piece symbol
215
+ */
216
+ exports.PIECE_TO_SYMBOL = {
217
+ [types_1.Piece.EMPTY]: null,
218
+ [types_1.Piece.WHITE_PAWN]: 'P',
219
+ [types_1.Piece.WHITE_KNIGHT]: 'N',
220
+ [types_1.Piece.WHITE_BISHOP]: 'B',
221
+ [types_1.Piece.WHITE_ROOK]: 'R',
222
+ [types_1.Piece.WHITE_QUEEN]: 'Q',
223
+ [types_1.Piece.WHITE_KING]: 'K',
224
+ [types_1.Piece.BLACK_PAWN]: 'p',
225
+ [types_1.Piece.BLACK_KNIGHT]: 'n',
226
+ [types_1.Piece.BLACK_BISHOP]: 'b',
227
+ [types_1.Piece.BLACK_ROOK]: 'r',
228
+ [types_1.Piece.BLACK_QUEEN]: 'q',
229
+ [types_1.Piece.BLACK_KING]: 'k',
230
+ };
231
+ /**
232
+ * Map public piece symbol to internal piece enum
233
+ */
234
+ exports.SYMBOL_TO_PIECE = {
235
+ 'P': types_1.Piece.WHITE_PAWN,
236
+ 'N': types_1.Piece.WHITE_KNIGHT,
237
+ 'B': types_1.Piece.WHITE_BISHOP,
238
+ 'R': types_1.Piece.WHITE_ROOK,
239
+ 'Q': types_1.Piece.WHITE_QUEEN,
240
+ 'K': types_1.Piece.WHITE_KING,
241
+ 'p': types_1.Piece.BLACK_PAWN,
242
+ 'n': types_1.Piece.BLACK_KNIGHT,
243
+ 'b': types_1.Piece.BLACK_BISHOP,
244
+ 'r': types_1.Piece.BLACK_ROOK,
245
+ 'q': types_1.Piece.BLACK_QUEEN,
246
+ 'k': types_1.Piece.BLACK_KING,
247
+ };
248
+ // ==================== Evaluation Weights ====================
249
+ exports.EVAL_WEIGHTS = {
250
+ DOUBLED_PAWN: -10,
251
+ ISOLATED_PAWN: -20,
252
+ PASSED_PAWN: 50,
253
+ PAWN_CHAIN: 10,
254
+ ROOK_OPEN_FILE: 15,
255
+ ROOK_SEVENTH_RANK: 20,
256
+ MOBILITY: 5,
257
+ KING_PAWN_SHIELD: 10,
258
+ };
259
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"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"}