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.
Files changed (91) hide show
  1. package/LICENSE.txt +0 -0
  2. package/README.md +0 -0
  3. package/attacks.d.ts +0 -0
  4. package/attacks.js +7 -7
  5. package/attacks.js.map +1 -1
  6. package/board.d.ts +3 -0
  7. package/board.js +31 -0
  8. package/board.js.map +1 -1
  9. package/compat.d.ts +6 -24
  10. package/compat.js +15 -171
  11. package/compat.js.map +1 -1
  12. package/csa.d.ts +4 -3
  13. package/csa.js +38 -33
  14. package/csa.js.map +1 -1
  15. package/csaUtil.d.ts +1 -1
  16. package/csaUtil.js +3 -3
  17. package/csaUtil.js.map +1 -1
  18. package/debug.d.ts +0 -0
  19. package/debug.js +29 -55
  20. package/debug.js.map +1 -1
  21. package/fen.d.ts +6 -5
  22. package/fen.js +53 -49
  23. package/fen.js.map +1 -1
  24. package/hand.d.ts +38 -0
  25. package/hand.js +74 -0
  26. package/hand.js.map +1 -0
  27. package/hash.d.ts +4 -3
  28. package/hash.js +9 -9
  29. package/hash.js.map +1 -1
  30. package/index.d.ts +4 -3
  31. package/index.js +3 -7
  32. package/index.js.map +1 -1
  33. package/kif.d.ts +5 -4
  34. package/kif.js +70 -65
  35. package/kif.js.map +1 -1
  36. package/kifHandicaps.d.ts +0 -0
  37. package/kifHandicaps.js +5 -0
  38. package/kifHandicaps.js.map +1 -1
  39. package/kifUtil.d.ts +0 -0
  40. package/kifUtil.js +4 -4
  41. package/kifUtil.js.map +1 -1
  42. package/package.json +9 -5
  43. package/setup.d.ts +2 -32
  44. package/setup.js +3 -74
  45. package/setup.js.map +1 -1
  46. package/shogi.d.ts +14 -7
  47. package/shogi.js +109 -106
  48. package/shogi.js.map +1 -1
  49. package/squareSet.d.ts +1 -5
  50. package/squareSet.js +0 -13
  51. package/squareSet.js.map +1 -1
  52. package/src/attacks.ts +0 -0
  53. package/src/board.ts +34 -0
  54. package/src/compat.ts +18 -197
  55. package/src/csa.ts +29 -21
  56. package/src/csaUtil.ts +3 -2
  57. package/src/debug.ts +25 -55
  58. package/src/fen.ts +42 -35
  59. package/src/hand.ts +94 -0
  60. package/src/hash.ts +8 -7
  61. package/src/index.ts +5 -5
  62. package/src/kif.ts +51 -43
  63. package/src/kifHandicaps.ts +5 -0
  64. package/src/kifUtil.ts +0 -0
  65. package/src/setup.ts +4 -91
  66. package/src/shogi.ts +75 -75
  67. package/src/squareSet.ts +1 -18
  68. package/src/transform.ts +3 -1
  69. package/src/types.ts +13 -16
  70. package/src/util.ts +2 -68
  71. package/src/variant.ts +44 -3
  72. package/src/variantUtil.ts +160 -0
  73. package/transform.d.ts +0 -0
  74. package/transform.js +3 -1
  75. package/transform.js.map +1 -1
  76. package/types.d.ts +3 -7
  77. package/types.js +13 -14
  78. package/types.js.map +1 -1
  79. package/util.d.ts +1 -4
  80. package/util.js +2 -54
  81. package/util.js.map +1 -1
  82. package/variant.d.ts +12 -1
  83. package/variant.js +38 -3
  84. package/variant.js.map +1 -1
  85. package/variantUtil.d.ts +13 -0
  86. package/variantUtil.js +160 -0
  87. package/variantUtil.js.map +1 -0
  88. package/san.d.ts +0 -6
  89. package/san.js +0 -135
  90. package/san.js.map +0 -1
  91. 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.makePockets = exports.makePocket = exports.makeBoardFen = exports.makePiece = exports.parsePiece = exports.parseFen = exports.parsePockets = 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;
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["Pockets"] = "ERR_POCKETS";
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 = (0, util_1.charToRole)(ch);
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 = 0;
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 = 0;
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 !== 0 || file !== 9)
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 parsePockets(pocketPart) {
67
- if (pocketPart.toLowerCase().includes('k'))
68
- return result_1.Result.err(new FenError(InvalidFen.Pockets));
69
- const pockets = setup_1.Material.empty();
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(pocketPart[i]) >= 0) {
76
- count = parseInt(pocketPart[i++], 10);
77
- if (parseInt(pocketPart[i]) >= 0)
78
- count = count * 10 + parseInt(pocketPart[i++], 10);
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(pocketPart[i]);
86
+ const piece = charToPiece(handsPart[i]);
83
87
  if (!piece)
84
- return result_1.Result.err(new FenError(InvalidFen.Pockets));
85
- pockets[piece.color][piece.role] += count;
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(pockets);
91
+ return result_1.Result.ok(hands);
88
92
  }
