@gamepark/rules-api 5.15.0 → 5.15.1

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.
@@ -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.15.1",
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": "8759508221305d931bd9371cd1afca24fd89cb85"
31
31
  }