Rename properties for clarity, add formatted names

This commit is contained in:
maxswa
2020-01-05 17:47:13 -05:00
parent ae73fef5ed
commit f1730d44ec
9 changed files with 426 additions and 511 deletions

114
README.md
View File

@@ -69,14 +69,14 @@ const topPage = await getSkillPage('overall');
`getStatsByGameMode` will return a stats object and accepts a gamemode parameter: `getStatsByGameMode` will return a stats object and accepts a gamemode parameter:
| Game mode | Param | | Game mode | Param |
| ---------------- | :-------: | | ---------------- | :----------: |
| Regular | `main` | | Regular | `main` |
| Ironman | `iron` | | Ironman | `ironman` |
| Hardcore Ironman | `hc` | | Hardcore Ironman | `hardcore` |
| Ultimate Ironman | `ult` | | Ultimate Ironman | `ultimate` |
| Deadman Mode | `dmm` | | Deadman Mode | `deadman` |
| DMM Tournament | `dmmt` | | Tournament | `tournament` |
| Leagues | `leagues` | | Leagues | `seasonal` |
`getSkillPage` and `getActivityPage` require a skill/activity and optionally a gamemode and page: `getSkillPage` and `getActivityPage` require a skill/activity and optionally a gamemode and page:
@@ -87,75 +87,69 @@ hiscores
.catch(err => console.error(err)); .catch(err => console.error(err));
``` ```
Activities consist of all levels of clue scrolls as well as minigames: Activities consist of all levels of clue scrolls as well as minigames and bosses:
### Clue Scrolls ### Clue Scrolls
| Type | Param | | Type | Param |
| -------- | :-------------: | | -------- | :-------------: |
| All | `allclues` | | All | `allClues` |
| Beginner | `beginnerclues` | | Beginner | `beginnerClues` |
| Easy | `easyclues` | | Easy | `easyClues` |
| Medium | `mediumclues` | | Medium | `mediumClues` |
| Hard | `hardclues` | | Hard | `hardClues` |
| Elite | `eliteclues` | | Elite | `eliteClues` |
| Master | `masterclues` | | Master | `masterClues` |
### Minigames ### Minigames
| Minigame | Param | | Minigame | Param |
| ---------------------- | :--------: | | ---------------------- | :---------------: |
| Bounty Hunter (Rogue) | `roguebh` | | Bounty Hunter (Rogue) | `rogueBH` |
| Bounty Hunter (Hunter) | `hunterbh` | | Bounty Hunter (Hunter) | `hunterBH` |
| Last Man Standing | `lms` | | Last Man Standing | `lastManStanding` |
### Leagues
| Name | Param |
| ------------- | :---: |
| League Points | `lp` |
### Bosses ### Bosses
| Boss Name | Param | | Boss Name | Param |
| -------------------------------- | :----------------------------: | | -------------------------------- | :----------------------------: |
| Abyssal Sire | `abyssalsire` | | Abyssal Sire | `abyssalSire` |
| Alchemical Hydra | `alchemicalhydra` | | Alchemical Hydra | `alchemicalHydra` |
| Barrows Chests | `barrowschests` | | Barrows Chests | `barrows` |
| Bryophyta | `bryophyta` | | Bryophyta | `bryophyta` |
| Callisto | `callisto` | | Callisto | `callisto` |
| Cerberus | `cerberus` | | Cerberus | `cerberus` |
| Chambers Of Xeric | `chambersofxeric` | | Chambers Of Xeric | `chambersOfXeric` |
| Chambers Of Xeric Challenge Mode | `chambersofxericchallengemode` | | Chambers Of Xeric Challenge Mode | `chambersOfXericChallengeMode` |
| Chaos Elemental | `chaoselemental` | | Chaos Elemental | `chaosElemental` |
| Chaos Fanatic | `chaosfanatic` | | Chaos Fanatic | `chaosFanatic` |
| Commander Zilyana | `commanderzilyana` | | Commander Zilyana | `commanderZilyana` |
| Corporeal Beast | `corporealbeast` | | Corporeal Beast | `corporealBeast` |
| Crazy Archaeologist | `crazyarchaeologist` | | Crazy Archaeologist | `crazyArchaeologist` |
| Dagannoth Prime | `dagannothprime` | | Dagannoth Prime | `dagannothPrime` |
| Dagannoth Rex | `dagannothrex` | | Dagannoth Rex | `dagannothRex` |
| Dagannoth Supreme | `dagannothsupreme` | | Dagannoth Supreme | `dagannothSupreme` |
| Deranged Archaeologist | `derangedarchaeologist` | | Deranged Archaeologist | `derangedArchaeologist` |
| General Graardor | `generalgraardor` | | General Graardor | `generalGraardor` |
| Giant Mole | `giantmole` | | Giant Mole | `giantMole` |
| Grotesque Guardians | `grotesqueguardians` | | Grotesque Guardians | `grotesqueGuardians` |
| Hespori | `hespori` | | Hespori | `hespori` |
| Kalphite Queen | `kalphitequeen` | | Kalphite Queen | `kalphiteQueen` |
| King Black Dragon | `kingblackdragon` | | King Black Dragon | `kingBlackDragon` |
| Kraken | `kraken` | | Kraken | `kraken` |
| Kreearra | `kreearra` | | Kreearra | `kreeArra` |
| K'ril Tsutsaroth | `kriltsutsaroth` | | K'ril Tsutsaroth | `krilTsutsaroth` |
| Mimic | `mimic` | | Mimic | `mimic` |
| Obor | `obor` | | Obor | `obor` |
| Sarachnis | `sarachnis` | | Sarachnis | `sarachnis` |
| Scorpia | `scorpia` | | Scorpia | `scorpia` |
| Skotizo | `skotizo` | | Skotizo | `skotizo` |
| Gauntlet | `gauntlet` | | Gauntlet | `gauntlet` |
| Corrupted Gauntlet | `corruptedgauntlet` | | Corrupted Gauntlet | `corruptedGauntlet` |
| Theatre Of Blood | `theatreofblood` | | Theatre Of Blood | `theatreOfBlood` |
| Thermonuclear Smoke Devil | `thermonuclearsmokedevil` | | Thermonuclear Smoke Devil | `thermonuclearSmokeDevil` |
| TzKal-Zuk | `tzkalzuk` | | TzKal-Zuk | `tzKalZuk` |
| TzTok-Jad | `tztokjad` | | TzTok-Jad | `tzTokJad` |
| Venenatis | `venenatis` | | Venenatis | `venenatis` |
| Vetion | `vetion` | | Vetion | `vetion` |
| Vorkath | `vorkath` | | Vorkath | `vorkath` |
@@ -169,7 +163,7 @@ Activities consist of all levels of clue scrolls as well as minigames:
```javascript ```javascript
{ {
rsn: 'Lynx Titan', name: 'Lynx Titan',
mode: 'main', mode: 'main',
dead: false, dead: false,
deulted: false, deulted: false,
@@ -182,8 +176,9 @@ Activities consist of all levels of clue scrolls as well as minigames:
// ... // ...
}, },
clues: {}, clues: {},
bh: {}, leaguePoints: {},
lms: {}, bountyHunter: {},
lastManStanding: {},
bosses: {} bosses: {}
} }
} }
@@ -193,9 +188,18 @@ Activities consist of all levels of clue scrolls as well as minigames:
```javascript ```javascript
[ [
{ rank: 1, rsn: 'Lynx Titan', level: 2277, xp: 4600000000, dead: false }, { rank: 1, name: 'Lynx Titan', level: 2277, xp: 4600000000, dead: false },
{}, {},
{}, {},
// ... // ...
]; ];
``` ```
## Helpful Extras
Get the properly formatted name of any skill, boss, clue or other activity:
```javascript
// kril === "K'ril Tsutsaroth"
const kril = FORMATTED_BOSS_NAMES['krilTsutsaroth'];
```