89
- exports.parsePockets = parsePockets;
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 (!(0, util_1.defined)(turnPart) || turnPart === 'b')
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
- // Pocket
105
- const pocketPart = parts.shift();
106
- let pockets;
107
- if (!(0, util_1.defined)(pocketPart))
108
- pockets = result_1.Result.ok(setup_1.Material.empty());
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
- pockets = parsePockets(pocketPart);
114
+ hands = parseHands(handsPart);
111
115
  // Turn
112
116
  const fullmovesPart = parts.shift();
113
- const fullmoves = (0, util_1.defined)(fullmovesPart) ? parseSmallUint(fullmovesPart) : 1;
114
- if (!(0, util_1.defined)(fullmoves))
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 => pockets.map(pockets => {
122
+ return board.chain(board => hands.map(hands => {
119
123
  return {
120
124
  board,
121
- pockets,
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 = (0, util_1.roleToChar)(piece.role);
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 >= 0; rank--) {
150
- for (let file = 0; file < 9; 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 !== 0)
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 makePocket(material) {
176
- return types_1.POCKET_ROLES.map(role => {
177
- const r = (0, util_1.roleToChar)(role);
178
- const n = material[role];
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.makePocket = makePocket;
183
- function makePockets(pocket) {
184
- const pockets = makePocket(pocket.sente).toUpperCase() + makePocket(pocket.gote);
185
- return pockets === '' ? '-' : pockets;
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.makePockets = makePockets;
191
+ exports.makeHands = makeHands;
188
192
  function makeFen(setup, opts) {
189
193
  return [
190
194
  makeBoardFen(setup.board),
191
- (0, util_1.toBW)(setup.turn),
192
- makePockets(setup.pockets),
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":"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"}
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, MaterialSide, Material } from './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 hashMaterialSide(side: MaterialSide, state?: number): number;
6
- export declare function hashMaterial(material: Material, state?: number): number;
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.hashMaterial = exports.hashMaterialSide = exports.hashBoard = exports.fxhash32 = void 0;
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 hashMaterialSide(side, state = 0) {
20
- for (const role of types_1.POCKET_ROLES)
21
- state = fxhash32(side[role], state);
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.hashMaterialSide = hashMaterialSide;
25
- function hashMaterial(material, state = 0) {
24
+ exports.hashHand = hashHand;
25
+ function hashHands(hands, state = 0) {
26
26
  for (const color of types_1.COLORS)
27
- state = hashMaterialSide(material[color], state);
27
+ state = hashHand(hands[color], state);
28
28
  return state;
29
29
  }
30
- exports.hashMaterial = hashMaterial;
30
+ exports.hashHands = hashHands;
31
31
  function hashSetup(setup, state = 0) {
32
32
  state = hashBoard(setup.board, state);
33
- state = hashMaterial(setup.pockets, 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,mCAAsD;AAItD,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,gBAAgB,CAAC,IAAkB,EAAE,KAAK,GAAG,CAAC;IAC5D,KAAK,MAAM,IAAI,IAAI,oBAAY;QAAE,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;IACrE,OAAO,KAAK,CAAC;AACf,CAAC;AAHD,4CAGC;AAED,SAAgB,YAAY,CAAC,QAAkB,EAAE,KAAK,GAAG,CAAC;IACxD,KAAK,MAAM,KAAK,IAAI,cAAM;QAAE,KAAK,GAAG,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;IAC7E,OAAO,KAAK,CAAC;AACf,CAAC;AAHD,oCAGC;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,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC3C,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO;QAAE,KAAK,GAAG,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACvD,OAAO,KAAK,CAAC;AACf,CAAC;AALD,8BAKC"}
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, POCKET_ROLES, PROMOTABLE_ROLES, ByRole, Piece, NormalMove, DropMove, Move, isDrop, isNormal, Rules, RULES, Outcome, } from './types';
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 { Material, MaterialSide, Setup, defaultSetup } from './setup';
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.MaterialSide = exports.Material = 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.PROMOTABLE_ROLES = exports.POCKET_ROLES = exports.ROLES = exports.COLORS = exports.RANK_NAMES = exports.FILE_NAMES = void 0;
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":";;;;AAAA,iCAyBiB;AAxBf,mGAAA,UAAU,OAAA;AACV,mGAAA,UAAU,OAAA;AAOV,+FAAA,MAAM,OAAA;AAGN,8FAAA,KAAK,OAAA;AACL,qGAAA,YAAY,OAAA;AACZ,yGAAA,gBAAgB,OAAA;AAMhB,+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,iCAAsE;AAA7D,iGAAA,QAAQ,OAAA;AAAE,qGAAA,YAAY,OAAA;AAAS,qGAAA,YAAY,OAAA;AAEpD,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,+BAA6B;AAE7B,uCAAqC;AAErC,+BAA6B;AAE7B,uCAAqC;AAErC,+BAA6B;AAE7B,2CAAyC;AAEzC,uCAAqC"}
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 { MaterialSide, Setup } from './setup';
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
- Pockets = "ERR_POCKETS"
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 makeKifPocket(material: MaterialSide): string;
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(pocketPart: string): Result<MaterialSide, KifError>;
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[];