@gamepark/rules-api 5.15.0 → 5.19.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 (89) hide show
  1. package/dist/Dummy.js +1 -17
  2. package/dist/Dummy.js.map +1 -1
  3. package/dist/Rules.d.ts +7 -2
  4. package/dist/Rules.js +34 -0
  5. package/dist/Rules.js.map +1 -1
  6. package/dist/index.d.ts +0 -2
  7. package/dist/index.js +3 -5
  8. package/dist/index.js.map +1 -1
  9. package/dist/options/EnumOption.d.ts +1 -2
  10. package/dist/options/EnumOption.js +2 -7
  11. package/dist/options/EnumOption.js.map +1 -1
  12. package/dist/options/PlayerIdSpec.d.ts +4 -1
  13. package/dist/options/PlayerIdSpec.js +15 -0
  14. package/dist/options/PlayerIdSpec.js.map +1 -1
  15. package/dist/options/providePlayerIds.js +9 -24
  16. package/dist/options/providePlayerIds.js.map +1 -1
  17. package/package.json +2 -2
  18. package/dist/ActionWithViews.d.ts +0 -11
  19. package/dist/ActionWithViews.js +0 -33
  20. package/dist/ActionWithViews.js.map +0 -1
  21. package/dist/GameOptions.d.ts +0 -3
  22. package/dist/GameOptions.js +0 -3
  23. package/dist/GameOptions.js.map +0 -1
  24. package/dist/PlayerAction.d.ts +0 -10
  25. package/dist/PlayerAction.js +0 -28
  26. package/dist/PlayerAction.js.map +0 -1
  27. package/dist/SecretAction.d.ts +0 -6
  28. package/dist/SecretAction.js +0 -8
  29. package/dist/SecretAction.js.map +0 -1
  30. package/dist/SecretMove.d.ts +0 -5
  31. package/dist/SecretMove.js +0 -9
  32. package/dist/SecretMove.js.map +0 -1
  33. package/dist/UndoCreator.d.ts +0 -4
  34. package/dist/UndoCreator.js +0 -3
  35. package/dist/UndoCreator.js.map +0 -1
  36. package/dist/_Game.d.ts +0 -17
  37. package/dist/_Game.js +0 -23
  38. package/dist/_Game.js.map +0 -1
  39. package/dist/_Rules.d.ts +0 -11
  40. package/dist/_Rules.js +0 -3
  41. package/dist/_Rules.js.map +0 -1
  42. package/dist/options/BooleanOption.d.ts +0 -6
  43. package/dist/options/BooleanOption.js +0 -3
  44. package/dist/options/BooleanOption.js.map +0 -1
  45. package/dist/options/BooleanOptionDescription.d.ts +0 -5
  46. package/dist/options/BooleanOptionDescription.js +0 -3
  47. package/dist/options/BooleanOptionDescription.js.map +0 -1
  48. package/dist/options/BooleanOptionSpec.d.ts +0 -4
  49. package/dist/options/BooleanOptionSpec.js +0 -3
  50. package/dist/options/BooleanOptionSpec.js.map +0 -1
  51. package/dist/options/EnumOptionSpec.d.ts +0 -6
  52. package/dist/options/EnumOptionSpec.js +0 -3
  53. package/dist/options/EnumOptionSpec.js.map +0 -1
  54. package/dist/options/GameOptions.d.ts +0 -6
  55. package/dist/options/GameOptions.js +0 -3
  56. package/dist/options/GameOptions.js.map +0 -1
  57. package/dist/options/GameOptionsOf.d.ts +0 -5
  58. package/dist/options/GameOptionsOf.js +0 -3
  59. package/dist/options/GameOptionsOf.js.map +0 -1
  60. package/dist/options/GameOptionsSpecs.d.ts +0 -5
  61. package/dist/options/GameOptionsSpecs.js +0 -3
  62. package/dist/options/GameOptionsSpecs.js.map +0 -1
  63. package/dist/options/IntegerOptionDescription.d.ts +0 -7
  64. package/dist/options/IntegerOptionDescription.js +0 -3
  65. package/dist/options/IntegerOptionDescription.js.map +0 -1
  66. package/dist/options/ListOptionDescription.d.ts +0 -8
  67. package/dist/options/ListOptionDescription.js +0 -3
  68. package/dist/options/ListOptionDescription.js.map +0 -1
  69. package/dist/options/OptionDescription.d.ts +0 -4
  70. package/dist/options/OptionDescription.js +0 -3
  71. package/dist/options/OptionDescription.js.map +0 -1
  72. package/dist/options/OptionDescriptionOf.d.ts +0 -4
  73. package/dist/options/OptionDescriptionOf.js +0 -3
  74. package/dist/options/OptionDescriptionOf.js.map +0 -1
  75. package/dist/options/OptionSpec.d.ts +0 -4
  76. package/dist/options/OptionSpec.js +0 -3
  77. package/dist/options/OptionSpec.js.map +0 -1
  78. package/dist/options/OptionType.d.ts +0 -6
  79. package/dist/options/OptionType.js +0 -10
  80. package/dist/options/OptionType.js.map +0 -1
  81. package/dist/options/OptionsDescription.d.ts +0 -23
  82. package/dist/options/OptionsDescription.js +0 -53
  83. package/dist/options/OptionsDescription.js.map +0 -1
  84. package/dist/options/PlayerIdsSpec.d.ts +0 -7
  85. package/dist/options/PlayerIdsSpec.js +0 -3
  86. package/dist/options/PlayerIdsSpec.js.map +0 -1
  87. package/dist/options/getPlayerName.d.ts +0 -4
  88. package/dist/options/getPlayerName.js +0 -16
  89. package/dist/options/getPlayerName.js.map +0 -1
