shogi.js 2.0.4 → 3.1.1-alpha.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 (64) hide show
  1. package/.eslintrc.js +27 -0
  2. package/.prettierignore +10 -0
  3. package/.prettierrc.json +5 -0
  4. package/README.md +13 -14
  5. package/dist/dist/Kind.d.ts +19 -0
  6. package/dist/{src → dist}/Piece.d.ts +6 -5
  7. package/dist/dist/moveDefinitions.d.ts +3 -0
  8. package/dist/dist/presets.d.ts +74 -0
  9. package/dist/{src → dist}/shogi.d.ts +12 -12
  10. package/dist/shogi.js +2 -8
  11. package/dist/shogi.js.LICENSE.txt +6 -0
  12. package/package.json +39 -55
  13. package/tsconfig.typecheck.json +9 -0
  14. package/.github/workflows/gh-pages.yml +0 -33
  15. package/.idea/codeStyles/Project.xml +0 -21
  16. package/.idea/codeStyles/codeStyleConfig.xml +0 -5
  17. package/.idea/inspectionProfiles/Project_Default.xml +0 -6
  18. package/.idea/misc.xml +0 -6
  19. package/.idea/modules.xml +0 -8
  20. package/.idea/vcs.xml +0 -6
  21. package/.nvmrc +0 -1
  22. package/.travis.yml +0 -3
  23. package/dist/src/Constants.d.ts +0 -14
  24. package/docs/assets/css/main.css +0 -1
  25. package/docs/assets/images/icons.png +0 -0
  26. package/docs/assets/images/icons@2x.png +0 -0
  27. package/docs/assets/images/widgets.png +0 -0
  28. package/docs/assets/images/widgets@2x.png +0 -0
  29. package/docs/assets/js/main.js +0 -51
  30. package/docs/assets/js/search.js +0 -1
  31. package/docs/classes/piece.html +0 -563
  32. package/docs/classes/shogi.html +0 -1187
  33. package/docs/enums/color.html +0 -186
  34. package/docs/index.html +0 -204
  35. package/docs/interfaces/imove.html +0 -236
  36. package/docs/interfaces/imovedefinition.html +0 -186
  37. package/docs/interfaces/isettingtype.html +0 -200
  38. package/docs/modules.html +0 -149
  39. package/public/docs/assets/css/main.css +0 -1
  40. package/public/docs/assets/images/icons.png +0 -0
  41. package/public/docs/assets/images/icons@2x.png +0 -0
  42. package/public/docs/assets/images/widgets.png +0 -0
  43. package/public/docs/assets/images/widgets@2x.png +0 -0
  44. package/public/docs/assets/js/main.js +0 -51
  45. package/public/docs/assets/js/search.json +0 -1
  46. package/public/docs/classes/_piece_.piece.html +0 -576
  47. package/public/docs/classes/_shogi_.shogi.html +0 -1206
  48. package/public/docs/enums/_color_.color.html +0 -193
  49. package/public/docs/globals.html +0 -146
  50. package/public/docs/index.html +0 -227
  51. package/public/docs/interfaces/_imovedefinition_.imovedefinition.html +0 -194
  52. package/public/docs/interfaces/_shogi_.imove.html +0 -250
  53. package/public/docs/interfaces/_shogi_.isettingtype.html +0 -214
  54. package/public/docs/modules/_color_.html +0 -146
  55. package/public/docs/modules/_constants_.html +0 -1074
  56. package/public/docs/modules/_imovedefinition_.html +0 -146
  57. package/public/docs/modules/_piece_.html +0 -146
  58. package/public/docs/modules/_polyfills_.html +0 -112
  59. package/public/docs/modules/_serialization_.html +0 -262
  60. package/public/docs/modules/_shogi_.html +0 -159
  61. /package/dist/{src → dist}/Color.d.ts +0 -0
  62. /package/dist/{src → dist}/IMoveDefinition.d.ts +0 -0
  63. /package/dist/{src → dist}/Serialization.d.ts +0 -0
  64. /package/dist/{src → dist}/polyfills.d.ts +0 -0
package/.eslintrc.js ADDED
@@ -0,0 +1,27 @@
1
+ module.exports = {
2
+ env: {
3
+ browser: true,
4
+ es2021: true,
5
+ },
6
+ extends: [
7
+ "eslint:recommended",
8
+ "plugin:@typescript-eslint/recommended",
9
+ "plugin:jest/recommended",
10
+ "prettier",
11
+ ],
12
+ parser: "@typescript-eslint/parser",
13
+ parserOptions: {
14
+ ecmaVersion: 13,
15
+ sourceType: "module",
16
+ },
17
+ plugins: ["@typescript-eslint", "jest"],
18
+ ignorePatterns: [
19
+ ".eslintrc.js",
20
+ "jest.config.js",
21
+ "webpack.config.js",
22
+ "docs/",
23
+ "bundle/",
24
+ "dist/",
25
+ ],
26
+ rules: {},
27
+ };
@@ -0,0 +1,10 @@
1
+ /bundle/
2
+ /coverage/
3
+ /dist/
4
+ /node_modules/
5
+ /docs/
6
+ /public/
7
+ /.github/
8
+ README.md
9
+ package.json
10
+ package-lock.json
@@ -0,0 +1,5 @@
1
+ {
2
+ "printWidth": 100,
3
+ "tabWidth": 4,
4
+ "bracketSpacing": false
5
+ }
package/README.md CHANGED
@@ -1,9 +1,9 @@
1
- # Shogi.js (Ver. 2.0) [![Build Status](https://travis-ci.org/na2hiro/Shogi.js.svg?branch=master)](https://travis-ci.org/na2hiro/Shogi.js)
1
+ # Shogi.js (Ver. 2.0) ![Build Status](https://github.com/na2hiro/Shogi.js/actions/workflows/main.yml/badge.svg)
2
2
  将棋の盤駒をモデルとするシンプルなJavaScriptライブラリ.TypeScript.
3
3
 
4
4
  ## インストール
5
5
 
6
- ```
6
+ ```shell
7
7
  npm install shogi.js
8
8
  ```
9
9
 
@@ -28,7 +28,7 @@ npm install shogi.js
28
28
 
29
29
  ## Docs
30
30
 
31
- [TypeDoc ドキュメンテーション](http://apps.81.la/Shogi.js/docs/modules.html) を参照のこと。
31
+ [TypeDoc ドキュメンテーション](https://apps.81.la/Kifu-for-JS/shogi.js/docs/) を参照のこと。
32
32
  また,`test`ディレクトリ以下のテストで実際の挙動を確認されたい.
33
33
 
34
34
  ## TODO
@@ -38,53 +38,52 @@ https://github.com/na2hiro/Shogi.js/issues
38
38
 
39
39
  ### 準備
40
40
 
41
- ```
42
- $ npm install
41
+ ```shell
42
+ $ nvm i && nvm use && npm install
43
43
  ```
44
44
 
45
45
  上記コマンドを実行することで開発に必要なパッケージをインストールできます.
46
46
 
47
- * TypeScript 2.0
48
- * Webpack 3 (バンドルツール)
49
- * Browserify (JSバンドルツール)
47
+ * TypeScript
48
+ * Webpack (バンドルツール)
50
49
  * Jest (テストフレームワーク,カバレッジ計測)
51
50
  * TSLint (Linter)
52
51
 
53
52
  ### コマンド
54
53
 
55
54
 
56
- ```
55
+ ```shell
57
56
  $ npm run build
