fantasy-basketball-sdk 0.0.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/AGENTS.md +101 -0
- package/LICENSE +13 -0
- package/README.md +195 -0
- package/dist/core/index.d.ts +3 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +2 -0
- package/dist/core/providers.d.ts +2 -0
- package/dist/core/providers.d.ts.map +1 -0
- package/dist/core/providers.js +10 -0
- package/dist/core/providers.js.map +1 -0
- package/dist/core/types.d.ts +2 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/espn/client.d.ts +37 -0
- package/dist/espn/client.d.ts.map +1 -0
- package/dist/espn/client.js +145 -0
- package/dist/espn/client.js.map +1 -0
- package/dist/espn/constants.d.ts +34 -0
- package/dist/espn/constants.d.ts.map +1 -0
- package/dist/espn/constants.js +189 -0
- package/dist/espn/constants.js.map +1 -0
- package/dist/espn/errors.d.ts +19 -0
- package/dist/espn/errors.d.ts.map +1 -0
- package/dist/espn/errors.js +34 -0
- package/dist/espn/errors.js.map +1 -0
- package/dist/espn/index.d.ts +18 -0
- package/dist/espn/index.d.ts.map +1 -0
- package/dist/espn/index.js +19 -0
- package/dist/espn/index.js.map +1 -0
- package/dist/espn/league.d.ts +76 -0
- package/dist/espn/league.d.ts.map +1 -0
- package/dist/espn/league.js +285 -0
- package/dist/espn/league.js.map +1 -0
- package/dist/espn/models/activity.d.ts +14 -0
- package/dist/espn/models/activity.d.ts.map +1 -0
- package/dist/espn/models/activity.js +36 -0
- package/dist/espn/models/activity.js.map +1 -0
- package/dist/espn/models/box-player.d.ts +11 -0
- package/dist/espn/models/box-player.d.ts.map +1 -0
- package/dist/espn/models/box-player.js +37 -0
- package/dist/espn/models/box-player.js.map +1 -0
- package/dist/espn/models/box-score.d.ts +45 -0
- package/dist/espn/models/box-score.d.ts.map +1 -0
- package/dist/espn/models/box-score.js +111 -0
- package/dist/espn/models/box-score.js.map +1 -0
- package/dist/espn/models/matchup.d.ts +22 -0
- package/dist/espn/models/matchup.d.ts.map +1 -0
- package/dist/espn/models/matchup.js +51 -0
- package/dist/espn/models/matchup.js.map +1 -0
- package/dist/espn/models/pick.d.ts +13 -0
- package/dist/espn/models/pick.d.ts.map +1 -0
- package/dist/espn/models/pick.js +25 -0
- package/dist/espn/models/pick.js.map +1 -0
- package/dist/espn/models/player.d.ts +47 -0
- package/dist/espn/models/player.d.ts.map +1 -0
- package/dist/espn/models/player.js +120 -0
- package/dist/espn/models/player.js.map +1 -0
- package/dist/espn/models/settings.d.ts +29 -0
- package/dist/espn/models/settings.d.ts.map +1 -0
- package/dist/espn/models/settings.js +64 -0
- package/dist/espn/models/settings.js.map +1 -0
- package/dist/espn/models/team.d.ts +33 -0
- package/dist/espn/models/team.d.ts.map +1 -0
- package/dist/espn/models/team.js +81 -0
- package/dist/espn/models/team.js.map +1 -0
- package/dist/espn/models/transaction.d.ts +18 -0
- package/dist/espn/models/transaction.d.ts.map +1 -0
- package/dist/espn/models/transaction.js +32 -0
- package/dist/espn/models/transaction.js.map +1 -0
- package/dist/espn/types/raw.d.ts +26 -0
- package/dist/espn/types/raw.d.ts.map +1 -0
- package/dist/espn/utils.d.ts +5 -0
- package/dist/espn/utils.d.ts.map +1 -0
- package/dist/espn/utils.js +35 -0
- package/dist/espn/utils.js.map +1 -0
- package/dist/fantrax/index.d.ts +2 -0
- package/dist/fantrax/index.d.ts.map +1 -0
- package/dist/fantrax/index.js +6 -0
- package/dist/fantrax/index.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/runtime/fetch.d.ts +5 -0
- package/dist/runtime/fetch.d.ts.map +1 -0
- package/dist/runtime/fetch.js +8 -0
- package/dist/runtime/fetch.js.map +1 -0
- package/dist/runtime/index.d.ts +3 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +2 -0
- package/dist/yahoo/client.d.ts +22 -0
- package/dist/yahoo/client.d.ts.map +1 -0
- package/dist/yahoo/client.js +89 -0
- package/dist/yahoo/client.js.map +1 -0
- package/dist/yahoo/constants.d.ts +41 -0
- package/dist/yahoo/constants.d.ts.map +1 -0
- package/dist/yahoo/constants.js +42 -0
- package/dist/yahoo/constants.js.map +1 -0
- package/dist/yahoo/errors.d.ts +24 -0
- package/dist/yahoo/errors.d.ts.map +1 -0
- package/dist/yahoo/errors.js +51 -0
- package/dist/yahoo/errors.js.map +1 -0
- package/dist/yahoo/index.d.ts +30 -0
- package/dist/yahoo/index.d.ts.map +1 -0
- package/dist/yahoo/index.js +23 -0
- package/dist/yahoo/index.js.map +1 -0
- package/dist/yahoo/keys.d.ts +29 -0
- package/dist/yahoo/keys.d.ts.map +1 -0
- package/dist/yahoo/keys.js +63 -0
- package/dist/yahoo/keys.js.map +1 -0
- package/dist/yahoo/models/game.d.ts +31 -0
- package/dist/yahoo/models/game.d.ts.map +1 -0
- package/dist/yahoo/models/game.js +68 -0
- package/dist/yahoo/models/game.js.map +1 -0
- package/dist/yahoo/models/league.d.ts +62 -0
- package/dist/yahoo/models/league.d.ts.map +1 -0
- package/dist/yahoo/models/league.js +129 -0
- package/dist/yahoo/models/league.js.map +1 -0
- package/dist/yahoo/models/matchup.d.ts +12 -0
- package/dist/yahoo/models/matchup.d.ts.map +1 -0
- package/dist/yahoo/models/matchup.js +46 -0
- package/dist/yahoo/models/matchup.js.map +1 -0
- package/dist/yahoo/models/player.d.ts +34 -0
- package/dist/yahoo/models/player.d.ts.map +1 -0
- package/dist/yahoo/models/player.js +44 -0
- package/dist/yahoo/models/player.js.map +1 -0
- package/dist/yahoo/models/roster.d.ts +16 -0
- package/dist/yahoo/models/roster.d.ts.map +1 -0
- package/dist/yahoo/models/roster.js +46 -0
- package/dist/yahoo/models/roster.js.map +1 -0
- package/dist/yahoo/models/settings.d.ts +21 -0
- package/dist/yahoo/models/settings.d.ts.map +1 -0
- package/dist/yahoo/models/settings.js +79 -0
- package/dist/yahoo/models/settings.js.map +1 -0
- package/dist/yahoo/models/team.d.ts +40 -0
- package/dist/yahoo/models/team.d.ts.map +1 -0
- package/dist/yahoo/models/team.js +46 -0
- package/dist/yahoo/models/team.js.map +1 -0
- package/dist/yahoo/models/transaction.d.ts +10 -0
- package/dist/yahoo/models/transaction.d.ts.map +1 -0
- package/dist/yahoo/models/transaction.js +20 -0
- package/dist/yahoo/models/transaction.js.map +1 -0
- package/dist/yahoo/models/user.d.ts +19 -0
- package/dist/yahoo/models/user.d.ts.map +1 -0
- package/dist/yahoo/models/user.js +36 -0
- package/dist/yahoo/models/user.js.map +1 -0
- package/dist/yahoo/parse.d.ts +26 -0
- package/dist/yahoo/parse.d.ts.map +1 -0
- package/dist/yahoo/parse.js +116 -0
- package/dist/yahoo/parse.js.map +1 -0
- package/dist/yahoo/types/raw.d.ts +10 -0
- package/dist/yahoo/types/raw.d.ts.map +1 -0
- package/dist/yahoo/write/roster.d.ts +7 -0
- package/dist/yahoo/write/roster.d.ts.map +1 -0
- package/dist/yahoo/write/roster.js +13 -0
- package/dist/yahoo/write/roster.js.map +1 -0
- package/dist/yahoo/write/transactions.d.ts +42 -0
- package/dist/yahoo/write/transactions.d.ts.map +1 -0
- package/dist/yahoo/write/transactions.js +51 -0
- package/dist/yahoo/write/transactions.js.map +1 -0
- package/dist/yahoo/xml.d.ts +42 -0
- package/dist/yahoo/xml.d.ts.map +1 -0
- package/dist/yahoo/xml.js +118 -0
- package/dist/yahoo/xml.js.map +1 -0
- package/package.json +79 -0
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { JsonObject } from '../types/raw.js';
|
|
2
|
+
import type { Team } from './team.js';
|
|
3
|
+
export declare class Matchup {
|
|
4
|
+
winner: unknown;
|
|
5
|
+
homeTeam: number | Team;
|
|
6
|
+
homeFinalScore: number;
|
|
7
|
+
homeTeamCats: Record<string, {
|
|
8
|
+
score: number;
|
|
9
|
+
result: unknown;
|
|
10
|
+
}> | null;
|
|
11
|
+
homeTeamLiveScore: number | null;
|
|
12
|
+
awayTeam: number | Team;
|
|
13
|
+
awayFinalScore: number;
|
|
14
|
+
awayTeamCats: Record<string, {
|
|
15
|
+
score: number;
|
|
16
|
+
result: unknown;
|
|
17
|
+
}> | null;
|
|
18
|
+
awayTeamLiveScore: number | null;
|
|
19
|
+
constructor(data: JsonObject);
|
|
20
|
+
private fetchMatchupInfo;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=matchup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"matchup.d.ts","sourceRoot":"","sources":["../../../src/espn/models/matchup.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEtC,qBAAa,OAAO;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAK;IAC5B,cAAc,SAAK;IACnB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC,GAAG,IAAI,CAAQ;IAC/E,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAQ;IACxC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAK;IAC5B,cAAc,SAAK;IACnB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC,GAAG,IAAI,CAAQ;IAC/E,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAQ;gBAE5B,IAAI,EAAE,UAAU;IAQ5B,OAAO,CAAC,gBAAgB;CAiCzB"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { STATS_MAP } from "../constants.js";
|
|
2
|
+
//#region src/espn/models/matchup.ts
|
|
3
|
+
var Matchup = class {
|
|
4
|
+
winner;
|
|
5
|
+
homeTeam = 0;
|
|
6
|
+
homeFinalScore = 0;
|
|
7
|
+
homeTeamCats = null;
|
|
8
|
+
homeTeamLiveScore = null;
|
|
9
|
+
awayTeam = 0;
|
|
10
|
+
awayFinalScore = 0;
|
|
11
|
+
awayTeamCats = null;
|
|
12
|
+
awayTeamLiveScore = null;
|
|
13
|
+
constructor(data) {
|
|
14
|
+
this.winner = data.winner;
|
|
15
|
+
[this.homeTeam, this.homeFinalScore, this.homeTeamCats, this.homeTeamLiveScore] = this.fetchMatchupInfo(data, "home");
|
|
16
|
+
[this.awayTeam, this.awayFinalScore, this.awayTeamCats, this.awayTeamLiveScore] = this.fetchMatchupInfo(data, "away");
|
|
17
|
+
}
|
|
18
|
+
fetchMatchupInfo(data, team) {
|
|
19
|
+
const side = data[team];
|
|
20
|
+
if (!side) return [
|
|
21
|
+
0,
|
|
22
|
+
0,
|
|
23
|
+
null,
|
|
24
|
+
null
|
|
25
|
+
];
|
|
26
|
+
const teamId = side.teamId;
|
|
27
|
+
const finalScore = side.totalPoints;
|
|
28
|
+
let teamCats = null;
|
|
29
|
+
let teamLiveScore = null;
|
|
30
|
+
const cumulativeScore = side.cumulativeScore;
|
|
31
|
+
if (cumulativeScore?.scoreByStat) {
|
|
32
|
+
const scoreByStat = cumulativeScore.scoreByStat;
|
|
33
|
+
teamLiveScore = cumulativeScore.wins + cumulativeScore.ties / 2;
|
|
34
|
+
teamCats = {};
|
|
35
|
+
for (const [statKey, statDict] of Object.entries(scoreByStat)) teamCats[STATS_MAP[statKey] ?? statKey] = {
|
|
36
|
+
score: statDict.score,
|
|
37
|
+
result: statDict.result
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
return [
|
|
41
|
+
teamId,
|
|
42
|
+
finalScore,
|
|
43
|
+
teamCats,
|
|
44
|
+
teamLiveScore
|
|
45
|
+
];
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
//#endregion
|
|
49
|
+
export { Matchup };
|
|
50
|
+
|
|
51
|
+
//# sourceMappingURL=matchup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"matchup.js","names":[],"sources":["../../../src/espn/models/matchup.ts"],"sourcesContent":["import { STATS_MAP } from '../constants.js';\nimport type { JsonObject } from '../types/raw.js';\nimport type { Team } from './team.js';\n\nexport class Matchup {\n winner: unknown;\n homeTeam: number | Team = 0;\n homeFinalScore = 0;\n homeTeamCats: Record<string, { score: number; result: unknown }> | null = null;\n homeTeamLiveScore: number | null = null;\n awayTeam: number | Team = 0;\n awayFinalScore = 0;\n awayTeamCats: Record<string, { score: number; result: unknown }> | null = null;\n awayTeamLiveScore: number | null = null;\n\n constructor(data: JsonObject) {\n this.winner = data.winner;\n [this.homeTeam, this.homeFinalScore, this.homeTeamCats, this.homeTeamLiveScore] =\n this.fetchMatchupInfo(data, 'home');\n [this.awayTeam, this.awayFinalScore, this.awayTeamCats, this.awayTeamLiveScore] =\n this.fetchMatchupInfo(data, 'away');\n }\n\n private fetchMatchupInfo(\n data: JsonObject,\n team: 'home' | 'away',\n ): [number, number, Record<string, { score: number; result: unknown }> | null, number | null] {\n const side = data[team] as JsonObject | undefined;\n if (!side) {\n return [0, 0, null, null];\n }\n\n const teamId = side.teamId as number;\n const finalScore = side.totalPoints as number;\n let teamCats: Record<string, { score: number; result: unknown }> | null = null;\n let teamLiveScore: number | null = null;\n\n const cumulativeScore = side.cumulativeScore as JsonObject | undefined;\n if (cumulativeScore?.scoreByStat) {\n const scoreByStat = cumulativeScore.scoreByStat as Record<\n string,\n { score: number; result: unknown }\n >;\n teamLiveScore =\n (cumulativeScore.wins as number) + (cumulativeScore.ties as number) / 2;\n teamCats = {};\n for (const [statKey, statDict] of Object.entries(scoreByStat)) {\n teamCats[STATS_MAP[statKey] ?? statKey] = {\n score: statDict.score,\n result: statDict.result,\n };\n }\n }\n\n return [teamId, finalScore, teamCats, teamLiveScore];\n }\n}\n"],"mappings":";;AAIA,IAAa,UAAb,MAAqB;CACnB;CACA,WAA0B;CAC1B,iBAAiB;CACjB,eAA0E;CAC1E,oBAAmC;CACnC,WAA0B;CAC1B,iBAAiB;CACjB,eAA0E;CAC1E,oBAAmC;CAEnC,YAAY,MAAkB;EAC5B,KAAK,SAAS,KAAK;EACnB,CAAC,KAAK,UAAU,KAAK,gBAAgB,KAAK,cAAc,KAAK,qBAC3D,KAAK,iBAAiB,MAAM,MAAM;EACpC,CAAC,KAAK,UAAU,KAAK,gBAAgB,KAAK,cAAc,KAAK,qBAC3D,KAAK,iBAAiB,MAAM,MAAM;CACtC;CAEA,iBACE,MACA,MAC4F;EAC5F,MAAM,OAAO,KAAK;EAClB,IAAI,CAAC,MACH,OAAO;GAAC;GAAG;GAAG;GAAM;EAAI;EAG1B,MAAM,SAAS,KAAK;EACpB,MAAM,aAAa,KAAK;EACxB,IAAI,WAAsE;EAC1E,IAAI,gBAA+B;EAEnC,MAAM,kBAAkB,KAAK;EAC7B,IAAI,iBAAiB,aAAa;GAChC,MAAM,cAAc,gBAAgB;GAIpC,gBACG,gBAAgB,OAAmB,gBAAgB,OAAkB;GACxE,WAAW,CAAC;GACZ,KAAK,MAAM,CAAC,SAAS,aAAa,OAAO,QAAQ,WAAW,GAC1D,SAAS,UAAU,YAAY,WAAW;IACxC,OAAO,SAAS;IAChB,QAAQ,SAAS;GACnB;EAEJ;EAEA,OAAO;GAAC;GAAQ;GAAY;GAAU;EAAa;CACrD;AACF"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Team } from './team.js';
|
|
2
|
+
export declare class Pick {
|
|
3
|
+
team: Team | undefined;
|
|
4
|
+
playerId: number;
|
|
5
|
+
playerName: string;
|
|
6
|
+
roundNum: number;
|
|
7
|
+
roundPick: number;
|
|
8
|
+
bidAmount: unknown;
|
|
9
|
+
keeperStatus: unknown;
|
|
10
|
+
nominatingTeam: Team | undefined;
|
|
11
|
+
constructor(team: Team | undefined, playerId: number, playerName: string, roundNum: number, roundPick: number, bidAmount: unknown, keeperStatus: unknown, nominatingTeam: Team | undefined);
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=pick.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pick.d.ts","sourceRoot":"","sources":["../../../src/espn/models/pick.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEtC,qBAAa,IAAI;IACf,IAAI,EAAE,IAAI,GAAG,SAAS,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,IAAI,GAAG,SAAS,CAAC;gBAG/B,IAAI,EAAE,IAAI,GAAG,SAAS,EACtB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,OAAO,EAClB,YAAY,EAAE,OAAO,EACrB,cAAc,EAAE,IAAI,GAAG,SAAS;CAWnC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
//#region src/espn/models/pick.ts
|
|
2
|
+
var Pick = class {
|
|
3
|
+
team;
|
|
4
|
+
playerId;
|
|
5
|
+
playerName;
|
|
6
|
+
roundNum;
|
|
7
|
+
roundPick;
|
|
8
|
+
bidAmount;
|
|
9
|
+
keeperStatus;
|
|
10
|
+
nominatingTeam;
|
|
11
|
+
constructor(team, playerId, playerName, roundNum, roundPick, bidAmount, keeperStatus, nominatingTeam) {
|
|
12
|
+
this.team = team;
|
|
13
|
+
this.playerId = playerId;
|
|
14
|
+
this.playerName = playerName;
|
|
15
|
+
this.roundNum = roundNum;
|
|
16
|
+
this.roundPick = roundPick;
|
|
17
|
+
this.bidAmount = bidAmount;
|
|
18
|
+
this.keeperStatus = keeperStatus;
|
|
19
|
+
this.nominatingTeam = nominatingTeam;
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
//#endregion
|
|
23
|
+
export { Pick };
|
|
24
|
+
|
|
25
|
+
//# sourceMappingURL=pick.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pick.js","names":[],"sources":["../../../src/espn/models/pick.ts"],"sourcesContent":["import type { Team } from './team.js';\n\nexport class Pick {\n team: Team | undefined;\n playerId: number;\n playerName: string;\n roundNum: number;\n roundPick: number;\n bidAmount: unknown;\n keeperStatus: unknown;\n nominatingTeam: Team | undefined;\n\n constructor(\n team: Team | undefined,\n playerId: number,\n playerName: string,\n roundNum: number,\n roundPick: number,\n bidAmount: unknown,\n keeperStatus: unknown,\n nominatingTeam: Team | undefined,\n ) {\n this.team = team;\n this.playerId = playerId;\n this.playerName = playerName;\n this.roundNum = roundNum;\n this.roundPick = roundPick;\n this.bidAmount = bidAmount;\n this.keeperStatus = keeperStatus;\n this.nominatingTeam = nominatingTeam;\n }\n}\n"],"mappings":";AAEA,IAAa,OAAb,MAAkB;CAChB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CAEA,YACE,MACA,UACA,YACA,UACA,WACA,WACA,cACA,gBACA;EACA,KAAK,OAAO;EACZ,KAAK,WAAW;EAChB,KAAK,aAAa;EAClB,KAAK,WAAW;EAChB,KAAK,YAAY;EACjB,KAAK,YAAY;EACjB,KAAK,eAAe;EACpB,KAAK,iBAAiB;CACxB;AACF"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { JsonObject } from '../types/raw.js';
|
|
2
|
+
export interface PlayerNewsItem {
|
|
3
|
+
published: string;
|
|
4
|
+
headline: string;
|
|
5
|
+
story: string;
|
|
6
|
+
}
|
|
7
|
+
export interface PlayerStatEntry {
|
|
8
|
+
appliedTotal: number;
|
|
9
|
+
appliedAvg: number;
|
|
10
|
+
team: string | null;
|
|
11
|
+
date: Date | null;
|
|
12
|
+
avg: Record<string, number> | null;
|
|
13
|
+
total: Record<string, number>;
|
|
14
|
+
}
|
|
15
|
+
export type ProTeamSchedule = Record<number, Record<string, Array<{
|
|
16
|
+
awayProTeamId: number;
|
|
17
|
+
homeProTeamId: number;
|
|
18
|
+
date: number;
|
|
19
|
+
}>>>;
|
|
20
|
+
export declare class Player {
|
|
21
|
+
name: string;
|
|
22
|
+
playerId: number;
|
|
23
|
+
year: number;
|
|
24
|
+
position: string;
|
|
25
|
+
lineupSlot: string;
|
|
26
|
+
eligibleSlots: string[];
|
|
27
|
+
acquisitionType: unknown;
|
|
28
|
+
proTeam: string;
|
|
29
|
+
injuryStatus: unknown;
|
|
30
|
+
posRank: unknown;
|
|
31
|
+
stats: Record<string, PlayerStatEntry>;
|
|
32
|
+
schedule: Record<string, {
|
|
33
|
+
team: string;
|
|
34
|
+
date: Date;
|
|
35
|
+
}>;
|
|
36
|
+
news: PlayerNewsItem[];
|
|
37
|
+
expectedReturnDate: Date | null;
|
|
38
|
+
injured: boolean;
|
|
39
|
+
totalPoints: number;
|
|
40
|
+
avgPoints: number;
|
|
41
|
+
projectedTotalPoints: number;
|
|
42
|
+
projectedAvgPoints: number;
|
|
43
|
+
constructor(data: JsonObject, year: number, proTeamSchedule?: ProTeamSchedule | null, news?: JsonObject | null);
|
|
44
|
+
get nineCatAverages(): Record<string, number>;
|
|
45
|
+
private statIdPretty;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=player.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"player.d.ts","sourceRoot":"","sources":["../../../src/espn/models/player.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAGlD,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IACnC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAED,MAAM,MAAM,eAAe,GAAG,MAAM,CAClC,MAAM,EACN,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CACtF,CAAC;AAEF,qBAAa,MAAM;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,eAAe,EAAE,OAAO,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAM;IAC5C,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,IAAI,CAAA;KAAE,CAAC,CAAM;IAC5D,IAAI,EAAE,cAAc,EAAE,CAAM;IAC5B,kBAAkB,EAAE,IAAI,GAAG,IAAI,CAAQ;IACvC,OAAO,UAAS;IAChB,WAAW,SAAK;IAChB,SAAS,SAAK;IACd,oBAAoB,SAAK;IACzB,kBAAkB,SAAK;gBAGrB,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,MAAM,EACZ,eAAe,GAAE,eAAe,GAAG,IAAW,EAC9C,IAAI,GAAE,UAAU,GAAG,IAAW;IAgHhC,IAAI,eAAe,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAU5C;IAED,OAAO,CAAC,YAAY;CAIrB"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { NINE_CAT_STATS, POSITION_MAP, PRO_TEAM_MAP, STATS_MAP, STAT_ID_MAP } from "../constants.js";
|
|
2
|
+
import { jsonParsing } from "../utils.js";
|
|
3
|
+
//#region src/espn/models/player.ts
|
|
4
|
+
var Player = class {
|
|
5
|
+
name;
|
|
6
|
+
playerId;
|
|
7
|
+
year;
|
|
8
|
+
position;
|
|
9
|
+
lineupSlot;
|
|
10
|
+
eligibleSlots;
|
|
11
|
+
acquisitionType;
|
|
12
|
+
proTeam;
|
|
13
|
+
injuryStatus;
|
|
14
|
+
posRank;
|
|
15
|
+
stats = {};
|
|
16
|
+
schedule = {};
|
|
17
|
+
news = [];
|
|
18
|
+
expectedReturnDate = null;
|
|
19
|
+
injured = false;
|
|
20
|
+
totalPoints = 0;
|
|
21
|
+
avgPoints = 0;
|
|
22
|
+
projectedTotalPoints = 0;
|
|
23
|
+
projectedAvgPoints = 0;
|
|
24
|
+
constructor(data, year, proTeamSchedule = null, news = null) {
|
|
25
|
+
this.name = jsonParsing(data, "fullName");
|
|
26
|
+
this.playerId = jsonParsing(data, "id");
|
|
27
|
+
this.year = year;
|
|
28
|
+
const defaultPositionId = jsonParsing(data, "defaultPositionId");
|
|
29
|
+
this.position = POSITION_MAP[defaultPositionId - 1];
|
|
30
|
+
this.lineupSlot = POSITION_MAP[data.lineupSlotId] ?? "";
|
|
31
|
+
const eligibleSlots = jsonParsing(data, "eligibleSlots");
|
|
32
|
+
this.eligibleSlots = eligibleSlots.map((pos) => POSITION_MAP[pos]);
|
|
33
|
+
this.acquisitionType = jsonParsing(data, "acquisitionType");
|
|
34
|
+
this.proTeam = PRO_TEAM_MAP[jsonParsing(data, "proTeamId")] ?? "FA";
|
|
35
|
+
this.injuryStatus = jsonParsing(data, "injuryStatus");
|
|
36
|
+
this.posRank = jsonParsing(data, "positionalRanking");
|
|
37
|
+
const expectedReturnDate = jsonParsing(data, "expectedReturnDate");
|
|
38
|
+
if (expectedReturnDate && expectedReturnDate.length >= 3) this.expectedReturnDate = new Date(expectedReturnDate[0], expectedReturnDate[1] - 1, expectedReturnDate[2]);
|
|
39
|
+
if (proTeamSchedule) {
|
|
40
|
+
const proTeamId = jsonParsing(data, "proTeamId");
|
|
41
|
+
const proTeam = proTeamSchedule[proTeamId] ?? {};
|
|
42
|
+
for (const key of Object.keys(proTeam)) {
|
|
43
|
+
const game = proTeam[key][0];
|
|
44
|
+
const opponentId = game.awayProTeamId !== proTeamId ? game.awayProTeamId : game.homeProTeamId;
|
|
45
|
+
this.schedule[key] = {
|
|
46
|
+
team: PRO_TEAM_MAP[opponentId] ?? "FA",
|
|
47
|
+
date: /* @__PURE__ */ new Date(game.date / 1e3)
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
if (news) {
|
|
52
|
+
const newsFeed = news.news?.feed ?? [];
|
|
53
|
+
this.news = newsFeed.map((item) => ({
|
|
54
|
+
published: item.published ?? "",
|
|
55
|
+
headline: item.headline ?? "",
|
|
56
|
+
story: item.story ?? ""
|
|
57
|
+
}));
|
|
58
|
+
}
|
|
59
|
+
const player = "playerPoolEntry" in data ? data.playerPoolEntry.player : data.player;
|
|
60
|
+
this.injuryStatus = player.injuryStatus ?? this.injuryStatus;
|
|
61
|
+
this.injured = player.injured ?? false;
|
|
62
|
+
const playerStats = player.stats ?? [];
|
|
63
|
+
for (const split of playerStats) {
|
|
64
|
+
if (split.seasonId !== year) continue;
|
|
65
|
+
const id = this.statIdPretty(split.id, split.scoringPeriodId);
|
|
66
|
+
const appliedTotal = split.appliedTotal ?? 0;
|
|
67
|
+
const appliedAvg = Math.round((split.appliedAverage ?? 0) * 100) / 100;
|
|
68
|
+
const game = this.schedule[id];
|
|
69
|
+
this.stats[id] = {
|
|
70
|
+
appliedTotal,
|
|
71
|
+
appliedAvg,
|
|
72
|
+
team: game?.team ?? null,
|
|
73
|
+
date: game?.date ?? null,
|
|
74
|
+
avg: null,
|
|
75
|
+
total: {}
|
|
76
|
+
};
|
|
77
|
+
if (split.stats) {
|
|
78
|
+
const stats = split.stats;
|
|
79
|
+
if ("averageStats" in split) {
|
|
80
|
+
const averageStats = split.averageStats;
|
|
81
|
+
this.stats[id].avg = {};
|
|
82
|
+
for (const [statKey, value] of Object.entries(averageStats)) {
|
|
83
|
+
const mapped = STATS_MAP[statKey];
|
|
84
|
+
if (mapped && mapped !== "") this.stats[id].avg[mapped] = value;
|
|
85
|
+
}
|
|
86
|
+
this.stats[id].total = {};
|
|
87
|
+
for (const [statKey, value] of Object.entries(stats)) {
|
|
88
|
+
const mapped = STATS_MAP[statKey];
|
|
89
|
+
if (mapped && mapped !== "") this.stats[id].total[mapped] = value;
|
|
90
|
+
}
|
|
91
|
+
} else {
|
|
92
|
+
this.stats[id].avg = null;
|
|
93
|
+
this.stats[id].total = {};
|
|
94
|
+
for (const [statKey, value] of Object.entries(stats)) {
|
|
95
|
+
const mapped = STATS_MAP[statKey];
|
|
96
|
+
if (mapped && mapped !== "") this.stats[id].total[mapped] = value;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
this.totalPoints = this.stats[`${year}_total`]?.appliedTotal ?? 0;
|
|
102
|
+
this.avgPoints = this.stats[`${year}_total`]?.appliedAvg ?? 0;
|
|
103
|
+
this.projectedTotalPoints = this.stats[`${year}_projected`]?.appliedTotal ?? 0;
|
|
104
|
+
this.projectedAvgPoints = this.stats[`${year}_projected`]?.appliedAvg ?? 0;
|
|
105
|
+
}
|
|
106
|
+
get nineCatAverages() {
|
|
107
|
+
const avg = this.stats[`${this.year}_total`]?.avg ?? {};
|
|
108
|
+
const result = {};
|
|
109
|
+
for (const [key, value] of Object.entries(avg)) if (NINE_CAT_STATS.has(key)) result[key] = Math.round(value * (key === "FG%" || key === "FT%" ? 1e3 : 10)) / (key === "FG%" || key === "FT%" ? 1e3 : 10);
|
|
110
|
+
return result;
|
|
111
|
+
}
|
|
112
|
+
statIdPretty(id, scoringPeriod) {
|
|
113
|
+
const idType = STAT_ID_MAP[id.slice(0, 2)];
|
|
114
|
+
return idType ? `${id.slice(2)}_${idType}` : String(scoringPeriod);
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
//#endregion
|
|
118
|
+
export { Player };
|
|
119
|
+
|
|
120
|
+
//# sourceMappingURL=player.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"player.js","names":[],"sources":["../../../src/espn/models/player.ts"],"sourcesContent":["import {\n NINE_CAT_STATS,\n POSITION_MAP,\n PRO_TEAM_MAP,\n STAT_ID_MAP,\n STATS_MAP,\n} from '../constants.js';\nimport type { JsonObject } from '../types/raw.js';\nimport { jsonParsing } from '../utils.js';\n\nexport interface PlayerNewsItem {\n published: string;\n headline: string;\n story: string;\n}\n\nexport interface PlayerStatEntry {\n appliedTotal: number;\n appliedAvg: number;\n team: string | null;\n date: Date | null;\n avg: Record<string, number> | null;\n total: Record<string, number>;\n}\n\nexport type ProTeamSchedule = Record<\n number,\n Record<string, Array<{ awayProTeamId: number; homeProTeamId: number; date: number }>>\n>;\n\nexport class Player {\n name: string;\n playerId: number;\n year: number;\n position: string;\n lineupSlot: string;\n eligibleSlots: string[];\n acquisitionType: unknown;\n proTeam: string;\n injuryStatus: unknown;\n posRank: unknown;\n stats: Record<string, PlayerStatEntry> = {};\n schedule: Record<string, { team: string; date: Date }> = {};\n news: PlayerNewsItem[] = [];\n expectedReturnDate: Date | null = null;\n injured = false;\n totalPoints = 0;\n avgPoints = 0;\n projectedTotalPoints = 0;\n projectedAvgPoints = 0;\n\n constructor(\n data: JsonObject,\n year: number,\n proTeamSchedule: ProTeamSchedule | null = null,\n news: JsonObject | null = null,\n ) {\n this.name = jsonParsing(data, 'fullName') as string;\n this.playerId = jsonParsing(data, 'id') as number;\n this.year = year;\n const defaultPositionId = jsonParsing(data, 'defaultPositionId') as number;\n this.position = POSITION_MAP[defaultPositionId - 1] as string;\n this.lineupSlot = POSITION_MAP[data.lineupSlotId as number] as string ?? '';\n const eligibleSlots = jsonParsing(data, 'eligibleSlots') as number[];\n this.eligibleSlots = eligibleSlots.map((pos) => POSITION_MAP[pos] as string);\n this.acquisitionType = jsonParsing(data, 'acquisitionType');\n this.proTeam = PRO_TEAM_MAP[jsonParsing(data, 'proTeamId') as number] ?? 'FA';\n this.injuryStatus = jsonParsing(data, 'injuryStatus');\n this.posRank = jsonParsing(data, 'positionalRanking');\n\n const expectedReturnDate = jsonParsing(data, 'expectedReturnDate') as\n | number[]\n | undefined;\n if (expectedReturnDate && expectedReturnDate.length >= 3) {\n this.expectedReturnDate = new Date(\n expectedReturnDate[0]!,\n expectedReturnDate[1]! - 1,\n expectedReturnDate[2],\n );\n }\n\n if (proTeamSchedule) {\n const proTeamId = jsonParsing(data, 'proTeamId') as number;\n const proTeam = proTeamSchedule[proTeamId] ?? {};\n for (const key of Object.keys(proTeam)) {\n const game = proTeam[key]![0]!;\n const opponentId =\n game.awayProTeamId !== proTeamId ? game.awayProTeamId : game.homeProTeamId;\n this.schedule[key] = {\n team: PRO_TEAM_MAP[opponentId] ?? 'FA',\n date: new Date(game.date / 1000),\n };\n }\n }\n\n if (news) {\n const newsFeed = ((news.news as JsonObject | undefined)?.feed as JsonObject[]) ?? [];\n this.news = newsFeed.map((item) => ({\n published: (item.published as string | undefined) ?? '',\n headline: (item.headline as string | undefined) ?? '',\n story: (item.story as string | undefined) ?? '',\n }));\n }\n\n const player =\n 'playerPoolEntry' in data\n ? ((data.playerPoolEntry as JsonObject).player as JsonObject)\n : (data.player as JsonObject);\n\n this.injuryStatus = player.injuryStatus ?? this.injuryStatus;\n this.injured = (player.injured as boolean | undefined) ?? false;\n\n const playerStats = (player.stats as JsonObject[] | undefined) ?? [];\n for (const split of playerStats) {\n if (split.seasonId !== year) {\n continue;\n }\n const id = this.statIdPretty(split.id as string, split.scoringPeriodId as number);\n const appliedTotal = (split.appliedTotal as number | undefined) ?? 0;\n const appliedAvg = Math.round(((split.appliedAverage as number | undefined) ?? 0) * 100) / 100;\n const game = this.schedule[id];\n this.stats[id] = {\n appliedTotal,\n appliedAvg,\n team: game?.team ?? null,\n date: game?.date ?? null,\n avg: null,\n total: {},\n };\n\n if (split.stats) {\n const stats = split.stats as Record<string, number>;\n if ('averageStats' in split) {\n const averageStats = split.averageStats as Record<string, number>;\n this.stats[id].avg = {};\n for (const [statKey, value] of Object.entries(averageStats)) {\n const mapped = STATS_MAP[statKey];\n if (mapped && mapped !== '') {\n this.stats[id].avg![mapped] = value;\n }\n }\n this.stats[id].total = {};\n for (const [statKey, value] of Object.entries(stats)) {\n const mapped = STATS_MAP[statKey];\n if (mapped && mapped !== '') {\n this.stats[id].total[mapped] = value;\n }\n }\n } else {\n this.stats[id].avg = null;\n this.stats[id].total = {};\n for (const [statKey, value] of Object.entries(stats)) {\n const mapped = STATS_MAP[statKey];\n if (mapped && mapped !== '') {\n this.stats[id].total[mapped] = value;\n }\n }\n }\n }\n }\n\n this.totalPoints = this.stats[`${year}_total`]?.appliedTotal ?? 0;\n this.avgPoints = this.stats[`${year}_total`]?.appliedAvg ?? 0;\n this.projectedTotalPoints = this.stats[`${year}_projected`]?.appliedTotal ?? 0;\n this.projectedAvgPoints = this.stats[`${year}_projected`]?.appliedAvg ?? 0;\n }\n\n get nineCatAverages(): Record<string, number> {\n const avg = this.stats[`${this.year}_total`]?.avg ?? {};\n const result: Record<string, number> = {};\n for (const [key, value] of Object.entries(avg)) {\n if (NINE_CAT_STATS.has(key)) {\n result[key] = Math.round(value * (key === 'FG%' || key === 'FT%' ? 1000 : 10)) /\n (key === 'FG%' || key === 'FT%' ? 1000 : 10);\n }\n }\n return result;\n }\n\n private statIdPretty(id: string, scoringPeriod: number): string {\n const idType = STAT_ID_MAP[id.slice(0, 2)];\n return idType ? `${id.slice(2)}_${idType}` : String(scoringPeriod);\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { JsonObject } from '../types/raw.js';
|
|
2
|
+
export declare class Settings {
|
|
3
|
+
readonly regSeasonCount: number;
|
|
4
|
+
readonly matchupPeriods: unknown;
|
|
5
|
+
readonly vetoVotesRequired: number;
|
|
6
|
+
readonly teamCount: number;
|
|
7
|
+
readonly playoffTeamCount: number;
|
|
8
|
+
readonly keeperCount: number;
|
|
9
|
+
readonly tradeDeadline: number;
|
|
10
|
+
readonly divisionMap: Record<number, string>;
|
|
11
|
+
readonly name: string;
|
|
12
|
+
readonly tieRule: unknown;
|
|
13
|
+
readonly playoffTieRule: unknown;
|
|
14
|
+
readonly playoffMatchupPeriodLength: number;
|
|
15
|
+
readonly playoffSeedTieRule: unknown;
|
|
16
|
+
readonly scoringType: string | undefined;
|
|
17
|
+
readonly medianScoring: boolean;
|
|
18
|
+
readonly faab: boolean;
|
|
19
|
+
readonly acquisitionBudget: number;
|
|
20
|
+
readonly acquisitionLimit: unknown;
|
|
21
|
+
readonly matchupAcquisitionLimit: unknown;
|
|
22
|
+
readonly matchupLimitPerScoringPeriod: unknown;
|
|
23
|
+
readonly minimumBid: number;
|
|
24
|
+
readonly waiverProcessDays: unknown[];
|
|
25
|
+
readonly waiverProcessHour: unknown;
|
|
26
|
+
readonly tradeRevisionHours: unknown;
|
|
27
|
+
constructor(data: JsonObject);
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=settings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../../src/espn/models/settings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,qBAAa,QAAQ;IACnB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,0BAA0B,EAAE,MAAM,CAAC;IAC5C,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC;IACrC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,uBAAuB,EAAE,OAAO,CAAC;IAC1C,QAAQ,CAAC,4BAA4B,EAAE,OAAO,CAAC;IAC/C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,iBAAiB,EAAE,OAAO,EAAE,CAAC;IACtC,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC;IACpC,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC;gBAEzB,IAAI,EAAE,UAAU;CAsC7B"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
//#region src/espn/models/settings.ts
|
|
2
|
+
var Settings = class {
|
|
3
|
+
regSeasonCount;
|
|
4
|
+
matchupPeriods;
|
|
5
|
+
vetoVotesRequired;
|
|
6
|
+
teamCount;
|
|
7
|
+
playoffTeamCount;
|
|
8
|
+
keeperCount;
|
|
9
|
+
tradeDeadline;
|
|
10
|
+
divisionMap;
|
|
11
|
+
name;
|
|
12
|
+
tieRule;
|
|
13
|
+
playoffTieRule;
|
|
14
|
+
playoffMatchupPeriodLength;
|
|
15
|
+
playoffSeedTieRule;
|
|
16
|
+
scoringType;
|
|
17
|
+
medianScoring;
|
|
18
|
+
faab;
|
|
19
|
+
acquisitionBudget;
|
|
20
|
+
acquisitionLimit;
|
|
21
|
+
matchupAcquisitionLimit;
|
|
22
|
+
matchupLimitPerScoringPeriod;
|
|
23
|
+
minimumBid;
|
|
24
|
+
waiverProcessDays;
|
|
25
|
+
waiverProcessHour;
|
|
26
|
+
tradeRevisionHours;
|
|
27
|
+
constructor(data) {
|
|
28
|
+
const scheduleSettings = data.scheduleSettings ?? {};
|
|
29
|
+
const tradeSettings = data.tradeSettings ?? {};
|
|
30
|
+
const draftSettings = data.draftSettings ?? {};
|
|
31
|
+
const scoringSettings = data.scoringSettings ?? {};
|
|
32
|
+
const acquisitionSettings = data.acquisitionSettings ?? {};
|
|
33
|
+
this.regSeasonCount = scheduleSettings.matchupPeriodCount;
|
|
34
|
+
this.matchupPeriods = scheduleSettings.matchupPeriods;
|
|
35
|
+
this.vetoVotesRequired = tradeSettings.vetoVotesRequired;
|
|
36
|
+
this.teamCount = data.size;
|
|
37
|
+
this.playoffTeamCount = scheduleSettings.playoffTeamCount;
|
|
38
|
+
this.keeperCount = draftSettings.keeperCount;
|
|
39
|
+
this.tradeDeadline = tradeSettings.deadlineDate ?? 0;
|
|
40
|
+
this.divisionMap = {};
|
|
41
|
+
this.name = data.name;
|
|
42
|
+
this.tieRule = scoringSettings.matchupTieRule;
|
|
43
|
+
this.playoffTieRule = scoringSettings.playoffMatchupTieRule;
|
|
44
|
+
this.playoffMatchupPeriodLength = scheduleSettings.playoffMatchupPeriodLength ?? 0;
|
|
45
|
+
this.playoffSeedTieRule = scheduleSettings.playoffSeedingRule;
|
|
46
|
+
this.scoringType = scoringSettings.scoringType;
|
|
47
|
+
this.medianScoring = scoringSettings.scoringEnhancementType === "WIN_BONUS_TOP_HALF";
|
|
48
|
+
this.faab = acquisitionSettings.isUsingAcquisitionBudget;
|
|
49
|
+
this.acquisitionBudget = acquisitionSettings.acquisitionBudget ?? 0;
|
|
50
|
+
this.acquisitionLimit = acquisitionSettings.acquisitionLimit;
|
|
51
|
+
this.matchupAcquisitionLimit = acquisitionSettings.matchupAcquisitionLimit;
|
|
52
|
+
this.matchupLimitPerScoringPeriod = acquisitionSettings.matchupLimitPerScoringPeriod;
|
|
53
|
+
this.minimumBid = acquisitionSettings.minimumBid ?? 0;
|
|
54
|
+
this.waiverProcessDays = acquisitionSettings.waiverProcessDays ?? [];
|
|
55
|
+
this.waiverProcessHour = acquisitionSettings.waiverProcessHour;
|
|
56
|
+
this.tradeRevisionHours = tradeSettings.revisionHours;
|
|
57
|
+
const divisions = scheduleSettings.divisions ?? [];
|
|
58
|
+
for (const division of divisions) this.divisionMap[division.id] = division.name;
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
//#endregion
|
|
62
|
+
export { Settings };
|
|
63
|
+
|
|
64
|
+
//# sourceMappingURL=settings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings.js","names":[],"sources":["../../../src/espn/models/settings.ts"],"sourcesContent":["import type { JsonObject } from '../types/raw.js';\n\nexport class Settings {\n readonly regSeasonCount: number;\n readonly matchupPeriods: unknown;\n readonly vetoVotesRequired: number;\n readonly teamCount: number;\n readonly playoffTeamCount: number;\n readonly keeperCount: number;\n readonly tradeDeadline: number;\n readonly divisionMap: Record<number, string>;\n readonly name: string;\n readonly tieRule: unknown;\n readonly playoffTieRule: unknown;\n readonly playoffMatchupPeriodLength: number;\n readonly playoffSeedTieRule: unknown;\n readonly scoringType: string | undefined;\n readonly medianScoring: boolean;\n readonly faab: boolean;\n readonly acquisitionBudget: number;\n readonly acquisitionLimit: unknown;\n readonly matchupAcquisitionLimit: unknown;\n readonly matchupLimitPerScoringPeriod: unknown;\n readonly minimumBid: number;\n readonly waiverProcessDays: unknown[];\n readonly waiverProcessHour: unknown;\n readonly tradeRevisionHours: unknown;\n\n constructor(data: JsonObject) {\n const scheduleSettings = (data.scheduleSettings ?? {}) as JsonObject;\n const tradeSettings = (data.tradeSettings ?? {}) as JsonObject;\n const draftSettings = (data.draftSettings ?? {}) as JsonObject;\n const scoringSettings = (data.scoringSettings ?? {}) as JsonObject;\n const acquisitionSettings = (data.acquisitionSettings ?? {}) as JsonObject;\n\n this.regSeasonCount = scheduleSettings.matchupPeriodCount as number;\n this.matchupPeriods = scheduleSettings.matchupPeriods;\n this.vetoVotesRequired = tradeSettings.vetoVotesRequired as number;\n this.teamCount = data.size as number;\n this.playoffTeamCount = scheduleSettings.playoffTeamCount as number;\n this.keeperCount = draftSettings.keeperCount as number;\n this.tradeDeadline = (tradeSettings.deadlineDate as number | undefined) ?? 0;\n this.divisionMap = {};\n this.name = data.name as string;\n this.tieRule = scoringSettings.matchupTieRule;\n this.playoffTieRule = scoringSettings.playoffMatchupTieRule;\n this.playoffMatchupPeriodLength =\n (scheduleSettings.playoffMatchupPeriodLength as number | undefined) ?? 0;\n this.playoffSeedTieRule = scheduleSettings.playoffSeedingRule;\n this.scoringType = scoringSettings.scoringType as string | undefined;\n this.medianScoring = scoringSettings.scoringEnhancementType === 'WIN_BONUS_TOP_HALF';\n this.faab = acquisitionSettings.isUsingAcquisitionBudget as boolean;\n this.acquisitionBudget = (acquisitionSettings.acquisitionBudget as number | undefined) ?? 0;\n this.acquisitionLimit = acquisitionSettings.acquisitionLimit;\n this.matchupAcquisitionLimit = acquisitionSettings.matchupAcquisitionLimit;\n this.matchupLimitPerScoringPeriod = acquisitionSettings.matchupLimitPerScoringPeriod;\n this.minimumBid = (acquisitionSettings.minimumBid as number | undefined) ?? 0;\n this.waiverProcessDays = (acquisitionSettings.waiverProcessDays as unknown[]) ?? [];\n this.waiverProcessHour = acquisitionSettings.waiverProcessHour;\n this.tradeRevisionHours = tradeSettings.revisionHours;\n\n const divisions = (scheduleSettings.divisions as JsonObject[] | undefined) ?? [];\n for (const division of divisions) {\n this.divisionMap[division.id as number] = division.name as string;\n }\n }\n}\n"],"mappings":";AAEA,IAAa,WAAb,MAAsB;CACpB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CAEA,YAAY,MAAkB;EAC5B,MAAM,mBAAoB,KAAK,oBAAoB,CAAC;EACpD,MAAM,gBAAiB,KAAK,iBAAiB,CAAC;EAC9C,MAAM,gBAAiB,KAAK,iBAAiB,CAAC;EAC9C,MAAM,kBAAmB,KAAK,mBAAmB,CAAC;EAClD,MAAM,sBAAuB,KAAK,uBAAuB,CAAC;EAE1D,KAAK,iBAAiB,iBAAiB;EACvC,KAAK,iBAAiB,iBAAiB;EACvC,KAAK,oBAAoB,cAAc;EACvC,KAAK,YAAY,KAAK;EACtB,KAAK,mBAAmB,iBAAiB;EACzC,KAAK,cAAc,cAAc;EACjC,KAAK,gBAAiB,cAAc,gBAAuC;EAC3E,KAAK,cAAc,CAAC;EACpB,KAAK,OAAO,KAAK;EACjB,KAAK,UAAU,gBAAgB;EAC/B,KAAK,iBAAiB,gBAAgB;EACtC,KAAK,6BACF,iBAAiB,8BAAqD;EACzE,KAAK,qBAAqB,iBAAiB;EAC3C,KAAK,cAAc,gBAAgB;EACnC,KAAK,gBAAgB,gBAAgB,2BAA2B;EAChE,KAAK,OAAO,oBAAoB;EAChC,KAAK,oBAAqB,oBAAoB,qBAA4C;EAC1F,KAAK,mBAAmB,oBAAoB;EAC5C,KAAK,0BAA0B,oBAAoB;EACnD,KAAK,+BAA+B,oBAAoB;EACxD,KAAK,aAAc,oBAAoB,cAAqC;EAC5E,KAAK,oBAAqB,oBAAoB,qBAAmC,CAAC;EAClF,KAAK,oBAAoB,oBAAoB;EAC7C,KAAK,qBAAqB,cAAc;EAExC,MAAM,YAAa,iBAAiB,aAA0C,CAAC;EAC/E,KAAK,MAAM,YAAY,WACrB,KAAK,YAAY,SAAS,MAAgB,SAAS;CAEvD;AACF"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { JsonObject } from '../types/raw.js';
|
|
2
|
+
import { Matchup } from './matchup.js';
|
|
3
|
+
import { Player, type ProTeamSchedule } from './player.js';
|
|
4
|
+
export declare class Team {
|
|
5
|
+
teamId: number;
|
|
6
|
+
teamAbbrev: string;
|
|
7
|
+
teamName: string;
|
|
8
|
+
divisionId: number;
|
|
9
|
+
divisionName: string;
|
|
10
|
+
wins: number;
|
|
11
|
+
losses: number;
|
|
12
|
+
ties: number;
|
|
13
|
+
pointsFor: number;
|
|
14
|
+
pointsAgainst: number;
|
|
15
|
+
acquisitions: number;
|
|
16
|
+
acquisitionBudgetSpent: number;
|
|
17
|
+
drops: number;
|
|
18
|
+
trades: number;
|
|
19
|
+
logoUrl: string;
|
|
20
|
+
stats: Record<string, number> | null;
|
|
21
|
+
standing: number;
|
|
22
|
+
finalStanding: number | undefined;
|
|
23
|
+
roster: Player[];
|
|
24
|
+
schedule: Matchup[];
|
|
25
|
+
owners: JsonObject[];
|
|
26
|
+
constructor(data: JsonObject, roster: JsonObject, schedule: JsonObject[], year: number, options?: {
|
|
27
|
+
proSchedule?: ProTeamSchedule | null;
|
|
28
|
+
owners?: JsonObject[];
|
|
29
|
+
});
|
|
30
|
+
private fetchRoster;
|
|
31
|
+
private fetchSchedule;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=team.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"team.d.ts","sourceRoot":"","sources":["../../../src/espn/models/team.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAE3D,qBAAa,IAAI;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,SAAM;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,SAAM;IACb,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAQ;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,MAAM,EAAE,MAAM,EAAE,CAAM;IACtB,QAAQ,EAAE,OAAO,EAAE,CAAM;IACzB,MAAM,EAAE,UAAU,EAAE,CAAM;gBAGxB,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,UAAU,EAClB,QAAQ,EAAE,UAAU,EAAE,EACtB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;QAAE,WAAW,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;QAAC,MAAM,CAAC,EAAE,UAAU,EAAE,CAAA;KAAO;IA4C/E,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,aAAa;CAoBtB"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { STATS_MAP } from "../constants.js";
|
|
2
|
+
import { Player } from "./player.js";
|
|
3
|
+
import { Matchup } from "./matchup.js";
|
|
4
|
+
//#region src/espn/models/team.ts
|
|
5
|
+
var Team = class {
|
|
6
|
+
teamId;
|
|
7
|
+
teamAbbrev;
|
|
8
|
+
teamName;
|
|
9
|
+
divisionId;
|
|
10
|
+
divisionName = "";
|
|
11
|
+
wins;
|
|
12
|
+
losses;
|
|
13
|
+
ties;
|
|
14
|
+
pointsFor;
|
|
15
|
+
pointsAgainst;
|
|
16
|
+
acquisitions;
|
|
17
|
+
acquisitionBudgetSpent;
|
|
18
|
+
drops;
|
|
19
|
+
trades;
|
|
20
|
+
logoUrl = "";
|
|
21
|
+
stats = null;
|
|
22
|
+
standing;
|
|
23
|
+
finalStanding;
|
|
24
|
+
roster = [];
|
|
25
|
+
schedule = [];
|
|
26
|
+
owners = [];
|
|
27
|
+
constructor(data, roster, schedule, year, options = {}) {
|
|
28
|
+
this.teamId = data.id;
|
|
29
|
+
this.teamAbbrev = data.abbrev;
|
|
30
|
+
this.teamName = data.name ?? "Unknown";
|
|
31
|
+
if (this.teamName === "Unknown") this.teamName = `${data.location ?? "Unknown"} ${data.nickname ?? "Unknown"}`;
|
|
32
|
+
this.divisionId = data.divisionId;
|
|
33
|
+
const record = data.record.overall;
|
|
34
|
+
this.wins = record.wins;
|
|
35
|
+
this.losses = record.losses;
|
|
36
|
+
this.ties = record.ties;
|
|
37
|
+
this.pointsFor = record.pointsFor;
|
|
38
|
+
this.pointsAgainst = Math.round(record.pointsAgainst * 100) / 100;
|
|
39
|
+
const transactionCounter = data.transactionCounter ?? {};
|
|
40
|
+
this.acquisitions = transactionCounter.acquisitions ?? 0;
|
|
41
|
+
this.acquisitionBudgetSpent = transactionCounter.acquisitionBudgetSpent ?? 0;
|
|
42
|
+
this.drops = transactionCounter.drops ?? 0;
|
|
43
|
+
this.trades = transactionCounter.trades ?? 0;
|
|
44
|
+
this.standing = data.playoffSeed;
|
|
45
|
+
this.finalStanding = data.rankFinal ?? data.rankCalculatedFinal;
|
|
46
|
+
if (data.valuesByStat) {
|
|
47
|
+
this.stats = {};
|
|
48
|
+
for (const [statKey, value] of Object.entries(data.valuesByStat)) this.stats[STATS_MAP[statKey] ?? statKey] = value;
|
|
49
|
+
}
|
|
50
|
+
if (data.logo) this.logoUrl = data.logo;
|
|
51
|
+
this.fetchRoster(roster, year, options.proSchedule ?? null);
|
|
52
|
+
this.fetchSchedule(schedule);
|
|
53
|
+
this.owners = options.owners ?? [];
|
|
54
|
+
}
|
|
55
|
+
fetchRoster(roster, year, proSchedule) {
|
|
56
|
+
this.roster = [];
|
|
57
|
+
const entries = roster.entries ?? [];
|
|
58
|
+
for (const player of entries) this.roster.push(new Player(player, year, proSchedule));
|
|
59
|
+
}
|
|
60
|
+
fetchSchedule(data) {
|
|
61
|
+
this.schedule = [];
|
|
62
|
+
for (const match of data) {
|
|
63
|
+
if (!("away" in match)) continue;
|
|
64
|
+
const awayTeamId = match.away.teamId;
|
|
65
|
+
const homeTeamId = match.home.teamId;
|
|
66
|
+
if (awayTeamId === this.teamId) {
|
|
67
|
+
const newMatch = new Matchup(match);
|
|
68
|
+
newMatch.awayTeam = this;
|
|
69
|
+
this.schedule.push(newMatch);
|
|
70
|
+
} else if (homeTeamId === this.teamId) {
|
|
71
|
+
const newMatch = new Matchup(match);
|
|
72
|
+
newMatch.homeTeam = this;
|
|
73
|
+
this.schedule.push(newMatch);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
//#endregion
|
|
79
|
+
export { Team };
|
|
80
|
+
|
|
81
|
+
//# sourceMappingURL=team.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"team.js","names":[],"sources":["../../../src/espn/models/team.ts"],"sourcesContent":["import { STATS_MAP } from '../constants.js';\nimport type { JsonObject } from '../types/raw.js';\nimport { Matchup } from './matchup.js';\nimport { Player, type ProTeamSchedule } from './player.js';\n\nexport class Team {\n teamId: number;\n teamAbbrev: string;\n teamName: string;\n divisionId: number;\n divisionName = '';\n wins: number;\n losses: number;\n ties: number;\n pointsFor: number;\n pointsAgainst: number;\n acquisitions: number;\n acquisitionBudgetSpent: number;\n drops: number;\n trades: number;\n logoUrl = '';\n stats: Record<string, number> | null = null;\n standing: number;\n finalStanding: number | undefined;\n roster: Player[] = [];\n schedule: Matchup[] = [];\n owners: JsonObject[] = [];\n\n constructor(\n data: JsonObject,\n roster: JsonObject,\n schedule: JsonObject[],\n year: number,\n options: { proSchedule?: ProTeamSchedule | null; owners?: JsonObject[] } = {},\n ) {\n this.teamId = data.id as number;\n this.teamAbbrev = data.abbrev as string;\n this.teamName = (data.name as string | undefined) ?? 'Unknown';\n if (this.teamName === 'Unknown') {\n this.teamName = `${(data.location as string | undefined) ?? 'Unknown'} ${(data.nickname as string | undefined) ?? 'Unknown'}`;\n }\n this.divisionId = data.divisionId as number;\n\n const record = (data.record as JsonObject).overall as JsonObject;\n this.wins = record.wins as number;\n this.losses = record.losses as number;\n this.ties = record.ties as number;\n this.pointsFor = record.pointsFor as number;\n this.pointsAgainst = Math.round((record.pointsAgainst as number) * 100) / 100;\n\n const transactionCounter = (data.transactionCounter as JsonObject | undefined) ?? {};\n this.acquisitions = (transactionCounter.acquisitions as number | undefined) ?? 0;\n this.acquisitionBudgetSpent =\n (transactionCounter.acquisitionBudgetSpent as number | undefined) ?? 0;\n this.drops = (transactionCounter.drops as number | undefined) ?? 0;\n this.trades = (transactionCounter.trades as number | undefined) ?? 0;\n\n this.standing = data.playoffSeed as number;\n this.finalStanding =\n (data.rankFinal as number | undefined) ?? (data.rankCalculatedFinal as number | undefined);\n\n if (data.valuesByStat) {\n this.stats = {};\n for (const [statKey, value] of Object.entries(data.valuesByStat as Record<string, number>)) {\n this.stats[STATS_MAP[statKey] ?? statKey] = value;\n }\n }\n\n if (data.logo) {\n this.logoUrl = data.logo as string;\n }\n\n this.fetchRoster(roster, year, options.proSchedule ?? null);\n this.fetchSchedule(schedule);\n this.owners = options.owners ?? [];\n }\n\n private fetchRoster(roster: JsonObject, year: number, proSchedule: ProTeamSchedule | null): void {\n this.roster = [];\n const entries = (roster.entries as JsonObject[] | undefined) ?? [];\n for (const player of entries) {\n this.roster.push(new Player(player, year, proSchedule));\n }\n }\n\n private fetchSchedule(data: JsonObject[]): void {\n this.schedule = [];\n for (const match of data) {\n if (!('away' in match)) {\n continue;\n }\n const awayTeamId = (match.away as JsonObject).teamId as number;\n const homeTeamId = (match.home as JsonObject).teamId as number;\n\n if (awayTeamId === this.teamId) {\n const newMatch = new Matchup(match);\n newMatch.awayTeam = this;\n this.schedule.push(newMatch);\n } else if (homeTeamId === this.teamId) {\n const newMatch = new Matchup(match);\n newMatch.homeTeam = this;\n this.schedule.push(newMatch);\n }\n }\n }\n}\n"],"mappings":";;;;AAKA,IAAa,OAAb,MAAkB;CAChB;CACA;CACA;CACA;CACA,eAAe;CACf;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,UAAU;CACV,QAAuC;CACvC;CACA;CACA,SAAmB,CAAC;CACpB,WAAsB,CAAC;CACvB,SAAuB,CAAC;CAExB,YACE,MACA,QACA,UACA,MACA,UAA2E,CAAC,GAC5E;EACA,KAAK,SAAS,KAAK;EACnB,KAAK,aAAa,KAAK;EACvB,KAAK,WAAY,KAAK,QAA+B;EACrD,IAAI,KAAK,aAAa,WACpB,KAAK,WAAW,GAAI,KAAK,YAAmC,UAAU,GAAI,KAAK,YAAmC;EAEpH,KAAK,aAAa,KAAK;EAEvB,MAAM,SAAU,KAAK,OAAsB;EAC3C,KAAK,OAAO,OAAO;EACnB,KAAK,SAAS,OAAO;EACrB,KAAK,OAAO,OAAO;EACnB,KAAK,YAAY,OAAO;EACxB,KAAK,gBAAgB,KAAK,MAAO,OAAO,gBAA2B,GAAG,IAAI;EAE1E,MAAM,qBAAsB,KAAK,sBAAiD,CAAC;EACnF,KAAK,eAAgB,mBAAmB,gBAAuC;EAC/E,KAAK,yBACF,mBAAmB,0BAAiD;EACvE,KAAK,QAAS,mBAAmB,SAAgC;EACjE,KAAK,SAAU,mBAAmB,UAAiC;EAEnE,KAAK,WAAW,KAAK;EACrB,KAAK,gBACF,KAAK,aAAqC,KAAK;EAElD,IAAI,KAAK,cAAc;GACrB,KAAK,QAAQ,CAAC;GACd,KAAK,MAAM,CAAC,SAAS,UAAU,OAAO,QAAQ,KAAK,YAAsC,GACvF,KAAK,MAAM,UAAU,YAAY,WAAW;EAEhD;EAEA,IAAI,KAAK,MACP,KAAK,UAAU,KAAK;EAGtB,KAAK,YAAY,QAAQ,MAAM,QAAQ,eAAe,IAAI;EAC1D,KAAK,cAAc,QAAQ;EAC3B,KAAK,SAAS,QAAQ,UAAU,CAAC;CACnC;CAEA,YAAoB,QAAoB,MAAc,aAA2C;EAC/F,KAAK,SAAS,CAAC;EACf,MAAM,UAAW,OAAO,WAAwC,CAAC;EACjE,KAAK,MAAM,UAAU,SACnB,KAAK,OAAO,KAAK,IAAI,OAAO,QAAQ,MAAM,WAAW,CAAC;CAE1D;CAEA,cAAsB,MAA0B;EAC9C,KAAK,WAAW,CAAC;EACjB,KAAK,MAAM,SAAS,MAAM;GACxB,IAAI,EAAE,UAAU,QACd;GAEF,MAAM,aAAc,MAAM,KAAoB;GAC9C,MAAM,aAAc,MAAM,KAAoB;GAE9C,IAAI,eAAe,KAAK,QAAQ;IAC9B,MAAM,WAAW,IAAI,QAAQ,KAAK;IAClC,SAAS,WAAW;IACpB,KAAK,SAAS,KAAK,QAAQ;GAC7B,OAAO,IAAI,eAAe,KAAK,QAAQ;IACrC,MAAM,WAAW,IAAI,QAAQ,KAAK;IAClC,SAAS,WAAW;IACpB,KAAK,SAAS,KAAK,QAAQ;GAC7B;EACF;CACF;AACF"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { JsonObject } from '../types/raw.js';
|
|
2
|
+
import type { Team } from './team.js';
|
|
3
|
+
export declare class TransactionItem {
|
|
4
|
+
type: string;
|
|
5
|
+
player: string;
|
|
6
|
+
constructor(data: JsonObject, playerMap: Record<number | string, number | string>);
|
|
7
|
+
}
|
|
8
|
+
export declare class Transaction {
|
|
9
|
+
team: Team | undefined;
|
|
10
|
+
type: string;
|
|
11
|
+
status: string;
|
|
12
|
+
scoringPeriod: number;
|
|
13
|
+
date: unknown;
|
|
14
|
+
bidAmount: unknown;
|
|
15
|
+
items: TransactionItem[];
|
|
16
|
+
constructor(data: JsonObject, playerMap: Record<number | string, number | string>, getTeamData: (teamId: number) => Team | undefined);
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=transaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../src/espn/models/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEtC,qBAAa,eAAe;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;gBAEH,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;CAIlF;AAED,qBAAa,WAAW;IACtB,IAAI,EAAE,IAAI,GAAG,SAAS,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,eAAe,EAAE,CAAM;gBAG5B,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,EACnD,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,SAAS;CAYpD"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
//#region src/espn/models/transaction.ts
|
|
2
|
+
var TransactionItem = class {
|
|
3
|
+
type;
|
|
4
|
+
player;
|
|
5
|
+
constructor(data, playerMap) {
|
|
6
|
+
this.type = data.type;
|
|
7
|
+
this.player = String(playerMap[data.playerId] ?? "");
|
|
8
|
+
}
|
|
9
|
+
};
|
|
10
|
+
var Transaction = class {
|
|
11
|
+
team;
|
|
12
|
+
type;
|
|
13
|
+
status;
|
|
14
|
+
scoringPeriod;
|
|
15
|
+
date;
|
|
16
|
+
bidAmount;
|
|
17
|
+
items = [];
|
|
18
|
+
constructor(data, playerMap, getTeamData) {
|
|
19
|
+
this.team = getTeamData(data.teamId);
|
|
20
|
+
this.type = data.type;
|
|
21
|
+
this.status = data.status;
|
|
22
|
+
this.scoringPeriod = data.scoringPeriodId;
|
|
23
|
+
this.date = data.processDate;
|
|
24
|
+
this.bidAmount = data.bidAmount;
|
|
25
|
+
const items = data.items ?? [];
|
|
26
|
+
this.items = items.map((item) => new TransactionItem(item, playerMap));
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
//#endregion
|
|
30
|
+
export { Transaction, TransactionItem };
|
|
31
|
+
|
|
32
|
+
//# sourceMappingURL=transaction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transaction.js","names":[],"sources":["../../../src/espn/models/transaction.ts"],"sourcesContent":["import type { JsonObject } from '../types/raw.js';\nimport type { Team } from './team.js';\n\nexport class TransactionItem {\n type: string;\n player: string;\n\n constructor(data: JsonObject, playerMap: Record<number | string, number | string>) {\n this.type = data.type as string;\n this.player = String(playerMap[data.playerId as number] ?? '');\n }\n}\n\nexport class Transaction {\n team: Team | undefined;\n type: string;\n status: string;\n scoringPeriod: number;\n date: unknown;\n bidAmount: unknown;\n items: TransactionItem[] = [];\n\n constructor(\n data: JsonObject,\n playerMap: Record<number | string, number | string>,\n getTeamData: (teamId: number) => Team | undefined,\n ) {\n this.team = getTeamData(data.teamId as number);\n this.type = data.type as string;\n this.status = data.status as string;\n this.scoringPeriod = data.scoringPeriodId as number;\n this.date = data.processDate;\n this.bidAmount = data.bidAmount;\n\n const items = (data.items as JsonObject[] | undefined) ?? [];\n this.items = items.map((item) => new TransactionItem(item, playerMap));\n }\n}\n"],"mappings":";AAGA,IAAa,kBAAb,MAA6B;CAC3B;CACA;CAEA,YAAY,MAAkB,WAAqD;EACjF,KAAK,OAAO,KAAK;EACjB,KAAK,SAAS,OAAO,UAAU,KAAK,aAAuB,EAAE;CAC/D;AACF;AAEA,IAAa,cAAb,MAAyB;CACvB;CACA;CACA;CACA;CACA;CACA;CACA,QAA2B,CAAC;CAE5B,YACE,MACA,WACA,aACA;EACA,KAAK,OAAO,YAAY,KAAK,MAAgB;EAC7C,KAAK,OAAO,KAAK;EACjB,KAAK,SAAS,KAAK;EACnB,KAAK,gBAAgB,KAAK;EAC1B,KAAK,OAAO,KAAK;EACjB,KAAK,YAAY,KAAK;EAEtB,MAAM,QAAS,KAAK,SAAsC,CAAC;EAC3D,KAAK,QAAQ,MAAM,KAAK,SAAS,IAAI,gBAAgB,MAAM,SAAS,CAAC;CACvE;AACF"}
|