View File

@@ -1,9 +1,10 @@
import { import {
parseStats, parseStats,
getRSNFormat,
getSkillPage, getSkillPage,
getStats, getStats,
getStatsByGamemode, getStatsByGamemode,
getRSNFormat,
Stats,
} from '../src/index'; } from '../src/index';
test('Parse CSV to json', () => { test('Parse CSV to json', () => {
@@ -81,10 +82,10 @@ test('Parse CSV to json', () => {
1923,272 1923,272
8484,1340 8484,1340
599,1694 599,1694
-1,-1 12489,435
3810,4583`; 3810,4583`;
expect(parseStats(csv)).toStrictEqual({ const expectedOutput: Stats = {
skills: { skills: {
overall: { rank: 40258, level: 2063, xp: 218035714 }, overall: { rank: 40258, level: 2063, xp: 218035714 },
attack: { rank: 20554, level: 99, xp: 21102621 }, attack: { rank: 20554, level: 99, xp: 21102621 },
@@ -111,11 +112,12 @@ test('Parse CSV to json', () => {
hunter: { rank: 169127, level: 73, xp: 1067670 }, hunter: { rank: 169127, level: 73, xp: 1067670 },
construction: { rank: 115543, level: 82, xp: 2546048 }, construction: { rank: 115543, level: 82, xp: 2546048 },
}, },
bh: { leaguePoints: { rank: -1, score: -1 },
bountyHunter: {
rogue: { rank: -1, score: -1 }, rogue: { rank: -1, score: -1 },
hunter: { rank: -1, score: -1 }, hunter: { rank: -1, score: -1 },
}, },
lms: { rank: 32875, score: 500 }, lastManStanding: { rank: 32875, score: 500 },
clues: { clues: {
all: { rank: 24817, score: 476 }, all: { rank: 24817, score: 476 },
beginner: { rank: 212728, score: 1 }, beginner: { rank: 212728, score: 1 },
@@ -126,54 +128,56 @@ test('Parse CSV to json', () => {
master: { rank: 6293, score: 51 }, master: { rank: 6293, score: 51 },
}, },
bosses: { bosses: {
abyssalsire: { rank: 374, score: 2780 }, abyssalSire: { rank: 374, score: 2780 },
alchemicalhydra: { rank: 934, score: 3000 }, alchemicalHydra: { rank: 934, score: 3000 },
barrowschests: { rank: 1936, score: 1452 }, barrows: { rank: 1936, score: 1452 },
bryophyta: { rank: 4919, score: 23 }, bryophyta: { rank: 4919, score: 23 },
chambersofxeric: { rank: 101, score: 4038 }, callisto: { rank: -1, score: -1 },
chambersofxericchallengemode: { rank: 152, score: 334 }, cerberus: { rank: -1, score: -1 },
chaoselemental: { rank: -1, score: -1 }, chambersOfXeric: { rank: 101, score: 4038 },
chaosfanatic: { rank: -1, score: -1 }, chambersOfXericChallengeMode: { rank: 152, score: 334 },
commanderzilyana: { rank: 6806, score: 603 }, chaosElemental: { rank: 6153, score: 133 },
corporealbeast: { rank: 1, score: 17798 }, chaosFanatic: { rank: 4501, score: 250 },
crazyarchaeologist: { rank: 9160, score: 125 }, commanderZilyana: { rank: 6806, score: 603 },
dagannothprime: { rank: 1021, score: 2802 }, corporealBeast: { rank: 1, score: 17798 },
dagannothrex: { rank: 4295, score: 1655 }, crazyArchaeologist: { rank: 9160, score: 125 },
dagannothsupreme: { rank: 959, score: 2951 }, dagannothPrime: { rank: 1021, score: 2802 },
derangedarchaeologist: { rank: 10009, score: 1 }, dagannothRex: { rank: 4295, score: 1655 },
generalgraardor: { rank: 1271, score: 2407 }, dagannothSupreme: { rank: 959, score: 2951 },
giantmole: { rank: 378, score: 4669 }, derangedArchaeologist: { rank: 10009, score: 1 },
grotesqueguardians: { rank: 543, score: 1567 }, generalGraardor: { rank: 1271, score: 2407 },
giantMole: { rank: 378, score: 4669 },
grotesqueGuardians: { rank: 543, score: 1567 },
hespori: { rank: 6003, score: 94 }, hespori: { rank: 6003, score: 94 },
kalphitequeen: { rank: 263, score: 2897 }, kalphiteQueen: { rank: 263, score: 2897 },
kingblackdragon: { rank: 4000, score: 1277 }, kingBlackDragon: { rank: 4000, score: 1277 },
kraken: { rank: 41016, score: 1477 }, kraken: { rank: 41016, score: 1477 },
kreearra: { rank: 617, score: 2391 }, kreeArra: { rank: 617, score: 2391 },
kriltsutsaroth: { rank: 120, score: 2981 }, krilTsutsaroth: { rank: 120, score: 2981 },
mimic: { rank: 1, score: 109 }, mimic: { rank: 1, score: 109 },
obor: { rank: 26, score: 323 }, obor: { rank: 26, score: 323 },
sarachnis: { rank: 198, score: 1101 }, sarachnis: { rank: 198, score: 1101 },
scorpia: { rank: 81, score: 3404 }, scorpia: { rank: 81, score: 3404 },
skotizo: { rank: 5027, score: 61 }, skotizo: { rank: 5027, score: 61 },
gauntlet: { rank: 63, score: 375 }, gauntlet: { rank: 63, score: 375 },
corruptedgauntlet: { rank: 2845, score: 6 }, corruptedGauntlet: { rank: 2845, score: 6 },
theatreofblood: { rank: 6913, score: 138 }, theatreOfBlood: { rank: 6913, score: 138 },
thermonuclearsmokedevil: { rank: 3999, score: 2000 }, thermonuclearSmokeDevil: { rank: 3999, score: 2000 },
tzkalzuk: { rank: 484, score: 8 }, tzKalZuk: { rank: 484, score: 8 },
tztokjad: { rank: 957, score: 47 }, tzTokJad: { rank: 957, score: 47 },
venenatis: { rank: 10987, score: 223 }, venenatis: { rank: 10987, score: 223 },
vetion: { rank: 1923, score: 272 }, vetion: { rank: 1923, score: 272 },
vorkath: { rank: 8484, score: 1340 }, vorkath: { rank: 8484, score: 1340 },
wintertodt: { rank: 599, score: 1694 }, wintertodt: { rank: 599, score: 1694 },
zalcano: { rank: -1, score: -1 }, zalcano: { rank: 12489, score: 435 },
zulrah: { rank: 3810, score: 4583 }, zulrah: { rank: 3810, score: 4583 },
callisto: { rank: -1, score: -1 },
cerberus: { rank: -1, score: -1 },
}, },
}); };
expect(parseStats(csv)).toStrictEqual(expectedOutput);
}); });
test('Get rsn format', async () => { test('Get name format', async () => {
jest.setTimeout(30000); jest.setTimeout(30000);
const data = await getRSNFormat('lYnX tiTaN'); const data = await getRSNFormat('lYnX tiTaN');
expect(data).toBe('Lynx Titan'); expect(data).toBe('Lynx Titan');
@@ -184,169 +188,169 @@ test('Get attack top page', async () => {
const data = await getSkillPage('attack'); const data = await getSkillPage('attack');
expect(data).toMatchObject([ expect(data).toMatchObject([
{ {
rsn: expect.any(String), name: expect.any(String),
rank: 1, rank: 1,
level: 99, level: 99,
xp: 200000000, xp: 200000000,
dead: false, dead: false,
}, },
{ {
rsn: expect.any(String), name: expect.any(String),
rank: 2, rank: 2,
level: 99, level: 99,
xp: 200000000, xp: 200000000,
dead: false, dead: false,
}, },
{ rsn: 'Drakon', rank: 3, level: 99, xp: 200000000, dead: false }, { name: 'Drakon', rank: 3, level: 99, xp: 200000000, dead: false },
{ {
rsn: expect.any(String), name: expect.any(String),
rank: 4, rank: 4,
level: 99, level: 99,
xp: 200000000, xp: 200000000,
dead: false, dead: false,
}, },
{ {
rsn: expect.any(String), name: expect.any(String),
rank: 5, rank: 5,
level: 99, level: 99,
xp: 200000000, xp: 200000000,
dead: false, dead: false,
}, },
{ {
rsn: expect.any(String), name: expect.any(String),
rank: 6, rank: 6,
level: 99, level: 99,
xp: 200000000, xp: 200000000,
dead: false, dead: false,
}, },
{ {
rsn: expect.any(String), name: expect.any(String),
rank: 7, rank: 7,
level: 99, level: 99,
xp: 200000000, xp: 200000000,
dead: false, dead: false,
}, },
{ {
rsn: expect.any(String), name: expect.any(String),
rank: 8, rank: 8,
level: 99, level: 99,
xp: 200000000, xp: 200000000,
dead: false, dead: false,
}, },
{ {
rsn: expect.any(String), name: expect.any(String),
rank: 9, rank: 9,
level: 99, level: 99,
xp: 200000000, xp: 200000000,
dead: false, dead: false,
}, },
{ {
rsn: expect.any(String), name: expect.any(String),
rank: 10, rank: 10,
level: 99, level: 99,
xp: 200000000, xp: 200000000,
dead: false, dead: false,
}, },
{ {
rsn: expect.any(String), name: expect.any(String),
rank: 11, rank: 11,
level: 99, level: 99,
xp: 200000000, xp: 200000000,
dead: false, dead: false,
}, },
{ {
rsn: expect.any(String), name: expect.any(String),
rank: 12, rank: 12,
level: 99, level: 99,
xp: 200000000, xp: 200000000,
dead: false, dead: false,
}, },
{ {
rsn: expect.any(String), name: expect.any(String),
rank: 13, rank: 13,
level: 99, level: 99,
xp: 200000000, xp: 200000000,
dead: false, dead: false,
}, },
{ {
rsn: expect.any(String), name: expect.any(String),
rank: 14, rank: 14,
level: 99, level: 99,
xp: 200000000, xp: 200000000,
dead: false, dead: false,
}, },
{ {
rsn: expect.any(String), name: expect.any(String),
rank: 15, rank: 15,
level: 99, level: 99,
xp: 200000000, xp: 200000000,
dead: false, dead: false,
}, },
{ {
rsn: expect.any(String), name: expect.any(String),
rank: 16, rank: 16,
level: 99, level: 99,
xp: 200000000, xp: 200000000,
dead: false, dead: false,
}, },
{ {
rsn: expect.any(String), name: expect.any(String),
rank: 17, rank: 17,
level: 99, level: 99,
xp: 200000000, xp: 200000000,
dead: false, dead: false,
}, },
{ {
rsn: expect.any(String), name: expect.any(String),
rank: 18, rank: 18,
level: 99, level: 99,
xp: 200000000, xp: 200000000,
dead: false, dead: false,
}, },
{ {
rsn: expect.any(String), name: expect.any(String),
rank: 19, rank: 19,
level: 99, level: 99,
xp: 200000000, xp: 200000000,
dead: false, dead: false,
}, },
{ {
rsn: expect.any(String), name: expect.any(String),
rank: 20, rank: 20,
level: 99, level: 99,
xp: 200000000, xp: 200000000,
dead: false, dead: false,
}, },
{ {
rsn: expect.any(String), name: expect.any(String),
rank: 21, rank: 21,
level: 99, level: 99,
xp: 200000000, xp: 200000000,
dead: false, dead: false,
}, },
{ {
rsn: expect.any(String), name: expect.any(String),
rank: 22, rank: 22,
level: 99, level: 99,
xp: 200000000, xp: 200000000,
dead: false, dead: false,
}, },
{ {
rsn: expect.any(String), name: expect.any(String),
rank: 23, rank: 23,
level: 99, level: 99,
xp: 200000000, xp: 200000000,
dead: false, dead: false,
}, },
{ {
rsn: expect.any(String), name: expect.any(String),
rank: 24, rank: 24,
level: 99, level: 99,
xp: 200000000, xp: 200000000,
dead: false, dead: false,
}, },
{ {
rsn: expect.any(String), name: expect.any(String),
rank: 25, rank: 25,
level: 99, level: 99,
xp: 200000000, xp: 200000000,

View File

@@ -10,6 +10,7 @@
"scripts": { "scripts": {
"dev": "watch 'yarn run build' src", "dev": "watch 'yarn run build' src",
"build": "tsc", "build": "tsc",
"format": "prettier --write \"src/**/*.ts\"",
"test": "jest --config jestconfig.json", "test": "jest --config jestconfig.json",
"prepublish": "yarn run build", "prepublish": "yarn run build",
"release": "np" "release": "np"
@@ -43,6 +44,7 @@
"@types/jest": "^24.0.14", "@types/jest": "^24.0.14",
"jest": "^24.8.0", "jest": "^24.8.0",
"np": "^5.0.3", "np": "^5.0.3",
"prettier": "^1.19.1",
"ts-jest": "^24.0.2", "ts-jest": "^24.0.2",
"tslint": "^5.17.0", "tslint": "^5.17.0",
"tslint-config-airbnb": "^5.11.1", "tslint-config-airbnb": "^5.11.1",

View File

@@ -14,7 +14,6 @@ import {
ActivityName, ActivityName,
PlayerActivityRow, PlayerActivityRow,
Bosses, Bosses,
LeagueStats,
Boss, Boss,
} from './types'; } from './types';
import { import {
@@ -44,16 +43,16 @@ export async function getStats(rsn: string): Promise<Player> {
const mainRes = await axios(getStatsURL('main', rsn)); const mainRes = await axios(getStatsURL('main', rsn));
if (mainRes.status === 200) { if (mainRes.status === 200) {
const otherResponses = await Promise.all([ const otherResponses = await Promise.all([
axios(getStatsURL('iron', rsn)).catch(err => err), axios(getStatsURL('ironman', rsn)).catch(err => err),
axios(getStatsURL('hc', rsn)).catch(err => err), axios(getStatsURL('hardcore', rsn)).catch(err => err),
axios(getStatsURL('ult', rsn)).catch(err => err), axios(getStatsURL('ultimate', rsn)).catch(err => err),
getRSNFormat(rsn), getRSNFormat(rsn),
]); ]);
const [ironRes, hcRes, ultRes, formattedName] = otherResponses; const [ironRes, hcRes, ultRes, formattedName] = otherResponses;
const player: Player = { const player: Player = {
rsn: formattedName, name: formattedName,
mode: 'main', mode: 'main',
dead: false, dead: false,
deulted: false, deulted: false,
@@ -62,32 +61,42 @@ export async function getStats(rsn: string): Promise<Player> {
player.main = parseStats(mainRes.data); player.main = parseStats(mainRes.data);
if (ironRes.status === 200) { if (ironRes.status === 200) {
player.iron = parseStats(ironRes.data); player.ironman = parseStats(ironRes.data);
if (hcRes.status === 200) { if (hcRes.status === 200) {
player.mode = 'hc'; player.mode = 'hardcore';
player.hc = parseStats(hcRes.data); player.hardcore = parseStats(hcRes.data);
if (player.iron.skills.overall.xp !== player.hc.skills.overall.xp) { if (
player.ironman.skills.overall.xp !== player.hardcore.skills.overall.xp
) {
player.dead = true; player.dead = true;
player.mode = 'iron'; player.mode = 'ironman';
} }
if (player.main.skills.overall.xp !== player.iron.skills.overall.xp) { if (
player.main.skills.overall.xp !== player.ironman.skills.overall.xp
) {
player.deironed = true; player.deironed = true;
player.mode = 'main'; player.mode = 'main';
} }
} else if (ultRes.status === 200) { } else if (ultRes.status === 200) {
player.mode = 'ult'; player.mode = 'ultimate';
player.ult = parseStats(ultRes.data); player.ultimate = parseStats(ultRes.data);
if (player.iron.skills.overall.xp !== player.ult.skills.overall.xp) { if (
player.ironman.skills.overall.xp !== player.ultimate.skills.overall.xp
) {
player.deulted = true; player.deulted = true;
player.mode = 'iron'; player.mode = 'ironman';
} }
if (player.main.skills.overall.xp !== player.iron.skills.overall.xp) { if (
player.main.skills.overall.xp !== player.ironman.skills.overall.xp
) {
player.deironed = true; player.deironed = true;
player.mode = 'main'; player.mode = 'main';
} }
} else { } else {
player.mode = 'iron'; player.mode = 'ironman';
if (player.main.skills.overall.xp !== player.iron.skills.overall.xp) { if (
player.main.skills.overall.xp !== player.ironman.skills.overall.xp
) {
player.deironed = true; player.deironed = true;
player.mode = 'main'; player.mode = 'main';
} }
@@ -99,10 +108,10 @@ export async function getStats(rsn: string): Promise<Player> {
throw Error('Player not found'); throw Error('Player not found');
} }
export async function getStatsByGamemode<T extends Gamemode = 'main'>( export async function getStatsByGamemode(
rsn: string, rsn: string,
mode: T = 'main' as T mode: Gamemode = 'main'
): Promise<T extends 'leagues' ? LeagueStats : Stats> { ): Promise<Stats> {
if (typeof rsn !== 'string') { if (typeof rsn !== 'string') {
throw Error('RSN must be a string'); throw Error('RSN must be a string');
} else if (!/^[a-zA-Z0-9 _]+$/.test(rsn)) { } else if (!/^[a-zA-Z0-9 _]+$/.test(rsn)) {
@@ -116,7 +125,7 @@ export async function getStatsByGamemode<T extends Gamemode = 'main'>(
if (response.status !== 200) { if (response.status !== 200) {
throw Error('Player not found'); throw Error('Player not found');
} }
const stats = parseStats(response.data, mode); const stats = parseStats(response.data);
return stats; return stats;
} }
@@ -145,7 +154,7 @@ export async function getSkillPage(
const [nameEl] = nameCell.children.filter(el => el.name === 'a'); const [nameEl] = nameCell.children.filter(el => el.name === 'a');
return { return {
rsn: rsnFromElement(nameEl), name: rsnFromElement(nameEl),
rank: numberFromElement(rankEl), rank: numberFromElement(rankEl),
level: numberFromElement(levelEl), level: numberFromElement(levelEl),
xp: numberFromElement(xpEl), xp: numberFromElement(xpEl),
@@ -180,7 +189,7 @@ export async function getActivityPage(
const [nameEl] = nameCell.children.filter(el => el.name === 'a'); const [nameEl] = nameCell.children.filter(el => el.name === 'a');
return { return {
rsn: rsnFromElement(nameEl), name: rsnFromElement(nameEl),
rank: numberFromElement(rankEl), rank: numberFromElement(rankEl),
score: numberFromElement(scoreEl), score: numberFromElement(scoreEl),
dead: nameCell.children.length === 4, dead: nameCell.children.length === 4,
@@ -213,10 +222,7 @@ export async function getRSNFormat(rsn: string): Promise<string> {
} }
} }
export function parseStats<T extends Gamemode = 'main'>( export function parseStats(csv: string): Stats {
csv: string,
mode: T = 'main' as T
): T extends 'leagues' ? LeagueStats : Stats {
const splitCSV = csv const splitCSV = csv
.split('\n') .split('\n')
.filter(entry => !!entry) .filter(entry => !!entry)
@@ -245,10 +251,10 @@ export function parseStats<T extends Gamemode = 'main'>(
return activity; return activity;
}); });
const [lp] = activityObjects.splice(0, 1); const [leaguePoints] = activityObjects.splice(0, 1);
const bhObjects = activityObjects.splice(0, BH_MODES.length); const bhObjects = activityObjects.splice(0, BH_MODES.length);
const clueObjects = activityObjects.splice(0, CLUES.length); const clueObjects = activityObjects.splice(0, CLUES.length);
const [lms] = activityObjects.splice(0, 1); const [lastManStanding] = activityObjects.splice(0, 1);
const bossObjects = activityObjects.splice(0, BOSSES.length); const bossObjects = activityObjects.splice(0, BOSSES.length);
const skills: Skills = skillObjects.reduce<Skills>((prev, curr, index) => { const skills: Skills = skillObjects.reduce<Skills>((prev, curr, index) => {
@@ -257,7 +263,7 @@ export function parseStats<T extends Gamemode = 'main'>(
return newSkills; return newSkills;
}, {} as Skills); }, {} as Skills);
const bh: BH = bhObjects.reduce<BH>((prev, curr, index) => { const bountyHunter: BH = bhObjects.reduce<BH>((prev, curr, index) => {
const newBH = { ...prev }; const newBH = { ...prev };
newBH[BH_MODES[index]] = curr; newBH[BH_MODES[index]] = curr;
return newBH; return newBH;
@@ -278,36 +284,29 @@ export function parseStats<T extends Gamemode = 'main'>(
const bosses: Bosses = bossObjects.reduce<Bosses>((prev, curr, index) => { const bosses: Bosses = bossObjects.reduce<Bosses>((prev, curr, index) => {
const newBosses = { ...prev }; const newBosses = { ...prev };
newBosses[TEMPBOSSES[index]] = brokenBosses.includes(BOSSES[index])
? { rank: -1, score: -1 }
: curr;
return newBosses;
}, {} as Bosses);
// TODO Remove as soon as Jagex's API is fixed // TODO Remove as soon as Jagex's API is fixed
if (BOSSES[index] === brokenBosses[0]) {
brokenBosses.forEach(broken => { brokenBosses.forEach(broken => {
bosses[broken] = { newBosses[broken] = {
rank: -1, rank: -1,
score: -1, score: -1,
}; };
}); });
}
newBosses[TEMPBOSSES[index]] = curr;
return newBosses;
}, {} as Bosses);
const stats: Stats = { const stats: Stats = {
skills, skills,
bh, leaguePoints,
lms, bountyHunter,
lastManStanding,
clues, clues,
bosses, bosses,
}; };
const leagueStats: LeagueStats = { return stats;
skills,
lp,
clues,
bosses,
};
return (mode === 'leagues' ? leagueStats : stats) as T extends 'leagues'
? LeagueStats
: Stats;
} }

View File

@@ -2,5 +2,6 @@ import * as hiscores from './hiscores';
export * from './hiscores'; export * from './hiscores';
export * from './types'; export * from './types';
export * from './utils';
export default hiscores; export default hiscores;

View File

@@ -1,11 +1,11 @@
export type Gamemode = export type Gamemode =
| 'main' | 'main'
| 'iron' | 'ironman'
| 'hc' | 'ultimate'
| 'ult' | 'hardcore'
| 'dmm' | 'deadman'
| 'dmmt' | 'seasonal'
| 'leagues'; | 'tournament';
export interface Skill { export interface Skill {
rank: number; rank: number;
@@ -62,43 +62,43 @@ export type BHType = 'rogue' | 'hunter';
export type BH = { [Type in BHType]: Activity }; export type BH = { [Type in BHType]: Activity };
export type Boss = export type Boss =
| 'abyssalsire' | 'abyssalSire'
| 'alchemicalhydra' | 'alchemicalHydra'
| 'barrowschests' | 'barrows'
| 'bryophyta' | 'bryophyta'
| 'callisto' | 'callisto'
| 'cerberus' | 'cerberus'
| 'chambersofxeric' | 'chambersOfXeric'
| 'chambersofxericchallengemode' | 'chambersOfXericChallengeMode'
| 'chaoselemental' | 'chaosElemental'
| 'chaosfanatic' | 'chaosFanatic'
| 'commanderzilyana' | 'commanderZilyana'
| 'corporealbeast' | 'corporealBeast'
| 'crazyarchaeologist' | 'crazyArchaeologist'
| 'dagannothprime' | 'dagannothPrime'
| 'dagannothrex' | 'dagannothRex'
| 'dagannothsupreme' | 'dagannothSupreme'
| 'derangedarchaeologist' | 'derangedArchaeologist'
| 'generalgraardor' | 'generalGraardor'
| 'giantmole' | 'giantMole'
| 'grotesqueguardians' | 'grotesqueGuardians'
| 'hespori' | 'hespori'
| 'kalphitequeen' | 'kalphiteQueen'
| 'kingblackdragon' | 'kingBlackDragon'
| 'kraken' | 'kraken'
| 'kreearra' | 'kreeArra'
| 'kriltsutsaroth' | 'krilTsutsaroth'
| 'mimic' | 'mimic'
| 'obor' | 'obor'
| 'sarachnis' | 'sarachnis'
| 'scorpia' | 'scorpia'
| 'skotizo' | 'skotizo'
| 'gauntlet' | 'gauntlet'
| 'corruptedgauntlet' | 'corruptedGauntlet'
| 'theatreofblood' | 'theatreOfBlood'
| 'thermonuclearsmokedevil' | 'thermonuclearSmokeDevil'
| 'tzkalzuk' | 'tzKalZuk'
| 'tztokjad' | 'tzTokJad'
| 'venenatis' | 'venenatis'
| 'vetion' | 'vetion'
| 'vorkath' | 'vorkath'
@@ -109,34 +109,30 @@ export type Boss =
export type Bosses = { [Type in Boss]: Activity }; export type Bosses = { [Type in Boss]: Activity };
export type ActivityName = export type ActivityName =
| 'hunterbh' | 'hunterBH'
| 'roguebh' | 'rogueBH'
| 'lms' | 'lastManStanding'
| 'allclues' | 'allClues'
| 'beginnerclues' | 'beginnerClues'
| 'easyclues' | 'easyClues'
| 'mediumclues' | 'mediumClues'
| 'hardclues' | 'hardClues'
| 'eliteclues' | 'eliteClues'
| 'masterclues' | 'masterClues'
| Boss; | Boss;
export interface Stats { export interface Stats {
skills: Skills; skills: Skills;
clues: Clues; clues: Clues;
bh: BH; leaguePoints: Activity;
lms: Activity; bountyHunter: BH;
lastManStanding: Activity;
bosses: Bosses; bosses: Bosses;
} }
export interface LeagueStats extends Omit<Stats, 'bh' | 'lms'> {
lp: Activity;
}
export type Modes = { [M in Gamemode]?: Stats }; export type Modes = { [M in Gamemode]?: Stats };
export interface Player extends Modes { export interface Player extends Modes {
rsn: string; name: string;
mode: Gamemode; mode: Gamemode;
dead: boolean; dead: boolean;
deulted: boolean; deulted: boolean;
@@ -144,11 +140,11 @@ export interface Player extends Modes {
} }
export interface PlayerSkillRow extends Skill { export interface PlayerSkillRow extends Skill {
rsn: string; name: string;
dead: boolean; dead: boolean;
} }
export interface PlayerActivityRow extends Activity { export interface PlayerActivityRow extends Activity {
rsn: string; name: string;
dead: boolean; dead: boolean;
} }

View File

@@ -1,16 +1,28 @@
import { SkillName, ClueType, BHType, Gamemode, Boss } from '../types'; import {
BHType,
Boss,
ClueType,
Gamemode,
SkillName,
ActivityName,
} from '../types';
export const BASE_URL = 'http://services.runescape.com/m=hiscore_oldschool'; export const BASE_URL = 'http://services.runescape.com/m=hiscore_oldschool';
export const STATS_URL = 'index_lite.ws?player='; export const STATS_URL = 'index_lite.ws?player=';
export const SCORES_URL = 'overall.ws?'; export const SCORES_URL = 'overall.ws?';
export const GAMEMODE_URL = {
dmm: '_deadman/', export type GamemodeUrl = {
dmmt: '_tournament/', [key in Gamemode]: string;
hc: '_hardcore_ironman/', };
iron: '_ironman/',
main: '/', export const GAMEMODE_URL: GamemodeUrl = {
leagues: '_seasonal/', main: `${BASE_URL}/`,
ult: '_ultimate/', ironman: `${BASE_URL}_ironman`,
hardcore: `${BASE_URL}_hardcore_ironman`,
ultimate: `${BASE_URL}_ultimate`,
deadman: `${BASE_URL}_deadman`,
seasonal: `${BASE_URL}_seasonal`,
tournament: `${BASE_URL}_tournament`,
}; };
export const SKILLS: SkillName[] = [ export const SKILLS: SkillName[] = [
'overall', 'overall',
@@ -48,65 +60,65 @@ export const CLUES: ClueType[] = [
'master', 'master',
]; ];
export const BH_MODES: BHType[] = ['rogue', 'hunter']; export const BH_MODES: BHType[] = ['rogue', 'hunter'];
export const ACTIVITIES = [ export const ACTIVITIES: ActivityName[] = [
'hunterbh', 'hunterBH',
'roguebh', 'rogueBH',
'lms', 'lastManStanding',
'allclues', 'allClues',
'beginnerclues', 'beginnerClues',
'easyclues', 'easyClues',
'mediumclues', 'mediumClues',
'hardclues', 'hardClues',
'eliteclues', 'eliteClues',
'masterclues', 'masterClues',
]; ];
export const GAMEMODES: Gamemode[] = [ export const GAMEMODES: Gamemode[] = [
'main', 'main',
'iron', 'ironman',
'hc', 'hardcore',
'ult', 'ultimate',
'dmm', 'deadman',
'dmmt', 'seasonal',
'leagues', 'tournament',
]; ];
export const BOSSES: Boss[] = [ export const BOSSES: Boss[] = [
'abyssalsire', 'abyssalSire',
'alchemicalhydra', 'alchemicalHydra',
'barrowschests', 'barrows',
'bryophyta', 'bryophyta',
'chambersofxeric',
'chambersofxericchallengemode',
'callisto', 'callisto',
'cerberus', 'cerberus',
'chaoselemental', 'chambersOfXeric',
'chaosfanatic', 'chambersOfXericChallengeMode',
'commanderzilyana', 'chaosElemental',
'corporealbeast', 'chaosFanatic',
'crazyarchaeologist', 'commanderZilyana',
'dagannothprime', 'corporealBeast',
'dagannothrex', 'crazyArchaeologist',
'dagannothsupreme', 'dagannothPrime',
'derangedarchaeologist', 'dagannothRex',
'generalgraardor', 'dagannothSupreme',
'giantmole', 'derangedArchaeologist',
'grotesqueguardians', 'generalGraardor',
'giantMole',
'grotesqueGuardians',
'hespori', 'hespori',
'kalphitequeen', 'kalphiteQueen',
'kingblackdragon', 'kingBlackDragon',
'kraken', 'kraken',
'kreearra', 'kreeArra',
'kriltsutsaroth', 'krilTsutsaroth',
'mimic', 'mimic',
'obor', 'obor',
'sarachnis', 'sarachnis',
'scorpia', 'scorpia',
'skotizo', 'skotizo',
'gauntlet', 'gauntlet',
'corruptedgauntlet', 'corruptedGauntlet',
'theatreofblood', 'theatreOfBlood',
'thermonuclearsmokedevil', 'thermonuclearSmokeDevil',
'tzkalzuk', 'tzKalZuk',
'tztokjad', 'tzTokJad',
'venenatis', 'venenatis',
'vetion', 'vetion',
'vorkath', 'vorkath',
@@ -114,3 +126,110 @@ export const BOSSES: Boss[] = [
'zalcano', 'zalcano',
'zulrah', 'zulrah',
]; ];
export type FormattedBossNames = {
[key in Boss]: string;
};
export const FORMATTED_BOSS_NAMES: FormattedBossNames = {
abyssalSire: 'Abyssal Sire',
alchemicalHydra: 'Alchemical Hydra',
barrows: 'Barrows Chests',
bryophyta: 'Bryophyta',
callisto: 'Callisto',
cerberus: 'Cerberus',
chambersOfXeric: 'Chambers of Xeric',
chambersOfXericChallengeMode: 'Chambers of Xeric: Challenge Mode',
chaosElemental: 'Chaos Elemental',
chaosFanatic: 'Chaos Fanatic',
commanderZilyana: 'Commander Zilyana',
corporealBeast: 'Corporeal Beast',
crazyArchaeologist: 'Crazy Archaeologist',
dagannothPrime: 'Dagannoth Prime',
dagannothRex: 'Dagannoth Rex',
dagannothSupreme: 'Dagannoth Supreme',
derangedArchaeologist: 'Deranged Archaeologist',
generalGraardor: 'General Graardor',
giantMole: 'Giant Mole',
grotesqueGuardians: 'Grotesque Guardians',
hespori: 'Hespori',
kalphiteQueen: 'Kalphite Queen',
kingBlackDragon: 'King Black Dragon',
kraken: 'Kraken',
kreeArra: "Kree'Arra",
krilTsutsaroth: "K'ril Tsutsaroth",
mimic: 'Mimic',
obor: 'Obor',
sarachnis: 'Sarachnis',
scorpia: 'Scorpia',
skotizo: 'Skotizo',
gauntlet: 'The Gauntlet',
corruptedGauntlet: 'The Corrupted Gauntlet',
theatreOfBlood: 'Theatre of Blood',
thermonuclearSmokeDevil: 'Thermonuclear Smoke Devil',
tzKalZuk: 'TzKal-Zuk',
tzTokJad: 'TzTok-Jad',
venenatis: 'Venenatis',
vetion: "Vet'ion",
vorkath: 'Vorkath',
wintertodt: 'Wintertodt',
zalcano: 'Zalcano',
zulrah: 'Zulrah',
};
export type FormattedSkillNames = {
[key in SkillName]: string;
};
export const FORMATTED_SKILL_NAMES: FormattedSkillNames = {
overall: 'Overall',
attack: 'Attack',
defence: 'Defence',
strength: 'Strength',
hitpoints: 'Hitpoints',
ranged: 'Ranged',
prayer: 'Prayer',
magic: 'Magic',
cooking: 'Cooking',
woodcutting: 'Woodcutting',
fletching: 'Fletching',
fishing: 'Fishing',
firemaking: 'Firemaking',
crafting: 'Crafting',
smithing: 'Smithing',
mining: 'Mining',
herblore: 'Herblore',
agility: 'Agility',
thieving: 'Thieving',
slayer: 'Slayer',
farming: 'Farming',
runecraft: 'Runecraft',
hunter: 'Hunter',
construction: 'Construction',
};
export type FormattedClueNames = {
[key in ClueType]: string;
};
export const FORMATTED_CLUE_NAMES: FormattedClueNames = {
all: 'Clue Scrolls (all)',
beginner: 'Clue Scrolls (beginner)',
easy: 'Clue Scrolls (easy)',
medium: 'Clue Scrolls (medium)',
hard: 'Clue Scrolls (hard)',
elite: 'Clue Scrolls (elite)',
master: 'Clue Scrolls (master)',
};
export type FormattedBHNames = {
[key in BHType]: string;
};
export const FORMATTED_BH_NAMES: FormattedBHNames = {
rogue: 'Bounty Hunter - Rogue',
hunter: 'Bounty Hunter - Hunter',
};
export const FORMATTED_LMS = 'Last Man Standing';
export const FORMATTED_LEAGUE_POINTS = 'League Points';

View File

@@ -1,6 +1,5 @@
import { Gamemode, SkillName, ActivityName } from '../types'; import { Gamemode, SkillName, ActivityName } from '../types';
import { import {
BASE_URL,
GAMEMODE_URL, GAMEMODE_URL,
STATS_URL, STATS_URL,
SCORES_URL, SCORES_URL,
@@ -9,19 +8,19 @@ import {
} from './constants'; } from './constants';
export const getStatsURL = (gamemode: Gamemode, rsn: string) => export const getStatsURL = (gamemode: Gamemode, rsn: string) =>
`${BASE_URL}${GAMEMODE_URL[gamemode]}${STATS_URL}${encodeURIComponent(rsn)}`; `${GAMEMODE_URL[gamemode]}${STATS_URL}${encodeURIComponent(rsn)}`;
export const getPlayerTableURL = (gamemode: Gamemode, rsn: string) => export const getPlayerTableURL = (gamemode: Gamemode, rsn: string) =>
`${BASE_URL}${ `${GAMEMODE_URL[gamemode]}${SCORES_URL}table=0&user=${encodeURIComponent(
GAMEMODE_URL[gamemode] rsn
}${SCORES_URL}table=0&user=${encodeURIComponent(rsn)}`; )}`;
export const getSkillPageURL = ( export const getSkillPageURL = (
gamemode: Gamemode, gamemode: Gamemode,
skill: SkillName, skill: SkillName,
page: number page: number
) => ) =>
`${BASE_URL}${GAMEMODE_URL[gamemode]}${SCORES_URL}table=${SKILLS.indexOf( `${GAMEMODE_URL[gamemode]}${SCORES_URL}table=${SKILLS.indexOf(
skill skill
)}&page=${page}`; )}&page=${page}`;
@@ -30,7 +29,7 @@ export const getActivityPageURL = (
activity: ActivityName, activity: ActivityName,
page: number page: number
) => ) =>
`${BASE_URL}${ `${
GAMEMODE_URL[gamemode] GAMEMODE_URL[gamemode]
}${SCORES_URL}category_type=1&table=${ACTIVITIES.indexOf( }${SCORES_URL}category_type=1&table=${ACTIVITIES.indexOf(
activity activity

245
yarn.lock
View File

@@ -447,11 +447,6 @@ abab@^2.0.0:
resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a" resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a"
integrity sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg== integrity sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg==
abbrev@1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==
acorn-globals@^4.1.0: acorn-globals@^4.1.0:
version "4.3.4" version "4.3.4"
resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7" resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7"
@@ -562,19 +557,6 @@ anymatch@^2.0.0:
micromatch "^3.1.4" micromatch "^3.1.4"
normalize-path "^2.1.1" normalize-path "^2.1.1"
aproba@^1.0.3:
version "1.2.0"
resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==
are-we-there-yet@~1.1.2:
version "1.1.5"
resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21"
integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==
dependencies:
delegates "^1.0.0"
readable-stream "^2.0.6"
argparse@^1.0.7: argparse@^1.0.7:
version "1.0.10" version "1.0.10"
resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
@@ -971,11 +953,6 @@ cheerio@^1.0.0-rc.3:
lodash "^4.15.0" lodash "^4.15.0"
parse5 "^3.0.1" parse5 "^3.0.1"
chownr@^1.1.1:
version "1.1.3"
resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.3.tgz#42d837d5239688d55f303003a508230fa6727142"
integrity sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw==
ci-info@^2.0.0: ci-info@^2.0.0:
version "2.0.0" version "2.0.0"
resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46"
@@ -1115,11 +1092,6 @@ configstore@^4.0.0:
write-file-atomic "^2.0.0" write-file-atomic "^2.0.0"
xdg-basedir "^3.0.0" xdg-basedir "^3.0.0"
console-control-strings@^1.0.0, console-control-strings@~1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=
convert-source-map@^1.4.0, convert-source-map@^1.7.0: convert-source-map@^1.4.0, convert-source-map@^1.7.0:
version "1.7.0" version "1.7.0"
resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442"
@@ -1132,7 +1104,7 @@ copy-descriptor@^0.1.0:
resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=
core-util-is@1.0.2, core-util-is@~1.0.0: core-util-is@1.0.2:
version "1.0.2" version "1.0.2"
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
@@ -1250,13 +1222,6 @@ debug@^2.2.0, debug@^2.3.3:
dependencies: dependencies:
ms "2.0.0" ms "2.0.0"
debug@^3.2.6:
version "3.2.6"
resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==
dependencies:
ms "^2.1.1"
debug@^4.1.0, debug@^4.1.1: debug@^4.1.0, debug@^4.1.1:
version "4.1.1" version "4.1.1"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791"
@@ -1351,16 +1316,6 @@ delayed-stream@~1.0.0:
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk=
delegates@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=
detect-libc@^1.0.2:
version "1.0.3"
resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=
detect-newline@^2.1.0: detect-newline@^2.1.0:
version "2.1.0" version "2.1.0"
resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2"
@@ -1823,13 +1778,6 @@ fragment-cache@^0.2.1:
dependencies: dependencies:
map-cache "^0.2.2" map-cache "^0.2.2"
fs-minipass@^1.2.5:
version "1.2.7"
resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7"
integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==
dependencies:
minipass "^2.6.0"
fs.realpath@^1.0.0: fs.realpath@^1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
@@ -1848,20 +1796,6 @@ function-bind@^1.1.1:
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
gauge@~2.7.3:
version "2.7.4"
resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7"
integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=
dependencies:
aproba "^1.0.3"
console-control-strings "^1.0.0"
has-unicode "^2.0.0"
object-assign "^4.1.0"
signal-exit "^3.0.0"
string-width "^1.0.1"
strip-ansi "^3.0.1"
wide-align "^1.1.0"
get-caller-file@^2.0.0, get-caller-file@^2.0.1: get-caller-file@^2.0.0, get-caller-file@^2.0.1:
version "2.0.5" version "2.0.5"
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
@@ -2018,11 +1952,6 @@ has-symbols@^1.0.0, has-symbols@^1.0.1:
resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8"
integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==
has-unicode@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=
has-value@^0.3.1: has-value@^0.3.1:
version "0.3.1" version "0.3.1"
resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f"
@@ -2116,20 +2045,13 @@ human-signals@^1.1.1:
resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3"
integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==
iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4: iconv-lite@0.4.24, iconv-lite@^0.4.24:
version "0.4.24" version "0.4.24"
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
dependencies: dependencies:
safer-buffer ">= 2.1.2 < 3" safer-buffer ">= 2.1.2 < 3"
ignore-walk@^3.0.1:
version "3.0.3"
resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37"
integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==
dependencies:
minimatch "^3.0.4"
import-fresh@^2.0.0: import-fresh@^2.0.0:
version "2.0.0" version "2.0.0"
resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546"
@@ -2169,7 +2091,7 @@ inflight@^1.0.4:
once "^1.3.0" once "^1.3.0"
wrappy "1" wrappy "1"
inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3: inherits@2, inherits@^2.0.1, inherits@^2.0.3:
version "2.0.4" version "2.0.4"
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
@@ -2516,7 +2438,7 @@ isarray@0.0.1:
resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=
isarray@1.0.0, isarray@~1.0.0: isarray@1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
@@ -3446,21 +3368,6 @@ minimist@~0.0.1:
resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf"
integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=
minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0:
version "2.9.0"
resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6"
integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==
dependencies:
safe-buffer "^5.1.2"
yallist "^3.0.0"
minizlib@^1.2.1:
version "1.3.3"
resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d"
integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==
dependencies:
minipass "^2.9.0"
mixin-deep@^1.2.0: mixin-deep@^1.2.0:
version "1.3.2" version "1.3.2"
resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566"
@@ -3469,7 +3376,7 @@ mixin-deep@^1.2.0:
for-in "^1.0.2" for-in "^1.0.2"
is-extendable "^1.0.1" is-extendable "^1.0.1"
mkdirp@0.x, mkdirp@^0.5.0, mkdirp@^0.5.1: mkdirp@0.x, mkdirp@^0.5.1:
version "0.5.1" version "0.5.1"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=
@@ -3523,15 +3430,6 @@ natural-compare@^1.4.0:
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
needle@^2.2.1:
version "2.4.0"
resolved "https://registry.yarnpkg.com/needle/-/needle-2.4.0.tgz#6833e74975c444642590e15a750288c5f939b57c"
integrity sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg==
dependencies:
debug "^3.2.6"
iconv-lite "^0.4.4"
sax "^1.2.4"
neo-async@^2.6.0: neo-async@^2.6.0:
version "2.6.1" version "2.6.1"
resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c"
@@ -3563,30 +3461,6 @@ node-notifier@^5.4.2:
shellwords "^0.1.1" shellwords "^0.1.1"
which "^1.3.0" which "^1.3.0"
node-pre-gyp@*:
version "0.14.0"
resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz#9a0596533b877289bcad4e143982ca3d904ddc83"
integrity sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA==
dependencies:
detect-libc "^1.0.2"
mkdirp "^0.5.1"
needle "^2.2.1"
nopt "^4.0.1"
npm-packlist "^1.1.6"
npmlog "^4.0.2"
rc "^1.2.7"
rimraf "^2.6.1"
semver "^5.3.0"
tar "^4.4.2"
nopt@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d"
integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=
dependencies:
abbrev "1"
osenv "^0.1.4"
normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.5.0: normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.5.0:
version "2.5.0" version "2.5.0"
resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
@@ -3648,13 +3522,6 @@ np@^5.0.3:
terminal-link "^2.0.0" terminal-link "^2.0.0"
update-notifier "^3.0.0" update-notifier "^3.0.0"
npm-bundled@^1.0.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b"
integrity sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==
dependencies:
npm-normalize-package-bin "^1.0.1"
npm-name@^5.4.0: npm-name@^5.4.0:
version "5.5.0" version "5.5.0"
resolved "https://registry.yarnpkg.com/npm-name/-/npm-name-5.5.0.tgz#3a73adbcb0488a41a44ff820ed51dcc32c72bd09" resolved "https://registry.yarnpkg.com/npm-name/-/npm-name-5.5.0.tgz#3a73adbcb0488a41a44ff820ed51dcc32c72bd09"
@@ -3668,19 +3535,6 @@ npm-name@^5.4.0:
registry-url "^5.1.0" registry-url "^5.1.0"
validate-npm-package-name "^3.0.0" validate-npm-package-name "^3.0.0"
npm-normalize-package-bin@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2"
integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==
npm-packlist@^1.1.6:
version "1.4.7"
resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.7.tgz#9e954365a06b80b18111ea900945af4f88ed4848"
integrity sha512-vAj7dIkp5NhieaGZxBJB8fF4R0078rqsmhJcAfXZ6O7JJhjhPK96n5Ry1oZcfLXgfun0GWTZPOxaEyqv8GBykQ==
dependencies:
ignore-walk "^3.0.1"
npm-bundled "^1.0.1"
npm-run-path@^2.0.0: npm-run-path@^2.0.0:
version "2.0.2" version "2.0.2"
resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
@@ -3695,16 +3549,6 @@ npm-run-path@^4.0.0:
dependencies: dependencies:
path-key "^3.0.0" path-key "^3.0.0"
npmlog@^4.0.2:
version "4.1.2"
resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==
dependencies:
are-we-there-yet "~1.1.2"
console-control-strings "~1.1.0"
gauge "~2.7.3"
set-blocking "~2.0.0"
nth-check@~1.0.1: nth-check@~1.0.1:
version "1.0.2" version "1.0.2"
resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c"
@@ -3831,24 +3675,11 @@ optionator@^0.8.1:
type-check "~0.3.2" type-check "~0.3.2"
word-wrap "~1.2.3" word-wrap "~1.2.3"
os-homedir@^1.0.0: os-tmpdir@~1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M=
os-tmpdir@^1.0.0, os-tmpdir@~1.0.2:
version "1.0.2" version "1.0.2"
resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=
osenv@^0.1.4:
version "0.1.5"
resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410"
integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==
dependencies:
os-homedir "^1.0.0"
os-tmpdir "^1.0.0"
ow@^0.15.0: ow@^0.15.0:
version "0.15.0" version "0.15.0"
resolved "https://registry.yarnpkg.com/ow/-/ow-0.15.0.tgz#0d928046989422d7b06f0d6f20017016a0373df5" resolved "https://registry.yarnpkg.com/ow/-/ow-0.15.0.tgz#0d928046989422d7b06f0d6f20017016a0373df5"
@@ -4118,6 +3949,11 @@ prepend-http@^2.0.0:
resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897"
integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=
prettier@^1.19.1:
version "1.19.1"
resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb"
integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==
pretty-format@^24.9.0: pretty-format@^24.9.0:
version "24.9.0" version "24.9.0"
resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.9.0.tgz#12fac31b37019a4eea3c11aa9a959eb7628aa7c9" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.9.0.tgz#12fac31b37019a4eea3c11aa9a959eb7628aa7c9"
@@ -4128,11 +3964,6 @@ pretty-format@^24.9.0:
ansi-styles "^3.2.0" ansi-styles "^3.2.0"
react-is "^16.8.4" react-is "^16.8.4"
process-nextick-args@~2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
prompts@^2.0.1: prompts@^2.0.1:
version "2.3.0" version "2.3.0"
resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.3.0.tgz#a444e968fa4cc7e86689a74050685ac8006c4cc4" resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.3.0.tgz#a444e968fa4cc7e86689a74050685ac8006c4cc4"
@@ -4179,7 +4010,7 @@ quick-lru@^1.0.0:
resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-1.1.0.tgz#4360b17c61136ad38078397ff11416e186dcfbb8" resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-1.1.0.tgz#4360b17c61136ad38078397ff11416e186dcfbb8"
integrity sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g= integrity sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=
rc@^1.2.7, rc@^1.2.8: rc@^1.2.8:
version "1.2.8" version "1.2.8"
resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==
@@ -4238,19 +4069,6 @@ read-pkg@^5.2.0:
parse-json "^5.0.0" parse-json "^5.0.0"
type-fest "^0.6.0" type-fest "^0.6.0"
readable-stream@^2.0.6:
version "2.3.6"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf"
integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==
dependencies:
core-util-is "~1.0.0"
inherits "~2.0.3"
isarray "~1.0.0"
process-nextick-args "~2.0.0"
safe-buffer "~5.1.1"
string_decoder "~1.1.1"
util-deprecate "~1.0.1"
readable-stream@^3.1.1: readable-stream@^3.1.1:
version "3.4.0" version "3.4.0"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.4.0.tgz#a51c26754658e0a3c21dbf59163bd45ba6f447fc" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.4.0.tgz#a51c26754658e0a3c21dbf59163bd45ba6f447fc"
@@ -4427,7 +4245,7 @@ ret@~0.1.10:
resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==
rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3: rimraf@^2.5.4, rimraf@^2.6.3:
version "2.7.1" version "2.7.1"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
@@ -4458,7 +4276,7 @@ safe-buffer@^5.0.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0:
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519"
integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==
safe-buffer@~5.1.0, safe-buffer@~5.1.1: safe-buffer@~5.1.1:
version "5.1.2" version "5.1.2"
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
@@ -4517,7 +4335,7 @@ semver@^6.0.0, semver@^6.1.2, semver@^6.2.0:
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
set-blocking@^2.0.0, set-blocking@~2.0.0: set-blocking@^2.0.0:
version "2.0.0" version "2.0.0"
resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
@@ -4740,7 +4558,7 @@ string-width@^1.0.1:
is-fullwidth-code-point "^1.0.0" is-fullwidth-code-point "^1.0.0"
strip-ansi "^3.0.0" strip-ansi "^3.0.0"
"string-width@^1.0.2 || 2", string-width@^2.1.0, string-width@^2.1.1: string-width@^2.1.0, string-width@^2.1.1:
version "2.1.1" version "2.1.1"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==
@@ -4789,13 +4607,6 @@ string_decoder@^1.1.1:
dependencies: dependencies:
safe-buffer "~5.2.0" safe-buffer "~5.2.0"
string_decoder@~1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
dependencies:
safe-buffer "~5.1.0"
strip-ansi@^3.0.0, strip-ansi@^3.0.1: strip-ansi@^3.0.0, strip-ansi@^3.0.1:
version "3.0.1" version "3.0.1"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
@@ -4893,19 +4704,6 @@ symbol-tree@^3.2.2:
resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2"
integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==
tar@^4.4.2:
version "4.4.13"
resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525"
integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==
dependencies:
chownr "^1.1.1"
fs-minipass "^1.2.5"
minipass "^2.8.6"
minizlib "^1.2.1"
mkdirp "^0.5.0"
safe-buffer "^5.1.2"
yallist "^3.0.3"
term-size@^1.2.0: term-size@^1.2.0:
version "1.2.0" version "1.2.0"
resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69"
@@ -5248,7 +5046,7 @@ use@^3.1.0:
resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"
integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==
util-deprecate@^1.0.1, util-deprecate@~1.0.1: util-deprecate@^1.0.1:
version "1.0.2" version "1.0.2"
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
@@ -5366,13 +5164,6 @@ which@^2.0.1:
dependencies: dependencies:
isexe "^2.0.0" isexe "^2.0.0"
wide-align@^1.1.0:
version "1.1.3"
resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457"
integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==
dependencies:
string-width "^1.0.2 || 2"
widest-line@^2.0.0: widest-line@^2.0.0:
version "2.0.1" version "2.0.1"
resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.1.tgz#7438764730ec7ef4381ce4df82fb98a53142a3fc" resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.1.tgz#7438764730ec7ef4381ce4df82fb98a53142a3fc"
@@ -5457,7 +5248,7 @@ yallist@^2.1.2:
resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=
yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: yallist@^3.0.2:
version "3.1.1" version "3.1.1"
resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"
integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==