shogiops 0.2.7 → 0.4.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/LICENSE.txt +0 -0
- package/README.md +0 -0
- package/attacks.d.ts +0 -0
- package/attacks.js +7 -7
- package/attacks.js.map +1 -1
- package/board.d.ts +3 -0
- package/board.js +31 -0
- package/board.js.map +1 -1
- package/compat.d.ts +6 -24
- package/compat.js +15 -171
- package/compat.js.map +1 -1
- package/csa.d.ts +4 -3
- package/csa.js +38 -33
- package/csa.js.map +1 -1
- package/csaUtil.d.ts +1 -1
- package/csaUtil.js +3 -3
- package/csaUtil.js.map +1 -1
- package/debug.d.ts +0 -0
- package/debug.js +29 -55
- package/debug.js.map +1 -1
- package/fen.d.ts +6 -5
- package/fen.js +53 -49
- package/fen.js.map +1 -1
- package/hand.d.ts +38 -0
- package/hand.js +74 -0
- package/hand.js.map +1 -0
- package/hash.d.ts +4 -3
- package/hash.js +9 -9
- package/hash.js.map +1 -1
- package/index.d.ts +4 -3
- package/index.js +3 -7
- package/index.js.map +1 -1
- package/kif.d.ts +5 -4
- package/kif.js +70 -65
- package/kif.js.map +1 -1
- package/kifHandicaps.d.ts +0 -0
- package/kifHandicaps.js +5 -0
- package/kifHandicaps.js.map +1 -1
- package/kifUtil.d.ts +0 -0
- package/kifUtil.js +4 -4
- package/kifUtil.js.map +1 -1
- package/package.json +9 -5
- package/setup.d.ts +2 -32
- package/setup.js +3 -74
- package/setup.js.map +1 -1
- package/shogi.d.ts +14 -7
- package/shogi.js +109 -106
- package/shogi.js.map +1 -1
- package/squareSet.d.ts +1 -5
- package/squareSet.js +0 -13
- package/squareSet.js.map +1 -1
- package/src/attacks.ts +0 -0
- package/src/board.ts +34 -0
- package/src/compat.ts +18 -197
- package/src/csa.ts +29 -21
- package/src/csaUtil.ts +3 -2
- package/src/debug.ts +25 -55
- package/src/fen.ts +42 -35
- package/src/hand.ts +94 -0
- package/src/hash.ts +8 -7
- package/src/index.ts +5 -5
- package/src/kif.ts +51 -43
- package/src/kifHandicaps.ts +5 -0
- package/src/kifUtil.ts +0 -0
- package/src/setup.ts +4 -91
- package/src/shogi.ts +75 -75
- package/src/squareSet.ts +1 -18
- package/src/transform.ts +3 -1
- package/src/types.ts +13 -16
- package/src/util.ts +2 -68
- package/src/variant.ts +44 -3
- package/src/variantUtil.ts +160 -0
- package/transform.d.ts +0 -0
- package/transform.js +3 -1
- package/transform.js.map +1 -1
- package/types.d.ts +3 -7
- package/types.js +13 -14
- package/types.js.map +1 -1
- package/util.d.ts +1 -4
- package/util.js +2 -54
- package/util.js.map +1 -1
- package/variant.d.ts +12 -1
- package/variant.js +38 -3
- package/variant.js.map +1 -1
- package/variantUtil.d.ts +13 -0
- package/variantUtil.js +160 -0
- package/variantUtil.js.map +1 -0
- package/san.d.ts +0 -6
- package/san.js +0 -135
- package/san.js.map +0 -1
- package/src/san.ts +0 -136
package/fen.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.makeFen = exports.
|
|
3
|
+
exports.makeFen = exports.makeHands = exports.makeHand = exports.makeBoardFen = exports.makePiece = exports.parsePiece = exports.parseFen = exports.parseHands = exports.parseBoardFen = exports.FenError = exports.InvalidFen = exports.EMPTY_FEN = exports.EMPTY_EPD = exports.EMPTY_BOARD_FEN = exports.INITIAL_FEN = exports.INITIAL_EPD = exports.INITIAL_BOARD_FEN = void 0;
|
|
4
4
|
const result_1 = require("@badrap/result");
|
|
5
|
-
const types_1 = require("./types");
|
|
6
5
|
const board_1 = require("./board");
|
|
7
|
-
const setup_1 = require("./setup");
|
|
8
6
|
const util_1 = require("./util");
|
|
7
|
+
const hand_1 = require("./hand");
|
|
8
|
+
const types_1 = require("./types");
|
|
9
9
|
exports.INITIAL_BOARD_FEN = 'lnsgkgsnl/1r5b1/ppppppppp/9/9/9/PPPPPPPPP/1B5R1/LNSGKGSNL';
|
|
10
10
|
exports.INITIAL_EPD = exports.INITIAL_BOARD_FEN + ' b -';
|
|
11
11
|
exports.INITIAL_FEN = exports.INITIAL_EPD + ' 1';
|
|
@@ -16,7 +16,7 @@ var InvalidFen;
|
|
|
16
16
|
(function (InvalidFen) {
|
|
17
17
|
InvalidFen["Fen"] = "ERR_FEN";
|
|
18
18
|
InvalidFen["Board"] = "ERR_BOARD";
|
|
19
|
-
InvalidFen["
|
|
19
|
+
InvalidFen["Hands"] = "ERR_HANDS";
|
|
20
20
|
InvalidFen["Turn"] = "ERR_TURN";
|
|
21
21
|
InvalidFen["Fullmoves"] = "ERR_FULLMOVES";
|
|
22
22
|
})(InvalidFen = exports.InvalidFen || (exports.InvalidFen = {}));
|
|
@@ -27,17 +27,23 @@ function parseSmallUint(str) {
|
|
|
27
27
|
return /^\d{1,4}$/.test(str) ? parseInt(str, 10) : undefined;
|
|
28
28
|
}
|
|
29
29
|
function charToPiece(ch) {
|
|
30
|
-
const role =
|
|
30
|
+
const role = util_1.charToRole(ch);
|
|
31
31
|
return role && { role, color: ch.toLowerCase() === ch ? 'gote' : 'sente' };
|
|
32
32
|
}
|
|
33
33
|
function parseBoardFen(boardPart) {
|
|
34
34
|
const board = board_1.Board.empty();
|
|
35
|
+
const ranks = boardPart.split('/');
|
|
36
|
+
board.numberOfRanks = ranks.length;
|
|
37
|
+
// we assume the board is square
|
|
38
|
+
// since that's good enough for now...
|
|
39
|
+
board.numberOfFiles = board.numberOfRanks;
|
|
40
|
+
const offset = 9 - board.numberOfFiles;
|
|
35
41
|
let rank = 8;
|
|
36
|
-
let file =
|
|
42
|
+
let file = offset;
|
|
37
43
|
for (let i = 0; i < boardPart.length; i++) {
|
|
38
44
|
let c = boardPart[i];
|
|
39
45
|
if (c === '/' && file === 9) {
|
|
40
|
-
file =
|
|
46
|
+
file = offset;
|
|
41
47
|
rank--;
|
|
42
48
|
}
|
|
43
49
|
else {
|
|
@@ -58,35 +64,33 @@ function parseBoardFen(boardPart) {
|
|
|
58
64
|
}
|
|
59
65
|
}
|
|
60
66
|
}
|
|
61
|
-
if (rank !==
|
|
67
|
+
if (rank !== offset || file !== 9)
|
|
62
68
|
return result_1.Result.err(new FenError(InvalidFen.Board));
|
|
63
69
|
return result_1.Result.ok(board);
|
|
64
70
|
}
|
|
65
71
|
exports.parseBoardFen = parseBoardFen;
|
|
66
|
-
function
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
for (let i = 0; i < pocketPart.length; i++) {
|
|
71
|
-
if (pocketPart[i] === '-')
|
|
72
|
+
function parseHands(handsPart) {
|
|
73
|
+
const hands = hand_1.Hands.empty();
|
|
74
|
+
for (let i = 0; i < handsPart.length; i++) {
|
|
75
|
+
if (handsPart[i] === '-')
|
|
72
76
|
break;
|
|
73
77
|
// max 99
|
|
74
78
|
let count;
|
|
75
|
-
if (parseInt(
|
|
76
|
-
count = parseInt(
|
|
77
|
-
if (parseInt(
|
|
78
|
-
count = count * 10 + parseInt(
|
|
79
|
+
if (parseInt(handsPart[i]) >= 0) {
|
|
80
|
+
count = parseInt(handsPart[i++], 10);
|
|
81
|
+
if (parseInt(handsPart[i]) >= 0)
|
|
82
|
+
count = count * 10 + parseInt(handsPart[i++], 10);
|
|
79
83
|
}
|
|
80
84
|
else
|
|
81
85
|
count = 1;
|
|
82
|
-
const piece = charToPiece(
|
|
86
|
+
const piece = charToPiece(handsPart[i]);
|
|
83
87
|
if (!piece)
|
|
84
|
-
return result_1.Result.err(new FenError(InvalidFen.
|
|
85
|
-
|
|
88
|
+
return result_1.Result.err(new FenError(InvalidFen.Hands));
|
|
89
|
+
hands[piece.color][piece.role] += count;
|
|
86
90
|
}
|
|
87
|
-
return result_1.Result.ok(
|
|
91
|
+
return result_1.Result.ok(hands);
|
|
88
92
|
}
|
|
89
|
-
exports.
|
|
93
|
+
exports.parseHands = parseHands;
|
|
90
94
|
function parseFen(fen) {
|
|
91
95
|
const parts = fen.split(' ');
|
|
92
96
|
// Board
|
|
@@ -95,30 +99,30 @@ function parseFen(fen) {
|
|
|
95
99
|
// Turn
|
|
96
100
|
const turnPart = parts.shift();
|
|
97
101
|
let turn;
|
|
98
|
-
if (!
|
|
102
|
+
if (!util_1.defined(turnPart) || turnPart === 'b')
|
|
99
103
|
turn = 'sente';
|
|
100
104
|
else if (turnPart === 'w')
|
|
101
105
|
turn = 'gote';
|
|
102
106
|
else
|
|
103
107
|
return result_1.Result.err(new FenError(InvalidFen.Turn));
|
|
104
|
-
//
|
|
105
|
-
const
|
|
106
|
-
let
|
|
107
|
-
if (!
|
|
108
|
-
|
|
108
|
+
// Hands
|
|
109
|
+
const handsPart = parts.shift();
|
|
110
|
+
let hands;
|
|
111
|
+
if (!util_1.defined(handsPart))
|
|
112
|
+
hands = result_1.Result.ok(hand_1.Hands.empty());
|
|
109
113
|
else
|
|
110
|
-
|
|
114
|
+
hands = parseHands(handsPart);
|
|
111
115
|
// Turn
|
|
112
116
|
const fullmovesPart = parts.shift();
|
|
113
|
-
const fullmoves =
|
|
114
|
-
if (!
|
|
117
|
+
const fullmoves = util_1.defined(fullmovesPart) ? parseSmallUint(fullmovesPart) : 1;
|
|
118
|
+
if (!util_1.defined(fullmoves))
|
|
115
119
|
return result_1.Result.err(new FenError(InvalidFen.Fullmoves));
|
|
116
120
|
if (parts.length > 0)
|
|
117
121
|
return result_1.Result.err(new FenError(InvalidFen.Fen));
|
|
118
|
-
return board.chain(board =>
|
|
122
|
+
return board.chain(board => hands.map(hands => {
|
|
119
123
|
return {
|
|
120
124
|
board,
|
|
121
|
-
|
|
125
|
+
hands,
|
|
122
126
|
turn,
|
|
123
127
|
fullmoves: Math.max(1, fullmoves),
|
|
124
128
|
};
|
|
@@ -137,7 +141,7 @@ function parsePiece(str) {
|
|
|
137
141
|
}
|
|
138
142
|
exports.parsePiece = parsePiece;
|
|
139
143
|
function makePiece(piece) {
|
|
140
|
-
let r =
|
|
144
|
+
let r = util_1.roleToChar(piece.role);
|
|
141
145
|
if (piece.color === 'sente')
|
|
142
146
|
r = r.toUpperCase();
|
|
143
147
|
return r;
|
|
@@ -146,8 +150,8 @@ exports.makePiece = makePiece;
|
|
|
146
150
|
function makeBoardFen(board) {
|
|
147
151
|
let fen = '';
|
|
148
152
|
let empty = 0;
|
|
149
|
-
for (let rank = 8; rank >=
|
|
150
|
-
for (let file =
|
|
153
|
+
for (let rank = 8; rank >= 9 - board.numberOfRanks; rank--) {
|
|
154
|
+
for (let file = 9 - board.numberOfFiles; file < 9; file++) {
|
|
151
155
|
const square = file + rank * 9;
|
|
152
156
|
const piece = board.get(square);
|
|
153
157
|
if (!piece)
|
|
@@ -164,7 +168,7 @@ function makeBoardFen(board) {
|
|
|
164
168
|
fen += empty;
|
|
165
169
|
empty = 0;
|
|
166
170
|
}
|
|
167
|
-
if (rank !==
|
|
171
|
+
if (rank !== 9 - board.numberOfRanks)
|
|
168
172
|
fen += '/';
|
|
169
173
|
}
|
|
170
174
|
}
|
|
@@ -172,24 +176,24 @@ function makeBoardFen(board) {
|
|
|
172
176
|
return fen;
|
|
173
177
|
}
|
|
174
178
|
exports.makeBoardFen = makeBoardFen;
|
|
175
|
-
function
|
|
176
|
-
return types_1.
|
|
177
|
-
const r =
|
|
178
|
-
const n =
|
|
179
|
+
function makeHand(hand) {
|
|
180
|
+
return types_1.ROLES.map(role => {
|
|
181
|
+
const r = util_1.roleToChar(role);
|
|
182
|
+
const n = hand[role];
|
|
179
183
|
return n > 1 ? n + r : n === 1 ? r : '';
|
|
180
184
|
}).join('');
|
|
181
185
|
}
|
|
182
|
-
exports.
|
|
183
|
-
function
|
|
184
|
-
const
|
|
185
|
-
return
|
|
186
|
+
exports.makeHand = makeHand;
|
|
187
|
+
function makeHands(hands) {
|
|
188
|
+
const handsStr = makeHand(hands.sente).toUpperCase() + makeHand(hands.gote);
|
|
189
|
+
return handsStr === '' ? '-' : handsStr;
|
|
186
190
|
}
|
|
187
|
-
exports.
|
|
191
|
+
exports.makeHands = makeHands;
|
|
188
192
|
function makeFen(setup, opts) {
|
|
189
193
|
return [
|
|
190
194
|
makeBoardFen(setup.board),
|
|
191
|
-
|
|
192
|
-
|
|
195
|
+
util_1.toBW(setup.turn),
|
|
196
|
+
makeHands(setup.hands),
|
|
193
197
|
...((opts === null || opts === void 0 ? void 0 : opts.epd) ? [] : [Math.max(1, Math.min(setup.fullmoves, 9999))]),
|
|
194
198
|
].join(' ');
|
|
195
199
|
}
|
package/fen.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fen.js","sourceRoot":"","sources":["src/fen.ts"],"names":[],"mappings":";;;AAAA,2CAAwC;
|
|
1
|
+
{"version":3,"file":"fen.js","sourceRoot":"","sources":["src/fen.ts"],"names":[],"mappings":"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"}
|
package/hand.d.ts
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Role } from './types';
|
|
2
|
+
export declare class Hand {
|
|
3
|
+
pawn: number;
|
|
4
|
+
lance: number;
|
|
5
|
+
knight: number;
|
|
6
|
+
silver: number;
|
|
7
|
+
gold: number;
|
|
8
|
+
bishop: number;
|
|
9
|
+
rook: number;
|
|
10
|
+
tokin: number;
|
|
11
|
+
promotedlance: number;
|
|
12
|
+
promotedknight: number;
|
|
13
|
+
promotedsilver: number;
|
|
14
|
+
horse: number;
|
|
15
|
+
dragon: number;
|
|
16
|
+
king: number;
|
|
17
|
+
private constructor();
|
|
18
|
+
static empty(): Hand;
|
|
19
|
+
clone(): Hand;
|
|
20
|
+
equals(other: Hand): boolean;
|
|
21
|
+
add(other: Hand): Hand;
|
|
22
|
+
nonEmpty(): boolean;
|
|
23
|
+
isEmpty(): boolean;
|
|
24
|
+
count(): number;
|
|
25
|
+
[Symbol.iterator](): Iterator<[Role, number]>;
|
|
26
|
+
}
|
|
27
|
+
export declare class Hands {
|
|
28
|
+
gote: Hand;
|
|
29
|
+
sente: Hand;
|
|
30
|
+
constructor(gote: Hand, sente: Hand);
|
|
31
|
+
static empty(): Hands;
|
|
32
|
+
clone(): Hands;
|
|
33
|
+
equals(other: Hands): boolean;
|
|
34
|
+
add(other: Hands): Hands;
|
|
35
|
+
count(): number;
|
|
36
|
+
isEmpty(): boolean;
|
|
37
|
+
nonEmpty(): boolean;
|
|
38
|
+
}
|
package/hand.js
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Hands = exports.Hand = void 0;
|
|
4
|
+
const types_1 = require("./types");
|
|
5
|
+
// Hand alone can store anything
|
|
6
|
+
// let the variants decide what to store and what not
|
|
7
|
+
class Hand {
|
|
8
|
+
constructor() { }
|
|
9
|
+
static empty() {
|
|
10
|
+
const m = new Hand();
|
|
11
|
+
for (const role of types_1.ROLES)
|
|
12
|
+
m[role] = 0;
|
|
13
|
+
return m;
|
|
14
|
+
}
|
|
15
|
+
clone() {
|
|
16
|
+
const m = new Hand();
|
|
17
|
+
for (const role of types_1.ROLES)
|
|
18
|
+
m[role] = this[role];
|
|
19
|
+
return m;
|
|
20
|
+
}
|
|
21
|
+
equals(other) {
|
|
22
|
+
return types_1.ROLES.every(role => this[role] === other[role]);
|
|
23
|
+
}
|
|
24
|
+
add(other) {
|
|
25
|
+
const m = new Hand();
|
|
26
|
+
for (const role of types_1.ROLES)
|
|
27
|
+
m[role] = this[role] + other[role];
|
|
28
|
+
return m;
|
|
29
|
+
}
|
|
30
|
+
nonEmpty() {
|
|
31
|
+
return types_1.ROLES.some(role => this[role] > 0);
|
|
32
|
+
}
|
|
33
|
+
isEmpty() {
|
|
34
|
+
return !this.nonEmpty();
|
|
35
|
+
}
|
|
36
|
+
count() {
|
|
37
|
+
return types_1.ROLES.map(role => this[role]).reduce((acc, cur) => acc + cur);
|
|
38
|
+
}
|
|
39
|
+
*[Symbol.iterator]() {
|
|
40
|
+
for (const role of types_1.ROLES.filter(r => this[r] > 0)) {
|
|
41
|
+
yield [role, this[role]];
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
exports.Hand = Hand;
|
|
46
|
+
class Hands {
|
|
47
|
+
constructor(gote, sente) {
|
|
48
|
+
this.gote = gote;
|
|
49
|
+
this.sente = sente;
|
|
50
|
+
}
|
|
51
|
+
static empty() {
|
|
52
|
+
return new Hands(Hand.empty(), Hand.empty());
|
|
53
|
+
}
|
|
54
|
+
clone() {
|
|
55
|
+
return new Hands(this.gote.clone(), this.sente.clone());
|
|
56
|
+
}
|
|
57
|
+
equals(other) {
|
|
58
|
+
return this.gote.equals(other.gote) && this.sente.equals(other.sente);
|
|
59
|
+
}
|
|
60
|
+
add(other) {
|
|
61
|
+
return new Hands(this.gote.add(other.gote), this.sente.add(other.sente));
|
|
62
|
+
}
|
|
63
|
+
count() {
|
|
64
|
+
return this.gote.count() + this.sente.count();
|
|
65
|
+
}
|
|
66
|
+
isEmpty() {
|
|
67
|
+
return this.gote.isEmpty() && this.sente.isEmpty();
|
|
68
|
+
}
|
|
69
|
+
nonEmpty() {
|
|
70
|
+
return !this.isEmpty();
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
exports.Hands = Hands;
|
|
74
|
+
//# sourceMappingURL=hand.js.map
|
package/hand.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hand.js","sourceRoot":"","sources":["src/hand.ts"],"names":[],"mappings":"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"}
|
package/hash.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { Board } from './board';
|
|
2
|
-
import { Setup
|
|
2
|
+
import { Setup } from './setup';
|
|
3
|
+
import { Hand, Hands } from './hand';
|
|
3
4
|
export declare function fxhash32(word: number, state?: number): number;
|
|
4
5
|
export declare function hashBoard(board: Board, state?: number): number;
|
|
5
|
-
export declare function
|
|
6
|
-
export declare function
|
|
6
|
+
export declare function hashHand(hand: Hand, state?: number): number;
|
|
7
|
+
export declare function hashHands(hands: Hands, state?: number): number;
|
|
7
8
|
export declare function hashSetup(setup: Setup, state?: number): number;
|
package/hash.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.hashSetup = exports.
|
|
3
|
+
exports.hashSetup = exports.hashHands = exports.hashHand = exports.hashBoard = exports.fxhash32 = void 0;
|
|
4
4
|
const types_1 = require("./types");
|
|
5
5
|
function rol32(n, left) {
|
|
6
6
|
return (n << left) | (n >>> (32 - left));
|
|
@@ -16,21 +16,21 @@ function hashBoard(board, state = 0) {
|
|
|
16
16
|
return state;
|
|
17
17
|
}
|
|
18
18
|
exports.hashBoard = hashBoard;
|
|
19
|
-
function
|
|
20
|
-
for (const role of types_1.
|
|
21
|
-
state = fxhash32(
|
|
19
|
+
function hashHand(hand, state = 0) {
|
|
20
|
+
for (const role of types_1.ROLES)
|
|
21
|
+
state = fxhash32(hand[role], state);
|
|
22
22
|
return state;
|
|
23
23
|
}
|
|
24
|
-
exports.
|
|
25
|
-
function
|
|
24
|
+
exports.hashHand = hashHand;
|
|
25
|
+
function hashHands(hands, state = 0) {
|
|
26
26
|
for (const color of types_1.COLORS)
|
|
27
|
-
state =
|
|
27
|
+
state = hashHand(hands[color], state);
|
|
28
28
|
return state;
|
|
29
29
|
}
|
|
30
|
-
exports.
|
|
30
|
+
exports.hashHands = hashHands;
|
|
31
31
|
function hashSetup(setup, state = 0) {
|
|
32
32
|
state = hashBoard(setup.board, state);
|
|
33
|
-
state =
|
|
33
|
+
state = hashHands(setup.hands, state);
|
|
34
34
|
if (setup.turn === 'sente')
|
|
35
35
|
state = fxhash32(1, state);
|
|
36
36
|
return state;
|
package/hash.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hash.js","sourceRoot":"","sources":["src/hash.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"hash.js","sourceRoot":"","sources":["src/hash.ts"],"names":[],"mappings":";;;AAAA,mCAAwC;AAKxC,SAAS,KAAK,CAAC,CAAS,EAAE,IAAY;IACpC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED,SAAgB,QAAQ,CAAC,IAAY,EAAE,KAAK,GAAG,CAAC;IAC9C,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC;AACvD,CAAC;AAFD,4BAEC;AAED,SAAgB,SAAS,CAAC,KAAY,EAAE,KAAK,GAAG,CAAC;IAC/C,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAC1F,KAAK,MAAM,IAAI,IAAI,aAAK;QACtB,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/F,OAAO,KAAK,CAAC;AACf,CAAC;AALD,8BAKC;AAED,SAAgB,QAAQ,CAAC,IAAU,EAAE,KAAK,GAAG,CAAC;IAC5C,KAAK,MAAM,IAAI,IAAI,aAAK;QAAE,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;IAC9D,OAAO,KAAK,CAAC;AACf,CAAC;AAHD,4BAGC;AAED,SAAgB,SAAS,CAAC,KAAY,EAAE,KAAK,GAAG,CAAC;IAC/C,KAAK,MAAM,KAAK,IAAI,cAAM;QAAE,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;IAClE,OAAO,KAAK,CAAC;AACf,CAAC;AAHD,8BAGC;AAED,SAAgB,SAAS,CAAC,KAAY,EAAE,KAAK,GAAG,CAAC;IAC/C,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACtC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACtC,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO;QAAE,KAAK,GAAG,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACvD,OAAO,KAAK,CAAC;AACf,CAAC;AALD,8BAKC"}
|
package/index.d.ts
CHANGED
|
@@ -1,19 +1,20 @@
|
|
|
1
|
-
export { FILE_NAMES, RANK_NAMES, FileName, RankName, Square, SquareName, BySquare, Color, COLORS, ByColor, Role, ROLES,
|
|
1
|
+
export { FILE_NAMES, RANK_NAMES, FileName, RankName, Square, SquareName, BySquare, Color, COLORS, ByColor, Role, ROLES, ByRole, Piece, NormalMove, DropMove, Move, isDrop, isNormal, Rules, RULES, Outcome, } from './types';
|
|
2
2
|
export { charToRole, defined, makeSquare, makeUsi, opposite, parseSquare, parseUsi, roleToChar, squareFile, squareRank, } from './util';
|
|
3
3
|
export { SquareSet } from './squareSet';
|
|
4
4
|
export { attacks, between, bishopAttacks, kingAttacks, knightAttacks, pawnAttacks, lanceAttacks, silverAttacks, goldAttacks, horseAttacks, dragonAttacks, ray, rookAttacks, } from './attacks';
|
|
5
5
|
export { Board } from './board';
|
|
6
|
-
export {
|
|
6
|
+
export { Setup, defaultSetup } from './setup';
|
|
7
7
|
export { IllegalSetup, Shogi, Position, PositionError, Context } from './shogi';
|
|
8
8
|
export * as compat from './compat';
|
|
9
9
|
export * as debug from './debug';
|
|
10
10
|
export * as fen from './fen';
|
|
11
11
|
export * as handicaps from './kifHandicaps';
|
|
12
|
+
export * as hand from './hand';
|
|
12
13
|
export * as hash from './hash';
|
|
13
14
|
export * as kif from './kif';
|
|
14
15
|
export * as kifUtil from './kifUtil';
|
|
15
16
|
export * as csa from './csa';
|
|
16
17
|
export * as csaUtil from './csaUtil';
|
|
17
|
-
export * as san from './san';
|
|
18
18
|
export * as transform from './transform';
|
|
19
19
|
export * as variant from './variant';
|
|
20
|
+
export * as variantUtil from './variantUtil';
|
package/index.js
CHANGED
|
@@ -1,14 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.csaUtil = exports.csa = exports.kifUtil = exports.kif = exports.hash = exports.handicaps = exports.fen = exports.debug = exports.compat = exports.PositionError = exports.Position = exports.Shogi = exports.IllegalSetup = exports.defaultSetup = exports.
|
|
4
|
-
exports.variant = exports.transform = exports.san = void 0;
|
|
3
|
+
exports.variantUtil = exports.variant = exports.transform = exports.csaUtil = exports.csa = exports.kifUtil = exports.kif = exports.hash = exports.hand = exports.handicaps = exports.fen = exports.debug = exports.compat = exports.PositionError = exports.Position = exports.Shogi = exports.IllegalSetup = exports.defaultSetup = exports.Board = exports.rookAttacks = exports.ray = exports.dragonAttacks = exports.horseAttacks = exports.goldAttacks = exports.silverAttacks = exports.lanceAttacks = exports.pawnAttacks = exports.knightAttacks = exports.kingAttacks = exports.bishopAttacks = exports.between = exports.attacks = exports.SquareSet = exports.squareRank = exports.squareFile = exports.roleToChar = exports.parseUsi = exports.parseSquare = exports.opposite = exports.makeUsi = exports.makeSquare = exports.defined = exports.charToRole = exports.RULES = exports.isNormal = exports.isDrop = exports.ROLES = exports.COLORS = exports.RANK_NAMES = exports.FILE_NAMES = void 0;
|
|
5
4
|
var types_1 = require("./types");
|
|
6
5
|
Object.defineProperty(exports, "FILE_NAMES", { enumerable: true, get: function () { return types_1.FILE_NAMES; } });
|
|
7
6
|
Object.defineProperty(exports, "RANK_NAMES", { enumerable: true, get: function () { return types_1.RANK_NAMES; } });
|
|
8
7
|
Object.defineProperty(exports, "COLORS", { enumerable: true, get: function () { return types_1.COLORS; } });
|
|
9
8
|
Object.defineProperty(exports, "ROLES", { enumerable: true, get: function () { return types_1.ROLES; } });
|
|
10
|
-
Object.defineProperty(exports, "POCKET_ROLES", { enumerable: true, get: function () { return types_1.POCKET_ROLES; } });
|
|
11
|
-
Object.defineProperty(exports, "PROMOTABLE_ROLES", { enumerable: true, get: function () { return types_1.PROMOTABLE_ROLES; } });
|
|
12
9
|
Object.defineProperty(exports, "isDrop", { enumerable: true, get: function () { return types_1.isDrop; } });
|
|
13
10
|
Object.defineProperty(exports, "isNormal", { enumerable: true, get: function () { return types_1.isNormal; } });
|
|
14
11
|
Object.defineProperty(exports, "RULES", { enumerable: true, get: function () { return types_1.RULES; } });
|
|
@@ -42,8 +39,6 @@ Object.defineProperty(exports, "rookAttacks", { enumerable: true, get: function
|
|
|
42
39
|
var board_1 = require("./board");
|
|
43
40
|
Object.defineProperty(exports, "Board", { enumerable: true, get: function () { return board_1.Board; } });
|
|
44
41
|
var setup_1 = require("./setup");
|
|
45
|
-
Object.defineProperty(exports, "Material", { enumerable: true, get: function () { return setup_1.Material; } });
|
|
46
|
-
Object.defineProperty(exports, "MaterialSide", { enumerable: true, get: function () { return setup_1.MaterialSide; } });
|
|
47
42
|
Object.defineProperty(exports, "defaultSetup", { enumerable: true, get: function () { return setup_1.defaultSetup; } });
|
|
48
43
|
var shogi_1 = require("./shogi");
|
|
49
44
|
Object.defineProperty(exports, "IllegalSetup", { enumerable: true, get: function () { return shogi_1.IllegalSetup; } });
|
|
@@ -54,12 +49,13 @@ exports.compat = require("./compat");
|
|
|
54
49
|
exports.debug = require("./debug");
|
|
55
50
|
exports.fen = require("./fen");
|
|
56
51
|
exports.handicaps = require("./kifHandicaps");
|
|
52
|
+
exports.hand = require("./hand");
|
|
57
53
|
exports.hash = require("./hash");
|
|
58
54
|
exports.kif = require("./kif");
|
|
59
55
|
exports.kifUtil = require("./kifUtil");
|
|
60
56
|
exports.csa = require("./csa");
|
|
61
57
|
exports.csaUtil = require("./csaUtil");
|
|
62
|
-
exports.san = require("./san");
|
|
63
58
|
exports.transform = require("./transform");
|
|
64
59
|
exports.variant = require("./variant");
|
|
60
|
+
exports.variantUtil = require("./variantUtil");
|
|
65
61
|
//# sourceMappingURL=index.js.map
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["src/index.ts"],"names":[],"mappings":";;;AAAA,iCAuBiB;AAtBf,mGAAA,UAAU,OAAA;AACV,mGAAA,UAAU,OAAA;AAOV,+FAAA,MAAM,OAAA;AAGN,8FAAA,KAAK,OAAA;AAML,+FAAA,MAAM,OAAA;AACN,iGAAA,QAAQ,OAAA;AAER,8FAAA,KAAK,OAAA;AAIP,+BAWgB;AAVd,kGAAA,UAAU,OAAA;AACV,+FAAA,OAAO,OAAA;AACP,kGAAA,UAAU,OAAA;AACV,+FAAA,OAAO,OAAA;AACP,gGAAA,QAAQ,OAAA;AACR,mGAAA,WAAW,OAAA;AACX,gGAAA,QAAQ,OAAA;AACR,kGAAA,UAAU,OAAA;AACV,kGAAA,UAAU,OAAA;AACV,kGAAA,UAAU,OAAA;AAGZ,yCAAwC;AAA/B,sGAAA,SAAS,OAAA;AAElB,qCAcmB;AAbjB,kGAAA,OAAO,OAAA;AACP,kGAAA,OAAO,OAAA;AACP,wGAAA,aAAa,OAAA;AACb,sGAAA,WAAW,OAAA;AACX,wGAAA,aAAa,OAAA;AACb,sGAAA,WAAW,OAAA;AACX,uGAAA,YAAY,OAAA;AACZ,wGAAA,aAAa,OAAA;AACb,sGAAA,WAAW,OAAA;AACX,uGAAA,YAAY,OAAA;AACZ,wGAAA,aAAa,OAAA;AACb,8FAAA,GAAG,OAAA;AACH,sGAAA,WAAW,OAAA;AAGb,iCAAgC;AAAvB,8FAAA,KAAK,OAAA;AAEd,iCAA8C;AAA9B,qGAAA,YAAY,OAAA;AAE5B,iCAAgF;AAAvE,qGAAA,YAAY,OAAA;AAAE,8FAAA,KAAK,OAAA;AAAE,iGAAA,QAAQ,OAAA;AAAE,sGAAA,aAAa,OAAA;AAErD,qCAAmC;AAEnC,mCAAiC;AAEjC,+BAA6B;AAE7B,8CAA4C;AAE5C,iCAA+B;AAE/B,iCAA+B;AAE/B,+BAA6B;AAE7B,uCAAqC;AAErC,+BAA6B;AAE7B,uCAAqC;AAErC,2CAAyC;AAEzC,uCAAqC;AAErC,+CAA6C"}
|
package/kif.d.ts
CHANGED
|
@@ -1,24 +1,25 @@
|
|
|
1
1
|
import { Result } from '@badrap/result';
|
|
2
2
|
import { Board } from './board';
|
|
3
|
-
import {
|
|
3
|
+
import { Setup } from './setup';
|
|
4
4
|
import { Position } from './shogi';
|
|
5
5
|
import { Move, Square } from './types';
|
|
6
|
+
import { Hand } from './hand';
|
|
6
7
|
export declare enum InvalidKif {
|
|
7
8
|
Kif = "ERR_KIF",
|
|
8
9
|
Board = "ERR_BOARD",
|
|
9
10
|
Handicap = "ERR_HANDICAP",
|
|
10
|
-
|
|
11
|
+
Hands = "ERR_HANDS"
|
|
11
12
|
}
|
|
12
13
|
export declare class KifError extends Error {
|
|
13
14
|
}
|
|
14
15
|
export declare function makeKifHeader(setup: Setup): string;
|
|
15
16
|
export declare function makeKifPositionHeader(setup: Setup): string;
|
|
16
17
|
export declare function makeKifBoard(board: Board): string;
|
|
17
|
-
export declare function
|
|
18
|
+
export declare function makeKifHand(hand: Hand): string;
|
|
18
19
|
export declare function parseKifHeader(kif: string): Result<Setup, KifError>;
|
|
19
20
|
export declare function parseKifPositionHeader(kif: string): Result<Setup, KifError>;
|
|
20
21
|
export declare function parseKifBoard(kifBoard: string): Result<Board, KifError>;
|
|
21
|
-
export declare function parseKifHand(
|
|
22
|
+
export declare function parseKifHand(handPart: string): Result<Hand, KifError>;
|
|
22
23
|
export declare function parseTags(kif: string): [string, string][];
|
|
23
24
|
export declare function parseKifMove(kifMove: string, lastDest?: Square | undefined): Move | undefined;
|
|
24
25
|
export declare function parseKifMoves(kifMoves: string[], lastDest?: Square | undefined): Move[];
|