volleyballsimtypes 0.0.138 → 0.0.140

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 (187) hide show
  1. package/dist/cjs/src/service/player/trait.js +2 -2
  2. package/dist/esm/data/index.d.ts +3 -0
  3. package/dist/esm/data/index.js +3 -0
  4. package/dist/esm/data/init-models.d.ts +2 -0
  5. package/dist/esm/data/init-models.js +194 -0
  6. package/dist/esm/data/models/coach.d.ts +40 -0
  7. package/dist/esm/data/models/coach.js +51 -0
  8. package/dist/esm/data/models/competition-champion.d.ts +23 -0
  9. package/dist/esm/data/models/competition-champion.js +34 -0
  10. package/dist/esm/data/models/competition-match.d.ts +29 -0
  11. package/dist/esm/data/models/competition-match.js +42 -0
  12. package/dist/esm/data/models/competition-teams.d.ts +23 -0
  13. package/dist/esm/data/models/competition-teams.js +38 -0
  14. package/dist/esm/data/models/competition.d.ts +67 -0
  15. package/dist/esm/data/models/competition.js +34 -0
  16. package/dist/esm/data/models/country.d.ts +61 -0
  17. package/dist/esm/data/models/country.js +30 -0
  18. package/dist/esm/data/models/draft-pick.d.ts +31 -0
  19. package/dist/esm/data/models/draft-pick.js +46 -0
  20. package/dist/esm/data/models/draft.d.ts +29 -0
  21. package/dist/esm/data/models/draft.js +30 -0
  22. package/dist/esm/data/models/index.d.ts +24 -0
  23. package/dist/esm/data/models/index.js +24 -0
  24. package/dist/esm/data/models/iteration.d.ts +26 -0
  25. package/dist/esm/data/models/iteration.js +26 -0
  26. package/dist/esm/data/models/league-season.d.ts +23 -0
  27. package/dist/esm/data/models/league-season.js +34 -0
  28. package/dist/esm/data/models/league.d.ts +44 -0
  29. package/dist/esm/data/models/league.js +34 -0
  30. package/dist/esm/data/models/match-rating.d.ts +27 -0
  31. package/dist/esm/data/models/match-rating.js +48 -0
  32. package/dist/esm/data/models/match-set-stats.d.ts +58 -0
  33. package/dist/esm/data/models/match-set-stats.js +123 -0
  34. package/dist/esm/data/models/match-set.d.ts +85 -0
  35. package/dist/esm/data/models/match-set.js +47 -0
  36. package/dist/esm/data/models/match.d.ts +67 -0
  37. package/dist/esm/data/models/match.js +47 -0
  38. package/dist/esm/data/models/performance-stats.d.ts +40 -0
  39. package/dist/esm/data/models/performance-stats.js +81 -0
  40. package/dist/esm/data/models/player-team.d.ts +28 -0
  41. package/dist/esm/data/models/player-team.js +48 -0
  42. package/dist/esm/data/models/player-trait.d.ts +23 -0
  43. package/dist/esm/data/models/player-trait.js +38 -0
  44. package/dist/esm/data/models/player.d.ts +124 -0
  45. package/dist/esm/data/models/player.js +42 -0
  46. package/dist/esm/data/models/rally.d.ts +29 -0
  47. package/dist/esm/data/models/rally.js +46 -0
  48. package/dist/esm/data/models/set-position.d.ts +29 -0
  49. package/dist/esm/data/models/set-position.js +46 -0
  50. package/dist/esm/data/models/team.d.ts +162 -0
  51. package/dist/esm/data/models/team.js +59 -0
  52. package/dist/esm/data/models/trait.d.ts +37 -0
  53. package/dist/esm/data/models/trait.js +26 -0
  54. package/dist/esm/data/models/user.d.ts +22 -0
  55. package/dist/esm/data/models/user.js +53 -0
  56. package/dist/esm/data/transformers/coach.d.ts +5 -0
  57. package/dist/esm/data/transformers/coach.js +25 -0
  58. package/dist/esm/data/transformers/country.d.ts +5 -0
  59. package/dist/esm/data/transformers/country.js +16 -0
  60. package/dist/esm/data/transformers/court-position.d.ts +5 -0
  61. package/dist/esm/data/transformers/court-position.js +27 -0
  62. package/dist/esm/data/transformers/draft-pick.d.ts +5 -0
  63. package/dist/esm/data/transformers/draft-pick.js +18 -0
  64. package/dist/esm/data/transformers/draft.d.ts +5 -0
  65. package/dist/esm/data/transformers/draft.js +20 -0
  66. package/dist/esm/data/transformers/formation.d.ts +5 -0
  67. package/dist/esm/data/transformers/formation.js +8 -0
  68. package/dist/esm/data/transformers/index.d.ts +25 -0
  69. package/dist/esm/data/transformers/index.js +25 -0
  70. package/dist/esm/data/transformers/iteration.d.ts +5 -0
  71. package/dist/esm/data/transformers/iteration.js +14 -0
  72. package/dist/esm/data/transformers/league.d.ts +5 -0
  73. package/dist/esm/data/transformers/league.js +28 -0
  74. package/dist/esm/data/transformers/match-rating.d.ts +4 -0
  75. package/dist/esm/data/transformers/match-rating.js +13 -0
  76. package/dist/esm/data/transformers/match-set-stats.d.ts +5 -0
  77. package/dist/esm/data/transformers/match-set-stats.js +57 -0
  78. package/dist/esm/data/transformers/match-set.d.ts +5 -0
  79. package/dist/esm/data/transformers/match-set.js +44 -0
  80. package/dist/esm/data/transformers/match.d.ts +5 -0
  81. package/dist/esm/data/transformers/match.js +27 -0
  82. package/dist/esm/data/transformers/performance-stats.d.ts +5 -0
  83. package/dist/esm/data/transformers/performance-stats.js +33 -0
  84. package/dist/esm/data/transformers/player-team.d.ts +3 -0
  85. package/dist/esm/data/transformers/player-team.js +9 -0
  86. package/dist/esm/data/transformers/player.d.ts +5 -0
  87. package/dist/esm/data/transformers/player.js +26 -0
  88. package/dist/esm/data/transformers/rally.d.ts +5 -0
  89. package/dist/esm/data/transformers/rally.js +23 -0
  90. package/dist/esm/data/transformers/role.d.ts +5 -0
  91. package/dist/esm/data/transformers/role.js +23 -0
  92. package/dist/esm/data/transformers/season-match.d.ts +4 -0
  93. package/dist/esm/data/transformers/season-match.js +13 -0
  94. package/dist/esm/data/transformers/season.d.ts +5 -0
  95. package/dist/esm/data/transformers/season.js +39 -0
  96. package/dist/esm/data/transformers/set-position.d.ts +5 -0
  97. package/dist/esm/data/transformers/set-position.js +16 -0
  98. package/dist/esm/data/transformers/stage.d.ts +5 -0
  99. package/dist/esm/data/transformers/stage.js +21 -0
  100. package/dist/esm/data/transformers/team.d.ts +5 -0
  101. package/dist/esm/data/transformers/team.js +28 -0
  102. package/dist/esm/data/transformers/tournament-match.d.ts +5 -0
  103. package/dist/esm/data/transformers/tournament-match.js +19 -0
  104. package/dist/esm/data/transformers/tournament.d.ts +5 -0
  105. package/dist/esm/data/transformers/tournament.js +33 -0
  106. package/dist/esm/data/transformers/trait.d.ts +5 -0
  107. package/dist/esm/data/transformers/trait.js +15 -0
  108. package/dist/esm/index.d.ts +2 -0
  109. package/dist/esm/index.js +2 -0
  110. package/dist/esm/service/coach/coach.d.ts +19 -0
  111. package/dist/esm/service/coach/coach.js +11 -0
  112. package/dist/esm/service/coach/formation.d.ts +31 -0
  113. package/dist/esm/service/coach/formation.js +122 -0
  114. package/dist/esm/service/coach/index.d.ts +2 -0
  115. package/dist/esm/service/coach/index.js +2 -0
  116. package/dist/esm/service/competition/index.d.ts +11 -0
  117. package/dist/esm/service/competition/index.js +12 -0
  118. package/dist/esm/service/competition/iteration.d.ts +10 -0
  119. package/dist/esm/service/competition/iteration.js +8 -0
  120. package/dist/esm/service/competition/league.d.ts +16 -0
  121. package/dist/esm/service/competition/league.js +8 -0
  122. package/dist/esm/service/competition/season.d.ts +23 -0
  123. package/dist/esm/service/competition/season.js +27 -0
  124. package/dist/esm/service/competition/stage.d.ts +11 -0
  125. package/dist/esm/service/competition/stage.js +24 -0
  126. package/dist/esm/service/competition/standing.d.ts +28 -0
  127. package/dist/esm/service/competition/standing.js +76 -0
  128. package/dist/esm/service/competition/tournament-match.d.ts +14 -0
  129. package/dist/esm/service/competition/tournament-match.js +9 -0
  130. package/dist/esm/service/competition/tournament.d.ts +20 -0
  131. package/dist/esm/service/competition/tournament.js +18 -0
  132. package/dist/esm/service/country/country.d.ts +17 -0
  133. package/dist/esm/service/country/country.js +18 -0
  134. package/dist/esm/service/country/index.d.ts +1 -0
  135. package/dist/esm/service/country/index.js +1 -0
  136. package/dist/esm/service/draft/draft-pick.d.ts +14 -0
  137. package/dist/esm/service/draft/draft-pick.js +7 -0
  138. package/dist/esm/service/draft/draft.d.ts +15 -0
  139. package/dist/esm/service/draft/draft.js +8 -0
  140. package/dist/esm/service/draft/index.d.ts +2 -0
  141. package/dist/esm/service/draft/index.js +2 -0
  142. package/dist/esm/service/event/index.d.ts +1 -0
  143. package/dist/esm/service/event/index.js +1 -0
  144. package/dist/esm/service/event/rally-event.d.ts +20 -0
  145. package/dist/esm/service/event/rally-event.js +16 -0
  146. package/dist/esm/service/index.d.ts +9 -0
  147. package/dist/esm/service/index.js +9 -0
  148. package/dist/esm/service/match/court-position.d.ts +21 -0
  149. package/dist/esm/service/match/court-position.js +53 -0
  150. package/dist/esm/service/match/court-target-enum.d.ts +21 -0
  151. package/dist/esm/service/match/court-target-enum.js +54 -0
  152. package/dist/esm/service/match/index.d.ts +7 -0
  153. package/dist/esm/service/match/index.js +7 -0
  154. package/dist/esm/service/match/match-rating.d.ts +35 -0
  155. package/dist/esm/service/match/match-rating.js +61 -0
  156. package/dist/esm/service/match/match-set.d.ts +65 -0
  157. package/dist/esm/service/match/match-set.js +56 -0
  158. package/dist/esm/service/match/match-team.d.ts +7 -0
  159. package/dist/esm/service/match/match-team.js +17 -0
  160. package/dist/esm/service/match/match.d.ts +36 -0
  161. package/dist/esm/service/match/match.js +57 -0
  162. package/dist/esm/service/match/rally.d.ts +22 -0
  163. package/dist/esm/service/match/rally.js +13 -0
  164. package/dist/esm/service/player/index.d.ts +5 -0
  165. package/dist/esm/service/player/index.js +5 -0
  166. package/dist/esm/service/player/performance-stats.d.ts +30 -0
  167. package/dist/esm/service/player/performance-stats.js +34 -0
  168. package/dist/esm/service/player/player.d.ts +46 -0
  169. package/dist/esm/service/player/player.js +84 -0
  170. package/dist/esm/service/player/role.d.ts +17 -0
  171. package/dist/esm/service/player/role.js +42 -0
  172. package/dist/esm/service/player/stats.d.ts +11 -0
  173. package/dist/esm/service/player/stats.js +25 -0
  174. package/dist/esm/service/player/trait.d.ts +21 -0
  175. package/dist/esm/service/player/trait.js +108 -0
  176. package/dist/esm/service/team/index.d.ts +1 -0
  177. package/dist/esm/service/team/index.js +1 -0
  178. package/dist/esm/service/team/team.d.ts +31 -0
  179. package/dist/esm/service/team/team.js +32 -0
  180. package/dist/esm/service/utils/index.d.ts +2 -0
  181. package/dist/esm/service/utils/index.js +2 -0
  182. package/dist/esm/service/utils/object-utils.d.ts +1 -0
  183. package/dist/esm/service/utils/object-utils.js +1 -0
  184. package/dist/esm/service/utils/string-utils.d.ts +2 -0
  185. package/dist/esm/service/utils/string-utils.js +11 -0
  186. package/dist/esm/src/service/player/trait.js +2 -2
  187. package/package.json +1 -1
