1
0
mirror of https://github.com/mgerb/ps-launcher synced 2026-01-10 02:22:49 +00:00

6 Commits

Author SHA1 Message Date
4e4391eb4b update server list 2017-10-29 14:43:30 -05:00
447c8267ad 0.0.3 release 2017-10-29 14:11:01 -05:00
f39901ca70 poll github for new releases - closes #6 2017-10-29 14:01:24 -05:00
9806b8ebe6 add/update/delete servers 2017-10-29 13:04:59 -05:00
5db4b138e0 app icon 2017-10-26 21:27:14 -05:00
bfce7938e9 data persistence changes 2017-10-26 19:39:11 -05:00
35 changed files with 2532 additions and 166 deletions

View File

@@ -5,3 +5,5 @@ declare module JSX {
'webview': any;
}
}
declare const VERSION: any;

View File

@@ -1,9 +1,15 @@
# Work in progress
# PS Launcher
### Work in progress
## TODO
- Add modals for server editing
- Remove/edit servers in the list
- App icon
## Development Environment
- Clone project
- [Install yarn](https://yarnpkg.com/en/)
- `yarn install`
- `yarn run dev` - compile javascript
- `yarn start` - start electron app
## Prototype 4 10/29/2017 - Server Edit Modal
![alt text](https://github.com/mgerb/ps-launcher/blob/master/docs/images/prototype4.png?raw=true "Prototype 4")
## Prototype 3 10/25/2017
![alt text](https://github.com/mgerb/ps-launcher/blob/master/docs/images/prototype3.png?raw=true "Prototype 3")

View File

@@ -2,7 +2,7 @@ import React from 'react';
import ReactDOM from 'react-dom';
import { Provider } from 'mobx-react';
import AppState from './state/AppState';
import { Wrapper } from './Wrapper/Wrapper';
import { Wrapper } from './components';
import 'babel-polyfill';
// base styling

1419
app/assets/app-icon.ai Normal file

File diff suppressed because one or more lines are too long

BIN
app/assets/app-icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 141 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 409 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 606 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 784 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 353 KiB

View File

@@ -47,7 +47,29 @@
font-size: 30px;
}
.header__version {
color: $blue--lighter;
font-size: 12px;
.header__update {
color: darken($green, 5%);
&:hover {
color: $green;
}
.fa {
margin-right: 0;
}
}
.header__version {
span {
font-size: 12px;
position: relative;
bottom: 3px;
color: $blue--lighter;
}
img {
position: relative;
top: 3px;
margin-right: 3px;
}
}

View File

@@ -1,15 +1,14 @@
import { remote } from 'electron';
import { remote, shell } from 'electron';
import React from 'react';
import { observer, inject } from 'mobx-react';
import { AppState } from '../../state/AppState';
import headerIcon from '../../assets/icons/png/24x24.png';
import './Header.scss';
interface Props {
AppState?: AppState;
}
declare const VERSION: any;
@inject('AppState')
@observer
export class Header extends React.Component<Props, any> {
@@ -34,11 +33,30 @@ export class Header extends React.Component<Props, any> {
remote.getCurrentWindow().minimize();
}
private openReleases(): void {
shell.openExternal('https://github.com/mgerb/ps-launcher/releases');
}
private openBugReport(): void {
shell.openExternal('https://github.com/mgerb/ps-launcher/issues');
}
public render(): any {
const { updateAvailable } = this.props.AppState;
const updateClass = updateAvailable ? 'header__update' : '';
return (
<div className="header">
<div className="header__version"><span style={{ fontSize: '10px' }}>v{VERSION}</span></div>
<div className="header__version">
<img src={headerIcon}/>
<span style={{ fontSize: '10px' }}>{VERSION}</span>
</div>
<div className="header__draggable-region"></div>
<div className={'header-icon ' + updateClass} onClick={this.openReleases.bind(this)} title="Releases">
{updateAvailable && <span style={{ fontSize: '12px' }}>Update Available!</span>}
<i className="fa fa-lg fa-github"/>
</div>
<i className="fa fa-exclamation-triangle header-icon" onClick={this.openBugReport.bind(this)} title="Report a bug"/>
<div className="header-icon header-icon--minimize" onClick={this.minimize.bind(this)}/>
<div className="header-icon header-icon--maximize" onClick={this.maximize.bind(this)}/>
<div className="header-icon header-icon--close" onClick={() => this.exit()}>×</div>

View File

@@ -0,0 +1,50 @@
@import '../../scss/variables';
.CustomModal--hidden {
opacity: 0;
pointer-events: none;
}
.CustomModal__base {
position: fixed;
height: 100%;
width: 100%;
display: flex;
align-items: center;
justify-content: center;
top: 0;
left: 0;
transition: opacity 0.2s ease-in-out;
}
.CustomModal__content {
height: 400px;
width: 400px;
background: $dark-blue--1;
border-radius: 4px;
z-index: 200;
box-shadow: 0 3px 7px rgba(0, 0, 0, 0.2);
display: flex;
flex-direction: column;
}
.CustomModal__overlay {
position: fixed;
height: 100%;
width: 100%;
top: 0;
left: 0;
z-index: 100;
background: $dark-blue;
opacity: 0.8;
}
.CustomModal__header {
height: 50px;
display: flex;
align-items: center;
padding-left: 20px;
background: $dark-blue--2;
border-top-left-radius: 4px;
border-top-right-radius: 4px;
}

View File

@@ -0,0 +1,33 @@
import React from 'react';
import './Modal.scss';
interface Props {
isOpen: boolean;
title: string;
onClose?(): any;
}
export class Modal extends React.Component<Props, any> {
constructor(props: Props) {
super(props);
}
public render(): any {
const { isOpen, onClose, title } = this.props;
const hiddenClass = !isOpen ? 'CustomModal--hidden' : '';
return (
<div className={'CustomModal__base ' + hiddenClass}>
<div className="CustomModal__content">
<div className="CustomModal__header">
<h3>{title}</h3>
</div>
{this.props.children}
</div>
<div className="CustomModal__overlay" onClick={onClose.bind(this)} />
</div>
);
}
}

View File

@@ -4,7 +4,7 @@
display: flex;
flex-direction: column;
background: $dark-blue;
min-width: 200px;
width: 250px;
border-right: 1px solid $dark-blue--3;
.server-list-heading {
@@ -12,15 +12,6 @@
align-items: center;
justify-content: space-between;
padding: 10px;
.fa {
cursor: pointer;
color: $gray;
&:hover {
color: $gray--1;
}
}
}
.item-container {
@@ -31,20 +22,43 @@
.list-item {
cursor: pointer;
height: 50px;
line-height: 50px;
text-align: center;
display: flex;
align-items: center;
justify-content: space-between;
background: $dark-blue;
transition: all 0.2s linear;
border-right: 4px solid transparent;
border-left: 4px solid transparent;
padding: 0 10px;
&:hover, &.selected {
.edit-button {
opacity: 0;
}
&:hover {
.edit-button {
opacity: 1;
}
}
&:hover,
&.selected {
background: $dark-blue--1;
color: lighten($white, 10%);
border-left-color: $blue;
}
}
.edit-button {
cursor: pointer;
color: $gray;
&:hover {
color: $gray--1;
}
}
.start-button-container {
height: 100px;
padding: 10px;
@@ -59,6 +73,7 @@
cursor: pointer;
color: $white;
font-size: 30px;
transition: all 0.2s linear;
&:disabled {
opacity: 0.5;
@@ -70,4 +85,25 @@
}
}
.modal-content {
display: flex;
flex-direction: column;
padding: 20px;
flex: 1;
}
.button-group {
display: flex;
justify-content: space-between;
}
.delete-button {
align-self: center;
color: $red;
cursor: pointer;
&:hover {
color: lighten($red, 5%);
}
}
}

View File

@@ -2,8 +2,9 @@ import React from 'react';
import fs from 'fs';
import { exec } from 'child_process';
import { inject, observer } from 'mobx-react';
import { AppState } from '../../state/AppState';
import { AppState, ServerType } from '../../state/AppState';
import { toast } from '../../util';
import { Modal } from '../Modal/Modal';
import './ServerList.scss';
@@ -11,23 +12,34 @@ interface Props {
AppState?: AppState;
}
interface State {
showModal: boolean;
editModal: boolean;
editServerIndex: number;
modalTitle: string;
modalServerName: string;
modalRealmList: string;
modalWebsiteURL: string;
}
@inject('AppState')
@observer
export class ServerList extends React.Component<Props, any> {
export class ServerList extends React.Component<Props, State> {
constructor(props: Props) {
super(props);
this.state = this.defaultState;
}
private renderItems(): any {
const { AppState } = this.props;
return this.props.AppState.selectedExpansion.servers.map((server, index) => {
const selected = AppState.selectedExpansion.selectedServerIndex === index ? ' selected' : '';
return (
<div key={index} className={'list-item' + selected} onClick={() => AppState.setSelectedServerIndex(index)}>
{server.name}
</div>
);
});
private get defaultState(): State {
return {
showModal: false,
editModal: false,
editServerIndex: undefined,
modalTitle: '',
modalServerName: '',
modalRealmList: '',
modalWebsiteURL: '',
};
}
private async play(): Promise<void> {
@@ -72,14 +84,143 @@ export class ServerList extends React.Component<Props, any> {
});
}
private modalOnCancel(): void {
this.setState(this.defaultState);
}
private modalOnDelete(): void {
if (confirm('Are you sure you want to delete this server?')) {
this.props.AppState.deleteServer(this.state.editServerIndex);
this.setState(this.defaultState);
}
}
private modalOnSave(): void {
const { modalServerName, modalRealmList, modalWebsiteURL } = this.state;
if (modalServerName === '' || modalRealmList === '' || modalWebsiteURL === '') {
toast.error('All fields are required');
return;
}
const newServer: ServerType = {
name: modalServerName,
realmlist: modalRealmList,
website: modalWebsiteURL,
};
// edit server
if (this.state.editModal) {
this.props.AppState.editServer(this.state.editServerIndex, newServer);
toast.success('Saved');
this.setState(this.defaultState);
} else { // else add new server
if (!this.props.AppState.addServer(newServer)) {
toast.error('Server already exists');
} else {
toast.success('Saved');
this.setState(this.defaultState);
}
}
}
private addServerClick(): void {
this.setState({
showModal: true,
editModal: false,
modalTitle: 'New Server',
});
}
private editServerClick(serverIndex: number): void {
const server = this.props.AppState.selectedExpansion.servers[serverIndex];
this.setState({
showModal: true,
editModal: true,
editServerIndex: serverIndex,
modalTitle: server.name,
modalServerName: server.name,
modalRealmList: server.realmlist,
modalWebsiteURL: server.website,
});
}
private renderItems(): any {
const { AppState } = this.props;
return this.props.AppState.selectedExpansion.servers.map((server, index) => {
const selected = AppState.selectedExpansion.selectedServerIndex === index ? ' selected' : '';
return (
<div key={index} className={'list-item' + selected} onClick={() => AppState.setSelectedServerIndex(index, true)}>
<div className="ellipsis" title={server.name}>{server.name}</div>
<i className="fa fa-pencil-square-o edit-button" title="Edit" onClick={() => this.editServerClick(index)}/>
</div>
);
});
}
private renderModal(): any {
const { showModal, editModal, modalTitle, modalServerName, modalRealmList, modalWebsiteURL } = this.state;
return (
<Modal isOpen={showModal} onClose={this.modalOnCancel.bind(this)} title={modalTitle}>
<div className="modal-content">
<div style={{ flex: 1 }}>
<div className="form-group">
<label className="form-group__label">Server Name</label>
<input
className="input"
placeholder="Name"
value={modalServerName}
onChange={e => this.setState({ modalServerName: e.target.value })}
/>
</div>
<div className="form-group">
<label className="form-group__label">Realm List</label>
<input
className="input"
placeholder="logon.server.com"
value={modalRealmList}
onChange={e => this.setState({ modalRealmList: e.target.value })}
/>
</div>
<div className="form-group">
<label className="form-group__label">Website URL</label>
<input
className="input"
placeholder="https://www.server.com"
value={modalWebsiteURL}
onChange={e => this.setState({ modalWebsiteURL: e.target.value })}
/>
</div>
</div>
<div className="button-group">
<div style={{ display: 'flex' }}>
{editModal && <i className="fa fa-trash fa-lg delete-button" onClick={() => this.modalOnDelete()}/>}
</div>
<div>
<button className="button" onClick={this.modalOnCancel.bind(this)}>
Cancel
</button>
<button className="button button--success" onClick={this.modalOnSave.bind(this)}>
Save
</button>
</div>
</div>
</div>
</Modal>
);
}
public render(): any {
const { selectedServer } = this.props.AppState;
return (
<div className="server-list">
{this.renderModal()}
<div className="server-list-heading">
<div>Servers</div>
<i className="fa fa-plus" />
<i className="fa fa-plus edit-button" onClick={this.addServerClick.bind(this)} />
</div>
<div className="item-container">{this.renderItems()}</div>
<div className="start-button-container">

View File

@@ -1,4 +1,4 @@
@import '../scss/variables.scss';
@import '../../scss/variables.scss';
.wrapper {
display: flex;

View File

@@ -1,7 +1,7 @@
import React from 'react';
import { inject, observer } from 'mobx-react';
import { AppState } from '../state/AppState';
import { Content, Header, ServerList, SubHeader } from '../components';
import { AppState } from '../../state/AppState';
import { Content, Header, ServerList, SubHeader } from '../';
import './Wrapper.scss';

View File

@@ -2,3 +2,4 @@ export * from './Content/Content';
export * from './Header/Header';
export * from './ServerList/ServerList';
export * from './SubHeader/SubHeader';
export * from './Wrapper/Wrapper';

View File

@@ -31,22 +31,82 @@ a {
}
}
::-webkit-scrollbar-track
{
border-radius: 10px;
.error {
color: $red;
}
.ellipsis {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.input {
padding: 10px;
border: 0;
border-radius: 4px;
background: $dark-blue;
width: 100%;
color: $white;
border: 1px solid darken($dark-blue, 5%);
&::-webkit-input-placeholder {
color: $dark-blue--3;
}
}
.form-group {
& + & {
margin-top: 20px;
}
}
.form-group__label {
font-size: 12px;
line-height: 20px;
color: $gray;
padding-left: 5px;
}
.button {
border: 0;
padding: 10px;
border-radius: 4px;
background: darken($gray, 5%);
transition: all 0.2s linear;
color: $white;
cursor: pointer;
&:hover {
background: $gray;
}
& + & {
margin-left: 5px;
}
}
.button--success {
background: $blue;
&:hover {
background: $blue--lighter;
}
}
::-webkit-scrollbar-track {
border-radius: 10px;
background-color: none;
}
::-webkit-scrollbar
{
width: 5px;
height: 5px;
background-color: none;
border-radius: 10px;
::-webkit-scrollbar {
width: 5px;
height: 5px;
background-color: none;
border-radius: 10px;
}
::-webkit-scrollbar-thumb
{
border-radius: 10px;
background-color: darken($dark-blue, 5%);
::-webkit-scrollbar-thumb {
border-radius: 10px;
background-color: darken($dark-blue, 5%);
}

View File

@@ -3,6 +3,8 @@ import * as _ from 'lodash';
import { action, computed, observable, runInAction } from 'mobx';
import fs from 'fs';
import { persistentStateSeed } from './persistent-state-seed';
import { versioning } from '../util';
import 'babel-polyfill';
export interface ExpansionType {
name: string;
@@ -18,18 +20,20 @@ export interface ServerType {
}
export class AppState {
private appPath: string;
private persistentFilePath: string;
constructor() {
this.appPath = remote.app.getPath('appData') + '/' + remote.app.getName();
this.persistentFilePath = this.appPath + '/state.json';
this.bootstrap();
}
// read only app data
private readonly appPath: string = remote.app.getPath('appData') + '/' + remote.app.getName();
private readonly persistentFilePath: string = this.appPath + '/app-state.json';
private readonly appVersion: string = VERSION;
@observable public expansions: { [key: string]: ExpansionType };
@observable public isBootstrapped: boolean = false;
@observable public selectedExpKey: string = 'vanilla';
@observable public updateAvailable: boolean = false;
constructor() {
this.bootstrap();
}
@computed
public get selectedExpansion(): ExpansionType {
@@ -47,56 +51,137 @@ export class AppState {
return this.selectedExpansion.servers[index];
}
/**
* @param {number} index
* @param {boolean} [persist=true] flag whether to persist after setting server index
* @memberof AppState
*/
@action
public setSelectedServerIndex(index: number): void {
public setSelectedServerIndex(index: number, persist: boolean = false): void {
this.selectedExpansion.selectedServerIndex = index;
this.updateFile(this.expansions);
if (persist) {
this.persistState();
}
}
@action
public setSelectedExpansion(exp: string): void {
this.selectedExpKey = exp;
this.persistState();
}
@action
public setDirectory(dir: string): void {
this.selectedExpansion.directory = dir;
this.updateFile(this.expansions);
this.persistState();
}
/**
* @param {ServerType} server
* @returns {boolean} returns whether or not the server was added to the list
* @memberof AppState
*/
@action
public addServer(server: ServerType): boolean {
// bootstrap application
// creates directory and state.json in appData
// check if server already exists
if (_.some(this.selectedExpansion.servers, s => s.name === server.name)) {
return false;
}
// push server into list
const index = this.selectedExpansion.servers.push(server) - 1;
// setting selected server index persists state
this.setSelectedServerIndex(index);
this.persistState();
return true;
}
@action
public deleteServer(serverIndex: number): void {
if (this.selectedExpansion.selectedServerIndex === serverIndex) {
this.setSelectedServerIndex(0);
}
// remove server from list
this.selectedExpansion.servers.splice(serverIndex, 1);
this.persistState();
}
/**
* edit server info and persist state
* @param {number} serverIndex index of server in array
* @memberof AppState
*/
@action
public editServer(serverIndex: number, newServer: ServerType): void {
this.selectedExpansion.servers[serverIndex] = newServer;
this.persistState();
}
// bootstrap process for application
@action
private bootstrap(): void {
// start interval to check for updates
// 5 minutes
this.startVersionCheck();
setInterval(() => {
this.startVersionCheck();
}, 5 * 60000);
if (!fs.statSync(this.appPath).isDirectory()) {
fs.mkdirSync(this.appPath);
}
fs.stat(this.persistentFilePath, err => {
// create file if not exists
if (err) {
runInAction(() => {
fs.readFile(this.persistentFilePath, (err, data) => {
runInAction(() => {
// create file if not exists
if (err) {
this.expansions = persistentStateSeed();
this.isBootstrapped = true;
});
this.updateFile(this.expansions);
} else {
fs.readFile(this.persistentFilePath, (err, data) => {
if (!err) {
runInAction(() => {
this.expansions = JSON.parse(data.toString()) as any;
this.isBootstrapped = true;
});
}
});
}
this.persistState();
} else {
// TODO: future note - grab app version here and update
// any persisted state accordingly after app has been updated
const storedData = JSON.parse(data.toString()) as any;
this.expansions = storedData.expansions;
this.selectedExpKey = storedData.selectedExpKey;
this.isBootstrapped = true;
}
});
});
}
private updateFile(exp: any): Promise<void> {
private async startVersionCheck(): Promise<void> {
const update = await versioning.checkForUpdates();
if (update) {
runInAction(() => {
this.updateAvailable = update;
});
}
}
// save state of app to file in app data
private persistState(): Promise<void> {
// select what we want to persist
const { appVersion, expansions, selectedExpKey } = this;
// create new object of what we want to persist
const persistedState = {
appVersion,
expansions,
selectedExpKey,
};
// write our new object to a file
return new Promise((resolve, reject) => {
fs.writeFile(this.persistentFilePath, JSON.stringify(exp, null, 2), {}, err => {
fs.writeFile(this.persistentFilePath, JSON.stringify(persistedState, null, 2), {}, err => {
err ? reject(err) : resolve();
});
});

View File

@@ -11,13 +11,13 @@ export const persistentStateSeed = (): any => {
},
{
name: 'Elysium',
realmlist: '',
realmlist: 'logon.elysium-project.org',
website: 'https://www.elysium-project.org',
},
{
name: 'Kronos',
realmlist: 'login.kronos-wow.com',
website: 'https://www.kronos-wow.com?lang=en',
website: 'http://www.kronos-wow.com',
},
{
name: `Light's Hope`,
@@ -234,13 +234,58 @@ export const persistentStateSeed = (): any => {
},
cata: {
name: 'Cataclysm',
servers: [] as any,
directory: '',
selectedServerIndex: 0,
},
mop: {
name: 'Mists of Pandaria',
servers: [] as any,
servers: [
{
name: 'Atlantiss',
realmlist: 'play.atlantiss.eu',
website: 'https://atlantiss.eu/',
},
{
name: 'Eternal-WoW (Apocalypse',
realmlist: 'logon.eternal-wow.com',
website: 'http://eternal-wow.com/',
},
{
name: 'Firestorm (Deathwing)',
realmlist: 'cata.logon.firestorm-servers.com',
website: 'https://firestorm-servers.com/us/',
},
{
name: 'GPLP',
realmlist: '37.187.171.126',
website: 'http://guerrerosporlapaz.com/',
},
{
name: 'Monster WoW',
realmlist: 'logon.monster-wow.com',
website: 'https://monster-wow.com/',
},
{
name: 'Titans of WoW',
realmlist: 'wow.titansofwow.com',
website: 'https://www.titansofwow.com/',
},
{
name: 'TwinStar (Artemis)',
realmlist: 'wow.twinstar.cz',
website: 'http://www.twinstar.cz/?lang=en',
},
{
name: 'Warmane',
realmlist: 'logon.warmane.com',
website: 'https://www.warmane.com/',
},
{
name: 'WoW Circle',
realmlist: 'logon3.wowcircle.com',
website: 'http://wowcircle.com/en/',
},
{
name: 'WoWMortal (Destiny)',
realmlist: 'logon.wowmortal.com',
website: 'https://wowmortal.com/',
},
] as any,
directory: '',
selectedServerIndex: 0,
},

View File

@@ -1 +1,2 @@
export * from './toast/toast';
export * from './versioning/versioning';

View File

@@ -0,0 +1,28 @@
import axios from 'axios';
import * as _ from 'lodash';
class Versioning {
private readonly releaseEndPoint: string = 'https://api.github.com/repos/mgerb/ps-launcher/releases';
public async checkForUpdates(): Promise<boolean> {
const res = await axios.get(this.releaseEndPoint);
return !!_.find(res.data, (release: any) => {
return this.parseVersion(release.tag_name) > this.parseVersion(VERSION);
});
}
/**
* returns a number value for a version string matching '0.0.1'
* @param {string} version
* @returns {*}
* @memberof Versioning
*/
public parseVersion(version: string): number {
const parts = version.split('.');
return _.sumBy(parts, p => parseInt(p, 10));
}
}
export const versioning = new Versioning();

BIN
docs/images/prototype4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 233 KiB

View File

@@ -1,6 +1,7 @@
<html>
<head>
<meta charset="UTF-8" />
</head>
<body>

View File

@@ -13,7 +13,12 @@ let mainWindow;
function createWindow() {
// Create the browser window.
mainWindow = new BrowserWindow({ width: 1200, height: 800, frame: false });
mainWindow = new BrowserWindow({
width: 1200,
height: 800,
frame: false,
icon: path.join(__dirname, './app/assets/icons/png/64x64.png'),
});
// and load the index.html of the app.
mainWindow.loadURL(

View File

@@ -1,25 +1,29 @@
{
"name": "ps-launcher",
"version": "0.0.2",
"version": "0.0.3",
"description": "A seed for a simple react application with typescript.",
"main": "main.js",
"scripts": {
"build": "webpack -p --progress --colors",
"c9": "webpack-dev-server --host 0.0.0.0 --port 8080 --inline --history-api-fallback",
"dev": "webpack --watch --colors",
"dev:server": "webpack-dev-server --inline --history-api-fallback",
"start": "electron .",
"watch": "webpack --watch",
"generate-icons": "electron-icon-maker -i ./app/assets/app-icon.png -o ./app/assets",
"pack": "electron-builder --dir",
"dist": "electron-builder"
"dist": "npm run build && electron-builder"
},
"build": {
"appId": "ps-launcher",
"appId": "PS Launcher",
"productName": "PS Launcher",
"copyright": "Copyright © 2017 Mitchell Gerber",
"directories": {
"buildResources": "./app/assets/icons",
"output": "build"
},
"win": {
"target": "nsis"
"target": "nsis",
"icon": "./app/assets/icons/win/icon.ico"
},
"nsis": {
"oneClick": false,
@@ -31,49 +35,53 @@
"author": "Mitchell Gerber",
"license": "MIT",
"dependencies": {
"autoprefixer": "^7.1.5",
"babel-core": "^6.21.0",
"axios": "^0.17.0",
"babel-core": "^6.26.0",
"babel-loader": "^7.1.2",
"babel-plugin-add-module-exports": "^0.2.1",
"babel-polyfill": "^6.26.0",
"babel-preset-env": "^1.6.1",
"babel-preset-es2015": "^6.18.0",
"babel-preset-react": "^6.16.0",
"babel-preset-stage-0": "^6.16.0",
"clean-webpack-plugin": "^0.1.14",
"css-loader": "^0.28.7",
"electron-builder-squirrel-windows": "^19.39.0",
"extract-text-webpack-plugin": "3.0.1",
"file-loader": "^1.1.5",
"font-awesome": "^4.7.0",
"html-webpack-plugin": "^2.24.1",
"jquery": "^3.2.1",
"lodash": "^4.17.4",
"mobx": "^3.3.1",
"mobx-react": "^4.3.3",
"react": "^16.0.0",
"react-dom": "^16.0.0",
"toastr": "^2.1.2"
},
"devDependencies": {
"@types/electron": "^1.6.10",
"@types/lodash": "^4.14.77",
"@types/react": "^16.0.10",
"@types/react-dom": "^16.0.1",
"@types/react-modal": "^2.2.2",
"@types/react-router-dom": "^4.0.2",
"@types/toastr": "^2.1.35",
"autoprefixer": "^7.1.5",
"clean-webpack-plugin": "^0.1.14",
"css-loader": "^0.28.7",
"electron": "^1.7.9",
"electron-builder": "^19.37.2",
"electron-builder-squirrel-windows": "^19.39.0",
"electron-icon-maker": "^0.0.4",
"extract-text-webpack-plugin": "3.0.1",
"file-loader": "^1.1.5",
"html-webpack-plugin": "^2.24.1",
"node-sass": "^4.5.3",
"normalize.css": "^7.0.0",
"prettier": "^1.7.4",
"react": "^16.0.0",
"react-dom": "^16.0.0",
"sass-loader": "^6.0.6",
"style-loader": "^0.19.0",
"toastr": "^2.1.2",
"ts-loader": "^2.0.3",
"tslint": "^5.7.0",
"tslint-config-airbnb": "^5.3.0",
"typescript": "^2.2.2",
"url-loader": "^0.6.2",
"webpack": "3.7.1"
},
"devDependencies": {
"webpack-dev-server": "2.9.2",
"@types/electron": "^1.6.10",
"@types/lodash": "^4.14.77",
"@types/react": "^16.0.10",
"@types/react-dom": "^16.0.1",
"@types/react-router-dom": "^4.0.2",
"@types/toastr": "^2.1.35",
"electron": "^1.7.9",
"electron-builder": "^19.37.2"
"webpack": "3.7.1",
"webpack-dev-server": "2.9.2"
}
}

493
yarn.lock
View File

@@ -59,6 +59,12 @@
"@types/node" "*"
"@types/react" "*"
"@types/react-modal@^2.2.2":
version "2.2.2"
resolved "https://registry.yarnpkg.com/@types/react-modal/-/react-modal-2.2.2.tgz#651157522ba45c1ffd8831a2e7bbd8094390a925"
dependencies:
"@types/react" "*"
"@types/react-router-dom@^4.0.2":
version "4.0.8"
resolved "https://registry.yarnpkg.com/@types/react-router-dom/-/react-router-dom-4.0.8.tgz#a9731bf35d053cdd27053baacc19e505d74514f3"
@@ -233,6 +239,16 @@ argparse@^1.0.7:
dependencies:
sprintf-js "~1.0.2"
args@^2.3.0:
version "2.6.1"
resolved "https://registry.yarnpkg.com/args/-/args-2.6.1.tgz#b2590ed4168cd31b62444199bdc5166bb1920c2f"
dependencies:
camelcase "4.1.0"
chalk "1.1.3"
minimist "1.2.0"
pkginfo "0.4.0"
string-similarity "1.1.0"
arr-diff@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf"
@@ -276,6 +292,10 @@ array-unique@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53"
arrify@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
asap@~2.0.3:
version "2.0.6"
resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46"
@@ -373,6 +393,13 @@ aws4@^1.2.1, aws4@^1.6.0:
version "1.6.0"
resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e"
axios@^0.17.0:
version "0.17.0"
resolved "https://registry.yarnpkg.com/axios/-/axios-0.17.0.tgz#7da747916db803f761651d6091d708789b953c6a"
dependencies:
follow-redirects "^1.2.3"
is-buffer "^1.1.5"
babel-code-frame@^6.11.0, babel-code-frame@^6.26.0:
version "6.26.0"
resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b"
@@ -389,7 +416,7 @@ babel-code-frame@^6.22.0:
esutils "^2.0.2"
js-tokens "^3.0.0"
babel-core@^6.21.0, babel-core@^6.26.0:
babel-core@^6.26.0:
version "6.26.0"
resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.0.tgz#af32f78b31a6fcef119c87b0fd8d9753f03a0bb8"
dependencies:
@@ -640,7 +667,7 @@ babel-plugin-transform-async-generator-functions@^6.24.1:
babel-plugin-syntax-async-generators "^6.5.0"
babel-runtime "^6.22.0"
babel-plugin-transform-async-to-generator@^6.24.1:
babel-plugin-transform-async-to-generator@^6.22.0, babel-plugin-transform-async-to-generator@^6.24.1:
version "6.24.1"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761"
dependencies:
@@ -694,7 +721,7 @@ babel-plugin-transform-es2015-block-scoped-functions@^6.22.0:
dependencies:
babel-runtime "^6.22.0"
babel-plugin-transform-es2015-block-scoping@^6.24.1:
babel-plugin-transform-es2015-block-scoping@^6.23.0, babel-plugin-transform-es2015-block-scoping@^6.24.1:
version "6.26.0"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f"
dependencies:
@@ -704,7 +731,7 @@ babel-plugin-transform-es2015-block-scoping@^6.24.1:
babel-types "^6.26.0"
lodash "^4.17.4"
babel-plugin-transform-es2015-classes@^6.24.1:
babel-plugin-transform-es2015-classes@^6.23.0, babel-plugin-transform-es2015-classes@^6.24.1:
version "6.24.1"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db"
dependencies:
@@ -718,33 +745,33 @@ babel-plugin-transform-es2015-classes@^6.24.1:
babel-traverse "^6.24.1"
babel-types "^6.24.1"
babel-plugin-transform-es2015-computed-properties@^6.24.1:
babel-plugin-transform-es2015-computed-properties@^6.22.0, babel-plugin-transform-es2015-computed-properties@^6.24.1:
version "6.24.1"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3"
dependencies:
babel-runtime "^6.22.0"
babel-template "^6.24.1"
babel-plugin-transform-es2015-destructuring@^6.22.0:
babel-plugin-transform-es2015-destructuring@^6.22.0, babel-plugin-transform-es2015-destructuring@^6.23.0:
version "6.23.0"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d"
dependencies:
babel-runtime "^6.22.0"
babel-plugin-transform-es2015-duplicate-keys@^6.24.1:
babel-plugin-transform-es2015-duplicate-keys@^6.22.0, babel-plugin-transform-es2015-duplicate-keys@^6.24.1:
version "6.24.1"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e"
dependencies:
babel-runtime "^6.22.0"
babel-types "^6.24.1"
babel-plugin-transform-es2015-for-of@^6.22.0:
babel-plugin-transform-es2015-for-of@^6.22.0, babel-plugin-transform-es2015-for-of@^6.23.0:
version "6.23.0"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691"
dependencies:
babel-runtime "^6.22.0"
babel-plugin-transform-es2015-function-name@^6.24.1:
babel-plugin-transform-es2015-function-name@^6.22.0, babel-plugin-transform-es2015-function-name@^6.24.1:
version "6.24.1"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b"
dependencies:
@@ -758,7 +785,7 @@ babel-plugin-transform-es2015-literals@^6.22.0:
dependencies:
babel-runtime "^6.22.0"
babel-plugin-transform-es2015-modules-amd@^6.24.1:
babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.24.1:
version "6.24.1"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154"
dependencies:
@@ -766,7 +793,7 @@ babel-plugin-transform-es2015-modules-amd@^6.24.1:
babel-runtime "^6.22.0"
babel-template "^6.24.1"
babel-plugin-transform-es2015-modules-commonjs@^6.24.1:
babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1:
version "6.26.0"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz#0d8394029b7dc6abe1a97ef181e00758dd2e5d8a"
dependencies:
@@ -775,7 +802,7 @@ babel-plugin-transform-es2015-modules-commonjs@^6.24.1:
babel-template "^6.26.0"
babel-types "^6.26.0"
babel-plugin-transform-es2015-modules-systemjs@^6.24.1:
babel-plugin-transform-es2015-modules-systemjs@^6.23.0, babel-plugin-transform-es2015-modules-systemjs@^6.24.1:
version "6.24.1"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23"
dependencies:
@@ -783,7 +810,7 @@ babel-plugin-transform-es2015-modules-systemjs@^6.24.1:
babel-runtime "^6.22.0"
babel-template "^6.24.1"
babel-plugin-transform-es2015-modules-umd@^6.24.1:
babel-plugin-transform-es2015-modules-umd@^6.23.0, babel-plugin-transform-es2015-modules-umd@^6.24.1:
version "6.24.1"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468"
dependencies:
@@ -791,14 +818,14 @@ babel-plugin-transform-es2015-modules-umd@^6.24.1:
babel-runtime "^6.22.0"
babel-template "^6.24.1"
babel-plugin-transform-es2015-object-super@^6.24.1:
babel-plugin-transform-es2015-object-super@^6.22.0, babel-plugin-transform-es2015-object-super@^6.24.1:
version "6.24.1"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d"
dependencies:
babel-helper-replace-supers "^6.24.1"
babel-runtime "^6.22.0"
babel-plugin-transform-es2015-parameters@^6.24.1:
babel-plugin-transform-es2015-parameters@^6.23.0, babel-plugin-transform-es2015-parameters@^6.24.1:
version "6.24.1"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b"
dependencies:
@@ -809,7 +836,7 @@ babel-plugin-transform-es2015-parameters@^6.24.1:
babel-traverse "^6.24.1"
babel-types "^6.24.1"
babel-plugin-transform-es2015-shorthand-properties@^6.24.1:
babel-plugin-transform-es2015-shorthand-properties@^6.22.0, babel-plugin-transform-es2015-shorthand-properties@^6.24.1:
version "6.24.1"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0"
dependencies:
@@ -822,7 +849,7 @@ babel-plugin-transform-es2015-spread@^6.22.0:
dependencies:
babel-runtime "^6.22.0"
babel-plugin-transform-es2015-sticky-regex@^6.24.1:
babel-plugin-transform-es2015-sticky-regex@^6.22.0, babel-plugin-transform-es2015-sticky-regex@^6.24.1:
version "6.24.1"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc"
dependencies:
@@ -836,13 +863,13 @@ babel-plugin-transform-es2015-template-literals@^6.22.0:
dependencies:
babel-runtime "^6.22.0"
babel-plugin-transform-es2015-typeof-symbol@^6.22.0:
babel-plugin-transform-es2015-typeof-symbol@^6.22.0, babel-plugin-transform-es2015-typeof-symbol@^6.23.0:
version "6.23.0"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372"
dependencies:
babel-runtime "^6.22.0"
babel-plugin-transform-es2015-unicode-regex@^6.24.1:
babel-plugin-transform-es2015-unicode-regex@^6.22.0, babel-plugin-transform-es2015-unicode-regex@^6.24.1:
version "6.24.1"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9"
dependencies:
@@ -850,7 +877,7 @@ babel-plugin-transform-es2015-unicode-regex@^6.24.1:
babel-runtime "^6.22.0"
regexpu-core "^2.0.0"
babel-plugin-transform-exponentiation-operator@^6.24.1:
babel-plugin-transform-exponentiation-operator@^6.22.0, babel-plugin-transform-exponentiation-operator@^6.24.1:
version "6.24.1"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e"
dependencies:
@@ -914,7 +941,7 @@ babel-plugin-transform-react-jsx@^6.24.1:
babel-plugin-syntax-jsx "^6.8.0"
babel-runtime "^6.22.0"
babel-plugin-transform-regenerator@^6.24.1:
babel-plugin-transform-regenerator@^6.22.0, babel-plugin-transform-regenerator@^6.24.1:
version "6.26.0"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f"
dependencies:
@@ -935,6 +962,41 @@ babel-polyfill@^6.26.0:
core-js "^2.5.0"
regenerator-runtime "^0.10.5"
babel-preset-env@^1.6.1:
version "1.6.1"
resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.6.1.tgz#a18b564cc9b9afdf4aae57ae3c1b0d99188e6f48"
dependencies:
babel-plugin-check-es2015-constants "^6.22.0"
babel-plugin-syntax-trailing-function-commas "^6.22.0"
babel-plugin-transform-async-to-generator "^6.22.0"
babel-plugin-transform-es2015-arrow-functions "^6.22.0"
babel-plugin-transform-es2015-block-scoped-functions "^6.22.0"
babel-plugin-transform-es2015-block-scoping "^6.23.0"
babel-plugin-transform-es2015-classes "^6.23.0"
babel-plugin-transform-es2015-computed-properties "^6.22.0"
babel-plugin-transform-es2015-destructuring "^6.23.0"
babel-plugin-transform-es2015-duplicate-keys "^6.22.0"
babel-plugin-transform-es2015-for-of "^6.23.0"
babel-plugin-transform-es2015-function-name "^6.22.0"
babel-plugin-transform-es2015-literals "^6.22.0"
babel-plugin-transform-es2015-modules-amd "^6.22.0"
babel-plugin-transform-es2015-modules-commonjs "^6.23.0"
babel-plugin-transform-es2015-modules-systemjs "^6.23.0"
babel-plugin-transform-es2015-modules-umd "^6.23.0"
babel-plugin-transform-es2015-object-super "^6.22.0"
babel-plugin-transform-es2015-parameters "^6.23.0"
babel-plugin-transform-es2015-shorthand-properties "^6.22.0"
babel-plugin-transform-es2015-spread "^6.22.0"
babel-plugin-transform-es2015-sticky-regex "^6.22.0"
babel-plugin-transform-es2015-template-literals "^6.22.0"
babel-plugin-transform-es2015-typeof-symbol "^6.23.0"
babel-plugin-transform-es2015-unicode-regex "^6.22.0"
babel-plugin-transform-exponentiation-operator "^6.22.0"
babel-plugin-transform-regenerator "^6.22.0"
browserslist "^2.1.2"
invariant "^2.2.2"
semver "^5.3.0"
babel-preset-es2015@^6.18.0:
version "6.24.1"
resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz#d44050d6bc2c9feea702aaf38d727a0210538939"
@@ -1102,6 +1164,10 @@ big.js@^3.1.3:
version "3.2.0"
resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e"
bignumber.js@^2.1.0:
version "2.4.0"
resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-2.4.0.tgz#838a992da9f9d737e0f4b2db0be62bb09dd0c5e8"
binary-extensions@^1.0.0:
version "1.10.0"
resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.10.0.tgz#9aeb9a6c5e88638aad171e167f5900abe24835d0"
@@ -1132,6 +1198,10 @@ bluebird@^3.4.7, bluebird@^3.5.0, bluebird@^3.5.1:
version "3.5.1"
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9"
bmp-js@0.0.3:
version "0.0.3"
resolved "https://registry.yarnpkg.com/bmp-js/-/bmp-js-0.0.3.tgz#64113e9c7cf1202b376ed607bf30626ebe57b18a"
bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:
version "4.11.8"
resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f"
@@ -1281,7 +1351,7 @@ browserslist@^1.3.6, browserslist@^1.5.2, browserslist@^1.7.6:
caniuse-db "^1.0.30000639"
electron-to-chromium "^1.2.7"
browserslist@^2.5.0:
browserslist@^2.1.2, browserslist@^2.5.0:
version "2.5.1"
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.5.1.tgz#68e4bc536bbcc6086d62843a2ffccea8396821c6"
dependencies:
@@ -1292,6 +1362,10 @@ buffer-crc32@^0.2.1:
version "0.2.13"
resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242"
buffer-equal@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-0.0.1.tgz#91bc74b11ea405bc916bc6aa908faafa5b4aac4b"
buffer-indexof@^1.0.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c"
@@ -1394,6 +1468,10 @@ camelcase-keys@^2.0.0:
camelcase "^2.0.0"
map-obj "^1.0.0"
camelcase@4.1.0, camelcase@^4.0.0, camelcase@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd"
camelcase@^1.0.2:
version "1.2.1"
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39"
@@ -1406,10 +1484,6 @@ camelcase@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a"
camelcase@^4.0.0, camelcase@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd"
caniuse-api@^1.5.2:
version "1.6.1"
resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-1.6.1.tgz#b534e7c734c4f81ec5fbe8aca2ad24354b962c6c"
@@ -1442,15 +1516,7 @@ center-align@^0.1.1:
align-text "^0.1.3"
lazy-cache "^1.0.3"
chalk@2.1.0, chalk@^2.0.1, chalk@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.1.0.tgz#ac5becf14fa21b99c6c92ca7a7d7cfd5b17e743e"
dependencies:
ansi-styles "^3.1.0"
escape-string-regexp "^1.0.5"
supports-color "^4.0.0"
chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3:
chalk@1.1.3, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
dependencies:
@@ -1460,6 +1526,14 @@ chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3:
strip-ansi "^3.0.0"
supports-color "^2.0.0"
chalk@2.1.0, chalk@^2.0.1, chalk@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.1.0.tgz#ac5becf14fa21b99c6c92ca7a7d7cfd5b17e743e"
dependencies:
ansi-styles "^3.1.0"
escape-string-regexp "^1.0.5"
supports-color "^4.0.0"
chokidar@^1.6.0, chokidar@^1.7.0:
version "1.7.0"
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468"
@@ -1931,7 +2005,7 @@ debug@2.2.0:
dependencies:
ms "0.7.1"
debug@2.6.9, debug@^2.1.3, debug@^2.2.0, debug@^2.6.6, debug@^2.6.8:
debug@2.6.9, debug@^2.1.3, debug@^2.2.0, debug@^2.6.6, debug@^2.6.8, debug@^2.6.9:
version "2.6.9"
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
dependencies:
@@ -1966,6 +2040,18 @@ defined@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693"
del@^2.2.2:
version "2.2.2"
resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8"
dependencies:
globby "^5.0.0"
is-path-cwd "^1.0.0"
is-path-in-cwd "^1.0.0"
object-assign "^4.0.1"
pify "^2.0.0"
pinkie-promise "^2.0.0"
rimraf "^2.2.8"
del@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/del/-/del-3.0.0.tgz#53ecf699ffcbcb39637691ab13baf160819766e5"
@@ -2071,6 +2157,10 @@ dom-serializer@0:
domelementtype "~1.1.1"
entities "~1.1.1"
dom-walk@^0.1.0:
version "0.1.1"
resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.1.tgz#672226dc74c8f799ad35307df936aba11acd6018"
domain-browser@^1.1.1:
version "1.1.7"
resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc"
@@ -2208,6 +2298,14 @@ electron-download@^3.0.1:
semver "^5.3.0"
sumchecker "^1.2.0"
electron-icon-maker@^0.0.4:
version "0.0.4"
resolved "https://registry.yarnpkg.com/electron-icon-maker/-/electron-icon-maker-0.0.4.tgz#0766087c270a736d0857204bb72130d574d91c51"
dependencies:
args "^2.3.0"
icon-gen "1.0.7"
jimp "^0.2.27"
electron-osx-sign@0.4.7:
version "0.4.7"
resolved "https://registry.yarnpkg.com/electron-osx-sign/-/electron-osx-sign-0.4.7.tgz#1d75647a82748eacd48bea70616ec83ffade3ee5"
@@ -2355,10 +2453,18 @@ es6-map@^0.1.3:
es6-symbol "~3.1.1"
event-emitter "~0.3.5"
es6-promise@^3.0.2:
version "3.3.1"
resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.3.1.tgz#a08cdde84ccdbf34d027a1451bc91d4bcd28a613"
es6-promise@^4.0.5:
version "4.1.1"
resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.1.1.tgz#8811e90915d9a0dba36274f0b242dbda78f9c92a"
es6-promise@~4.0.3:
version "4.0.5"
resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.0.5.tgz#7882f30adde5b240ccfa7f7d78c548330951ae42"
es6-set@~0.1.5:
version "0.1.5"
resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1"
@@ -2473,6 +2579,10 @@ execa@^0.7.0:
signal-exit "^3.0.0"
strip-eof "^1.0.0"
exif-parser@^0.1.9:
version "0.1.12"
resolved "https://registry.yarnpkg.com/exif-parser/-/exif-parser-0.1.12.tgz#58a9d2d72c02c1f6f02a0ef4a9166272b7760922"
expand-brackets@^0.1.4:
version "0.1.5"
resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b"
@@ -2543,7 +2653,7 @@ extract-text-webpack-plugin@3.0.1:
schema-utils "^0.3.0"
webpack-sources "^1.0.1"
extract-zip@^1.0.3:
extract-zip@^1.0.3, extract-zip@~1.6.5:
version "1.6.5"
resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.6.5.tgz#99a06735b6ea20ea9b705d779acffcc87cff0440"
dependencies:
@@ -2601,6 +2711,16 @@ file-loader@^1.1.5:
loader-utils "^1.0.2"
schema-utils "^0.3.0"
file-type@^3.1.0:
version "3.9.0"
resolved "https://registry.yarnpkg.com/file-type/-/file-type-3.9.0.tgz#257a078384d1db8087bc449d107d52a52672b9e9"
file-url@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/file-url/-/file-url-1.1.0.tgz#a0f9cf3eb6904c9b1d3a6790b83a976fc40217bb"
dependencies:
meow "^3.7.0"
filename-regex@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26"
@@ -2658,10 +2778,22 @@ flatten@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782"
follow-redirects@^1.2.3:
version "1.2.5"
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.2.5.tgz#ffd3e14cbdd5eaa72f61b6368c1f68516c2a26cc"
dependencies:
debug "^2.6.9"
font-awesome@^4.7.0:
version "4.7.0"
resolved "https://registry.yarnpkg.com/font-awesome/-/font-awesome-4.7.0.tgz#8fa8cf0411a1a31afd07b06d2902bb9fc815a133"
for-each@^0.3.2:
version "0.3.2"
resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.2.tgz#2c40450b9348e97f281322593ba96704b9abd4d4"
dependencies:
is-function "~1.0.0"
for-in@^0.1.3:
version "0.1.8"
resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1"
@@ -2739,6 +2871,14 @@ fs-extra@^4.0.1, fs-extra@^4.0.2:
jsonfile "^4.0.0"
universalify "^0.1.0"
fs-extra@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-1.0.0.tgz#cd3ce5f7e7cb6145883fcae3191e9877f8587950"
dependencies:
graceful-fs "^4.1.2"
jsonfile "^2.1.0"
klaw "^1.0.0"
fs.realpath@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
@@ -2863,10 +3003,28 @@ global-dirs@^0.1.0:
dependencies:
ini "^1.3.4"
global@~4.3.0:
version "4.3.2"
resolved "https://registry.yarnpkg.com/global/-/global-4.3.2.tgz#e76989268a6c74c38908b1305b10fc0e394e9d0f"
dependencies:
min-document "^2.19.0"
process "~0.5.1"
globals@^9.18.0:
version "9.18.0"
resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a"
globby@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d"
dependencies:
array-union "^1.0.1"
arrify "^1.0.0"
glob "^7.0.3"
object-assign "^4.0.1"
pify "^2.0.0"
pinkie-promise "^2.0.0"
globby@^6.1.0:
version "6.1.0"
resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c"
@@ -2975,6 +3133,13 @@ hash.js@^1.0.0, hash.js@^1.0.3:
inherits "^2.0.3"
minimalistic-assert "^1.0.0"
hasha@~2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/hasha/-/hasha-2.2.0.tgz#78d7cbfc1e6d66303fe79837365984517b2f6ee1"
dependencies:
is-stream "^1.0.1"
pinkie-promise "^2.0.0"
hawk@3.1.3, hawk@~3.1.3:
version "3.1.3"
resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4"
@@ -3135,6 +3300,16 @@ https-browserify@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82"
icon-gen@1.0.7:
version "1.0.7"
resolved "https://registry.yarnpkg.com/icon-gen/-/icon-gen-1.0.7.tgz#0c710adccbf96e10d05c4595d549df43e423a20a"
dependencies:
del "^2.2.2"
mkdirp "^0.5.1"
pngjs "^3.0.0"
svg2png "4.1.0"
uuid "^3.0.0"
iconv-lite@0.4.19, iconv-lite@^0.4.19, iconv-lite@~0.4.13:
version "0.4.19"
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b"
@@ -3222,6 +3397,10 @@ invert-kv@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6"
ip-regex@^1.0.1:
version "1.0.3"
resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-1.0.3.tgz#dc589076f659f419c222039a33316f1c7387effd"
ip@^1.1.0, ip@^1.1.5:
version "1.1.5"
resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a"
@@ -3306,6 +3485,10 @@ is-fullwidth-code-point@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
is-function@^1.0.1, is-function@~1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.1.tgz#12cfb98b65b57dd3d193a3121f5f6e2f437602b5"
is-glob@^2.0.0, is-glob@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863"
@@ -3456,6 +3639,31 @@ isstream@~0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
jimp@^0.2.27:
version "0.2.28"
resolved "https://registry.yarnpkg.com/jimp/-/jimp-0.2.28.tgz#dd529a937190f42957a7937d1acc3a7762996ea2"
dependencies:
bignumber.js "^2.1.0"
bmp-js "0.0.3"
es6-promise "^3.0.2"
exif-parser "^0.1.9"
file-type "^3.1.0"
jpeg-js "^0.2.0"
load-bmfont "^1.2.3"
mime "^1.3.4"
mkdirp "0.5.1"
pixelmatch "^4.0.0"
pngjs "^3.0.0"
read-chunk "^1.0.1"
request "^2.65.0"
stream-to-buffer "^0.1.0"
tinycolor2 "^1.1.2"
url-regex "^3.0.0"
jpeg-js@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/jpeg-js/-/jpeg-js-0.2.0.tgz#53e448ec9d263e683266467e9442d2c5a2ef5482"
jquery@^3.2.1:
version "3.2.1"
resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.2.1.tgz#5c4d9de652af6cd0a770154a631bba12b015c787"
@@ -3553,6 +3761,10 @@ jsprim@^1.2.2:
json-schema "0.2.3"
verror "1.10.0"
kew@~0.7.0:
version "0.7.0"
resolved "https://registry.yarnpkg.com/kew/-/kew-0.7.0.tgz#79d93d2d33363d6fdd2970b335d9141ad591d79b"
kind-of@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-2.0.1.tgz#018ec7a4ce7e3a86cb9141be519d24c8faa981b5"
@@ -3607,6 +3819,18 @@ lcid@^1.0.0:
dependencies:
invert-kv "^1.0.0"
load-bmfont@^1.2.3:
version "1.3.0"
resolved "https://registry.yarnpkg.com/load-bmfont/-/load-bmfont-1.3.0.tgz#bb7e7c710de6bcafcb13cb3b8c81e0c0131ecbc9"
dependencies:
buffer-equal "0.0.1"
mime "^1.3.4"
parse-bmfont-ascii "^1.0.3"
parse-bmfont-binary "^1.0.5"
parse-bmfont-xml "^1.1.0"
xhr "^2.0.1"
xtend "^4.0.0"
load-json-file@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0"
@@ -3654,7 +3878,7 @@ locate-path@^2.0.0:
p-locate "^2.0.0"
path-exists "^3.0.0"
lodash.assign@^4.2.0:
lodash.assign@^4.1.0, lodash.assign@^4.2.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7"
@@ -3686,7 +3910,7 @@ lodash.uniq@^4.5.0:
version "4.5.0"
resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
lodash@^4.0.0, lodash@^4.14.0, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.8.0, lodash@~4.17.4:
lodash@^4.0.0, lodash@^4.13.1, lodash@^4.14.0, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.8.0, lodash@~4.17.4:
version "4.17.4"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"
@@ -3838,6 +4062,12 @@ mimic-fn@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18"
min-document@^2.19.0:
version "2.19.0"
resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685"
dependencies:
dom-walk "^0.1.0"
minimalistic-assert@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3"
@@ -3862,7 +4092,7 @@ minimist@0.0.8, minimist@~0.0.1:
version "0.0.8"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0:
minimist@1.2.0, minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
@@ -3879,7 +4109,7 @@ mkdirp@0.5.0:
dependencies:
minimist "0.0.8"
mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1:
mkdirp@0.5.1, mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1:
version "0.5.1"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
dependencies:
@@ -4271,6 +4501,21 @@ parse-asn1@^5.0.0:
evp_bytestokey "^1.0.0"
pbkdf2 "^3.0.3"
parse-bmfont-ascii@^1.0.3:
version "1.0.6"
resolved "https://registry.yarnpkg.com/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz#11ac3c3ff58f7c2020ab22769079108d4dfa0285"
parse-bmfont-binary@^1.0.5:
version "1.0.6"
resolved "https://registry.yarnpkg.com/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz#d038b476d3e9dd9db1e11a0b0e53a22792b69006"
parse-bmfont-xml@^1.1.0:
version "1.1.3"
resolved "https://registry.yarnpkg.com/parse-bmfont-xml/-/parse-bmfont-xml-1.1.3.tgz#d6b66a371afd39c5007d9f0eeb262a4f2cce7b7c"
dependencies:
xml-parse-from-string "^1.0.0"
xml2js "^0.4.5"
parse-color@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/parse-color/-/parse-color-1.0.0.tgz#7b748b95a83f03f16a94f535e52d7f3d94658619"
@@ -4286,6 +4531,13 @@ parse-glob@^3.0.4:
is-extglob "^1.0.0"
is-glob "^2.0.0"
parse-headers@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/parse-headers/-/parse-headers-2.0.1.tgz#6ae83a7aa25a9d9b700acc28698cd1f1ed7e9536"
dependencies:
for-each "^0.3.2"
trim "0.0.1"
parse-json@^2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9"
@@ -4366,6 +4618,20 @@ performance-now@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
phantomjs-prebuilt@^2.1.10:
version "2.1.15"
resolved "https://registry.yarnpkg.com/phantomjs-prebuilt/-/phantomjs-prebuilt-2.1.15.tgz#20f86e82d3349c505917527745b7a411e08b3903"
dependencies:
es6-promise "~4.0.3"
extract-zip "~1.6.5"
fs-extra "~1.0.0"
hasha "~2.2.0"
kew "~0.7.0"
progress "~1.1.8"
request "~2.81.0"
request-progress "~2.0.1"
which "~1.2.10"
pify@^2.0.0, pify@^2.3.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
@@ -4384,12 +4650,22 @@ pinkie@^2.0.0:
version "2.0.4"
resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
pixelmatch@^4.0.0:
version "4.0.2"
resolved "https://registry.yarnpkg.com/pixelmatch/-/pixelmatch-4.0.2.tgz#8f47dcec5011b477b67db03c243bc1f3085e8854"
dependencies:
pngjs "^3.0.0"
pkg-dir@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b"
dependencies:
find-up "^2.1.0"
pkginfo@0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/pkginfo/-/pkginfo-0.4.0.tgz#349dbb7ffd38081fcadc0853df687f0c7744cd65"
plist@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/plist/-/plist-2.1.0.tgz#57ccdb7a0821df21831217a3cad54e3e146a1025"
@@ -4398,6 +4674,14 @@ plist@^2.1.0:
xmlbuilder "8.2.2"
xmldom "0.1.x"
pn@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/pn/-/pn-1.0.0.tgz#1cf5a30b0d806cd18f88fc41a6b5d4ad615b3ba9"
pngjs@^3.0.0:
version "3.3.0"
resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-3.3.0.tgz#1f5730c189c94933b81beda2ab2f8e2855263a8f"
portfinder@^1.0.9:
version "1.0.13"
resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.13.tgz#bb32ecd87c27104ae6ee44b5a3ccbf0ebb1aede9"
@@ -4709,6 +4993,10 @@ process@^0.11.0:
version "0.11.10"
resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
process@~0.5.1:
version "0.5.2"
resolved "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz#1638d8a8e34c2f440a91db95ab9aeb677fc185cf"
progress-stream@^1.1.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/progress-stream/-/progress-stream-1.2.0.tgz#2cd3cfea33ba3a89c9c121ec3347abe9ab125f77"
@@ -4716,6 +5004,10 @@ progress-stream@^1.1.0:
speedometer "~0.1.2"
through2 "~0.2.3"
progress@~1.1.8:
version "1.1.8"
resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be"
promise@^7.1.1:
version "7.3.1"
resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf"
@@ -4866,6 +5158,10 @@ react@^16.0.0:
object-assign "^4.1.1"
prop-types "^15.6.0"
read-chunk@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/read-chunk/-/read-chunk-1.0.1.tgz#5f68cab307e663f19993527d9b589cace4661194"
read-config-file@1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/read-config-file/-/read-config-file-1.2.0.tgz#1fd7dc8ccdad838cac9f686182625290fc94f456"
@@ -5067,7 +5363,13 @@ repeating@^2.0.0:
dependencies:
is-finite "^1.0.0"
request@2, request@^2.45.0, request@^2.79.0:
request-progress@~2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/request-progress/-/request-progress-2.0.1.tgz#5d36bb57961c673aa5b788dbc8141fdf23b44e08"
dependencies:
throttleit "^1.0.0"
request@2, request@^2.45.0, request@^2.65.0, request@^2.79.0:
version "2.83.0"
resolved "https://registry.yarnpkg.com/request/-/request-2.83.0.tgz#ca0b65da02ed62935887808e6f510381034e3356"
dependencies:
@@ -5094,7 +5396,7 @@ request@2, request@^2.45.0, request@^2.79.0:
tunnel-agent "^0.6.0"
uuid "^3.1.0"
request@2.81.0:
request@2.81.0, request@~2.81.0:
version "2.81.0"
resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0"
dependencies:
@@ -5187,7 +5489,7 @@ sass-loader@^6.0.6:
lodash.tail "^4.1.1"
pify "^3.0.0"
sax@^1.2.4, sax@~1.2.1:
sax@>=0.6.0, sax@^1.2.4, sax@~1.2.1:
version "1.2.4"
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
@@ -5491,10 +5793,26 @@ stream-http@^2.3.1:
to-arraybuffer "^1.0.0"
xtend "^4.0.0"
stream-to-buffer@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/stream-to-buffer/-/stream-to-buffer-0.1.0.tgz#26799d903ab2025c9bd550ac47171b00f8dd80a9"
dependencies:
stream-to "~0.2.0"
stream-to@~0.2.0:
version "0.2.2"
resolved "https://registry.yarnpkg.com/stream-to/-/stream-to-0.2.2.tgz#84306098d85fdb990b9fa300b1b3ccf55e8ef01d"
strict-uri-encode@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713"
string-similarity@1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/string-similarity/-/string-similarity-1.1.0.tgz#3c66498858a465ec7c40c7d81739bbd995904914"
dependencies:
lodash "^4.13.1"
string-width@^1.0.1, string-width@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
@@ -5596,6 +5914,15 @@ supports-color@^4.0.0, supports-color@^4.2.1, supports-color@^4.4.0:
dependencies:
has-flag "^2.0.0"
svg2png@4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/svg2png/-/svg2png-4.1.0.tgz#68e85fc9d0784dc041f97d2a28815405acd56217"
dependencies:
file-url "^1.1.0"
phantomjs-prebuilt "^2.1.10"
pn "^1.0.0"
yargs "^5.0.0"
svgo@^0.7.0:
version "0.7.2"
resolved "https://registry.yarnpkg.com/svgo/-/svgo-0.7.2.tgz#9f5772413952135c6fefbf40afe6a4faa88b4bb5"
@@ -5670,6 +5997,10 @@ throttleit@0.0.2:
version "0.0.2"
resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-0.0.2.tgz#cfedf88e60c00dd9697b61fdd2a8343a9b680eaf"
throttleit@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-1.0.0.tgz#9e785836daf46743145a5984b6268d828528ac6c"
through2@~0.2.3:
version "0.2.3"
resolved "https://registry.yarnpkg.com/through2/-/through2-0.2.3.tgz#eb3284da4ea311b6cc8ace3653748a52abf25a3f"
@@ -5695,6 +6026,10 @@ timers-browserify@^2.0.2:
dependencies:
setimmediate "^1.0.4"
tinycolor2@^1.1.2:
version "1.4.1"
resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.4.1.tgz#f4fad333447bc0b07d4dc8e9209d8f39a8ac77e8"
to-arraybuffer@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43"
@@ -5725,6 +6060,10 @@ trim-right@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003"
trim@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/trim/-/trim-0.0.1.tgz#5858547f6b290757ee95cccc666fb50084c460dd"
truncate-utf8-bytes@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz#405923909592d56f78a5818434b0b78489ca5f2b"
@@ -5960,6 +6299,12 @@ url-parse@^1.1.8:
querystringify "~1.0.0"
requires-port "1.0.x"
url-regex@^3.0.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/url-regex/-/url-regex-3.2.0.tgz#dbad1e0c9e29e105dd0b1f09f6862f7fdb482724"
dependencies:
ip-regex "^1.0.1"
url@^0.11.0:
version "0.11.0"
resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
@@ -6156,6 +6501,12 @@ which@1, which@^1.2.9:
dependencies:
isexe "^2.0.0"
which@~1.2.10:
version "1.2.14"
resolved "https://registry.yarnpkg.com/which/-/which-1.2.14.tgz#9a87c4378f03e827cecaf1acdf56c736c01c14e5"
dependencies:
isexe "^2.0.0"
wide-align@^1.1.0:
version "1.1.2"
resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710"
@@ -6172,6 +6523,10 @@ window-size@0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d"
window-size@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075"
wordwrap@0.0.2:
version "0.0.2"
resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f"
@@ -6203,14 +6558,38 @@ xdg-basedir@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4"
xhr@^2.0.1:
version "2.4.0"
resolved "https://registry.yarnpkg.com/xhr/-/xhr-2.4.0.tgz#e16e66a45f869861eeefab416d5eff722dc40993"
dependencies:
global "~4.3.0"
is-function "^1.0.1"
parse-headers "^2.0.0"
xtend "^4.0.0"
xml-char-classes@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/xml-char-classes/-/xml-char-classes-1.0.0.tgz#64657848a20ffc5df583a42ad8a277b4512bbc4d"
xml-parse-from-string@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz#a9029e929d3dbcded169f3c6e28238d95a5d5a28"
xml2js@^0.4.5:
version "0.4.19"
resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7"
dependencies:
sax ">=0.6.0"
xmlbuilder "~9.0.1"
xmlbuilder@8.2.2:
version "8.2.2"
resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-8.2.2.tgz#69248673410b4ba42e1a6136551d2922335aa773"
xmlbuilder@~9.0.1:
version "9.0.4"
resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.4.tgz#519cb4ca686d005a8420d3496f3f0caeecca580f"
xmldom@0.1.x:
version "0.1.27"
resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.1.27.tgz#d501f97b3bdb403af8ef9ecc20573187aadac0e9"
@@ -6233,6 +6612,13 @@ yallist@^2.1.2:
version "2.1.2"
resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
yargs-parser@^3.2.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-3.2.0.tgz#5081355d19d9d0c8c5d81ada908cb4e6d186664f"
dependencies:
camelcase "^3.0.0"
lodash.assign "^4.1.0"
yargs-parser@^4.2.0:
version "4.2.1"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c"
@@ -6251,6 +6637,25 @@ yargs-parser@^7.0.0:
dependencies:
camelcase "^4.1.0"
yargs@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-5.0.0.tgz#3355144977d05757dbb86d6e38ec056123b3a66e"
dependencies:
cliui "^3.2.0"
decamelize "^1.1.1"
get-caller-file "^1.0.1"
lodash.assign "^4.2.0"
os-locale "^1.4.0"
read-pkg-up "^1.0.1"
require-directory "^2.1.1"
require-main-filename "^1.0.1"
set-blocking "^2.0.0"
string-width "^1.0.2"
which-module "^1.0.0"
window-size "^0.2.0"
y18n "^3.2.1"
yargs-parser "^3.2.0"
yargs@^6.6.0:
version "6.6.0"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208"