@gamepark/rules-api 5.13.0 → 5.15.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.
- package/dist/Action.d.ts +10 -5
- package/dist/Action.js +16 -26
- package/dist/Action.js.map +1 -1
- package/dist/Game.d.ts +2 -2
- package/dist/Game.js +14 -6
- package/dist/Game.js.map +1 -1
- package/dist/IncompleteInformation.d.ts +1 -0
- package/dist/IncompleteInformation.js.map +1 -1
- package/dist/RandomMove.d.ts +1 -1
- package/dist/RandomMove.js +4 -6
- package/dist/RandomMove.js.map +1 -1
- package/dist/SecretAction.d.ts +6 -0
- package/dist/SecretAction.js +8 -0
- package/dist/SecretAction.js.map +1 -0
- package/dist/SecretMove.d.ts +5 -0
- package/dist/SecretMove.js +9 -0
- package/dist/SecretMove.js.map +1 -0
- package/dist/options/EnumOption.d.ts +2 -1
- package/dist/options/EnumOption.js +7 -2
- package/dist/options/EnumOption.js.map +1 -1
- package/dist/options/PlayerIdSpec.d.ts +1 -1
- package/dist/options/providePlayerIds.js +20 -5
- package/dist/options/providePlayerIds.js.map +1 -1
- package/package.json +2 -2
package/dist/Action.d.ts
CHANGED
|
@@ -8,13 +8,18 @@ declare type Action<Move = any, PlayerId = any> = {
|
|
|
8
8
|
};
|
|
9
9
|
export default Action;
|
|
10
10
|
export declare function playAction<State, Move, PlayerId>(game: Game<State, Move>, move: Move, playerId: PlayerId, id?: string): Action<Move, PlayerId>;
|
|
11
|
-
export declare type ActionWithViews<Move, MoveView, PlayerId> = {
|
|
11
|
+
export declare type ActionWithViews<Move = any, MoveView = Move, PlayerId = any> = {
|
|
12
12
|
action: Action<Move, PlayerId>;
|
|
13
|
-
views:
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
views: ActionView<MoveView, PlayerId>[];
|
|
14
|
+
};
|
|
15
|
+
export declare type ActionView<MoveView = any, PlayerId = any> = {
|
|
16
|
+
recipient?: PlayerId;
|
|
17
|
+
action: Action<MoveView, PlayerId>;
|
|
17
18
|
};
|
|
18
19
|
export declare function playActionWithViews<State, View, Move, MoveView, PlayerId>(game: IncompleteInformation<State, View, Move, MoveView, PlayerId>, move: Move, playerId: PlayerId, recipients: PlayerId[], id?: string): ActionWithViews<Move, MoveView, PlayerId>;
|
|
19
20
|
export declare function replayAction<State, Move, PlayerId>(game: Game<State, Move>, action: Action<Move, PlayerId>): void;
|
|
20
21
|
export declare function replayActions<State, Move, PlayerId>(game: Game<State, Move>, actions: Action<Move, PlayerId>[]): void;
|
|
22
|
+
export declare type SecretAction<Move = any, MoveView = Move, PlayerId = any> = Action<Move, PlayerId> & {
|
|
23
|
+
secrets: ActionView<MoveView, PlayerId>[];
|
|
24
|
+
};
|
|
25
|
+
export declare function isSecretAction(action: Action): action is SecretAction;
|
package/dist/Action.js
CHANGED
|
@@ -1,35 +1,27 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.replayActions = exports.replayAction = exports.playActionWithViews = exports.playAction = void 0;
|
|
3
|
+
exports.isSecretAction = exports.replayActions = exports.replayAction = exports.playActionWithViews = exports.playAction = void 0;
|
|
4
4
|
var Game_1 = require("./Game");
|
|
5
5
|
var index_1 = require("./index");
|
|
6
6
|
var RandomMove_1 = require("./RandomMove");
|
|
7
7
|
function playAction(game, move, playerId, id) {
|
|
8
|
-
var action = { id: id, playerId: playerId, move: move, consequences: [] };
|
|
9
8
|
if ((0, RandomMove_1.hasRandomMove)(game)) {
|
|
10
9
|
move = game.randomize(move);
|
|
11
10
|
}
|
|
11
|
+
var action = { id: id, playerId: playerId, move: move, consequences: [] };
|
|
12
12
|
game.play(JSON.parse(JSON.stringify(move)));
|
|
13
|
-
(0, Game_1.
|
|
14
|
-
var consequences = (0, RandomMove_1.getRandomAutomaticMoves)(game);
|
|
15
|
-
for (var _i = 0, consequences_1 = consequences; _i < consequences_1.length; _i++) {
|
|
16
|
-
var move_1 = consequences_1[_i];
|
|
17
|
-
game.play(JSON.parse(JSON.stringify(move_1)));
|
|
18
|
-
action.consequences.push(move_1);
|
|
19
|
-
}
|
|
20
|
-
return consequences.length > 0;
|
|
21
|
-
}, { errorFn: function () { return new Error("Infinite loop detected while applying automatic moves after ".concat(JSON.stringify(move), " in ").concat(JSON.stringify(game.state))); } });
|
|
13
|
+
(0, Game_1.applyAutomaticMoves)(game, function (move) { return action.consequences.push(move); });
|
|
22
14
|
return action;
|
|
23
15
|
}
|
|
24
16
|
exports.playAction = playAction;
|
|
25
17
|
function playActionWithViews(game, move, playerId, recipients, id) {
|
|
18
|
+
if ((0, RandomMove_1.hasRandomMove)(game)) {
|
|
19
|
+
move = game.randomize(move);
|
|
20
|
+
}
|
|
26
21
|
var actionWithView = {
|
|
27
22
|
action: { id: id, playerId: playerId, move: move, consequences: [] },
|
|
28
23
|
views: []
|
|
29
24
|
};
|
|
30
|
-
if ((0, RandomMove_1.hasRandomMove)(game)) {
|
|
31
|
-
move = game.randomize(move);
|
|
32
|
-
}
|
|
33
25
|
// Prepare action view for each player
|
|
34
26
|
for (var _i = 0, recipients_1 = recipients; _i < recipients_1.length; _i++) {
|
|
35
27
|
var recipient = recipients_1[_i];
|
|
@@ -38,19 +30,13 @@ function playActionWithViews(game, move, playerId, recipients, id) {
|
|
|
38
30
|
// Prepare action view for spectators
|
|
39
31
|
actionWithView.views.push({ action: { id: id, playerId: playerId, move: (0, index_1.getMoveView)(game, move), consequences: [] } });
|
|
40
32
|
game.play(JSON.parse(JSON.stringify(move)));
|
|
41
|
-
(0, Game_1.
|
|
42
|
-
|
|
43
|
-
for (var _i = 0,
|
|
44
|
-
var
|
|
45
|
-
|
|
46
|
-
for (var _a = 0, _b = actionWithView.views; _a < _b.length; _a++) {
|
|
47
|
-
var view = _b[_a];
|
|
48
|
-
view.action.consequences.push((0, index_1.getMoveView)(game, move_2, view.recipient));
|
|
49
|
-
}
|
|
50
|
-
game.play(JSON.parse(JSON.stringify(move_2)));
|
|
33
|
+
(0, Game_1.applyAutomaticMoves)(game, function (move) {
|
|
34
|
+
actionWithView.action.consequences.push(move);
|
|
35
|
+
for (var _i = 0, _a = actionWithView.views; _i < _a.length; _i++) {
|
|
36
|
+
var view = _a[_i];
|
|
37
|
+
view.action.consequences.push((0, index_1.getMoveView)(game, move, view.recipient));
|
|
51
38
|
}
|
|
52
|
-
|
|
53
|
-
}, { errorFn: function () { return new Error("Infinite loop detected while applying automatic moves after ".concat(JSON.stringify(move), " in ").concat(JSON.stringify(game.state))); } });
|
|
39
|
+
});
|
|
54
40
|
return actionWithView;
|
|
55
41
|
}
|
|
56
42
|
exports.playActionWithViews = playActionWithViews;
|
|
@@ -63,4 +49,8 @@ function replayActions(game, actions) {
|
|
|
63
49
|
actions.forEach(function (action) { return replayAction(game, action); });
|
|
64
50
|
}
|
|
65
51
|
exports.replayActions = replayActions;
|
|
52
|
+
function isSecretAction(action) {
|
|
53
|
+
return Array.isArray(action.secrets);
|
|
54
|
+
}
|
|
55
|
+
exports.isSecretAction = isSecretAction;
|
|
66
56
|
//# sourceMappingURL=Action.js.map
|
package/dist/Action.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Action.js","sourceRoot":"","sources":["../src/Action.ts"],"names":[],"mappings":";;;AAAA,+
|
|
1
|
+
{"version":3,"file":"Action.js","sourceRoot":"","sources":["../src/Action.ts"],"names":[],"mappings":"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"}
|
package/dist/Game.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
export default interface Game<State, Move = string> {
|
|
2
2
|
state: State;
|
|
3
3
|
play(move: Move): void;
|
|
4
|
-
|
|
4
|
+
getAutomaticMoves?(): Move[];
|
|
5
5
|
}
|
|
6
|
-
export declare function applyAutomaticMoves<State, Move>(game: Game<State, Move
|
|
6
|
+
export declare function applyAutomaticMoves<State, Move>(game: Game<State, Move>, preprocessMove?: (move: Move) => void): void;
|
|
7
7
|
export declare function loopWithFuse(repeat: () => boolean, options?: {
|
|
8
8
|
attempts?: number;
|
|
9
9
|
errorFn?: () => Error;
|
package/dist/Game.js
CHANGED
|
@@ -2,15 +2,23 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.loopWithFuse = exports.applyAutomaticMoves = void 0;
|
|
4
4
|
var RandomMove_1 = require("./RandomMove");
|
|
5
|
-
function applyAutomaticMoves(game) {
|
|
5
|
+
function applyAutomaticMoves(game, preprocessMove) {
|
|
6
|
+
var moves = [];
|
|
6
7
|
loopWithFuse(function () {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
if (moves.length === 0 && game.getAutomaticMoves) {
|
|
9
|
+
moves.push.apply(moves, (0, RandomMove_1.randomizeMoves)(game, game.getAutomaticMoves()));
|
|
10
|
+
}
|
|
11
|
+
var move = moves.shift();
|
|
12
|
+
if (move) {
|
|
13
|
+
if (preprocessMove)
|
|
14
|
+
preprocessMove(move);
|
|
10
15
|
game.play(JSON.parse(JSON.stringify(move)));
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
return false;
|
|
11
20
|
}
|
|
12
|
-
|
|
13
|
-
}, { errorFn: function () { return new Error("Infinite loop detected while applying automatic moves in ".concat(JSON.stringify(game.state))); } });
|
|
21
|
+
}, { errorFn: function () { return new Error("Infinite loop detected while applying move consequences: ".concat(JSON.stringify(game.getAutomaticMoves()), ")")); } });
|
|
14
22
|
}
|
|
15
23
|
exports.applyAutomaticMoves = applyAutomaticMoves;
|
|
16
24
|
function loopWithFuse(repeat, options) {
|
package/dist/Game.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Game.js","sourceRoot":"","sources":["../src/Game.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"Game.js","sourceRoot":"","sources":["../src/Game.ts"],"names":[],"mappings":";;;AAAA,2CAA2C;AAU3C,SAAgB,mBAAmB,CAAc,IAAuB,EAAE,cAAqC;IAC7G,IAAM,KAAK,GAAW,EAAE,CAAA;IACxB,YAAY,CAAC;QACX,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAChD,KAAK,CAAC,IAAI,OAAV,KAAK,EAAS,IAAA,2BAAc,EAAC,IAAI,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC,EAAC;SAC9D;QACD,IAAM,IAAI,GAAG,KAAK,CAAC,KAAK,EAAE,CAAA;QAC1B,IAAI,IAAI,EAAE;YACR,IAAI,cAAc;gBAAE,cAAc,CAAC,IAAI,CAAC,CAAA;YACxC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YAC3C,OAAO,IAAI,CAAA;SACZ;aAAM;YACL,OAAO,KAAK,CAAA;SACb;IACH,CAAC,EAAE,EAAC,OAAO,EAAE,cAAM,OAAA,IAAI,KAAK,CAAC,mEAA4D,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAkB,EAAE,CAAC,MAAG,CAAC,EAAnH,CAAmH,EAAC,CAAC,CAAA;AAC1I,CAAC;AAfD,kDAeC;AAED,SAAgB,YAAY,CAAC,MAAqB,EAAE,OAAsD;IACxG,IAAI,QAAQ,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,KAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;IACzF,IAAM,OAAO,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,KAAI,CAAC,cAAM,OAAA,IAAI,KAAK,CAAC,wBAAwB,CAAC,EAAnC,CAAmC,CAAC,CAAA;IAC/E,OAAO,MAAM,EAAE,EAAE;QACf,IAAI,QAAQ,IAAI,CAAC,EAAE;YACjB,MAAM,OAAO,EAAE,CAAA;SAChB;QACD,QAAQ,EAAE,CAAA;KACX;AACH,CAAC;AATD,oCASC"}
|
|
@@ -7,6 +7,7 @@ export declare function hasIncompleteInformation<State, StateView, Move, MoveVie
|
|
|
7
7
|
export interface SecretInformation<State, StateView, Move = string, MoveView = string, PlayerId = number> extends IncompleteInformation<State, StateView, Move, MoveView, PlayerId> {
|
|
8
8
|
getPlayerView(playerId: PlayerId): StateView;
|
|
9
9
|
getPlayerMoveView?(move: Move, playerId: PlayerId): MoveView;
|
|
10
|
+
keepMoveSecret?(move: Move, playerId: PlayerId): boolean;
|
|
10
11
|
}
|
|
11
12
|
export declare function hasSecretInformation<State, StateView, Move, MoveView, PlayerId>(rules: Rules<State, Move, PlayerId>): rules is SecretInformation<State, StateView, Move, MoveView, PlayerId>;
|
|
12
13
|
export declare function getGameView<State, StateView, Move, MoveView, PlayerId>(game: IncompleteInformation<State, StateView, Move, MoveView, PlayerId>, playerId?: PlayerId): StateView;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IncompleteInformation.js","sourceRoot":"","sources":["../src/IncompleteInformation.ts"],"names":[],"mappings":";;;AAQA,SAAgB,wBAAwB,CAA6C,KAAmC;IACtH,IAAM,IAAI,GAAG,KAA0E,CAAA;IACvF,OAAO,OAAO,IAAI,CAAC,OAAO,KAAK,UAAU,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,UAAU,CAAA;AACrF,CAAC;AAHD,4DAGC;
|
|
1
|
+
{"version":3,"file":"IncompleteInformation.js","sourceRoot":"","sources":["../src/IncompleteInformation.ts"],"names":[],"mappings":";;;AAQA,SAAgB,wBAAwB,CAA6C,KAAmC;IACtH,IAAM,IAAI,GAAG,KAA0E,CAAA;IACvF,OAAO,OAAO,IAAI,CAAC,OAAO,KAAK,UAAU,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,UAAU,CAAA;AACrF,CAAC;AAHD,4DAGC;AAUD,SAAgB,oBAAoB,CAA6C,KAAmC;IAClH,IAAM,IAAI,GAAG,KAAsE,CAAA;IACnF,OAAO,OAAO,IAAI,CAAC,aAAa,KAAK,UAAU,CAAA;AACjD,CAAC;AAHD,oDAGC;AAED,SAAgB,WAAW,CAA6C,IAAuE,EAAE,QAAmB;IAClK,IAAI,oBAAoB,CAA6C,IAAI,CAAC,IAAI,QAAQ,KAAK,SAAS,EAAE;QACpG,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;KACpC;SAAM;QACL,OAAO,IAAI,CAAC,OAAO,EAAE,CAAA;KACtB;AACH,CAAC;AAND,kCAMC;AAED,SAAgB,WAAW,CAA6C,IAAuE,EAAE,IAAU,EAAE,QAAmB;IAC9K,IAAI,oBAAoB,CAA6C,IAAI,CAAC,IAAI,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,iBAAiB,EAAE;QAC9H,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAA;KAC1E;SAAM;QACL,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;KAC1D;AACH,CAAC;AAND,kCAMC"}
|
package/dist/RandomMove.d.ts
CHANGED
|
@@ -4,4 +4,4 @@ export default interface RandomMove<State, Move = string, R = string> extends Ga
|
|
|
4
4
|
play(move: Move & R): void;
|
|
5
5
|
}
|
|
6
6
|
export declare function hasRandomMove<State, Move, R>(game: Game<State, Move>): game is RandomMove<State, Move, R>;
|
|
7
|
-
export declare function
|
|
7
|
+
export declare function randomizeMoves<State, Move>(game: Game<State, Move>, moves: Move[]): Move[];
|
package/dist/RandomMove.js
CHANGED
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.randomizeMoves = exports.hasRandomMove = void 0;
|
|
4
4
|
function hasRandomMove(game) {
|
|
5
5
|
return typeof game.randomize === 'function';
|
|
6
6
|
}
|
|
7
7
|
exports.hasRandomMove = hasRandomMove;
|
|
8
|
-
function
|
|
9
|
-
|
|
10
|
-
var consequences = consequence ? Array.isArray(consequence) ? consequence : [consequence] : [];
|
|
11
|
-
return hasRandomMove(game) ? consequences.map(function (move) { return game.randomize(move); }) : consequences;
|
|
8
|
+
function randomizeMoves(game, moves) {
|
|
9
|
+
return hasRandomMove(game) ? moves.map(function (move) { return game.randomize(move); }) : moves;
|
|
12
10
|
}
|
|
13
|
-
exports.
|
|
11
|
+
exports.randomizeMoves = randomizeMoves;
|
|
14
12
|
//# sourceMappingURL=RandomMove.js.map
|
package/dist/RandomMove.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RandomMove.js","sourceRoot":"","sources":["../src/RandomMove.ts"],"names":[],"mappings":";;;AAQA,SAAgB,aAAa,CAAiB,IAAuB;IACnE,OAAO,OAAQ,IAAmC,CAAC,SAAS,KAAK,UAAU,CAAA;AAC7E,CAAC;AAFD,sCAEC;AAED,SAAgB,
|
|
1
|
+
{"version":3,"file":"RandomMove.js","sourceRoot":"","sources":["../src/RandomMove.ts"],"names":[],"mappings":";;;AAQA,SAAgB,aAAa,CAAiB,IAAuB;IACnE,OAAO,OAAQ,IAAmC,CAAC,SAAS,KAAK,UAAU,CAAA;AAC7E,CAAC;AAFD,sCAEC;AAED,SAAgB,cAAc,CAAc,IAAuB,EAAE,KAAa;IAChF,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAApB,CAAoB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;AAC9E,CAAC;AAFD,wCAEC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
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;
|
|
@@ -0,0 +1,8 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
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>;
|
|
@@ -0,0 +1,9 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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,7 +1,8 @@
|
|
|
1
1
|
import Option from './Option';
|
|
2
2
|
declare type EnumOption<T = any> = Option & {
|
|
3
|
-
values: T[];
|
|
3
|
+
values: T[] | ((players: number) => 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,8 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isEnumOption = void 0;
|
|
3
|
+
exports.getEnumOptionValues = exports.isEnumOption = void 0;
|
|
4
4
|
function isEnumOption(option) {
|
|
5
|
-
|
|
5
|
+
var enumOption = option;
|
|
6
|
+
return Array.isArray(enumOption.values) || typeof enumOption.values === 'function';
|
|
6
7
|
}
|
|
7
8
|
exports.isEnumOption = isEnumOption;
|
|
9
|
+
function getEnumOptionValues(enumOption, players) {
|
|
10
|
+
return Array.isArray(enumOption.values) ? enumOption.values : enumOption.values(players);
|
|
11
|
+
}
|
|
12
|
+
exports.getEnumOptionValues = getEnumOptionValues;
|
|
8
13
|
//# 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,OAAO,KAAK,CAAC,OAAO,
|
|
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"}
|
|
@@ -12,13 +12,14 @@ 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");
|
|
15
16
|
var isWithPlayerIdOptions_1 = __importDefault(require("./isWithPlayerIdOptions"));
|
|
16
17
|
function providePlayerIds(players, optionsSpec) {
|
|
17
|
-
var
|
|
18
|
-
var potentialIds = ((0, isWithPlayerIdOptions_1.default)(optionsSpec) ?
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
var mandatoryIds = (
|
|
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);
|
|
22
23
|
var result = typeof players === 'number' ? Array(players).fill(null) : __spreadArray([], players, true);
|
|
23
24
|
while (mandatoryIds.some(function (id) { return !result.includes(id); })) {
|
|
24
25
|
var mandatoryId = mandatoryIds.find(function (id) { return !result.includes(id); });
|
|
@@ -35,4 +36,18 @@ function providePlayerIds(players, optionsSpec) {
|
|
|
35
36
|
return result;
|
|
36
37
|
}
|
|
37
38
|
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
|
+
}
|
|
38
53
|
//# sourceMappingURL=providePlayerIds.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providePlayerIds.js","sourceRoot":"","sources":["../../src/options/providePlayerIds.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,kFAA2D;AAS3D,SAAwB,gBAAgB,CAAc,OAA+B,EAAE,WAAiB
|
|
1
|
+
{"version":3,"file":"providePlayerIds.js","sourceRoot":"","sources":["../../src/options/providePlayerIds.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gamepark/rules-api",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.15.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": "
|
|
30
|
+
"gitHead": "cc44eab343657650898ac13e9c171858a2df2f2c"
|
|
31
31
|
}
|