@gamepark/rules-api 6.24.1 → 6.24.3

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 (167) hide show
  1. package/dist/Action.d.ts +7 -0
  2. package/dist/Bot.d.ts +21 -0
  3. package/dist/Bot.js +18 -2
  4. package/dist/Bot.js.map +1 -1
  5. package/dist/Competitive.d.ts +45 -0
  6. package/dist/Competitive.js +15 -0
  7. package/dist/Competitive.js.map +1 -1
  8. package/dist/Eliminations.d.ts +17 -0
  9. package/dist/Eliminations.js +5 -0
  10. package/dist/Eliminations.js.map +1 -1
  11. package/dist/GameSetup.d.ts +14 -0
  12. package/dist/HiddenInformation.d.ts +22 -0
  13. package/dist/HiddenInformation.js +5 -0
  14. package/dist/HiddenInformation.js.map +1 -1
  15. package/dist/LocalMovePreview.d.ts +14 -0
  16. package/dist/LocalMovePreview.js +5 -0
  17. package/dist/LocalMovePreview.js.map +1 -1
  18. package/dist/RandomMove.d.ts +17 -0
  19. package/dist/Rules.d.ts +119 -0
  20. package/dist/Rules.js +102 -1
  21. package/dist/Rules.js.map +1 -1
  22. package/dist/SecretInformation.d.ts +39 -0
  23. package/dist/SecretInformation.js +5 -0
  24. package/dist/SecretInformation.js.map +1 -1
  25. package/dist/TimeLimit.d.ts +22 -0
  26. package/dist/TimeLimit.js +5 -0
  27. package/dist/TimeLimit.js.map +1 -1
  28. package/dist/Undo.d.ts +18 -0
  29. package/dist/Undo.js +6 -0
  30. package/dist/Undo.js.map +1 -1
  31. package/dist/UnpredictableMove.d.ts +19 -0
  32. package/dist/UnpredictableMove.js +5 -0
  33. package/dist/UnpredictableMove.js.map +1 -1
  34. package/dist/material/HiddenMaterialRules.d.ts +49 -1
  35. package/dist/material/HiddenMaterialRules.js +49 -3
  36. package/dist/material/HiddenMaterialRules.js.map +1 -1
  37. package/dist/material/MaterialGame.d.ts +12 -0
  38. package/dist/material/MaterialGameSetup.d.ts +74 -0
  39. package/dist/material/MaterialGameSetup.js +67 -1
  40. package/dist/material/MaterialGameSetup.js.map +1 -1
  41. package/dist/material/MaterialRules.d.ts +125 -0
  42. package/dist/material/MaterialRules.js +122 -3
  43. package/dist/material/MaterialRules.js.map +1 -1
  44. package/dist/material/SecretMaterialRules.d.ts +31 -0
  45. package/dist/material/SecretMaterialRules.js +23 -1
  46. package/dist/material/SecretMaterialRules.js.map +1 -1
  47. package/dist/material/items/Material.d.ts +253 -0
  48. package/dist/material/items/Material.js +248 -1
  49. package/dist/material/items/Material.js.map +1 -1
  50. package/dist/material/items/MaterialDeck.d.ts +33 -0
  51. package/dist/material/items/MaterialDeck.js +34 -1
  52. package/dist/material/items/MaterialDeck.js.map +1 -1
  53. package/dist/material/items/MaterialItem.d.ts +12 -0
  54. package/dist/material/items/MaterialMutator.d.ts +39 -0
  55. package/dist/material/items/MaterialMutator.js +41 -2
  56. package/dist/material/items/MaterialMutator.js.map +1 -1
  57. package/dist/material/items/index.js +1 -1
  58. package/dist/material/items/index.js.map +1 -1
  59. package/dist/material/location/Location.d.ts +28 -0
  60. package/dist/material/location/Location.js +5 -0
  61. package/dist/material/location/Location.js.map +1 -1
  62. package/dist/material/location/LocationBuilder.js +1 -1
  63. package/dist/material/location/strategy/FillGapStrategy.d.ts +4 -0
  64. package/dist/material/location/strategy/FillGapStrategy.js +5 -1
  65. package/dist/material/location/strategy/FillGapStrategy.js.map +1 -1
  66. package/dist/material/location/strategy/LocationStrategy.d.ts +20 -0
  67. package/dist/material/location/strategy/PositiveSequenceStrategy.d.ts +4 -0
  68. package/dist/material/location/strategy/PositiveSequenceStrategy.js +5 -1
  69. package/dist/material/location/strategy/PositiveSequenceStrategy.js.map +1 -1
  70. package/dist/material/memory/GameMemory.d.ts +21 -0
  71. package/dist/material/memory/GameMemory.js +22 -1
  72. package/dist/material/memory/GameMemory.js.map +1 -1
  73. package/dist/material/memory/PlayerMemory.d.ts +22 -0
  74. package/dist/material/memory/PlayerMemory.js +23 -1
  75. package/dist/material/memory/PlayerMemory.js.map +1 -1
  76. package/dist/material/moves/CustomMove.d.ts +18 -0
  77. package/dist/material/moves/CustomMove.js +13 -0
  78. package/dist/material/moves/CustomMove.js.map +1 -1
  79. package/dist/material/moves/MaterialMove.d.ts +9 -0
  80. package/dist/material/moves/MaterialMoveBuilder.d.ts +36 -0
  81. package/dist/material/moves/MaterialMoveBuilder.js +36 -0
  82. package/dist/material/moves/MaterialMoveBuilder.js.map +1 -1
  83. package/dist/material/moves/MoveKind.d.ts +3 -0
  84. package/dist/material/moves/MoveKind.js +3 -0
  85. package/dist/material/moves/MoveKind.js.map +1 -1
  86. package/dist/material/moves/items/CreateItem.d.ts +13 -0
  87. package/dist/material/moves/items/CreateItem.js +10 -0
  88. package/dist/material/moves/items/CreateItem.js.map +1 -1
  89. package/dist/material/moves/items/CreateItemsAtOnce.d.ts +14 -0
  90. package/dist/material/moves/items/CreateItemsAtOnce.js +10 -0
  91. package/dist/material/moves/items/CreateItemsAtOnce.js.map +1 -1
  92. package/dist/material/moves/items/DeleteItem.d.ts +18 -0
  93. package/dist/material/moves/items/DeleteItem.js +11 -0
  94. package/dist/material/moves/items/DeleteItem.js.map +1 -1
  95. package/dist/material/moves/items/DeleteItemsAtOnce.d.ts +17 -0
  96. package/dist/material/moves/items/DeleteItemsAtOnce.js +10 -0
  97. package/dist/material/moves/items/DeleteItemsAtOnce.js.map +1 -1
  98. package/dist/material/moves/items/ItemMove.d.ts +12 -0
  99. package/dist/material/moves/items/ItemMoveType.d.ts +3 -0
  100. package/dist/material/moves/items/ItemMoveType.js +3 -0
  101. package/dist/material/moves/items/ItemMoveType.js.map +1 -1
  102. package/dist/material/moves/items/MoveItem.d.ts +20 -0
  103. package/dist/material/moves/items/MoveItem.js +11 -0
  104. package/dist/material/moves/items/MoveItem.js.map +1 -1
  105. package/dist/material/moves/items/MoveItemsAtOnce.d.ts +20 -0
  106. package/dist/material/moves/items/MoveItemsAtOnce.js +10 -0
  107. package/dist/material/moves/items/MoveItemsAtOnce.js.map +1 -1
  108. package/dist/material/moves/items/RollItem.d.ts +19 -0
  109. package/dist/material/moves/items/RollItem.js +10 -0
  110. package/dist/material/moves/items/RollItem.js.map +1 -1
  111. package/dist/material/moves/items/SelectItem.d.ts +20 -0
  112. package/dist/material/moves/items/SelectItem.js +11 -0
  113. package/dist/material/moves/items/SelectItem.js.map +1 -1
  114. package/dist/material/moves/items/Shuffle.d.ts +26 -0
  115. package/dist/material/moves/items/Shuffle.js +15 -0
  116. package/dist/material/moves/items/Shuffle.js.map +1 -1
  117. package/dist/material/moves/local/CloseTutorialPopup.d.ts +8 -0
  118. package/dist/material/moves/local/CloseTutorialPopup.js +5 -0
  119. package/dist/material/moves/local/CloseTutorialPopup.js.map +1 -1
  120. package/dist/material/moves/local/DisplayHelp.d.ts +18 -0
  121. package/dist/material/moves/local/DisplayHelp.js +3 -0
  122. package/dist/material/moves/local/DisplayHelp.js.map +1 -1
  123. package/dist/material/moves/local/DropItem.d.ts +9 -0
  124. package/dist/material/moves/local/LocalMove.d.ts +6 -0
  125. package/dist/material/moves/local/LocalMove.js +3 -0
  126. package/dist/material/moves/local/LocalMove.js.map +1 -1
  127. package/dist/material/moves/local/SetTutorialStep.d.ts +8 -0
  128. package/dist/material/moves/local/SetTutorialStep.js +5 -0
  129. package/dist/material/moves/local/SetTutorialStep.js.map +1 -1
  130. package/dist/material/rules/MaterialRulesPart.d.ts +76 -0
  131. package/dist/material/rules/MaterialRulesPart.js +74 -1
  132. package/dist/material/rules/MaterialRulesPart.js.map +1 -1
  133. package/dist/material/rules/PlayerTurnRule.d.ts +19 -0
  134. package/dist/material/rules/PlayerTurnRule.js +20 -1
  135. package/dist/material/rules/PlayerTurnRule.js.map +1 -1
  136. package/dist/material/rules/RuleStep.d.ts +3 -0
  137. package/dist/material/rules/SimultaneousRule.d.ts +25 -0
  138. package/dist/material/rules/SimultaneousRule.js +21 -1
  139. package/dist/material/rules/SimultaneousRule.js.map +1 -1
  140. package/dist/material/tutorial/TutorialState.d.ts +7 -0
  141. package/dist/options/OptionsValidationError.js +1 -1
  142. package/dist/options/PlayerEnumOption.js +3 -0
  143. package/dist/options/PlayerEnumOption.js.map +1 -1
  144. package/dist/utils/action-view.util.js +2 -0
  145. package/dist/utils/action-view.util.js.map +1 -1
  146. package/dist/utils/enum.util.d.ts +27 -0
  147. package/dist/utils/enum.util.js +24 -0
  148. package/dist/utils/enum.util.js.map +1 -1
  149. package/dist/utils/grid.squares.util.d.ts +26 -0
  150. package/dist/utils/grid.squares.util.js +26 -0
  151. package/dist/utils/grid.squares.util.js.map +1 -1
  152. package/dist/utils/grid.util.d.ts +8 -0
  153. package/dist/utils/grid.util.js +5 -0
  154. package/dist/utils/grid.util.js.map +1 -1
  155. package/dist/utils/index.d.ts +1 -0
  156. package/dist/utils/index.js +1 -0
  157. package/dist/utils/index.js.map +1 -1
  158. package/dist/utils/listing.util.d.ts +12 -0
  159. package/dist/utils/listing.util.js +12 -0
  160. package/dist/utils/listing.util.js.map +1 -1
  161. package/dist/utils/money.util.d.ts +48 -0
  162. package/dist/utils/money.util.js +174 -0
  163. package/dist/utils/money.util.js.map +1 -0
  164. package/dist/utils/random.util.d.ts +11 -0
  165. package/dist/utils/random.util.js +11 -0
  166. package/dist/utils/random.util.js.map +1 -1
  167. package/package.json +1 -1
