@blizzard-api/sc2 0.1.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/README.md ADDED
@@ -0,0 +1,75 @@
1
+ # @blizzard-api/sc2
2
+
3
+ This package aims to make it easier for you to integrate with the Blizzard Battle.net API, specifically for Diablo 3.
4
+
5
+ ## Installation
6
+
7
+ ```sh
8
+ npm i @blizzard-api/core @blizzard-api/sc2
9
+ ```
10
+
11
+ ## Usage
12
+
13
+ You can get paths, namespaces, parameters and more for a specific endpoint by calling it from the `sc2` export.
14
+
15
+ ```ts
16
+ import { sc2 } from "@blizzard-api/sc2"
17
+ //or
18
+ import sc2 from "@blizzard-api/sc2"
19
+
20
+ const season = sc2.season(123);
21
+ ^ { endDate: string; number: number; seasonId: number; startDate: string; year: number; }
22
+ ```
23
+
24
+ If you don't want to use the exported sc2 object, you can also access the functions directly:
25
+
26
+ ```ts
27
+ import { season } from "@blizzard-api/sc2"
28
+
29
+ const seasonI = season(123);
30
+ ^ { endDate: string; number: number; seasonId: number; startDate: string; year: number; }
31
+ ```
32
+
33
+ ### Types
34
+
35
+ If you need the response types, they are also exported with "Response" appended, so to get the response type from the above code, you can import it like this:
36
+
37
+ ```ts
38
+ import type { SeasonResponse } from '@blizzard-api/sc2';
39
+ ```
40
+
41
+ If you simply want to use the existing object, you can use the helper, `ExtractResourceType`, from `@blizzard-api/core` like so:
42
+
43
+ ```ts
44
+ import { sc2 } from "@blizzard-api/sc2"
45
+
46
+ const season = sc2.season("eu");
47
+ ^ { endDate: string; number: number; seasonId: number; startDate: string; year: number; }
48
+
49
+ type SeasonResponse = ExtractResourceType<typeof season>;
50
+ ```
51
+
52
+ ## Notes on Types
53
+
54
+ The types are manually created from using the Blizzard API documentation, and are as accurate as possible with smoke testing each endpoint. However, no-one is perfect so there is likely to be some discrepancies. If you encounter any issues with the types from this package, please open an issue or a pull request.
55
+
56
+ ### Client
57
+
58
+ While this package is made to function on it's own, it performs even better when combined with `@blizzard-api/client` where you can easily request data combining the two libraries.
59
+
60
+ ```ts
61
+ import { createBlizzardApiClient } from '@blizzard-api/client';
62
+ import { sc2 } from '@blizzard-api/sc2';
63
+
64
+ const client = await createBlizzardApiClient({
65
+ key: 'environment.blizzardClientId',
66
+ secret: 'environment.blizzardClientSecret',
67
+ origin: 'eu',
68
+ });
69
+
70
+ //Response will automatically be typed with the appropriate values
71
+ const response = await client.sendRequest(sc2.season("eu"));
72
+
73
+ console.log(response.data);
74
+ ^ typeof SeasonResponse
75
+ ```
package/dist/index.cjs ADDED
@@ -0,0 +1,151 @@
1
+ 'use strict';
2
+
3
+ // src/account/account.ts
4
+ function player(accountId) {
5
+ return {
6
+ path: `/sc2/player/${accountId}`
7
+ };
8
+ }
9
+
10
+ // src/base.ts
11
+ var starcraftRegion = {
12
+ cn: 5,
13
+ eu: 2,
14
+ kr: 3,
15
+ tw: 3,
16
+ us: 1
17
+ };
18
+
19
+ // src/ladder/ladder.ts
20
+ function grandmasterLeaderboard(regionId) {
21
+ return {
22
+ path: `/sc2/ladder/grandmaster/${starcraftRegion[regionId]}`
23
+ };
24
+ }
25
+ function season(regionId) {
26
+ return {
27
+ path: `/sc2/ladder/season/${starcraftRegion[regionId]}`
28
+ };
29
+ }
30
+
31
+ // src/league/league.ts
32
+ var starcraftLeagueQueue = {
33
+ "hots-1v1": 101,
34
+ "hots-2v2": 102,
35
+ "hots-3v3": 103,
36
+ "hots-4v4": 104,
37
+ "lotv-1v1": 201,
38
+ "lotv-2v2": 202,
39
+ "lotv-3v3": 203,
40
+ "lotv-4v4": 204,
41
+ "lotv-archon": 206,
42
+ "wol-1v1": 1,
43
+ "wol-2v2": 2,
44
+ "wol-3v3": 3,
45
+ "wol-4v4": 4
46
+ };
47
+ var starcraftLeagueTeam = {
48
+ arranged: 0,
49
+ random: 1
50
+ };
51
+ var starcraftLeagueId = {
52
+ bronze: 0,
53
+ diamond: 4,
54
+ gold: 2,
55
+ grandmaster: 6,
56
+ master: 5,
57
+ platinum: 3,
58
+ silver: 1
59
+ };
60
+ function getLeagueData(seasonId, queueId, teamType, leagueId) {
61
+ return {
62
+ path: `/data/sc2/league/${seasonId}/${starcraftLeagueQueue[queueId]}/${starcraftLeagueTeam[teamType]}/${starcraftLeagueId[leagueId]}`
63
+ };
64
+ }
65
+
66
+ // src/legacy/legacy.ts
67
+ function legacyProfile(regionId, realmId, profileId) {
68
+ return {
69
+ path: `/sc2/legacy/profile/${starcraftRegion[regionId]}/${realmId}/${profileId}`
70
+ };
71
+ }
72
+ function legacyLadders(regionId, realmId, profileId) {
73
+ return {
74
+ path: `/sc2/legacy/profile/${starcraftRegion[regionId]}/${realmId}/${profileId}/ladders`
75
+ };
76
+ }
77
+ function legacyMatchHistory(regionId, realmId, profileId) {
78
+ return {
79
+ path: `/sc2/legacy/profile/${starcraftRegion[regionId]}/${realmId}/${profileId}/matches`
80
+ };
81
+ }
82
+ function legacyLadder(regionId, ladderId) {
83
+ return {
84
+ path: `/sc2/legacy/ladder/${starcraftRegion[regionId]}/${ladderId}`
85
+ };
86
+ }
87
+ function legacyAchievements(regionId) {
88
+ return {
89
+ path: `/sc2/legacy/data/achievements/${starcraftRegion[regionId]}`
90
+ };
91
+ }
92
+ function legacyRewards(regionId) {
93
+ return {
94
+ path: `/sc2/legacy/data/rewards/${starcraftRegion[regionId]}`
95
+ };
96
+ }
97
+
98
+ // src/profile/profile.ts
99
+ function staticProfile(regionId) {
100
+ return {
101
+ path: `/sc2/static/profile/${starcraftRegion[regionId]}`
102
+ };
103
+ }
104
+ function metadata(regionId, realmId, profileId) {
105
+ return {
106
+ path: `/sc2/metadata/profile/${starcraftRegion[regionId]}/${realmId}/${profileId}`
107
+ };
108
+ }
109
+ function profile(regionId, realmId, profileId) {
110
+ return {
111
+ path: `/sc2/profile/${starcraftRegion[regionId]}/${realmId}/${profileId}`
112
+ };
113
+ }
114
+ function ladderSummary(regionId, realmId, profileId) {
115
+ return {
116
+ path: `/sc2/profile/${starcraftRegion[regionId]}/${realmId}/${profileId}/ladder/summary`
117
+ };
118
+ }
119
+ function ladder(regionId, realmId, profileId, ladderId) {
120
+ return {
121
+ path: `/sc2/profile/${starcraftRegion[regionId]}/${realmId}/${profileId}/ladder/${ladderId}`
122
+ };
123
+ }
124
+
125
+ // src/index.ts
126
+ var sc2 = {
127
+ //Account
128
+ player,
129
+ //Ladder
130
+ grandmasterLeaderboard,
131
+ season,
132
+ //League
133
+ getLeagueData,
134
+ //Legacy
135
+ legacyAchievements,
136
+ legacyLadder,
137
+ legacyLadders,
138
+ legacyMatchHistory,
139
+ legacyProfile,
140
+ legacyRewards,
141
+ //Profile
142
+ ladder,
143
+ ladderSummary,
144
+ metadata,
145
+ profile,
146
+ staticProfile
147
+ };
148
+
149
+ exports.sc2 = sc2;
150
+ //# sourceMappingURL=index.cjs.map
151
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/account/account.ts","../src/base.ts","../src/ladder/ladder.ts","../src/league/league.ts","../src/legacy/legacy.ts","../src/profile/profile.ts","../src/index.ts"],"names":[],"mappings":"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","file":"index.cjs","sourcesContent":["import type { Resource } from '@blizzard-api/core';\r\n\r\nexport function player(accountId: string): Resource<Array<unknown>> {\r\n return {\r\n path: `/sc2/player/${accountId}`,\r\n };\r\n}\r\n","/**\r\n * Base interface for Blizzard API responses.\r\n */\r\nexport interface ResponseBase {\r\n _links: {\r\n self: {\r\n href: string;\r\n };\r\n };\r\n}\r\n\r\n//The region (1=US, 2=EU, 3=KO and TW, 5=CN).\r\nexport type StarcraftRegion = 'cn' | 'eu' | 'kr' | 'tw' | 'us';\r\n\r\nexport const starcraftRegion: Record<StarcraftRegion, number> = {\r\n cn: 5,\r\n eu: 2,\r\n kr: 3,\r\n tw: 3,\r\n us: 1,\r\n};\r\n","import type { Resource } from '@blizzard-api/core';\r\nimport { starcraftRegion, type StarcraftRegion } from '../base';\r\nimport type { GrandmasterLeaderboardResponse, SeasonResponse } from './types';\r\n\r\nexport function grandmasterLeaderboard(regionId: StarcraftRegion): Resource<GrandmasterLeaderboardResponse> {\r\n return {\r\n path: `/sc2/ladder/grandmaster/${starcraftRegion[regionId]}`,\r\n };\r\n}\r\n\r\nexport function season(regionId: StarcraftRegion): Resource<SeasonResponse> {\r\n return {\r\n path: `/sc2/ladder/season/${starcraftRegion[regionId]}`,\r\n };\r\n}\r\n","import type { Resource } from '@blizzard-api/core';\r\nimport type { LeagueDataResponse, StarcraftLeagueId, StarcraftLeagueQueue, StarcraftLeagueTeamType } from './types';\r\n\r\nconst starcraftLeagueQueue: Record<StarcraftLeagueQueue, number> = {\r\n 'hots-1v1': 101,\r\n 'hots-2v2': 102,\r\n 'hots-3v3': 103,\r\n 'hots-4v4': 104,\r\n 'lotv-1v1': 201,\r\n 'lotv-2v2': 202,\r\n 'lotv-3v3': 203,\r\n 'lotv-4v4': 204,\r\n 'lotv-archon': 206,\r\n 'wol-1v1': 1,\r\n 'wol-2v2': 2,\r\n 'wol-3v3': 3,\r\n 'wol-4v4': 4,\r\n};\r\n\r\nconst starcraftLeagueTeam: Record<StarcraftLeagueTeamType, number> = {\r\n arranged: 0,\r\n random: 1,\r\n};\r\n\r\nconst starcraftLeagueId: Record<StarcraftLeagueId, number> = {\r\n bronze: 0,\r\n diamond: 4,\r\n gold: 2,\r\n grandmaster: 6,\r\n master: 5,\r\n platinum: 3,\r\n silver: 1,\r\n};\r\n\r\nexport function getLeagueData(\r\n seasonId: string,\r\n queueId: StarcraftLeagueQueue,\r\n teamType: StarcraftLeagueTeamType,\r\n leagueId: StarcraftLeagueId,\r\n): Resource<LeagueDataResponse> {\r\n return {\r\n path: `/data/sc2/league/${seasonId}/${starcraftLeagueQueue[queueId]}/${starcraftLeagueTeam[teamType]}/${starcraftLeagueId[leagueId]}`,\r\n };\r\n}\r\n","import type { Resource } from '@blizzard-api/core';\r\nimport { starcraftRegion, type StarcraftRegion } from '../base';\r\nimport type {\r\n LegacyAchievementsResponse,\r\n LegacyLaddersResponse,\r\n LegacyMatchHistoryResponse,\r\n LegacyProfileResponse,\r\n LegacyRewardsResponse,\r\n} from './types';\r\n\r\nexport function legacyProfile(\r\n regionId: StarcraftRegion,\r\n realmId: 1 | 2,\r\n profileId: number,\r\n): Resource<LegacyProfileResponse> {\r\n return {\r\n path: `/sc2/legacy/profile/${starcraftRegion[regionId]}/${realmId}/${profileId}`,\r\n };\r\n}\r\n\r\nexport function legacyLadders(\r\n regionId: StarcraftRegion,\r\n realmId: 1 | 2,\r\n profileId: number,\r\n): Resource<LegacyLaddersResponse> {\r\n return {\r\n path: `/sc2/legacy/profile/${starcraftRegion[regionId]}/${realmId}/${profileId}/ladders`,\r\n };\r\n}\r\n\r\nexport function legacyMatchHistory(\r\n regionId: StarcraftRegion,\r\n realmId: 1 | 2,\r\n profileId: number,\r\n): Resource<LegacyMatchHistoryResponse> {\r\n return {\r\n path: `/sc2/legacy/profile/${starcraftRegion[regionId]}/${realmId}/${profileId}/matches`,\r\n };\r\n}\r\n\r\nexport function legacyLadder(regionId: StarcraftRegion, ladderId: number): Resource<unknown> {\r\n return {\r\n path: `/sc2/legacy/ladder/${starcraftRegion[regionId]}/${ladderId}`,\r\n };\r\n}\r\n\r\nexport function legacyAchievements(regionId: StarcraftRegion): Resource<LegacyAchievementsResponse> {\r\n return {\r\n path: `/sc2/legacy/data/achievements/${starcraftRegion[regionId]}`,\r\n };\r\n}\r\n\r\nexport function legacyRewards(regionId: StarcraftRegion): Resource<LegacyRewardsResponse> {\r\n return {\r\n path: `/sc2/legacy/data/rewards/${starcraftRegion[regionId]}`,\r\n };\r\n}\r\n","import type { Resource } from '@blizzard-api/core';\r\nimport { starcraftRegion, type StarcraftRegion } from '../base';\r\nimport type { LadderResponse, LadderSummaryResponse, MetadataResponse, StaticProfileResponse } from './types';\r\n\r\nexport function staticProfile(regionId: StarcraftRegion): Resource<StaticProfileResponse> {\r\n return {\r\n path: `/sc2/static/profile/${starcraftRegion[regionId]}`,\r\n };\r\n}\r\n\r\nexport function metadata(regionId: StarcraftRegion, realmId: 1 | 2, profileId: number): Resource<MetadataResponse> {\r\n return {\r\n path: `/sc2/metadata/profile/${starcraftRegion[regionId]}/${realmId}/${profileId}`,\r\n };\r\n}\r\n\r\nexport function profile(regionId: StarcraftRegion, realmId: 1 | 2, profileId: number): Resource<MetadataResponse> {\r\n return {\r\n path: `/sc2/profile/${starcraftRegion[regionId]}/${realmId}/${profileId}`,\r\n };\r\n}\r\n\r\nexport function ladderSummary(\r\n regionId: StarcraftRegion,\r\n realmId: 1 | 2,\r\n profileId: number,\r\n): Resource<LadderSummaryResponse> {\r\n return {\r\n path: `/sc2/profile/${starcraftRegion[regionId]}/${realmId}/${profileId}/ladder/summary`,\r\n };\r\n}\r\n\r\nexport function ladder(\r\n regionId: StarcraftRegion,\r\n realmId: 1 | 2,\r\n profileId: number,\r\n ladderId: number,\r\n): Resource<LadderResponse> {\r\n return {\r\n path: `/sc2/profile/${starcraftRegion[regionId]}/${realmId}/${profileId}/ladder/${ladderId}`,\r\n };\r\n}\r\n","import { player } from './account/account';\r\nimport { grandmasterLeaderboard, season } from './ladder/ladder';\r\nimport { getLeagueData } from './league/league';\r\nimport {\r\n legacyAchievements,\r\n legacyLadder,\r\n legacyLadders,\r\n legacyMatchHistory,\r\n legacyProfile,\r\n legacyRewards,\r\n} from './legacy/legacy';\r\nimport { ladder, ladderSummary, metadata, profile, staticProfile } from './profile/profile';\r\n\r\nexport const sc2 = {\r\n //Account\r\n player,\r\n //Ladder\r\n grandmasterLeaderboard,\r\n season,\r\n //League\r\n getLeagueData,\r\n //Legacy\r\n legacyAchievements,\r\n legacyLadder,\r\n legacyLadders,\r\n legacyMatchHistory,\r\n legacyProfile,\r\n legacyRewards,\r\n //Profile\r\n ladder,\r\n ladderSummary,\r\n metadata,\r\n profile,\r\n staticProfile,\r\n};\r\n\r\n//Account\r\n//Ladder\r\nexport type * from './ladder/types';\r\n//League\r\nexport type * from './league/types';\r\n//Legacy\r\nexport type * from './legacy/types';\r\n//Profile\r\nexport type * from './profile/types';\r\n"]}
@@ -0,0 +1,298 @@
1
+ import { Resource } from '@blizzard-api/core';
2
+
3
+ declare function player(accountId: string): Resource<Array<unknown>>;
4
+
5
+ /**
6
+ * Base interface for Blizzard API responses.
7
+ */
8
+ interface ResponseBase {
9
+ _links: {
10
+ self: {
11
+ href: string;
12
+ };
13
+ };
14
+ }
15
+ type StarcraftRegion = 'cn' | 'eu' | 'kr' | 'tw' | 'us';
16
+
17
+ interface GrandmasterLeaderboardResponse {
18
+ ladderTeams: Array<LadderTeam>;
19
+ }
20
+ interface LadderTeam {
21
+ joinTimestamp: number;
22
+ losses: number;
23
+ mmr: number;
24
+ points: number;
25
+ previousRank: number;
26
+ teamMembers: Array<TeamMember>;
27
+ wins: number;
28
+ }
29
+ interface TeamMember {
30
+ clanTag?: string;
31
+ displayName: string;
32
+ favoriteRace: 'protoss' | 'random' | 'terran' | 'zerg';
33
+ id: string;
34
+ realm: number;
35
+ region: number;
36
+ }
37
+ interface SeasonResponse {
38
+ endDate: string;
39
+ number: number;
40
+ seasonId: number;
41
+ startDate: string;
42
+ year: number;
43
+ }
44
+
45
+ declare function grandmasterLeaderboard(regionId: StarcraftRegion): Resource<GrandmasterLeaderboardResponse>;
46
+ declare function season(regionId: StarcraftRegion): Resource<SeasonResponse>;
47
+
48
+ interface LeagueDataResponse extends ResponseBase {
49
+ key: Key;
50
+ tier: Array<Tier>;
51
+ }
52
+ interface Key {
53
+ league_id: number;
54
+ queue_id: number;
55
+ season_id: number;
56
+ team_type: number;
57
+ }
58
+ interface Tier {
59
+ division: Array<Division>;
60
+ id: number;
61
+ }
62
+ interface Division {
63
+ id: number;
64
+ ladder_id: number;
65
+ member_count: number;
66
+ }
67
+ type StarcraftLeagueQueue = 'hots-1v1' | 'hots-2v2' | 'hots-3v3' | 'hots-4v4' | 'lotv-1v1' | 'lotv-2v2' | 'lotv-3v3' | 'lotv-4v4' | 'lotv-archon' | 'wol-1v1' | 'wol-2v2' | 'wol-3v3' | 'wol-4v4';
68
+ type StarcraftLeagueTeamType = 'arranged' | 'random';
69
+ type StarcraftLeagueId = 'bronze' | 'diamond' | 'gold' | 'grandmaster' | 'master' | 'platinum' | 'silver';
70
+
71
+ declare function getLeagueData(seasonId: string, queueId: StarcraftLeagueQueue, teamType: StarcraftLeagueTeamType, leagueId: StarcraftLeagueId): Resource<LeagueDataResponse>;
72
+
73
+ interface LegacyProfileResponse {
74
+ achievements: Achievements;
75
+ campaign: Campaign;
76
+ career: Career;
77
+ clanName: string;
78
+ clanTag: string;
79
+ displayName: string;
80
+ id: string;
81
+ portrait: Icon;
82
+ profilePath: string;
83
+ realm: number;
84
+ rewards: Rewards;
85
+ season: Season;
86
+ swarmLevels: SwarmLevels;
87
+ }
88
+ interface Achievements {
89
+ achievements: Array<{
90
+ achievementId: string;
91
+ completionDate: number;
92
+ }>;
93
+ points: Points;
94
+ }
95
+ interface Points {
96
+ categoryPoints: Record<string, number>;
97
+ totalPoints: number;
98
+ }
99
+ interface Campaign {
100
+ hots: string;
101
+ wol: string;
102
+ }
103
+ interface Career {
104
+ careerTotalGames: number;
105
+ highest1v1Rank: string;
106
+ highestTeamRank: string;
107
+ primaryRace: string;
108
+ protossWins: number;
109
+ seasonTotalGames: number;
110
+ terranWins: number;
111
+ zergWins: number;
112
+ }
113
+ interface Icon {
114
+ h: number;
115
+ offset: number;
116
+ url: string;
117
+ w: number;
118
+ x: number;
119
+ y: number;
120
+ }
121
+ interface Rewards {
122
+ earned: Array<string>;
123
+ selected: Array<string>;
124
+ }
125
+ interface Season {
126
+ seasonId: number;
127
+ seasonNumber: number;
128
+ seasonYear: number;
129
+ stats: Array<Stat>;
130
+ totalGamesThisSeason: number;
131
+ }
132
+ interface Stat {
133
+ games: number;
134
+ type: string;
135
+ wins: number;
136
+ }
137
+ interface SwarmLevels {
138
+ level: number;
139
+ protoss: SwarmLevelsByRace;
140
+ terran: SwarmLevelsByRace;
141
+ zerg: SwarmLevelsByRace;
142
+ }
143
+ interface SwarmLevelsByRace {
144
+ currentLevelXP: number;
145
+ level: number;
146
+ totalLevelXP: number;
147
+ }
148
+ interface LegacyLaddersResponse {
149
+ currentSeason: Array<unknown>;
150
+ previousSeason: Array<unknown>;
151
+ showcasePlacement: Array<unknown>;
152
+ }
153
+ interface LegacyMatchHistoryResponse {
154
+ matches: Array<Match>;
155
+ }
156
+ interface Match {
157
+ date: number;
158
+ decision: 'Left' | 'Loss' | 'Win';
159
+ map: string;
160
+ speed: 'Fast' | 'Faster';
161
+ type: '2v2' | '3v3' | 'Co-Op' | 'Custom';
162
+ }
163
+ interface LegacyAchievementsResponse {
164
+ achievements: Array<Achievement$1>;
165
+ categories: Array<Category$1>;
166
+ }
167
+ interface Achievement$1 {
168
+ achievementId: string;
169
+ categoryId: string;
170
+ description: string;
171
+ icon: Icon;
172
+ points: number;
173
+ title: string;
174
+ }
175
+ interface Category$1 {
176
+ categoryId: string;
177
+ children?: Array<Category$1>;
178
+ featuredAchievementId: string;
179
+ title: string;
180
+ }
181
+ interface LegacyRewardsResponse {
182
+ animations: Array<Animation>;
183
+ portraits: Array<Animation>;
184
+ protossDecals: Array<Animation>;
185
+ skins: Array<Animation>;
186
+ terranDecals: Array<Animation>;
187
+ zergDecals: Array<Animation>;
188
+ }
189
+ interface Animation {
190
+ achievementId: string;
191
+ command?: '/dance';
192
+ icon: Icon;
193
+ id: string;
194
+ name?: string;
195
+ title: string;
196
+ }
197
+
198
+ declare function legacyProfile(regionId: StarcraftRegion, realmId: 1 | 2, profileId: number): Resource<LegacyProfileResponse>;
199
+ declare function legacyLadders(regionId: StarcraftRegion, realmId: 1 | 2, profileId: number): Resource<LegacyLaddersResponse>;
200
+ declare function legacyMatchHistory(regionId: StarcraftRegion, realmId: 1 | 2, profileId: number): Resource<LegacyMatchHistoryResponse>;
201
+ declare function legacyLadder(regionId: StarcraftRegion, ladderId: number): Resource<unknown>;
202
+ declare function legacyAchievements(regionId: StarcraftRegion): Resource<LegacyAchievementsResponse>;
203
+ declare function legacyRewards(regionId: StarcraftRegion): Resource<LegacyRewardsResponse>;
204
+
205
+ interface StaticProfileResponse {
206
+ achievements: Array<Achievement>;
207
+ categories: Array<Category>;
208
+ criteria: Array<Criterion>;
209
+ rewards: Array<Reward>;
210
+ }
211
+ interface Achievement {
212
+ categoryId: string;
213
+ chainAchievementIds: Array<string>;
214
+ chainRewardSize: number;
215
+ criteriaIds?: Array<string>;
216
+ description: string;
217
+ flags: number;
218
+ id: string;
219
+ imageUrl: string;
220
+ isChained: boolean;
221
+ points: number;
222
+ title: string;
223
+ uiOrderHint: number;
224
+ }
225
+ interface Category {
226
+ childrenCategoryIds: Array<string>;
227
+ featuredAchievementId: string;
228
+ id: string;
229
+ medalTiers?: Array<number>;
230
+ name: string;
231
+ parentCategoryId: null | string;
232
+ points: number;
233
+ uiOrderHint: number;
234
+ }
235
+ interface Criterion {
236
+ achievementId: string;
237
+ description: string;
238
+ evaluationClass: 'Achv' | 'Clnt' | 'S2Gm' | 'Sunk' | 'Trny';
239
+ flags: number;
240
+ id: string;
241
+ necessaryQuantity: number;
242
+ uiOrderHint: number;
243
+ }
244
+ interface Reward {
245
+ achievementId?: string;
246
+ command?: '/dance';
247
+ flags: number;
248
+ id: string;
249
+ imageUrl: string;
250
+ isSkin: boolean;
251
+ name: string;
252
+ uiOrderHint: number;
253
+ unlockableType: string;
254
+ }
255
+ interface MetadataResponse {
256
+ avatarUrl: string;
257
+ name: string;
258
+ profileId: string;
259
+ profileUrl: string;
260
+ realmId: number;
261
+ regionId: number;
262
+ }
263
+ interface LadderSummaryResponse {
264
+ allLadderMemberships: Array<unknown>;
265
+ placementMatches: Array<unknown>;
266
+ showCaseEntries: Array<unknown>;
267
+ }
268
+ interface LadderResponse {
269
+ allLadderMemberships: Array<unknown>;
270
+ ladderTeams: Array<unknown>;
271
+ ranksAndPools: Array<unknown>;
272
+ }
273
+
274
+ declare function staticProfile(regionId: StarcraftRegion): Resource<StaticProfileResponse>;
275
+ declare function metadata(regionId: StarcraftRegion, realmId: 1 | 2, profileId: number): Resource<MetadataResponse>;
276
+ declare function profile(regionId: StarcraftRegion, realmId: 1 | 2, profileId: number): Resource<MetadataResponse>;
277
+ declare function ladderSummary(regionId: StarcraftRegion, realmId: 1 | 2, profileId: number): Resource<LadderSummaryResponse>;
278
+ declare function ladder(regionId: StarcraftRegion, realmId: 1 | 2, profileId: number, ladderId: number): Resource<LadderResponse>;
279
+
280
+ declare const sc2: {
281
+ player: typeof player;
282
+ grandmasterLeaderboard: typeof grandmasterLeaderboard;
283
+ season: typeof season;
284
+ getLeagueData: typeof getLeagueData;
285
+ legacyAchievements: typeof legacyAchievements;
286
+ legacyLadder: typeof legacyLadder;
287
+ legacyLadders: typeof legacyLadders;
288
+ legacyMatchHistory: typeof legacyMatchHistory;
289
+ legacyProfile: typeof legacyProfile;
290
+ legacyRewards: typeof legacyRewards;
291
+ ladder: typeof ladder;
292
+ ladderSummary: typeof ladderSummary;
293
+ metadata: typeof metadata;
294
+ profile: typeof profile;
295
+ staticProfile: typeof staticProfile;
296
+ };
297
+
298
+ export { type GrandmasterLeaderboardResponse, type LadderResponse, type LadderSummaryResponse, type LeagueDataResponse, type LegacyAchievementsResponse, type LegacyLaddersResponse, type LegacyMatchHistoryResponse, type LegacyProfileResponse, type LegacyRewardsResponse, type MetadataResponse, type SeasonResponse, type StarcraftLeagueId, type StarcraftLeagueQueue, type StarcraftLeagueTeamType, type StaticProfileResponse, sc2 };
@@ -0,0 +1,298 @@
1
+ import { Resource } from '@blizzard-api/core';
2
+
3
+ declare function player(accountId: string): Resource<Array<unknown>>;
4
+
5
+ /**
6
+ * Base interface for Blizzard API responses.
7
+ */
8
+ interface ResponseBase {
9
+ _links: {
10
+ self: {
11
+ href: string;
12
+ };
13
+ };
14
+ }
15
+ type StarcraftRegion = 'cn' | 'eu' | 'kr' | 'tw' | 'us';
16
+
17
+ interface GrandmasterLeaderboardResponse {
18
+ ladderTeams: Array<LadderTeam>;
19
+ }
20
+ interface LadderTeam {
21
+ joinTimestamp: number;
22
+ losses: number;
23
+ mmr: number;
24
+ points: number;
25
+ previousRank: number;
26
+ teamMembers: Array<TeamMember>;
27
+ wins: number;
28
+ }
29
+ interface TeamMember {
30
+ clanTag?: string;
31
+ displayName: string;
32
+ favoriteRace: 'protoss' | 'random' | 'terran' | 'zerg';
33
+ id: string;
34
+ realm: number;
35
+ region: number;
36
+ }
37
+ interface SeasonResponse {
38
+ endDate: string;
39
+ number: number;
40
+ seasonId: number;
41
+ startDate: string;
42
+ year: number;
43
+ }
44
+
45
+ declare function grandmasterLeaderboard(regionId: StarcraftRegion): Resource<GrandmasterLeaderboardResponse>;
46
+ declare function season(regionId: StarcraftRegion): Resource<SeasonResponse>;
47
+
48
+ interface LeagueDataResponse extends ResponseBase {
49
+ key: Key;
50
+ tier: Array<Tier>;
51
+ }
52
+ interface Key {
53
+ league_id: number;
54
+ queue_id: number;
55
+ season_id: number;
56
+ team_type: number;
57
+ }
58
+ interface Tier {
59
+ division: Array<Division>;
60
+ id: number;
61
+ }
62
+ interface Division {
63
+ id: number;
64
+ ladder_id: number;
65
+ member_count: number;
66
+ }
67
+ type StarcraftLeagueQueue = 'hots-1v1' | 'hots-2v2' | 'hots-3v3' | 'hots-4v4' | 'lotv-1v1' | 'lotv-2v2' | 'lotv-3v3' | 'lotv-4v4' | 'lotv-archon' | 'wol-1v1' | 'wol-2v2' | 'wol-3v3' | 'wol-4v4';
68
+ type StarcraftLeagueTeamType = 'arranged' | 'random';
69
+ type StarcraftLeagueId = 'bronze' | 'diamond' | 'gold' | 'grandmaster' | 'master' | 'platinum' | 'silver';
70
+
71
+ declare function getLeagueData(seasonId: string, queueId: StarcraftLeagueQueue, teamType: StarcraftLeagueTeamType, leagueId: StarcraftLeagueId): Resource<LeagueDataResponse>;
72
+
73
+ interface LegacyProfileResponse {
74
+ achievements: Achievements;
75
+ campaign: Campaign;
76
+ career: Career;
77
+ clanName: string;
78
+ clanTag: string;
79
+ displayName: string;
80
+ id: string;
81
+ portrait: Icon;
82
+ profilePath: string;
83
+ realm: number;
84
+ rewards: Rewards;
85
+ season: Season;
86
+ swarmLevels: SwarmLevels;
87
+ }
88
+ interface Achievements {
89
+ achievements: Array<{
90
+ achievementId: string;
91
+ completionDate: number;
92
+ }>;
93
+ points: Points;
94
+ }
95
+ interface Points {
96
+ categoryPoints: Record<string, number>;
97
+ totalPoints: number;
98
+ }
99
+ interface Campaign {
100
+ hots: string;
101
+ wol: string;
102
+ }
103
+ interface Career {
104
+ careerTotalGames: number;
105
+ highest1v1Rank: string;
106
+ highestTeamRank: string;
107
+ primaryRace: string;
108
+ protossWins: number;
109
+ seasonTotalGames: number;
110
+ terranWins: number;
111
+ zergWins: number;
112
+ }
113
+ interface Icon {
114
+ h: number;
115
+ offset: number;
116
+ url: string;
117
+ w: number;
118
+ x: number;
119
+ y: number;
120
+ }
121
+ interface Rewards {
122
+ earned: Array<string>;
123
+ selected: Array<string>;
124
+ }
125
+ interface Season {
126
+ seasonId: number;
127
+ seasonNumber: number;
128
+ seasonYear: number;
129
+ stats: Array<Stat>;
130
+ totalGamesThisSeason: number;
131
+ }
132
+ interface Stat {
133
+ games: number;
134
+ type: string;
135
+ wins: number;
136
+ }
137
+ interface SwarmLevels {
138
+ level: number;
139
+ protoss: SwarmLevelsByRace;
140
+ terran: SwarmLevelsByRace;
141
+ zerg: SwarmLevelsByRace;
142
+ }
143
+ interface SwarmLevelsByRace {
144
+ currentLevelXP: number;
145
+ level: number;
146
+ totalLevelXP: number;
147
+ }
148
+ interface LegacyLaddersResponse {
149
+ currentSeason: Array<unknown>;
150
+ previousSeason: Array<unknown>;
151
+ showcasePlacement: Array<unknown>;
152
+ }
153
+ interface LegacyMatchHistoryResponse {
154
+ matches: Array<Match>;
155
+ }
156
+ interface Match {
157
+ date: number;
158
+ decision: 'Left' | 'Loss' | 'Win';
159
+ map: string;
160
+ speed: 'Fast' | 'Faster';
161
+ type: '2v2' | '3v3' | 'Co-Op' | 'Custom';
162
+ }
163
+ interface LegacyAchievementsResponse {
164
+ achievements: Array<Achievement$1>;
165
+ categories: Array<Category$1>;
166
+ }
167
+ interface Achievement$1 {
168
+ achievementId: string;
169
+ categoryId: string;
170
+ description: string;
171
+ icon: Icon;
172
+ points: number;
173
+ title: string;
174
+ }
175
+ interface Category$1 {
176
+ categoryId: string;
177
+ children?: Array<Category$1>;
178
+ featuredAchievementId: string;
179
+ title: string;
180
+ }
181
+ interface LegacyRewardsResponse {
182
+ animations: Array<Animation>;
183
+ portraits: Array<Animation>;
184
+ protossDecals: Array<Animation>;
185
+ skins: Array<Animation>;
186
+ terranDecals: Array<Animation>;
187
+ zergDecals: Array<Animation>;
188
+ }
189
+ interface Animation {
190
+ achievementId: string;
191
+ command?: '/dance';
192
+ icon: Icon;
193
+ id: string;
194
+ name?: string;
195
+ title: string;
196
+ }
197
+
198
+ declare function legacyProfile(regionId: StarcraftRegion, realmId: 1 | 2, profileId: number): Resource<LegacyProfileResponse>;
199
+ declare function legacyLadders(regionId: StarcraftRegion, realmId: 1 | 2, profileId: number): Resource<LegacyLaddersResponse>;
200
+ declare function legacyMatchHistory(regionId: StarcraftRegion, realmId: 1 | 2, profileId: number): Resource<LegacyMatchHistoryResponse>;
201
+ declare function legacyLadder(regionId: StarcraftRegion, ladderId: number): Resource<unknown>;
202
+ declare function legacyAchievements(regionId: StarcraftRegion): Resource<LegacyAchievementsResponse>;
203
+ declare function legacyRewards(regionId: StarcraftRegion): Resource<LegacyRewardsResponse>;
204
+
205
+ interface StaticProfileResponse {
206
+ achievements: Array<Achievement>;
207
+ categories: Array<Category>;
208
+ criteria: Array<Criterion>;
209
+ rewards: Array<Reward>;
210
+ }
211
+ interface Achievement {
212
+ categoryId: string;
213
+ chainAchievementIds: Array<string>;
214
+ chainRewardSize: number;
215
+ criteriaIds?: Array<string>;
216
+ description: string;
217
+ flags: number;
218
+ id: string;
219
+ imageUrl: string;
220
+ isChained: boolean;
221
+ points: number;
222
+ title: string;
223
+ uiOrderHint: number;
224
+ }
225
+ interface Category {
226
+ childrenCategoryIds: Array<string>;
227
+ featuredAchievementId: string;
228
+ id: string;
229
+ medalTiers?: Array<number>;
230
+ name: string;
231
+ parentCategoryId: null | string;
232
+ points: number;
233
+ uiOrderHint: number;
234
+ }
235
+ interface Criterion {
236
+ achievementId: string;
237
+ description: string;
238
+ evaluationClass: 'Achv' | 'Clnt' | 'S2Gm' | 'Sunk' | 'Trny';
239
+ flags: number;
240
+ id: string;
241
+ necessaryQuantity: number;
242
+ uiOrderHint: number;
243
+ }
244
+ interface Reward {
245
+ achievementId?: string;
246
+ command?: '/dance';
247
+ flags: number;
248
+ id: string;
249
+ imageUrl: string;
250
+ isSkin: boolean;
251
+ name: string;
252
+ uiOrderHint: number;
253
+ unlockableType: string;
254
+ }
255
+ interface MetadataResponse {
256
+ avatarUrl: string;
257
+ name: string;
258
+ profileId: string;
259
+ profileUrl: string;
260
+ realmId: number;
261
+ regionId: number;
262
+ }
263
+ interface LadderSummaryResponse {
264
+ allLadderMemberships: Array<unknown>;
265
+ placementMatches: Array<unknown>;
266
+ showCaseEntries: Array<unknown>;
267
+ }
268
+ interface LadderResponse {
269
+ allLadderMemberships: Array<unknown>;
270
+ ladderTeams: Array<unknown>;
271
+ ranksAndPools: Array<unknown>;
272
+ }
273
+
274
+ declare function staticProfile(regionId: StarcraftRegion): Resource<StaticProfileResponse>;
275
+ declare function metadata(regionId: StarcraftRegion, realmId: 1 | 2, profileId: number): Resource<MetadataResponse>;
276
+ declare function profile(regionId: StarcraftRegion, realmId: 1 | 2, profileId: number): Resource<MetadataResponse>;
277
+ declare function ladderSummary(regionId: StarcraftRegion, realmId: 1 | 2, profileId: number): Resource<LadderSummaryResponse>;
278
+ declare function ladder(regionId: StarcraftRegion, realmId: 1 | 2, profileId: number, ladderId: number): Resource<LadderResponse>;
279
+
280
+ declare const sc2: {
281
+ player: typeof player;
282
+ grandmasterLeaderboard: typeof grandmasterLeaderboard;
283
+ season: typeof season;
284
+ getLeagueData: typeof getLeagueData;
285
+ legacyAchievements: typeof legacyAchievements;
286
+ legacyLadder: typeof legacyLadder;
287
+ legacyLadders: typeof legacyLadders;
288
+ legacyMatchHistory: typeof legacyMatchHistory;
289
+ legacyProfile: typeof legacyProfile;
290
+ legacyRewards: typeof legacyRewards;
291
+ ladder: typeof ladder;
292
+ ladderSummary: typeof ladderSummary;
293
+ metadata: typeof metadata;
294
+ profile: typeof profile;
295
+ staticProfile: typeof staticProfile;
296
+ };
297
+
298
+ export { type GrandmasterLeaderboardResponse, type LadderResponse, type LadderSummaryResponse, type LeagueDataResponse, type LegacyAchievementsResponse, type LegacyLaddersResponse, type LegacyMatchHistoryResponse, type LegacyProfileResponse, type LegacyRewardsResponse, type MetadataResponse, type SeasonResponse, type StarcraftLeagueId, type StarcraftLeagueQueue, type StarcraftLeagueTeamType, type StaticProfileResponse, sc2 };
package/dist/index.js ADDED
@@ -0,0 +1,149 @@
1
+ // src/account/account.ts
2
+ function player(accountId) {
3
+ return {
4
+ path: `/sc2/player/${accountId}`
5
+ };
6
+ }
7
+
8
+ // src/base.ts
9
+ var starcraftRegion = {
10
+ cn: 5,
11
+ eu: 2,
12
+ kr: 3,
13
+ tw: 3,
14
+ us: 1
15
+ };
16
+
17
+ // src/ladder/ladder.ts
18
+ function grandmasterLeaderboard(regionId) {
19
+ return {
20
+ path: `/sc2/ladder/grandmaster/${starcraftRegion[regionId]}`
21
+ };
22
+ }
23
+ function season(regionId) {
24
+ return {
25
+ path: `/sc2/ladder/season/${starcraftRegion[regionId]}`
26
+ };
27
+ }
28
+
29
+ // src/league/league.ts
30
+ var starcraftLeagueQueue = {
31
+ "hots-1v1": 101,
32
+ "hots-2v2": 102,
33
+ "hots-3v3": 103,
34
+ "hots-4v4": 104,
35
+ "lotv-1v1": 201,
36
+ "lotv-2v2": 202,
37
+ "lotv-3v3": 203,
38
+ "lotv-4v4": 204,
39
+ "lotv-archon": 206,
40
+ "wol-1v1": 1,
41
+ "wol-2v2": 2,
42
+ "wol-3v3": 3,
43
+ "wol-4v4": 4
44
+ };
45
+ var starcraftLeagueTeam = {
46
+ arranged: 0,
47
+ random: 1
48
+ };
49
+ var starcraftLeagueId = {
50
+ bronze: 0,
51
+ diamond: 4,
52
+ gold: 2,
53
+ grandmaster: 6,
54
+ master: 5,
55
+ platinum: 3,
56
+ silver: 1
57
+ };
58
+ function getLeagueData(seasonId, queueId, teamType, leagueId) {
59
+ return {
60
+ path: `/data/sc2/league/${seasonId}/${starcraftLeagueQueue[queueId]}/${starcraftLeagueTeam[teamType]}/${starcraftLeagueId[leagueId]}`
61
+ };
62
+ }
63
+
64
+ // src/legacy/legacy.ts
65
+ function legacyProfile(regionId, realmId, profileId) {
66
+ return {
67
+ path: `/sc2/legacy/profile/${starcraftRegion[regionId]}/${realmId}/${profileId}`
68
+ };
69
+ }
70
+ function legacyLadders(regionId, realmId, profileId) {
71
+ return {
72
+ path: `/sc2/legacy/profile/${starcraftRegion[regionId]}/${realmId}/${profileId}/ladders`
73
+ };
74
+ }
75
+ function legacyMatchHistory(regionId, realmId, profileId) {
76
+ return {
77
+ path: `/sc2/legacy/profile/${starcraftRegion[regionId]}/${realmId}/${profileId}/matches`
78
+ };
79
+ }
80
+ function legacyLadder(regionId, ladderId) {
81
+ return {
82
+ path: `/sc2/legacy/ladder/${starcraftRegion[regionId]}/${ladderId}`
83
+ };
84
+ }
85
+ function legacyAchievements(regionId) {
86
+ return {
87
+ path: `/sc2/legacy/data/achievements/${starcraftRegion[regionId]}`
88
+ };
89
+ }
90
+ function legacyRewards(regionId) {
91
+ return {
92
+ path: `/sc2/legacy/data/rewards/${starcraftRegion[regionId]}`
93
+ };
94
+ }
95
+
96
+ // src/profile/profile.ts
97
+ function staticProfile(regionId) {
98
+ return {
99
+ path: `/sc2/static/profile/${starcraftRegion[regionId]}`
100
+ };
101
+ }
102
+ function metadata(regionId, realmId, profileId) {
103
+ return {
104
+ path: `/sc2/metadata/profile/${starcraftRegion[regionId]}/${realmId}/${profileId}`
105
+ };
106
+ }
107
+ function profile(regionId, realmId, profileId) {
108
+ return {
109
+ path: `/sc2/profile/${starcraftRegion[regionId]}/${realmId}/${profileId}`
110
+ };
111
+ }
112
+ function ladderSummary(regionId, realmId, profileId) {
113
+ return {
114
+ path: `/sc2/profile/${starcraftRegion[regionId]}/${realmId}/${profileId}/ladder/summary`
115
+ };
116
+ }
117
+ function ladder(regionId, realmId, profileId, ladderId) {
118
+ return {
119
+ path: `/sc2/profile/${starcraftRegion[regionId]}/${realmId}/${profileId}/ladder/${ladderId}`
120
+ };
121
+ }
122
+
123
+ // src/index.ts
124
+ var sc2 = {
125
+ //Account
126
+ player,
127
+ //Ladder
128
+ grandmasterLeaderboard,
129
+ season,
130
+ //League
131
+ getLeagueData,
132
+ //Legacy
133
+ legacyAchievements,
134
+ legacyLadder,
135
+ legacyLadders,
136
+ legacyMatchHistory,
137
+ legacyProfile,
138
+ legacyRewards,
139
+ //Profile
140
+ ladder,
141
+ ladderSummary,
142
+ metadata,
143
+ profile,
144
+ staticProfile
145
+ };
146
+
147
+ export { sc2 };
148
+ //# sourceMappingURL=index.js.map
149
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/account/account.ts","../src/base.ts","../src/ladder/ladder.ts","../src/league/league.ts","../src/legacy/legacy.ts","../src/profile/profile.ts","../src/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import type { Resource } from '@blizzard-api/core';\r\n\r\nexport function player(accountId: string): Resource<Array<unknown>> {\r\n return {\r\n path: `/sc2/player/${accountId}`,\r\n };\r\n}\r\n","/**\r\n * Base interface for Blizzard API responses.\r\n */\r\nexport interface ResponseBase {\r\n _links: {\r\n self: {\r\n href: string;\r\n };\r\n };\r\n}\r\n\r\n//The region (1=US, 2=EU, 3=KO and TW, 5=CN).\r\nexport type StarcraftRegion = 'cn' | 'eu' | 'kr' | 'tw' | 'us';\r\n\r\nexport const starcraftRegion: Record<StarcraftRegion, number> = {\r\n cn: 5,\r\n eu: 2,\r\n kr: 3,\r\n tw: 3,\r\n us: 1,\r\n};\r\n","import type { Resource } from '@blizzard-api/core';\r\nimport { starcraftRegion, type StarcraftRegion } from '../base';\r\nimport type { GrandmasterLeaderboardResponse, SeasonResponse } from './types';\r\n\r\nexport function grandmasterLeaderboard(regionId: StarcraftRegion): Resource<GrandmasterLeaderboardResponse> {\r\n return {\r\n path: `/sc2/ladder/grandmaster/${starcraftRegion[regionId]}`,\r\n };\r\n}\r\n\r\nexport function season(regionId: StarcraftRegion): Resource<SeasonResponse> {\r\n return {\r\n path: `/sc2/ladder/season/${starcraftRegion[regionId]}`,\r\n };\r\n}\r\n","import type { Resource } from '@blizzard-api/core';\r\nimport type { LeagueDataResponse, StarcraftLeagueId, StarcraftLeagueQueue, StarcraftLeagueTeamType } from './types';\r\n\r\nconst starcraftLeagueQueue: Record<StarcraftLeagueQueue, number> = {\r\n 'hots-1v1': 101,\r\n 'hots-2v2': 102,\r\n 'hots-3v3': 103,\r\n 'hots-4v4': 104,\r\n 'lotv-1v1': 201,\r\n 'lotv-2v2': 202,\r\n 'lotv-3v3': 203,\r\n 'lotv-4v4': 204,\r\n 'lotv-archon': 206,\r\n 'wol-1v1': 1,\r\n 'wol-2v2': 2,\r\n 'wol-3v3': 3,\r\n 'wol-4v4': 4,\r\n};\r\n\r\nconst starcraftLeagueTeam: Record<StarcraftLeagueTeamType, number> = {\r\n arranged: 0,\r\n random: 1,\r\n};\r\n\r\nconst starcraftLeagueId: Record<StarcraftLeagueId, number> = {\r\n bronze: 0,\r\n diamond: 4,\r\n gold: 2,\r\n grandmaster: 6,\r\n master: 5,\r\n platinum: 3,\r\n silver: 1,\r\n};\r\n\r\nexport function getLeagueData(\r\n seasonId: string,\r\n queueId: StarcraftLeagueQueue,\r\n teamType: StarcraftLeagueTeamType,\r\n leagueId: StarcraftLeagueId,\r\n): Resource<LeagueDataResponse> {\r\n return {\r\n path: `/data/sc2/league/${seasonId}/${starcraftLeagueQueue[queueId]}/${starcraftLeagueTeam[teamType]}/${starcraftLeagueId[leagueId]}`,\r\n };\r\n}\r\n","import type { Resource } from '@blizzard-api/core';\r\nimport { starcraftRegion, type StarcraftRegion } from '../base';\r\nimport type {\r\n LegacyAchievementsResponse,\r\n LegacyLaddersResponse,\r\n LegacyMatchHistoryResponse,\r\n LegacyProfileResponse,\r\n LegacyRewardsResponse,\r\n} from './types';\r\n\r\nexport function legacyProfile(\r\n regionId: StarcraftRegion,\r\n realmId: 1 | 2,\r\n profileId: number,\r\n): Resource<LegacyProfileResponse> {\r\n return {\r\n path: `/sc2/legacy/profile/${starcraftRegion[regionId]}/${realmId}/${profileId}`,\r\n };\r\n}\r\n\r\nexport function legacyLadders(\r\n regionId: StarcraftRegion,\r\n realmId: 1 | 2,\r\n profileId: number,\r\n): Resource<LegacyLaddersResponse> {\r\n return {\r\n path: `/sc2/legacy/profile/${starcraftRegion[regionId]}/${realmId}/${profileId}/ladders`,\r\n };\r\n}\r\n\r\nexport function legacyMatchHistory(\r\n regionId: StarcraftRegion,\r\n realmId: 1 | 2,\r\n profileId: number,\r\n): Resource<LegacyMatchHistoryResponse> {\r\n return {\r\n path: `/sc2/legacy/profile/${starcraftRegion[regionId]}/${realmId}/${profileId}/matches`,\r\n };\r\n}\r\n\r\nexport function legacyLadder(regionId: StarcraftRegion, ladderId: number): Resource<unknown> {\r\n return {\r\n path: `/sc2/legacy/ladder/${starcraftRegion[regionId]}/${ladderId}`,\r\n };\r\n}\r\n\r\nexport function legacyAchievements(regionId: StarcraftRegion): Resource<LegacyAchievementsResponse> {\r\n return {\r\n path: `/sc2/legacy/data/achievements/${starcraftRegion[regionId]}`,\r\n };\r\n}\r\n\r\nexport function legacyRewards(regionId: StarcraftRegion): Resource<LegacyRewardsResponse> {\r\n return {\r\n path: `/sc2/legacy/data/rewards/${starcraftRegion[regionId]}`,\r\n };\r\n}\r\n","import type { Resource } from '@blizzard-api/core';\r\nimport { starcraftRegion, type StarcraftRegion } from '../base';\r\nimport type { LadderResponse, LadderSummaryResponse, MetadataResponse, StaticProfileResponse } from './types';\r\n\r\nexport function staticProfile(regionId: StarcraftRegion): Resource<StaticProfileResponse> {\r\n return {\r\n path: `/sc2/static/profile/${starcraftRegion[regionId]}`,\r\n };\r\n}\r\n\r\nexport function metadata(regionId: StarcraftRegion, realmId: 1 | 2, profileId: number): Resource<MetadataResponse> {\r\n return {\r\n path: `/sc2/metadata/profile/${starcraftRegion[regionId]}/${realmId}/${profileId}`,\r\n };\r\n}\r\n\r\nexport function profile(regionId: StarcraftRegion, realmId: 1 | 2, profileId: number): Resource<MetadataResponse> {\r\n return {\r\n path: `/sc2/profile/${starcraftRegion[regionId]}/${realmId}/${profileId}`,\r\n };\r\n}\r\n\r\nexport function ladderSummary(\r\n regionId: StarcraftRegion,\r\n realmId: 1 | 2,\r\n profileId: number,\r\n): Resource<LadderSummaryResponse> {\r\n return {\r\n path: `/sc2/profile/${starcraftRegion[regionId]}/${realmId}/${profileId}/ladder/summary`,\r\n };\r\n}\r\n\r\nexport function ladder(\r\n regionId: StarcraftRegion,\r\n realmId: 1 | 2,\r\n profileId: number,\r\n ladderId: number,\r\n): Resource<LadderResponse> {\r\n return {\r\n path: `/sc2/profile/${starcraftRegion[regionId]}/${realmId}/${profileId}/ladder/${ladderId}`,\r\n };\r\n}\r\n","import { player } from './account/account';\r\nimport { grandmasterLeaderboard, season } from './ladder/ladder';\r\nimport { getLeagueData } from './league/league';\r\nimport {\r\n legacyAchievements,\r\n legacyLadder,\r\n legacyLadders,\r\n legacyMatchHistory,\r\n legacyProfile,\r\n legacyRewards,\r\n} from './legacy/legacy';\r\nimport { ladder, ladderSummary, metadata, profile, staticProfile } from './profile/profile';\r\n\r\nexport const sc2 = {\r\n //Account\r\n player,\r\n //Ladder\r\n grandmasterLeaderboard,\r\n season,\r\n //League\r\n getLeagueData,\r\n //Legacy\r\n legacyAchievements,\r\n legacyLadder,\r\n legacyLadders,\r\n legacyMatchHistory,\r\n legacyProfile,\r\n legacyRewards,\r\n //Profile\r\n ladder,\r\n ladderSummary,\r\n metadata,\r\n profile,\r\n staticProfile,\r\n};\r\n\r\n//Account\r\n//Ladder\r\nexport type * from './ladder/types';\r\n//League\r\nexport type * from './league/types';\r\n//Legacy\r\nexport type * from './legacy/types';\r\n//Profile\r\nexport type * from './profile/types';\r\n"]}
package/package.json ADDED
@@ -0,0 +1,51 @@
1
+ {
2
+ "name": "@blizzard-api/sc2",
3
+ "version": "0.1.0",
4
+ "license": "MIT",
5
+ "author": "Putro",
6
+ "description": "A series of helpers to interact with the Starcraft II Blizzard API",
7
+ "repository": "https://github.com/Pewtro/blizzard-api/tree/main/packages/sc2",
8
+ "type": "module",
9
+ "engines": {
10
+ "node": "^18.18 || ^20.9 || ^21.1 || ^22"
11
+ },
12
+ "main": "./dist/index.cjs",
13
+ "module": "./dist/index.js",
14
+ "types": "./dist/index.d.ts",
15
+ "exports": {
16
+ "import": {
17
+ "types": "./dist/index.d.ts",
18
+ "default": "./dist/index.js"
19
+ },
20
+ "require": {
21
+ "types": "./dist/index.d.cts",
22
+ "default": "./dist/index.cjs"
23
+ }
24
+ },
25
+ "files": [
26
+ "dist"
27
+ ],
28
+ "keywords": [
29
+ "blizzard",
30
+ "battlenet",
31
+ "battle.net",
32
+ "bnet",
33
+ "api",
34
+ "starcraft",
35
+ "sc2"
36
+ ],
37
+ "dependencies": {},
38
+ "peerDependencies": {
39
+ "@blizzard-api/core": "1.2.1"
40
+ },
41
+ "devDependencies": {
42
+ "@blizzard-api/core": "1.2.1"
43
+ },
44
+ "scripts": {
45
+ "build": "tsup",
46
+ "dev": "tsup --watch",
47
+ "test": "vitest run",
48
+ "test:coverage": "pnpm test -- --coverage",
49
+ "test:watch": "vitest watch"
50
+ }
51
+ }