shogiops 0.2.8 → 0.5.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 (115) hide show
  1. package/attacks.js +32 -48
  2. package/attacks.js.map +1 -1
  3. package/board.d.ts +3 -0
  4. package/board.js +60 -33
  5. package/board.js.map +1 -1
  6. package/compat.d.ts +6 -24
  7. package/compat.js +20 -185
  8. package/compat.js.map +1 -1
  9. package/debug.js +37 -72
  10. package/debug.js.map +1 -1
  11. package/hand.d.ts +38 -0
  12. package/hand.js +69 -0
  13. package/hand.js.map +1 -0
  14. package/hash.d.ts +4 -3
  15. package/hash.js +12 -20
  16. package/hash.js.map +1 -1
  17. package/index.d.ts +13 -10
  18. package/index.js +22 -64
  19. package/index.js.map +1 -1
  20. package/{csa.d.ts → notation/csa/csa.d.ts} +9 -9
  21. package/notation/csa/csa.js +213 -0
  22. package/notation/csa/csa.js.map +1 -0
  23. package/notation/japanese.d.ts +3 -0
  24. package/notation/japanese.js +61 -0
  25. package/notation/japanese.js.map +1 -0
  26. package/{kif.d.ts → notation/kif/kif.d.ts} +10 -9
  27. package/notation/kif/kif.js +232 -0
  28. package/notation/kif/kif.js.map +1 -0
  29. package/{kifHandicaps.d.ts → notation/kif/kifHandicaps.d.ts} +0 -0
  30. package/{kifHandicaps.js → notation/kif/kifHandicaps.js} +7 -7
  31. package/notation/kif/kifHandicaps.js.map +1 -0
  32. package/notation/kitaoKawasaki.d.ts +3 -0
  33. package/notation/kitaoKawasaki.js +26 -0
  34. package/notation/kitaoKawasaki.js.map +1 -0
  35. package/notation/kitaokawasaki.d.ts +0 -0
  36. package/notation/kitaokawasaki.js +2 -0
  37. package/notation/kitaokawasaki.js.map +1 -0
  38. package/notation/notationUtil.d.ts +12 -0
  39. package/{kifUtil.js → notation/notationUtil.js} +39 -40
  40. package/notation/notationUtil.js.map +1 -0
  41. package/notation/western.d.ts +3 -0
  42. package/notation/western.js +23 -0
  43. package/notation/western.js.map +1 -0
  44. package/notation/westernEngine.d.ts +3 -0
  45. package/notation/westernEngine.js +23 -0
  46. package/notation/westernEngine.js.map +1 -0
  47. package/package.json +54 -37
  48. package/setup.d.ts +2 -32
  49. package/setup.js +5 -80
  50. package/setup.js.map +1 -1
  51. package/sfen.d.ts +33 -0
  52. package/sfen.js +188 -0
  53. package/sfen.js.map +1 -0
  54. package/shogi.d.ts +14 -7
  55. package/shogi.js +138 -141
  56. package/shogi.js.map +1 -1
  57. package/squareSet.d.ts +1 -5
  58. package/squareSet.js +1 -18
  59. package/squareSet.js.map +1 -1
  60. package/src/board.ts +34 -0
  61. package/src/compat.ts +18 -197
  62. package/src/debug.ts +26 -56
  63. package/src/hand.ts +94 -0
  64. package/src/hash.ts +8 -7
  65. package/src/index.ts +16 -12
  66. package/src/{csa.ts → notation/csa/csa.ts} +53 -52
  67. package/src/notation/japanese.ts +74 -0
  68. package/src/{kif.ts → notation/kif/kif.ts} +77 -78
  69. package/src/{kifHandicaps.ts → notation/kif/kifHandicaps.ts} +5 -0
  70. package/src/notation/kitaoKawasaki.ts +24 -0
  71. package/src/{kifUtil.ts → notation/notationUtil.ts} +37 -28
  72. package/src/notation/western.ts +21 -0
  73. package/src/notation/westernEngine.ts +21 -0
  74. package/src/setup.ts +4 -91
  75. package/src/sfen.ts +190 -0
  76. package/src/shogi.ts +75 -75
  77. package/src/squareSet.ts +1 -18
  78. package/src/transform.ts +3 -1
  79. package/src/types.ts +13 -16
  80. package/src/util.ts +8 -73
  81. package/src/variant.ts +44 -3
  82. package/src/variantUtil.ts +160 -0
  83. package/transform.js +18 -24
  84. package/transform.js.map +1 -1
  85. package/types.d.ts +3 -7
  86. package/types.js +18 -24
  87. package/types.js.map +1 -1
  88. package/util.d.ts +4 -7
  89. package/util.js +24 -96
  90. package/util.js.map +1 -1
  91. package/variant.d.ts +12 -1
  92. package/variant.js +42 -16
  93. package/variant.js.map +1 -1
  94. package/variantUtil.d.ts +13 -0
  95. package/variantUtil.js +147 -0
  96. package/variantUtil.js.map +1 -0
  97. package/csa.js +0 -229
  98. package/csa.js.map +0 -1
  99. package/csaUtil.d.ts +0 -3
  100. package/csaUtil.js +0 -21
  101. package/csaUtil.js.map +0 -1
  102. package/fen.d.ts +0 -32
  103. package/fen.js +0 -197
  104. package/fen.js.map +0 -1
  105. package/kif.js +0 -247
  106. package/kif.js.map +0 -1
  107. package/kifHandicaps.js.map +0 -1
  108. package/kifUtil.d.ts +0 -9
  109. package/kifUtil.js.map +0 -1
  110. package/san.d.ts +0 -6
  111. package/san.js +0 -135
  112. package/san.js.map +0 -1
  113. package/src/csaUtil.ts +0 -15
  114. package/src/fen.ts +0 -183
  115. package/src/san.ts +0 -136