@@ -0,0 +1,174 @@
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.Money = void 0;
7
+ var forEachRight_1 = __importDefault(require("lodash/forEachRight"));
8
+ var isEqual_1 = __importDefault(require("lodash/isEqual"));
9
+ var keyBy_1 = __importDefault(require("lodash/keyBy"));
10
+ var mapValues_1 = __importDefault(require("lodash/mapValues"));
11
+ var sumBy_1 = __importDefault(require("lodash/sumBy"));
12
+ /**
13
+ * This class help manipulate any kind of money with arbitrary unit values, like a set of coins of values 1, 2, 5, 10 for instance.
14
+ */
15
+ var Money = /** @class */ (function () {
16
+ function Money(units) {
17
+ this.units = units;
18
+ this.units.sort(function (a, b) { return a - b; });
19
+ }
20
+ /**
21
+ * Count the total value of a material instance
22
+ * @param material The material to count
23
+ * @returns the sum of each item id multiplied by its quantity
24
+ */
25
+ Money.prototype.count = function (material) {
26
+ return (0, sumBy_1.default)(material.getItems(), function (item) { var _a, _b; return ((_a = item.id) !== null && _a !== void 0 ? _a : 1) * ((_b = item.quantity) !== null && _b !== void 0 ? _b : 1); });
27
+ };
28
+ /**
29
+ * Perform an operation of adding or removing an amount from a location by creating or deleting items
30
+ * @param material The material instance
31
+ * @param location The location to filter material onto, and to create new items in
32
+ * @param amount Amount to create or delete
33
+ * @returns the moves that need to be played to perform the operation
34
+ */
35
+ Money.prototype.createOrDelete = function (material, location, amount) {
36
+ material = material.location(function (l) { return (0, isEqual_1.default)(l, location); });
37
+ var moves = [];
38
+ var delta = amount > 0 ? this.gain(amount) : this.spend((0, mapValues_1.default)((0, keyBy_1.default)(this.units), function (unit) { return material.id(unit).getQuantity(); }), -amount);
39
+ for (var index = this.units.length - 1; index >= 0; index--) {
40
+ var unit = this.units[index];
41
+ if (delta[unit] < 0) {
42
+ moves.push(material.id(unit).deleteItem(-delta[unit]));
43
+ }
44
+ else if (delta[unit] > 0) {
45
+ moves.push(material.createItem({ id: unit, location: location, quantity: delta[unit] }));
46
+ }
47
+ }
48
+ return moves;
49
+ };
50
+ /**
51
+ * Move an amount of money from a place to another place. It searches after the easiest way to do it, making money with the bank only if necessary.
52
+ * @param material Material instance for the money (needs to be unfiltered)
53
+ * @param origin Location to remove money from
54
+ * @param target Location to move money to
55
+ * @param amount Amount of money to transfer
56
+ * @returns the moves that need to be played to perform the operation
57
+ */
58
+ Money.prototype.moveAmount = function (material, origin, target, amount) {
59
+ if (!amount)
60
+ return [];
61
+ if (amount < 0)
62
+ return this.moveAmount(material, target, origin, -amount);
63
+ var moves = [];
64
+ var originMaterial = material.location(function (l) { return (0, isEqual_1.default)(l, origin); });
65
+ var targetMaterial = material.location(function (l) { return (0, isEqual_1.default)(l, target); });
66
+ var originUnits = (0, mapValues_1.default)((0, keyBy_1.default)(this.units), function (unit) { return originMaterial.id(unit).getQuantity(); });
67
+ var originDelta = this.spend(originUnits, amount);
68
+ var targetDelta = this.gain(amount);
69
+ for (var index = this.units.length - 1; index >= 0; index--) {
70
+ var unit = this.units[index];
71
+ if (originDelta[unit] < 0) {
72
+ var _loop_1 = function () {
73
+ var lowerUnits = this_1.units.slice(0, this_1.units.indexOf(unit));
74
+ var targetResult = (0, mapValues_1.default)((0, keyBy_1.default)(lowerUnits), function (unit) { return targetMaterial.id(unit).getQuantity() + targetDelta[unit]; });
75
+ var targetResultDelta = this_1.spend(targetResult, unit);
76
+ var valueSpent = (0, sumBy_1.default)(lowerUnits, function (unit) { return -targetResultDelta[unit] * unit; });
77
+ if (valueSpent === unit && lowerUnits.every(function (lowerUnit) { return targetResultDelta[lowerUnit] < 0; })) {
78
+ targetDelta[unit]++;
79
+ for (var _i = 0, lowerUnits_1 = lowerUnits; _i < lowerUnits_1.length; _i++) {
80
+ var lowerUnit = lowerUnits_1[_i];
81
+ targetDelta[lowerUnit] += targetResultDelta[lowerUnit];
82
+ }
83
+ }
84
+ else
85
+ return "break";
86
+ };
87
+ var this_1 = this;
88
+ while (targetDelta[unit] < -originDelta[unit]) {
89
+ var state_1 = _loop_1();
90
+ if (state_1 === "break")
91
+ break;
92
+ }
93
+ var moveAmount = Math.min(-originDelta[unit], targetDelta[unit]);
94
+ targetDelta[unit] -= moveAmount;
95
+ var originMaterialUnit = originMaterial.id(unit);
96
+ if (moveAmount > 0) {
97
+ moves.push(originMaterialUnit.moveItem(target, moveAmount));
98
+ }
99
+ if (moveAmount < -originDelta[unit]) {
100
+ moves.push(originMaterialUnit.deleteItem(-originDelta[unit] - moveAmount));
101
+ }
102
+ }
103
+ else if (originDelta[unit] > 0) {
104
+ if (targetDelta[unit] < 0) {
105
+ moves.push(targetMaterial.id(unit).moveItem(origin, -targetDelta[unit]));
106
+ }
107
+ else {
108
+ moves.push(material.createItem({ id: unit, location: origin, quantity: originDelta[unit] }));
109
+ }
110
+ }
111
+ if (targetDelta[unit] > 0) {
112
+ moves.push(material.createItem({ id: unit, location: target, quantity: targetDelta[unit] }));
113
+ }
114
+ }
115
+ return moves;
116
+ };
117
+ Object.defineProperty(Money.prototype, "record", {
118
+ /**
119
+ * Creates a new record indexes by all units, with value equal to 0 for each unit
120
+ */
121
+ get: function () {
122
+ return (0, mapValues_1.default)((0, keyBy_1.default)(this.units), function (_) { return 0; });
123
+ },
124
+ enumerable: false,
125
+ configurable: true
126
+ });
127
+ /**
128
+ * Return the best way to gain an amount, prioritizing the highest unit values
129
+ * @param amount Amount to gain, default 1
130
+ * @returns the record of coins to earn (only positive values)
131
+ */
132
+ Money.prototype.gain = function (amount) {
133
+ if (amount === void 0) { amount = 1; }
134
+ var gain = this.record;
135
+ (0, forEachRight_1.default)(this.units, function (unit) {
136
+ gain[unit] = Math.floor(amount / unit);
137
+ amount %= unit;
138
+ });
139
+ return gain;
140
+ };
141
+ /**
142
+ * Return the best way to spend an amount of owned units, prioritizing the smallest unit values
143
+ * @param owned Amount of units owned before spending
144
+ * @param amount Amount to gain, default 1
145
+ * @returns the record of coins to give away and eventually take (positive and negative values)
146
+ */
147
+ Money.prototype.spend = function (owned, amount) {
148
+ if (amount === void 0) { amount = 1; }
149
+ var delta = (0, mapValues_1.default)(owned, function (_) { return 0; });
150
+ for (var _1 = 0; _1 < amount; _1++) {
151
+ for (var _i = 0, _a = this.units; _i < _a.length; _i++) {
152
+ var unit = _a[_i];
153
+ if (owned[unit] + delta[unit] > 0) {
154
+ delta[unit]--;
155
+ if (unit > 1) {
156
+ var rest = unit - 1;
157
+ for (var _b = 0, _c = this.units.slice(0, this.units.indexOf(unit)).reverse(); _b < _c.length; _b++) {
158
+ var lowerUnit = _c[_b];
159
+ if (lowerUnit <= rest) {
160
+ delta[lowerUnit] += Math.floor(rest / lowerUnit);
161
+ rest -= rest % lowerUnit;
162
+ }
163
+ }
164
+ }
165
+ break;
166
+ }
167
+ }
168
+ }
169
+ return delta;
170
+ };
171
+ return Money;
172
+ }());
173
+ exports.Money = Money;
174
+ //# sourceMappingURL=money.util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"money.util.js","sourceRoot":"","sources":["../../src/utils/money.util.ts"],"names":[],"mappings":";;;;;;AAAA,qEAA8C;AAC9C,2DAAoC;AACpC,uDAAgC;AAChC,+DAAwC;AACxC,uDAAgC;AAGhC;;GAEG;AACH;IACE,eAAoB,KAAa;QAAb,UAAK,GAAL,KAAK,CAAQ;QAC/B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,GAAG,CAAC,EAAL,CAAK,CAAC,CAAA;IAClC,CAAC;IAED;;;;OAIG;IACH,qBAAK,GAAL,UAAM,QAA2B;QAC/B,OAAO,IAAA,eAAK,EAAC,QAAQ,CAAC,QAAQ,EAAQ,EAAE,UAAA,IAAI,gBAAI,OAAA,CAAC,MAAA,IAAI,CAAC,EAAE,mCAAI,CAAC,CAAC,GAAG,CAAC,MAAA,IAAI,CAAC,QAAQ,mCAAI,CAAC,CAAC,CAAA,EAAA,CAAC,CAAA;IACxF,CAAC;IAED;;;;;;OAMG;IACH,8BAAc,GAAd,UAAe,QAA2B,EAAE,QAAwB,EAAE,MAAc;QAClF,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,UAAA,CAAC,IAAI,OAAA,IAAA,iBAAO,EAAC,CAAC,EAAE,QAAQ,CAAC,EAApB,CAAoB,CAAC,CAAA;QACvD,IAAM,KAAK,GAA4B,EAAE,CAAA;QACzC,IAAM,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAA,mBAAS,EAAC,IAAA,eAAK,EAAC,IAAI,CAAC,KAAK,CAAC,EAAE,UAAA,IAAI,IAAI,OAAA,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAA/B,CAA+B,CAAC,EAAE,CAAC,MAAM,CAAC,CAAA;QACzI,KAAK,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;YAC5D,IAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;YAC9B,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACpB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACxD,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3B,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,UAAA,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;YAChF,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IAED;;;;;;;OAOG;IACH,0BAAU,GAAV,UAAW,QAA2B,EAAE,MAAsB,EAAE,MAAsB,EAAE,MAAc;QACpG,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,CAAA;QACtB,IAAI,MAAM,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,CAAA;QACzE,IAAM,KAAK,GAA4B,EAAE,CAAA;QACzC,IAAM,cAAc,GAAG,QAAQ,CAAC,QAAQ,CAAC,UAAA,CAAC,IAAI,OAAA,IAAA,iBAAO,EAAC,CAAC,EAAE,MAAM,CAAC,EAAlB,CAAkB,CAAC,CAAA;QACjE,IAAM,cAAc,GAAG,QAAQ,CAAC,QAAQ,CAAC,UAAA,CAAC,IAAI,OAAA,IAAA,iBAAO,EAAC,CAAC,EAAE,MAAM,CAAC,EAAlB,CAAkB,CAAC,CAAA;QACjE,IAAM,WAAW,GAAG,IAAA,mBAAS,EAAC,IAAA,eAAK,EAAC,IAAI,CAAC,KAAK,CAAC,EAAE,UAAA,IAAI,IAAI,OAAA,cAAc,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAArC,CAAqC,CAAC,CAAA;QAC/F,IAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;QACnD,IAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACrC,KAAK,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;YAC5D,IAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;YAC9B,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;;oBAExB,IAAM,UAAU,GAAG,OAAK,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,OAAK,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;oBAChE,IAAM,YAAY,GAAG,IAAA,mBAAS,EAAC,IAAA,eAAK,EAAC,UAAU,CAAC,EAAE,UAAA,IAAI,IAAI,OAAA,cAAc,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,GAAG,WAAW,CAAC,IAAI,CAAC,EAAzD,CAAyD,CAAC,CAAA;oBACpH,IAAM,iBAAiB,GAAG,OAAK,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;oBACxD,IAAM,UAAU,GAAG,IAAA,eAAK,EAAC,UAAU,EAAE,UAAA,IAAI,IAAI,OAAA,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,IAAI,EAA/B,CAA+B,CAAC,CAAA;oBAC7E,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,CAAC,KAAK,CAAC,UAAA,SAAS,IAAI,OAAA,iBAAiB,CAAC,SAAS,CAAC,GAAG,CAAC,EAAhC,CAAgC,CAAC,EAAE,CAAC;wBAC3F,WAAW,CAAC,IAAI,CAAC,EAAE,CAAA;wBACnB,KAAwB,UAAU,EAAV,yBAAU,EAAV,wBAAU,EAAV,IAAU,EAAE,CAAC;4BAAhC,IAAM,SAAS,mBAAA;4BAClB,WAAW,CAAC,SAAS,CAAC,IAAI,iBAAiB,CAAC,SAAS,CAAC,CAAA;wBACxD,CAAC;oBACH,CAAC;;uCAAW;;;gBAVd,OAAO,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC;;;;iBAW5C;gBACD,IAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAA;gBAClE,WAAW,CAAC,IAAI,CAAC,IAAI,UAAU,CAAA;gBAC/B,IAAM,kBAAkB,GAAG,cAAc,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;gBAClD,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;oBACnB,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAA;gBAC7D,CAAC;gBACD,IAAI,UAAU,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;oBACpC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAA;gBAC5E,CAAC;YACH,CAAC;iBAAM,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjC,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC1B,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBAC1E,CAAC;qBAAM,CAAC;oBACN,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;gBAC9F,CAAC;YACH,CAAC;YACD,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC1B,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;YAC9F,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IAKD,sBAAI,yBAAM;QAHV;;WAEG;aACH;YACE,OAAO,IAAA,mBAAS,EAAC,IAAA,eAAK,EAAC,IAAI,CAAC,KAAK,CAAC,EAAE,UAAA,CAAC,IAAI,OAAA,CAAC,EAAD,CAAC,CAAC,CAAA;QAC7C,CAAC;;;OAAA;IAED;;;;OAIG;IACH,oBAAI,GAAJ,UAAK,MAAkB;QAAlB,uBAAA,EAAA,UAAkB;QACrB,IAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAA;QACxB,IAAA,sBAAY,EAAC,IAAI,CAAC,KAAK,EAAE,UAAA,IAAI;YAC3B,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;YACtC,MAAM,IAAI,IAAI,CAAA;QAChB,CAAC,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;;;OAKG;IACH,qBAAK,GAAL,UAAM,KAA2B,EAAE,MAAkB;QAAlB,uBAAA,EAAA,UAAkB;QACnD,IAAM,KAAK,GAAyB,IAAA,mBAAS,EAAC,KAAK,EAAE,UAAA,CAAC,IAAI,OAAA,CAAC,EAAD,CAAC,CAAC,CAAA;QAC5D,KAAK,IAAI,EAAC,GAAG,CAAC,EAAE,EAAC,GAAG,MAAM,EAAE,EAAC,EAAE,EAAE,CAAC;YAChC,KAAmB,UAAU,EAAV,KAAA,IAAI,CAAC,KAAK,EAAV,cAAU,EAAV,IAAU,EAAE,CAAC;gBAA3B,IAAM,IAAI,SAAA;gBACb,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;oBAClC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAA;oBACb,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;wBACb,IAAI,IAAI,GAAG,IAAI,GAAG,CAAC,CAAA;wBACnB,KAAwB,UAAuD,EAAvD,KAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,EAAvD,cAAuD,EAAvD,IAAuD,EAAE,CAAC;4BAA7E,IAAM,SAAS,SAAA;4BAClB,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;gCACtB,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,SAAS,CAAC,CAAA;gCAChD,IAAI,IAAI,IAAI,GAAG,SAAS,CAAA;4BAC1B,CAAC;wBACH,CAAC;oBACH,CAAC;oBACD,MAAK;gBACP,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IACH,YAAC;AAAD,CAAC,AA3ID,IA2IC;AA3IY,sBAAK"}
@@ -1,4 +1,15 @@
1
1
  import { RandomMove } from '../RandomMove';
