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
package/compat.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"compat.js","sourceRoot":"","sources":["src/compat.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compat.js","sourceRoot":"","sources":["src/compat.ts"],"names":[],"mappings":"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"}
package/debug.js CHANGED
@@ -1,11 +1,7 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.perft = exports.dests = exports.square = exports.board = exports.piece = exports.squareSet = void 0;
4
- const types_1 = require("./types");
5
- const util_1 = require("./util");
6
- const fen_1 = require("./fen");
7
- const squareSet_1 = require("./squareSet");
8
- function squareSet(squares) {
1
+ import { makeSquare, makeUsi } from './util';
2
+ import { makePiece } from './sfen';
3
+ import { pieceCanPromote, pieceInDeadZone } from './variantUtil';
4
+ export function squareSet(squares) {
9
5
  const r = [];
10
6
  for (let y = 8; y >= 0; y--) {
11
7
  for (let x = 0; x < 9; x++) {
@@ -16,12 +12,10 @@ function squareSet(squares) {
16
12
  }
17
13
  return r.join('');
18
14
  }
19
- exports.squareSet = squareSet;
20
- function piece(piece) {
21
- return fen_1.makePiece(piece);
15
+ export function piece(piece) {
16
+ return makePiece(piece);
22
17
  }
23
- exports.piece = piece;
24
- function board(board) {
18
+ export function board(board) {
25
19
  const r = [];
26
20
  for (let y = 8; y >= 0; y--) {
27
21
  for (let x = 0; x < 9; x++) {
@@ -34,84 +28,55 @@ function board(board) {
34
28
  }
35
29
  return r.join('');
36
30
  }
37
- exports.board = board;
38
- function square(sq) {
39
- return util_1.makeSquare(sq);
31
+ export function square(sq) {
32
+ return makeSquare(sq);
40
33
  }
41
- exports.square = square;
42
- function dests(dests) {
34
+ export function dests(dests) {
43
35
  const lines = [];
44
36
  for (const [from, to] of dests) {
45
- lines.push(`${util_1.makeSquare(from)}: ${Array.from(to, square).join(' ')}`);
37
+ lines.push(`${makeSquare(from)}: ${Array.from(to, square).join(' ')}`);
46
38
  }
47
39
  return lines.join('\n');
48
40
  }
49
- exports.dests = dests;
50
- function perft(pos, depth, log = false) {
41
+ export function perft(pos, depth, log = false) {
51
42
  if (depth < 1)
52
43
  return 1;
53
44
  const ctx = pos.ctx();
54
45
  const dropDests = pos.allDropDests(ctx);
55
- if (!log && depth === 1 && pos.pockets.isEmpty()) {
56
- // Optimization for leaf nodes.
57
- let nodes = 0;
58
- for (const [from, to] of pos.allDests(ctx)) {
59
- nodes += to.size();
60
- const role = pos.board.getRole(from);
61
- if (types_1.PROMOTABLE_ROLES.includes(role)) {
62
- const promMoves = squareSet_1.SquareSet.promotionZone(pos.turn).has(from)
63
- ? to
64
- : to.intersect(squareSet_1.SquareSet.promotionZone(pos.turn));
65
- const forceProm = role === 'pawn' || role === 'lance'
66
- ? squareSet_1.SquareSet.backrank(pos.turn)
67
- : role === 'knight'
68
- ? squareSet_1.SquareSet.backrank2(pos.turn)
69
- : squareSet_1.SquareSet.empty();
70
- nodes += promMoves.diff(forceProm).size();
71
- }
72
- }
73
- return nodes;
74
- }
75
- else {
76
- let nodes = 0;
77
- for (const [from, dests] of pos.allDests(ctx)) {
78
- for (const to of dests) {
79
- const promotions = [];
80
- const role = pos.board.get(from).role;
81
- const canPromote = types_1.PROMOTABLE_ROLES.includes(role) &&
82
- (squareSet_1.SquareSet.promotionZone(pos.turn).has(to) || squareSet_1.SquareSet.promotionZone(pos.turn).has(from));
83
- if (canPromote) {
84
- promotions.push(true);
85
- if (!(((role === 'pawn' || role === 'lance') && squareSet_1.SquareSet.backrank(pos.turn).has(to)) ||
86
- (role === 'knight' && squareSet_1.SquareSet.backrank2(pos.turn).has(to))))
87
- promotions.push(false);
88
- }
89
- else
46
+ let nodes = 0;
47
+ for (const [from, dests] of pos.allDests(ctx)) {
48
+ for (const to of dests) {
49
+ const promotions = [];
50
+ const piece = pos.board.get(from);
51
+ if (pieceCanPromote(pos.rules)(piece, from, to)) {
52
+ promotions.push(true);
53
+ if (!pieceInDeadZone(pos.rules)(piece, to))
90
54
  promotions.push(false);
91
- for (const promotion of promotions) {
92
- const child = pos.clone();
93
- const move = { from, to, promotion };
94
- child.play(move);
95
- const children = perft(child, depth - 1, false);
96
- if (log)
97
- console.log(util_1.makeUsi(move), children);
98
- nodes += children;
99
- }
100
55
  }
101
- }
102
- for (const [role, dropDestsOfRole] of dropDests) {
103
- for (const to of dropDestsOfRole) {
56
+ else
57
+ promotions.push(false);
58
+ for (const promotion of promotions) {
104
59
  const child = pos.clone();
105
- const move = { role, to };
60
+ const move = { from, to, promotion };
106
61
  child.play(move);
107
62
  const children = perft(child, depth - 1, false);
108
63
  if (log)
109
- console.log(util_1.makeUsi(move), children);
64
+ console.log(makeUsi(move), children, '(', depth, ')');
110
65
  nodes += children;
111
66
  }
112
67
  }
113
- return nodes;
114
68
  }
69
+ for (const [role, dropDestsOfRole] of dropDests) {
70
+ for (const to of dropDestsOfRole) {
71
+ const child = pos.clone();
72
+ const move = { role, to };
73
+ child.play(move);
74
+ const children = perft(child, depth - 1, false);
75
+ if (log)
76
+ console.log(makeUsi(move), children, '(', depth, ')');
77
+ nodes += children;
78
+ }
79
+ }
80
+ return nodes;
115
81
  }
116
- exports.perft = perft;
117
82
  //# sourceMappingURL=debug.js.map
package/debug.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"debug.js","sourceRoot":"","sources":["src/debug.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"debug.js","sourceRoot":"","sources":["src/debug.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,69 @@
1
+ import { ROLES } from './types';
2
+ // Hand alone can store anything
3
+ // let the variants decide what to store and what not
4
+ export class Hand {
5
+ constructor() { }
6
+ static empty() {
7
+ const m = new Hand();
8
+ for (const role of ROLES)
9
+ m[role] = 0;
10
+ return m;
11
+ }
12
+ clone() {
13
+ const m = new Hand();
14
+ for (const role of ROLES)
15
+ m[role] = this[role];
16
+ return m;
17
+ }
18
+ equals(other) {
19
+ return ROLES.every(role => this[role] === other[role]);
20
+ }
21
+ add(other) {
22
+ const m = new Hand();
23
+ for (const role of ROLES)
24
+ m[role] = this[role] + other[role];
25
+ return m;
26
+ }
27
+ nonEmpty() {
28
+ return ROLES.some(role => this[role] > 0);
29
+ }
30
+ isEmpty() {
31
+ return !this.nonEmpty();
32
+ }
33
+ count() {
34
+ return ROLES.map(role => this[role]).reduce((acc, cur) => acc + cur);
35
+ }
36
+ *[Symbol.iterator]() {
37
+ for (const role of ROLES.filter(r => this[r] > 0)) {
38
+ yield [role, this[role]];
39
+ }
40
+ }
41
+ }
42
+ export class Hands {
43
+ constructor(gote, sente) {
44
+ this.gote = gote;
45
+ this.sente = sente;
46
+ }
47
+ static empty() {
48
+ return new Hands(Hand.empty(), Hand.empty());
49
+ }
50
+ clone() {
51
+ return new Hands(this.gote.clone(), this.sente.clone());
52
+ }
53
+ equals(other) {
54
+ return this.gote.equals(other.gote) && this.sente.equals(other.sente);
55
+ }
56
+ add(other) {
57
+ return new Hands(this.gote.add(other.gote), this.sente.add(other.sente));
58
+ }
59
+ count() {
60
+ return this.gote.count() + this.sente.count();
61
+ }
62
+ isEmpty() {
63
+ return this.gote.isEmpty() && this.sente.isEmpty();
64
+ }
65
+ nonEmpty() {
66
+ return !this.isEmpty();
67
+ }
68
+ }
69
+ //# 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,39 +1,31 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.hashSetup = exports.hashMaterial = exports.hashMaterialSide = exports.hashBoard = exports.fxhash32 = void 0;
4
- const types_1 = require("./types");
1
+ import { COLORS, ROLES } from './types';
5
2
  function rol32(n, left) {
6
3
  return (n << left) | (n >>> (32 - left));
7
4
  }
8
- function fxhash32(word, state = 0) {
5
+ export function fxhash32(word, state = 0) {
9
6
  return Math.imul(rol32(state, 5) ^ word, 0x9e3779b9);
10
7
  }
11
- exports.fxhash32 = fxhash32;
12
- function hashBoard(board, state = 0) {
8
+ export function hashBoard(board, state = 0) {
13
9
  state = fxhash32(board.gote.lo, fxhash32(board.gote.mid, fxhash32(board.gote.hi, state)));
14
- for (const role of types_1.ROLES)
10
+ for (const role of ROLES)
15
11
  state = fxhash32(board[role].lo, fxhash32(board[role].mid, fxhash32(board[role].hi, state)));
16
12
  return state;
17
13
  }
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);
14
+ export function hashHand(hand, state = 0) {
15
+ for (const role of ROLES)
16
+ state = fxhash32(hand[role], state);
22
17
  return state;
23
18
  }
24
- exports.hashMaterialSide = hashMaterialSide;
25
- function hashMaterial(material, state = 0) {
26
- for (const color of types_1.COLORS)
27
- state = hashMaterialSide(material[color], state);
19
+ export function hashHands(hands, state = 0) {
20
+ for (const color of COLORS)
21
+ state = hashHand(hands[color], state);
28
22
  return state;
29
23
  }
30
- exports.hashMaterial = hashMaterial;
31
- function hashSetup(setup, state = 0) {
24
+ export function hashSetup(setup, state = 0) {
32
25
  state = hashBoard(setup.board, state);
33
- state = hashMaterial(setup.pockets, state);
26
+ state = hashHands(setup.hands, state);
34
27
  if (setup.turn === 'sente')
35
28
  state = fxhash32(1, state);
36
29
  return state;
37
30
  }
38
- exports.hashSetup = hashSetup;
39
31
  //# sourceMappingURL=hash.js.map
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,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;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,MAAM,UAAU,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;AAED,MAAM,UAAU,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,KAAK;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;AAED,MAAM,UAAU,QAAQ,CAAC,IAAU,EAAE,KAAK,GAAG,CAAC;IAC5C,KAAK,MAAM,IAAI,IAAI,KAAK;QAAE,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;IAC9D,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAY,EAAE,KAAK,GAAG,CAAC;IAC/C,KAAK,MAAM,KAAK,IAAI,MAAM;QAAE,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;IAClE,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,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"}
package/index.d.ts CHANGED
@@ -1,19 +1,22 @@
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';
2
- export { charToRole, defined, makeSquare, makeUsi, opposite, parseSquare, parseUsi, roleToChar, squareFile, squareRank, } from './util';
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
+ export { stringToRole, defined, makeSquare, makeUsi, opposite, parseSquare, parseUsi, roleToString, 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
- export * as fen from './fen';
11
- export * as handicaps from './kifHandicaps';
10
+ export * as sfen from './sfen';
11
+ export * as handicaps from './notation/kif/kifHandicaps';
12
+ export * as hand from './hand';
12
13
  export * as hash from './hash';
13
- export * as kif from './kif';
14
- export * as kifUtil from './kifUtil';
15
- export * as csa from './csa';
16
- export * as csaUtil from './csaUtil';
17
- export * as san from './san';
14
+ export * as japanese from './notation/japanese';
15
+ export * as kitaoKawasaki from './notation/kitaoKawasaki';
16
+ export * as western from './notation/western';
17
+ export * as westernEngine from './notation/westernEngine';
18
+ export * as kif from './notation/kif/kif';
19
+ export * as csa from './notation/csa/csa';
18
20
  export * as transform from './transform';
19
21
  export * as variant from './variant';
22
+ export * as variantUtil from './variantUtil';
package/index.js CHANGED
@@ -1,65 +1,23 @@
1
- "use strict";
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;
5
- var types_1 = require("./types");
6
- Object.defineProperty(exports, "FILE_NAMES", { enumerable: true, get: function () { return types_1.FILE_NAMES; } });
7
- Object.defineProperty(exports, "RANK_NAMES", { enumerable: true, get: function () { return types_1.RANK_NAMES; } });
8
- Object.defineProperty(exports, "COLORS", { enumerable: true, get: function () { return types_1.COLORS; } });
9
- 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
- Object.defineProperty(exports, "isDrop", { enumerable: true, get: function () { return types_1.isDrop; } });
13
- Object.defineProperty(exports, "isNormal", { enumerable: true, get: function () { return types_1.isNormal; } });
14
- Object.defineProperty(exports, "RULES", { enumerable: true, get: function () { return types_1.RULES; } });
15
- var util_1 = require("./util");
16
- Object.defineProperty(exports, "charToRole", { enumerable: true, get: function () { return util_1.charToRole; } });
17
- Object.defineProperty(exports, "defined", { enumerable: true, get: function () { return util_1.defined; } });
18
- Object.defineProperty(exports, "makeSquare", { enumerable: true, get: function () { return util_1.makeSquare; } });
19
- Object.defineProperty(exports, "makeUsi", { enumerable: true, get: function () { return util_1.makeUsi; } });
20
- Object.defineProperty(exports, "opposite", { enumerable: true, get: function () { return util_1.opposite; } });
21
- Object.defineProperty(exports, "parseSquare", { enumerable: true, get: function () { return util_1.parseSquare; } });
22
- Object.defineProperty(exports, "parseUsi", { enumerable: true, get: function () { return util_1.parseUsi; } });
23
- Object.defineProperty(exports, "roleToChar", { enumerable: true, get: function () { return util_1.roleToChar; } });
24
- Object.defineProperty(exports, "squareFile", { enumerable: true, get: function () { return util_1.squareFile; } });
25
- Object.defineProperty(exports, "squareRank", { enumerable: true, get: function () { return util_1.squareRank; } });
26
- var squareSet_1 = require("./squareSet");
27
- Object.defineProperty(exports, "SquareSet", { enumerable: true, get: function () { return squareSet_1.SquareSet; } });
28
- var attacks_1 = require("./attacks");
29
- Object.defineProperty(exports, "attacks", { enumerable: true, get: function () { return attacks_1.attacks; } });
30
- Object.defineProperty(exports, "between", { enumerable: true, get: function () { return attacks_1.between; } });
31
- Object.defineProperty(exports, "bishopAttacks", { enumerable: true, get: function () { return attacks_1.bishopAttacks; } });
32
- Object.defineProperty(exports, "kingAttacks", { enumerable: true, get: function () { return attacks_1.kingAttacks; } });
33
- Object.defineProperty(exports, "knightAttacks", { enumerable: true, get: function () { return attacks_1.knightAttacks; } });
34
- Object.defineProperty(exports, "pawnAttacks", { enumerable: true, get: function () { return attacks_1.pawnAttacks; } });
35
- Object.defineProperty(exports, "lanceAttacks", { enumerable: true, get: function () { return attacks_1.lanceAttacks; } });
36
- Object.defineProperty(exports, "silverAttacks", { enumerable: true, get: function () { return attacks_1.silverAttacks; } });
37
- Object.defineProperty(exports, "goldAttacks", { enumerable: true, get: function () { return attacks_1.goldAttacks; } });
38
- Object.defineProperty(exports, "horseAttacks", { enumerable: true, get: function () { return attacks_1.horseAttacks; } });
39
- Object.defineProperty(exports, "dragonAttacks", { enumerable: true, get: function () { return attacks_1.dragonAttacks; } });
40
- Object.defineProperty(exports, "ray", { enumerable: true, get: function () { return attacks_1.ray; } });
41
- Object.defineProperty(exports, "rookAttacks", { enumerable: true, get: function () { return attacks_1.rookAttacks; } });
42
- var board_1 = require("./board");
43
- Object.defineProperty(exports, "Board", { enumerable: true, get: function () { return board_1.Board; } });
44
- 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
- Object.defineProperty(exports, "defaultSetup", { enumerable: true, get: function () { return setup_1.defaultSetup; } });
48
- var shogi_1 = require("./shogi");
49
- Object.defineProperty(exports, "IllegalSetup", { enumerable: true, get: function () { return shogi_1.IllegalSetup; } });
50
- Object.defineProperty(exports, "Shogi", { enumerable: true, get: function () { return shogi_1.Shogi; } });
51
- Object.defineProperty(exports, "Position", { enumerable: true, get: function () { return shogi_1.Position; } });
52
- Object.defineProperty(exports, "PositionError", { enumerable: true, get: function () { return shogi_1.PositionError; } });
53
- exports.compat = require("./compat");
54
- exports.debug = require("./debug");
55
- exports.fen = require("./fen");
56
- exports.handicaps = require("./kifHandicaps");
57
- exports.hash = require("./hash");
58
- exports.kif = require("./kif");
59
- exports.kifUtil = require("./kifUtil");
60
- exports.csa = require("./csa");
61
- exports.csaUtil = require("./csaUtil");
62
- exports.san = require("./san");
63
- exports.transform = require("./transform");
64
- exports.variant = require("./variant");
1
+ export { FILE_NAMES, RANK_NAMES, COLORS, ROLES, isDrop, isNormal, RULES, } from './types';
2
+ export { stringToRole, defined, makeSquare, makeUsi, opposite, parseSquare, parseUsi, roleToString, squareFile, squareRank, } from './util';
3
+ export { SquareSet } from './squareSet';
4
+ export { attacks, between, bishopAttacks, kingAttacks, knightAttacks, pawnAttacks, lanceAttacks, silverAttacks, goldAttacks, horseAttacks, dragonAttacks, ray, rookAttacks, } from './attacks';
5
+ export { Board } from './board';
6
+ export { defaultSetup } from './setup';
7
+ export { IllegalSetup, Shogi, Position, PositionError } from './shogi';
8
+ export * as compat from './compat';
9
+ export * as debug from './debug';
10
+ export * as sfen from './sfen';
11
+ export * as handicaps from './notation/kif/kifHandicaps';
12
+ export * as hand from './hand';
13
+ export * as hash from './hash';
14
+ export * as japanese from './notation/japanese';
15
+ export * as kitaoKawasaki from './notation/kitaoKawasaki';
16
+ export * as western from './notation/western';
17
+ export * as westernEngine from './notation/westernEngine';
18
+ export * as kif from './notation/kif/kif';
19
+ export * as csa from './notation/csa/csa';
20
+ export * as transform from './transform';
21
+ export * as variant from './variant';
22
+ export * as variantUtil from './variantUtil';
65
23
  //# 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,OAAO,EACL,UAAU,EACV,UAAU,EAOV,MAAM,EAGN,KAAK,EAML,MAAM,EACN,QAAQ,EAER,KAAK,GAEN,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,YAAY,EACZ,OAAO,EACP,UAAU,EACV,OAAO,EACP,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,UAAU,EACV,UAAU,GACX,MAAM,QAAQ,CAAC;AAEhB,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EACL,OAAO,EACP,OAAO,EACP,aAAa,EACb,WAAW,EACX,aAAa,EACb,WAAW,EACX,YAAY,EACZ,aAAa,EACb,WAAW,EACX,YAAY,EACZ,aAAa,EACb,GAAG,EACH,WAAW,GACZ,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,OAAO,EAAS,YAAY,EAAE,MAAM,SAAS,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAW,MAAM,SAAS,CAAC;AAEhF,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AAEnC,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AAEjC,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAE/B,OAAO,KAAK,SAAS,MAAM,6BAA6B,CAAC;AAEzD,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAE/B,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAE/B,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAC;AAEhD,OAAO,KAAK,aAAa,MAAM,0BAA0B,CAAC;AAE1D,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAC;AAE9C,OAAO,KAAK,aAAa,MAAM,0BAA0B,CAAC;AAE1D,OAAO,KAAK,GAAG,MAAM,oBAAoB,CAAC;AAE1C,OAAO,KAAK,GAAG,MAAM,oBAAoB,CAAC;AAE1C,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AAEzC,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AAErC,OAAO,KAAK,WAAW,MAAM,eAAe,CAAC"}
@@ -1,25 +1,25 @@
1
1
  import { Result } from '@badrap/result';
2
- import { Board } from './board';
3
- import { MaterialSide, Setup } from './setup';
4
- import { Position } from './shogi';
5
- import { Move } from './types';
2
+ import { Board } from '../../board';
3
+ import { Setup } from '../../setup';
4
+ import { Position } from '../../shogi';
5
+ import { Move } from '../../types';
6
+ import { Hand } from '../../hand';
6
7
  export declare enum InvalidCsa {
7
8
  CSA = "ERR_CSA",
8
9
  Board = "ERR_BOARD",
9
10
  Handicap = "ERR_HANDICAP",
10
- Pockets = "ERR_POCKETS",
11
+ Hands = "ERR_HANDS",
11
12
  AdditionalInfo = "ERR_ADDITIONAL"
12
13
  }
13
14
  export declare class CsaError extends Error {
14
15
  }
15
16
  export declare function makeCsaHeader(setup: Setup): string;
16
17
  export declare function makeCsaBoard(board: Board): string;
17
- export declare function makeCsaPocket(material: MaterialSide, prefix: string): string;
18
+ export declare function makeCsaHand(hand: Hand, prefix: string): string;
18
19
  export declare function parseCsaHeader(csa: string): Result<Setup, CsaError>;
19
20
  export declare function parseCsaHandicap(handicap: string): Result<Board, CsaError>;
20
21
  export declare function parseTags(csa: string): [string, string][];
22
+ export declare function normalizedCsaLines(csa: string): string[];
21
23
  export declare function parseCsaMove(pos: Position, csaMove: string): Move | undefined;
22
24
  export declare function parseCsaMoves(pos: Position, csaMoves: string[]): Move[];
23
- export declare function makeCsaMove(pos: Position, move: Move): string;
24
- export declare function makeCsaVariation(pos: Position, variation: Move[]): string;
25
- export declare function normalizedCsaLines(csa: string): string[];
25
+ export declare function makeCsaMove(pos: Position, move: Move): string | undefined;