From 2d96caaff61155638b05aabbc19e50c02a275508 Mon Sep 17 00:00:00 2001 From: kylemiller3 Date: Thu, 16 Jan 2020 15:03:37 -0500 Subject: [PATCH] Added types for osrs-json-api (#41656) --- types/osrs-json-api/index.d.ts | 151 +++++++++++++++++++++ types/osrs-json-api/osrs-json-api-tests.ts | 16 +++ types/osrs-json-api/tsconfig.json | 23 ++++ types/osrs-json-api/tslint.json | 1 + 4 files changed, 191 insertions(+) create mode 100644 types/osrs-json-api/index.d.ts create mode 100644 types/osrs-json-api/osrs-json-api-tests.ts create mode 100644 types/osrs-json-api/tsconfig.json create mode 100644 types/osrs-json-api/tslint.json diff --git a/types/osrs-json-api/index.d.ts b/types/osrs-json-api/index.d.ts new file mode 100644 index 0000000000..28797858bb --- /dev/null +++ b/types/osrs-json-api/index.d.ts @@ -0,0 +1,151 @@ +// Type definitions for osrs-json-api 1.2 +// Project: https://github.com/Judaxx/osrs-json-api#readme +// Definitions by: Kyle Miller +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +export namespace hiscores { + function getPlayer(rsn: string, gamemode?: Gamemodes): Promise; + + interface Player { + skills: { + overall: RankLevelXpObject + attack: RankLevelXpObject + defence: RankLevelXpObject + strength: RankLevelXpObject + hitpoints: RankLevelXpObject + ranged: RankLevelXpObject + prayer: RankLevelXpObject + magic: RankLevelXpObject + cooking: RankLevelXpObject + woodcutting: RankLevelXpObject + fletching: RankLevelXpObject + fishing: RankLevelXpObject + firemaking: RankLevelXpObject + crafting: RankLevelXpObject + smithing: RankLevelXpObject + mining: RankLevelXpObject + herblore: RankLevelXpObject + agility: RankLevelXpObject + thieving: RankLevelXpObject + slayer: RankLevelXpObject + farming: RankLevelXpObject + runecraft: RankLevelXpObject + hunter: RankLevelXpObject + construction: RankLevelXpObject + }; + bh: { + hunter: RankScoreObject + rogue: RankScoreObject + }; + lms: { + }; + clues: { + all: RankScoreObject + beginner: RankScoreObject + easy: RankScoreObject + medium: RankScoreObject + hard: RankScoreObject + elite: RankScoreObject + master: RankScoreObject + }; + bosses: { + 'Abyssal Sire': RankScoreObject + 'Alchemical Hydra': RankScoreObject + 'Barrows Chests': RankScoreObject + 'Bryophyta': RankScoreObject + 'Callisto': RankScoreObject + 'Cerberus': RankScoreObject + 'Chambers of Xeric': RankScoreObject + 'Chambers of Xeric: Challenge Mode': RankScoreObject + 'Chaos Elemental': RankScoreObject + 'Chaos Fanatic': RankScoreObject + 'Commander Zilyana': RankScoreObject + 'Corporeal Beast': RankScoreObject + 'Crazy Archaeologist': RankScoreObject + 'Dagannoth Prime': RankScoreObject + 'Dagannoth Rex': RankScoreObject + 'Dagannoth Supreme': RankScoreObject + 'Deranged Archaeologist': RankScoreObject + 'General Graardor': RankScoreObject + 'Giant Mole': RankScoreObject + 'Grotesque Guardians': RankScoreObject + 'Hespori': RankScoreObject + 'Kalphite Queen': RankScoreObject + 'King Black Dragon': RankScoreObject + 'Kraken': RankScoreObject + 'Kree\'Arra': RankScoreObject + 'K\'ril Tsutsaroth': RankScoreObject + 'Mimic': RankScoreObject + 'Obor': RankScoreObject + 'Sarachnis': RankScoreObject + 'Scorpia': RankScoreObject + 'Skotizo': RankScoreObject + 'The Gauntlet': RankScoreObject + 'The Corrupted Gauntlet': RankScoreObject + 'Theatre of Blood': RankScoreObject + 'Thermonuclear Smoke Devil': RankScoreObject + 'TzKal-Zuk': RankScoreObject + 'TzTok-Jad': RankScoreObject + 'Venenatis': RankScoreObject + 'Vet\'ion': RankScoreObject + 'Vorkath': RankScoreObject + 'Wintertodt': RankScoreObject + 'Zalcano': RankScoreObject + 'Zulrah': RankScoreObject + }; + } + + interface RankLevelXpObject { + rank: string; + level: number; + xp: number; + } + + interface RankScoreObject { + rank: number; + score: number; + } + + type Gamemodes = 'main' + | 'iron' + | 'uim' + | 'hcim' + | 'dmm' + | 'sdmm' + | 'dmmt'; +} + +export namespace ge { + function getItem(id: number): Promise; + function getGraph(id: number): Promise; + + interface Item { + item: { + icon: string + icon_large: string + id: number + type: string + typeIcon: string + name: string + description: string + current: TrendPriceObject + today: TrendPriceObject + members: boolean + day30: TrendPriceObject + day90: TrendPriceObject + day180: TrendPriceObject + }; + } + + interface Graph { + daily: TimestampPriceRecord; + average: TimestampPriceRecord; + } + + interface TrendPriceObject { + trend: string; + price: number; + } + + type TimestampPriceRecord = Record; +} diff --git a/types/osrs-json-api/osrs-json-api-tests.ts b/types/osrs-json-api/osrs-json-api-tests.ts new file mode 100644 index 0000000000..7a54a3ac16 --- /dev/null +++ b/types/osrs-json-api/osrs-json-api-tests.ts @@ -0,0 +1,16 @@ +import { hiscores, ge } from 'osrs-json-api'; + +hiscores.getPlayer('b0aty').then( + (res: hiscores.Player): void => { + } +); + +ge.getItem(449).then( + (res: ge.Item): void => { + } +); + +ge.getGraph(449).then( + (res: ge.Graph): void => { + } +); diff --git a/types/osrs-json-api/tsconfig.json b/types/osrs-json-api/tsconfig.json new file mode 100644 index 0000000000..a2a621cebb --- /dev/null +++ b/types/osrs-json-api/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictFunctionTypes": true, + "strictNullChecks": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "osrs-json-api-tests.ts" + ] +} diff --git a/types/osrs-json-api/tslint.json b/types/osrs-json-api/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/osrs-json-api/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" }