58
57
  $ npm run build:watch
59
58
  ```
60
59
 
61
60
  ビルドが走ります.`build:watch`の場合,変更されるたびにビルドが走ります.
62
61
 
63
- ```
62
+ ```shell
64
63
  $ npm run test:watch
65
64
  ```
66
65
 
67
66
  コンソールでテスト結果が表示されます.コードの変更が保存されるたびに必要なテストが再実行されるため,実装が既存の有効なテストを壊してないか簡単に確認できます.
68
67
 
69
- ```
68
+ ```shell
70
69
  $ npm run test
71
70
  ```
72
71
 
73
72
  全てのテストが走るとともにカバレッジレポートが表示されます.`coverage/lcov-report/index.html`では,行ごとのカバレッジを確認できます.追加されたコードのブランチカバレッジが100%になるようにしてください.push時にチェックされ満たしていなければ却下されるはずです.
74
73
 
75
- ```
74
+ ```shell
76
75
  $ npm run lint
77
76
  ```
78
77
 
79
78
  コードの品質が検査されます.エラーがあればそれに従い直してください.push前にもチェックされます.
80
79
 
81
- ```
80
+ ```shell
82
81
  $ npm run lint:fix
83
82
  ```
84
83
 
85
84
  自動的に修正可能な問題(インデント等)を直してくれます.
86
85
 
87
- ```
86
+ ```shell
88
87
  $ npm run docs
89
88
  ```
90
89
 
@@ -0,0 +1,19 @@
1
+ declare enum KindEnum {
2
+ FU = 0,
3
+ KY = 1,
4
+ KE = 2,
5
+ GI = 3,
6
+ KI = 4,
7
+ KA = 5,
8
+ HI = 6,
9
+ OU = 7,
10
+ TO = 8,
11
+ NY = 9,
12
+ NK = 10,
13
+ NG = 11,
14
+ UM = 12,
15
+ RY = 13
16
+ }
17
+ export type Kind = keyof typeof KindEnum;
18
+ export declare const values: Kind[];
19
+ export {};
@@ -1,4 +1,5 @@
1
1
  import Color from "./Color";
2
+ import { Kind } from "./Kind";
2
3
  /**
3
4
  * 駒を表すクラス
4
5
  */
