js-chess-engine 2.2.0 → 2.2.2
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 +29 -0
- package/dist/ai/TranspositionTable.d.ts +7 -0
- package/dist/ai/TranspositionTable.d.ts.map +1 -1
- package/dist/ai/TranspositionTable.js +32 -0
- package/dist/ai/TranspositionTable.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -5
- package/dist/index.js.map +1 -1
- package/dist/utils/environment.d.ts +0 -7
- package/dist/utils/environment.d.ts.map +1 -1
- package/dist/utils/environment.js +0 -31
- package/dist/utils/environment.js.map +1 -1
- package/package.json +11 -3
package/README.md
CHANGED
|
@@ -171,6 +171,8 @@ game.removePiece('E5')
|
|
|
171
171
|
|
|
172
172
|
**aiMove**
|
|
173
173
|
|
|
174
|
+
> ⚠️ **DEPRECATED:** This method will be removed in v3.0.0. Use [`ai()`](#ai) instead, which returns both the move and board state.
|
|
175
|
+
|
|
174
176
|
`game.aiMove(level)` - Calculate and perform the best move for the current player using AI. **Returns only the move** (v1 API compatible).
|
|
175
177
|
|
|
176
178
|
Params:
|
|
@@ -187,6 +189,11 @@ console.log(move) // {"E2": "E4"}
|
|
|
187
189
|
|
|
188
190
|
// To get board state after move, use exportJson()
|
|
189
191
|
const board = game.exportJson()
|
|
192
|
+
|
|
193
|
+
// RECOMMENDED: Use ai() instead
|
|
194
|
+
const result = game.ai({ level: 4 })
|
|
195
|
+
console.log(result.move) // {"E2": "E4"}
|
|
196
|
+
console.log(result.board) // Full board state
|
|
190
197
|
```
|
|
191
198
|
|
|
192
199
|
**ai**
|
|
@@ -378,6 +385,8 @@ const config2: BoardConfig = move(config1, 'E7', 'E5')
|
|
|
378
385
|
|
|
379
386
|
**aiMove**
|
|
380
387
|
|
|
388
|
+
> ⚠️ **DEPRECATED:** This function will be removed in v3.0.0. Use [`ai()`](#ai-1) instead, which returns both the move and board state.
|
|
389
|
+
|
|
381
390
|
`aiMove(boardConfiguration, level)` - Calculate and return the best move using AI. **Returns only the move** (v1 API compatible).
|
|
382
391
|
|
|
383
392
|
Params:
|
|
@@ -394,6 +403,12 @@ const fen = 'rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1'
|
|
|
394
403
|
const level: AILevel = 4
|
|
395
404
|
const move: HistoryEntry = aiMove(fen, level)
|
|
396
405
|
console.log(move) // {"E2": "E4"}
|
|
406
|
+
|
|
407
|
+
// RECOMMENDED: Use ai() instead
|
|
408
|
+
import { ai } from 'js-chess-engine'
|
|
409
|
+
const result = ai(fen, { level: 4 })
|
|
410
|
+
console.log(result.move) // {"E2": "E4"}
|
|
411
|
+
console.log(result.board) // Full board state
|
|
397
412
|
```
|
|
398
413
|
|
|
399
414
|
**ai**
|
|
@@ -693,6 +708,20 @@ aiMove(config, 3) // Returns move object: {"E2": "E4"} ✅ v1 compatible
|
|
|
693
708
|
ai(config, 3) // Returns: { move: {"E2": "E4"}, board: {...} }
|
|
694
709
|
```
|
|
695
710
|
|
|
711
|
+
> ⚠️ **DEPRECATION NOTICE:** `aiMove()` is deprecated and will be removed in **v3.0.0**. Migrate to `ai()` for better functionality.
|
|
712
|
+
>
|
|
713
|
+
> **Migration:**
|
|
714
|
+
> ```typescript
|
|
715
|
+
> // Old (deprecated)
|
|
716
|
+
> const move = game.aiMove(3)
|
|
717
|
+
> const board = game.exportJson()
|
|
718
|
+
>
|
|
719
|
+
> // New (recommended)
|
|
720
|
+
> const result = game.ai({ level: 3 })
|
|
721
|
+
> console.log(result.move) // Same move object
|
|
722
|
+
> console.log(result.board) // Board state included
|
|
723
|
+
> ```
|
|
724
|
+
|
|
696
725
|
### 4. AI Difficulty Levels Changed
|
|
697
726
|
|
|
698
727
|
- **v1:** Levels 0-4 (0=easiest, 4=hardest)
|
|
@@ -6,6 +6,13 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { InternalMove } from '../types';
|
|
8
8
|
import { Score } from '../types/ai.types';
|
|
9
|
+
/**
|
|
10
|
+
* Get recommended TT size for a given AI level and environment
|
|
11
|
+
*
|
|
12
|
+
* @param level - AI difficulty level (1-5)
|
|
13
|
+
* @returns Recommended TT size in MB
|
|
14
|
+
*/
|
|
15
|
+
export declare function getRecommendedTTSize(level: number): number;
|
|
9
16
|
/**
|
|
10
17
|
* Types of transposition table entries
|
|
11
18
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TranspositionTable.d.ts","sourceRoot":"","sources":["../../src/ai/TranspositionTable.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"TranspositionTable.d.ts","sourceRoot":"","sources":["../../src/ai/TranspositionTable.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAO1C;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAsB1D;AAsBD;;GAEG;AACH,oBAAY,WAAW;IACnB,KAAK,IAAI,CAAO,cAAc;IAC9B,WAAW,IAAI,CAAE,2BAA2B;IAC5C,WAAW,IAAI;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC;IAC9B,GAAG,EAAE,MAAM,CAAC;CACf;AAED;;;;;GAKG;AACH,qBAAa,kBAAkB;IAC3B,OAAO,CAAC,KAAK,CAAqB;IAClC,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,MAAM,CAAa;IAE3B;;;;OAIG;gBACS,MAAM,GAAE,MAAW;IAW/B;;;;;;;;OAQG;IACH,KAAK,CACD,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,YAAY,GAAG,IAAI,EAC7B,GAAG,GAAE,MAAU,GAChB,IAAI;IA2BP;;;;;;;;OAQG;IACH,KAAK,CACD,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,KAAK,EACX,GAAG,GAAE,MAAU,GAChB,OAAO,GAAG,IAAI;IA8CjB;;;;;OAKG;IACH,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAWrD;;OAEG;IACH,KAAK,IAAI,IAAI;IAOb;;OAEG;IACH,SAAS,IAAI,IAAI;IAIjB;;;;;OAKG;IACH,OAAO,CAAC,QAAQ;IAKhB;;;;OAIG;IACH,QAAQ,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE;CAW9E"}
|
|
@@ -7,9 +7,41 @@
|
|
|
7
7
|
*/
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.TranspositionTable = exports.TTEntryType = void 0;
|
|
10
|
+
exports.getRecommendedTTSize = getRecommendedTTSize;
|
|
10
11
|
const Evaluator_1 = require("./Evaluator");
|
|
12
|
+
const environment_1 = require("../utils/environment");
|
|
11
13
|
/** Threshold for detecting mate scores. */
|
|
12
14
|
const MATE_THRESHOLD = 500;
|
|
15
|
+
/**
|
|
16
|
+
* Get recommended TT size for a given AI level and environment
|
|
17
|
+
*
|
|
18
|
+
* @param level - AI difficulty level (1-5)
|
|
19
|
+
* @returns Recommended TT size in MB
|
|
20
|
+
*/
|
|
21
|
+
function getRecommendedTTSize(level) {
|
|
22
|
+
if ((0, environment_1.isNodeEnvironment)()) {
|
|
23
|
+
// Node.js - more generous memory allocation
|
|
24
|
+
const nodeSizes = {
|
|
25
|
+
1: 1, // Level 1: 1 MB
|
|
26
|
+
2: 2, // Level 2: 2 MB
|
|
27
|
+
3: 8, // Level 3: 8 MB (default)
|
|
28
|
+
4: 16, // Level 4: 16 MB
|
|
29
|
+
5: 32, // Level 5: 32 MB
|
|
30
|
+
};
|
|
31
|
+
return nodeSizes[level] ?? 8;
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
// Browser - modern-device-friendly allocation (reasonable for 2024+ devices)
|
|
35
|
+
const browserSizes = {
|
|
36
|
+
1: 0.5, // Level 1: 0.5 MB (lightweight, older devices)
|
|
37
|
+
2: 1, // Level 2: 1 MB (mobile-friendly)
|
|
38
|
+
3: 4, // Level 3: 4 MB (balanced default - appropriate for modern browsers)
|
|
39
|
+
4: 8, // Level 4: 8 MB (strong performance)
|
|
40
|
+
5: 16, // Level 5: 16 MB (very strong play)
|
|
41
|
+
};
|
|
42
|
+
return browserSizes[level] ?? 4;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
13
45
|
/**
|
|
14
46
|
* Normalize a mate score for TT storage by removing the current ply component.
|
|
15
47
|
* Mate scores use SCORE_MIN + ply (mated) or SCORE_MAX - ply (mating).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TranspositionTable.js","sourceRoot":"","sources":["../../src/ai/TranspositionTable.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;
|
|
1
|
+
{"version":3,"file":"TranspositionTable.js","sourceRoot":"","sources":["../../src/ai/TranspositionTable.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -73,7 +73,8 @@ export declare class Game {
|
|
|
73
73
|
/**
|
|
74
74
|
* Make an AI move (v1 compatible - returns only the move)
|
|
75
75
|
*
|
|
76
|
-
|
|
76
|
+
* @deprecated Use `ai()` instead. This method will be removed in v3.0.0.
|
|
77
|
+
* @param level - AI level (1-5, default 3)
|
|
77
78
|
* @returns The played move object (e.g., {"E2": "E4"})
|
|
78
79
|
*/
|
|
79
80
|
aiMove(level?: number): HistoryEntry;
|
|
@@ -129,6 +130,7 @@ export declare function move(config: BoardConfig | string, from: string, to: str
|
|
|
129
130
|
/**
|
|
130
131
|
* Make an AI move (v1 compatible - returns only the move)
|
|
131
132
|
*
|
|
133
|
+
* @deprecated Use `ai()` instead. This function will be removed in v3.0.0.
|
|
132
134
|
* @param config - Board configuration or FEN string
|
|
133
135
|
* @param level - AI level (1-5, default 3)
|
|
134
136
|
* @returns The played move object (e.g., {"E2": "E4"})
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAEH,WAAW,EACX,QAAQ,EAER,WAAW,EACX,YAAY,EACf,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAEH,WAAW,EACX,QAAQ,EAER,WAAW,EACX,YAAY,EACf,MAAM,SAAS,CAAC;AAoBjB,cAAc,SAAS,CAAC;AAExB;;GAEG;AACH,qBAAa,IAAI;IACb,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,QAAQ,CAAW;IAE3B;;;;OAIG;gBACS,aAAa,CAAC,EAAE,WAAW,GAAG,MAAM;IAgBhD;;;;;;OAMG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,WAAW;IAyB3C;;;;;OAKG;IACH,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,QAAQ;IAa9B;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,IAAI;IAOlD;;;;OAIG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAMjC;;;;OAIG;IACH,UAAU,IAAI,KAAK,CAAC,WAAW,GAAG;QAAE,IAAI,EAAE,YAAY,CAAA;KAAE,CAAC;IA4BzD;;;;OAIG;IACH,UAAU,IAAI,WAAW;IAMzB;;;;OAIG;IACH,SAAS,IAAI,MAAM;IAInB;;OAEG;IACH,cAAc,IAAI,IAAI;IAqBtB;;;;;;OAMG;IACH,MAAM,CAAC,KAAK,GAAE,MAAU,GAAG,YAAY;IA6BvC;;;;;;;;OAQG;IACH,EAAE,CAAC,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG;QAAE,IAAI,EAAE,YAAY,CAAC;QAAC,KAAK,EAAE,WAAW,CAAA;KAAE;IAgDnH,OAAO,CAAC,2BAA2B;CActC;AA0BD;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,GAAG,QAAQ,CAG5D;AAED;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,GAAG,WAAW,CAGhE;AAED;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,GAAG,MAAM,CAG3D;AAED;;;;;;;GAOG;AACH,wBAAgB,IAAI,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,WAAW,CAGxF;AAED;;;;;;;GAOG;AACH,wBAAgB,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,YAAY,CAGpF;AAED;;;;;;;;;GASG;AACH,wBAAgB,EAAE,CACd,MAAM,EAAE,WAAW,GAAG,MAAM,EAC5B,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAO,GACpE;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,WAAW,CAAA;CAAE,CAG5C"}
|
package/dist/index.js
CHANGED
|
@@ -31,7 +31,7 @@ const MoveGenerator_1 = require("./core/MoveGenerator");
|
|
|
31
31
|
const AttackDetector_1 = require("./core/AttackDetector");
|
|
32
32
|
const fen_1 = require("./utils/fen");
|
|
33
33
|
const conversion_1 = require("./utils/conversion");
|
|
34
|
-
const
|
|
34
|
+
const TranspositionTable_1 = require("./ai/TranspositionTable");
|
|
35
35
|
const APIAdapter_1 = require("./adapters/APIAdapter");
|
|
36
36
|
const AIEngine_1 = require("./ai/AIEngine");
|
|
37
37
|
// Export types for TypeScript users
|
|
@@ -162,7 +162,9 @@ class Game {
|
|
|
162
162
|
* @returns Board configuration object
|
|
163
163
|
*/
|
|
164
164
|
exportJson() {
|
|
165
|
-
|
|
165
|
+
const cfg = (0, APIAdapter_1.boardToConfig)(this.board);
|
|
166
|
+
this.updateConfigStatusFromBoard(this.board, cfg);
|
|
167
|
+
return cfg;
|
|
166
168
|
}
|
|
167
169
|
/**
|
|
168
170
|
* Export current board state as FEN string
|
|
@@ -193,7 +195,8 @@ class Game {
|
|
|
193
195
|
/**
|
|
194
196
|
* Make an AI move (v1 compatible - returns only the move)
|
|
195
197
|
*
|
|
196
|
-
|
|
198
|
+
* @deprecated Use `ai()` instead. This method will be removed in v3.0.0.
|
|
199
|
+
* @param level - AI level (1-5, default 3)
|
|
197
200
|
* @returns The played move object (e.g., {"E2": "E4"})
|
|
198
201
|
*/
|
|
199
202
|
aiMove(level = 3) {
|
|
@@ -201,8 +204,10 @@ class Game {
|
|
|
201
204
|
if (level < 1 || level > 6) {
|
|
202
205
|
throw new Error('AI level must be between 1 and 6');
|
|
203
206
|
}
|
|
207
|
+
// Use recommended TT size for the level (browser-safe defaults)
|
|
208
|
+
const ttSizeMB = (0, TranspositionTable_1.getRecommendedTTSize)(level);
|
|
204
209
|
// Find best move
|
|
205
|
-
const bestMove = this.aiEngine.findBestMove(this.board, level);
|
|
210
|
+
const bestMove = this.aiEngine.findBestMove(this.board, level, ttSizeMB);
|
|
206
211
|
if (!bestMove) {
|
|
207
212
|
// No legal moves available - game must be finished (checkmate or stalemate)
|
|
208
213
|
throw new Error('Game is already finished');
|
|
@@ -231,7 +236,7 @@ class Game {
|
|
|
231
236
|
const play = options.play ?? true;
|
|
232
237
|
// Allow 0 to disable TT, or 0.25-256 MB range
|
|
233
238
|
// Default: auto-scaled by AI level (lower levels use less memory, higher levels use more)
|
|
234
|
-
const defaultSize = (0,
|
|
239
|
+
const defaultSize = (0, TranspositionTable_1.getRecommendedTTSize)(level);
|
|
235
240
|
const ttSizeMB = options.ttSizeMB === 0 ? 0 : Math.max(0.25, Math.min(256, options.ttSizeMB ?? defaultSize));
|
|
236
241
|
// Validate level (requested value)
|
|
237
242
|
if (requestedLevel < 1 || requestedLevel > 5) {
|
|
@@ -346,6 +351,7 @@ function move(config, from, to) {
|
|
|
346
351
|
/**
|
|
347
352
|
* Make an AI move (v1 compatible - returns only the move)
|
|
348
353
|
*
|
|
354
|
+
* @deprecated Use `ai()` instead. This function will be removed in v3.0.0.
|
|
349
355
|
* @param config - Board configuration or FEN string
|
|
350
356
|
* @param level - AI level (1-5, default 3)
|
|
351
357
|
* @returns The played move object (e.g., {"E2": "E4"})
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,11 +23,4 @@ export declare function isBrowserEnvironment(): boolean;
|
|
|
23
23
|
* @returns Recommended TT size in MB
|
|
24
24
|
*/
|
|
25
25
|
export declare function getDefaultTTSize(): number;
|
|
26
|
-
/**
|
|
27
|
-
* Get recommended TT size for a given AI level and environment
|
|
28
|
-
*
|
|
29
|
-
* @param level - AI difficulty level (1-5)
|
|
30
|
-
* @returns Recommended TT size in MB
|
|
31
|
-
*/
|
|
32
|
-
export declare function getRecommendedTTSize(level: number): number;
|
|
33
26
|
//# sourceMappingURL=environment.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../../src/utils/environment.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAO3C;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CAE9C;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC
|
|
1
|
+
{"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../../src/utils/environment.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAO3C;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CAE9C;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC"}
|
|
@@ -7,7 +7,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
7
7
|
exports.isNodeEnvironment = isNodeEnvironment;
|
|
8
8
|
exports.isBrowserEnvironment = isBrowserEnvironment;
|
|
9
9
|
exports.getDefaultTTSize = getDefaultTTSize;
|
|
10
|
-
exports.getRecommendedTTSize = getRecommendedTTSize;
|
|
11
10
|
/**
|
|
12
11
|
* Detect if code is running in Node.js environment
|
|
13
12
|
*
|
|
@@ -38,34 +37,4 @@ function isBrowserEnvironment() {
|
|
|
38
37
|
function getDefaultTTSize() {
|
|
39
38
|
return isNodeEnvironment() ? 8 : 4;
|
|
40
39
|
}
|
|
41
|
-
/**
|
|
42
|
-
* Get recommended TT size for a given AI level and environment
|
|
43
|
-
*
|
|
44
|
-
* @param level - AI difficulty level (1-5)
|
|
45
|
-
* @returns Recommended TT size in MB
|
|
46
|
-
*/
|
|
47
|
-
function getRecommendedTTSize(level) {
|
|
48
|
-
if (isNodeEnvironment()) {
|
|
49
|
-
// Node.js - more generous memory allocation
|
|
50
|
-
const nodeSizes = {
|
|
51
|
-
1: 1, // Level 1: 1 MB
|
|
52
|
-
2: 2, // Level 2: 2 MB
|
|
53
|
-
3: 8, // Level 3: 8 MB (default)
|
|
54
|
-
4: 16, // Level 4: 16 MB
|
|
55
|
-
5: 32, // Level 5: 32 MB
|
|
56
|
-
};
|
|
57
|
-
return nodeSizes[level] ?? 8;
|
|
58
|
-
}
|
|
59
|
-
else {
|
|
60
|
-
// Browser - modern-device-friendly allocation (reasonable for 2024+ devices)
|
|
61
|
-
const browserSizes = {
|
|
62
|
-
1: 0.5, // Level 1: 0.5 MB (lightweight, older devices)
|
|
63
|
-
2: 1, // Level 2: 1 MB (mobile-friendly)
|
|
64
|
-
3: 4, // Level 3: 4 MB (balanced default - appropriate for modern browsers)
|
|
65
|
-
4: 8, // Level 4: 8 MB (strong performance)
|
|
66
|
-
5: 16, // Level 5: 16 MB (very strong play)
|
|
67
|
-
};
|
|
68
|
-
return browserSizes[level] ?? 4;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
40
|
//# sourceMappingURL=environment.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"environment.js","sourceRoot":"","sources":["../../src/utils/environment.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAOH,8CAOC;AAOD,oDAEC;AAUD,4CAEC;
|
|
1
|
+
{"version":3,"file":"environment.js","sourceRoot":"","sources":["../../src/utils/environment.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAOH,8CAOC;AAOD,oDAEC;AAUD,4CAEC;AAjCD;;;;GAIG;AACH,SAAgB,iBAAiB;IAC7B,qCAAqC;IACrC,OAAO,CACH,OAAO,OAAO,KAAK,WAAW;QAC9B,OAAO,CAAC,QAAQ,IAAI,IAAI;QACxB,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAI,CAChC,CAAC;AACN,CAAC;AAED;;;;GAIG;AACH,SAAgB,oBAAoB;IAChC,OAAO,CAAC,iBAAiB,EAAE,CAAC;AAChC,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,gBAAgB;IAC5B,OAAO,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "js-chess-engine",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.2",
|
|
4
4
|
"description": "Simple and fast Node.js chess engine without dependencies",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"chess",
|
|
@@ -17,13 +17,16 @@
|
|
|
17
17
|
"build:watch": "tsc --watch",
|
|
18
18
|
"benchmark": "npm run build && node scripts/benchmark-levels.mjs",
|
|
19
19
|
"clean": "rm -rf dist",
|
|
20
|
+
"lint": "eslint .",
|
|
21
|
+
"lint:fix": "eslint . --fix",
|
|
20
22
|
"prebuild": "npm run clean",
|
|
21
23
|
"test": "jest",
|
|
22
24
|
"test:watch": "jest --watch",
|
|
23
25
|
"test:coverage": "jest --coverage",
|
|
26
|
+
"test:tt-cache": "npm run build && node scripts/test-tt-cache.mjs",
|
|
24
27
|
"typecheck": "tsc --noEmit",
|
|
25
28
|
"play": "node example/play.mjs",
|
|
26
|
-
"preversion": "npm test && npm run build",
|
|
29
|
+
"preversion": "npm run lint && npm test && npm run build",
|
|
27
30
|
"version": "conventional-changelog -p angular -i CHANGELOG.md -s && git add CHANGELOG.md"
|
|
28
31
|
},
|
|
29
32
|
"author": "bc.josefjadrny@gmail.com",
|
|
@@ -37,12 +40,17 @@
|
|
|
37
40
|
"node": ">=24"
|
|
38
41
|
},
|
|
39
42
|
"devDependencies": {
|
|
43
|
+
"@eslint/js": "^9.39.2",
|
|
40
44
|
"@types/jest": "^30.0.0",
|
|
41
45
|
"@types/node": "^25.0.9",
|
|
42
46
|
"conventional-changelog-cli": "^5.0.0",
|
|
47
|
+
"eslint": "^9.39.2",
|
|
48
|
+
"eslint-config-prettier": "^10.1.8",
|
|
49
|
+
"eslint-plugin-jest": "^29.12.1",
|
|
43
50
|
"jest": "^30.2.0",
|
|
44
51
|
"ts-jest": "^29.4.6",
|
|
45
52
|
"ts-node": "^10.9.2",
|
|
46
|
-
"typescript": "^5.9.3"
|
|
53
|
+
"typescript": "^5.9.3",
|
|
54
|
+
"typescript-eslint": "^8.54.0"
|
|
47
55
|
}
|
|
48
56
|
}
|