Merge branch 'master' of https://github.com/PokemonTCG/pokemon-tcg-sdk-typescript
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@ -1,2 +1,3 @@
|
||||
node_modules
|
||||
dist
|
||||
dist
|
||||
*.tgz
|
||||
|
||||
@ -1,2 +1,4 @@
|
||||
src
|
||||
tsconfig.json
|
||||
src
|
||||
dist/coverage
|
||||
*.tgz
|
||||
|
||||
108
README.md
108
README.md
@ -2,60 +2,85 @@
|
||||
|
||||
This is the TypeScript SDK for the [Pokemon TCG API](https://pokemontcg.io).
|
||||
|
||||
## Installation
|
||||
## Installation
|
||||
|
||||
```
|
||||
npm install --save pokemon-tcg-sdk-typescript
|
||||
```
|
||||
**npm**
|
||||
|
||||
npm install --save pokemon-tcg-sdk-typescript
|
||||
|
||||
**yarn**
|
||||
|
||||
yarn add pokemon-tcg-sdk-typescript
|
||||
|
||||
## Class Definitions
|
||||
|
||||
### Card
|
||||
|
||||
```typescript
|
||||
id: number;
|
||||
name: string;
|
||||
imageUrl: string;
|
||||
imageUrlHighRes: string;
|
||||
subType: ISubType;
|
||||
superType: ISuperType;
|
||||
ability: IAbility;
|
||||
hp: number;
|
||||
number: number;
|
||||
artist: string;
|
||||
rarity: string;
|
||||
series: string;
|
||||
set: ISet;
|
||||
setCode: string;
|
||||
retreatCost: string;
|
||||
text: string;
|
||||
types: IType[];
|
||||
attacks: IAttack[];
|
||||
weaknesses: string[];
|
||||
resistances: string[];
|
||||
nationalPokedexNumber: number;
|
||||
ancientTrait: string;
|
||||
convertedRetreatCost: number;
|
||||
evolvesFrom: string;
|
||||
hp: string;
|
||||
id: string;
|
||||
imageUrl: string;
|
||||
imageUrlHiRes: string;
|
||||
name: string;
|
||||
nationalPokedexNumber: number;
|
||||
number: string;
|
||||
rarity: string;
|
||||
resistances: IResistance[];
|
||||
retreatCost: string[];
|
||||
series: string;
|
||||
set: string;
|
||||
setCode: string;
|
||||
subtype: string;
|
||||
supertype: string;
|
||||
text: string[];
|
||||
types: string[];
|
||||
weaknesses: IWeakness[];
|
||||
```
|
||||
|
||||
### IAbility
|
||||
|
||||
```typescript
|
||||
name: string;
|
||||
text: string;
|
||||
type: string;
|
||||
```
|
||||
|
||||
### IAttack
|
||||
|
||||
```typescript
|
||||
cost: string[];
|
||||
name: string;
|
||||
text: string;
|
||||
damage: string;
|
||||
convertedEnergyCost: string;
|
||||
```
|
||||
|
||||
### IResistance, IWeakness
|
||||
|
||||
```typescript
|
||||
type: string;
|
||||
value: string;
|
||||
```
|
||||
|
||||
### Set
|
||||
|
||||
```typescript
|
||||
code: string;
|
||||
name: string;
|
||||
series: string;
|
||||
totalCards: number;
|
||||
standardLegal: boolean;
|
||||
expandedLegal: boolean;
|
||||
releaseDate: string;
|
||||
symbolUrl: string;
|
||||
logoUrl: string;
|
||||
name: string;
|
||||
ptcgoCode: string;
|
||||
```
|
||||
|
||||
### Type, SubType, SuperType
|
||||
|
||||
```typescript
|
||||
type: string;
|
||||
releaseDate: string;
|
||||
series: string;
|
||||
standardLegal: boolean;
|
||||
symbolUrl: string;
|
||||
totalCards: number;
|
||||
updatedAt: string;
|
||||
```
|
||||
|
||||
### IQuery
|
||||
@ -75,9 +100,9 @@ Set.find(id: string): Promise<Set>
|
||||
Set.where(params: IQuery[]): Promise<Set[]>
|
||||
Set.all(): Promise<Set[]>
|
||||
|
||||
Type.all(): Promise<Type[]>
|
||||
SuperType.all(): Promise<SuperType[]>
|
||||
SubType.all(): Promise<SubType[]>
|
||||
Meta.allTypes(): Promise<string[]>
|
||||
Meta.allSubtypes(): Promise<string[]>
|
||||
Meta.allSupertypes(): Promise<string[]>
|
||||
```
|
||||
|
||||
## Usage
|
||||
@ -116,10 +141,15 @@ PokemonTCG.Card.all()
|
||||
## Contributing
|
||||
* Fork it (click the Fork button at the top of the page)
|
||||
* Create your feature branch (git checkout -b my-new-feature)
|
||||
* Make some changes and fix some bugs!
|
||||
* Run the tests `npm run-script test`
|
||||
* Test your changes in a project of yours:
|
||||
* Create a link with (npm)[https://docs.npmjs.com/cli/link.html] or (yarn)[https://yarnpkg.com/lang/en/docs/cli/link/] (depending on what tool you installed this SDK with)
|
||||
* In your project that **uses** the SDK, install the linked package with `yarn/npm link pokemon-tcg-sdk-typescript`
|
||||
* Verify the SDK behaves as expected, and your changes took effect
|
||||
* Commit your changes (git commit -am 'Add some feature')
|
||||
* Push to the branch (git push origin my-new-feature)
|
||||
* Create a new Pull Request
|
||||
|
||||
## TODO
|
||||
* Add more testing?
|
||||
* Update package name for easier use?
|
||||
@ -1,28 +0,0 @@
|
||||
0 info it worked if it ends with ok
|
||||
1 verbose cli [ '/usr/bin/node', '/usr/bin/npm', 'version', 'patch' ]
|
||||
2 info using npm@3.5.2
|
||||
3 info using node@v6.11.4
|
||||
4 info git [ 'status', '--porcelain' ]
|
||||
5 verbose stack Error: Git working directory not clean.
|
||||
5 verbose stack M README.md
|
||||
5 verbose stack M src/index.ts
|
||||
5 verbose stack at /usr/share/npm/lib/version.js:172:21
|
||||
5 verbose stack at ChildProcess.exithandler (child_process.js:189:7)
|
||||
5 verbose stack at emitTwo (events.js:106:13)
|
||||
5 verbose stack at ChildProcess.emit (events.js:191:7)
|
||||
5 verbose stack at maybeClose (internal/child_process.js:920:16)
|
||||
5 verbose stack at Socket.<anonymous> (internal/child_process.js:351:11)
|
||||
5 verbose stack at emitOne (events.js:96:13)
|
||||
5 verbose stack at Socket.emit (events.js:188:7)
|
||||
5 verbose stack at Pipe._handle.close [as _onclose] (net.js:497:12)
|
||||
6 verbose cwd /home/bradyn/Projects/pokemon-tcg-sdk-typescript
|
||||
7 error Linux 4.13.0-21-generic
|
||||
8 error argv "/usr/bin/node" "/usr/bin/npm" "version" "patch"
|
||||
9 error node v6.11.4
|
||||
10 error npm v3.5.2
|
||||
11 error Git working directory not clean.
|
||||
11 error M README.md
|
||||
11 error M src/index.ts
|
||||
12 error If you need help, you may report this error at:
|
||||
12 error <https://github.com/npm/npm/issues>
|
||||
13 verbose exit [ 1, true ]
|
||||
14
package-lock.json
generated
14
package-lock.json
generated
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "pokemon-tcg-sdk-typescript",
|
||||
"version": "1.0.3",
|
||||
"version": "1.2.2",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
@ -50,9 +50,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"axios": {
|
||||
"version": "0.18.1",
|
||||
"resolved": "https://registry.npmjs.org/axios/-/axios-0.18.1.tgz",
|
||||
"integrity": "sha512-0BfJq4NSfQXd+SkFdrvFbG7addhYSBA2mQwISr46pD6E5iqkWg02RAs8vyTT/j0RTnoYmeXauBuSv1qKwR179g==",
|
||||
"version": "0.19.0",
|
||||
"resolved": "https://registry.npmjs.org/axios/-/axios-0.19.0.tgz",
|
||||
"integrity": "sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ==",
|
||||
"requires": {
|
||||
"follow-redirects": "1.5.10",
|
||||
"is-buffer": "^2.0.2"
|
||||
@ -343,9 +343,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"source-map-support": {
|
||||
"version": "0.5.13",
|
||||
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz",
|
||||
"integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==",
|
||||
"version": "0.5.12",
|
||||
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz",
|
||||
"integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"buffer-from": "^1.0.0",
|
||||
|
||||
17
package.json
17
package.json
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "pokemon-tcg-sdk-typescript",
|
||||
"version": "1.0.3",
|
||||
"version": "1.2.2",
|
||||
"description": "Typescript SDK for the PokemonTCG API (https://pokemontcg.io)",
|
||||
"main": "dist/index.js",
|
||||
"types": "dist/index.d.ts",
|
||||
@ -11,12 +11,21 @@
|
||||
"SDK"
|
||||
],
|
||||
"scripts": {
|
||||
"test": "mocha --reporter spec --require ts-node/register 'src/**/*.test.ts'"
|
||||
"test": "mocha --reporter spec --require ts-node/register 'src/**/*.test.ts'",
|
||||
"build": "tsc"
|
||||
},
|
||||
"author": "Bradyn Glines",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/PokemonTCG/pokemon-tcg-sdk-typescript"
|
||||
},
|
||||
"contributors": [
|
||||
"Bradyn Glines (https://github.com/glinesbdev)",
|
||||
"CptSpaceToaster (https://github.com/CptSpaceToaster)",
|
||||
"Monbrey (https://github.com/Monbrey)"
|
||||
],
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"axios": "^0.18.1",
|
||||
"axios": "^0.19.0",
|
||||
"typescript": "^2.6.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
@ -1,9 +0,0 @@
|
||||
import { IAbility } from '../interfaces/ability';
|
||||
|
||||
export class Ability implements IAbility {
|
||||
name: string;
|
||||
text: string;
|
||||
type: string;
|
||||
|
||||
constructor() {}
|
||||
}
|
||||
@ -1,8 +0,0 @@
|
||||
import { IAncientAbility } from '../interfaces/ancientAbility';
|
||||
|
||||
export class AncientAbility implements IAncientAbility {
|
||||
name: string;
|
||||
text: string;
|
||||
|
||||
constructor() {}
|
||||
}
|
||||
@ -1,11 +0,0 @@
|
||||
import { IAttack } from '../interfaces/attack';
|
||||
|
||||
export class Attack implements IAttack {
|
||||
cost: string;
|
||||
name: string;
|
||||
text: string;
|
||||
damage: string;
|
||||
convertedEnergyCost: string;
|
||||
|
||||
constructor() {}
|
||||
}
|
||||
@ -1,40 +1,36 @@
|
||||
import { ICard } from '../interfaces/card';
|
||||
import { ISubType } from '../interfaces/subType';
|
||||
import { ISuperType } from '../interfaces/superType';
|
||||
import { IAbility } from '../interfaces/ability';
|
||||
import { ISet } from '../interfaces/set';
|
||||
import { IType } from '../interfaces/type';
|
||||
import { IAttack } from '../interfaces/attack';
|
||||
import { QueryBuilder } from '../queryBuilder';
|
||||
import { ICard } from '../interfaces/card';
|
||||
import { IQuery } from '../interfaces/query';
|
||||
import { IResistance } from '../interfaces/resistance';
|
||||
import { IWeakness } from '../interfaces/weakness';
|
||||
import { QueryBuilder } from '../queryBuilder';
|
||||
|
||||
export class Card implements ICard {
|
||||
id: number;
|
||||
name: string;
|
||||
imageUrl: string;
|
||||
imageUrlHighRes: string;
|
||||
subType: ISubType;
|
||||
superType: ISuperType;
|
||||
ability: IAbility;
|
||||
hp: number;
|
||||
number: number;
|
||||
artist: string;
|
||||
rarity: string;
|
||||
series: string;
|
||||
set: ISet;
|
||||
setCode: string;
|
||||
retreatCost: string;
|
||||
text: string;
|
||||
types: IType[];
|
||||
attacks: IAttack[];
|
||||
weaknesses: string[];
|
||||
resistances: string[];
|
||||
nationalPokedexNumber: number;
|
||||
ancientTrait: string;
|
||||
convertedRetreatCost: number;
|
||||
evolvesFrom: string;
|
||||
hp: string;
|
||||
id: string;
|
||||
imageUrl: string;
|
||||
imageUrlHiRes: string;
|
||||
name: string;
|
||||
nationalPokedexNumber: number;
|
||||
number: string;
|
||||
rarity: string;
|
||||
resistances: IResistance[];
|
||||
retreatCost: string[];
|
||||
series: string;
|
||||
set: string;
|
||||
setCode: string;
|
||||
subtype: string;
|
||||
supertype: string;
|
||||
text: string[];
|
||||
types: string[];
|
||||
weaknesses: IWeakness[];
|
||||
|
||||
constructor() {}
|
||||
|
||||
resource(): string {
|
||||
return 'cards';
|
||||
}
|
||||
|
||||
15
src/classes/meta.ts
Normal file
15
src/classes/meta.ts
Normal file
@ -0,0 +1,15 @@
|
||||
import { Client } from '../client';
|
||||
|
||||
export class Meta {
|
||||
static allTypes(): Promise<string[]> {
|
||||
return Client.get('types');
|
||||
}
|
||||
|
||||
static allSubtypes(): Promise<string[]> {
|
||||
return Client.get('subtypes');
|
||||
}
|
||||
|
||||
static allSupertypes(): Promise<string[]> {
|
||||
return Client.get('supertypes');
|
||||
}
|
||||
}
|
||||
@ -1,19 +1,19 @@
|
||||
import { ISet } from '../interfaces/set';
|
||||
import { QueryBuilder } from '../queryBuilder';
|
||||
import { IQuery } from '../interfaces/query';
|
||||
import { QueryBuilder } from '../queryBuilder';
|
||||
|
||||
export class Set implements ISet {
|
||||
code: string;
|
||||
name: string;
|
||||
series: string;
|
||||
totalCards: number;
|
||||
standardLegal: boolean;
|
||||
expandedLegal: boolean;
|
||||
releaseDate: string;
|
||||
symbolUrl: string;
|
||||
logoUrl: string;
|
||||
name: string;
|
||||
ptcgoCode: string;
|
||||
|
||||
constructor() {}
|
||||
releaseDate: string;
|
||||
series: string;
|
||||
standardLegal: boolean;
|
||||
symbolUrl: string;
|
||||
totalCards: number;
|
||||
updatedAt: string;
|
||||
|
||||
resource(): string {
|
||||
return 'sets';
|
||||
@ -39,5 +39,4 @@ export class Set implements ISet {
|
||||
return response;
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,20 +0,0 @@
|
||||
import { ISubType } from '../interfaces/subType';
|
||||
import { QueryBuilder } from '../queryBuilder';
|
||||
|
||||
export class SubType implements ISubType {
|
||||
type: string;
|
||||
|
||||
constructor() {}
|
||||
|
||||
resource(): string {
|
||||
return 'subtypes';
|
||||
}
|
||||
|
||||
static all(): Promise<SubType[]> {
|
||||
return QueryBuilder.all(this)
|
||||
.then(response => {
|
||||
return response;
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,19 +0,0 @@
|
||||
import { ISuperType } from '../interfaces/superType';
|
||||
import { QueryBuilder } from '../queryBuilder';
|
||||
|
||||
export class SuperType implements ISuperType {
|
||||
type: string;
|
||||
|
||||
constructor () {}
|
||||
|
||||
resource(): string {
|
||||
return 'supertypes';
|
||||
}
|
||||
|
||||
static all(): Promise<SuperType[]> {
|
||||
return QueryBuilder.all(this)
|
||||
.then(response => {
|
||||
return response;
|
||||
});
|
||||
}
|
||||
}
|
||||
@ -1,19 +0,0 @@
|
||||
import { IType } from '../interfaces/type';
|
||||
import { QueryBuilder } from '../queryBuilder';
|
||||
|
||||
export class Type implements IType {
|
||||
type: string;
|
||||
|
||||
constructor() {}
|
||||
|
||||
resource(): string {
|
||||
return 'types';
|
||||
}
|
||||
|
||||
static all(): Promise<Type[]> {
|
||||
return QueryBuilder.all(this)
|
||||
.then(response => {
|
||||
return response;
|
||||
});
|
||||
}
|
||||
}
|
||||
@ -1,16 +1,11 @@
|
||||
import * as axios from 'axios';
|
||||
import { PokemonTCG } from './sdk';
|
||||
import { API_URL, API_VERSION } from './sdk';
|
||||
import { IQuery } from './interfaces/query';
|
||||
import { ICard } from './interfaces/card';
|
||||
import { IType } from './interfaces/type';
|
||||
import { ISuperType } from './interfaces/superType';
|
||||
import { ISubType } from './interfaces/subType';
|
||||
import { ISet } from './interfaces/set';
|
||||
|
||||
export class Client {
|
||||
static apiUrl: string = `${PokemonTCG.API_URL}/v${PokemonTCG.version}`;
|
||||
static apiUrl: string = `${API_URL}/v${API_VERSION}`;
|
||||
|
||||
static get(resource: string, params?: IQuery[]): Promise<any> {
|
||||
static get(resource: string, params?: IQuery[] | string): Promise<any> {
|
||||
let url: string = `${this.apiUrl}/${resource}`;
|
||||
let config: axios.AxiosRequestConfig = {
|
||||
headers: {
|
||||
@ -18,36 +13,21 @@ export class Client {
|
||||
}
|
||||
};
|
||||
|
||||
// This is needed because the /sets endpoint doesn't take
|
||||
// an id as a parameter so we need to append it to the url
|
||||
url += this.checkForId(resource, params);
|
||||
if(typeof params === 'string') url += `/${params}`;
|
||||
else url += `?${this.paramsToQuery(params)}`;
|
||||
|
||||
return axios.default.get<any>(`${url}?${this.paramsToQuery(params)}`, config)
|
||||
return axios.default.get<any>(url, config)
|
||||
.then(response => {
|
||||
return response.data[Object.keys(response.data)[0]];
|
||||
})
|
||||
}
|
||||
|
||||
private static checkForId(resource: string, params?: IQuery[]): string {
|
||||
let url: string = '';
|
||||
|
||||
if (params) {
|
||||
params.map(param => {
|
||||
if (resource === 'sets' && param.name === 'id') {
|
||||
url = `/${param.value}`;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
return url;
|
||||
}
|
||||
|
||||
private static paramsToQuery(params?: IQuery[]): string {
|
||||
let query: string = '';
|
||||
|
||||
if (params) {
|
||||
params.map((q: IQuery) => {
|
||||
query += `${q.name}=${encodeURI(q.value.toString())}`.concat('&');
|
||||
query += `${q.name}=${encodeURIComponent(q.value.toString())}`.concat('&');
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@ -50,8 +50,8 @@ describe('Client', () => {
|
||||
|
||||
Client.get('sets', params)
|
||||
.then(response => {
|
||||
expect(response).to.be.a('object');
|
||||
expect(response.name).to.equal('Base');
|
||||
expect(response).to.be.a('array');
|
||||
expect(response[0].name).to.equal('Base');
|
||||
})
|
||||
.catch(error => console.error(error));
|
||||
});
|
||||
|
||||
41
src/index.ts
41
src/index.ts
@ -1,39 +1,2 @@
|
||||
import { Card as BaseCard } from './classes/card';
|
||||
import { Ability as BaseAbility } from './classes/ability';
|
||||
import { AncientAbility as BaseAncientAbility } from './classes/ancientAbility';
|
||||
import { Attack as BaseAttack } from './classes/attack';
|
||||
import { Set as BaseSet } from './classes/set';
|
||||
import { SubType as BaseSubType } from './classes/subType';
|
||||
import { SuperType as BaseSuperType } from './classes/superType';
|
||||
import { Type as BaseType } from './classes/type';
|
||||
|
||||
export namespace PokemonTCG {
|
||||
export interface IQuery {
|
||||
name: string;
|
||||
value: string | number;
|
||||
}
|
||||
|
||||
export const Card = BaseCard;
|
||||
export type Card = BaseCard;
|
||||
|
||||
export const Ability = BaseAbility;
|
||||
export type Ability = BaseAbility;
|
||||
|
||||
export const AncientAbility = BaseAncientAbility;
|
||||
export type AncientAbility = BaseAncientAbility;
|
||||
|
||||
export const Attack = BaseAttack;
|
||||
export type Attack = BaseAttack;
|
||||
|
||||
export const Set = BaseSet;
|
||||
export type Set = BaseSet;
|
||||
|
||||
export const SubType = BaseSubType;
|
||||
export type SubType = BaseSubType;
|
||||
|
||||
export const SuperType = BaseSuperType;
|
||||
export type SuperType = BaseSuperType;
|
||||
|
||||
export const Type = BaseType;
|
||||
export type Type = BaseType;
|
||||
}
|
||||
import * as PokemonTCG from './sdk';
|
||||
export { PokemonTCG };
|
||||
|
||||
@ -1,4 +0,0 @@
|
||||
export interface IAncientAbility {
|
||||
name: string;
|
||||
text: string;
|
||||
}
|
||||
@ -1,7 +1,7 @@
|
||||
export interface IAttack {
|
||||
cost: string;
|
||||
convertedEnergyCost: string;
|
||||
cost: string[];
|
||||
damage: string;
|
||||
name: string;
|
||||
text: string;
|
||||
damage: string;
|
||||
convertedEnergyCost: string;
|
||||
}
|
||||
@ -1,32 +1,30 @@
|
||||
import { IAbility } from '../interfaces/ability';
|
||||
import { IAttack } from '../interfaces/attack';
|
||||
import { ISet } from '../interfaces/set';
|
||||
import { ISubType } from '../interfaces/subType';
|
||||
import { ISuperType } from '../interfaces/superType';
|
||||
import { IType } from '../interfaces/type';
|
||||
import { IResistance } from '../interfaces/resistance';
|
||||
import { IWeakness } from '../interfaces/weakness';
|
||||
|
||||
export interface ICard {
|
||||
id: number;
|
||||
name: string;
|
||||
imageUrl: string;
|
||||
imageUrlHighRes: string;
|
||||
subType: ISubType;
|
||||
superType: ISuperType;
|
||||
ability: IAbility;
|
||||
hp: number;
|
||||
number: number;
|
||||
artist: string;
|
||||
rarity: string;
|
||||
series: string;
|
||||
set: ISet;
|
||||
setCode: string;
|
||||
retreatCost: string;
|
||||
text: string;
|
||||
types: IType[];
|
||||
attacks: IAttack[];
|
||||
weaknesses: string[];
|
||||
resistances: string[];
|
||||
nationalPokedexNumber: number;
|
||||
ancientTrait: string;
|
||||
convertedRetreatCost: number;
|
||||
evolvesFrom: string;
|
||||
hp: string;
|
||||
id: string;
|
||||
imageUrl: string;
|
||||
imageUrlHiRes: string;
|
||||
name: string;
|
||||
nationalPokedexNumber: number;
|
||||
number: string;
|
||||
rarity: string;
|
||||
resistances: IResistance[];
|
||||
retreatCost: string[];
|
||||
series: string;
|
||||
set: string;
|
||||
setCode: string;
|
||||
subtype: string;
|
||||
supertype: string;
|
||||
text: string[];
|
||||
types: string[];
|
||||
weaknesses: IWeakness[];
|
||||
}
|
||||
4
src/interfaces/resistance.ts
Normal file
4
src/interfaces/resistance.ts
Normal file
@ -0,0 +1,4 @@
|
||||
export interface IResistance {
|
||||
type: string;
|
||||
value: string;
|
||||
}
|
||||
@ -1,11 +1,13 @@
|
||||
export interface ISet {
|
||||
code: string;
|
||||
name: string;
|
||||
series: string;
|
||||
totalCards: number;
|
||||
standardLegal: boolean;
|
||||
expandedLegal: boolean;
|
||||
releaseDate: string;
|
||||
symbolUrl: string;
|
||||
logoUrl: string;
|
||||
name: string;
|
||||
ptcgoCode: string;
|
||||
releaseDate: string;
|
||||
series: string;
|
||||
standardLegal: boolean;
|
||||
symbolUrl: string;
|
||||
totalCards: number;
|
||||
updatedAt: string;
|
||||
}
|
||||
@ -1,3 +0,0 @@
|
||||
export interface ISubType {
|
||||
type: string;
|
||||
}
|
||||
@ -1,3 +0,0 @@
|
||||
export interface ISuperType {
|
||||
type: string;
|
||||
}
|
||||
@ -1,3 +0,0 @@
|
||||
export interface IType {
|
||||
type: string;
|
||||
}
|
||||
4
src/interfaces/weakness.ts
Normal file
4
src/interfaces/weakness.ts
Normal file
@ -0,0 +1,4 @@
|
||||
export interface IWeakness {
|
||||
type: string;
|
||||
value: string;
|
||||
}
|
||||
@ -1,48 +1,28 @@
|
||||
import { Client } from './client';
|
||||
import { Card } from "./classes/card";
|
||||
import { Set } from "./classes/set";
|
||||
import { Type } from "./classes/type";
|
||||
import { SubType } from "./classes/subType";
|
||||
import { SuperType } from "./classes/superType";
|
||||
import { IQuery } from './interfaces/query';
|
||||
import { AxiosResponse } from 'axios';
|
||||
|
||||
export class QueryBuilder {
|
||||
static all<T extends Card | Set | Type | SuperType | SubType>(type: (new() => T)): Promise<T[]> {
|
||||
let t = new type();
|
||||
let params: IQuery[] = [{
|
||||
name: 'pageSize',
|
||||
value: 1000
|
||||
}];
|
||||
static all<T extends Card | Set>(type: (new () => T)): Promise<T[]> {
|
||||
let t = new type();
|
||||
let params: IQuery[] = [{
|
||||
name: 'pageSize',
|
||||
value: 1000
|
||||
}];
|
||||
|
||||
return this.returnResponse(t.resource(), params);
|
||||
}
|
||||
|
||||
static find<T extends Card | Set | Type | SuperType | SubType>(type: (new() => T), id: string): Promise<T> {
|
||||
let t = new type();
|
||||
let params: IQuery[] = [{
|
||||
name: 'id',
|
||||
value: id
|
||||
}];
|
||||
return Client.get(t.resource(), params).catch(error => console.error(error));
|
||||
}
|
||||
|
||||
return this.returnResponse(t.resource(), params, true);
|
||||
}
|
||||
static find<T extends Card | Set>(type: (new () => T), id: string): Promise<T> {
|
||||
let t = new type();
|
||||
|
||||
static where<T extends Card | Set | Type | SuperType | SubType>(type: (new() => T), params: IQuery[]): Promise<T[]> {
|
||||
let t = new type();
|
||||
|
||||
return this.returnResponse(t.resource(), params);
|
||||
}
|
||||
return Client.get(t.resource(), id).catch(error => console.error(error));
|
||||
}
|
||||
|
||||
private static returnResponse(resource: string, params: IQuery[], single?: boolean): Promise<any> {
|
||||
return Client.get(resource, params)
|
||||
.then(response => {
|
||||
if (single) {
|
||||
return response[0];
|
||||
}
|
||||
static where<T extends Card | Set>(type: (new () => T), params: IQuery[]): Promise<T[]> {
|
||||
let t = new type();
|
||||
|
||||
return response;
|
||||
})
|
||||
.catch(error => console.error(error));
|
||||
}
|
||||
return Client.get(t.resource(), params).catch(error => console.error(error));
|
||||
}
|
||||
}
|
||||
20
src/sdk.ts
20
src/sdk.ts
@ -1,4 +1,16 @@
|
||||
export namespace PokemonTCG {
|
||||
export const API_URL: string = 'https://api.pokemontcg.io';
|
||||
export const version: string = '1';
|
||||
}
|
||||
// Constants
|
||||
export const API_URL: string = 'https://api.pokemontcg.io';
|
||||
export const API_VERSION: string = '1';
|
||||
|
||||
// Classes
|
||||
export * from './classes/card';
|
||||
export * from './classes/set';
|
||||
export * from './classes/meta';
|
||||
|
||||
// Interfaces
|
||||
export * from './interfaces/ability';
|
||||
export * from './interfaces/attack';
|
||||
export * from './interfaces/card';
|
||||
export * from './interfaces/query';
|
||||
export * from './interfaces/resistance';
|
||||
export * from './interfaces/weakness';
|
||||
|
||||
315
yarn.lock
315
yarn.lock
@ -1,315 +0,0 @@
|
||||
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
|
||||
# yarn lockfile v1
|
||||
|
||||
|
||||
"@types/chai@^4.1.1":
|
||||
version "4.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.1.1.tgz#15f1257fab17b7acb9c413f9f88d3d87f834d11e"
|
||||
|
||||
"@types/mocha@^2.2.46":
|
||||
version "2.2.46"
|
||||
resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-2.2.46.tgz#b04713f7759d1cf752effdaae7b3969e285ebc16"
|
||||
|
||||
"@types/strip-bom@^3.0.0":
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@types/strip-bom/-/strip-bom-3.0.0.tgz#14a8ec3956c2e81edb7520790aecf21c290aebd2"
|
||||
|
||||
"@types/strip-json-comments@0.0.30":
|
||||
version "0.0.30"
|
||||
resolved "https://registry.yarnpkg.com/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz#9aa30c04db212a9a0649d6ae6fd50accc40748a1"
|
||||
|
||||
ansi-styles@^3.1.0:
|
||||
version "3.2.0"
|
||||
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88"
|
||||
dependencies:
|
||||
color-convert "^1.9.0"
|
||||
|
||||
arrify@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
|
||||
|
||||
assertion-error@^1.0.1:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b"
|
||||
|
||||
axios@^0.17.1:
|
||||
version "0.17.1"
|
||||
resolved "https://registry.yarnpkg.com/axios/-/axios-0.17.1.tgz#2d8e3e5d0bdbd7327f91bc814f5c57660f81824d"
|
||||
dependencies:
|
||||
follow-redirects "^1.2.5"
|
||||
is-buffer "^1.1.5"
|
||||
|
||||
balanced-match@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
|
||||
|
||||
brace-expansion@^1.1.7:
|
||||
version "1.1.8"
|
||||
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292"
|
||||
dependencies:
|
||||
balanced-match "^1.0.0"
|
||||
concat-map "0.0.1"
|
||||
|
||||
browser-stdout@1.3.0:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f"
|
||||
|
||||
chai@^4.1.2:
|
||||
version "4.1.2"
|
||||
resolved "https://registry.yarnpkg.com/chai/-/chai-4.1.2.tgz#0f64584ba642f0f2ace2806279f4f06ca23ad73c"
|
||||
dependencies:
|
||||
assertion-error "^1.0.1"
|
||||
check-error "^1.0.1"
|
||||
deep-eql "^3.0.0"
|
||||
get-func-name "^2.0.0"
|
||||
pathval "^1.0.0"
|
||||
type-detect "^4.0.0"
|
||||
|
||||
chalk@^2.3.0:
|
||||
version "2.3.0"
|
||||
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.0.tgz#b5ea48efc9c1793dccc9b4767c93914d3f2d52ba"
|
||||
dependencies:
|
||||
ansi-styles "^3.1.0"
|
||||
escape-string-regexp "^1.0.5"
|
||||
supports-color "^4.0.0"
|
||||
|
||||
check-error@^1.0.1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82"
|
||||
|
||||
color-convert@^1.9.0:
|
||||
version "1.9.1"
|
||||
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed"
|
||||
dependencies:
|
||||
color-name "^1.1.1"
|
||||
|
||||
color-name@^1.1.1:
|
||||
version "1.1.3"
|
||||
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
|
||||
|
||||
commander@2.11.0:
|
||||
version "2.11.0"
|
||||
resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563"
|
||||
|
||||
concat-map@0.0.1:
|
||||
version "0.0.1"
|
||||
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
|
||||
|
||||
debug@3.1.0, debug@^3.1.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
|
||||
dependencies:
|
||||
ms "2.0.0"
|
||||
|
||||
deep-eql@^3.0.0:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df"
|
||||
dependencies:
|
||||
type-detect "^4.0.0"
|
||||
|
||||
diff@3.3.1:
|
||||
version "3.3.1"
|
||||
resolved "https://registry.yarnpkg.com/diff/-/diff-3.3.1.tgz#aa8567a6eed03c531fc89d3f711cd0e5259dec75"
|
||||
|
||||
diff@^3.1.0:
|
||||
version "3.4.0"
|
||||
resolved "https://registry.yarnpkg.com/diff/-/diff-3.4.0.tgz#b1d85507daf3964828de54b37d0d73ba67dda56c"
|
||||
|
||||
escape-string-regexp@1.0.5, escape-string-regexp@^1.0.5:
|
||||
version "1.0.5"
|
||||
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
|
||||
|
||||
follow-redirects@^1.2.5:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.3.0.tgz#f684871fc116d2e329fda55ef67687f4fabc905c"
|
||||
dependencies:
|
||||
debug "^3.1.0"
|
||||
|
||||
fs.realpath@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
|
||||
|
||||
get-func-name@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41"
|
||||
|
||||
glob@7.1.2:
|
||||
version "7.1.2"
|
||||
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15"
|
||||
dependencies:
|
||||
fs.realpath "^1.0.0"
|
||||
inflight "^1.0.4"
|
||||
inherits "2"
|
||||
minimatch "^3.0.4"
|
||||
once "^1.3.0"
|
||||
path-is-absolute "^1.0.0"
|
||||
|
||||
growl@1.10.3:
|
||||
version "1.10.3"
|
||||
resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.3.tgz#1926ba90cf3edfe2adb4927f5880bc22c66c790f"
|
||||
|
||||
has-flag@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51"
|
||||
|
||||
he@1.1.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd"
|
||||
|
||||
homedir-polyfill@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz#4c2bbc8a758998feebf5ed68580f76d46768b4bc"
|
||||
dependencies:
|
||||
parse-passwd "^1.0.0"
|
||||
|
||||
inflight@^1.0.4:
|
||||
version "1.0.6"
|
||||
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
|
||||
dependencies:
|
||||
once "^1.3.0"
|
||||
wrappy "1"
|
||||
|
||||
inherits@2:
|
||||
version "2.0.3"
|
||||
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
|
||||
|
||||
is-buffer@^1.1.5:
|
||||
version "1.1.6"
|
||||
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
|
||||
|
||||
make-error@^1.1.1:
|
||||
version "1.3.2"
|
||||
resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.2.tgz#8762ffad2444dd8ff1f7c819629fa28e24fea1c4"
|
||||
|
||||
minimatch@^3.0.4:
|
||||
version "3.0.4"
|
||||
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
|
||||
dependencies:
|
||||
brace-expansion "^1.1.7"
|
||||
|
||||
minimist@0.0.8:
|
||||
version "0.0.8"
|
||||
resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
|
||||
|
||||
minimist@^1.2.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
|
||||
|
||||
mkdirp@0.5.1, mkdirp@^0.5.1:
|
||||
version "0.5.1"
|
||||
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
|
||||
dependencies:
|
||||
minimist "0.0.8"
|
||||
|
||||
mocha@^5.0.0:
|
||||
version "5.0.0"
|
||||
resolved "https://registry.yarnpkg.com/mocha/-/mocha-5.0.0.tgz#cccac988b0bc5477119cba0e43de7af6d6ad8f4e"
|
||||
dependencies:
|
||||
browser-stdout "1.3.0"
|
||||
commander "2.11.0"
|
||||
debug "3.1.0"
|
||||
diff "3.3.1"
|
||||
escape-string-regexp "1.0.5"
|
||||
glob "7.1.2"
|
||||
growl "1.10.3"
|
||||
he "1.1.1"
|
||||
mkdirp "0.5.1"
|
||||
supports-color "4.4.0"
|
||||
|
||||
ms@2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
|
||||
|
||||
once@^1.3.0:
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
|
||||
dependencies:
|
||||
wrappy "1"
|
||||
|
||||
parse-passwd@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6"
|
||||
|
||||
path-is-absolute@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
|
||||
|
||||
pathval@^1.0.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0"
|
||||
|
||||
source-map-support@^0.5.0:
|
||||
version "0.5.2"
|
||||
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.2.tgz#1a6297fd5b2e762b39688c7fc91233b60984f0a5"
|
||||
dependencies:
|
||||
source-map "^0.6.0"
|
||||
|
||||
source-map@^0.6.0:
|
||||
version "0.6.1"
|
||||
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
|
||||
|
||||
strip-bom@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
|
||||
|
||||
strip-json-comments@^2.0.0:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
|
||||
|
||||
supports-color@4.4.0:
|
||||
version "4.4.0"
|
||||
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.4.0.tgz#883f7ddabc165142b2a61427f3352ded195d1a3e"
|
||||
dependencies:
|
||||
has-flag "^2.0.0"
|
||||
|
||||
supports-color@^4.0.0:
|
||||
version "4.5.0"
|
||||
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b"
|
||||
dependencies:
|
||||
has-flag "^2.0.0"
|
||||
|
||||
ts-node@^4.1.0:
|
||||
version "4.1.0"
|
||||
resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-4.1.0.tgz#36d9529c7b90bb993306c408cd07f7743de20712"
|
||||
dependencies:
|
||||
arrify "^1.0.0"
|
||||
chalk "^2.3.0"
|
||||
diff "^3.1.0"
|
||||
make-error "^1.1.1"
|
||||
minimist "^1.2.0"
|
||||
mkdirp "^0.5.1"
|
||||
source-map-support "^0.5.0"
|
||||
tsconfig "^7.0.0"
|
||||
v8flags "^3.0.0"
|
||||
yn "^2.0.0"
|
||||
|
||||
tsconfig@^7.0.0:
|
||||
version "7.0.0"
|
||||
resolved "https://registry.yarnpkg.com/tsconfig/-/tsconfig-7.0.0.tgz#84538875a4dc216e5c4a5432b3a4dec3d54e91b7"
|
||||
dependencies:
|
||||
"@types/strip-bom" "^3.0.0"
|
||||
"@types/strip-json-comments" "0.0.30"
|
||||
strip-bom "^3.0.0"
|
||||
strip-json-comments "^2.0.0"
|
||||
|
||||
type-detect@^4.0.0:
|
||||
version "4.0.7"
|
||||
resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.7.tgz#862bd2cf6058ad92799ff5a5b8cf7b6cec726198"
|
||||
|
||||
typescript@^2.6.2:
|
||||
version "2.6.2"
|
||||
resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.6.2.tgz#3c5b6fd7f6de0914269027f03c0946758f7673a4"
|
||||
|
||||
v8flags@^3.0.0:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-3.0.1.tgz#dce8fc379c17d9f2c9e9ed78d89ce00052b1b76b"
|
||||
dependencies:
|
||||
homedir-polyfill "^1.0.1"
|
||||
|
||||
wrappy@1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
|
||||
|
||||
yn@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/yn/-/yn-2.0.0.tgz#e5adabc8acf408f6385fc76495684c88e6af689a"
|
||||
Reference in New Issue
Block a user