@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.
- package/dist/Action.d.ts +7 -0
- package/dist/Bot.d.ts +21 -0
- package/dist/Bot.js +18 -2
- package/dist/Bot.js.map +1 -1
- package/dist/Competitive.d.ts +45 -0
- package/dist/Competitive.js +15 -0
- package/dist/Competitive.js.map +1 -1
- package/dist/Eliminations.d.ts +17 -0
- package/dist/Eliminations.js +5 -0
- package/dist/Eliminations.js.map +1 -1
- package/dist/GameSetup.d.ts +14 -0
- package/dist/HiddenInformation.d.ts +22 -0
- package/dist/HiddenInformation.js +5 -0
- package/dist/HiddenInformation.js.map +1 -1
- package/dist/LocalMovePreview.d.ts +14 -0
- package/dist/LocalMovePreview.js +5 -0
- package/dist/LocalMovePreview.js.map +1 -1
- package/dist/RandomMove.d.ts +17 -0
- package/dist/Rules.d.ts +119 -0
- package/dist/Rules.js +102 -1
- package/dist/Rules.js.map +1 -1
- package/dist/SecretInformation.d.ts +39 -0
- package/dist/SecretInformation.js +5 -0
- package/dist/SecretInformation.js.map +1 -1
- package/dist/TimeLimit.d.ts +22 -0
- package/dist/TimeLimit.js +5 -0
- package/dist/TimeLimit.js.map +1 -1
- package/dist/Undo.d.ts +18 -0
- package/dist/Undo.js +6 -0
- package/dist/Undo.js.map +1 -1
- package/dist/UnpredictableMove.d.ts +19 -0
- package/dist/UnpredictableMove.js +5 -0
- package/dist/UnpredictableMove.js.map +1 -1
- package/dist/material/HiddenMaterialRules.d.ts +49 -1
- package/dist/material/HiddenMaterialRules.js +49 -3
- package/dist/material/HiddenMaterialRules.js.map +1 -1
- package/dist/material/MaterialGame.d.ts +12 -0
- package/dist/material/MaterialGameSetup.d.ts +74 -0
- package/dist/material/MaterialGameSetup.js +67 -1
- package/dist/material/MaterialGameSetup.js.map +1 -1
- package/dist/material/MaterialRules.d.ts +125 -0
- package/dist/material/MaterialRules.js +122 -3
- package/dist/material/MaterialRules.js.map +1 -1
- package/dist/material/SecretMaterialRules.d.ts +31 -0
- package/dist/material/SecretMaterialRules.js +23 -1
- package/dist/material/SecretMaterialRules.js.map +1 -1
- package/dist/material/items/Material.d.ts +253 -0
- package/dist/material/items/Material.js +248 -1
- package/dist/material/items/Material.js.map +1 -1
- package/dist/material/items/MaterialDeck.d.ts +33 -0
- package/dist/material/items/MaterialDeck.js +34 -1
- package/dist/material/items/MaterialDeck.js.map +1 -1
- package/dist/material/items/MaterialItem.d.ts +12 -0
- package/dist/material/items/MaterialMutator.d.ts +39 -0
- package/dist/material/items/MaterialMutator.js +41 -2
- package/dist/material/items/MaterialMutator.js.map +1 -1
- package/dist/material/items/index.js +1 -1
- package/dist/material/items/index.js.map +1 -1
- package/dist/material/location/Location.d.ts +28 -0
- package/dist/material/location/Location.js +5 -0
- package/dist/material/location/Location.js.map +1 -1
- package/dist/material/location/LocationBuilder.js +1 -1
- package/dist/material/location/strategy/FillGapStrategy.d.ts +4 -0
- package/dist/material/location/strategy/FillGapStrategy.js +5 -1
- package/dist/material/location/strategy/FillGapStrategy.js.map +1 -1
- package/dist/material/location/strategy/LocationStrategy.d.ts +20 -0
- package/dist/material/location/strategy/PositiveSequenceStrategy.d.ts +4 -0
- package/dist/material/location/strategy/PositiveSequenceStrategy.js +5 -1
- package/dist/material/location/strategy/PositiveSequenceStrategy.js.map +1 -1
- package/dist/material/memory/GameMemory.d.ts +21 -0
- package/dist/material/memory/GameMemory.js +22 -1
- package/dist/material/memory/GameMemory.js.map +1 -1
- package/dist/material/memory/PlayerMemory.d.ts +22 -0
- package/dist/material/memory/PlayerMemory.js +23 -1
- package/dist/material/memory/PlayerMemory.js.map +1 -1
- package/dist/material/moves/CustomMove.d.ts +18 -0
- package/dist/material/moves/CustomMove.js +13 -0
- package/dist/material/moves/CustomMove.js.map +1 -1
- package/dist/material/moves/MaterialMove.d.ts +9 -0
- package/dist/material/moves/MaterialMoveBuilder.d.ts +36 -0
- package/dist/material/moves/MaterialMoveBuilder.js +36 -0
- package/dist/material/moves/MaterialMoveBuilder.js.map +1 -1
- package/dist/material/moves/MoveKind.d.ts +3 -0
- package/dist/material/moves/MoveKind.js +3 -0
- package/dist/material/moves/MoveKind.js.map +1 -1
- package/dist/material/moves/items/CreateItem.d.ts +13 -0
- package/dist/material/moves/items/CreateItem.js +10 -0
- package/dist/material/moves/items/CreateItem.js.map +1 -1
- package/dist/material/moves/items/CreateItemsAtOnce.d.ts +14 -0
- package/dist/material/moves/items/CreateItemsAtOnce.js +10 -0
- package/dist/material/moves/items/CreateItemsAtOnce.js.map +1 -1
- package/dist/material/moves/items/DeleteItem.d.ts +18 -0
- package/dist/material/moves/items/DeleteItem.js +11 -0
- package/dist/material/moves/items/DeleteItem.js.map +1 -1
- package/dist/material/moves/items/DeleteItemsAtOnce.d.ts +17 -0
- package/dist/material/moves/items/DeleteItemsAtOnce.js +10 -0
- package/dist/material/moves/items/DeleteItemsAtOnce.js.map +1 -1
- package/dist/material/moves/items/ItemMove.d.ts +12 -0
- package/dist/material/moves/items/ItemMoveType.d.ts +3 -0
- package/dist/material/moves/items/ItemMoveType.js +3 -0
- package/dist/material/moves/items/ItemMoveType.js.map +1 -1
- package/dist/material/moves/items/MoveItem.d.ts +20 -0
- package/dist/material/moves/items/MoveItem.js +11 -0
- package/dist/material/moves/items/MoveItem.js.map +1 -1
- package/dist/material/moves/items/MoveItemsAtOnce.d.ts +20 -0
- package/dist/material/moves/items/MoveItemsAtOnce.js +10 -0
- package/dist/material/moves/items/MoveItemsAtOnce.js.map +1 -1
- package/dist/material/moves/items/RollItem.d.ts +19 -0
- package/dist/material/moves/items/RollItem.js +10 -0
- package/dist/material/moves/items/RollItem.js.map +1 -1
- package/dist/material/moves/items/SelectItem.d.ts +20 -0
- package/dist/material/moves/items/SelectItem.js +11 -0
- package/dist/material/moves/items/SelectItem.js.map +1 -1
- package/dist/material/moves/items/Shuffle.d.ts +26 -0
- package/dist/material/moves/items/Shuffle.js +15 -0
- package/dist/material/moves/items/Shuffle.js.map +1 -1
- package/dist/material/moves/local/CloseTutorialPopup.d.ts +8 -0
- package/dist/material/moves/local/CloseTutorialPopup.js +5 -0
- package/dist/material/moves/local/CloseTutorialPopup.js.map +1 -1
- package/dist/material/moves/local/DisplayHelp.d.ts +18 -0
- package/dist/material/moves/local/DisplayHelp.js +3 -0
- package/dist/material/moves/local/DisplayHelp.js.map +1 -1
- package/dist/material/moves/local/DropItem.d.ts +9 -0
- package/dist/material/moves/local/LocalMove.d.ts +6 -0
- package/dist/material/moves/local/LocalMove.js +3 -0
- package/dist/material/moves/local/LocalMove.js.map +1 -1
- package/dist/material/moves/local/SetTutorialStep.d.ts +8 -0
- package/dist/material/moves/local/SetTutorialStep.js +5 -0
- package/dist/material/moves/local/SetTutorialStep.js.map +1 -1
- package/dist/material/rules/MaterialRulesPart.d.ts +76 -0
- package/dist/material/rules/MaterialRulesPart.js +74 -1
- package/dist/material/rules/MaterialRulesPart.js.map +1 -1
- package/dist/material/rules/PlayerTurnRule.d.ts +19 -0
- package/dist/material/rules/PlayerTurnRule.js +20 -1
- package/dist/material/rules/PlayerTurnRule.js.map +1 -1
- package/dist/material/rules/RuleStep.d.ts +3 -0
- package/dist/material/rules/SimultaneousRule.d.ts +25 -0
- package/dist/material/rules/SimultaneousRule.js +21 -1
- package/dist/material/rules/SimultaneousRule.js.map +1 -1
- package/dist/material/tutorial/TutorialState.d.ts +7 -0
- package/dist/options/OptionsValidationError.js +1 -1
- package/dist/options/PlayerEnumOption.js +3 -0
- package/dist/options/PlayerEnumOption.js.map +1 -1
- package/dist/utils/action-view.util.js +2 -0
- package/dist/utils/action-view.util.js.map +1 -1
- package/dist/utils/enum.util.d.ts +27 -0
- package/dist/utils/enum.util.js +24 -0
- package/dist/utils/enum.util.js.map +1 -1
- package/dist/utils/grid.squares.util.d.ts +26 -0
- package/dist/utils/grid.squares.util.js +26 -0
- package/dist/utils/grid.squares.util.js.map +1 -1
- package/dist/utils/grid.util.d.ts +8 -0
- package/dist/utils/grid.util.js +5 -0
- package/dist/utils/grid.util.js.map +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/listing.util.d.ts +12 -0
- package/dist/utils/listing.util.js +12 -0
- package/dist/utils/listing.util.js.map +1 -1
- package/dist/utils/money.util.d.ts +48 -0
- package/dist/utils/money.util.js +174 -0
- package/dist/utils/money.util.js.map +1 -0
- package/dist/utils/random.util.d.ts +11 -0
- package/dist/utils/random.util.js +11 -0
- package/dist/utils/random.util.js.map +1 -1
- 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":"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"}
|
|
@@ -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":";;;
|
|
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"}
|