2
2
  import { Rules } from '../Rules';
3
+ /**
4
+ * Type guard for rules with Random moves
5
+ * @param rules The game's rules
6
+ * @return true if the rules implements {@link RandomMove} interface
7
+ */
3
8
  export declare function hasRandomMove<Game, Move, RandomizedMove>(rules: Rules<Game, Move>): rules is Rules<Game, Move> & RandomMove<Move, RandomizedMove>;
9
+ /**
10
+ * Randomizes a list of moves at once
11
+ * @param rules Rules of the game
12
+ * @param moves Moves to randomize
13
+ * @returns the randomized moves if the rules implements {@link RandomMove}
14
+ */
4
15
  export declare function randomizeMoves<Game, Move, RandomizedMove = Move>(rules: Rules<Game, Move>, moves: Move[]): (Move & RandomizedMove)[];
@@ -1,11 +1,22 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.randomizeMoves = exports.hasRandomMove = void 0;
4
+ /**
5
+ * Type guard for rules with Random moves
6
+ * @param rules The game's rules
7
+ * @return true if the rules implements {@link RandomMove} interface
8
+ */
4
9
  function hasRandomMove(rules) {
5
10
  var test = rules;
6
11
  return typeof test.randomize === 'function';
7
12
  }
8
13
  exports.hasRandomMove = hasRandomMove;
