clashofclans.js 2.8.4 → 2.9.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/CHANGELOG.md +7 -1
- package/dist/client/Client.d.ts +7 -4
- package/dist/client/Client.js +11 -5
- package/dist/client/EventManager.d.ts +1 -1
- package/dist/index.js +5 -1
- package/dist/rest/RESTManager.d.ts +3 -1
- package/dist/rest/RESTManager.js +5 -0
- package/dist/rest/RequestHandler.js +3 -3
- package/dist/struct/CapitalRaidSeason.d.ts +49 -0
- package/dist/struct/CapitalRaidSeason.js +40 -0
- package/dist/struct/Clan.d.ts +7 -7
- package/dist/struct/Clan.js +4 -4
- package/dist/struct/ClanMember.d.ts +2 -2
- package/dist/struct/ClanMember.js +1 -1
- package/dist/struct/ClanWar.d.ts +2 -2
- package/dist/struct/ClanWar.js +1 -1
- package/dist/struct/ClanWarLeagueGroup.d.ts +3 -3
- package/dist/struct/ClanWarLog.d.ts +2 -2
- package/dist/struct/ClanWarLog.js +1 -1
- package/dist/struct/Label.d.ts +1 -1
- package/dist/struct/League.d.ts +1 -1
- package/dist/struct/League.js +1 -1
- package/dist/struct/LegendStatistics.d.ts +1 -1
- package/dist/struct/Player.d.ts +5 -5
- package/dist/struct/Player.js +5 -5
- package/dist/struct/PlayerClan.d.ts +2 -2
- package/dist/struct/Ranking.d.ts +4 -4
- package/dist/struct/Ranking.js +4 -4
- package/dist/struct/index.js +5 -1
- package/dist/types/api.d.ts +58 -0
- package/dist/types/index.js +5 -1
- package/dist/types/lib.d.ts +4 -4
- package/dist/util/Util.js +2 -2
- package/package.json +6 -2
package/CHANGELOG.md
CHANGED
|
@@ -2,7 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
-
## 2.
|
|
5
|
+
## 2.9.0 (2022-10-16)
|
|
6
|
+
|
|
7
|
+
### Features
|
|
8
|
+
|
|
9
|
+
- Support for clan capital raid seasons `Client#getCapitalRaidSeasons()`
|
|
10
|
+
|
|
11
|
+
## 2.8.4 (2022-09-14)
|
|
6
12
|
|
|
7
13
|
### Bug Fixes
|
|
8
14
|
|
package/dist/client/Client.d.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
+
import { EventEmitter } from 'events';
|
|
3
|
+
import { EventManager } from './EventManager';
|
|
4
|
+
import { RESTManager } from '../rest/RESTManager';
|
|
5
|
+
import { Clan, ClanMember, ClanWar, ClanWarLog, League, Location, Player, WarLeague, RankedClan, RankedPlayer, Label, SeasonRankedPlayer, GoldPassSeason, ClanWarLeagueGroup } from '../struct';
|
|
6
|
+
import { CapitalRaidSeason } from '../struct/CapitalRaidSeason';
|
|
2
7
|
import { ClanSearchOptions, SearchOptions, ClientOptions, LoginOptions, OverrideOptions } from '../types';
|
|
3
8
|
import { EVENTS, CWL_ROUNDS } from '../util/Constants';
|
|
4
|
-
import { RESTManager } from '../rest/RESTManager';
|
|
5
|
-
import { EventManager } from './EventManager';
|
|
6
|
-
import { EventEmitter } from 'events';
|
|
7
9
|
import { Util } from '../util/Util';
|
|
8
|
-
import { Clan, ClanMember, ClanWar, ClanWarLog, League, Location, Player, WarLeague, RankedClan, RankedPlayer, Label, SeasonRankedPlayer, GoldPassSeason, ClanWarLeagueGroup } from '../struct';
|
|
9
10
|
/**
|
|
10
11
|
* Represents Clash of Clans API Client.
|
|
11
12
|
* ```js
|
|
@@ -40,6 +41,8 @@ export declare class Client extends EventEmitter {
|
|
|
40
41
|
getClan(clanTag: string, options?: OverrideOptions): Promise<Clan>;
|
|
41
42
|
/** Get list of clan members. */
|
|
42
43
|
getClanMembers(clanTag: string, options?: SearchOptions): Promise<ClanMember[]>;
|
|
44
|
+
/** Get capital raid seasons. */
|
|
45
|
+
getCapitalRaidSeasons(tag: string, options?: SearchOptions): Promise<CapitalRaidSeason[]>;
|
|
43
46
|
/** Get clan war log. */
|
|
44
47
|
getClanWarLog(clanTag: string, options?: SearchOptions): Promise<ClanWarLog[]>;
|
|
45
48
|
/** Get info about currently running war (normal or friendly) in the clan. */
|
package/dist/client/Client.js
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Client = void 0;
|
|
4
|
-
const
|
|
4
|
+
const events_1 = require("events");
|
|
5
|
+
const EventManager_1 = require("./EventManager");
|
|
5
6
|
const HTTPError_1 = require("../rest/HTTPError");
|
|
6
7
|
const RESTManager_1 = require("../rest/RESTManager");
|
|
7
|
-
const EventManager_1 = require("./EventManager");
|
|
8
|
-
const events_1 = require("events");
|
|
9
|
-
const Util_1 = require("../util/Util");
|
|
10
8
|
const struct_1 = require("../struct");
|
|
9
|
+
const CapitalRaidSeason_1 = require("../struct/CapitalRaidSeason");
|
|
10
|
+
const Constants_1 = require("../util/Constants");
|
|
11
|
+
const Util_1 = require("../util/Util");
|
|
11
12
|
/**
|
|
12
13
|
* Represents Clash of Clans API Client.
|
|
13
14
|
* ```js
|
|
@@ -67,6 +68,11 @@ class Client extends events_1.EventEmitter {
|
|
|
67
68
|
const { data } = await this.rest.getClanMembers(clanTag, options);
|
|
68
69
|
return data.items.map((entry) => new struct_1.ClanMember(this, entry));
|
|
69
70
|
}
|
|
71
|
+
/** Get capital raid seasons. */
|
|
72
|
+
async getCapitalRaidSeasons(tag, options) {
|
|
73
|
+
const { data } = await this.rest.getCapitalRaidSeasons(tag, options);
|
|
74
|
+
return data.items.map((entry) => new CapitalRaidSeason_1.CapitalRaidSeason(this, entry));
|
|
75
|
+
}
|
|
70
76
|
/** Get clan war log. */
|
|
71
77
|
async getClanWarLog(clanTag, options) {
|
|
72
78
|
const { data } = await this.rest.getClanWarLog(clanTag, options);
|
|
@@ -147,7 +153,7 @@ class Client extends events_1.EventEmitter {
|
|
|
147
153
|
return [await this.getClanWar(clanTag, options)];
|
|
148
154
|
}
|
|
149
155
|
try {
|
|
150
|
-
return this.getLeagueWars(clanTag, options);
|
|
156
|
+
return await this.getLeagueWars(clanTag, options);
|
|
151
157
|
}
|
|
152
158
|
catch (e) {
|
|
153
159
|
if (e instanceof HTTPError_1.HTTPError && [404].includes(e.status)) {
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { RequestHandler } from './RequestHandler';
|
|
2
|
+
import { APIClan, APIClanList, APIClanMemberList, APIClanRankingList, APIClanVersusRankingList, APIClanWar, APIClanWarLeagueGroup, APIClanWarLog, APIGoldPassSeason, APILabelList, APILeague, APILeagueList, APILeagueSeasonList, APILocation, APILocationList, APIPlayer, APIPlayerRankingList, APIPlayerSeasonRankingList, APIPlayerVersusRankingList, APIVerifyToken, APIWarLeague, APIWarLeagueList, SearchOptions, ClanSearchOptions, RESTOptions, OverrideOptions, LoginOptions, APICapitalRaidSeasons } from '../types';
|
|
2
3
|
import { Util } from '../util/Util';
|
|
3
|
-
import { APIClan, APIClanList, APIClanMemberList, APIClanRankingList, APIClanVersusRankingList, APIClanWar, APIClanWarLeagueGroup, APIClanWarLog, APIGoldPassSeason, APILabelList, APILeague, APILeagueList, APILeagueSeasonList, APILocation, APILocationList, APIPlayer, APIPlayerRankingList, APIPlayerSeasonRankingList, APIPlayerVersusRankingList, APIVerifyToken, APIWarLeague, APIWarLeagueList, SearchOptions, ClanSearchOptions, RESTOptions, OverrideOptions, LoginOptions } from '../types';
|
|
4
4
|
/** Represents a REST Manager of the client. */
|
|
5
5
|
export declare class RESTManager {
|
|
6
6
|
/** Request Handler for the RESTManager. */
|
|
@@ -33,6 +33,8 @@ export declare class RESTManager {
|
|
|
33
33
|
getClanWarLeagueGroup(clanTag: string, options?: OverrideOptions): Promise<import("../types").Response<APIClanWarLeagueGroup>>;
|
|
34
34
|
/** Get info about a CWL round by WarTag. */
|
|
35
35
|
getClanWarLeagueRound(warTag: string, options?: OverrideOptions): Promise<import("../types").Response<APIClanWar>>;
|
|
36
|
+
/** Retrieve clan's capital raid seasons. */
|
|
37
|
+
getCapitalRaidSeasons(tag: string, options?: OverrideOptions): Promise<import("../types").Response<APICapitalRaidSeasons>>;
|
|
36
38
|
/** Get info about a player by tag. */
|
|
37
39
|
getPlayer(playerTag: string, options?: OverrideOptions): Promise<import("../types").Response<APIPlayer>>;
|
|
38
40
|
/** Verify Player API token that can be found from the Game settings. */
|
package/dist/rest/RESTManager.js
CHANGED
|
@@ -58,6 +58,11 @@ class RESTManager {
|
|
|
58
58
|
getClanWarLeagueRound(warTag, options) {
|
|
59
59
|
return this.handler.request(`/clanwarleagues/wars/${Util_1.Util.encodeURI(warTag)}`, options);
|
|
60
60
|
}
|
|
61
|
+
/** Retrieve clan's capital raid seasons. */
|
|
62
|
+
getCapitalRaidSeasons(tag, options) {
|
|
63
|
+
const query = Util_1.Util.queryString(options);
|
|
64
|
+
return this.handler.request(`/clans/${Util_1.Util.encodeURI(tag)}/capitalraidseasons${query}`, options);
|
|
65
|
+
}
|
|
61
66
|
/** Get info about a player by tag. */
|
|
62
67
|
getPlayer(playerTag, options) {
|
|
63
68
|
return this.handler.request(`/players/${Util_1.Util.encodeURI(playerTag)}`, options);
|
|
@@ -16,11 +16,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
16
16
|
var _RequestHandler_keyIndex;
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
18
|
exports.RequestHandler = void 0;
|
|
19
|
-
const
|
|
19
|
+
const https_1 = __importDefault(require("https"));
|
|
20
|
+
const node_fetch_1 = __importDefault(require("node-fetch"));
|
|
20
21
|
const HTTPError_1 = require("./HTTPError");
|
|
22
|
+
const Constants_1 = require("../util/Constants");
|
|
21
23
|
const Store_1 = require("../util/Store");
|
|
22
|
-
const node_fetch_1 = __importDefault(require("node-fetch"));
|
|
23
|
-
const https_1 = __importDefault(require("https"));
|
|
24
24
|
const IP_REGEX = /\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}/g;
|
|
25
25
|
const agent = new https_1.default.Agent({ keepAlive: true });
|
|
26
26
|
/** Represents a Request Handler. */
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { Player } from './Player';
|
|
2
|
+
import { Client } from '../client/Client';
|
|
3
|
+
import { APICapitalRaidSeason, APICapitalRaidSeasonAttackLog, APICapitalRaidSeasonDefenseLog, APICapitalRaidSeasonMember, OverrideOptions } from '../types';
|
|
4
|
+
export declare class CapitalRaidSeasonMember {
|
|
5
|
+
/** The player's tag. */
|
|
6
|
+
name: string;
|
|
7
|
+
/** The player's name. */
|
|
8
|
+
tag: string;
|
|
9
|
+
/** The number of attacks the player has made. */
|
|
10
|
+
attacks: number;
|
|
11
|
+
/** The number of attacks the player can make. */
|
|
12
|
+
attackLimit: number;
|
|
13
|
+
/** The number of bonus attacks the player can make. */
|
|
14
|
+
bonusAttackLimit: number;
|
|
15
|
+
/** The number of capital resources the player has looted. */
|
|
16
|
+
capitalResourcesLooted: number;
|
|
17
|
+
constructor(data: APICapitalRaidSeasonMember);
|
|
18
|
+
}
|
|
19
|
+
/** Represents a Capital Raid Season. */
|
|
20
|
+
export declare class CapitalRaidSeason {
|
|
21
|
+
private readonly client;
|
|
22
|
+
/** The state of the raid season. */
|
|
23
|
+
state: 'ongoing' | 'ended';
|
|
24
|
+
/** The start time of the raid season. */
|
|
25
|
+
startTime: Date;
|
|
26
|
+
/** The end time of the raid season. */
|
|
27
|
+
endTime: Date;
|
|
28
|
+
/** The total loot collected from the capital. */
|
|
29
|
+
capitalTotalLoot: number;
|
|
30
|
+
/** The number of raids completed. */
|
|
31
|
+
raidsCompleted: number;
|
|
32
|
+
/** The total number of attacks. */
|
|
33
|
+
totalAttacks: number;
|
|
34
|
+
/** The number of enemy districts destroyed. */
|
|
35
|
+
enemyDistrictsDestroyed: number;
|
|
36
|
+
/** The offensive reward. */
|
|
37
|
+
offensiveReward: number;
|
|
38
|
+
/** The defensive reward. */
|
|
39
|
+
defensiveReward: number;
|
|
40
|
+
/** The members of the raid season. */
|
|
41
|
+
members: APICapitalRaidSeasonMember[];
|
|
42
|
+
/** The attack log of the raid season. */
|
|
43
|
+
attackLog: APICapitalRaidSeasonAttackLog[];
|
|
44
|
+
/** The defense log of the raid season. */
|
|
45
|
+
defenseLog: APICapitalRaidSeasonDefenseLog[];
|
|
46
|
+
constructor(client: Client, data: APICapitalRaidSeason);
|
|
47
|
+
/** Get {@link Player} info for every Player in the clan. */
|
|
48
|
+
fetchMembers(options?: OverrideOptions): Promise<Player[]>;
|
|
49
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CapitalRaidSeason = exports.CapitalRaidSeasonMember = void 0;
|
|
4
|
+
const Util_1 = require("../util/Util");
|
|
5
|
+
class CapitalRaidSeasonMember {
|
|
6
|
+
constructor(data) {
|
|
7
|
+
this.tag = data.tag;
|
|
8
|
+
this.name = data.name;
|
|
9
|
+
this.attacks = data.attacks;
|
|
10
|
+
this.attackLimit = data.attackLimit;
|
|
11
|
+
this.bonusAttackLimit = data.bonusAttackLimit;
|
|
12
|
+
this.capitalResourcesLooted = data.capitalResourcesLooted;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
exports.CapitalRaidSeasonMember = CapitalRaidSeasonMember;
|
|
16
|
+
/** Represents a Capital Raid Season. */
|
|
17
|
+
class CapitalRaidSeason {
|
|
18
|
+
constructor(client, data) {
|
|
19
|
+
this.client = client;
|
|
20
|
+
this.state = data.state;
|
|
21
|
+
this.startTime = Util_1.Util.formatDate(data.startTime);
|
|
22
|
+
this.endTime = Util_1.Util.formatDate(data.endTime);
|
|
23
|
+
this.capitalTotalLoot = data.capitalTotalLoot;
|
|
24
|
+
this.raidsCompleted = data.raidsCompleted;
|
|
25
|
+
this.totalAttacks = data.totalAttacks;
|
|
26
|
+
this.enemyDistrictsDestroyed = data.enemyDistrictsDestroyed;
|
|
27
|
+
this.offensiveReward = data.offensiveReward;
|
|
28
|
+
this.defensiveReward = data.defensiveReward;
|
|
29
|
+
this.attackLog = data.attackLog;
|
|
30
|
+
this.defenseLog = data.defenseLog;
|
|
31
|
+
this.members = (data.members ?? []).map((member) => new CapitalRaidSeasonMember(member));
|
|
32
|
+
}
|
|
33
|
+
/** Get {@link Player} info for every Player in the clan. */
|
|
34
|
+
async fetchMembers(options) {
|
|
35
|
+
return (await Promise.allSettled(this.members.map((m) => this.client.getPlayer(m.tag, { ...options, ignoreRateLimit: true }))))
|
|
36
|
+
.filter((res) => res.status === 'fulfilled')
|
|
37
|
+
.map((res) => res.value);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
exports.CapitalRaidSeason = CapitalRaidSeason;
|
package/dist/struct/Clan.d.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Badge } from './Badge';
|
|
2
2
|
import { ChatLanguage } from './ChatLanguage';
|
|
3
|
+
import { ClanCapital } from './ClanCapital';
|
|
3
4
|
import { ClanMember } from './ClanMember';
|
|
4
|
-
import { Client } from '../client/Client';
|
|
5
|
-
import { WarLeague } from './WarLeague';
|
|
6
|
-
import type { Player } from './Player';
|
|
7
|
-
import { Location } from './Location';
|
|
8
5
|
import { Label } from './Label';
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
6
|
+
import { Location } from './Location';
|
|
7
|
+
import type { Player } from './Player';
|
|
8
|
+
import { WarLeague } from './WarLeague';
|
|
9
|
+
import { Client } from '../client/Client';
|
|
10
|
+
import { APIClan, OverrideOptions } from '../types';
|
|
11
11
|
/** Represents a Clan. */
|
|
12
12
|
export declare class Clan {
|
|
13
13
|
client: Client;
|
package/dist/struct/Clan.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Clan = void 0;
|
|
4
|
+
const Badge_1 = require("./Badge");
|
|
4
5
|
const ChatLanguage_1 = require("./ChatLanguage");
|
|
6
|
+
const ClanCapital_1 = require("./ClanCapital");
|
|
5
7
|
const ClanMember_1 = require("./ClanMember");
|
|
6
|
-
const WarLeague_1 = require("./WarLeague");
|
|
7
|
-
const Location_1 = require("./Location");
|
|
8
8
|
const Label_1 = require("./Label");
|
|
9
|
-
const
|
|
10
|
-
const
|
|
9
|
+
const Location_1 = require("./Location");
|
|
10
|
+
const WarLeague_1 = require("./WarLeague");
|
|
11
11
|
/** Represents a Clan. */
|
|
12
12
|
class Clan {
|
|
13
13
|
constructor(client, data) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { APIClanMember, OverrideOptions } from '../types';
|
|
2
|
-
import { Client } from '../client/Client';
|
|
3
1
|
import { League } from './League';
|
|
2
|
+
import { Client } from '../client/Client';
|
|
3
|
+
import { APIClanMember, OverrideOptions } from '../types';
|
|
4
4
|
export declare class ClanMember {
|
|
5
5
|
client: Client;
|
|
6
6
|
/** The member's name. */
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ClanMember = void 0;
|
|
4
|
-
const Constants_1 = require("../util/Constants");
|
|
5
4
|
const League_1 = require("./League");
|
|
5
|
+
const Constants_1 = require("../util/Constants");
|
|
6
6
|
class ClanMember {
|
|
7
7
|
constructor(client, data) {
|
|
8
8
|
this.client = client;
|
package/dist/struct/ClanWar.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { APIClanWar, APIClanWarAttack, APIClanWarMember, APIWarClan } from '../types';
|
|
2
|
-
import { Client } from '../client/Client';
|
|
3
1
|
import { Badge } from './Badge';
|
|
2
|
+
import { Client } from '../client/Client';
|
|
3
|
+
import { APIClanWar, APIClanWarAttack, APIClanWarMember, APIWarClan } from '../types';
|
|
4
4
|
/** Represents a Clash of Clans War Attack. */
|
|
5
5
|
export declare class ClanWarAttack {
|
|
6
6
|
/** The war this attack belongs to. */
|
package/dist/struct/ClanWar.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ClanWar = exports.WarClan = exports.ClanWarMember = exports.ClanWarAttack = void 0;
|
|
4
|
-
const Constants_1 = require("../util/Constants");
|
|
5
4
|
const Badge_1 = require("./Badge");
|
|
5
|
+
const Constants_1 = require("../util/Constants");
|
|
6
6
|
/** Represents a Clash of Clans War Attack. */
|
|
7
7
|
class ClanWarAttack {
|
|
8
8
|
constructor(clan, war, data) {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Client } from '../client/Client';
|
|
1
|
+
import { Badge } from './Badge';
|
|
3
2
|
import { ClanWar } from './ClanWar';
|
|
4
3
|
import { Player } from './Player';
|
|
5
|
-
import {
|
|
4
|
+
import { Client } from '../client/Client';
|
|
5
|
+
import { APIClanWarLeagueClan, APIClanWarLeagueClanMember, APIClanWarLeagueGroup, APIClanWarLeagueRound, OverrideOptions } from '../types';
|
|
6
6
|
/** Represents a Clan War League member. */
|
|
7
7
|
export declare class ClanWarLeagueClanMember {
|
|
8
8
|
/** The member's name. */
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { APIClanWarLogEntry, APIWarLogClan } from '../types';
|
|
2
|
-
import { Client } from '../client/Client';
|
|
3
1
|
import { Badge } from './Badge';
|
|
2
|
+
import { Client } from '../client/Client';
|
|
3
|
+
import { APIClanWarLogEntry, APIWarLogClan } from '../types';
|
|
4
4
|
/**
|
|
5
5
|
* Represents War Log Clan.
|
|
6
6
|
*
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ClanWarLog = exports.WarLogClan = void 0;
|
|
4
|
-
const Util_1 = require("../util/Util");
|
|
5
4
|
const Badge_1 = require("./Badge");
|
|
5
|
+
const Util_1 = require("../util/Util");
|
|
6
6
|
/**
|
|
7
7
|
* Represents War Log Clan.
|
|
8
8
|
*
|
package/dist/struct/Label.d.ts
CHANGED
package/dist/struct/League.d.ts
CHANGED
package/dist/struct/League.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.League = void 0;
|
|
4
|
-
const Constants_1 = require("../util/Constants");
|
|
5
4
|
const Icon_1 = require("./Icon");
|
|
5
|
+
const Constants_1 = require("../util/Constants");
|
|
6
6
|
/** Represents a Player's League. */
|
|
7
7
|
class League {
|
|
8
8
|
constructor(data) {
|
package/dist/struct/Player.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { APIPlayer, OverrideOptions } from '../types';
|
|
2
|
-
import { LegendStatistics } from './LegendStatistics';
|
|
3
1
|
import { Achievement } from './Achievement';
|
|
4
|
-
import {
|
|
2
|
+
import { Label } from './Label';
|
|
3
|
+
import { League } from './League';
|
|
4
|
+
import { LegendStatistics } from './LegendStatistics';
|
|
5
5
|
import { PlayerClan } from './PlayerClan';
|
|
6
|
+
import { Hero, Spell, Troop } from './Unit';
|
|
6
7
|
import { Client } from '../client/Client';
|
|
7
|
-
import {
|
|
8
|
-
import { Label } from './Label';
|
|
8
|
+
import { APIPlayer, OverrideOptions } from '../types';
|
|
9
9
|
/** Represents a Clash of Clans Player. */
|
|
10
10
|
export declare class Player {
|
|
11
11
|
client: Client;
|
package/dist/struct/Player.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Player = void 0;
|
|
4
|
-
const Constants_1 = require("../util/Constants");
|
|
5
|
-
const LegendStatistics_1 = require("./LegendStatistics");
|
|
6
4
|
const Achievement_1 = require("./Achievement");
|
|
7
|
-
const Unit_1 = require("./Unit");
|
|
8
|
-
const PlayerClan_1 = require("./PlayerClan");
|
|
9
|
-
const League_1 = require("./League");
|
|
10
5
|
const Label_1 = require("./Label");
|
|
6
|
+
const League_1 = require("./League");
|
|
7
|
+
const LegendStatistics_1 = require("./LegendStatistics");
|
|
8
|
+
const PlayerClan_1 = require("./PlayerClan");
|
|
9
|
+
const Unit_1 = require("./Unit");
|
|
10
|
+
const Constants_1 = require("../util/Constants");
|
|
11
11
|
/** Represents a Clash of Clans Player. */
|
|
12
12
|
class Player {
|
|
13
13
|
constructor(client, data) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { OverrideOptions, APIPlayerClan } from '../types';
|
|
2
|
-
import { Client } from '../client/Client';
|
|
3
1
|
import { Badge } from './Badge';
|
|
2
|
+
import { Client } from '../client/Client';
|
|
3
|
+
import { OverrideOptions, APIPlayerClan } from '../types';
|
|
4
4
|
/** Represents a Player's clan. */
|
|
5
5
|
export declare class PlayerClan {
|
|
6
6
|
private readonly _client;
|
package/dist/struct/Ranking.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Badge } from './Badge';
|
|
2
|
+
import { League } from './League';
|
|
3
|
+
import { Location } from './Location';
|
|
2
4
|
import { PlayerClan } from './PlayerClan';
|
|
3
5
|
import { Client } from '../client/Client';
|
|
4
|
-
import {
|
|
5
|
-
import { League } from './League';
|
|
6
|
-
import { Badge } from './Badge';
|
|
6
|
+
import { APIClanRanking, APIClanVersusRanking, APIPlayerRanking, APIPlayerVersusRanking } from '../types';
|
|
7
7
|
/** Represents the Player of seasonal legend league leader-board ranking. */
|
|
8
8
|
export declare class SeasonRankedPlayer {
|
|
9
9
|
/** The player's name. */
|
package/dist/struct/Ranking.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.RankedClan = exports.RankedPlayer = exports.SeasonRankedPlayer = void 0;
|
|
4
|
-
const Constants_1 = require("../util/Constants");
|
|
5
|
-
const PlayerClan_1 = require("./PlayerClan");
|
|
6
|
-
const Location_1 = require("./Location");
|
|
7
|
-
const League_1 = require("./League");
|
|
8
4
|
const Badge_1 = require("./Badge");
|
|
5
|
+
const League_1 = require("./League");
|
|
6
|
+
const Location_1 = require("./Location");
|
|
7
|
+
const PlayerClan_1 = require("./PlayerClan");
|
|
8
|
+
const Constants_1 = require("../util/Constants");
|
|
9
9
|
/** Represents the Player of seasonal legend league leader-board ranking. */
|
|
10
10
|
class SeasonRankedPlayer {
|
|
11
11
|
constructor(client, data) {
|
package/dist/struct/index.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
package/dist/types/api.d.ts
CHANGED
|
@@ -169,6 +169,64 @@ export interface APIClanWarLeagueClanMember {
|
|
|
169
169
|
export interface APIClanWarLeagueRound {
|
|
170
170
|
warTags: string[];
|
|
171
171
|
}
|
|
172
|
+
export interface APICapitalRaidSeason {
|
|
173
|
+
state: 'ongoing' | 'ended';
|
|
174
|
+
startTime: string;
|
|
175
|
+
endTime: string;
|
|
176
|
+
capitalTotalLoot: number;
|
|
177
|
+
raidsCompleted: number;
|
|
178
|
+
totalAttacks: number;
|
|
179
|
+
enemyDistrictsDestroyed: number;
|
|
180
|
+
offensiveReward: number;
|
|
181
|
+
defensiveReward: number;
|
|
182
|
+
members?: APICapitalRaidSeasonMember[];
|
|
183
|
+
attackLog: APICapitalRaidSeasonAttackLog[];
|
|
184
|
+
defenseLog: APICapitalRaidSeasonDefenseLog[];
|
|
185
|
+
}
|
|
186
|
+
export interface APICapitalRaidSeasonMember {
|
|
187
|
+
tag: string;
|
|
188
|
+
name: string;
|
|
189
|
+
attacks: number;
|
|
190
|
+
attackLimit: number;
|
|
191
|
+
bonusAttackLimit: number;
|
|
192
|
+
capitalResourcesLooted: number;
|
|
193
|
+
}
|
|
194
|
+
export interface APICapitalRaidSeasonClan {
|
|
195
|
+
tag: string;
|
|
196
|
+
name: string;
|
|
197
|
+
level: number;
|
|
198
|
+
badgeUrls: {
|
|
199
|
+
small: string;
|
|
200
|
+
large: string;
|
|
201
|
+
medium: string;
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
export interface APICapitalRaidSeasonDistrict {
|
|
205
|
+
id: number;
|
|
206
|
+
name: string;
|
|
207
|
+
districtHallLevel: number;
|
|
208
|
+
destructionPercent: number;
|
|
209
|
+
attackCount: number;
|
|
210
|
+
totalLooted: number;
|
|
211
|
+
}
|
|
212
|
+
export interface APICapitalRaidSeasonAttackLog {
|
|
213
|
+
defender: APICapitalRaidSeasonClan;
|
|
214
|
+
attackCount: number;
|
|
215
|
+
districtCount: number;
|
|
216
|
+
districtsDestroyed: number;
|
|
217
|
+
districts: APICapitalRaidSeasonDistrict[];
|
|
218
|
+
}
|
|
219
|
+
export interface APICapitalRaidSeasonDefenseLog {
|
|
220
|
+
attacker: APICapitalRaidSeasonClan;
|
|
221
|
+
attackCount: number;
|
|
222
|
+
districtCount: number;
|
|
223
|
+
districtsDestroyed: number;
|
|
224
|
+
districts: APICapitalRaidSeasonDistrict[];
|
|
225
|
+
}
|
|
226
|
+
export interface APICapitalRaidSeasons {
|
|
227
|
+
items: APICapitalRaidSeason[];
|
|
228
|
+
paging: APIPaging;
|
|
229
|
+
}
|
|
172
230
|
/** /players/{playerTag} */
|
|
173
231
|
export interface APIPlayer {
|
|
174
232
|
name: string;
|
package/dist/types/index.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
package/dist/types/lib.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { QueueThrottler, BatchThrottler } from '../rest/Throttler';
|
|
2
2
|
export interface Store<T = any> {
|
|
3
|
-
set(key: string, value: T, ttl?: number)
|
|
4
|
-
get(key: string)
|
|
5
|
-
delete(key: string)
|
|
6
|
-
clear()
|
|
3
|
+
set: (key: string, value: T, ttl?: number) => boolean | Promise<boolean>;
|
|
4
|
+
get: (key: string) => T | null | Promise<T | null>;
|
|
5
|
+
delete: (key: string) => boolean | Promise<boolean>;
|
|
6
|
+
clear: () => void | Promise<void>;
|
|
7
7
|
}
|
|
8
8
|
/** Options for a {@link Client} */
|
|
9
9
|
export interface ClientOptions {
|
package/dist/util/Util.js
CHANGED
|
@@ -114,8 +114,8 @@ class Util extends null {
|
|
|
114
114
|
}
|
|
115
115
|
/** Parse in-game army link into troops and spells count with respective Id's. */
|
|
116
116
|
static parseArmyLink(link) {
|
|
117
|
-
const unitsMatches =
|
|
118
|
-
const spellsMatches =
|
|
117
|
+
const unitsMatches = /u(?<units>[\d+x-]+)/.exec(link);
|
|
118
|
+
const spellsMatches = /s(?<spells>[\d+x-]+)/.exec(link);
|
|
119
119
|
const unitsPart = unitsMatches?.groups?.unit?.split('-') ?? [];
|
|
120
120
|
const spellParts = spellsMatches?.groups?.spells?.split('-') ?? [];
|
|
121
121
|
const units = unitsPart
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "clashofclans.js",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.9.0",
|
|
4
4
|
"description": "JavaScript library for interacting with the Clash of Clans API",
|
|
5
5
|
"author": "SUVAJIT <suvajit.me@gmail.com>",
|
|
6
6
|
"license": "MIT",
|
|
@@ -57,7 +57,10 @@
|
|
|
57
57
|
],
|
|
58
58
|
"@typescript-eslint/naming-convention": 0,
|
|
59
59
|
"@typescript-eslint/no-floating-promises": 0,
|
|
60
|
-
"@typescript-eslint/no-misused-promises": 0
|
|
60
|
+
"@typescript-eslint/no-misused-promises": 0,
|
|
61
|
+
"@typescript-eslint/no-unsafe-assignment": 0,
|
|
62
|
+
"@typescript-eslint/no-unsafe-call": 0,
|
|
63
|
+
"@typescript-eslint/no-unsafe-member-access": 0
|
|
61
64
|
}
|
|
62
65
|
},
|
|
63
66
|
"prettier": {
|
|
@@ -107,6 +110,7 @@
|
|
|
107
110
|
"eslint": "^8.3.0",
|
|
108
111
|
"eslint-config-marine": "^9.0.6",
|
|
109
112
|
"eslint-config-prettier": "^8.3.0",
|
|
113
|
+
"eslint-plugin-import": "^2.26.0",
|
|
110
114
|
"eslint-plugin-prettier": "^4.0.0",
|
|
111
115
|
"gen-esm-wrapper": "^1.1.3",
|
|
112
116
|
"prettier": "^2.4.1",
|