@@ -0,0 +1,160 @@
1
+ import { Piece, Square } from '.';
2
+ import { SquareSet } from './squareSet';
3
+ import { Color, Role, Rules } from './types';
4
+
5
+ export function pieceCanPromote(rules: Rules): (piece: Piece, from: Square, to: Square) => boolean {
6
+ switch (rules) {
7
+ default:
8
+ return (piece: Piece, from: Square, to: Square) =>
9
+ promotableRoles(rules).includes(piece.role) &&
10
+ (promotionZone(rules)(piece.color).has(from) || promotionZone(rules)(piece.color).has(to));
11
+ }
12
+ }
13
+ export function pieceInDeadZone(rules: Rules): (piece: Piece, sq: Square) => boolean {
14
+ switch (rules) {
15
+ default:
16
+ return (piece: Piece, sq: Square) => {
17
+ if (piece.role === 'lance' || piece.role === 'pawn')
18
+ return backrank(rules)(piece.color).intersect(SquareSet.fromSquare(sq)).nonEmpty();
19
+ if (piece.role === 'knight')
20
+ return secondBackrank(rules)(piece.color)
21
+ .union(backrank(rules)(piece.color))
22
+ .intersect(SquareSet.fromSquare(sq))
23
+ .nonEmpty();
24
+ return false;
25
+ };
26
+ }
27
+ }
28
+
29
+ export function allRoles(rules: Rules): Role[] {
30
+ switch (rules) {
31
+ case 'minishogi':
32
+ return ['rook', 'bishop', 'gold', 'silver', 'pawn', 'king', 'dragon', 'horse', 'promotedsilver', 'tokin'];
33
+ default:
34
+ return [
35
+ 'rook',
36
+ 'bishop',
37
+ 'gold',
38
+ 'silver',
39
+ 'knight',
40
+ 'lance',
41
+ 'pawn',
42
+ 'dragon',
43
+ 'horse',
44
+ 'tokin',
45
+ 'promotedsilver',
46
+ 'promotedknight',
47
+ 'promotedlance',
48
+ 'king',
49
+ ];
50
+ }
51
+ }
52
+
53
+ export function handRoles(rules: Rules): Role[] {
54
+ switch (rules) {
55
+ case 'minishogi':
56
+ return ['rook', 'bishop', 'gold', 'silver', 'pawn'];
57
+ default:
58
+ return ['rook', 'bishop', 'gold', 'silver', 'knight', 'lance', 'pawn'];
59
+ }
60
+ }
61
+
62
+ export function promotableRoles(rules: Rules): Role[] {
63
+ switch (rules) {
64
+ case 'minishogi':
65
+ return ['pawn', 'silver', 'bishop', 'rook'];
66
+ default:
67
+ return ['pawn', 'lance', 'knight', 'silver', 'bishop', 'rook'];
68
+ }
69
+ }
70
+
71
+ export function promote(rules: Rules): (role: Role) => Role {
72
+ switch (rules) {
73
+ case 'minishogi':
74
+ return standardPromote;
75
+ default:
76
+ return standardPromote;
77
+ }
78
+ }
79
+
80
+ export function unpromote(rules: Rules): (role: Role) => Role {
81
+ switch (rules) {
82
+ case 'minishogi':
83
+ return standardUnpromote;
84
+ default:
85
+ return standardUnpromote;
86
+ }
87
+ }
88
+
89
+ export function promotionZone(rules: Rules): (color: Color) => SquareSet {
90
+ switch (rules) {
91
+ case 'minishogi':
92
+ return (color: Color) => (color === 'sente' ? SquareSet.fromRank(8) : SquareSet.fromRank(4));
93
+ default:
94
+ return (color: Color) => (color === 'sente' ? new SquareSet(0, 0, 0x07ffffff) : new SquareSet(0x07ffffff, 0, 0));
95
+ }
96
+ }
97
+
98
+ export function backrank(rules: Rules): (color: Color) => SquareSet {
99
+ switch (rules) {
100
+ case 'minishogi':
101
+ return promotionZone(rules);
102
+ default:
103
+ return (color: Color) => (color === 'sente' ? SquareSet.fromRank(8) : SquareSet.fromRank(0));
104
+ }
105
+ }
106
+
107
+ export function secondBackrank(rules: Rules): (color: Color) => SquareSet {
108
+ switch (rules) {
109
+ case 'minishogi':
110
+ return (color: Color) => (color === 'sente' ? SquareSet.fromRank(7) : SquareSet.fromRank(5));
111
+ default:
112
+ return (color: Color) => (color === 'sente' ? SquareSet.fromRank(7) : SquareSet.fromRank(1));
113
+ }
114
+ }
115
+
116
+ function standardUnpromote(role: Role): Role {
117
+ switch (role) {
118
+ case 'pawn':
119
+ case 'tokin':
120
+ return 'pawn';
121
+ case 'lance':
122
+ case 'promotedlance':
123
+ return 'lance';
124
+ case 'knight':
125
+ case 'promotedknight':
126
+ return 'knight';
127
+ case 'silver':
128
+ case 'promotedsilver':
129
+ return 'silver';
130
+ case 'gold':
131
+ return 'gold';
132
+ case 'bishop':
133
+ case 'horse':
134
+ return 'bishop';
135
+ case 'rook':
136
+ case 'dragon':
137
+ return 'rook';
138
+ default:
139
+ return role;
140
+ }
141
+ }
142
+
143
+ function standardPromote(role: Role): Role {
144
+ switch (role) {
145
+ case 'pawn':
146
+ return 'tokin';
147
+ case 'lance':
148
+ return 'promotedlance';
149
+ case 'knight':
150
+ return 'promotedknight';
151
+ case 'silver':
152
+ return 'promotedsilver';
153
+ case 'bishop':
154
+ return 'horse';
155
+ case 'rook':
156
+ return 'dragon';
157
+ default:
158
+ return role;
159
+ }
160
+ }
package/transform.js CHANGED
@@ -1,45 +1,39 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.transformSetup = exports.transformBoard = exports.rotate180 = exports.flipHorizontal = exports.flipVertical = void 0;
4
- const types_1 = require("./types");
5
- const squareSet_1 = require("./squareSet");
6
- const board_1 = require("./board");
7
- function flipVertical(s) {
1
+ import { ROLES, COLORS } from './types';
2
+ import { SquareSet } from './squareSet';
3
+ import { Board } from './board';
4
+ export function flipVertical(s) {
8
5
  return s.bswap81();
9
6
  }
10
- exports.flipVertical = flipVertical;
11
- function flipHorizontal(s) {
12
- const rh = new squareSet_1.SquareSet(0x783c1e0, 0x783c1e0, 0x783c1e0); // Right half
13
- const c2 = new squareSet_1.SquareSet(0x633198c, 0x633198c, 0x633198c); // Right rows by two
14
- const c1 = new squareSet_1.SquareSet(0x52a954a, 0x52a954a, 0x52a954a); // Right rows by 1
15
- const middle = s.intersect(squareSet_1.SquareSet.fromFile(4));
7
+ export function flipHorizontal(s) {
8
+ const rh = new SquareSet(0x783c1e0, 0x783c1e0, 0x783c1e0); // Right half
9
+ const c2 = new SquareSet(0x633198c, 0x633198c, 0x633198c); // Right rows by two
10
+ const c1 = new SquareSet(0x52a954a, 0x52a954a, 0x52a954a); // Right rows by 1
11
+ const middle = s.intersect(SquareSet.fromFile(4));
16
12
  s = s.shl81(1).intersect(c1).union(s.intersect(c1).shr81(1));
17
13
  s = s.shl81(2).intersect(c2).union(s.intersect(c2).shr81(2));
18
14
  s = s.shl81(5).intersect(rh).union(s.intersect(rh).shr81(5));
19
15
  return s.union(middle);
20
16
  }
21
- exports.flipHorizontal = flipHorizontal;
22
- function rotate180(s) {
17
+ export function rotate180(s) {
23
18
  return s.rbit81();
24
19
  }
25
- exports.rotate180 = rotate180;
26
- function transformBoard(board, f) {
27
- const b = board_1.Board.empty();
20
+ export function transformBoard(board, f) {
21
+ const b = Board.empty();
22
+ b.numberOfFiles = board.numberOfFiles;
23
+ b.numberOfRanks = board.numberOfRanks;
28
24
  b.occupied = f(board.occupied);
29
- for (const color of types_1.COLORS)
25
+ for (const color of COLORS)
30
26
  b[color] = f(board[color]);
31
- for (const role of types_1.ROLES)
27
+ for (const role of ROLES)
32
28
  b[role] = f(board[role]);
33
29
  return b;
34
30
  }
35
- exports.transformBoard = transformBoard;
36
- function transformSetup(setup, f) {
31
+ export function transformSetup(setup, f) {
37
32
  return {
38
33
  board: transformBoard(setup.board, f),
39
- pockets: setup.pockets.clone(),
34
+ hands: setup.hands.clone(),
40
35
  turn: setup.turn,
41
36
  fullmoves: setup.fullmoves,
42
37
  };
43
38
  }
44
- exports.transformSetup = transformSetup;
45
39
  //# sourceMappingURL=transform.js.map
package/transform.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"transform.js","sourceRoot":"","sources":["src/transform.ts"],"names":[],"mappings":";;;AAAA,mCAAwC;AACxC,2CAAwC;AACxC,mCAAgC;AAGhC,SAAgB,YAAY,CAAC,CAAY;IACvC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;AACrB,CAAC;AAFD,oCAEC;AAED,SAAgB,cAAc,CAAC,CAAY;IACzC,MAAM,EAAE,GAAG,IAAI,qBAAS,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,aAAa;IACxE,MAAM,EAAE,GAAG,IAAI,qBAAS,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,oBAAoB;IAC/E,MAAM,EAAE,GAAG,IAAI,qBAAS,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,kBAAkB;IAC7E,MAAM,MAAM,GAAG,CAAC,CAAC,SAAS,CAAC,qBAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACzB,CAAC;AATD,wCASC;AAED,SAAgB,SAAS,CAAC,CAAY;IACpC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC;AACpB,CAAC;AAFD,8BAEC;AAED,SAAgB,cAAc,CAAC,KAAY,EAAE,CAA8B;IACzE,MAAM,CAAC,GAAG,aAAK,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC/B,KAAK,MAAM,KAAK,IAAI,cAAM;QAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IACvD,KAAK,MAAM,IAAI,IAAI,aAAK;QAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IACnD,OAAO,CAAC,CAAC;AACX,CAAC;AAND,wCAMC;AAED,SAAgB,cAAc,CAAC,KAAY,EAAE,CAA8B;IACzE,OAAO;QACL,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;QACrC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE;QAC9B,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,SAAS,EAAE,KAAK,CAAC,SAAS;KAC3B,CAAC;AACJ,CAAC;AAPD,wCAOC"}
1
+ {"version":3,"file":"transform.js","sourceRoot":"","sources":["src/transform.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAGhC,MAAM,UAAU,YAAY,CAAC,CAAY;IACvC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,CAAY;IACzC,MAAM,EAAE,GAAG,IAAI,SAAS,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,aAAa;IACxE,MAAM,EAAE,GAAG,IAAI,SAAS,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,oBAAoB;IAC/E,MAAM,EAAE,GAAG,IAAI,SAAS,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,kBAAkB;IAC7E,MAAM,MAAM,GAAG,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,CAAY;IACpC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAY,EAAE,CAA8B;IACzE,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;IACtC,CAAC,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;IACtC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC/B,KAAK,MAAM,KAAK,IAAI,MAAM;QAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IACvD,KAAK,MAAM,IAAI,IAAI,KAAK;QAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IACnD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAY,EAAE,CAA8B;IACzE,OAAO;QACL,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;QACrC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE;QAC1B,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,SAAS,EAAE,KAAK,CAAC,SAAS;KAC3B,CAAC;AACJ,CAAC"}
package/types.d.ts CHANGED
@@ -10,12 +10,8 @@ export declare type Color = typeof COLORS[number];
10
10
  export declare type ByColor<T> = {
11
11
  [color in Color]: T;
12
12
  };
13
- export declare const ROLES: readonly ["pawn", "lance", "knight", "silver", "gold", "bishop", "rook", "tokin", "promotedlance", "promotedknight", "promotedsilver", "horse", "dragon", "king"];
14
- export declare const POCKET_ROLES: readonly ["rook", "bishop", "gold", "silver", "knight", "lance", "pawn"];
15
- export declare const PROMOTABLE_ROLES: readonly ["pawn", "lance", "knight", "silver", "bishop", "rook"];
13
+ export declare const ROLES: readonly ["rook", "bishop", "gold", "silver", "knight", "lance", "pawn", "dragon", "horse", "tokin", "promotedsilver", "promotedknight", "promotedlance", "king"];
16
14
  export declare type Role = typeof ROLES[number];
17
- export declare type PocketRole = typeof POCKET_ROLES[number];
18
- export declare type PromotableRole = typeof PROMOTABLE_ROLES[number];
19
15
  export declare type ByRole<T> = {
20
16
  [role in Role]: T;
21
17
  };
@@ -29,13 +25,13 @@ export interface NormalMove {
29
25
  promotion?: boolean;
30
26
  }
31
27
  export interface DropMove {
32
- role: PocketRole;
28
+ role: Role;
33
29
  to: Square;
34
30
  }
35
31
  export declare type Move = NormalMove | DropMove;
36
32
  export declare function isDrop(v: Move): v is DropMove;
37
33
  export declare function isNormal(v: Move): v is NormalMove;
38
- export declare const RULES: readonly ["shogi"];
34
+ export declare const RULES: readonly ["shogi", "minishogi"];
39
35
  export declare type Rules = typeof RULES[number];
40
36
  export interface Outcome {
41
37
  winner: Color | undefined;
package/types.js CHANGED
@@ -1,35 +1,29 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- 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.FILE_NAMES = ['9', '8', '7', '6', '5', '4', '3', '2', '1'];
5
- exports.RANK_NAMES = ['i', 'h', 'g', 'f', 'e', 'd', 'c', 'b', 'a'];
6
- exports.COLORS = ['sente', 'gote'];
7
- exports.ROLES = [
8
- 'pawn',
9
- 'lance',
10
- 'knight',
11
- 'silver',
12
- 'gold',
13
- 'bishop',
1
+ export const FILE_NAMES = ['9', '8', '7', '6', '5', '4', '3', '2', '1'];
2
+ export const RANK_NAMES = ['i', 'h', 'g', 'f', 'e', 'd', 'c', 'b', 'a'];
3
+ export const COLORS = ['sente', 'gote'];
4
+ // correct order for sfen hand exporting
5
+ export const ROLES = [
14
6
  'rook',
7
+ 'bishop',
8
+ 'gold',
9
+ 'silver',
10
+ 'knight',
11
+ 'lance',
12
+ 'pawn',
13
+ 'dragon',
14
+ 'horse',
15
15
  'tokin',
16
- 'promotedlance',
17
- 'promotedknight',
18
16
  'promotedsilver',
19
- 'horse',
20
- 'dragon',
17
+ 'promotedknight',
18
+ 'promotedlance',
21
19
  'king',
22
20
  ];
23
- exports.POCKET_ROLES = ['rook', 'bishop', 'gold', 'silver', 'knight', 'lance', 'pawn'];
24
- exports.PROMOTABLE_ROLES = ['pawn', 'lance', 'knight', 'silver', 'bishop', 'rook'];
25
- function isDrop(v) {
21
+ export function isDrop(v) {
26
22
  return 'role' in v;
27
23
  }
28
- exports.isDrop = isDrop;
29
- function isNormal(v) {
24
+ export function isNormal(v) {
30
25
  return 'from' in v;
31
26
  }
32
- exports.isNormal = isNormal;
33
27
  // variant will be added later, once lishogi supports them
34
- exports.RULES = ['shogi'];
28
+ export const RULES = ['shogi', 'minishogi'];
35
29
  //# sourceMappingURL=types.js.map
package/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["src/types.ts"],"names":[],"mappings":";;;AAAa,QAAA,UAAU,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAU,CAAC;AAGpE,QAAA,UAAU,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAU,CAAC;AASpE,QAAA,MAAM,GAAG,CAAC,OAAO,EAAE,MAAM,CAAU,CAAC;AAQpC,QAAA,KAAK,GAAG;IACnB,MAAM;IACN,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,QAAQ;IACR,MAAM;IACN,OAAO;IACP,eAAe;IACf,gBAAgB;IAChB,gBAAgB;IAChB,OAAO;IACP,QAAQ;IACR,MAAM;CACE,CAAC;AACE,QAAA,YAAY,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAU,CAAC;AACxF,QAAA,gBAAgB,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAU,CAAC;AA2BjG,SAAgB,MAAM,CAAC,CAAO;IAC5B,OAAO,MAAM,IAAI,CAAC,CAAC;AACrB,CAAC;AAFD,wBAEC;AAED,SAAgB,QAAQ,CAAC,CAAO;IAC9B,OAAO,MAAM,IAAI,CAAC,CAAC;AACrB,CAAC;AAFD,4BAEC;AAED,0DAA0D;AAC7C,QAAA,KAAK,GAAG,CAAC,OAAO,CAAU,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["src/types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAU,CAAC;AAGjF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAU,CAAC;AASjF,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,OAAO,EAAE,MAAM,CAAU,CAAC;AAQjD,wCAAwC;AACxC,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,MAAM;IACN,QAAQ;IACR,MAAM;IACN,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,MAAM;IACN,QAAQ;IACR,OAAO;IACP,OAAO;IACP,gBAAgB;IAChB,gBAAgB;IAChB,eAAe;IACf,MAAM;CACE,CAAC;AAyBX,MAAM,UAAU,MAAM,CAAC,CAAO;IAC5B,OAAO,MAAM,IAAI,CAAC,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,CAAO;IAC9B,OAAO,MAAM,IAAI,CAAC,CAAC;AACrB,CAAC;AAED,0DAA0D;AAC1D,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,WAAW,CAAU,CAAC"}
package/util.d.ts CHANGED
@@ -1,24 +1,21 @@
1
- import { Color, Square, Role, PocketRole, Move, SquareName, Piece } from './types';
1
+ import { Color, Square, Role, Move, SquareName } from './types';
2
2
  export declare function defined<A>(v: A | undefined): v is A;
3
3
  export declare function opposite(color: Color): Color;
4
4
  export declare function squareRank(square: Square): number;
5
5
  export declare function squareFile(square: Square): number;
6
- export declare function unpromote(role: Role): PocketRole | 'king';
7
- export declare function promote(role: Role): Role;
8
- export declare function roleToChar(role: Role): string;
6
+ export declare function roleToString(role: Role): string;
9
7
  export declare function roleToCsa(role: Role): string;
10
8
  export declare function csaToRole(str: string): Role | undefined;
11
9
  export declare function roleTo1Kanji(role: Role): string;
12
10
  export declare function roleTo2Kanji(role: Role): string;
13
11
  export declare function kanjiToRole(str: string): Role | undefined;
14
- export declare function charToRole(ch: 'p' | 'l' | 'n' | 's' | 'g' | 'b' | 'r' | '+p' | '+l' | '+n' | '+s' | '+b' | '+r' | 'P' | 'L' | 'N' | 'S' | 'G' | 'B' | 'R' | '+P' | '+L' | '+N' | '+S' | '+B' | '+R'): Role;
15
- export declare function charToRole(ch: string): Role | undefined;
12
+ export declare function stringToRole(ch: 'p' | 'l' | 'n' | 's' | 'g' | 'b' | 'r' | '+p' | '+l' | '+n' | '+s' | '+b' | '+r' | 'P' | 'L' | 'N' | 'S' | 'G' | 'B' | 'R' | '+P' | '+L' | '+N' | '+S' | '+B' | '+R'): Role;
13
+ export declare function stringToRole(ch: string): Role | undefined;
16
14
  export declare function parseSquare(str: SquareName): Square;
17
15
  export declare function parseSquare(str: string): Square | undefined;
18
16
  export declare function makeSquare(square: Square): SquareName;
19
17
  export declare function parseUsi(str: string): Move | undefined;
20
18
  export declare function makeUsi(move: Move): string;
21
- export declare function canPiecePromote(piece: Piece, from: Square, to: Square): boolean;
22
19
  export declare function toBW(color: string): 'b' | 'w';
23
20
  export declare function toBlackWhite(color: string): 'black' | 'white';
24
21
  export declare function toColor(color: string): Color;
package/util.js CHANGED
@@ -1,71 +1,18 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.toColor = exports.toBlackWhite = exports.toBW = exports.canPiecePromote = exports.makeUsi = exports.parseUsi = exports.makeSquare = exports.parseSquare = exports.charToRole = exports.kanjiToRole = exports.roleTo2Kanji = exports.roleTo1Kanji = exports.csaToRole = exports.roleToCsa = exports.roleToChar = exports.promote = exports.unpromote = exports.squareFile = exports.squareRank = exports.opposite = exports.defined = void 0;
4
- const squareSet_1 = require("./squareSet");
5
- const types_1 = require("./types");
6
- function defined(v) {
1
+ import { FILE_NAMES, RANK_NAMES, isDrop } from './types';
2
+ export function defined(v) {
7
3
  return v !== undefined;
8
4
  }
9
- exports.defined = defined;
10
- function opposite(color) {
5
+ export function opposite(color) {
11
6
  return color === 'gote' ? 'sente' : 'gote';
12
7
  }
13
- exports.opposite = opposite;
14
- function squareRank(square) {
8
+ // coordinate system starts at bottom left
9
+ export function squareRank(square) {
15
10
  return Math.floor(square / 9);
16
11
  }
17
- exports.squareRank = squareRank;
18
- function squareFile(square) {
12
+ export function squareFile(square) {
19
13
  return square % 9;
20
14
  }
21
- exports.squareFile = squareFile;
22
- function unpromote(role) {
23
- switch (role) {
24
- case 'pawn':
25
- case 'tokin':
26
- return 'pawn';
27
- case 'lance':
28
- case 'promotedlance':
29
- return 'lance';
30
- case 'knight':
31
- case 'promotedknight':
32
- return 'knight';
33
- case 'silver':
34
- case 'promotedsilver':
35
- return 'silver';
36
- case 'gold':
37
- return 'gold';
38
- case 'bishop':
39
- case 'horse':
40
- return 'bishop';
41
- case 'rook':
42
- case 'dragon':
43
- return 'rook';
44
- default:
45
- return role;
46
- }
47
- }
48
- exports.unpromote = unpromote;
49
- function promote(role) {
50
- switch (role) {
51
- case 'pawn':
52
- return 'tokin';
53
- case 'lance':
54
- return 'promotedlance';
55
- case 'knight':
56
- return 'promotedknight';
57
- case 'silver':
58
- return 'promotedsilver';
59
- case 'bishop':
60
- return 'horse';
61
- case 'rook':
62
- return 'dragon';
63
- default:
64
- return role;
65
- }
66
- }
67
- exports.promote = promote;
68
- function roleToChar(role) {
15
+ export function roleToString(role) {
69
16
  switch (role) {
70
17
  case 'pawn':
71
18
  return 'p';
@@ -97,8 +44,7 @@ function roleToChar(role) {
97
44
  return 'k';
98
45
  }
99
46
  }
100
- exports.roleToChar = roleToChar;
101
- function roleToCsa(role) {
47
+ export function roleToCsa(role) {
102
48
  switch (role) {
103
49
  case 'pawn':
104
50
  return 'FU';
@@ -130,8 +76,7 @@ function roleToCsa(role) {
130
76
  return 'OU';
131
77
  }
132
78
  }
133
- exports.roleToCsa = roleToCsa;
134
- function csaToRole(str) {
79
+ export function csaToRole(str) {
135
80
  switch (str) {
136
81
  case 'FU':
137
82
  return 'pawn';
@@ -165,8 +110,7 @@ function csaToRole(str) {
165
110
  return undefined;
166
111
  }
167
112
  }
168
- exports.csaToRole = csaToRole;
169
- function roleTo1Kanji(role) {
113
+ export function roleTo1Kanji(role) {
170
114
  switch (role) {
171
115
  case 'pawn':
172
116
  return '歩';
@@ -198,8 +142,7 @@ function roleTo1Kanji(role) {
198
142
  return '玉';
199
143
  }
200
144
  }
201
- exports.roleTo1Kanji = roleTo1Kanji;
202
- function roleTo2Kanji(role) {
145
+ export function roleTo2Kanji(role) {
203
146
  switch (role) {
204
147
  case 'promotedlance':
205
148
  return '成香';
@@ -211,8 +154,7 @@ function roleTo2Kanji(role) {
211
154
  return roleTo1Kanji(role);
212
155
  }
213
156
  }
214
- exports.roleTo2Kanji = roleTo2Kanji;
215
- function kanjiToRole(str) {
157
+ export function kanjiToRole(str) {
216
158
  switch (str) {
217
159
  case '歩':
218
160
  return 'pawn';
@@ -250,8 +192,7 @@ function kanjiToRole(str) {
250
192
  return undefined;
251
193
  }
252
194
  }
253
- exports.kanjiToRole = kanjiToRole;
254
- function charToRole(ch) {
195
+ export function stringToRole(ch) {
255
196
  switch (ch) {
256
197
  case 'P':
257
198
  case 'p':
@@ -299,8 +240,7 @@ function charToRole(ch) {
299
240
  return;
300
241
  }
301
242
  }
302
- exports.charToRole = charToRole;
303
- function parseSquare(str) {
243
+ export function parseSquare(str) {
304
244
  if (str.length !== 2)
305
245
  return;
306
246
  const file = Math.abs(str.charCodeAt(0) - '9'.charCodeAt(0));
@@ -309,14 +249,12 @@ function parseSquare(str) {
309
249
  return;
310
250
  return file + 9 * rank;
311
251
  }
312
- exports.parseSquare = parseSquare;
313
- function makeSquare(square) {
314
- return (types_1.FILE_NAMES[squareFile(square)] + types_1.RANK_NAMES[squareRank(square)]);
252
+ export function makeSquare(square) {
253
+ return (FILE_NAMES[squareFile(square)] + RANK_NAMES[squareRank(square)]);
315
254
  }
316
- exports.makeSquare = makeSquare;
317
- function parseUsi(str) {
255
+ export function parseUsi(str) {
318
256
  if (str[1] === '*' && str.length === 4) {
319
- const role = charToRole(str[0]);
257
+ const role = stringToRole(str[0]);
320
258
  const to = parseSquare(str.slice(2));
321
259
  if (defined(role) && defined(to))
322
260
  return { role, to };
@@ -330,35 +268,25 @@ function parseUsi(str) {
330
268
  }
331
269
  return;
332
270
  }
333
- exports.parseUsi = parseUsi;
334
- function makeUsi(move) {
335
- if (types_1.isDrop(move))
336
- return `${roleToChar(move.role).toUpperCase()}*${makeSquare(move.to)}`;
271
+ export function makeUsi(move) {
272
+ if (isDrop(move))
273
+ return `${roleToString(move.role).toUpperCase()}*${makeSquare(move.to)}`;
337
274
  return makeSquare(move.from) + makeSquare(move.to) + (move.promotion ? '+' : '');
338
275
  }
339
- exports.makeUsi = makeUsi;
340
- function canPiecePromote(piece, from, to) {
341
- return (types_1.PROMOTABLE_ROLES.includes(piece.role) &&
342
- (squareSet_1.SquareSet.promotionZone(piece.color).has(from) || squareSet_1.SquareSet.promotionZone(piece.color).has(to)));
343
- }
344
- exports.canPiecePromote = canPiecePromote;
345
- function toBW(color) {
276
+ export function toBW(color) {
346
277
  // white, w, gote, g
347
278
  if (color[0] === 'w' || color[0] === 'g')
348
279
  return 'w';
349
280
  return 'b';
350
281
  }
351
- exports.toBW = toBW;
352
- function toBlackWhite(color) {
282
+ export function toBlackWhite(color) {
353
283
  if (color[0] === 'w' || color[0] === 'g')
354
284
  return 'white';
355
285
  return 'black';
356
286
  }
357
- exports.toBlackWhite = toBlackWhite;
358
- function toColor(color) {
287
+ export function toColor(color) {
359
288
  if (color[0] === 'w' || color[0] === 'g')
360
289
  return 'gote';
361
290
  return 'sente';
362
291
  }
363
- exports.toColor = toColor;
364
292
  //# sourceMappingURL=util.js.map
package/util.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["src/util.ts"],"names":[],"mappings":";;;AAAA,2CAAwC;AACxC,mCAYiB;AAEjB,SAAgB,OAAO,CAAI,CAAgB;IACzC,OAAO,CAAC,KAAK,SAAS,CAAC;AACzB,CAAC;AAFD,0BAEC;AAED,SAAgB,QAAQ,CAAC,KAAY;IACnC,OAAO,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;AAC7C,CAAC;AAFD,4BAEC;AAED,SAAgB,UAAU,CAAC,MAAc;IACvC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAChC,CAAC;AAFD,gCAEC;AAED,SAAgB,UAAU,CAAC,MAAc;IACvC,OAAO,MAAM,GAAG,CAAC,CAAC;AACpB,CAAC;AAFD,gCAEC;AAED,SAAgB,SAAS,CAAC,IAAU;IAClC,QAAQ,IAAI,EAAE;QACZ,KAAK,MAAM,CAAC;QACZ,KAAK,OAAO;YACV,OAAO,MAAM,CAAC;QAChB,KAAK,OAAO,CAAC;QACb,KAAK,eAAe;YAClB,OAAO,OAAO,CAAC;QACjB,KAAK,QAAQ,CAAC;QACd,KAAK,gBAAgB;YACnB,OAAO,QAAQ,CAAC;QAClB,KAAK,QAAQ,CAAC;QACd,KAAK,gBAAgB;YACnB,OAAO,QAAQ,CAAC;QAClB,KAAK,MAAM;YACT,OAAO,MAAM,CAAC;QAChB,KAAK,QAAQ,CAAC;QACd,KAAK,OAAO;YACV,OAAO,QAAQ,CAAC;QAClB,KAAK,MAAM,CAAC;QACZ,KAAK,QAAQ;YACX,OAAO,MAAM,CAAC;QAChB;YACE,OAAO,IAAI,CAAC;KACf;AACH,CAAC;AAzBD,8BAyBC;AAED,SAAgB,OAAO,CAAC,IAAU;IAChC,QAAQ,IAAI,EAAE;QACZ,KAAK,MAAM;YACT,OAAO,OAAO,CAAC;QACjB,KAAK,OAAO;YACV,OAAO,eAAe,CAAC;QACzB,KAAK,QAAQ;YACX,OAAO,gBAAgB,CAAC;QAC1B,KAAK,QAAQ;YACX,OAAO,gBAAgB,CAAC;QAC1B,KAAK,QAAQ;YACX,OAAO,OAAO,CAAC;QACjB,KAAK,MAAM;YACT,OAAO,QAAQ,CAAC;QAClB;YACE,OAAO,IAAI,CAAC;KACf;AACH,CAAC;AAjBD,0BAiBC;AAED,SAAgB,UAAU,CAAC,IAAU;IACnC,QAAQ,IAAI,EAAE;QACZ,KAAK,MAAM;YACT,OAAO,GAAG,CAAC;QACb,KAAK,OAAO;YACV,OAAO,GAAG,CAAC;QACb,KAAK,QAAQ;YACX,OAAO,GAAG,CAAC;QACb,KAAK,QAAQ;YACX,OAAO,GAAG,CAAC;QACb,KAAK,MAAM;YACT,OAAO,GAAG,CAAC;QACb,KAAK,QAAQ;YACX,OAAO,GAAG,CAAC;QACb,KAAK,MAAM;YACT,OAAO,GAAG,CAAC;QACb,KAAK,OAAO;YACV,OAAO,IAAI,CAAC;QACd,KAAK,eAAe;YAClB,OAAO,IAAI,CAAC;QACd,KAAK,gBAAgB;YACnB,OAAO,IAAI,CAAC;QACd,KAAK,gBAAgB;YACnB,OAAO,IAAI,CAAC;QACd,KAAK,OAAO;YACV,OAAO,IAAI,CAAC;QACd,KAAK,QAAQ;YACX,OAAO,IAAI,CAAC;QACd,KAAK,MAAM;YACT,OAAO,GAAG,CAAC;KACd;AACH,CAAC;AA/BD,gCA+BC;AAED,SAAgB,SAAS,CAAC,IAAU;IAClC,QAAQ,IAAI,EAAE;QACZ,KAAK,MAAM;YACT,OAAO,IAAI,CAAC;QACd,KAAK,OAAO;YACV,OAAO,IAAI,CAAC;QACd,KAAK,QAAQ;YACX,OAAO,IAAI,CAAC;QACd,KAAK,QAAQ;YACX,OAAO,IAAI,CAAC;QACd,KAAK,MAAM;YACT,OAAO,IAAI,CAAC;QACd,KAAK,QAAQ;YACX,OAAO,IAAI,CAAC;QACd,KAAK,MAAM;YACT,OAAO,IAAI,CAAC;QACd,KAAK,OAAO;YACV,OAAO,IAAI,CAAC;QACd,KAAK,eAAe;YAClB,OAAO,IAAI,CAAC;QACd,KAAK,gBAAgB;YACnB,OAAO,IAAI,CAAC;QACd,KAAK,gBAAgB;YACnB,OAAO,IAAI,CAAC;QACd,KAAK,OAAO;YACV,OAAO,IAAI,CAAC;QACd,KAAK,QAAQ;YACX,OAAO,IAAI,CAAC;QACd,KAAK,MAAM;YACT,OAAO,IAAI,CAAC;KACf;AACH,CAAC;AA/BD,8BA+BC;AAED,SAAgB,SAAS,CAAC,GAAW;IACnC,QAAQ,GAAG,EAAE;QACX,KAAK,IAAI;YACP,OAAO,MAAM,CAAC;QAChB,KAAK,IAAI;YACP,OAAO,OAAO,CAAC;QACjB,KAAK,IAAI;YACP,OAAO,QAAQ,CAAC;QAClB,KAAK,IAAI;YACP,OAAO,QAAQ,CAAC;QAClB,KAAK,IAAI;YACP,OAAO,MAAM,CAAC;QAChB,KAAK,IAAI;YACP,OAAO,QAAQ,CAAC;QAClB,KAAK,IAAI;YACP,OAAO,MAAM,CAAC;QAChB,KAAK,IAAI;YACP,OAAO,OAAO,CAAC;QACjB,KAAK,IAAI;YACP,OAAO,eAAe,CAAC;QACzB,KAAK,IAAI;YACP,OAAO,gBAAgB,CAAC;QAC1B,KAAK,IAAI;YACP,OAAO,gBAAgB,CAAC;QAC1B,KAAK,IAAI;YACP,OAAO,OAAO,CAAC;QACjB,KAAK,IAAI;YACP,OAAO,QAAQ,CAAC;QAClB,KAAK,IAAI;YACP,OAAO,MAAM,CAAC;QAChB;YACE,OAAO,SAAS,CAAC;KACpB;AACH,CAAC;AAjCD,8BAiCC;AAED,SAAgB,YAAY,CAAC,IAAU;IACrC,QAAQ,IAAI,EAAE;QACZ,KAAK,MAAM;YACT,OAAO,GAAG,CAAC;QACb,KAAK,OAAO;YACV,OAAO,GAAG,CAAC;QACb,KAAK,QAAQ;YACX,OAAO,GAAG,CAAC;QACb,KAAK,QAAQ;YACX,OAAO,GAAG,CAAC;QACb,KAAK,MAAM;YACT,OAAO,GAAG,CAAC;QACb,KAAK,QAAQ;YACX,OAAO,GAAG,CAAC;QACb,KAAK,MAAM;YACT,OAAO,GAAG,CAAC;QACb,KAAK,OAAO;YACV,OAAO,GAAG,CAAC;QACb,KAAK,eAAe;YAClB,OAAO,GAAG,CAAC;QACb,KAAK,gBAAgB;YACnB,OAAO,GAAG,CAAC;QACb,KAAK,gBAAgB;YACnB,OAAO,GAAG,CAAC;QACb,KAAK,OAAO;YACV,OAAO,GAAG,CAAC;QACb,KAAK,QAAQ;YACX,OAAO,GAAG,CAAC;QACb,KAAK,MAAM;YACT,OAAO,GAAG,CAAC;KACd;AACH,CAAC;AA/BD,oCA+BC;AAED,SAAgB,YAAY,CAAC,IAAU;IACrC,QAAQ,IAAI,EAAE;QACZ,KAAK,eAAe;YAClB,OAAO,IAAI,CAAC;QACd,KAAK,gBAAgB;YACnB,OAAO,IAAI,CAAC;QACd,KAAK,gBAAgB;YACnB,OAAO,IAAI,CAAC;QACd;YACE,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;KAC7B;AACH,CAAC;AAXD,oCAWC;AAED,SAAgB,WAAW,CAAC,GAAW;IACrC,QAAQ,GAAG,EAAE;QACX,KAAK,GAAG;YACN,OAAO,MAAM,CAAC;QAChB,KAAK,GAAG;YACN,OAAO,OAAO,CAAC;QACjB,KAAK,GAAG;YACN,OAAO,QAAQ,CAAC;QAClB,KAAK,GAAG;YACN,OAAO,QAAQ,CAAC;QAClB,KAAK,GAAG;YACN,OAAO,MAAM,CAAC;QAChB,KAAK,GAAG;YACN,OAAO,QAAQ,CAAC;QAClB,KAAK,GAAG;YACN,OAAO,MAAM,CAAC;QAChB,KAAK,GAAG;YACN,OAAO,OAAO,CAAC;QACjB,KAAK,GAAG,CAAC;QACT,KAAK,IAAI;YACP,OAAO,eAAe,CAAC;QACzB,KAAK,GAAG,CAAC;QACT,KAAK,IAAI;YACP,OAAO,gBAAgB,CAAC;QAC1B,KAAK,GAAG,CAAC;QACT,KAAK,IAAI;YACP,OAAO,gBAAgB,CAAC;QAC1B,KAAK,GAAG;YACN,OAAO,OAAO,CAAC;QACjB,KAAK,GAAG;YACN,OAAO,QAAQ,CAAC;QAClB,KAAK,GAAG,CAAC;QACT,KAAK,GAAG;YACN,OAAO,MAAM,CAAC;QAChB;YACE,OAAO,SAAS,CAAC;KACpB;AACH,CAAC;AArCD,kCAqCC;AAgCD,SAAgB,UAAU,CAAC,EAAU;IACnC,QAAQ,EAAE,EAAE;QACV,KAAK,GAAG,CAAC;QACT,KAAK,GAAG;YACN,OAAO,MAAM,CAAC;QAChB,KAAK,GAAG,CAAC;QACT,KAAK,GAAG;YACN,OAAO,OAAO,CAAC;QACjB,KAAK,GAAG,CAAC;QACT,KAAK,GAAG;YACN,OAAO,QAAQ,CAAC;QAClB,KAAK,GAAG,CAAC;QACT,KAAK,GAAG;YACN,OAAO,QAAQ,CAAC;QAClB,KAAK,GAAG,CAAC;QACT,KAAK,GAAG;YACN,OAAO,MAAM,CAAC;QAChB,KAAK,GAAG,CAAC;QACT,KAAK,GAAG;YACN,OAAO,QAAQ,CAAC;QAClB,KAAK,GAAG,CAAC;QACT,KAAK,GAAG;YACN,OAAO,MAAM,CAAC;QAChB,KAAK,IAAI,CAAC;QACV,KAAK,IAAI;YACP,OAAO,OAAO,CAAC;QACjB,KAAK,IAAI,CAAC;QACV,KAAK,IAAI;YACP,OAAO,eAAe,CAAC;QACzB,KAAK,IAAI,CAAC;QACV,KAAK,IAAI;YACP,OAAO,gBAAgB,CAAC;QAC1B,KAAK,IAAI,CAAC;QACV,KAAK,IAAI;YACP,OAAO,gBAAgB,CAAC;QAC1B,KAAK,IAAI,CAAC;QACV,KAAK,IAAI;YACP,OAAO,OAAO,CAAC;QACjB,KAAK,IAAI,CAAC;QACV,KAAK,IAAI;YACP,OAAO,QAAQ,CAAC;QAClB,KAAK,GAAG,CAAC;QACT,KAAK,GAAG;YACN,OAAO,MAAM,CAAC;QAChB;YACE,OAAO;KACV;AACH,CAAC;AA/CD,gCA+CC;AAID,SAAgB,WAAW,CAAC,GAAW;IACrC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC;QAAE,OAAO;IAC3D,OAAO,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;AACzB,CAAC;AAND,kCAMC;AAED,SAAgB,UAAU,CAAC,MAAc;IACvC,OAAO,CAAC,kBAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,kBAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAe,CAAC;AACzF,CAAC;AAFD,gCAEC;AAED,SAAgB,QAAQ,CAAC,GAAW;IAClC,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;QACtC,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAe,CAAC;QAC9C,MAAM,EAAE,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,EAAE,CAAC;YAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;KACvD;SAAM,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;QAC/C,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,EAAE,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACxC,MAAM,SAAS,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;QAChD,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,EAAE,CAAC;YAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC;KAClE;IACD,OAAO;AACT,CAAC;AAZD,4BAYC;AAED,SAAgB,OAAO,CAAC,IAAU;IAChC,IAAI,cAAM,CAAC,IAAI,CAAC;QAAE,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;IACzF,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACnF,CAAC;AAHD,0BAGC;AAED,SAAgB,eAAe,CAAC,KAAY,EAAE,IAAY,EAAE,EAAU;IACpE,OAAO,CACJ,wBAA0C,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;QAChE,CAAC,qBAAS,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,qBAAS,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CACjG,CAAC;AACJ,CAAC;AALD,0CAKC;AAED,SAAgB,IAAI,CAAC,KAAa;IAChC,oBAAoB;IACpB,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG;QAAE,OAAO,GAAG,CAAC;IACrD,OAAO,GAAG,CAAC;AACb,CAAC;AAJD,oBAIC;AAED,SAAgB,YAAY,CAAC,KAAa;IACxC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG;QAAE,OAAO,OAAO,CAAC;IACzD,OAAO,OAAO,CAAC;AACjB,CAAC;AAHD,oCAGC;AAED,SAAgB,OAAO,CAAC,KAAa;IACnC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG;QAAE,OAAO,MAAM,CAAC;IACxD,OAAO,OAAO,CAAC;AACjB,CAAC;AAHD,0BAGC"}
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["src/util.ts"],"names":[],"mappings":"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"}
package/variant.d.ts CHANGED
@@ -1,7 +1,18 @@
1
1
  import { Result } from '@badrap/result';
2
- import { Rules } from './types';
2
+ import { Role, Rules, Square } from './types';
3
3
  import { Setup } from './setup';
4
4
  import { PositionError, Position, IllegalSetup, Context, Shogi } from './shogi';
5
+ import { SquareSet } from './squareSet';
5
6
  export { Position, PositionError, IllegalSetup, Context, Shogi };
6
7
  export declare function defaultPosition(rules: Rules): Position;
7
8
  export declare function setupPosition(rules: Rules, setup: Setup, strict?: boolean): Result<Position, PositionError>;
9
+ export declare class Minishogi extends Shogi {
10
+ protected constructor();
11
+ numberOfRanks: number;
12
+ numberOfFiles: number;
13
+ static default(): Minishogi;
14
+ static fromSetup(setup: Setup, strict: boolean): Result<Minishogi, PositionError>;
15
+ clone(): Minishogi;
16
+ dests(square: Square, ctx?: Context): SquareSet;
17
+ dropDests(role: Role, ctx?: Context): SquareSet;
18
+ }