package/dist/Dummy.js CHANGED
@@ -12,15 +12,7 @@ var Dummy = /** @class */ (function () {
12
12
  };
13
13
  Dummy.prototype.getLegalMoves = function (state, playerId) {
14
14
  var rules = new this.Rules(state);
15
- if (isSequentialGame(rules)) {
16
- if (rules.getActivePlayer() === playerId) {
17
- return rules.getLegalMoves();
18
- }
19
- else {
20
- return [];
21
- }
22
- }
23
- else if (hasLegalMoves(rules)) {
15
+ if (rules.getLegalMoves) {
24
16
  return rules.getLegalMoves(playerId);
25
17
  }
26
18
  else {
@@ -31,12 +23,4 @@ var Dummy = /** @class */ (function () {
31
23
  return Dummy;
32
24
  }());
33
25
  exports.default = Dummy;
34
- function isSequentialGame(rules) {
35
- var game = rules;
36
- return typeof game.getActivePlayer === 'function' && typeof game.getLegalMoves === 'function';
37
- }
38
- function hasLegalMoves(rules) {
39
- var game = rules;
40
- return typeof game.getLegalMoves === 'function';
41
- }
42
26
  //# sourceMappingURL=Dummy.js.map
package/dist/Dummy.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Dummy.js","sourceRoot":"","sources":["../src/Dummy.ts"],"names":[],"mappings":";;AAKA;IAIE,eAAY,KAA0C;QACpD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IACpB,CAAC;IAED,6BAAa,GAAb,UAAc,KAAY,EAAE,QAAkB;QAC5C,IAAI,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;QAC/C,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QAC7C,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;IAC3E,CAAC;IAED,6BAAa,GAAb,UAAc,KAAY,EAAE,QAAkB;QAC5C,IAAM,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QACnC,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE;YAC3B,IAAI,KAAK,CAAC,eAAe,EAAE,KAAK,QAAQ,EAAE;gBACxC,OAAO,KAAK,CAAC,aAAa,EAAE,CAAA;aAC7B;iBAAM;gBACL,OAAO,EAAE,CAAA;aACV;SACF;aAAM,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE;YAC/B,OAAO,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;SACrC;aAAM;YACL,OAAO,CAAC,KAAK,CAAC,+DAA+D,CAAC,CAAA;YAC9E,OAAO,EAAE,CAAA;SACV;IACH,CAAC;IACH,YAAC;AAAD,CAAC,AA7BD,IA6BC;;AAED,SAAS,gBAAgB,CAAwB,KAAmC;IAClF,IAAM,IAAI,GAAG,KAA8C,CAAA;IAC3D,OAAO,OAAO,IAAI,CAAC,eAAe,KAAK,UAAU,IAAI,OAAO,IAAI,CAAC,aAAa,KAAK,UAAU,CAAA;AAC/F,CAAC;AAED,SAAS,aAAa,CAAwB,KAAmC;IAC/E,IAAM,IAAI,GAAG,KAAgD,CAAA;IAC7D,OAAO,OAAO,IAAI,CAAC,aAAa,KAAK,UAAU,CAAA;AACjD,CAAC"}
1
+ {"version":3,"file":"Dummy.js","sourceRoot":"","sources":["../src/Dummy.ts"],"names":[],"mappings":";;AAEA;IAIE,eAAY,KAA0C;QACpD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IACpB,CAAC;IAED,6BAAa,GAAb,UAAc,KAAY,EAAE,QAAkB;QAC5C,IAAI,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;QAC/C,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QAC7C,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;IAC3E,CAAC;IAED,6BAAa,GAAb,UAAc,KAAY,EAAE,QAAkB;QAC5C,IAAM,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QACnC,IAAI,KAAK,CAAC,aAAa,EAAE;YACvB,OAAO,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;SACrC;aAAM;YACL,OAAO,CAAC,KAAK,CAAC,+DAA+D,CAAC,CAAA;YAC9E,OAAO,EAAE,CAAA;SACV;IACH,CAAC;IACH,YAAC;AAAD,CAAC,AAvBD,IAuBC"}
package/dist/Rules.d.ts CHANGED
@@ -1,6 +1,11 @@
1
1
  import Game from './Game';
2
- export default interface Rules<State, Move = string, PlayerId = number> extends Game<State, Move> {
2
+ export default abstract class Rules<State = any, Move = any, PlayerId = any> implements Game<State, Move> {
3
+ state: State;
4
+ protected constructor(game: State);
3
5
  isTurnToPlay(playerId: PlayerId): boolean;
6
+ getActivePlayer?(): PlayerId | undefined;
4
7
  isLegalMove(playerId: PlayerId, move: Move): boolean;
5
- isOver(): boolean;
8
+ getLegalMoves?(playerId: PlayerId): Move[];
9
+ abstract play(move: Move): void;
10
+ isOver(playerIds: PlayerId[]): boolean;
6
11
  }
package/dist/Rules.js CHANGED
@@ -1,3 +1,37 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ var fast_deep_equal_1 = __importDefault(require("fast-deep-equal"));
7
+ var Eliminations_1 = require("./Eliminations");
8
+ var Rules = /** @class */ (function () {
9
+ function Rules(game) {
10
+ this.state = game;
11
+ }
12
+ Rules.prototype.isTurnToPlay = function (playerId) {
13
+ if (!this.getActivePlayer) {
14
+ throw new Error('You must either implement "isTurnToPlay" or "getActivePlayer" if only one player is active at a time');
15
+ }
16
+ return playerId === this.getActivePlayer();
17
+ };
18
+ Rules.prototype.isLegalMove = function (playerId, move) {
19
+ if (!this.getLegalMoves) {
20
+ throw new Error('You must either implement "isLegalMove" or "getLegalMoves');
21
+ }
22
+ if (this.getLegalMoves(playerId).some(function (legalMove) { return (0, fast_deep_equal_1.default)(move, legalMove); })) {
23
+ return true;
24
+ }
25
+ if ((0, Eliminations_1.hasEliminations)(this) && this.giveUpMove) {
26
+ return (0, fast_deep_equal_1.default)(move, this.giveUpMove(playerId));
27
+ }
28
+ return false;
29
+ };
30
+ Rules.prototype.isOver = function (playerIds) {
31
+ var _this = this;
32
+ return !playerIds.some(function (playerId) { return _this.isTurnToPlay(playerId); });
33
+ };
34
+ return Rules;
35
+ }());
36
+ exports.default = Rules;
3
37
  //# sourceMappingURL=Rules.js.map
package/dist/Rules.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Rules.js","sourceRoot":"","sources":["../src/Rules.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"Rules.js","sourceRoot":"","sources":["../src/Rules.ts"],"names":[],"mappings":";;;;;AACA,oEAAmC;AACnC,+CAA8C;AAE9C;IAGE,eAAsB,IAAW;QAC/B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;IACnB,CAAC;IAED,4BAAY,GAAZ,UAAa,QAAkB;QAC7B,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACzB,MAAM,IAAI,KAAK,CAAC,sGAAsG,CAAC,CAAA;SACxH;QACD,OAAO,QAAQ,KAAK,IAAI,CAAC,eAAe,EAAE,CAAA;IAC5C,CAAC;IAID,2BAAW,GAAX,UAAY,QAAkB,EAAE,IAAU;QACxC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACvB,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAA;SAC7E;QACD,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,UAAA,SAAS,IAAI,OAAA,IAAA,yBAAK,EAAC,IAAI,EAAE,SAAS,CAAC,EAAtB,CAAsB,CAAC,EAAE;YAC1E,OAAO,IAAI,CAAA;SACZ;QACD,IAAI,IAAA,8BAAe,EAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE;YAC5C,OAAO,IAAA,yBAAK,EAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAA;SAC9C;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IAMD,sBAAM,GAAN,UAAO,SAAqB;QAA5B,iBAEC;QADC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,UAAA,QAAQ,IAAI,OAAA,KAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAA3B,CAA2B,CAAC,CAAA;IACjE,CAAC;IACH,YAAC;AAAD,CAAC,AApCD,IAoCC"}
package/dist/index.d.ts CHANGED
@@ -1,8 +1,6 @@
1
1
  export { default as Game } from './Game';
2
2
  export * from './Game';
3
3
  export { default as Rules } from './Rules';
4
- export { default as SequentialGame } from './SequentialGame';
5
- export { default as SimultaneousGame } from './SimultaneousGame';
6
4
  export { default as GameCreator } from './GameCreator';
7
5
  export { default as RulesCreator } from './RulesCreator';
8
6
  export { default as Action } from './Action';
package/dist/index.js CHANGED
@@ -17,12 +17,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
17
17
  return (mod && mod.__esModule) ? mod : { "default": mod };
18
18
  };
19
19
  Object.defineProperty(exports, "__esModule", { value: true });
20
- exports.Dummy = exports.SimultaneousGame = exports.SequentialGame = void 0;
20
+ exports.Dummy = exports.Rules = void 0;
21
21
  __exportStar(require("./Game"), exports);
22
- var SequentialGame_1 = require("./SequentialGame");
23
- Object.defineProperty(exports, "SequentialGame", { enumerable: true, get: function () { return __importDefault(SequentialGame_1).default; } });
24
- var SimultaneousGame_1 = require("./SimultaneousGame");
25
- Object.defineProperty(exports, "SimultaneousGame", { enumerable: true, get: function () { return __importDefault(SimultaneousGame_1).default; } });
22
+ var Rules_1 = require("./Rules");
23
+ Object.defineProperty(exports, "Rules", { enumerable: true, get: function () { return __importDefault(Rules_1).default; } });
26
24
  __exportStar(require("./Action"), exports);
27
25
  __exportStar(require("./IncompleteInformation"), exports);
28
26
  __exportStar(require("./Undo"), exports);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AACA,yCAAsB;AAEtB,mDAA0D;AAAlD,iIAAA,OAAO,OAAkB;AACjC,uDAA8D;AAAtD,qIAAA,OAAO,OAAoB;AAKnC,2CAAwB;AAGxB,0DAAuC;AAGvC,yCAAsB;AAGtB,gDAA6B;AAG7B,iDAA8B;AAG9B,iDAA8B;AAG9B,8CAA2B;AAG3B,iCAAwC;AAAhC,+GAAA,OAAO,OAAS;AAExB,4CAAyB;AACzB,0CAAuB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AACA,yCAAsB;AACtB,iCAAwC;AAAhC,+GAAA,OAAO,OAAS;AAKxB,2CAAwB;AAGxB,0DAAuC;AAGvC,yCAAsB;AAGtB,gDAA6B;AAG7B,iDAA8B;AAG9B,iDAA8B;AAG9B,8CAA2B;AAG3B,iCAAwC;AAAhC,+GAAA,OAAO,OAAS;AAExB,4CAAyB;AACzB,0CAAuB"}
@@ -1,8 +1,7 @@
1
1
  import Option from './Option';
2
2
  declare type EnumOption<T = any> = Option & {
3
- values: T[] | ((players: number) => T[]);
3
+ values: T[];
4
4
  valueSpec: (value: T) => Option;
5
5
  };
6
6
  export default EnumOption;
7
7
  export declare function isEnumOption<T = any>(option: Option): option is EnumOption<T>;
8
- export declare function getEnumOptionValues<T>(enumOption: EnumOption<T>, players: number): T[];
@@ -1,13 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getEnumOptionValues = exports.isEnumOption = void 0;
3
+ exports.isEnumOption = void 0;
4
4
  function isEnumOption(option) {
5
- var enumOption = option;
6
- return Array.isArray(enumOption.values) || typeof enumOption.values === 'function';
5
+ return Array.isArray(option.values);
7
6
  }
8
7
  exports.isEnumOption = isEnumOption;
9
- function getEnumOptionValues(enumOption, players) {
10
- return Array.isArray(enumOption.values) ? enumOption.values : enumOption.values(players);
11
- }
12
- exports.getEnumOptionValues = getEnumOptionValues;
13
8
  //# sourceMappingURL=EnumOption.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EnumOption.js","sourceRoot":"","sources":["../../src/options/EnumOption.ts"],"names":[],"mappings":";;;AASA,SAAgB,YAAY,CAAU,MAAc;IAClD,IAAM,UAAU,GAAG,MAAoB,CAAA;IACvC,OAAO,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,OAAO,UAAU,CAAC,MAAM,KAAK,UAAU,CAAA;AACpF,CAAC;AAHD,oCAGC;AAED,SAAgB,mBAAmB,CAAI,UAAyB,EAAE,OAAe;IAC/E,OAAO,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;AAC1F,CAAC;AAFD,kDAEC"}
1
+ {"version":3,"file":"EnumOption.js","sourceRoot":"","sources":["../../src/options/EnumOption.ts"],"names":[],"mappings":";;;AASA,SAAgB,YAAY,CAAU,MAAc;IAClD,OAAO,KAAK,CAAC,OAAO,CAAE,MAAqB,CAAC,MAAM,CAAC,CAAA;AACrD,CAAC;AAFD,oCAEC"}
@@ -1,5 +1,8 @@
1
1
  import EnumOption from './EnumOption';
2
2
  declare type PlayerIdSpec<Id> = EnumOption<Id> & {
3
- mandatory?: Id | Id[] | false | null | ((players: number) => Id | Id[] | false | null);
3
+ mandatory?: (players: number) => Id[];
4
+ unavailable?: (players: number) => Id[];
4
5
  };
5
6
  export default PlayerIdSpec;
7
+ export declare function getMandatoryIds<Id>(spec: PlayerIdSpec<Id>, players: number): Id[];
8
+ export declare function getAvailableIds<Id>(spec: PlayerIdSpec<Id>, players: number): Id[];
@@ -1,3 +1,18 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getAvailableIds = exports.getMandatoryIds = void 0;
4
+ function getMandatoryIds(spec, players) {
5
+ return spec.mandatory ? spec.mandatory(players) : [];
6
+ }
7
+ exports.getMandatoryIds = getMandatoryIds;
8
+ function getAvailableIds(spec, players) {
9
+ if (spec.unavailable) {
10
+ var unavailableIds_1 = spec.unavailable(players);
11
+ return spec.values.filter(function (id) { return !unavailableIds_1.includes(id); });
12
+ }
13
+ else {
14
+ return spec.values;
15
+ }
16
+ }
17
+ exports.getAvailableIds = getAvailableIds;
3
18
  //# sourceMappingURL=PlayerIdSpec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PlayerIdSpec.js","sourceRoot":"","sources":["../../src/options/PlayerIdSpec.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"PlayerIdSpec.js","sourceRoot":"","sources":["../../src/options/PlayerIdSpec.ts"],"names":[],"mappings":";;;AASA,SAAgB,eAAe,CAAK,IAAsB,EAAE,OAAe;IACzE,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;AACtD,CAAC;AAFD,0CAEC;AAED,SAAgB,eAAe,CAAK,IAAsB,EAAE,OAAe;IACzE,IAAI,IAAI,CAAC,WAAW,EAAE;QACpB,IAAM,gBAAc,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;QAChD,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAA,EAAE,IAAI,OAAA,CAAC,gBAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,EAA5B,CAA4B,CAAC,CAAA;KAC9D;SAAM;QACL,OAAO,IAAI,CAAC,MAAM,CAAA;KACnB;AACH,CAAC;AAPD,0CAOC"}
@@ -12,42 +12,27 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
12
12
  return (mod && mod.__esModule) ? mod : { "default": mod };
13
13
  };
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
- var index_1 = require("./index");
16
15
  var isWithPlayerIdOptions_1 = __importDefault(require("./isWithPlayerIdOptions"));
16
+ var PlayerIdSpec_1 = require("./PlayerIdSpec");
17
17
  function providePlayerIds(players, optionsSpec) {
18
- var numberOfPlayers = typeof players === 'number' ? players : players.length;
19
- var potentialIds = ((0, isWithPlayerIdOptions_1.default)(optionsSpec) ?
20
- (0, index_1.getEnumOptionValues)(optionsSpec.players.id, numberOfPlayers)
21
- : Array.from(Array(numberOfPlayers).keys()).map(function (id) { return id + 1; }));
22
- var mandatoryIds = getMandatoryIds(numberOfPlayers, optionsSpec);
23
18
  var result = typeof players === 'number' ? Array(players).fill(null) : __spreadArray([], players, true);
19
+ var numberOfPlayers = typeof players === 'number' ? players : players.length;
20
+ var mandatoryIds = optionsSpec && (0, isWithPlayerIdOptions_1.default)(optionsSpec) ? (0, PlayerIdSpec_1.getMandatoryIds)(optionsSpec.players.id, numberOfPlayers) : [];
24
21
  while (mandatoryIds.some(function (id) { return !result.includes(id); })) {
25
22
  var mandatoryId = mandatoryIds.find(function (id) { return !result.includes(id); });
26
23
  var potentialIndexes = result.map(function (id, index) { return ({ id: id, index: index }); }).filter(function (r) { return !mandatoryIds.includes(r.id); }).map(function (r) { return r.index; });
27
24
  var index = potentialIndexes[Math.floor(Math.random() * potentialIndexes.length)];
28
25
  result[index] = mandatoryId;
29
26
  }
27
+ var potentialIds = (optionsSpec && (0, isWithPlayerIdOptions_1.default)(optionsSpec) ? (0, PlayerIdSpec_1.getAvailableIds)(optionsSpec.players.id, numberOfPlayers)
28
+ : Array.from(Array(numberOfPlayers).keys()).map(function (id) { return id + 1; }));
30
29
  var remainingIds = potentialIds.filter(function (id) { return !result.includes(id); });
31
- while (result.includes(null)) {
32
- var idIndex = Math.floor(Math.random() * remainingIds.length);
33
- var id = remainingIds.splice(idIndex, 1);
34
- result[result.indexOf(null)] = id[0];
30
+ for (var i = 0; i < result.length; i++) {
31
+ if (result[i] === null || !potentialIds.includes(result[i])) {
32
+ result[i] = remainingIds.splice(Math.floor(Math.random() * remainingIds.length), 1)[0];
33
+ }
35
34
  }
36
35
  return result;
37
36
  }
38
37
  exports.default = providePlayerIds;
39
- function getMandatoryIds(players, optionsSpec) {
40
- var _a, _b;
41
- if (!(0, isWithPlayerIdOptions_1.default)(optionsSpec))
42
- return [];
43
- var mandatory = (_b = (_a = optionsSpec === null || optionsSpec === void 0 ? void 0 : optionsSpec.players) === null || _a === void 0 ? void 0 : _a.id) === null || _b === void 0 ? void 0 : _b.mandatory;
44
- if (typeof mandatory === 'function') {
45
- mandatory = mandatory(players);
46
- }
47
- if (!mandatory)
48
- return [];
49
- if (Array.isArray(mandatory))
50
- return mandatory;
51
- return [mandatory];
52
- }
53
38
  //# sourceMappingURL=providePlayerIds.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"providePlayerIds.js","sourceRoot":"","sources":["../../src/options/providePlayerIds.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"providePlayerIds.js","sourceRoot":"","sources":["../../src/options/providePlayerIds.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,kFAA2D;AAE3D,+CAA+D;AAS/D,SAAwB,gBAAgB,CAAc,OAA+B,EAAE,WAA8B;IACnH,IAAM,MAAM,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAK,OAAO,OAAC,CAAA;IAErF,IAAM,eAAe,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAA;IAE9E,IAAM,YAAY,GAAG,WAAW,IAAI,IAAA,+BAAqB,EAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAA,8BAAe,EAAC,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IACtI,OAAO,YAAY,CAAC,IAAI,CAAC,UAAA,EAAE,IAAI,OAAA,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,EAApB,CAAoB,CAAC,EAAE;QACpD,IAAM,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,UAAA,EAAE,IAAI,OAAA,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,EAApB,CAAoB,CAAE,CAAA;QAClE,IAAM,gBAAgB,GAAG,MAAM,CAAC,GAAG,CAAC,UAAC,EAAE,EAAE,KAAK,IAAK,OAAA,CAAC,EAAC,EAAE,IAAA,EAAE,KAAK,OAAA,EAAC,CAAC,EAAb,CAAa,CAAC,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAA5B,CAA4B,CAAC,CAAC,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,KAAK,EAAP,CAAO,CAAC,CAAA;QAC7H,IAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAA;QACnF,MAAM,CAAC,KAAK,CAAC,GAAG,WAAW,CAAA;KAC5B;IAED,IAAM,YAAY,GAAG,CAAC,WAAW,IAAI,IAAA,+BAAqB,EAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAA,8BAAe,EAAC,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE,eAAe,CAAC;QAChI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,UAAA,EAAE,IAAI,OAAA,EAAE,GAAG,CAAC,EAAN,CAAM,CAAC,CAAS,CAAA;IACxE,IAAM,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,UAAA,EAAE,IAAI,OAAA,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,EAApB,CAAoB,CAAC,CAAA;IACpE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACtC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;YAC3D,MAAM,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;SACvF;KACF;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAvBD,mCAuBC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gamepark/rules-api",
3
- "version": "5.15.0",
3
+ "version": "5.19.0",
4
4
  "description": "API to implement the rules of a board game",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -27,5 +27,5 @@
27
27
  "devDependencies": {
28
28
  "i18next": ">=21.3.0"
29
29
  },
30
- "gitHead": "cc44eab343657650898ac13e9c171858a2df2f2c"
30
+ "gitHead": "1c0efa27e6557111a721fd1ad0c95ac1394a3543"
31
31
  }
@@ -1,11 +0,0 @@
1
- import { IncompleteInformation } from './index';
2
- import PlayerAction from './PlayerAction';
3
- declare type ActionWithViews<Move, MoveView, PlayerId> = {
4
- action: PlayerAction<Move, PlayerId>;
5
- views: {
6
- recipient?: PlayerId;
7
- action: PlayerAction<MoveView, PlayerId>;
8
- }[];
9
- };
10
- export default ActionWithViews;
11
- export declare function playActionWithViews<State, View, Move, MoveView, PlayerId>(game: IncompleteInformation<State, View, Move, MoveView, PlayerId>, move: Move, playerId: PlayerId, recipients: PlayerId[]): ActionWithViews<Move, MoveView, PlayerId>;
@@ -1,33 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.playActionWithViews = void 0;
4
- var index_1 = require("./index");
5
- function playActionWithViews(game, move, playerId, recipients) {
6
- var actionWithView = {
7
- action: { playerId: playerId, move: move, consequences: [] },
8
- views: []
9
- };
10
- game.play(JSON.parse(JSON.stringify(move)));
11
- // Prepare action view for each player
12
- for (var _i = 0, recipients_1 = recipients; _i < recipients_1.length; _i++) {
13
- var recipient = recipients_1[_i];
14
- actionWithView.views.push({ recipient: recipient, action: { playerId: playerId, move: index_1.getMoveView(game, move, recipient), consequences: [] } });
15
- }
16
- // Prepare action view for spectators
17
- actionWithView.views.push({ action: { playerId: playerId, move: index_1.getMoveView(game, move), consequences: [] } });
18
- index_1.loopWithFuse(function () {
19
- var consequence = game.getAutomaticMove ? game.getAutomaticMove() : undefined;
20
- if (consequence) {
21
- game.play(JSON.parse(JSON.stringify(consequence)));
22
- actionWithView.action.consequences.push(consequence);
23
- for (var _i = 0, _a = actionWithView.views; _i < _a.length; _i++) {
24
- var view = _a[_i];
25
- view.action.consequences.push(index_1.getMoveView(game, consequence, view.recipient));
26
- }
27
- }
28
- return consequence !== undefined;
29
- }, { errorFn: function () { return new Error("Infinite loop detected while applying automatic moves after " + move + " in " + game.state); } });
30
- return actionWithView;
31
- }
32
- exports.playActionWithViews = playActionWithViews;
33
- //# sourceMappingURL=ActionWithViews.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ActionWithViews.js","sourceRoot":"","sources":["../src/ActionWithViews.ts"],"names":[],"mappings":";;;AAAA,iCAAwE;AAaxE,SAAgB,mBAAmB,CACjC,IAAkE,EAAE,IAAU,EAAE,QAAkB,EAAE,UAAsB;IAE1H,IAAM,cAAc,GAA8C;QAChE,MAAM,EAAE,EAAC,QAAQ,UAAA,EAAE,IAAI,MAAA,EAAE,YAAY,EAAE,EAAE,EAAC;QAC1C,KAAK,EAAE,EAAE;KACV,CAAA;IACD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAE3C,sCAAsC;IACtC,KAAwB,UAAU,EAAV,yBAAU,EAAV,wBAAU,EAAV,IAAU,EAAE;QAA/B,IAAM,SAAS,mBAAA;QAClB,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,EAAC,SAAS,WAAA,EAAE,MAAM,EAAE,EAAC,QAAQ,UAAA,EAAE,IAAI,EAAE,mBAAW,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,YAAY,EAAE,EAAE,EAAC,EAAC,CAAC,CAAA;KACvH;IACD,qCAAqC;IACrC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,EAAC,QAAQ,UAAA,EAAE,IAAI,EAAE,mBAAW,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,YAAY,EAAE,EAAE,EAAC,EAAC,CAAC,CAAA;IAEhG,oBAAY,CAAC;QACX,IAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;QAC/E,IAAI,WAAW,EAAE;YACf,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;YAClD,cAAc,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;YACpD,KAAmB,UAAoB,EAApB,KAAA,cAAc,CAAC,KAAK,EAApB,cAAoB,EAApB,IAAoB,EAAE;gBAApC,IAAM,IAAI,SAAA;gBACb,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,mBAAW,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAA;aAC9E;SACF;QACD,OAAO,WAAW,KAAK,SAAS,CAAA;IAClC,CAAC,EAAE,EAAC,OAAO,EAAE,cAAM,OAAA,IAAI,KAAK,CAAC,iEAA+D,IAAI,YAAO,IAAI,CAAC,KAAO,CAAC,EAAjG,CAAiG,EAAC,CAAC,CAAA;IACtH,OAAO,cAAc,CAAA;AACvB,CAAC;AA5BD,kDA4BC"}
@@ -1,3 +0,0 @@
1
- export default interface GameOptions<PlayerId = number> {
2
- playerIds?: PlayerId[] | ((players: number) => PlayerId[]);
3
- }
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=GameOptions.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"GameOptions.js","sourceRoot":"","sources":["../src/GameOptions.ts"],"names":[],"mappings":""}
@@ -1,10 +0,0 @@
1
- import Action from './Action';
2
- import Game from './Game';
3
- declare type PlayerAction<Move = any, PlayerId = any> = Action<Move> & {
4
- playerId: PlayerId;
5
- };
6
- export default PlayerAction;
7
- export declare function playAction<State, Move>(game: Game<State, Move>, move: Move): Action<Move>;
8
- export declare function playAction<State, Move, PlayerId>(game: Game<State, Move>, move: Move, playerId: PlayerId): PlayerAction<Move, PlayerId>;
9
- export declare function replayAction<State, Move>(game: Game<State, Move>, action: Action<Move>): void;
10
- export declare function replayActions<State, Move>(game: Game<State, Move>, actions: Action<Move>[]): void;
@@ -1,28 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.replayActions = exports.replayAction = exports.playAction = void 0;
4
- var Game_1 = require("./Game");
5
- function playAction(game, move, playerId) {
6
- var action = { playerId: playerId, move: move, consequences: [] };
7
- game.play(JSON.parse(JSON.stringify(move)));
8
- Game_1.loopWithFuse(function () {
9
- var consequence = game.getAutomaticMove ? game.getAutomaticMove() : undefined;
10
- if (consequence) {
11
- game.play(JSON.parse(JSON.stringify(consequence)));
12
- action.consequences.push(consequence);
13
- }
14
- return consequence !== undefined;
15
- }, { errorFn: function () { return new Error("Infinite loop detected while applying automatic moves after " + move + " in " + game.state); } });
16
- return action;
17
- }
18
- exports.playAction = playAction;
19
- function replayAction(game, action) {
20
- game.play(JSON.parse(JSON.stringify(action.move)));
21
- action.consequences.forEach(function (move) { return game.play(JSON.parse(JSON.stringify(move))); });
22
- }
23
- exports.replayAction = replayAction;
24
- function replayActions(game, actions) {
25
- actions.forEach(function (action) { return replayAction(game, action); });
26
- }
27
- exports.replayActions = replayActions;
28
- //# sourceMappingURL=PlayerAction.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PlayerAction.js","sourceRoot":"","sources":["../src/PlayerAction.ts"],"names":[],"mappings":";;;AACA,+BAAyC;AAUzC,SAAgB,UAAU,CAAwB,IAAuB,EAAE,IAAU,EAAE,QAAmB;IACxG,IAAM,MAAM,GAAgD,EAAC,QAAQ,UAAA,EAAE,IAAI,MAAA,EAAE,YAAY,EAAE,EAAE,EAAC,CAAA;IAC9F,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC3C,mBAAY,CAAC;QACX,IAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;QAC/E,IAAI,WAAW,EAAE;YACf,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;YAClD,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;SACtC;QACD,OAAO,WAAW,KAAK,SAAS,CAAA;IAClC,CAAC,EAAE,EAAC,OAAO,EAAE,cAAM,OAAA,IAAI,KAAK,CAAC,iEAA+D,IAAI,YAAO,IAAI,CAAC,KAAO,CAAC,EAAjG,CAAiG,EAAC,CAAC,CAAA;IACtH,OAAO,MAAM,CAAA;AACf,CAAC;AAZD,gCAYC;AAED,SAAgB,YAAY,CAAc,IAAuB,EAAE,MAAoB;IACrF,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAClD,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAA3C,CAA2C,CAAC,CAAA;AAClF,CAAC;AAHD,oCAGC;AAED,SAAgB,aAAa,CAAc,IAAuB,EAAE,OAAuB;IACzF,OAAO,CAAC,OAAO,CAAC,UAAA,MAAM,IAAI,OAAA,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,EAA1B,CAA0B,CAAC,CAAA;AACvD,CAAC;AAFD,sCAEC"}
@@ -1,6 +0,0 @@
1
- import Action, { ActionView } from './Action';
2
- declare type SecretAction<Move = any, MoveView = Move, PlayerId = any> = Action<Move, PlayerId> & {
3
- secrets: ActionView<MoveView, PlayerId>[];
4
- };
5
- export default SecretAction;
6
- export declare function isSecretAction(action: Action): action is SecretAction;
@@ -1,8 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isSecretAction = void 0;
4
- function isSecretAction(action) {
5
- return Array.isArray(action.secrets);
6
- }
7
- exports.isSecretAction = isSecretAction;
8
- //# sourceMappingURL=SecretAction.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SecretAction.js","sourceRoot":"","sources":["../src/SecretAction.ts"],"names":[],"mappings":";;;AAQA,SAAgB,cAAc,CAAC,MAAc;IAC3C,OAAO,KAAK,CAAC,OAAO,CAAE,MAAuB,CAAC,OAAO,CAAC,CAAA;AACxD,CAAC;AAFD,wCAEC"}
@@ -1,5 +0,0 @@
1
- import Rules from './Rules';
2
- export default interface SecretMove<State, Move = string, PlayerId = number> extends Rules<State, Move, PlayerId> {
3
- keepMoveSecret(move: Move): boolean;
4
- }
5
- export declare function hasSecretMove<State, Move, PlayerId>(rules: Rules<State, Move, PlayerId>): rules is SecretMove<State, Move, PlayerId>;
@@ -1,9 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.hasSecretMove = void 0;
4
- function hasSecretMove(rules) {
5
- var game = rules;
6
- return typeof game.keepMoveSecret === 'function';
7
- }
8
- exports.hasSecretMove = hasSecretMove;
9
- //# sourceMappingURL=SecretMove.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SecretMove.js","sourceRoot":"","sources":["../src/SecretMove.ts"],"names":[],"mappings":";;;AAMA,SAAgB,aAAa,CAAwB,KAAmC;IACtF,IAAM,IAAI,GAAG,KAA0C,CAAA;IACvD,OAAO,OAAO,IAAI,CAAC,cAAc,KAAK,UAAU,CAAA;AAClD,CAAC;AAHD,sCAGC"}
@@ -1,4 +0,0 @@
1
- import Undo from './Undo';
2
- export default interface UndoCreator<State, Move = string, PlayerId = number> {
3
- new (state: State): Undo<State, Move, PlayerId>;
4
- }
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=UndoCreator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"UndoCreator.js","sourceRoot":"","sources":["../src/UndoCreator.ts"],"names":[],"mappings":""}
package/dist/_Game.d.ts DELETED
@@ -1,17 +0,0 @@
1
- import Action from './Action';
2
- import _Rules from './_Rules';
3
- export default abstract class _Game<State = any, Move = any, PlayerId = any> implements _Rules<Move, PlayerId> {
4
- state: State;
5
- protected constructor(game: State);
6
- abstract getPlayerIds(): PlayerId[];
7
- abstract isActive(playerId: PlayerId): boolean;
8
- abstract getActivePlayers(): PlayerId[];
9
- abstract isLegalMove(playerId: PlayerId, move: Move): boolean;
10
- abstract getLegalMoves?(playerId: PlayerId): Move[];
11
- abstract play(move: Move, playerId?: PlayerId): void;
12
- getAutomaticMove(): Move | void;
13
- canUndo(_action: Action<Move, PlayerId>, _consecutiveActions: Action<Move, PlayerId>[]): boolean;
14
- static getPlayerName(playerId: any, t: (name: string, values?: {
15
- [key: string]: any;
16
- }) => string): string;
17
- }
package/dist/_Game.js DELETED
@@ -1,23 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- var _Game = /** @class */ (function () {
4
- function _Game(game) {
5
- this.state = game;
6
- }
7
- _Game.prototype.getAutomaticMove = function () {
8
- };
9
- _Game.prototype.canUndo = function (_action, _consecutiveActions) {
10
- return false;
11
- };
12
- _Game.getPlayerName = function (playerId, t) {
13
- if (typeof playerId === 'number') {
14
- return t('Player {number}', { number: playerId });
15
- }
16
- else {
17
- return t(playerId);
18
- }
19
- };
20
- return _Game;
21
- }());
22
- exports.default = _Game;
23
- //# sourceMappingURL=_Game.js.map
package/dist/_Game.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"_Game.js","sourceRoot":"","sources":["../src/_Game.ts"],"names":[],"mappings":";;AAGA;IAGE,eAAsB,IAAW;QAC/B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;IACnB,CAAC;IAcD,gCAAgB,GAAhB;IACA,CAAC;IAED,uBAAO,GAAP,UAAQ,OAA+B,EAAE,mBAA6C;QACpF,OAAO,KAAK,CAAA;IACd,CAAC;IAEM,mBAAa,GAApB,UAAqB,QAAa,EAAE,CAA4D;QAC9F,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;YAChC,OAAO,CAAC,CAAC,iBAAiB,EAAE,EAAC,MAAM,EAAE,QAAQ,EAAC,CAAC,CAAA;SAChD;aAAM;YACL,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAA;SACnB;IACH,CAAC;IACH,YAAC;AAAD,CAAC,AAjCD,IAiCC"}
package/dist/_Rules.d.ts DELETED
@@ -1,11 +0,0 @@
1
- import Action from './Action';
2
- export default interface _Rules<Move = any, PlayerId = any> {
3
- getPlayerIds(): PlayerId[];
4
- getActivePlayers(): PlayerId[];
5
- isActive(playerId: PlayerId): boolean;
6
- isLegalMove(playerId: PlayerId, move: Move): boolean;
7
- getLegalMoves?(playerId: PlayerId): Move[];
8
- play(move: Move, playerId?: PlayerId): void;
9
- getAutomaticMove(): Move | void;
10
- canUndo(_action: Action<Move, PlayerId>, _consecutiveActions: Action<Move, PlayerId>[]): boolean;
11
- }
package/dist/_Rules.js DELETED
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=_Rules.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"_Rules.js","sourceRoot":"","sources":["../src/_Rules.ts"],"names":[],"mappings":""}
@@ -1,6 +0,0 @@
1
- import { TFunction } from 'i18next';
2
- declare type BooleanOption = {
3
- label: (t: TFunction) => string;
4
- help?: (t: TFunction) => string;
5
- };
6
- export default BooleanOption;
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=BooleanOption.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BooleanOption.js","sourceRoot":"","sources":["../../src/options/BooleanOption.ts"],"names":[],"mappings":""}
@@ -1,5 +0,0 @@
1
- import OptionDescription from './OptionDescription';
2
- import OptionType from './OptionType';
3
- export default interface BooleanOptionDescription extends OptionDescription {
4
- type: typeof OptionType.BOOLEAN;
5
- }
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=BooleanOptionDescription.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BooleanOptionDescription.js","sourceRoot":"","sources":["../../src/options/BooleanOptionDescription.ts"],"names":[],"mappings":""}
@@ -1,4 +0,0 @@
1
- import { TFunction } from 'i18next';
2
- export default interface BooleanOptionSpec {
3
- label: (t: TFunction) => string;
4
- }
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=BooleanOptionSpec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BooleanOptionSpec.js","sourceRoot":"","sources":["../../src/options/BooleanOptionSpec.ts"],"names":[],"mappings":""}
@@ -1,6 +0,0 @@
1
- import { TFunction } from 'i18next';
2
- export default interface EnumOptionSpec<Enum = any> {
3
- label: (t: TFunction) => string;
4
- values: Enum[];
5
- valueLabel: (value: Enum, t: TFunction) => string;
6
- }
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=EnumOptionSpec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"EnumOptionSpec.js","sourceRoot":"","sources":["../../src/options/EnumOptionSpec.ts"],"names":[],"mappings":""}
@@ -1,6 +0,0 @@
1
- declare type GameOptions<Options = {}, PlayerOptions = {
2
- id?: any;
3
- }> = Options & {
4
- players: PlayerOptions[];
5
- };
6
- export default GameOptions;
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=GameOptions.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"GameOptions.js","sourceRoot":"","sources":["../../src/options/GameOptions.ts"],"names":[],"mappings":""}
@@ -1,5 +0,0 @@
1
- import OptionsSpec, { ListOption } from './OptionsSpec';
2
- declare type GameOptionsOf<Options extends OptionsSpec> = {
3
- [key in keyof Omit<Options, 'players'>]: [key] extends [ListOption<infer T>] ? T : boolean;
4
- };
5
- export default GameOptionsOf;
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=GameOptionsOf.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"GameOptionsOf.js","sourceRoot":"","sources":["../../src/options/GameOptionsOf.ts"],"names":[],"mappings":""}
@@ -1,5 +0,0 @@
1
- import OptionSpec from './OptionSpec';
2
- declare type GameOptionsSpec = {
3
- [key in Exclude<string, 'player'>]: OptionSpec;
4
- };
5
- export default GameOptionsSpec;
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=GameOptionsSpecs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"GameOptionsSpecs.js","sourceRoot":"","sources":["../../src/options/GameOptionsSpecs.ts"],"names":[],"mappings":""}
@@ -1,7 +0,0 @@
1
- import OptionDescription from './OptionDescription';
2
- import OptionType from './OptionType';
3
- export default interface IntegerOptionDescription extends OptionDescription {
4
- type: typeof OptionType.INTEGER;
5
- min: number;
6
- max: number;
7
- }
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=IntegerOptionDescription.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"IntegerOptionDescription.js","sourceRoot":"","sources":["../../src/options/IntegerOptionDescription.ts"],"names":[],"mappings":""}
@@ -1,8 +0,0 @@
1
- import { TFunction } from 'i18next';
2
- import OptionDescription from './OptionDescription';
3
- import OptionType from './OptionType';
4
- export default interface ListOptionDescription<T = any> extends OptionDescription {
5
- type: typeof OptionType.LIST;
6
- values: T[];
7
- getValueLabel: (value: T, t: TFunction) => string;
8
- }
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=ListOptionDescription.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ListOptionDescription.js","sourceRoot":"","sources":["../../src/options/ListOptionDescription.ts"],"names":[],"mappings":""}
@@ -1,4 +0,0 @@
1
- import { TFunction } from 'i18next';
2
- export default interface OptionDescription {
3
- getLabel: (t: TFunction) => string;
4
- }
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=OptionDescription.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"OptionDescription.js","sourceRoot":"","sources":["../../src/options/OptionDescription.ts"],"names":[],"mappings":""}
@@ -1,4 +0,0 @@
1
- import BooleanOptionDescription from './BooleanOptionDescription';
2
- import ListOptionDescription from './ListOptionDescription';
3
- declare type OptionDescriptionOf<T> = [T] extends [boolean] ? BooleanOptionDescription : ListOptionDescription<T>;
4
- export default OptionDescriptionOf;
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=OptionDescriptionOf.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"OptionDescriptionOf.js","sourceRoot":"","sources":["../../src/options/OptionDescriptionOf.ts"],"names":[],"mappings":""}
@@ -1,4 +0,0 @@
1
- import BooleanOptionSpec from './BooleanOptionSpec';
2
- import EnumOptionSpec from './EnumOptionSpec';
3
- declare type OptionSpec = BooleanOptionSpec | EnumOptionSpec;
4
- export default OptionSpec;
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=OptionSpec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"OptionSpec.js","sourceRoot":"","sources":["../../src/options/OptionSpec.ts"],"names":[],"mappings":""}
@@ -1,6 +0,0 @@
1
- declare enum OptionType {
2
- BOOLEAN = 0,
3
- LIST = 1,
4
- INTEGER = 2
5
- }
6
- export default OptionType;
@@ -1,10 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- var OptionType;
4
- (function (OptionType) {
5
- OptionType[OptionType["BOOLEAN"] = 0] = "BOOLEAN";
6
- OptionType[OptionType["LIST"] = 1] = "LIST";
7
- OptionType[OptionType["INTEGER"] = 2] = "INTEGER";
8
- })(OptionType || (OptionType = {}));
9
- exports.default = OptionType;
10
- //# sourceMappingURL=OptionType.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"OptionType.js","sourceRoot":"","sources":["../../src/options/OptionType.ts"],"names":[],"mappings":";;AAAA,IAAK,UAEJ;AAFD,WAAK,UAAU;IACb,iDAAO,CAAA;IAAE,2CAAI,CAAA;IAAE,iDAAO,CAAA;AACxB,CAAC,EAFI,UAAU,KAAV,UAAU,QAEd;AAED,kBAAe,UAAU,CAAA"}
@@ -1,23 +0,0 @@
1
- import ListOptionDescription from './ListOptionDescription';
2
- import OptionDescriptionOf from './OptionDescriptionOf';
3
- declare type OptionsDescription<GameOptions = {
4
- [key in Exclude<string, 'player'>]: any;
5
- }, PlayerOptions = {
6
- [key in Exclude<string, 'id'>]: any;
7
- } & {
8
- id?: ListOptionDescription;
9
- }> = {
10
- [key in keyof GameOptions]: OptionDescriptionOf<GameOptions[key]>;
11
- } & {
12
- players: {
13
- [key in keyof PlayerOptions]: OptionDescriptionOf<PlayerOptions[key]>;
14
- } & {
15
- id?: ListOptionDescription;
16
- };
17
- };
18
- export default OptionsDescription;
19
- export declare function providePlayerIds<GameOptions, PlayerOptions extends {
20
- id?: any;
21
- }>(options?: OptionsDescription<GameOptions, PlayerOptions>, players?: PlayerOptions[] | number): (PlayerOptions & {
22
- id: any;
23
- })[];
@@ -1,53 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.providePlayerIds = void 0;
7
- var lodash_shuffle_1 = __importDefault(require("lodash.shuffle"));
8
- var index_1 = require("../index");
9
- function providePlayerIds(options, players) {
10
- var ids = lodash_shuffle_1.default(getIds(options, Array.isArray(players) ? players.length : players));
11
- if (Array.isArray(players)) {
12
- var _loop_1 = function (player) {
13
- if (player.id !== undefined) {
14
- var idIndex = ids.findIndex(function (id) { return player.id === id; });
15
- if (idIndex === -1) {
16
- console.error("Unexpected player id: " + player.id + ", should be one of: " + ids);
17
- }
18
- else {
19
- ids.splice(idIndex, 1);
20
- }
21
- }
22
- };
23
- for (var _i = 0, players_1 = players; _i < players_1.length; _i++) {
24
- var player = players_1[_i];
25
- _loop_1(player);
26
- }
27
- }
28
- if (!players)
29
- players = ids.length;
30
- if (typeof players === 'number')
31
- players = Array.from({ length: players }, Object);
32
- for (var _a = 0, players_2 = players; _a < players_2.length; _a++) {
33
- var player = players_2[_a];
34
- if (player.id === undefined) {
35
- player.id = ids.shift();
36
- }
37
- }
38
- return players;
39
- }
40
- exports.providePlayerIds = providePlayerIds;
41
- function getIds(options, players) {
42
- var _a, _b;
43
- if (((_b = (_a = options === null || options === void 0 ? void 0 : options.players) === null || _a === void 0 ? void 0 : _a.id) === null || _b === void 0 ? void 0 : _b.type) === index_1.OptionType.LIST) {
44
- return options.players.id.values;
45
- }
46
- else if (players) {
47
- return Array.from(Array(players).keys());
48
- }
49
- else {
50
- return [0, 1];
51
- }
52
- }
53
- //# sourceMappingURL=OptionsDescription.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"OptionsDescription.js","sourceRoot":"","sources":["../../src/options/OptionsDescription.ts"],"names":[],"mappings":";;;;;;AAAA,kEAAoC;AACpC,kCAAmC;AAcnC,SAAgB,gBAAgB,CAAkD,OAAwD,EAAE,OAAkC;IAC5K,IAAM,GAAG,GAAG,wBAAO,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAA;IACvF,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;gCACf,MAAM;YACf,IAAI,MAAM,CAAC,EAAE,KAAK,SAAS,EAAE;gBAC3B,IAAM,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,UAAA,EAAE,IAAI,OAAA,MAAM,CAAC,EAAE,KAAK,EAAE,EAAhB,CAAgB,CAAC,CAAA;gBACrD,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE;oBAClB,OAAO,CAAC,KAAK,CAAC,2BAAyB,MAAM,CAAC,EAAE,4BAAuB,GAAK,CAAC,CAAA;iBAC9E;qBAAM;oBACL,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;iBACvB;aACF;;QARH,KAAqB,UAAO,EAAP,mBAAO,EAAP,qBAAO,EAAP,IAAO;YAAvB,IAAM,MAAM,gBAAA;oBAAN,MAAM;SAShB;KACF;IACD,IAAI,CAAC,OAAO;QAAE,OAAO,GAAG,GAAG,CAAC,MAAM,CAAA;IAClC,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,OAAO,EAAC,EAAE,MAAM,CAAC,CAAA;IAChF,KAAqB,UAAO,EAAP,mBAAO,EAAP,qBAAO,EAAP,IAAO,EAAE;QAAzB,IAAM,MAAM,gBAAA;QACf,IAAI,MAAM,CAAC,EAAE,KAAK,SAAS,EAAE;YAC3B,MAAM,CAAC,EAAE,GAAG,GAAG,CAAC,KAAK,EAAE,CAAA;SACxB;KACF;IACD,OAAO,OAAwC,CAAA;AACjD,CAAC;AAtBD,4CAsBC;AAED,SAAS,MAAM,CAAkD,OAAwD,EAAE,OAAgB;;IACzI,IAAI,CAAA,MAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,0CAAE,EAAE,0CAAE,IAAI,MAAK,kBAAU,CAAC,IAAI,EAAE;QAClD,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAA;KACjC;SAAM,IAAI,OAAO,EAAE;QAClB,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;KACzC;SAAM;QACL,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;KACd;AACH,CAAC"}
@@ -1,7 +0,0 @@
1
- import { TFunction } from 'i18next';
2
- export default interface PlayerIdsSpec<PlayerId = any> {
3
- label?: (t: TFunction) => string;
4
- values?: PlayerId[];
5
- valueLabel?: (value: PlayerId, t: TFunction) => string;
6
- mandatoryIds?: PlayerId | PlayerId[];
7
- }
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=PlayerIdsSpec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PlayerIdsSpec.js","sourceRoot":"","sources":["../../src/options/PlayerIdsSpec.ts"],"names":[],"mappings":""}
@@ -1,4 +0,0 @@
1
- import { TFunction } from 'i18next';
2
- import OptionsSpec from './OptionsSpec';
3
- import WithIdOption from './WithIdOption';
4
- export default function getPlayerName<Id, P extends WithIdOption<Id>, Options>(id: Id, t: TFunction, optionsSpec?: OptionsSpec<Options>): string;
@@ -1,16 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- var isWithPlayerIdOptions_1 = __importDefault(require("./isWithPlayerIdOptions"));
7
- function getPlayerName(id, t, optionsSpec) {
8
- if (optionsSpec && isWithPlayerIdOptions_1.default(optionsSpec)) {
9
- return optionsSpec.players.id.valueLabel(id, t);
10
- }
11
- else {
12
- return t('Player {number}', { number: id });
13
- }
14
- }
15
- exports.default = getPlayerName;
16
- //# sourceMappingURL=getPlayerName.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getPlayerName.js","sourceRoot":"","sources":["../../src/options/getPlayerName.ts"],"names":[],"mappings":";;;;;AACA,kFAA2D;AAI3D,SAAwB,aAAa,CAA0C,EAAM,EAAE,CAAY,EAAE,WAAkC;IACrI,IAAI,WAAW,IAAI,+BAAqB,CAAiB,WAAW,CAAC,EAAE;QACrE,OAAO,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;KAChD;SAAM;QACL,OAAO,CAAC,CAAC,iBAAiB,EAAE,EAAC,MAAM,EAAE,EAAE,EAAC,CAAC,CAAA;KAC1C;AACH,CAAC;AAND,gCAMC"}