14
+ /**
15
+ * Randomizes a list of moves at once
16
+ * @param rules Rules of the game
17
+ * @param moves Moves to randomize
18
+ * @returns the randomized moves if the rules implements {@link RandomMove}
19
+ */
9
20
  function randomizeMoves(rules, moves) {
10
21
  if (hasRandomMove(rules)) {
11
22
  return moves.map(function (move) { return rules.randomize(move); });
@@ -1 +1 @@
1
- {"version":3,"file":"random.util.js","sourceRoot":"","sources":["../../src/utils/random.util.ts"],"names":[],"mappings":";;;AAQA,SAAgB,aAAa,CAC3B,KAAwB;IAExB,IAAM,IAAI,GAAG,KAA6D,CAAA;IAC1E,OAAO,OAAO,IAAI,CAAC,SAAS,KAAK,UAAU,CAAA;AAC7C,CAAC;AALD,sCAKC;AAQD,SAAgB,cAAc,CAAoC,KAAwB,EAAE,KAAa;IACvG,IAAI,aAAa,CAA6B,KAAK,CAAC,EAAE,CAAC;QACrD,OAAO,KAAK,CAAC,GAAG,CAAC,UAAA,IAAI,IAAI,OAAA,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,EAArB,CAAqB,CAAC,CAAA;IACjD,CAAC;SAAM,CAAC;QACN,OAAO,KAAkC,CAAA;IAC3C,CAAC;AACH,CAAC;AAND,wCAMC"}
1
+ {"version":3,"file":"random.util.js","sourceRoot":"","sources":["../../src/utils/random.util.ts"],"names":[],"mappings":";;;AAGA;;;;GAIG;AACH,SAAgB,aAAa,CAC3B,KAAwB;IAExB,IAAM,IAAI,GAAG,KAA6D,CAAA;IAC1E,OAAO,OAAO,IAAI,CAAC,SAAS,KAAK,UAAU,CAAA;AAC7C,CAAC;AALD,sCAKC;AAED;;;;;GAKG;AACH,SAAgB,cAAc,CAAoC,KAAwB,EAAE,KAAa;IACvG,IAAI,aAAa,CAA6B,KAAK,CAAC,EAAE,CAAC;QACrD,OAAO,KAAK,CAAC,GAAG,CAAC,UAAA,IAAI,IAAI,OAAA,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,EAArB,CAAqB,CAAC,CAAA;IACjD,CAAC;SAAM,CAAC;QACN,OAAO,KAAkC,CAAA;IAC3C,CAAC;AACH,CAAC;AAND,wCAMC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gamepark/rules-api",
3
- "version": "6.24.1",
3
+ "version": "6.24.3",
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",