@@ -6,16 +7,16 @@ export default class Piece {
6
7
  /**
7
8
  * 成った時の種類を返す.なければそのまま.
8
9
  */
9
- static promote(kind: string): string;
10
+ static promote(kind: Kind): Kind;
10
11
  /**
11
12
  * 表に返した時の種類を返す.表の場合はそのまま.
12
13
  */
13
- static unpromote(kind: string): string;
14
+ static unpromote(kind: Kind): Kind;
14
15
  /**
15
16
  * 成れる駒かどうかを返す
16
17
  */
17
- static canPromote(kind: string): boolean;
18
- static isPromoted(kind: string): boolean;
18
+ static canPromote(kind: Kind): boolean;
19
+ static isPromoted(kind: Kind): boolean;
19
20
  static oppositeColor(color: Color): Color;
20
21
  /**
21
22
  * SFENによる文字列表現から駒オブジェクトを作成
@@ -28,7 +29,7 @@ export default class Piece {
28
29
  /**
29
30
  * 駒の種類
30
31
  */
31
- kind: string;
32
+ kind: Kind;
32
33
  /**
33
34
  * "+FU"などのCSAによる駒表現から駒オブジェクトを作成
34
35
  */
@@ -0,0 +1,3 @@
1
+ import IMoveDefinition from "./IMoveDefinition";
2
+ import { Kind } from "./Kind";
3
+ export declare function getMoveDefinitions(kind: Kind): IMoveDefinition;
@@ -0,0 +1,74 @@
1
+ import Color from "./Color";
2
+ /**
3
+ * 既定の初期局面
4
+ */
5
+ declare const presetDefinitions: {
6
+ HIRATE: {
7
+ board: string[];
8
+ turn: Color;
9
+ };
10
+ KY: {
11
+ board: string[];
12
+ turn: Color;
13
+ };
14
+ KY_R: {
15
+ board: string[];
16
+ turn: Color;
17
+ };
18
+ KA: {
19
+ board: string[];
20
+ turn: Color;
21
+ };
22
+ HI: {
23
+ board: string[];
24
+ turn: Color;
25
+ };
26
+ HIKY: {
27
+ board: string[];
28
+ turn: Color;
29
+ };
30
+ "2": {
31
+ board: string[];
32
+ turn: Color;
33
+ };
34
+ "3": {
35
+ board: string[];
36
+ turn: Color;
37
+ };
38
+ "4": {
39
+ board: string[];
40
+ turn: Color;
41
+ };
42
+ "5": {
43
+ board: string[];
44
+ turn: Color;
45
+ };
46
+ "5_L": {
47
+ board: string[];
48
+ turn: Color;
49
+ };
50
+ "6": {
51
+ board: string[];
52
+ turn: Color;
53
+ };
54
+ "7_R": {
55
+ board: string[];
56
+ turn: Color;
57
+ };
58
+ "7_L": {
59
+ board: string[];
60
+ turn: Color;
61
+ };
62
+ "8": {
63
+ board: string[];
64
+ turn: Color;
65
+ };
66
+ "10": {
67
+ board: string[];
68
+ turn: Color;
69
+ };
70
+ };
71
+ export type IPreset = keyof typeof presetDefinitions;
72
+ export declare const getInitialFromPreset: (preset: string) => any;
73
+ declare const presets: string[];
74
+ export default presets;
@@ -6,6 +6,7 @@
6
6
  */
7
7
  import Color from "./Color";
8
8
  import IMoveDefinition from "./IMoveDefinition";
9
+ import { Kind } from "./Kind";
9
10
  import Piece from "./Piece";
10
11
  import "./polyfills";
11
12
  /**
@@ -68,11 +69,11 @@ export declare class Shogi {
68
69
  /**
69
70
  * moveの逆を行う.つまり(tox, toy)から(fromx, fromy)へ移動し,駒を取っていたら戻し,promoteなら成りを戻す.
70
71
  */
71
- unmove(fromx: number, fromy: number, tox: number, toy: number, promote?: boolean, capture?: string): void;
72
+ unmove(fromx: number, fromy: number, tox: number, toy: number, promote?: boolean, capture?: Kind): void;
72
73
  /**
73
74
  * (tox, toy)へcolorの持ち駒のkindを打つ.
74
75
  */
75
- drop(tox: number, toy: number, kind: string, color?: Color): void;
76
+ drop(tox: number, toy: number, kind: Kind, color?: Color): void;
76
77
  /**
77
78
  * dropの逆を行う,つまり(tox, toy)の駒を駒台に戻す.
78
79
  */
@@ -89,7 +90,7 @@ export declare class Shogi {
89
90
  /**
90
91
  * (x, y)に行けるcolor側のkindの駒の動きを得る
91
92
  */
92
- getMovesTo(x: number, y: number, kind: string, color?: Color): IMove[];
93
+ getMovesTo(x: number, y: number, kind: Kind, color?: Color): IMove[];
93
94
  /**
94
95
  * (x, y)の駒を得る
95
96
  */
@@ -97,9 +98,7 @@ export declare class Shogi {
97
98
  /**
98
99
  * keyを種類,valueを枚数とするオブジェクトとして持ち駒の枚数一覧を返す.
99
100
  */
100
- getHandsSummary(color: Color): {
101
- [index: string]: number;
102
- };
101
+ getHandsSummary(color: Color): HandSummary;
103
102
  /**
104
103
  * (x, y)の駒を取ってcolorの持ち駒に加える
105
104
  */
@@ -142,17 +141,18 @@ export declare class Shogi {
142
141
  */
143
142
  private checkTurn;
144
143
  }
144
+ type HandSummary = {
145
+ [K in Extract<Kind, "FU" | "KY" | "KE" | "GI" | "KI" | "KA" | "HI">]: number;
146
+ };
145
147
  export interface ISettingType {
146
148
  preset: string;
147
149
  data?: {
148
150
  color: Color;
149
151
  board: Array<Array<{
150
152
  color?: Color;
151
- kind?: string;
153
+ kind?: Kind;
152
154
  }>>;
153
- hands: Array<{
154
- [index: string]: number;
155
- }>;
155
+ hands: HandSummary[];
156
156
  };
157
157
  }
158
158
  export interface IMove {
@@ -164,7 +164,7 @@ export interface IMove {
164
164
  x: number;
165
165
  y: number;
166
166
  };
167
- kind?: string;
167
+ kind?: Kind;
168
168
  color?: Color;
169
169
  }
170
- export { Color, Piece, IMoveDefinition };
170
+ export { Color, Piece, Kind, IMoveDefinition };
package/dist/shogi.js CHANGED
@@ -1,8 +1,2 @@
1
- module.exports=function(t){var o={};function r(e){if(o[e])return o[e].exports;var n=o[e]={i:e,l:!1,exports:{}};return t[e].call(n.exports,n,n.exports,r),n.l=!0,n.exports}return r.m=t,r.c=o,r.d=function(t,o,e){r.o(t,o)||Object.defineProperty(t,o,{enumerable:!0,get:e})},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(t,o){if(1&o&&(t=r(t)),8&o)return t;if(4&o&&"object"==typeof t&&t&&t.__esModule)return t;var e=Object.create(null);if(r.r(e),Object.defineProperty(e,"default",{enumerable:!0,value:t}),2&o&&"string"!=typeof t)for(var n in t)r.d(e,n,function(o){return t[o]}.bind(null,n));return e},r.n=function(t){var o=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(o,"a",o),o},r.o=function(t,o){return Object.prototype.hasOwnProperty.call(t,o)},r.p="",r(r.s=3)}([function(t,o,r){"use strict";var e;o.__esModule=!0,function(t){t[t.Black=0]="Black",t[t.White=1]="White"}(e||(e={})),o.default=e},function(t,o,r){"use strict";o.__esModule=!0,o.MOVE_DEF=o.PRESET=void 0;var e=r(0),n=" * * * * * * * * * ",i=["-FU-FU-FU-FU-FU-FU-FU-FU-FU",n,n,n,"+FU+FU+FU+FU+FU+FU+FU+FU+FU"," * +KA * * * * * +HI * ","+KY+KE+GI+KI+OU+KI+GI+KE+KY"],u=[n].concat(i);o.PRESET={HIRATE:{board:["-KY-KE-GI-KI-OU-KI-GI-KE-KY"," * -HI * * * * * -KA * "].concat(i),turn:e.default.Black},KY:{board:["-KY-KE-GI-KI-OU-KI-GI-KE * "," * -HI * * * * * -KA * "].concat(i),turn:e.default.White},KY_R:{board:[" * -KE-GI-KI-OU-KI-GI-KE-KY"," * -HI * * * * * -KA * "].concat(i),turn:e.default.White},KA:{board:["-KY-KE-GI-KI-OU-KI-GI-KE-KY"," * -HI * * * * * * * "].concat(i),turn:e.default.White},HI:{board:["-KY-KE-GI-KI-OU-KI-GI-KE-KY"," * * * * * * * -KA * "].concat(i),turn:e.default.White},HIKY:{board:["-KY-KE-GI-KI-OU-KI-GI-KE * "," * * * * * * * -KA * "].concat(i),turn:e.default.White},2:{board:["-KY-KE-GI-KI-OU-KI-GI-KE-KY"].concat(u),turn:e.default.White},3:{board:["-KY-KE-GI-KI-OU-KI-GI-KE * "].concat(u),turn:e.default.White},4:{board:[" * -KE-GI-KI-OU-KI-GI-KE * "].concat(u),turn:e.default.White},5:{board:[" * * -GI-KI-OU-KI-GI-KE * "].concat(u),turn:e.default.White},"5_L":{board:[" * -KE-GI-KI-OU-KI-GI * * "].concat(u),turn:e.default.White},6:{board:[" * * -GI-KI-OU-KI-GI * * "].concat(u),turn:e.default.White},8:{board:[" * * * -KI-OU-KI * * * "].concat(u),turn:e.default.White},10:{board:[" * * * * -OU * * * * "].concat(u),turn:e.default.White}};var a=[0,-1],f=[0,1],s=[1,0],l=[-1,0],d=[-1,-1],c=[1,-1],h=[-1,1],p=[1,1],v={just:[d,a,c,l,s,f]};o.MOVE_DEF={FU:{just:[a]},KY:{fly:[a]},KE:{just:[[-1,-2],[1,-2]]},GI:{just:[d,a,c,h,p]},KI:v,TO:v,NY:v,NK:v,NG:v,KA:{fly:[d,c,h,p]},HI:{fly:[a,l,s,f]},OU:{just:[d,a,c,l,s,h,f,p]},UM:{fly:[d,c,h,p],just:[a,l,s,f]},RY:{fly:[a,l,s,f],just:[d,c,h,p]}}},function(t,o,r){"use strict";o.__esModule=!0;var e=r(0),n=function(){function t(t){this.color="+"===t.slice(0,1)?e.default.Black:e.default.White,this.kind=t.slice(1)}return t.promote=function(t){return{FU:"TO",KY:"NY",KE:"NK",GI:"NG",KA:"UM",HI:"RY"}[t]||t},t.unpromote=function(t){return{TO:"FU",NY:"KY",NK:"KE",NG:"GI",KI:"KI",UM:"KA",RY:"HI",OU:"OU"}[t]||t},t.canPromote=function(o){return t.promote(o)!==o},t.isPromoted=function(t){return["TO","NY","NK","NG","UM","RY"].indexOf(t)>=0},t.oppositeColor=function(t){return t===e.default.Black?e.default.White:e.default.Black},t.fromSFENString=function(o){var r="+"===o[0];r&&(o=o.slice(1));var e=new t((o.match(/[A-Z]/)?"+":"-")+{P:"FU",L:"KY",N:"KE",S:"GI",G:"KI",B:"KA",R:"HI",K:"OU"}[o.toUpperCase()]);return r&&e.promote(),e},t.prototype.promote=function(){this.kind=t.promote(this.kind)},t.prototype.unpromote=function(){this.kind=t.unpromote(this.kind)},t.prototype.inverse=function(){this.color=this.color===e.default.Black?e.default.White:e.default.Black},t.prototype.toCSAString=function(){return(this.color===e.default.Black?"+":"-")+this.kind},t.prototype.toSFENString=function(){var o={FU:"P",KY:"L",KE:"N",GI:"S",KI:"G",KA:"B",HI:"R",OU:"K"}[t.unpromote(this.kind)];return(t.isPromoted(this.kind)?"+":"")+(this.color===e.default.Black?o:o.toLowerCase())},t}();o.default=n},function(t,o,r){"use strict";o.__esModule=!0,o.Piece=o.Color=o.Shogi=void 0;
2
- /** @license
3
- * Shogi.js
4
- * Copyright (c) 2014 na2hiro (https://github.com/na2hiro)
5
- * This software is released under the MIT License.
6
- * http://opensource.org/licenses/mit-license.php
7
- */
8
- var e=r(0);o.Color=e.default;var n=r(1),i=r(2);o.Piece=i.default,r(4);var u=r(5),a=function(){function t(t){this.initialize(t)}return t.getIllegalUnpromotedRow=function(t){switch(t){case"FU":case"KY":return 1;case"KE":return 2;default:return 0}},t.getRowToOppositeEnd=function(t,o){return o===e.default.Black?t:10-t},t.prototype.initialize=function(t){void 0===t&&(t={preset:"HIRATE"}),u.fromPreset(this,t),this.flagEditMode=!1},t.prototype.initializeFromSFENString=function(t){u.fromSfen(this,t)},t.prototype.toCSAString=function(){return u.toCSA(this)},t.prototype.toSFENString=function(t){return void 0===t&&(t=1),u.toSfen(this,t)},t.prototype.editMode=function(t){this.flagEditMode=t},t.prototype.move=function(o,r,e,n,i){void 0===i&&(i=!1);var u=this.get(o,r);if(null==u)throw new Error("no piece found at "+o+", "+r);if(this.checkTurn(u.color),!this.flagEditMode&&!this.getMovesFrom(o,r).some((function(t){return t.to.x===e&&t.to.y===n})))throw new Error("cannot move from "+o+", "+r+" to "+e+", "+n);null!=this.get(e,n)&&this.capture(e,n);var a=t.getIllegalUnpromotedRow(u.kind)>=t.getRowToOppositeEnd(n,u.color);(i||a)&&u.promote(),this.set(e,n,u),this.set(o,r,null),this.nextTurn()},t.prototype.unmove=function(t,o,r,e,n,u){void 0===n&&(n=!1);var a,f=this.get(r,e);if(null==f)throw new Error("no piece found at "+r+", "+e);this.checkTurn(i.default.oppositeColor(f.color)),u&&(a=this.popFromHand(i.default.unpromote(u),f.color)).inverse();var s=this.flagEditMode;this.editMode(!0),this.move(r,e,t,o),n&&f.unpromote(),u&&(i.default.isPromoted(u)&&a.promote(),this.set(r,e,a)),this.editMode(s),this.prevTurn()},t.prototype.drop=function(t,o,r,e){if(void 0===e&&(e=this.turn),this.checkTurn(e),null!=this.get(t,o))throw new Error("there is a piece at "+t+", "+o);if(!this.getDropsBy(e).some((function(e){return e.to.x===t&&e.to.y===o&&e.kind===r})))throw new Error("Cannot move");var n=this.popFromHand(r,e);this.set(t,o,n),this.nextTurn()},t.prototype.undrop=function(t,o){var r=this.get(t,o);if(null==r)throw new Error("there is no piece at "+t+", "+o);this.checkTurn(i.default.oppositeColor(r.color)),this.pushToHand(r),this.set(t,o,null),this.prevTurn()},t.prototype.getMovesFrom=function(t,o){var r=function(t,o,r){if(t<1||9<t||o<1||9<o)return!1;var e=this.get(t,o);return null==e||e.color!==r}.bind(this),i=function(t,o,r){var e=this.get(t,o);return null!=e&&e.color!==r}.bind(this),u=this.get(t,o);if(null==u)return[];var a=n.MOVE_DEF[u.kind],f=[],s={x:t,y:o},l=u.color===e.default.Black?1:-1;if(a.just)for(var d=0,c=a.just;d<c.length;d++){var h=c[d];r((K={x:s.x+h[0]*l,y:s.y+h[1]*l}).x,K.y,u.color)&&f.push({from:s,to:K})}if(a.fly)for(var p=0,v=a.fly;p<v.length;p++){h=v[p];for(var K={x:s.x+h[0]*l,y:s.y+h[1]*l};r(K.x,K.y,u.color)&&(f.push({from:s,to:{x:K.x,y:K.y}}),!i(K.x,K.y,u.color));)K.x+=h[0]*l,K.y+=h[1]*l}return f},t.prototype.getDropsBy=function(o){for(var r=[],e=[],n=[],i=1;i<=9;i++){for(var u=!1,a=1;a<=9;a++){var f=this.get(i,a);null==f?e.push({x:i,y:a}):f.color===o&&"FU"===f.kind&&(u=!0)}n.push(u)}for(var s={},l=0,d=this.hands[o];l<d.length;l++){var c=d[l].kind;if(!s[c]){s[c]=!0;for(var h=t.getIllegalUnpromotedRow(c),p=0,v=e;p<v.length;p++){var K=v[p];"FU"===c&&n[K.x-1]||(h>=t.getRowToOppositeEnd(K.y,o)||r.push({to:K,color:o,kind:c}))}}}return r},t.prototype.getMovesTo=function(t,o,r,e){void 0===e&&(e=this.turn);for(var n={x:t,y:o},i=[],u=1;u<=9;u++)for(var a=1;a<=9;a++){var f=this.get(u,a);if(f&&f.kind===r&&f.color===e)this.getMovesFrom(u,a).some((function(r){return r.to.x===t&&r.to.y===o}))&&i.push({from:{x:u,y:a},to:n})}return i},t.prototype.get=function(t,o){return this.board[t-1][o-1]},t.prototype.getHandsSummary=function(t){for(var o={FU:0,KY:0,KE:0,GI:0,KI:0,KA:0,HI:0},r=0,e=this.hands[t];r<e.length;r++){o[e[r].kind]++}return o},t.prototype.captureByColor=function(t,o,r){if(!this.flagEditMode)throw new Error("cannot edit board without editMode");var e=this.get(t,o);this.set(t,o,null),e.unpromote(),e.color!==r&&e.inverse(),this.pushToHand(e)},t.prototype.flip=function(t,o){if(!this.flagEditMode)throw new Error("cannot edit board without editMode");var r=this.get(t,o);return!!r&&(i.default.isPromoted(r.kind)?(r.unpromote(),r.inverse()):i.default.canPromote(r.kind)?r.promote():r.inverse(),!0)},t.prototype.setTurn=function(t){if(!this.flagEditMode)throw new Error("cannot set turn without editMode");this.turn=t},t.prototype.set=function(t,o,r){this.board[t-1][o-1]=r},t.prototype.capture=function(t,o){var r=this.get(t,o);this.set(t,o,null),r.unpromote(),r.inverse(),this.pushToHand(r)},t.prototype.pushToHand=function(t){this.hands[t.color].push(t)},t.prototype.popFromHand=function(t,o){for(var r=this.hands[o],e=0;e<r.length;e++)if(r[e].kind===t){var n=r[e];return r.splice(e,1),n}throw new Error(o+" has no "+t)},t.prototype.nextTurn=function(){this.flagEditMode||(this.turn=this.turn===e.default.Black?e.default.White:e.default.Black)},t.prototype.prevTurn=function(){this.flagEditMode||this.nextTurn()},t.prototype.checkTurn=function(t){if(!this.flagEditMode&&t!==this.turn)throw new Error("cannot move opposite piece")},t}();o.Shogi=a},function(t,o,r){"use strict";o.__esModule=!0,Array.prototype.some||(Array.prototype.some=function(t){if(null==this)throw new TypeError;var o=Object(this),r=o.length>>>0;if("function"!=typeof t)throw new TypeError;for(var e=arguments[1],n=0;n<r;n++)if(n in o&&t.call(e,o[n],n,o))return!0;return!1})},function(t,o,r){"use strict";o.__esModule=!0,o.toSfen=o.fromSfen=o.toCSA=o.fromPreset=void 0;var e=r(0),n=r(1),i=r(2);o.fromPreset=function(t,o){var r,u=[],a=[[],[]];if("OTHER"!==o.preset){for(var f=0;f<9;f++){u[f]=[];for(var s=0;s<9;s++){var l=n.PRESET[o.preset].board[s].slice(24-3*f,24-3*f+3);u[f][s]=" * "===l?null:new i.default(l)}}r=n.PRESET[o.preset].turn}else{for(f=0;f<9;f++){u[f]=[];for(s=0;s<9;s++){var d=o.data.board[f][s];u[f][s]=d.kind?new i.default((d.color===e.default.Black?"+":"-")+d.kind):null}}r=o.data.color;for(var c=0;c<2;c++)for(var h in o.data.hands[c])if(o.data.hands[c].hasOwnProperty(h))for(l=(0===c?"+":"-")+h,f=0;f<o.data.hands[c][h];f++)a[c].push(new i.default(l))}t.board=u,t.turn=r,t.hands=a},o.toCSA=function(t){for(var o=[],r=0;r<9;r++){for(var n="P"+(r+1),i=8;i>=0;i--){var u=t.board[i][r];n+=null==u?" * ":u.toCSAString()}o.push(n)}for(var a=0;a<2;a++){n="P"+"+-"[a];for(var f=0,s=t.hands[a];f<s.length;f++){n+="00"+s[f].kind}o.push(n)}return o.push(t.turn===e.default.Black?"+":"-"),o.join("\n")},o.fromSfen=function(t,o){for(var r=[],n=0;n<9;n++){r[n]=[];for(var u=0;u<9;u++)r[n][u]=null}var a=o.split(" "),f=a[0],s=8,l=0;for(n=0;n<f.length;n++){var d=f[n];"+"===d&&(d+=f[++n]),d.match(/^[1-9]$/)?s-=Number(d):"/"===d?(l++,s=8):(r[s][l]=i.default.fromSFENString(d),s--)}t.board=r,t.turn="b"===a[1]?e.default.Black:e.default.White;var c=[[],[]],h=a[2];if("-"!==h)for(;h.length>0;){var p=1,v=h.match(/^[0-9]+/);v&&(p=Number(v[0]),h=h.slice(v[0].length));for(n=0;n<p;n++){var K=i.default.fromSFENString(h[0]);c[K.color].push(K)}h=h.slice(1)}t.hands=c},o.toSfen=function(t,o){for(var r=[],n=[],i=0;i<9;i++){for(var u="",a=0,f=8;f>=0;f--){var s=t.board[f][i];null==s?a++:(a>0&&(u+=""+a,a=0),u+=s.toSFENString())}a>0&&(u+=""+a),n.push(u)}if(r.push(n.join("/")),r.push(t.turn===e.default.Black?"b":"w"),0===t.hands[0].length&&0===t.hands[1].length)r.push("-");else{for(var l="",d={},c=0;c<2;c++)for(var h=0,p=t.hands[c];h<p.length;h++){var v=p[h].toSFENString();d[v]=(d[v]||0)+1}for(var K=0,I=["R","B","G","S","N","L","P","r","b","g","s","n","l","p"];K<I.length;K++){var E=I[K];d[E]>0&&(l+=(d[E]>1?d[E]:"")+E)}r.push(l)}return r.push(""+o),r.join(" ")}}]);
1
+ /*! For license information please see shogi.js.LICENSE.txt */
2
+ (()=>{"use strict";var t={371:(t,o)=>{var r;Object.defineProperty(o,"__esModule",{value:!0}),function(t){t[t.Black=0]="Black",t[t.White=1]="White"}(r||(r={})),o.default=r},51:(t,o,r)=>{Object.defineProperty(o,"__esModule",{value:!0});var e=r(371),n=function(){function t(t){this.color="+"===t.slice(0,1)?e.default.Black:e.default.White,this.kind=t.slice(1)}return t.promote=function(t){return{FU:"TO",KY:"NY",KE:"NK",GI:"NG",KA:"UM",HI:"RY"}[t]||t},t.unpromote=function(t){return{TO:"FU",NY:"KY",NK:"KE",NG:"GI",KI:"KI",UM:"KA",RY:"HI",OU:"OU"}[t]||t},t.canPromote=function(o){return t.promote(o)!==o},t.isPromoted=function(t){return["TO","NY","NK","NG","UM","RY"].indexOf(t)>=0},t.oppositeColor=function(t){return t===e.default.Black?e.default.White:e.default.Black},t.fromSFENString=function(o){var r="+"===o[0];r&&(o=o.slice(1));var e=new t((o.match(/[A-Z]/)?"+":"-")+{P:"FU",L:"KY",N:"KE",S:"GI",G:"KI",B:"KA",R:"HI",K:"OU"}[o.toUpperCase()]);return r&&e.promote(),e},t.prototype.promote=function(){this.kind=t.promote(this.kind)},t.prototype.unpromote=function(){this.kind=t.unpromote(this.kind)},t.prototype.inverse=function(){this.color=this.color===e.default.Black?e.default.White:e.default.Black},t.prototype.toCSAString=function(){return(this.color===e.default.Black?"+":"-")+this.kind},t.prototype.toSFENString=function(){var o={FU:"P",KY:"L",KE:"N",GI:"S",KI:"G",KA:"B",HI:"R",OU:"K"}[t.unpromote(this.kind)];return(t.isPromoted(this.kind)?"+":"")+(this.color===e.default.Black?o:o.toLowerCase())},t}();o.default=n},297:(t,o,r)=>{Object.defineProperty(o,"__esModule",{value:!0}),o.toSfen=o.fromSfen=o.toCSA=o.fromPreset=void 0;var e=r(371),n=r(446),i=r(51);o.fromPreset=function(t,o){var r,a=[],u=[[],[]];if("OTHER"!==o.preset){for(var f=(0,n.getInitialFromPreset)(o.preset),s=0;s<9;s++){a[s]=[];for(var l=0;l<9;l++){var d=f.board[l].slice(24-3*s,24-3*s+3);a[s][l]=" * "===d?null:new i.default(d)}}r=f.turn}else{for(s=0;s<9;s++)for(a[s]=[],l=0;l<9;l++){var h=o.data.board[s][l];a[s][l]=h.kind?new i.default((h.color===e.default.Black?"+":"-")+h.kind):null}r=o.data.color;for(var c=0;c<2;c++)for(var p in o.data.hands[c])if(o.data.hands[c].hasOwnProperty(p))for(d=(0===c?"+":"-")+p,s=0;s<o.data.hands[c][p];s++)u[c].push(new i.default(d))}t.board=a,t.turn=r,t.hands=u},o.toCSA=function(t){for(var o=[],r=0;r<9;r++){for(var n="P"+(r+1),i=8;i>=0;i--){var a=t.board[i][r];n+=null==a?" * ":a.toCSAString()}o.push(n)}for(var u=0;u<2;u++){n="P"+"+-"[u];for(var f=0,s=t.hands[u];f<s.length;f++)n+="00"+s[f].kind;o.push(n)}return o.push(t.turn===e.default.Black?"+":"-"),o.join("\n")},o.fromSfen=function(t,o){for(var r=[],n=0;n<9;n++){r[n]=[];for(var a=0;a<9;a++)r[n][a]=null}var u=o.split(" "),f=u[0],s=8,l=0;for(n=0;n<f.length;n++){var d=f[n];"+"===d&&(d+=f[++n]),d.match(/^[1-9]$/)?s-=Number(d):"/"===d?(l++,s=8):(r[s][l]=i.default.fromSFENString(d),s--)}t.board=r,t.turn="b"===u[1]?e.default.Black:e.default.White;var h=[[],[]],c=u[2];if("-"!==c)for(;c.length>0;){var p=1,v=c.match(/^[0-9]+/);for(v&&(p=Number(v[0]),c=c.slice(v[0].length)),n=0;n<p;n++){var K=i.default.fromSFENString(c[0]);h[K.color].push(K)}c=c.slice(1)}t.hands=h},o.toSfen=function(t,o){for(var r=[],n=[],i=0;i<9;i++){for(var a="",u=0,f=8;f>=0;f--){var s=t.board[f][i];null==s?u++:(u>0&&(a+=""+u,u=0),a+=s.toSFENString())}u>0&&(a+=""+u),n.push(a)}if(r.push(n.join("/")),r.push(t.turn===e.default.Black?"b":"w"),0===t.hands[0].length&&0===t.hands[1].length)r.push("-");else{for(var l="",d={},h=0;h<2;h++)for(var c=0,p=t.hands[h];c<p.length;c++){var v=p[c].toSFENString();d[v]=(d[v]||0)+1}for(var K=0,I=["R","B","G","S","N","L","P","r","b","g","s","n","l","p"];K<I.length;K++){var g=I[K];d[g]>0&&(l+=(d[g]>1?d[g]:"")+g)}r.push(l)}return r.push(""+o),r.join(" ")}},333:(t,o)=>{Object.defineProperty(o,"__esModule",{value:!0}),o.getMoveDefinitions=void 0;var r=[0,-1],e=[0,1],n=[1,0],i=[-1,0],a=[-1,-1],u=[1,-1],f=[-1,1],s=[1,1],l={just:[a,r,u,i,n,e]},d={FU:{just:[r]},KY:{fly:[r]},KE:{just:[[-1,-2],[1,-2]]},GI:{just:[a,r,u,f,s]},KI:l,TO:l,NY:l,NK:l,NG:l,KA:{fly:[a,u,f,s]},HI:{fly:[r,i,n,e]},OU:{just:[a,r,u,i,n,f,e,s]},UM:{fly:[a,u,f,s],just:[r,i,n,e]},RY:{fly:[r,i,n,e],just:[a,u,f,s]}};o.getMoveDefinitions=function(t){return d[t]}},31:(t,o)=>{Object.defineProperty(o,"__esModule",{value:!0}),Array.prototype.some||(Array.prototype.some=function(t){if(null==this)throw new TypeError;var o=Object(this),r=o.length>>>0;if("function"!=typeof t)throw new TypeError;for(var e=arguments[1],n=0;n<r;n++)if(n in o&&t.call(e,o[n],n,o))return!0;return!1})},446:(t,o,r)=>{Object.defineProperty(o,"__esModule",{value:!0}),o.getInitialFromPreset=void 0;var e=r(371),n=" * * * * * * * * * ",i=["-FU-FU-FU-FU-FU-FU-FU-FU-FU",n,n,n,"+FU+FU+FU+FU+FU+FU+FU+FU+FU"," * +KA * * * * * +HI * ","+KY+KE+GI+KI+OU+KI+GI+KE+KY"],a=[n].concat(i),u={HIRATE:{board:["-KY-KE-GI-KI-OU-KI-GI-KE-KY"," * -HI * * * * * -KA * "].concat(i),turn:e.default.Black},KY:{board:["-KY-KE-GI-KI-OU-KI-GI-KE * "," * -HI * * * * * -KA * "].concat(i),turn:e.default.White},KY_R:{board:[" * -KE-GI-KI-OU-KI-GI-KE-KY"," * -HI * * * * * -KA * "].concat(i),turn:e.default.White},KA:{board:["-KY-KE-GI-KI-OU-KI-GI-KE-KY"," * -HI * * * * * * * "].concat(i),turn:e.default.White},HI:{board:["-KY-KE-GI-KI-OU-KI-GI-KE-KY"," * * * * * * * -KA * "].concat(i),turn:e.default.White},HIKY:{board:["-KY-KE-GI-KI-OU-KI-GI-KE * "," * * * * * * * -KA * "].concat(i),turn:e.default.White},2:{board:["-KY-KE-GI-KI-OU-KI-GI-KE-KY"].concat(a),turn:e.default.White},3:{board:["-KY-KE-GI-KI-OU-KI-GI-KE * "].concat(a),turn:e.default.White},4:{board:[" * -KE-GI-KI-OU-KI-GI-KE * "].concat(a),turn:e.default.White},5:{board:[" * * -GI-KI-OU-KI-GI-KE * "].concat(a),turn:e.default.White},"5_L":{board:[" * -KE-GI-KI-OU-KI-GI * * "].concat(a),turn:e.default.White},6:{board:[" * * -GI-KI-OU-KI-GI * * "].concat(a),turn:e.default.White},"7_R":{board:[" * * * -KI-OU-KI-GI * * "].concat(a),turn:e.default.White},"7_L":{board:[" * * -GI-KI-OU-KI * * * "].concat(a),turn:e.default.White},8:{board:[" * * * -KI-OU-KI * * * "].concat(a),turn:e.default.White},10:{board:[" * * * * -OU * * * * "].concat(a),turn:e.default.White}};o.getInitialFromPreset=function(t){var o=u[t];if(!o)throw new Error("Unknown preset: ".concat(t));return o};var f=Object.keys(u);o.default=f}},o={};function r(e){var n=o[e];if(void 0!==n)return n.exports;var i=o[e]={exports:{}};return t[e](i,i.exports,r),i.exports}var e={};(()=>{var t=e;Object.defineProperty(t,"__esModule",{value:!0}),t.Piece=t.Color=t.Shogi=void 0;var o=r(371);t.Color=o.default;var n=r(333),i=r(51);t.Piece=i.default,r(31);var a=r(297),u=function(){function t(t){this.initialize(t)}return t.getIllegalUnpromotedRow=function(t){switch(t){case"FU":case"KY":return 1;case"KE":return 2;default:return 0}},t.getRowToOppositeEnd=function(t,r){return r===o.default.Black?t:10-t},t.prototype.initialize=function(t){void 0===t&&(t={preset:"HIRATE"}),(0,a.fromPreset)(this,t),this.flagEditMode=!1},t.prototype.initializeFromSFENString=function(t){(0,a.fromSfen)(this,t)},t.prototype.toCSAString=function(){return(0,a.toCSA)(this)},t.prototype.toSFENString=function(t){return void 0===t&&(t=1),(0,a.toSfen)(this,t)},t.prototype.editMode=function(t){this.flagEditMode=t},t.prototype.move=function(o,r,e,n,i){void 0===i&&(i=!1);var a=this.get(o,r);if(null==a)throw new Error("no piece found at "+o+", "+r);if(this.checkTurn(a.color),!this.flagEditMode&&!this.getMovesFrom(o,r).some((function(t){return t.to.x===e&&t.to.y===n})))throw new Error("cannot move from "+o+", "+r+" to "+e+", "+n);null!=this.get(e,n)&&this.capture(e,n);var u=t.getIllegalUnpromotedRow(a.kind)>=t.getRowToOppositeEnd(n,a.color);(i||u)&&a.promote(),this.set(e,n,a),this.set(o,r,null),this.nextTurn()},t.prototype.unmove=function(t,o,r,e,n,a){void 0===n&&(n=!1);var u,f=this.get(r,e);if(null==f)throw new Error("no piece found at "+r+", "+e);this.checkTurn(i.default.oppositeColor(f.color)),a&&(u=this.popFromHand(i.default.unpromote(a),f.color)).inverse();var s=this.flagEditMode;this.editMode(!0),this.move(r,e,t,o),n&&f.unpromote(),a&&(i.default.isPromoted(a)&&u.promote(),this.set(r,e,u)),this.editMode(s),this.prevTurn()},t.prototype.drop=function(t,o,r,e){if(void 0===e&&(e=this.turn),this.checkTurn(e),null!=this.get(t,o))throw new Error("there is a piece at "+t+", "+o);if(!this.getDropsBy(e).some((function(e){return e.to.x===t&&e.to.y===o&&e.kind===r})))throw new Error("Cannot move");var n=this.popFromHand(r,e);this.set(t,o,n),this.nextTurn()},t.prototype.undrop=function(t,o){var r=this.get(t,o);if(null==r)throw new Error("there is no piece at "+t+", "+o);this.checkTurn(i.default.oppositeColor(r.color)),this.pushToHand(r),this.set(t,o,null),this.prevTurn()},t.prototype.getMovesFrom=function(t,r){var e=function(t,o,r){if(t<1||9<t||o<1||9<o)return!1;var e=this.get(t,o);return null==e||e.color!==r}.bind(this),i=function(t,o,r){var e=this.get(t,o);return null!=e&&e.color!==r}.bind(this),a=this.get(t,r);if(null==a)return[];var u=(0,n.getMoveDefinitions)(a.kind),f=[],s={x:t,y:r},l=a.color===o.default.Black?1:-1;if(u.just)for(var d=0,h=u.just;d<h.length;d++){var c=h[d];e((K={x:s.x+c[0]*l,y:s.y+c[1]*l}).x,K.y,a.color)&&f.push({from:s,to:K})}if(u.fly)for(var p=0,v=u.fly;p<v.length;p++){c=v[p];for(var K={x:s.x+c[0]*l,y:s.y+c[1]*l};e(K.x,K.y,a.color)&&(f.push({from:s,to:{x:K.x,y:K.y}}),!i(K.x,K.y,a.color));)K.x+=c[0]*l,K.y+=c[1]*l}return f},t.prototype.getDropsBy=function(o){for(var r=[],e=[],n=[],i=1;i<=9;i++){for(var a=!1,u=1;u<=9;u++){var f=this.get(i,u);null==f?e.push({x:i,y:u}):f.color===o&&"FU"===f.kind&&(a=!0)}n.push(a)}for(var s={},l=0,d=this.hands[o];l<d.length;l++){var h=d[l].kind;if(!s[h]){s[h]=!0;for(var c=t.getIllegalUnpromotedRow(h),p=0,v=e;p<v.length;p++){var K=v[p];"FU"===h&&n[K.x-1]||c>=t.getRowToOppositeEnd(K.y,o)||r.push({to:K,color:o,kind:h})}}}return r},t.prototype.getMovesTo=function(t,o,r,e){void 0===e&&(e=this.turn);for(var n={x:t,y:o},i=[],a=1;a<=9;a++)for(var u=1;u<=9;u++){var f=this.get(a,u);f&&f.kind===r&&f.color===e&&this.getMovesFrom(a,u).some((function(r){return r.to.x===t&&r.to.y===o}))&&i.push({from:{x:a,y:u},to:n})}return i},t.prototype.get=function(t,o){return this.board[t-1][o-1]},t.prototype.getHandsSummary=function(t){for(var o={FU:0,KY:0,KE:0,GI:0,KI:0,KA:0,HI:0},r=0,e=this.hands[t];r<e.length;r++)o[e[r].kind]++;return o},t.prototype.captureByColor=function(t,o,r){if(!this.flagEditMode)throw new Error("cannot edit board without editMode");var e=this.get(t,o);this.set(t,o,null),e.unpromote(),e.color!==r&&e.inverse(),this.pushToHand(e)},t.prototype.flip=function(t,o){if(!this.flagEditMode)throw new Error("cannot edit board without editMode");var r=this.get(t,o);return!!r&&(i.default.isPromoted(r.kind)?(r.unpromote(),r.inverse()):i.default.canPromote(r.kind)?r.promote():r.inverse(),!0)},t.prototype.setTurn=function(t){if(!this.flagEditMode)throw new Error("cannot set turn without editMode");this.turn=t},t.prototype.set=function(t,o,r){this.board[t-1][o-1]=r},t.prototype.capture=function(t,o){var r=this.get(t,o);this.set(t,o,null),r.unpromote(),r.inverse(),this.pushToHand(r)},t.prototype.pushToHand=function(t){this.hands[t.color].push(t)},t.prototype.popFromHand=function(t,o){for(var r=this.hands[o],e=0;e<r.length;e++)if(r[e].kind===t){var n=r[e];return r.splice(e,1),n}throw new Error(o+" has no "+t)},t.prototype.nextTurn=function(){this.flagEditMode||(this.turn=this.turn===o.default.Black?o.default.White:o.default.Black)},t.prototype.prevTurn=function(){this.flagEditMode||this.nextTurn()},t.prototype.checkTurn=function(t){if(!this.flagEditMode&&t!==this.turn)throw new Error("cannot move opposite piece")},t}();t.Shogi=u})(),module.exports=e})();
@@ -0,0 +1,6 @@
1
+ /** @license
2
+ * Shogi.js
3
+ * Copyright (c) 2014 na2hiro (https://github.com/na2hiro)
4
+ * This software is released under the MIT License.
5
+ * http://opensource.org/licenses/mit-license.php
6
+ */
package/package.json CHANGED
@@ -1,57 +1,41 @@
1
1
  {
2
- "name": "shogi.js",
3
- "version": "2.0.4",
4
- "description": "simple shogi library for JavaScript",
5
- "main": "dist/shogi.js",
6
- "types": "dist/src/shogi.d.ts",
7
- "directories": {
8
- "test": "test"
9
- },
10
- "scripts": {
11
- "build": "webpack --mode=production -p",
12
- "build:analyze": "webpack --mode=production -p --env.analyze",
13
- "build:watch": "webpack --mode=development --watch",
14
- "lint": "tslint -p ./",
15
- "lint:fix": "tslint -p ./ --fix",
16
- "test": "jest",
17
- "test:watch": "jest --watch",
18
- "prepublishOnly": "npm run build",
19
- "docs": "typedoc --exclude '**/__tests__/**/*' ./src/shogi.ts",
20
- "deploy:ghpages": "rm -rf ./public && mkdir -p ./public && npm run docs && mv ./docs ./public/"
21
- },
22
- "repository": {
23
- "type": "git",
24
- "url": "git+https://github.com/na2hiro/Shogi.js.git"
25
- },
26
- "keywords": [
27
- "shogi",
28
- "library"
29
- ],
30
- "author": "na2hiro",
31
- "license": "MIT",
32
- "bugs": {
33
- "url": "https://github.com/na2hiro/Shogi.js/issues"
34
- },
35
- "homepage": "https://github.com/na2hiro/Shogi.js#readme",
36
- "devDependencies": {
37
- "@types/jest": "^22.2.0",
38
- "browserify": "^16.5.0",
39
- "clean-webpack-plugin": "^0.1.19",
40
- "jest": "^26.1.0",
41
- "pre-push": "^0.1.1",
42
- "ts-jest": "^26.4.3",
43
- "ts-loader": "^4.3.1",
44
- "tslint": "^5.9.1",
45
- "typedoc": "^0.20.35",
46
- "typescript": "^4.0.5",
47
- "webpack": "^4.43.0",
48
- "webpack-bundle-analyzer": "^3.8.0",
49
- "webpack-cli": "^3.3.11",
50
- "webpack-merge": "^4.1.2"
51
- },
52
- "pre-push": [
53
- "lint",
54
- "test"
55
- ],
56
- "dependencies": {}
2
+ "name": "shogi.js",
3
+ "version": "3.1.1-alpha.0",
4
+ "description": "simple shogi library for JavaScript",
5
+ "main": "dist/shogi.js",
6
+ "types": "dist/src/shogi.d.ts",
7
+ "directories": {
8
+ "test": "test"
9
+ },
10
+ "scripts": {
11
+ "clean": "rm -rf ./dist ./bundle",
12
+ "build": "webpack --mode=production",
13
+ "build:analyze": "webpack --mode=production --env analyze=1",
14
+ "build:watch": "webpack --mode=development --watch",
15
+ "lint": "eslint ./ && prettier --check .",
16
+ "lint:fix": "eslint ./ --fix && prettier --write .",
17
+ "test": "jest",
18
+ "test:watch": "jest --watch",
19
+ "typecheck": "tsc --project tsconfig.typecheck.json",
20
+ "docs": "typedoc --exclude '**/__tests__/**/*' ./src/shogi.ts",
21
+ "ghpages": "rm -rf ./public && mkdir -p ./public && npm run docs && mv ./docs ./public/"
22
+ },
23
+ "repository": {
24
+ "type": "git",
25
+ "url": "git+https://github.com/na2hiro/Shogi.js.git"
26
+ },
27
+ "keywords": [
28
+ "shogi",
29
+ "library"
30
+ ],
31
+ "author": "na2hiro",
32
+ "license": "MIT",
33
+ "bugs": {
34
+ "url": "https://github.com/na2hiro/Shogi.js/issues"
35
+ },
36
+ "homepage": "https://github.com/na2hiro/Shogi.js#readme",
37
+ "devDependencies": {
38
+ "ts-jest": "^27.1.3"
39
+ },
40
+ "gitHead": "7fd5bff54f0668c865f1fa80f9e259724781b8b8"
57
41
  }
@@ -0,0 +1,9 @@
1
+ {
2
+ "extends": "./tsconfig.json",
3
+ "compilerOptions": {
4
+ "declaration": false,
5
+ "module": "commonjs",
6
+ "noEmit": true,
7
+ "skipLibCheck": true
8
+ }
9
+ }
@@ -1,33 +0,0 @@
1
- name: github pages
2
-
3
- on:
4
- push:
5
- branches:
6
- - master
7
-
8
- jobs:
9
- deploy:
10
- runs-on: ubuntu-18.04
11
- steps:
12
- - uses: actions/checkout@v2
13
-
14
- - name: Setup Node
15
- uses: actions/setup-node@v2.1.3
16
- with:
17
- node-version: '12.x'
18
-
19
- - name: Cache dependencies
20
- uses: actions/cache@v2
21
- with:
22
- path: ~/.npm
23
- key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
24
- restore-keys: |
25
- ${{ runner.os }}-node-
26
- - run: npm ci
27
- - run: npm run deploy:ghpages
28
-
29
- - name: Deploy
30
- uses: peaceiris/actions-gh-pages@v3
31
- with:
32
- github_token: ${{ secrets.GITHUB_TOKEN }}
33
- publish_dir: ./public
@@ -1,21 +0,0 @@
1
- <component name="ProjectCodeStyleConfiguration">
2
- <code_scheme name="Project" version="173">
3
- <H2CodeStyleSettings version="5">
4
- <option name="USE_GENERAL_STYLE" value="false" />
5
- </H2CodeStyleSettings>
6
- <TypeScriptCodeStyleSettings version="0">
7
- <option name="FORCE_SEMICOLON_STYLE" value="true" />
8
- <option name="SPACE_BEFORE_FUNCTION_LEFT_PARENTH" value="false" />
9
- <option name="SPACE_WITHIN_TYPE_ASSERTION" value="true" />
10
- <option name="IMPORT_SORT_MODULE_NAME" value="true" />
11
- </TypeScriptCodeStyleSettings>
12
- <codeStyleSettings language="TypeScript">
13
- <option name="RIGHT_MARGIN" value="120" />
14
- <option name="KEEP_BLANK_LINES_IN_CODE" value="1" />
15
- <option name="IF_BRACE_FORCE" value="3" />
16
- <option name="DOWHILE_BRACE_FORCE" value="3" />
17
- <option name="WHILE_BRACE_FORCE" value="3" />
18
- <option name="FOR_BRACE_FORCE" value="3" />
19
- </codeStyleSettings>
20
- </code_scheme>
21
- </component>
@@ -1,5 +0,0 @@
1
- <component name="ProjectCodeStyleConfiguration">
2
- <state>
3
- <option name="USE_PER_PROJECT_SETTINGS" value="true" />
4
- </state>
5
- </component>
@@ -1,6 +0,0 @@
1
- <component name="InspectionProjectProfileManager">
2
- <profile version="1.0">
3
- <option name="myName" value="Project Default" />
4
- <inspection_tool class="TsLint" enabled="true" level="WARNING" enabled_by_default="true" />
5
- </profile>
6
- </component>
package/.idea/misc.xml DELETED
@@ -1,6 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="ProjectRootManager">
4
- <output url="file://$PROJECT_DIR$/out" />
5
- </component>
6
- </project>
package/.idea/modules.xml DELETED
@@ -1,8 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="ProjectModuleManager">
4
- <modules>
5
- <module fileurl="file://$PROJECT_DIR$/.idea/Shogi.js.iml" filepath="$PROJECT_DIR$/.idea/Shogi.js.iml" />
6
- </modules>
7
- </component>
8
- </project>
package/.idea/vcs.xml DELETED
@@ -1,6 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="VcsDirectoryMappings">
4
- <mapping directory="" vcs="Git" />
5
- </component>
6
- </project>
package/.nvmrc DELETED
@@ -1 +0,0 @@
1
- 10.16.3
package/.travis.yml DELETED
@@ -1,3 +0,0 @@
1
- language: node_js
2
- node_js:
3
- - 10
@@ -1,14 +0,0 @@
1
- import Color from "./Color";
2
- import IMoveDefinition from "./IMoveDefinition";
3
- /**
4
- * 既定の初期局面
5
- */
6
- export declare const PRESET: Readonly<{
7
- [index: string]: Readonly<{
8
- readonly board: string[];
9
- readonly turn: Color;
10
- }>;
11
- }>;
12
- export declare const MOVE_DEF: Readonly<{
13
- [index: string]: Readonly<IMoveDefinition>;
14
- }>;