volleyballsimtypes 0.0.174 → 0.0.176
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/cjs/src/data/transformers/events.d.ts +8 -0
- package/dist/cjs/src/data/transformers/events.js +75 -0
- package/dist/cjs/src/data/transformers/match-set-stats.d.ts +1 -1
- package/dist/cjs/src/data/transformers/match-set-stats.js +5 -4
- package/dist/cjs/src/data/transformers/player.d.ts +3 -1
- package/dist/cjs/src/data/transformers/player.js +50 -2
- package/dist/cjs/src/data/transformers/rally.js +31 -1
- package/dist/cjs/src/data/transformers/team.d.ts +1 -1
- package/dist/cjs/src/data/transformers/team.js +9 -8
- package/dist/cjs/src/service/event/block.d.ts +36 -0
- package/dist/cjs/src/service/event/block.js +37 -0
- package/dist/cjs/src/service/event/in-play-event.d.ts +17 -0
- package/dist/cjs/src/service/event/in-play-event.js +21 -0
- package/dist/cjs/src/service/event/index.d.ts +8 -1
- package/dist/cjs/src/service/event/index.js +8 -1
- package/dist/cjs/src/service/event/libero-replacement.d.ts +18 -0
- package/dist/cjs/src/service/event/libero-replacement.js +25 -0
- package/dist/cjs/src/service/event/rally-event.d.ts +13 -4
- package/dist/cjs/src/service/event/rally-event.js +13 -3
- package/dist/cjs/src/service/event/reception.d.ts +33 -0
- package/dist/cjs/src/service/event/reception.js +34 -0
- package/dist/cjs/src/service/event/serve.d.ts +33 -0
- package/dist/cjs/src/service/event/serve.js +34 -0
- package/dist/cjs/src/service/event/set.d.ts +31 -0
- package/dist/cjs/src/service/event/set.js +32 -0
- package/dist/cjs/src/service/event/spike.d.ts +35 -0
- package/dist/cjs/src/service/event/spike.js +36 -0
- package/dist/cjs/src/service/event/substitution.d.ts +11 -0
- package/dist/cjs/src/service/event/substitution.js +18 -0
- package/dist/cjs/src/service/match/match-set.d.ts +4 -3
- package/dist/cjs/src/service/match/match-set.js +1 -1
- package/dist/cjs/src/service/player/player.d.ts +4 -1
- package/dist/cjs/src/service/player/player.js +2 -1
- package/dist/esm/src/data/transformers/events.d.ts +8 -0
- package/dist/esm/src/data/transformers/events.js +65 -0
- package/dist/esm/src/data/transformers/match-set-stats.d.ts +1 -1
- package/dist/esm/src/data/transformers/match-set-stats.js +5 -4
- package/dist/esm/src/data/transformers/player.d.ts +3 -1
- package/dist/esm/src/data/transformers/player.js +48 -2
- package/dist/esm/src/data/transformers/rally.js +31 -1
- package/dist/esm/src/data/transformers/team.d.ts +1 -1
- package/dist/esm/src/data/transformers/team.js +10 -9
- package/dist/esm/src/service/event/block.d.ts +36 -0
- package/dist/esm/src/service/event/block.js +33 -0
- package/dist/esm/src/service/event/in-play-event.d.ts +17 -0
- package/dist/esm/src/service/event/in-play-event.js +17 -0
- package/dist/esm/src/service/event/index.d.ts +8 -1
- package/dist/esm/src/service/event/index.js +8 -1
- package/dist/esm/src/service/event/libero-replacement.d.ts +18 -0
- package/dist/esm/src/service/event/libero-replacement.js +21 -0
- package/dist/esm/src/service/event/rally-event.d.ts +13 -4
- package/dist/esm/src/service/event/rally-event.js +12 -2
- package/dist/esm/src/service/event/reception.d.ts +33 -0
- package/dist/esm/src/service/event/reception.js +30 -0
- package/dist/esm/src/service/event/serve.d.ts +33 -0
- package/dist/esm/src/service/event/serve.js +30 -0
- package/dist/esm/src/service/event/set.d.ts +31 -0
- package/dist/esm/src/service/event/set.js +28 -0
- package/dist/esm/src/service/event/spike.d.ts +35 -0
- package/dist/esm/src/service/event/spike.js +32 -0
- package/dist/esm/src/service/event/substitution.d.ts +11 -0
- package/dist/esm/src/service/event/substitution.js +14 -0
- package/dist/esm/src/service/match/match-set.d.ts +4 -3
- package/dist/esm/src/service/match/match-set.js +1 -1
- package/dist/esm/src/service/player/player.d.ts +4 -1
- package/dist/esm/src/service/player/player.js +2 -1
- package/package.json +1 -1
- package/dist/cjs/src/service/event/events.d.ts +0 -93
- package/dist/cjs/src/service/event/events.js +0 -94
- package/dist/esm/src/service/event/events.d.ts +0 -93
- package/dist/esm/src/service/event/events.js +0 -91
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Serve = exports.ServeFailureEnum = exports.ServeTypeEnum = void 0;
|
|
4
|
+
const rally_event_1 = require("./rally-event");
|
|
5
|
+
const in_play_event_1 = require("./in-play-event");
|
|
6
|
+
var ServeTypeEnum;
|
|
7
|
+
(function (ServeTypeEnum) {
|
|
8
|
+
ServeTypeEnum[ServeTypeEnum["OVERHAND_TOPSPIN"] = 0] = "OVERHAND_TOPSPIN";
|
|
9
|
+
ServeTypeEnum[ServeTypeEnum["OVERHAND_FLOAT"] = 1] = "OVERHAND_FLOAT";
|
|
10
|
+
ServeTypeEnum[ServeTypeEnum["JUMP_TOPSPIN"] = 2] = "JUMP_TOPSPIN";
|
|
11
|
+
ServeTypeEnum[ServeTypeEnum["JUMP_FLOAT"] = 3] = "JUMP_FLOAT";
|
|
12
|
+
})(ServeTypeEnum = exports.ServeTypeEnum || (exports.ServeTypeEnum = {}));
|
|
13
|
+
var ServeFailureEnum;
|
|
14
|
+
(function (ServeFailureEnum) {
|
|
15
|
+
ServeFailureEnum[ServeFailureEnum["NO_FAILURE"] = 0] = "NO_FAILURE";
|
|
16
|
+
ServeFailureEnum[ServeFailureEnum["FAULT"] = 1] = "FAULT";
|
|
17
|
+
ServeFailureEnum[ServeFailureEnum["MISS"] = 2] = "MISS";
|
|
18
|
+
ServeFailureEnum[ServeFailureEnum["NET"] = 3] = "NET";
|
|
19
|
+
ServeFailureEnum[ServeFailureEnum["OUT_OF_BOUNDS"] = 4] = "OUT_OF_BOUNDS";
|
|
20
|
+
})(ServeFailureEnum = exports.ServeFailureEnum || (exports.ServeFailureEnum = {}));
|
|
21
|
+
const eventType = rally_event_1.EventTypeEnum.SERVE;
|
|
22
|
+
class Serve extends in_play_event_1.InPlayEvent {
|
|
23
|
+
constructor({ score, playerId, target, failure, type, activeTraits }) {
|
|
24
|
+
super({ score, playerId, target, activeTraits, eventType });
|
|
25
|
+
this.type = type;
|
|
26
|
+
this.failure = failure;
|
|
27
|
+
}
|
|
28
|
+
toString() {
|
|
29
|
+
const failure = `"failure":${this.failure}`;
|
|
30
|
+
const type = `"type":${this.type}`;
|
|
31
|
+
return `{${this._toString()},${failure},${type}}`;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
exports.Serve = Serve;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { CourtTarget } from '../match';
|
|
2
|
+
import { Trait } from '../player';
|
|
3
|
+
import { InPlayEvent } from './in-play-event';
|
|
4
|
+
export declare enum SetTypeEnum {
|
|
5
|
+
OVERHAND = 0,
|
|
6
|
+
DUMP = 1
|
|
7
|
+
}
|
|
8
|
+
export type SetType = SetTypeEnum.OVERHAND | SetTypeEnum.DUMP;
|
|
9
|
+
export declare enum SetFailureEnum {
|
|
10
|
+
NO_FAILURE = 0,
|
|
11
|
+
FAULT = 1,
|
|
12
|
+
MISS = 2,
|
|
13
|
+
BAD_PASS = 3,
|
|
14
|
+
OUT_OF_BOUNDS = 4
|
|
15
|
+
}
|
|
16
|
+
export type SetFailure = SetFailureEnum.NO_FAILURE | SetFailureEnum.FAULT | SetFailureEnum.MISS | SetFailureEnum.BAD_PASS | SetFailureEnum.OUT_OF_BOUNDS;
|
|
17
|
+
interface SetOpts {
|
|
18
|
+
readonly type: SetType;
|
|
19
|
+
readonly failure: SetFailure;
|
|
20
|
+
readonly target: CourtTarget;
|
|
21
|
+
readonly score: number;
|
|
22
|
+
readonly activeTraits: Trait[];
|
|
23
|
+
readonly playerId: string;
|
|
24
|
+
}
|
|
25
|
+
export declare class Set extends InPlayEvent<SetFailure, SetType> {
|
|
26
|
+
readonly failure: SetFailure;
|
|
27
|
+
readonly type: SetType;
|
|
28
|
+
constructor({ score, playerId, target, failure, type, activeTraits }: SetOpts);
|
|
29
|
+
toString(): string;
|
|
30
|
+
}
|
|
31
|
+
export {};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Set = exports.SetFailureEnum = exports.SetTypeEnum = void 0;
|
|
4
|
+
const rally_event_1 = require("./rally-event");
|
|
5
|
+
const in_play_event_1 = require("./in-play-event");
|
|
6
|
+
var SetTypeEnum;
|
|
7
|
+
(function (SetTypeEnum) {
|
|
8
|
+
SetTypeEnum[SetTypeEnum["OVERHAND"] = 0] = "OVERHAND";
|
|
9
|
+
SetTypeEnum[SetTypeEnum["DUMP"] = 1] = "DUMP";
|
|
10
|
+
})(SetTypeEnum = exports.SetTypeEnum || (exports.SetTypeEnum = {}));
|
|
11
|
+
var SetFailureEnum;
|
|
12
|
+
(function (SetFailureEnum) {
|
|
13
|
+
SetFailureEnum[SetFailureEnum["NO_FAILURE"] = 0] = "NO_FAILURE";
|
|
14
|
+
SetFailureEnum[SetFailureEnum["FAULT"] = 1] = "FAULT";
|
|
15
|
+
SetFailureEnum[SetFailureEnum["MISS"] = 2] = "MISS";
|
|
16
|
+
SetFailureEnum[SetFailureEnum["BAD_PASS"] = 3] = "BAD_PASS";
|
|
17
|
+
SetFailureEnum[SetFailureEnum["OUT_OF_BOUNDS"] = 4] = "OUT_OF_BOUNDS";
|
|
18
|
+
})(SetFailureEnum = exports.SetFailureEnum || (exports.SetFailureEnum = {}));
|
|
19
|
+
const eventType = rally_event_1.EventTypeEnum.SET;
|
|
20
|
+
class Set extends in_play_event_1.InPlayEvent {
|
|
21
|
+
constructor({ score, playerId, target, failure, type, activeTraits }) {
|
|
22
|
+
super({ score, playerId, target, activeTraits, eventType });
|
|
23
|
+
this.type = type;
|
|
24
|
+
this.failure = failure;
|
|
25
|
+
}
|
|
26
|
+
toString() {
|
|
27
|
+
const failure = `"failure":${this.failure}`;
|
|
28
|
+
const type = `"type":${this.type}`;
|
|
29
|
+
return `{${this._toString()},${failure},${type}}`;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
exports.Set = Set;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { CourtTarget } from '../match';
|
|
2
|
+
import { Trait } from '../player';
|
|
3
|
+
import { InPlayEvent } from './in-play-event';
|
|
4
|
+
export declare enum SpikeTypeEnum {
|
|
5
|
+
CROSS_SHOT = 0,
|
|
6
|
+
LINE_SHOT = 1,
|
|
7
|
+
REVERSE_CROSS = 2,
|
|
8
|
+
TIP = 3,
|
|
9
|
+
DOWN_BALL = 4,
|
|
10
|
+
OVERHAND = 5
|
|
11
|
+
}
|
|
12
|
+
export type SpikeType = SpikeTypeEnum.CROSS_SHOT | SpikeTypeEnum.LINE_SHOT | SpikeTypeEnum.REVERSE_CROSS | SpikeTypeEnum.TIP | SpikeTypeEnum.DOWN_BALL | SpikeTypeEnum.OVERHAND;
|
|
13
|
+
export declare enum SpikeFailureEnum {
|
|
14
|
+
NO_FAILURE = 0,
|
|
15
|
+
FAULT = 1,
|
|
16
|
+
MISS = 2,
|
|
17
|
+
OUT_OF_BOUNDS = 3,
|
|
18
|
+
NET = 4
|
|
19
|
+
}
|
|
20
|
+
export type SpikeFailure = SpikeFailureEnum.NO_FAILURE | SpikeFailureEnum.FAULT | SpikeFailureEnum.MISS | SpikeFailureEnum.OUT_OF_BOUNDS | SpikeFailureEnum.NET;
|
|
21
|
+
interface SpikeOpts {
|
|
22
|
+
readonly type: SpikeType;
|
|
23
|
+
readonly failure: SpikeFailure;
|
|
24
|
+
readonly target: CourtTarget;
|
|
25
|
+
readonly score: number;
|
|
26
|
+
readonly activeTraits: Trait[];
|
|
27
|
+
readonly playerId: string;
|
|
28
|
+
}
|
|
29
|
+
export declare class Spike extends InPlayEvent<SpikeFailure, SpikeType> {
|
|
30
|
+
readonly failure: SpikeFailure;
|
|
31
|
+
readonly type: SpikeType;
|
|
32
|
+
constructor({ score, playerId, target, failure, type, activeTraits }: SpikeOpts);
|
|
33
|
+
toString(): string;
|
|
34
|
+
}
|
|
35
|
+
export {};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Spike = exports.SpikeFailureEnum = exports.SpikeTypeEnum = void 0;
|
|
4
|
+
const rally_event_1 = require("./rally-event");
|
|
5
|
+
const in_play_event_1 = require("./in-play-event");
|
|
6
|
+
var SpikeTypeEnum;
|
|
7
|
+
(function (SpikeTypeEnum) {
|
|
8
|
+
SpikeTypeEnum[SpikeTypeEnum["CROSS_SHOT"] = 0] = "CROSS_SHOT";
|
|
9
|
+
SpikeTypeEnum[SpikeTypeEnum["LINE_SHOT"] = 1] = "LINE_SHOT";
|
|
10
|
+
SpikeTypeEnum[SpikeTypeEnum["REVERSE_CROSS"] = 2] = "REVERSE_CROSS";
|
|
11
|
+
SpikeTypeEnum[SpikeTypeEnum["TIP"] = 3] = "TIP";
|
|
12
|
+
SpikeTypeEnum[SpikeTypeEnum["DOWN_BALL"] = 4] = "DOWN_BALL";
|
|
13
|
+
SpikeTypeEnum[SpikeTypeEnum["OVERHAND"] = 5] = "OVERHAND";
|
|
14
|
+
})(SpikeTypeEnum = exports.SpikeTypeEnum || (exports.SpikeTypeEnum = {}));
|
|
15
|
+
var SpikeFailureEnum;
|
|
16
|
+
(function (SpikeFailureEnum) {
|
|
17
|
+
SpikeFailureEnum[SpikeFailureEnum["NO_FAILURE"] = 0] = "NO_FAILURE";
|
|
18
|
+
SpikeFailureEnum[SpikeFailureEnum["FAULT"] = 1] = "FAULT";
|
|
19
|
+
SpikeFailureEnum[SpikeFailureEnum["MISS"] = 2] = "MISS";
|
|
20
|
+
SpikeFailureEnum[SpikeFailureEnum["OUT_OF_BOUNDS"] = 3] = "OUT_OF_BOUNDS";
|
|
21
|
+
SpikeFailureEnum[SpikeFailureEnum["NET"] = 4] = "NET";
|
|
22
|
+
})(SpikeFailureEnum = exports.SpikeFailureEnum || (exports.SpikeFailureEnum = {}));
|
|
23
|
+
const eventType = rally_event_1.EventTypeEnum.SPIKE;
|
|
24
|
+
class Spike extends in_play_event_1.InPlayEvent {
|
|
25
|
+
constructor({ score, playerId, target, failure, type, activeTraits }) {
|
|
26
|
+
super({ score, playerId, target, activeTraits, eventType });
|
|
27
|
+
this.type = type;
|
|
28
|
+
this.failure = failure;
|
|
29
|
+
}
|
|
30
|
+
toString() {
|
|
31
|
+
const failure = `"failure":${this.failure}`;
|
|
32
|
+
const type = `"type":${this.type}`;
|
|
33
|
+
return `{${this._toString()},${failure},${type}}`;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
exports.Spike = Spike;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { RallyEvent } from './rally-event';
|
|
2
|
+
interface SubstitutionOpts {
|
|
3
|
+
readonly playerOut: string;
|
|
4
|
+
readonly playerId: string;
|
|
5
|
+
}
|
|
6
|
+
export declare class Substitution extends RallyEvent {
|
|
7
|
+
readonly playerOut: string;
|
|
8
|
+
constructor({ playerOut, playerId }: SubstitutionOpts);
|
|
9
|
+
toString(): string;
|
|
10
|
+
}
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Substitution = void 0;
|
|
4
|
+
const rally_event_1 = require("./rally-event");
|
|
5
|
+
const eventType = rally_event_1.EventTypeEnum.SUBSTITUTION;
|
|
6
|
+
class Substitution extends rally_event_1.RallyEvent {
|
|
7
|
+
constructor({ playerOut, playerId }) {
|
|
8
|
+
super({ eventType, playerId });
|
|
9
|
+
this.playerOut = playerOut;
|
|
10
|
+
}
|
|
11
|
+
toString() {
|
|
12
|
+
const playerId = `"playerId":"${this.playerId}"`;
|
|
13
|
+
const playerOut = `"playerOut":"${this.playerOut}"`;
|
|
14
|
+
const eventType = `"eventType":${this.eventType}`;
|
|
15
|
+
return `{${playerId},${playerOut},${eventType}}`;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
exports.Substitution = Substitution;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { PlayerPosition, Rally } from './rally';
|
|
2
2
|
import { MatchTeam } from './match-team';
|
|
3
|
-
import { Player } from '../player';
|
|
4
3
|
declare enum ScoreThreshold {
|
|
5
4
|
SET = 25,
|
|
6
5
|
TIE_BREAK = 15
|
|
@@ -21,7 +20,8 @@ export interface EventStat {
|
|
|
21
20
|
error: number;
|
|
22
21
|
}
|
|
23
22
|
export interface SetStatistics {
|
|
24
|
-
|
|
23
|
+
readonly playerId: string;
|
|
24
|
+
order: number;
|
|
25
25
|
ace: number;
|
|
26
26
|
attempts: number;
|
|
27
27
|
contacts: number;
|
|
@@ -34,6 +34,7 @@ export interface SetStatistics {
|
|
|
34
34
|
kills: number;
|
|
35
35
|
killBlocks: number;
|
|
36
36
|
assists: number;
|
|
37
|
+
setsPlayed: number;
|
|
37
38
|
}
|
|
38
39
|
export declare class MatchSet {
|
|
39
40
|
readonly id: string;
|
|
@@ -52,7 +53,7 @@ export declare class MatchSet {
|
|
|
52
53
|
increaseScore(team: MatchTeam): void;
|
|
53
54
|
addRally(rally: Rally): void;
|
|
54
55
|
/**
|
|
55
|
-
* Has a team reached at least 25 points and is the score difference between both teams at least 2?
|
|
56
|
+
* Has a team reached at least 25 points, and is the score difference between both teams at least 2?
|
|
56
57
|
* @returns boolean
|
|
57
58
|
*/
|
|
58
59
|
isOver(): boolean;
|
|
@@ -40,7 +40,7 @@ class MatchSet {
|
|
|
40
40
|
this.rallies.push(rally);
|
|
41
41
|
}
|
|
42
42
|
/**
|
|
43
|
-
* Has a team reached at least 25 points and is the score difference between both teams at least 2?
|
|
43
|
+
* Has a team reached at least 25 points, and is the score difference between both teams at least 2?
|
|
44
44
|
* @returns boolean
|
|
45
45
|
*/
|
|
46
46
|
isOver() {
|
|
@@ -4,6 +4,7 @@ import { Country } from '../country';
|
|
|
4
4
|
import { Rarity } from './rarity';
|
|
5
5
|
import { Stats } from './stats';
|
|
6
6
|
import { Role } from './role';
|
|
7
|
+
import { SetStatistics } from '../match';
|
|
7
8
|
export declare class Stat {
|
|
8
9
|
readonly name: Stats;
|
|
9
10
|
readonly value: number;
|
|
@@ -21,6 +22,7 @@ interface PlayerParams {
|
|
|
21
22
|
readonly roles: Role[];
|
|
22
23
|
readonly traits: Trait[];
|
|
23
24
|
readonly rarity: Rarity;
|
|
25
|
+
readonly gameStats?: SetStatistics[];
|
|
24
26
|
}
|
|
25
27
|
export declare class Name {
|
|
26
28
|
readonly first: string;
|
|
@@ -40,7 +42,8 @@ export declare class Player {
|
|
|
40
42
|
readonly traits: Trait[];
|
|
41
43
|
readonly generalStats: Stat[];
|
|
42
44
|
readonly rarity: Rarity;
|
|
43
|
-
|
|
45
|
+
readonly gameStats?: SetStatistics[];
|
|
46
|
+
constructor({ id, name, country, stats, roles, traits, rarity, gameStats }: PlayerParams);
|
|
44
47
|
static sortPlayers(roles: Role[]): (p1: Player, p2: Player) => number;
|
|
45
48
|
static compareStats(p1: Player, p2: Player): number;
|
|
46
49
|
toString(): string;
|
|
@@ -25,7 +25,7 @@ class Name {
|
|
|
25
25
|
}
|
|
26
26
|
exports.Name = Name;
|
|
27
27
|
class Player {
|
|
28
|
-
constructor({ id, name, country, stats, roles, traits, rarity }) {
|
|
28
|
+
constructor({ id, name, country, stats, roles, traits, rarity, gameStats }) {
|
|
29
29
|
(0, utils_1.validateUUID)(id);
|
|
30
30
|
this.id = id;
|
|
31
31
|
this.name = name;
|
|
@@ -34,6 +34,7 @@ class Player {
|
|
|
34
34
|
this.roles = roles;
|
|
35
35
|
this.traits = traits;
|
|
36
36
|
this.rarity = rarity;
|
|
37
|
+
this.gameStats = gameStats;
|
|
37
38
|
this.generalStats = Object.values(stats_1.StatsEnum).map((stat) => ({
|
|
38
39
|
name: stat,
|
|
39
40
|
value: (0, stats_1.calculateStatScore)(stats, stat)
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Block, LiberoReplacement, Reception, Serve, Set, Spike, Substitution } from '../../service';
|
|
2
|
+
export declare function transformToBlock(event: any): Block;
|
|
3
|
+
export declare function transformToLiberoReplacement(event: any): LiberoReplacement;
|
|
4
|
+
export declare function transformToReception(event: any): Reception;
|
|
5
|
+
export declare function transformToServe(event: any): Serve;
|
|
6
|
+
export declare function transformToSet(event: any): Set;
|
|
7
|
+
export declare function transformToSubstitution(event: any): Substitution;
|
|
8
|
+
export declare function transformToSpike(event: any): Spike;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { Block, LiberoReplacement, Reception, Serve, Set, Spike, Substitution } from '../../service';
|
|
2
|
+
export function transformToBlock(event) {
|
|
3
|
+
return new Block({
|
|
4
|
+
failure: event.failure,
|
|
5
|
+
type: event.type,
|
|
6
|
+
playerId: event.playerId,
|
|
7
|
+
target: event.target,
|
|
8
|
+
blockers: event.blockers,
|
|
9
|
+
score: event.score,
|
|
10
|
+
activeTraits: event.activeTraits
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
export function transformToLiberoReplacement(event) {
|
|
14
|
+
return new LiberoReplacement({
|
|
15
|
+
playerId: event.playerId,
|
|
16
|
+
libero: event.libero,
|
|
17
|
+
type: event.type
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
export function transformToReception(event) {
|
|
21
|
+
return new Reception({
|
|
22
|
+
failure: event.failure,
|
|
23
|
+
type: event.type,
|
|
24
|
+
playerId: event.playerId,
|
|
25
|
+
target: event.target,
|
|
26
|
+
score: event.score,
|
|
27
|
+
activeTraits: event.activeTraits
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
export function transformToServe(event) {
|
|
31
|
+
return new Serve({
|
|
32
|
+
failure: event.failure,
|
|
33
|
+
type: event.type,
|
|
34
|
+
playerId: event.playerId,
|
|
35
|
+
target: event.target,
|
|
36
|
+
score: event.score,
|
|
37
|
+
activeTraits: event.activeTraits
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
export function transformToSet(event) {
|
|
41
|
+
return new Set({
|
|
42
|
+
failure: event.failure,
|
|
43
|
+
type: event.type,
|
|
44
|
+
playerId: event.playerId,
|
|
45
|
+
target: event.target,
|
|
46
|
+
score: event.score,
|
|
47
|
+
activeTraits: event.activeTraits
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
export function transformToSubstitution(event) {
|
|
51
|
+
return new Substitution({
|
|
52
|
+
playerId: event.playerId,
|
|
53
|
+
playerOut: event.playerIdOut
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
export function transformToSpike(event) {
|
|
57
|
+
return new Spike({
|
|
58
|
+
failure: event.failure,
|
|
59
|
+
type: event.type,
|
|
60
|
+
playerId: event.playerId,
|
|
61
|
+
target: event.target,
|
|
62
|
+
score: event.score,
|
|
63
|
+
activeTraits: event.activeTraits
|
|
64
|
+
});
|
|
65
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { MatchSetStatsAttributes, MatchSetStatsModel } from '../models';
|
|
2
2
|
import { SetStatistics } from '../../service';
|
|
3
3
|
declare function transformToAttributes(stats: SetStatistics, setId: string): MatchSetStatsAttributes;
|
|
4
|
-
declare function transformToObject(model: MatchSetStatsModel): SetStatistics;
|
|
4
|
+
declare function transformToObject(model: MatchSetStatsModel, index: number): SetStatistics;
|
|
5
5
|
export { transformToObject as transformToMatchSetStats, transformToAttributes as transformFromMatchSetStats };
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { transformToPlayer } from '.';
|
|
2
1
|
function transformToAttributes(stats, setId) {
|
|
3
2
|
return {
|
|
4
|
-
player_id: stats.
|
|
3
|
+
player_id: stats.playerId,
|
|
5
4
|
match_set_id: setId,
|
|
6
5
|
aces: stats.ace,
|
|
7
6
|
assists: stats.assists,
|
|
@@ -22,7 +21,7 @@ function transformToAttributes(stats, setId) {
|
|
|
22
21
|
kill_blocks: stats.killBlocks
|
|
23
22
|
};
|
|
24
23
|
}
|
|
25
|
-
function transformToObject(model) {
|
|
24
|
+
function transformToObject(model, index) {
|
|
26
25
|
return {
|
|
27
26
|
set: {
|
|
28
27
|
success: model.set_success,
|
|
@@ -51,7 +50,9 @@ function transformToObject(model) {
|
|
|
51
50
|
assists: model.assists,
|
|
52
51
|
ralliesPlayed: model.rallies_played,
|
|
53
52
|
attempts: model.attempts,
|
|
54
|
-
|
|
53
|
+
playerId: model.player_id,
|
|
54
|
+
order: index,
|
|
55
|
+
setsPlayed: 0
|
|
55
56
|
};
|
|
56
57
|
}
|
|
57
58
|
export { transformToObject as transformToMatchSetStats, transformToAttributes as transformFromMatchSetStats };
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { PlayerAttributes, PlayerModel } from '../models';
|
|
2
|
-
import { Player } from '../../service';
|
|
2
|
+
import { Player, SetStatistics } from '../../service';
|
|
3
3
|
declare function transformToAttributes(player: Player): PlayerAttributes;
|
|
4
4
|
declare function transformToObject(model: PlayerModel): Player;
|
|
5
|
+
export declare function calculateMatchStats(gameStats: SetStatistics[]): SetStatistics;
|
|
6
|
+
export declare function reduceStatsFn(acc: SetStatistics, current: SetStatistics): SetStatistics;
|
|
5
7
|
export { transformToObject as transformToPlayer, transformToAttributes as transformFromPlayer };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Player } from '../../service';
|
|
2
|
-
import { transformFromPerformanceStats, transformToCountry, transformToPerformanceStats } from '.';
|
|
2
|
+
import { transformFromPerformanceStats, transformToCountry, transformToMatchSetStats, transformToPerformanceStats } from '.';
|
|
3
3
|
function transformToAttributes(player) {
|
|
4
4
|
return {
|
|
5
5
|
player_id: player.id,
|
|
@@ -13,6 +13,10 @@ function transformToAttributes(player) {
|
|
|
13
13
|
};
|
|
14
14
|
}
|
|
15
15
|
function transformToObject(model) {
|
|
16
|
+
const gameStats = (model.MatchSetStats ?? []).map(transformToMatchSetStats);
|
|
17
|
+
if (gameStats.length > 0) {
|
|
18
|
+
gameStats.push(calculateMatchStats(gameStats));
|
|
19
|
+
}
|
|
16
20
|
return new Player({
|
|
17
21
|
id: model.player_id,
|
|
18
22
|
name: {
|
|
@@ -23,7 +27,49 @@ function transformToObject(model) {
|
|
|
23
27
|
roles: model.roles,
|
|
24
28
|
traits: model.traits,
|
|
25
29
|
stats: transformToPerformanceStats(model.PerformanceStat),
|
|
26
|
-
rarity: model.rarity
|
|
30
|
+
rarity: model.rarity,
|
|
31
|
+
gameStats
|
|
27
32
|
});
|
|
28
33
|
}
|
|
34
|
+
export function calculateMatchStats(gameStats) {
|
|
35
|
+
const emptyStats = {
|
|
36
|
+
playerId: gameStats[0].playerId,
|
|
37
|
+
attempts: 0,
|
|
38
|
+
contacts: 0,
|
|
39
|
+
ralliesPlayed: 0,
|
|
40
|
+
serve: { success: 0, error: 0 },
|
|
41
|
+
reception: { success: 0, error: 0 },
|
|
42
|
+
set: { success: 0, error: 0 },
|
|
43
|
+
attack: { success: 0, error: 0 },
|
|
44
|
+
block: { success: 0, error: 0 },
|
|
45
|
+
kills: 0,
|
|
46
|
+
killBlocks: 0,
|
|
47
|
+
ace: 0,
|
|
48
|
+
assists: 0,
|
|
49
|
+
order: gameStats.length,
|
|
50
|
+
setsPlayed: 0
|
|
51
|
+
};
|
|
52
|
+
return gameStats.reduce(reduceStatsFn, emptyStats);
|
|
53
|
+
}
|
|
54
|
+
export function reduceStatsFn(acc, current) {
|
|
55
|
+
acc.attempts += current.attempts;
|
|
56
|
+
acc.contacts += current.contacts;
|
|
57
|
+
acc.ralliesPlayed += current.ralliesPlayed;
|
|
58
|
+
acc.kills += current.kills;
|
|
59
|
+
acc.killBlocks += current.killBlocks;
|
|
60
|
+
acc.ace += current.ace;
|
|
61
|
+
acc.assists += current.assists;
|
|
62
|
+
acc.serve.success += current.serve.success;
|
|
63
|
+
acc.serve.error += current.serve.error;
|
|
64
|
+
acc.reception.success += current.reception.success;
|
|
65
|
+
acc.reception.error += current.reception.error;
|
|
66
|
+
acc.set.success += current.set.success;
|
|
67
|
+
acc.set.error += current.set.error;
|
|
68
|
+
acc.attack.success += current.attack.success;
|
|
69
|
+
acc.attack.error += current.attack.error;
|
|
70
|
+
acc.block.success += current.block.success;
|
|
71
|
+
acc.block.error += current.block.error;
|
|
72
|
+
acc.setsPlayed++;
|
|
73
|
+
return acc;
|
|
74
|
+
}
|
|
29
75
|
export { transformToObject as transformToPlayer, transformToAttributes as transformFromPlayer };
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Rally } from '../../service';
|
|
2
2
|
import { compressToBase64, decompressFromBase64 } from 'lz-string';
|
|
3
3
|
import { transformToTeam } from './team';
|
|
4
|
+
import { transformToBlock, transformToLiberoReplacement, transformToReception, transformToServe, transformToSet, transformToSpike, transformToSubstitution } from './events';
|
|
4
5
|
function transformToAttributes(rally, setId) {
|
|
5
6
|
const events = `[${rally.events.map((e) => e.toString()).join(',')}]`;
|
|
6
7
|
return {
|
|
@@ -12,7 +13,36 @@ function transformToAttributes(rally, setId) {
|
|
|
12
13
|
};
|
|
13
14
|
}
|
|
14
15
|
function transformToObject(model) {
|
|
15
|
-
const
|
|
16
|
+
const decompressed = decompressFromBase64(model.events);
|
|
17
|
+
const parsed = JSON.parse(decompressed);
|
|
18
|
+
const events = [];
|
|
19
|
+
parsed.forEach(event => {
|
|
20
|
+
switch (event.eventType) {
|
|
21
|
+
case 0:
|
|
22
|
+
events.push(transformToLiberoReplacement(event));
|
|
23
|
+
break;
|
|
24
|
+
case 1:
|
|
25
|
+
events.push(transformToSubstitution(event));
|
|
26
|
+
break;
|
|
27
|
+
case 2:
|
|
28
|
+
events.push(transformToServe(event));
|
|
29
|
+
break;
|
|
30
|
+
case 3:
|
|
31
|
+
events.push(transformToReception(event));
|
|
32
|
+
break;
|
|
33
|
+
case 4:
|
|
34
|
+
events.push(transformToSet(event));
|
|
35
|
+
break;
|
|
36
|
+
case 5:
|
|
37
|
+
events.push(transformToSpike(event));
|
|
38
|
+
break;
|
|
39
|
+
case 6:
|
|
40
|
+
events.push(transformToBlock(event));
|
|
41
|
+
break;
|
|
42
|
+
default:
|
|
43
|
+
throw new Error('UNKNOWN_EVENT');
|
|
44
|
+
}
|
|
45
|
+
});
|
|
16
46
|
return new Rally({
|
|
17
47
|
id: model.rally_id,
|
|
18
48
|
order: model.order,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Team } from '../../service';
|
|
2
2
|
import { TeamAttributes, TeamModel } from '../models';
|
|
3
3
|
declare function transformToAttributes(team: Team): TeamAttributes;
|
|
4
|
-
declare function transformToObject(
|
|
4
|
+
declare function transformToObject(model: TeamModel): Team;
|
|
5
5
|
export { transformToObject as transformToTeam, transformToAttributes as transformFromTeam };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Team } from '../../service';
|
|
2
|
-
import { transformFromCoach, transformToCoach, transformToCountry, transformToPlayer } from '.';
|
|
2
|
+
import { transformFromCoach, transformToCoach, transformToCountry, transformToLeague, transformToPlayer } from '.';
|
|
3
3
|
function transformToAttributes(team) {
|
|
4
4
|
return {
|
|
5
5
|
team_id: team.id,
|
|
@@ -12,15 +12,16 @@ function transformToAttributes(team) {
|
|
|
12
12
|
rating: team.rating
|
|
13
13
|
};
|
|
14
14
|
}
|
|
15
|
-
function transformToObject(
|
|
15
|
+
function transformToObject(model) {
|
|
16
16
|
return new Team({
|
|
17
|
-
id:
|
|
18
|
-
name:
|
|
19
|
-
shortName:
|
|
20
|
-
country:
|
|
21
|
-
coach:
|
|
22
|
-
roster: (
|
|
23
|
-
|
|
17
|
+
id: model.team_id,
|
|
18
|
+
name: model.name,
|
|
19
|
+
shortName: model.short_name,
|
|
20
|
+
country: model.country != null ? transformToCountry(model.country) : undefined,
|
|
21
|
+
coach: model.coach != null ? transformToCoach(model.coach) : undefined,
|
|
22
|
+
roster: (model.PlayerTeams ?? []).map((pt) => transformToPlayer(pt.player)),
|
|
23
|
+
league: model.league != null ? transformToLeague(model.league) : undefined,
|
|
24
|
+
rating: model.rating
|
|
24
25
|
});
|
|
25
26
|
}
|
|
26
27
|
export { transformToObject as transformToTeam, transformToAttributes as transformFromTeam };
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { InPlayEvent } from './in-play-event';
|
|
2
|
+
import { CourtTarget } from '../match';
|
|
3
|
+
import { Trait } from '../player';
|
|
4
|
+
export declare enum BlockFailureEnum {
|
|
5
|
+
NO_FAILURE = 0,
|
|
6
|
+
MISS = 1,
|
|
7
|
+
FAULT = 2,
|
|
8
|
+
OUT_OF_BOUNDS = 3,
|
|
9
|
+
WIPE = 4,
|
|
10
|
+
TOOL = 5
|
|
11
|
+
}
|
|
12
|
+
export type BlockFailure = BlockFailureEnum.NO_FAILURE | BlockFailureEnum.MISS | BlockFailureEnum.FAULT | BlockFailureEnum.OUT_OF_BOUNDS | BlockFailureEnum.WIPE | BlockFailureEnum.TOOL;
|
|
13
|
+
export declare enum BlockTypeEnum {
|
|
14
|
+
NO_BLOCKER = 0,
|
|
15
|
+
SINGLE = 1,
|
|
16
|
+
DOUBLE = 2,
|
|
17
|
+
TRIPLE = 3
|
|
18
|
+
}
|
|
19
|
+
export type BlockType = BlockTypeEnum.NO_BLOCKER | BlockTypeEnum.SINGLE | BlockTypeEnum.DOUBLE | BlockTypeEnum.TRIPLE;
|
|
20
|
+
interface BlockOpts {
|
|
21
|
+
readonly type: BlockType;
|
|
22
|
+
readonly failure: BlockFailure;
|
|
23
|
+
readonly blockers: string[];
|
|
24
|
+
readonly target: CourtTarget;
|
|
25
|
+
readonly score: number;
|
|
26
|
+
readonly activeTraits: Trait[];
|
|
27
|
+
readonly playerId: string;
|
|
28
|
+
}
|
|
29
|
+
export declare class Block extends InPlayEvent<BlockFailure, BlockType> {
|
|
30
|
+
readonly failure: BlockFailure;
|
|
31
|
+
readonly type: BlockType;
|
|
32
|
+
readonly blockers: string[];
|
|
33
|
+
constructor({ score, playerId, target, failure, type, blockers, activeTraits }: BlockOpts);
|
|
34
|
+
toString(): string;
|
|
35
|
+
}
|
|
36
|
+
export {};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { InPlayEvent } from './in-play-event';
|
|
2
|
+
import { EventTypeEnum } from './rally-event';
|
|
3
|
+
export var BlockFailureEnum;
|
|
4
|
+
(function (BlockFailureEnum) {
|
|
5
|
+
BlockFailureEnum[BlockFailureEnum["NO_FAILURE"] = 0] = "NO_FAILURE";
|
|
6
|
+
BlockFailureEnum[BlockFailureEnum["MISS"] = 1] = "MISS";
|
|
7
|
+
BlockFailureEnum[BlockFailureEnum["FAULT"] = 2] = "FAULT";
|
|
8
|
+
BlockFailureEnum[BlockFailureEnum["OUT_OF_BOUNDS"] = 3] = "OUT_OF_BOUNDS";
|
|
9
|
+
BlockFailureEnum[BlockFailureEnum["WIPE"] = 4] = "WIPE";
|
|
10
|
+
BlockFailureEnum[BlockFailureEnum["TOOL"] = 5] = "TOOL";
|
|
11
|
+
})(BlockFailureEnum || (BlockFailureEnum = {}));
|
|
12
|
+
export var BlockTypeEnum;
|
|
13
|
+
(function (BlockTypeEnum) {
|
|
14
|
+
BlockTypeEnum[BlockTypeEnum["NO_BLOCKER"] = 0] = "NO_BLOCKER";
|
|
15
|
+
BlockTypeEnum[BlockTypeEnum["SINGLE"] = 1] = "SINGLE";
|
|
16
|
+
BlockTypeEnum[BlockTypeEnum["DOUBLE"] = 2] = "DOUBLE";
|
|
17
|
+
BlockTypeEnum[BlockTypeEnum["TRIPLE"] = 3] = "TRIPLE";
|
|
18
|
+
})(BlockTypeEnum || (BlockTypeEnum = {}));
|
|
19
|
+
const eventType = EventTypeEnum.BLOCK;
|
|
20
|
+
export class Block extends InPlayEvent {
|
|
21
|
+
constructor({ score, playerId, target, failure, type, blockers, activeTraits }) {
|
|
22
|
+
super({ score, playerId, target, activeTraits, eventType });
|
|
23
|
+
this.type = type;
|
|
24
|
+
this.failure = failure;
|
|
25
|
+
this.blockers = blockers;
|
|
26
|
+
}
|
|
27
|
+
toString() {
|
|
28
|
+
const failure = `"failure":${this.failure}`;
|
|
29
|
+
const type = `"type":${this.type}`;
|
|
30
|
+
const blockers = `"blockers":[${this.blockers.map(b => `"${b}"`).join(',')}]`;
|
|
31
|
+
return `{${this._toString()},${failure},${type},${blockers}}`;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { CourtTarget } from '../match';
|
|
2
|
+
import { RallyEvent, RallyEventOpts } from './rally-event';
|
|
3
|
+
import { Trait } from '../player';
|
|
4
|
+
export interface InPlayEventOpts extends RallyEventOpts {
|
|
5
|
+
readonly target: CourtTarget;
|
|
6
|
+
readonly score: number;
|
|
7
|
+
readonly activeTraits: Trait[];
|
|
8
|
+
}
|
|
9
|
+
export declare abstract class InPlayEvent<F, T> extends RallyEvent {
|
|
10
|
+
abstract failure: F;
|
|
11
|
+
abstract type: T;
|
|
12
|
+
readonly target: CourtTarget;
|
|
13
|
+
readonly score: number;
|
|
14
|
+
readonly activeTraits: Trait[];
|
|
15
|
+
protected constructor({ eventType, playerId, target, score, activeTraits }: InPlayEventOpts);
|
|
16
|
+
protected _toString(): string;
|
|
17
|
+
}
|