show pokemon list
This commit is contained in:
parent
6dca121ffb
commit
8fe5c4b559
@ -2,9 +2,7 @@ import * as fs from 'fs';
|
|||||||
import Pokemon from 'pokemongo-json-pokedex/output/pokemon.json';
|
import Pokemon from 'pokemongo-json-pokedex/output/pokemon.json';
|
||||||
import { ILeaguePokemon, IPokemon, IStats, League, Grade } from 'app/models/Pokemon';
|
import { ILeaguePokemon, IPokemon, IStats, League, Grade } from 'app/models/Pokemon';
|
||||||
|
|
||||||
interface ICpAndTotalFound {
|
type ICpAndTotalFound = Record<number, Array<IStats>>;
|
||||||
[ key : number ] : Array<IStats>;
|
|
||||||
}
|
|
||||||
interface IStatsDistribution {
|
interface IStatsDistribution {
|
||||||
great : ICpAndTotalFound;
|
great : ICpAndTotalFound;
|
||||||
ultra : ICpAndTotalFound;
|
ultra : ICpAndTotalFound;
|
||||||
@ -33,8 +31,8 @@ const getClosestCpMultiplierIndex = (value : number) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const familyOrder : Array<string> = [];
|
const familyOrder : Array<string> = [];
|
||||||
const familyEvolutionOrder : { [ key : string ] : Array<string> } = {};
|
const familyEvolutionOrder : Record<string, Array<string>> = {};
|
||||||
const familyEncountered : { [ key : string ] : Array<ILeaguePokemon> } = {};
|
const familyEncountered : Record<string, Array<ILeaguePokemon>> = {};
|
||||||
Pokemon.forEach((mon) => {
|
Pokemon.forEach((mon) => {
|
||||||
const baseAtk = mon.stats.baseAttack;
|
const baseAtk = mon.stats.baseAttack;
|
||||||
const baseDef = mon.stats.baseDefense;
|
const baseDef = mon.stats.baseDefense;
|
||||||
|
|||||||
12
package.json
12
package.json
@ -2,12 +2,13 @@
|
|||||||
"license": "UNLICENSED",
|
"license": "UNLICENSED",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"#": "DO NOT ADD '-d' OPTION TO WEBPACK OR ALL SOURCEMAPS WILL BREAK: https://webpack.js.org/api/cli/#shortcuts",
|
"#": "DO NOT ADD '-d' OPTION TO WEBPACK OR ALL SOURCEMAPS WILL BREAK: https://webpack.js.org/api/cli/#shortcuts",
|
||||||
|
"lint": "tslint --project tslint.json",
|
||||||
"package": "yarn build -- --config webpack.config.prod.js --bail --display-used-exports -p",
|
"package": "yarn build -- --config webpack.config.prod.js --bail --display-used-exports -p",
|
||||||
"package-for-test": "yarn build -- --config webpack.config.test.js --bail --display-used-exports",
|
"package-for-test": "yarn build -- --config webpack.config.test.js --bail --display-used-exports",
|
||||||
"watch": "yarn build -- --config webpack.config.js --colors --debug --output-pathinfo --progress --watch",
|
"watch": "yarn build -- --config webpack.config.js --colors --debug --output-pathinfo --progress --watch",
|
||||||
"build": "node ./node_modules/webpack/bin/webpack.js --cache=true --display-error-details --profile",
|
"build": "node ./node_modules/webpack/bin/webpack.js --cache=true --display-error-details --profile",
|
||||||
"clean": "rm -rf ./dist/*",
|
"clean": "rm -rf ./dist/*",
|
||||||
"tsnode": "./node_modules/.bin/ts-node"
|
"tsnode": "./node_modules/.bin/ts-node -r tsconfig-paths/register"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/core": "^7.2.2",
|
"@babel/core": "^7.2.2",
|
||||||
@ -21,6 +22,7 @@
|
|||||||
"@types/node": "^10.12.18",
|
"@types/node": "^10.12.18",
|
||||||
"@types/react": "^16.7.18",
|
"@types/react": "^16.7.18",
|
||||||
"@types/react-dom": "^16.0.11",
|
"@types/react-dom": "^16.0.11",
|
||||||
|
"@types/react-redux": "^6.0.12",
|
||||||
"babel-loader": "^8.0.4",
|
"babel-loader": "^8.0.4",
|
||||||
"babel-plugin-transform-builtin-extend": "^1.1.2",
|
"babel-plugin-transform-builtin-extend": "^1.1.2",
|
||||||
"css-loader": "^2.1.0",
|
"css-loader": "^2.1.0",
|
||||||
@ -40,6 +42,7 @@
|
|||||||
"stylelint-webpack-plugin": "^0.10.5",
|
"stylelint-webpack-plugin": "^0.10.5",
|
||||||
"ts-loader": "^5.3.2",
|
"ts-loader": "^5.3.2",
|
||||||
"ts-node": "^7.0.1",
|
"ts-node": "^7.0.1",
|
||||||
|
"tsconfig-paths": "^3.7.0",
|
||||||
"tslint": "^5.12.0",
|
"tslint": "^5.12.0",
|
||||||
"tslint-eslint-rules": "^5.4.0",
|
"tslint-eslint-rules": "^5.4.0",
|
||||||
"tslint-loader": "^3.5.4",
|
"tslint-loader": "^3.5.4",
|
||||||
@ -52,7 +55,12 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"pokemongo-json-pokedex": "^3.4.6",
|
"pokemongo-json-pokedex": "^3.4.6",
|
||||||
|
"prop-types": "^15.6.2",
|
||||||
"react": "^16.7.0",
|
"react": "^16.7.0",
|
||||||
"react-dom": "^16.7.0"
|
"react-dom": "^16.7.0",
|
||||||
|
"react-redux": "^6.0.0",
|
||||||
|
"redux": "^4.0.1",
|
||||||
|
"redux-thunk": "^2.3.0",
|
||||||
|
"typesafe-actions": "^3.0.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -12,7 +12,7 @@ export class PokemonService implements IPokemonService {
|
|||||||
is_active: true,
|
is_active: true,
|
||||||
};
|
};
|
||||||
|
|
||||||
return AjaxUtils.ajaxGet('/api/billing/plan', queryParameters)
|
return AjaxUtils.ajaxGet('/dist/db/order.json', queryParameters)
|
||||||
.then((response : Array<IPokemonJSON>) => {
|
.then((response : Array<IPokemonJSON>) => {
|
||||||
return Promise.resolve(this.serializePokemonList(response));
|
return Promise.resolve(this.serializePokemonList(response));
|
||||||
});
|
});
|
||||||
@ -22,23 +22,24 @@ export class PokemonService implements IPokemonService {
|
|||||||
const pokemonList = jsonPokemonList.reduce((result : Array<IPokemon>, pokemonJson) => {
|
const pokemonList = jsonPokemonList.reduce((result : Array<IPokemon>, pokemonJson) => {
|
||||||
try {
|
try {
|
||||||
if (typeof pokemonJson.name !== 'string') {
|
if (typeof pokemonJson.name !== 'string') {
|
||||||
throw 'pokemon missing name';
|
throw new Error('pokemon missing name');
|
||||||
}
|
}
|
||||||
if (typeof pokemonJson.id !== 'string') {
|
if (typeof pokemonJson.id !== 'string') {
|
||||||
throw 'pokemon missing id';
|
throw new Error('pokemon missing id');
|
||||||
}
|
}
|
||||||
if (typeof pokemonJson.family !== 'string') {
|
if (typeof pokemonJson.family !== 'string') {
|
||||||
throw 'pokemon missing family';
|
throw new Error('pokemon missing family');
|
||||||
}
|
}
|
||||||
if (typeof pokemonJson.dex !== 'number') {
|
if (typeof pokemonJson.dex !== 'number') {
|
||||||
throw 'pokemon missing dex';
|
throw new Error('pokemon missing dex');
|
||||||
}
|
}
|
||||||
if (typeof pokemonJson.stats !== 'object') {
|
if (typeof pokemonJson.stats !== 'object') {
|
||||||
throw 'pokemon missing stats';
|
throw new Error('pokemon missing stats');
|
||||||
}
|
}
|
||||||
const pokemon : IPokemon = { ...pokemonJson };
|
const pokemon : IPokemon = { ...pokemonJson };
|
||||||
result.push(pokemon);
|
result.push(pokemon);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
/* tslint:disable-next-line:no-console */
|
||||||
console.error(pokemonJson, e.message);
|
console.error(pokemonJson, e.message);
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
|
|||||||
42
src/ts/app/PokemonApp.tsx
Normal file
42
src/ts/app/PokemonApp.tsx
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
import * as React from 'react';
|
||||||
|
import { connect } from 'react-redux';
|
||||||
|
import { Dispatch } from 'redux';
|
||||||
|
|
||||||
|
import { appReducers } from './index';
|
||||||
|
|
||||||
|
import * as ActionsPokemonSelectList from './PokemonSelectList/actions';
|
||||||
|
import { IPokemonSelectListState, ThunkDispatchPokemonSelectList } from './PokemonSelectList/types';
|
||||||
|
|
||||||
|
import { PokemonSelectList } from './PokemonSelectList/PokemonSelectList';
|
||||||
|
|
||||||
|
interface IPokemonAppProps {
|
||||||
|
pokemonSelectListState : IPokemonSelectListState;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface IConnectedPokemonAppProps extends IPokemonAppProps {
|
||||||
|
dispatch : ThunkDispatchPokemonSelectList;
|
||||||
|
}
|
||||||
|
|
||||||
|
class PokemonApp extends React.Component<IConnectedPokemonAppProps> {
|
||||||
|
constructor(props : IConnectedPokemonAppProps) {
|
||||||
|
super(props);
|
||||||
|
}
|
||||||
|
|
||||||
|
public componentWillMount() {
|
||||||
|
this.props.dispatch(ActionsPokemonSelectList.fetchPokemonList());
|
||||||
|
}
|
||||||
|
|
||||||
|
public render() {
|
||||||
|
return (
|
||||||
|
<PokemonSelectList pokemonList={ this.props.pokemonSelectListState.pokemonList } />
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const mapStateToProps = (state : ReturnType<typeof appReducers>) : IPokemonAppProps => {
|
||||||
|
return {
|
||||||
|
pokemonSelectListState: state.pokemonSelectListState,
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
export const ConnectedPokemonApp = connect(mapStateToProps)(PokemonApp);
|
||||||
17
src/ts/app/PokemonSelectList/PokemonSelectList.tsx
Normal file
17
src/ts/app/PokemonSelectList/PokemonSelectList.tsx
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
import * as React from 'react';
|
||||||
|
|
||||||
|
import { IPokemon } from 'app/models/Pokemon';
|
||||||
|
|
||||||
|
export interface IPokemonSelectListProps {
|
||||||
|
pokemonList : Array<IPokemon>;
|
||||||
|
}
|
||||||
|
|
||||||
|
export class PokemonSelectList extends React.Component<IPokemonSelectListProps, object> {
|
||||||
|
public render() {
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
{ this.props.pokemonList.map((pokemon, index) => <div key={ index }>{ pokemon.name }</div>) }
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
20
src/ts/app/PokemonSelectList/actions.ts
Normal file
20
src/ts/app/PokemonSelectList/actions.ts
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
import { action } from 'typesafe-actions';
|
||||||
|
|
||||||
|
import { IPokemon } from 'app/models/Pokemon';
|
||||||
|
|
||||||
|
import { PokemonSelectListActionTypes, ThunkResult } from './types';
|
||||||
|
|
||||||
|
export const setPokemonList = (pokemonList : Array<IPokemon>) => action(PokemonSelectListActionTypes.SET_POKEMON_LIST, { pokemonList });
|
||||||
|
|
||||||
|
export const fetchPokemonList = (
|
||||||
|
) : ThunkResult<Promise<void>> => {
|
||||||
|
return (dispatch, getState, extraArguments) => {
|
||||||
|
return new Promise<void>((resolve, reject) => {
|
||||||
|
extraArguments.services.pokemonService.getPokemonList()
|
||||||
|
.then((pokemonList) => {
|
||||||
|
dispatch(setPokemonList(pokemonList));
|
||||||
|
resolve();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
};
|
||||||
29
src/ts/app/PokemonSelectList/reducers.ts
Normal file
29
src/ts/app/PokemonSelectList/reducers.ts
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
import { Reducer } from 'redux';
|
||||||
|
|
||||||
|
import * as Actions from './actions';
|
||||||
|
import { IPokemonSelectListState, PokemonSelectListActionTypes } from './types';
|
||||||
|
|
||||||
|
export const initialState : IPokemonSelectListState = {
|
||||||
|
pokemonList: [],
|
||||||
|
pokemonListFiltered: [],
|
||||||
|
};
|
||||||
|
|
||||||
|
const reduceSetPokemonList = (
|
||||||
|
state : IPokemonSelectListState,
|
||||||
|
action : ReturnType<typeof Actions.setPokemonList>
|
||||||
|
) : IPokemonSelectListState => ({
|
||||||
|
...state,
|
||||||
|
pokemonList: action.payload.pokemonList,
|
||||||
|
});
|
||||||
|
|
||||||
|
export const PokemonSelectListReducers : Reducer<IPokemonSelectListState> = (
|
||||||
|
state : IPokemonSelectListState = initialState,
|
||||||
|
action,
|
||||||
|
) : IPokemonSelectListState => {
|
||||||
|
switch (action.type) {
|
||||||
|
case PokemonSelectListActionTypes.SET_POKEMON_LIST:
|
||||||
|
return reduceSetPokemonList(state, action as ReturnType<typeof Actions.setPokemonList>);
|
||||||
|
default:
|
||||||
|
return state;
|
||||||
|
}
|
||||||
|
};
|
||||||
32
src/ts/app/PokemonSelectList/types.ts
Normal file
32
src/ts/app/PokemonSelectList/types.ts
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
import { Action } from 'redux';
|
||||||
|
import { ThunkAction, ThunkDispatch } from 'redux-thunk';
|
||||||
|
|
||||||
|
import { IProviderExtraArguments } from 'common/models/IProviderExtraArguments';
|
||||||
|
|
||||||
|
import { PokemonService } from 'api/PokemonService';
|
||||||
|
|
||||||
|
import { IPokemon } from 'app/models/Pokemon';
|
||||||
|
|
||||||
|
export interface IPokemonSelectListState {
|
||||||
|
pokemonList : Array<IPokemon>;
|
||||||
|
pokemonListFiltered : Array<IPokemon>;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface IPokemonSelectListStore {
|
||||||
|
pokemonSelectListState : IPokemonSelectListState;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface IPokemonSelectListServices {
|
||||||
|
pokemonService : PokemonService;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface IPokemonSelectListExtraArguments extends IProviderExtraArguments {
|
||||||
|
services : IPokemonSelectListServices;
|
||||||
|
}
|
||||||
|
|
||||||
|
export type ThunkResult<R> = ThunkAction<R, IPokemonSelectListStore, IPokemonSelectListExtraArguments, Action>;
|
||||||
|
export type ThunkDispatchPokemonSelectList = ThunkDispatch<IPokemonSelectListStore, IPokemonSelectListExtraArguments, Action>;
|
||||||
|
|
||||||
|
export const PokemonSelectListActionTypes = {
|
||||||
|
SET_POKEMON_LIST: 'POKEMON_SELECT_LIST/SET_POKEMON_LIST',
|
||||||
|
};
|
||||||
@ -1,23 +0,0 @@
|
|||||||
import * as React from 'react';
|
|
||||||
|
|
||||||
import { PokemonService } from 'api/PokemonService';
|
|
||||||
|
|
||||||
export interface IPokemonSelectListProps {}
|
|
||||||
|
|
||||||
export class PokemonSelectList extends React.Component<IPokemonSelectListProps, object> {
|
|
||||||
|
|
||||||
constructor(props : IPokemonSelectListProps) {
|
|
||||||
super(props);
|
|
||||||
}
|
|
||||||
|
|
||||||
public componentWillMount() {
|
|
||||||
// TODO: switch to redux
|
|
||||||
// PokemonService
|
|
||||||
}
|
|
||||||
|
|
||||||
public render() {
|
|
||||||
return (
|
|
||||||
<div>Pokemon List</div>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,11 +1,61 @@
|
|||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
import * as ReactDOM from 'react-dom';
|
import * as ReactDOM from 'react-dom';
|
||||||
|
import { Provider } from 'react-redux';
|
||||||
|
import * as Redux from 'redux';
|
||||||
|
import thunk from 'redux-thunk';
|
||||||
|
|
||||||
import { PokemonSelectList } from './components/PokemonSelectList/PokemonSelectList';
|
import { IProviderExtraArguments } from 'common/models/IProviderExtraArguments';
|
||||||
|
|
||||||
|
import { IPokemonSelectListExtraArguments } from 'app/PokemonSelectList/types';
|
||||||
|
|
||||||
|
import { PokemonService } from 'api/PokemonService';
|
||||||
|
|
||||||
|
import { PokemonSelectListReducers } from './PokemonSelectList/reducers';
|
||||||
|
|
||||||
|
import { ConnectedPokemonApp } from './PokemonApp';
|
||||||
|
|
||||||
import 'styles/index.scss';
|
import 'styles/index.scss';
|
||||||
|
|
||||||
|
export const appReducers = Redux.combineReducers({
|
||||||
|
pokemonSelectListState : PokemonSelectListReducers
|
||||||
|
});
|
||||||
|
|
||||||
|
const extraArguments : IPokemonSelectListExtraArguments = {
|
||||||
|
services: {
|
||||||
|
pokemonService: new PokemonService()
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const store = Redux.createStore(
|
||||||
|
appReducers,
|
||||||
|
// enableBatching(appReducers),
|
||||||
|
Redux.applyMiddleware(
|
||||||
|
thunk.withExtraArgument(extraArguments)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
ReactDOM.render(
|
ReactDOM.render(
|
||||||
<PokemonSelectList />,
|
<Provider store={ store }>
|
||||||
|
<ConnectedPokemonApp />
|
||||||
|
</Provider>,
|
||||||
document.getElementById('pokemon-mount')
|
document.getElementById('pokemon-mount')
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// const BATCH_ACTION_TYPE = '_BATCHING_REDUCER_BATCH_ACTION_';
|
||||||
|
|
||||||
|
// // TODO Allow this to also take ThunkAction<any, any, any>
|
||||||
|
// export function batchActions(actions : Array<Redux.Action>) : Redux.Action {
|
||||||
|
// return action(BATCH_ACTION_TYPE, actions);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// // This is called in the Provider on all Reducers
|
||||||
|
// export function enableBatching(reducer : Redux.Reducer<any>) {
|
||||||
|
// return function batchingReducer(state : any, action : Redux.Action) {
|
||||||
|
// if (action && (action.type === BATCH_ACTION_TYPE)) {
|
||||||
|
// const payload = (action as Redux.Action).payload;
|
||||||
|
// return payload.reduce(batchingReducer, state);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// return reducer(state, action);
|
||||||
|
// };
|
||||||
|
// }
|
||||||
|
|||||||
3
src/ts/common/models/IProviderExtraArguments.ts
Normal file
3
src/ts/common/models/IProviderExtraArguments.ts
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
export interface IProviderExtraArguments {
|
||||||
|
services : object;
|
||||||
|
}
|
||||||
@ -16,6 +16,7 @@
|
|||||||
"paths": {
|
"paths": {
|
||||||
"api/*": ["src/ts/api/*"],
|
"api/*": ["src/ts/api/*"],
|
||||||
"app/*": ["src/ts/app/*"],
|
"app/*": ["src/ts/app/*"],
|
||||||
|
"common/*": ["src/ts/common/*"],
|
||||||
"styles/*": ["src/scss/*"]
|
"styles/*": ["src/scss/*"]
|
||||||
},
|
},
|
||||||
"plugins": [{
|
"plugins": [{
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"extends": ["tslint:latest", "tslint-react", "tslint-eslint-rules"],
|
"extends": ["tslint:latest", "tslint-react", "tslint-eslint-rules"],
|
||||||
"rules": {
|
"rules": {
|
||||||
"no-implicit-dependencies": [true, ["styles", "app", "api"]],
|
"no-implicit-dependencies": [true, ["api", "app", "common", "styles"]],
|
||||||
"no-default-export": true,
|
"no-default-export": true,
|
||||||
"no-unused-expression": true,
|
"no-unused-expression": true,
|
||||||
"no-unused-variable": [true, "react"],
|
"no-unused-variable": [true, "react"],
|
||||||
|
|||||||
@ -11,6 +11,7 @@ const typescriptResolve = {
|
|||||||
// keep in sync with tsconfig.json `paths` and tslint.json `no-implicit-dependencies`
|
// keep in sync with tsconfig.json `paths` and tslint.json `no-implicit-dependencies`
|
||||||
'api': path.resolve('./src/ts/api'),
|
'api': path.resolve('./src/ts/api'),
|
||||||
'app': path.resolve('./src/ts/app'),
|
'app': path.resolve('./src/ts/app'),
|
||||||
|
'common': path.resolve('./src/ts/common'),
|
||||||
'styles': path.resolve('./src/scss'),
|
'styles': path.resolve('./src/scss'),
|
||||||
},
|
},
|
||||||
extensions: ['.ts', '.tsx', '.js'],
|
extensions: ['.ts', '.tsx', '.js'],
|
||||||
@ -50,6 +51,7 @@ module.exports = function (env, tsLoaderHappyPackMode) {
|
|||||||
},
|
},
|
||||||
resolve: typescriptResolve,
|
resolve: typescriptResolve,
|
||||||
devtool: 'source-map',
|
devtool: 'source-map',
|
||||||
|
mode: 'development',
|
||||||
plugins: plugins,
|
plugins: plugins,
|
||||||
module: {
|
module: {
|
||||||
rules: [
|
rules: [
|
||||||
|
|||||||
@ -7,6 +7,7 @@ const StyleLintPlugin = require('stylelint-webpack-plugin');
|
|||||||
module.exports = function(env) {
|
module.exports = function(env) {
|
||||||
var generatedConfig = config(env, false);
|
var generatedConfig = config(env, false);
|
||||||
|
|
||||||
|
generatedConfig.mode = 'production';
|
||||||
generatedConfig.plugins = [
|
generatedConfig.plugins = [
|
||||||
new webpack.LoaderOptionsPlugin({
|
new webpack.LoaderOptionsPlugin({
|
||||||
minimize: true
|
minimize: true
|
||||||
|
|||||||
87
yarn.lock
87
yarn.lock
@ -673,6 +673,13 @@
|
|||||||
"@babel/helper-plugin-utils" "^7.0.0"
|
"@babel/helper-plugin-utils" "^7.0.0"
|
||||||
"@babel/plugin-transform-typescript" "^7.1.0"
|
"@babel/plugin-transform-typescript" "^7.1.0"
|
||||||
|
|
||||||
|
"@babel/runtime@^7.2.0":
|
||||||
|
version "7.2.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.2.0.tgz#b03e42eeddf5898e00646e4c840fa07ba8dcad7f"
|
||||||
|
integrity sha512-oouEibCbHMVdZSDlJBO6bZmID/zA/G/Qx3H1d3rSNPTD+L8UNKvCat7aKWSJ74zYbm5zWGh0GQN0hKj8zYFTCg==
|
||||||
|
dependencies:
|
||||||
|
regenerator-runtime "^0.12.0"
|
||||||
|
|
||||||
"@babel/template@^7.1.0", "@babel/template@^7.1.2", "@babel/template@^7.2.2":
|
"@babel/template@^7.1.0", "@babel/template@^7.1.2", "@babel/template@^7.2.2":
|
||||||
version "7.2.2"
|
version "7.2.2"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.2.2.tgz#005b3fdf0ed96e88041330379e0da9a708eb2907"
|
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.2.2.tgz#005b3fdf0ed96e88041330379e0da9a708eb2907"
|
||||||
@ -719,6 +726,11 @@
|
|||||||
resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b"
|
resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b"
|
||||||
integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==
|
integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==
|
||||||
|
|
||||||
|
"@types/json5@^0.0.29":
|
||||||
|
version "0.0.29"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee"
|
||||||
|
integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4=
|
||||||
|
|
||||||
"@types/node@^10.12.18":
|
"@types/node@^10.12.18":
|
||||||
version "10.12.18"
|
version "10.12.18"
|
||||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-10.12.18.tgz#1d3ca764718915584fcd9f6344621b7672665c67"
|
resolved "https://registry.yarnpkg.com/@types/node/-/node-10.12.18.tgz#1d3ca764718915584fcd9f6344621b7672665c67"
|
||||||
@ -736,6 +748,14 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
"@types/react" "*"
|
"@types/react" "*"
|
||||||
|
|
||||||
|
"@types/react-redux@^6.0.12":
|
||||||
|
version "6.0.12"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/react-redux/-/react-redux-6.0.12.tgz#f3e9a400b8d40db43ffd8949ce14db4aa17a53ce"
|
||||||
|
integrity sha512-fvcpm7cfW/JMflRdZgegCVbSGYt/hyEWQKriesaLZDRDjBGKQsAiui08VCQg5lBpocPmulVGKFhICtOAcMUPOQ==
|
||||||
|
dependencies:
|
||||||
|
"@types/react" "*"
|
||||||
|
redux "^4.0.0"
|
||||||
|
|
||||||
"@types/react@*", "@types/react@^16.7.18":
|
"@types/react@*", "@types/react@^16.7.18":
|
||||||
version "16.7.18"
|
version "16.7.18"
|
||||||
resolved "https://registry.yarnpkg.com/@types/react/-/react-16.7.18.tgz#f4ce0d539a893dd61e36cd11ae3a5e54f5a48337"
|
resolved "https://registry.yarnpkg.com/@types/react/-/react-16.7.18.tgz#f4ce0d539a893dd61e36cd11ae3a5e54f5a48337"
|
||||||
@ -1964,6 +1984,11 @@ deep-extend@^0.6.0:
|
|||||||
resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
|
resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
|
||||||
integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==
|
integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==
|
||||||
|
|
||||||
|
deepmerge@^2.0.1:
|
||||||
|
version "2.2.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-2.2.1.tgz#5d3ff22a01c00f645405a2fbc17d0778a1801170"
|
||||||
|
integrity sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==
|
||||||
|
|
||||||
define-properties@^1.1.2:
|
define-properties@^1.1.2:
|
||||||
version "1.1.3"
|
version "1.1.3"
|
||||||
resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
|
resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
|
||||||
@ -2813,6 +2838,13 @@ hmac-drbg@^1.0.0:
|
|||||||
minimalistic-assert "^1.0.0"
|
minimalistic-assert "^1.0.0"
|
||||||
minimalistic-crypto-utils "^1.0.1"
|
minimalistic-crypto-utils "^1.0.1"
|
||||||
|
|
||||||
|
hoist-non-react-statics@^3.2.1:
|
||||||
|
version "3.2.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.2.1.tgz#c09c0555c84b38a7ede6912b61efddafd6e75e1e"
|
||||||
|
integrity sha512-TFsu3TV3YLY+zFTZDrN8L2DTFanObwmBLpWvJs1qfUuEQ5bTAdFcwfx2T/bsCXfM9QHSLvjfP+nihEl0yvozxw==
|
||||||
|
dependencies:
|
||||||
|
react-is "^16.3.2"
|
||||||
|
|
||||||
homedir-polyfill@^1.0.1:
|
homedir-polyfill@^1.0.1:
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz#4c2bbc8a758998feebf5ed68580f76d46768b4bc"
|
resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz#4c2bbc8a758998feebf5ed68580f76d46768b4bc"
|
||||||
@ -2981,7 +3013,7 @@ interpret@^1.1.0:
|
|||||||
resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296"
|
resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296"
|
||||||
integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==
|
integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==
|
||||||
|
|
||||||
invariant@^2.2.2:
|
invariant@^2.2.2, invariant@^2.2.4:
|
||||||
version "2.2.4"
|
version "2.2.4"
|
||||||
resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6"
|
resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6"
|
||||||
integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==
|
integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==
|
||||||
@ -3487,7 +3519,7 @@ longest-streak@^2.0.1:
|
|||||||
resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-2.0.2.tgz#2421b6ba939a443bb9ffebf596585a50b4c38e2e"
|
resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-2.0.2.tgz#2421b6ba939a443bb9ffebf596585a50b4c38e2e"
|
||||||
integrity sha512-TmYTeEYxiAmSVdpbnQDXGtvYOIRsCMg89CVZzwzc2o7GFL1CjoiRPjH5ec0NFAVlAx3fVof9dX/t6KKRAo2OWA==
|
integrity sha512-TmYTeEYxiAmSVdpbnQDXGtvYOIRsCMg89CVZzwzc2o7GFL1CjoiRPjH5ec0NFAVlAx3fVof9dX/t6KKRAo2OWA==
|
||||||
|
|
||||||
loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.3.1:
|
loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.3.1, loose-envify@^1.4.0:
|
||||||
version "1.4.0"
|
version "1.4.0"
|
||||||
resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
|
resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
|
||||||
integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
|
integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
|
||||||
@ -4686,6 +4718,23 @@ react-dom@^16.7.0:
|
|||||||
prop-types "^15.6.2"
|
prop-types "^15.6.2"
|
||||||
scheduler "^0.12.0"
|
scheduler "^0.12.0"
|
||||||
|
|
||||||
|
react-is@^16.3.2, react-is@^16.6.3:
|
||||||
|
version "16.7.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.7.0.tgz#c1bd21c64f1f1364c6f70695ec02d69392f41bfa"
|
||||||
|
integrity sha512-Z0VRQdF4NPDoI0tsXVMLkJLiwEBa+RP66g0xDHxgxysxSoCUccSten4RTF/UFvZF1dZvZ9Zu1sx+MDXwcOR34g==
|
||||||
|
|
||||||
|
react-redux@^6.0.0:
|
||||||
|
version "6.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-6.0.0.tgz#09e86eeed5febb98e9442458ad2970c8f1a173ef"
|
||||||
|
integrity sha512-EmbC3uLl60pw2VqSSkj6HpZ6jTk12RMrwXMBdYtM6niq0MdEaRq9KYCwpJflkOZj349BLGQm1MI/JO1W96kLWQ==
|
||||||
|
dependencies:
|
||||||
|
"@babel/runtime" "^7.2.0"
|
||||||
|
hoist-non-react-statics "^3.2.1"
|
||||||
|
invariant "^2.2.4"
|
||||||
|
loose-envify "^1.4.0"
|
||||||
|
prop-types "^15.6.2"
|
||||||
|
react-is "^16.6.3"
|
||||||
|
|
||||||
react@^16.7.0:
|
react@^16.7.0:
|
||||||
version "16.7.0"
|
version "16.7.0"
|
||||||
resolved "https://registry.yarnpkg.com/react/-/react-16.7.0.tgz#b674ec396b0a5715873b350446f7ea0802ab6381"
|
resolved "https://registry.yarnpkg.com/react/-/react-16.7.0.tgz#b674ec396b0a5715873b350446f7ea0802ab6381"
|
||||||
@ -4777,6 +4826,19 @@ redent@^2.0.0:
|
|||||||
indent-string "^3.0.0"
|
indent-string "^3.0.0"
|
||||||
strip-indent "^2.0.0"
|
strip-indent "^2.0.0"
|
||||||
|
|
||||||
|
redux-thunk@^2.3.0:
|
||||||
|
version "2.3.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.3.0.tgz#51c2c19a185ed5187aaa9a2d08b666d0d6467622"
|
||||||
|
integrity sha512-km6dclyFnmcvxhAcrQV2AkZmPQjzPDjgVlQtR0EQjxZPyJ0BnMf3in1ryuR8A2qU0HldVRfxYXbFSKlI3N7Slw==
|
||||||
|
|
||||||
|
redux@^4.0.0, redux@^4.0.1:
|
||||||
|
version "4.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/redux/-/redux-4.0.1.tgz#436cae6cc40fbe4727689d7c8fae44808f1bfef5"
|
||||||
|
integrity sha512-R7bAtSkk7nY6O/OYMVR9RiBI+XghjF9rlbl5806HJbQph0LJVHZrU5oaO4q70eUKiqMRqm4y07KLTlMZ2BlVmg==
|
||||||
|
dependencies:
|
||||||
|
loose-envify "^1.4.0"
|
||||||
|
symbol-observable "^1.2.0"
|
||||||
|
|
||||||
regenerate-unicode-properties@^7.0.0:
|
regenerate-unicode-properties@^7.0.0:
|
||||||
version "7.0.0"
|
version "7.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-7.0.0.tgz#107405afcc4a190ec5ed450ecaa00ed0cafa7a4c"
|
resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-7.0.0.tgz#107405afcc4a190ec5ed450ecaa00ed0cafa7a4c"
|
||||||
@ -5613,6 +5675,11 @@ svg-tags@^1.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/svg-tags/-/svg-tags-1.0.0.tgz#58f71cee3bd519b59d4b2a843b6c7de64ac04764"
|
resolved "https://registry.yarnpkg.com/svg-tags/-/svg-tags-1.0.0.tgz#58f71cee3bd519b59d4b2a843b6c7de64ac04764"
|
||||||
integrity sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=
|
integrity sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=
|
||||||
|
|
||||||
|
symbol-observable@^1.2.0:
|
||||||
|
version "1.2.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804"
|
||||||
|
integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==
|
||||||
|
|
||||||
table@^5.0.0:
|
table@^5.0.0:
|
||||||
version "5.1.1"
|
version "5.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/table/-/table-5.1.1.tgz#92030192f1b7b51b6eeab23ed416862e47b70837"
|
resolved "https://registry.yarnpkg.com/table/-/table-5.1.1.tgz#92030192f1b7b51b6eeab23ed416862e47b70837"
|
||||||
@ -5808,6 +5875,17 @@ ts-node@^7.0.1:
|
|||||||
source-map-support "^0.5.6"
|
source-map-support "^0.5.6"
|
||||||
yn "^2.0.0"
|
yn "^2.0.0"
|
||||||
|
|
||||||
|
tsconfig-paths@^3.7.0:
|
||||||
|
version "3.7.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.7.0.tgz#02ae978db447b22e09dafcd4198be95c4885ceb2"
|
||||||
|
integrity sha512-7iE+Q/2E1lgvxD+c0Ot+GFFmgmfIjt/zCayyruXkXQ84BLT85gHXy0WSoQSiuFX9+d+keE/jiON7notV74ZY+A==
|
||||||
|
dependencies:
|
||||||
|
"@types/json5" "^0.0.29"
|
||||||
|
deepmerge "^2.0.1"
|
||||||
|
json5 "^1.0.1"
|
||||||
|
minimist "^1.2.0"
|
||||||
|
strip-bom "^3.0.0"
|
||||||
|
|
||||||
tslib@1.9.0:
|
tslib@1.9.0:
|
||||||
version "1.9.0"
|
version "1.9.0"
|
||||||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.0.tgz#e37a86fda8cbbaf23a057f473c9f4dc64e5fc2e8"
|
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.0.tgz#e37a86fda8cbbaf23a057f473c9f4dc64e5fc2e8"
|
||||||
@ -5909,6 +5987,11 @@ typedarray@^0.0.6:
|
|||||||
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
|
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
|
||||||
integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
|
integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
|
||||||
|
|
||||||
|
typesafe-actions@^3.0.0:
|
||||||
|
version "3.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/typesafe-actions/-/typesafe-actions-3.0.0.tgz#8b162ea11fa7383d4b4d96afc181118e84e06e10"
|
||||||
|
integrity sha512-NLpRc/FY+jPfWL0aUXQzjxPyF0Xug2om6akaoRLQ18KGwP2yYNBJu9vkv2q1q+Cx/+edy2Qf6O8xXnYY/xwz1A==
|
||||||
|
|
||||||
typescript@^3.2.2:
|
typescript@^3.2.2:
|
||||||
version "3.2.2"
|
version "3.2.2"
|
||||||
resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.2.2.tgz#fe8101c46aa123f8353523ebdcf5730c2ae493e5"
|
resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.2.2.tgz#fe8101c46aa123f8353523ebdcf5730c2ae493e5"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user