@@ -0,0 +1,108 @@
1
+ import { GeneralStat } from './stats';
2
+ export class Trait {
3
+ constructor({ id, name, modifier, chance, statThreshold, stat, weight }) {
4
+ this.id = id;
5
+ this.name = name;
6
+ this.modifier = modifier;
7
+ this.chance = chance;
8
+ this.statThreshold = statThreshold;
9
+ this.stat = stat;
10
+ this.weight = weight;
11
+ }
12
+ static getTraits() {
13
+ return [Trait.GUARDIAN, Trait.MARKSMAN, Trait.METEOR_SERVE, Trait.VIGOROUS, Trait.MOVING_WALL, Trait.MASTER_MIND];
14
+ }
15
+ static assignTraits(performanceStats) {
16
+ const qualifiedTraits = this.getTraits().filter(trait => {
17
+ return GeneralStat.calculateScore(performanceStats, trait.stat) >= trait.statThreshold;
18
+ });
19
+ const random = Math.random();
20
+ let traitCount;
21
+ switch (true) {
22
+ case random > 0.95:
23
+ traitCount = 3;
24
+ break;
25
+ case random > 0.85:
26
+ traitCount = 2;
27
+ break;
28
+ case random > 0.6:
29
+ traitCount = 1;
30
+ break;
31
+ default:
32
+ traitCount = 0;
33
+ }
34
+ return qualifiedTraits.sort((t1, t2) => t2.weight - t1.weight)
35
+ .slice(0, traitCount);
36
+ }
37
+ toString() {
38
+ return JSON.stringify({
39
+ name: this.name,
40
+ modifier: this.modifier,
41
+ statThreshold: this.statThreshold,
42
+ chance: this.chance,
43
+ stat: this.stat,
44
+ weight: this.weight
45
+ });
46
+ }
47
+ }
48
+ // A Setter gets a bonus to their score and the receiving attacker gets a bonus as well.
49
+ // Stacks with attacker bonus
50
+ Trait.MASTER_MIND = new Trait({
51
+ id: '0117a315-a743-43e3-9ec2-ad5cf700ef08',
52
+ name: 'Master Mind',
53
+ modifier: 1.1,
54
+ chance: 0.2,
55
+ statThreshold: 80,
56
+ stat: GeneralStat.ATTACK,
57
+ weight: 10
58
+ });
59
+ // Will always participate in blocking regardless of chance and adds
60
+ Trait.MOVING_WALL = new Trait({
61
+ id: '304c53f6-5e7a-44d3-9625-f10d8109421a',
62
+ name: 'Moving Wall',
63
+ modifier: 1.1,
64
+ chance: 1,
65
+ statThreshold: 75,
66
+ stat: GeneralStat.DEFENSE,
67
+ weight: 5
68
+ });
69
+ // On attack, will always pick the worst receiver and adds a 10% to score
70
+ Trait.MARKSMAN = new Trait({
71
+ id: 'ace3458e-69ab-487c-a9c0-d656f705d8dd',
72
+ name: 'Marksman',
73
+ modifier: 1.01,
74
+ chance: 0.3,
75
+ statThreshold: 75,
76
+ stat: GeneralStat.ATTACK,
77
+ weight: 5
78
+ });
79
+ // Increases the score of the serve by 25% when serve type is Jumping.
80
+ Trait.METEOR_SERVE = new Trait({
81
+ id: 'c929a79d-5866-40d6-bbd6-b0b67a929c4c',
82
+ name: 'Meteor Serve',
83
+ modifier: 1.1,
84
+ chance: 0.1,
85
+ statThreshold: 75,
86
+ stat: GeneralStat.SERVE,
87
+ weight: 10
88
+ });
89
+ // Has a 50% chance of taking an action without decreasing energy.
90
+ Trait.VIGOROUS = new Trait({
91
+ id: 'f9599b87-b3b2-49ce-8224-470f6fe6ed64',
92
+ name: 'Vigorous',
93
+ modifier: 1,
94
+ statThreshold: 60,
95
+ chance: 0.5,
96
+ stat: GeneralStat.PHYSICAL,
97
+ weight: 1
98
+ });
99
+ // Takes place of the receiver and increases reception score by 25%, guaranteeing success. Can only trigger in back-row.
100
+ Trait.GUARDIAN = new Trait({
101
+ id: 'c3291953-9256-4559-b5a9-955ccb8f9a6f',
102
+ name: 'Guardian',
103
+ chance: 0.25,
104
+ statThreshold: 75,
105
+ modifier: 1.25,
106
+ stat: GeneralStat.DEFENSE,
107
+ weight: 10
108
+ });
@@ -0,0 +1 @@
1
+ export * from './team';
@@ -0,0 +1 @@
1
+ export * from './team';
@@ -0,0 +1,31 @@
1
+ import { Coach } from '../coach';
2
+ import { Player } from '../player';
3
+ import { Country } from '../country';
4
+ import { League } from '../competition';
5
+ interface TeamParams {
6
+ readonly id: string;
7
+ readonly rating: number;
8
+ readonly name: string;
9
+ readonly shortName: string;
10
+ readonly roster: Player[];
11
+ readonly country?: Country;
12
+ readonly league?: League;
13
+ readonly coach?: Coach;
14
+ }
15
+ export declare class Team {
16
+ readonly id: string;
17
+ readonly roster: Player[];
18
+ readonly name: string;
19
+ readonly shortName: string;
20
+ readonly coach?: Coach;
21
+ readonly league?: League;
22
+ readonly country?: Country;
23
+ private _rating;
24
+ constructor({ id, rating, name, shortName, country, roster, coach, league }: TeamParams);
25
+ get rating(): number;
26
+ set rating(value: number);
27
+ isPlayerInRoster(player: Player): boolean;
28
+ toString(): string;
29
+ updateRating(rankingPoints: number): void;
30
+ }
31
+ export {};
@@ -0,0 +1,32 @@
1
+ import { validateUUID } from '../utils';
2
+ export class Team {
3
+ constructor({ id, rating, name, shortName, country, roster, coach, league }) {
4
+ validateUUID(id);
5
+ this.id = id;
6
+ this._rating = rating;
7
+ this.roster = roster;
8
+ this.coach = coach;
9
+ this.name = name;
10
+ this.shortName = shortName;
11
+ this.country = country;
12
+ this.league = league;
13
+ }
14
+ get rating() {
15
+ return this._rating;
16
+ }
17
+ set rating(value) {
18
+ this._rating = value;
19
+ }
20
+ isPlayerInRoster(player) {
21
+ return this.roster.some(p => p.id === player.id);
22
+ }
23
+ toString() {
24
+ if (this.country == null) {
25
+ throw new Error('UNKNOWN_COUNTRY');
26
+ }
27
+ return `${this.name} [${this.shortName}] (${this.country?.name}) ELO=${this._rating}`;
28
+ }
29
+ updateRating(rankingPoints) {
30
+ this._rating += rankingPoints;
31
+ }
32
+ }
@@ -0,0 +1,2 @@
1
+ export * from './string-utils';
2
+ export * from './object-utils';
@@ -0,0 +1,2 @@
1
+ export * from './string-utils';
2
+ export * from './object-utils';
@@ -0,0 +1 @@
1
+ export declare const getKeys: <T extends object>(obj: T) => (keyof T)[];
@@ -0,0 +1 @@
1
+ export const getKeys = Object.keys;
@@ -0,0 +1,2 @@
1
+ export declare function formatNumber(n: number): string;
2
+ export declare function validateUUID(uuid: string): boolean;
@@ -0,0 +1,11 @@
1
+ export function formatNumber(n) {
2
+ if (n < 0)
3
+ throw new Error('UNEXPECTED_NEGATIVE_NUMBER');
4
+ return n < 10 ? `0${n}` : `${n}`;
5
+ }
6
+ export function validateUUID(uuid) {
7
+ const regex = /^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/;
8
+ if (!regex.test(uuid))
9
+ throw new Error('INVALID_UUID');
10
+ return true;
11
+ }
@@ -70,7 +70,7 @@ Trait.MOVING_WALL = new Trait({
70
70
  Trait.MARKSMAN = new Trait({
71
71
  id: 'ace3458e-69ab-487c-a9c0-d656f705d8dd',
72
72
  name: 'Marksman',
73
- modifier: 1.1,
73
+ modifier: 1.01,
74
74
  chance: 0.3,
75
75
  statThreshold: 75,
76
76
  stat: GeneralStat.ATTACK,
@@ -80,7 +80,7 @@ Trait.MARKSMAN = new Trait({
80
80
  Trait.METEOR_SERVE = new Trait({
81
81
  id: 'c929a79d-5866-40d6-bbd6-b0b67a929c4c',
82
82
  name: 'Meteor Serve',
83
- modifier: 1.25,
83
+ modifier: 1.1,
84
84
  chance: 0.1,
85
85
  statThreshold: 75,
86
86
  stat: GeneralStat.SERVE,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "volleyballsimtypes",
3
- "version": "0.0.138",
3
+ "version": "0.0.140",
4
4
  "description": "vbsim types",
5
5
  "main": "./dist/cjs/src/index.js",
6
6
  "module": "./dist/esm/src/index.js",