Merge branch 'dev' into '100-background-image-for-rooms'
# Conflicts: # smart-hut/src/components/RoomModal.js
This commit is contained in:
commit
a82c4b2c77
22 changed files with 282 additions and 300 deletions
9
.mailmap
9
.mailmap
|
@ -1 +1,8 @@
|
||||||
Claudio Maggioni <maggicl@usi.ch> Claudio Maggioni <maggicl@kolabnow.ch>
|
Claudio Maggioni <maggicl@usi.ch> Claudio Maggioni (maggicl) <maggicl@kolabnow.ch>
|
||||||
|
Claudio Maggioni <maggicl@usi.ch> Claudio Maggioni (maggicl) <maggicl@usi.ch>
|
||||||
|
Filippo Cesana <cesanf@usi.ch> FilippoCesana <cesanf@usi.ch>
|
||||||
|
Filippo Cesana <cesanf@usi.ch> Fil Cesana <cesanf@usi.ch>
|
||||||
|
Andrea Brites Marto <britea@usi.ch> britea <andreabritesma@gmail.com>
|
||||||
|
Christian Capeáns Pérez <capeac@usi.ch> christiancp <capeac@usi.ch>
|
||||||
|
Tommaso Rodolfo Masera <rodolt@usi.ch> tommi27 <tommi99@hotmail.it>
|
||||||
|
|
||||||
|
|
BIN
smart-hut/public/img/curtains-icon.png
Normal file
BIN
smart-hut/public/img/curtains-icon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 39 KiB |
BIN
smart-hut/public/img/thermostat-icon.png
Normal file
BIN
smart-hut/public/img/thermostat-icon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 24 KiB |
|
@ -1,5 +1,12 @@
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import { Grid, Divider, Button, Label, Responsive } from "semantic-ui-react";
|
import {
|
||||||
|
Grid,
|
||||||
|
Divider,
|
||||||
|
Button,
|
||||||
|
Label,
|
||||||
|
Responsive,
|
||||||
|
Checkbox,
|
||||||
|
} from "semantic-ui-react";
|
||||||
import { Segment, Image } from "semantic-ui-react";
|
import { Segment, Image } from "semantic-ui-react";
|
||||||
import { RemoteService } from "../remote";
|
import { RemoteService } from "../remote";
|
||||||
import { withRouter } from "react-router-dom";
|
import { withRouter } from "react-router-dom";
|
||||||
|
@ -35,13 +42,23 @@ export class MyHeader extends React.Component {
|
||||||
.catch((err) => console.error("MyHeader fetch user info error", err));
|
.catch((err) => console.error("MyHeader fetch user info error", err));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setCameraEnabled(val) {
|
||||||
|
let enabled = {
|
||||||
|
cameraEnabled: val,
|
||||||
|
};
|
||||||
|
this.props
|
||||||
|
.userPermissions(enabled)
|
||||||
|
.then(() => this.getInfo())
|
||||||
|
.catch((err) => console.error("Camera enabled", err));
|
||||||
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
<Responsive minWidth={768}>
|
<Responsive minWidth={768}>
|
||||||
<Grid columns="equal" divided inverted padded>
|
<Grid columns="equal" divided inverted padded>
|
||||||
<Grid.Row color="black" textAlign="center">
|
<Grid.Row color="black" textAlign="center">
|
||||||
<Grid.Column width={3} height={0.5}>
|
<Grid.Column width={4} height={0.5}>
|
||||||
<Segment color="black" inverted>
|
<Segment color="black" inverted>
|
||||||
<IconHomeImage />
|
<IconHomeImage />
|
||||||
</Segment>
|
</Segment>
|
||||||
|
@ -51,7 +68,7 @@ export class MyHeader extends React.Component {
|
||||||
<TitleImage />
|
<TitleImage />
|
||||||
</Segment>
|
</Segment>
|
||||||
</Grid.Column>
|
</Grid.Column>
|
||||||
<Grid.Column width={2} heigth={1}>
|
<Grid.Column width={4} heigth={1}>
|
||||||
<Label as="a" image color="black">
|
<Label as="a" image color="black">
|
||||||
<img alt="SmartHut logo" src="smart-home.png" />
|
<img alt="SmartHut logo" src="smart-home.png" />
|
||||||
{this.props.username}
|
{this.props.username}
|
||||||
|
@ -60,6 +77,15 @@ export class MyHeader extends React.Component {
|
||||||
<Button basic inverted onClick={this.logout}>
|
<Button basic inverted onClick={this.logout}>
|
||||||
Logout
|
Logout
|
||||||
</Button>
|
</Button>
|
||||||
|
<Segment compact style={{margin: "auto", marginTop: "1em", textAlign: "center"}}>
|
||||||
|
<Checkbox
|
||||||
|
label={<label
|
||||||
|
>Share cameras</label>}
|
||||||
|
checked={this.props.cameraEnabled}
|
||||||
|
toggle
|
||||||
|
onChange={(e, val) => this.setCameraEnabled(val.checked)}
|
||||||
|
/>
|
||||||
|
</Segment>
|
||||||
</Grid.Column>
|
</Grid.Column>
|
||||||
</Grid.Row>
|
</Grid.Row>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
@ -82,6 +108,15 @@ export class MyHeader extends React.Component {
|
||||||
</Label>
|
</Label>
|
||||||
<Divider />
|
<Divider />
|
||||||
<Button onClick={this.logout}>Logout</Button>
|
<Button onClick={this.logout}>Logout</Button>
|
||||||
|
<Segment compact style={{margin: "auto", marginTop: "1em", textAlign: "center"}}>
|
||||||
|
<Checkbox
|
||||||
|
label={<label
|
||||||
|
>Share cameras</label>}
|
||||||
|
checked={this.props.cameraEnabled}
|
||||||
|
toggle
|
||||||
|
onChange={(e, val) => this.setCameraEnabled(val.checked)}
|
||||||
|
/>
|
||||||
|
</Segment>
|
||||||
</Grid.Column>
|
</Grid.Column>
|
||||||
</Grid.Row>
|
</Grid.Row>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
@ -94,6 +129,7 @@ export class MyHeader extends React.Component {
|
||||||
const mapStateToProps = (state, _) => ({
|
const mapStateToProps = (state, _) => ({
|
||||||
username:
|
username:
|
||||||
state.userInfo && state.userInfo.username ? state.userInfo.username : "",
|
state.userInfo && state.userInfo.username ? state.userInfo.username : "",
|
||||||
|
cameraEnabled: state.userInfo ? state.userInfo.cameraEnabled : false,
|
||||||
});
|
});
|
||||||
const LoginContainer = connect(
|
const LoginContainer = connect(
|
||||||
mapStateToProps,
|
mapStateToProps,
|
||||||
|
|
|
@ -11,7 +11,6 @@ import {
|
||||||
import { connect } from "react-redux";
|
import { connect } from "react-redux";
|
||||||
import { RemoteService, Forms } from "../remote";
|
import { RemoteService, Forms } from "../remote";
|
||||||
import { appActions } from "../storeActions";
|
import { appActions } from "../storeActions";
|
||||||
//import { update } from "immutability-helper";
|
|
||||||
|
|
||||||
class HostModal extends Component {
|
class HostModal extends Component {
|
||||||
constructor(props) {
|
constructor(props) {
|
||||||
|
@ -32,7 +31,9 @@ class HostModal extends Component {
|
||||||
.then((users) =>
|
.then((users) =>
|
||||||
this.setState({
|
this.setState({
|
||||||
...this.state,
|
...this.state,
|
||||||
users: users.map((u) => ({
|
users: users
|
||||||
|
.filter((u) => u.id !== this.props.currentUserId)
|
||||||
|
.map((u) => ({
|
||||||
key: u.id,
|
key: u.id,
|
||||||
text: `@${u.username} (${u.name})`,
|
text: `@${u.username} (${u.name})`,
|
||||||
value: u.id,
|
value: u.id,
|
||||||
|
@ -85,10 +86,6 @@ class HostModal extends Component {
|
||||||
|
|
||||||
<Modal closeIcon onClose={this.closeModal} open={this.state.openModal}>
|
<Modal closeIcon onClose={this.closeModal} open={this.state.openModal}>
|
||||||
<Header>Select guests</Header>
|
<Header>Select guests</Header>
|
||||||
<Modal.Content>
|
|
||||||
<marquee scrollamount="50">
|
|
||||||
<h1>Spaghetti!</h1>
|
|
||||||
</marquee>
|
|
||||||
<Modal.Content>
|
<Modal.Content>
|
||||||
<Form>
|
<Form>
|
||||||
<Form.Field style={{ marginTop: "1rem" }}>
|
<Form.Field style={{ marginTop: "1rem" }}>
|
||||||
|
@ -105,7 +102,6 @@ class HostModal extends Component {
|
||||||
</Form.Field>
|
</Form.Field>
|
||||||
</Form>
|
</Form>
|
||||||
</Modal.Content>
|
</Modal.Content>
|
||||||
</Modal.Content>
|
|
||||||
<Modal.Actions>
|
<Modal.Actions>
|
||||||
<Button color="red" onClick={this.closeModal}>
|
<Button color="red" onClick={this.closeModal}>
|
||||||
<Icon name="remove" /> Discard changes
|
<Icon name="remove" /> Discard changes
|
||||||
|
@ -127,6 +123,7 @@ const setActiveHost = (activeHost) => {
|
||||||
|
|
||||||
const mapStateToProps = (state) => ({
|
const mapStateToProps = (state) => ({
|
||||||
guests: state.guests,
|
guests: state.guests,
|
||||||
|
currentUserId: state.userInfo.id,
|
||||||
});
|
});
|
||||||
const HostModalContainer = connect(
|
const HostModalContainer = connect(
|
||||||
mapStateToProps,
|
mapStateToProps,
|
||||||
|
|
|
@ -8,12 +8,12 @@ import {
|
||||||
Icon,
|
Icon,
|
||||||
Responsive,
|
Responsive,
|
||||||
Image,
|
Image,
|
||||||
|
Confirm,
|
||||||
} from "semantic-ui-react";
|
} from "semantic-ui-react";
|
||||||
import SelectIcons from "./SelectIcons";
|
import SelectIcons from "./SelectIcons";
|
||||||
import { connect } from "react-redux";
|
import { connect } from "react-redux";
|
||||||
import { RemoteService } from "../remote";
|
import { RemoteService } from "../remote";
|
||||||
import { appActions } from "../storeActions";
|
import { appActions } from "../storeActions";
|
||||||
import { update } from "immutability-helper";
|
|
||||||
|
|
||||||
const NO_IMAGE = "https://react.semantic-ui.com/images/wireframe/image.png";
|
const NO_IMAGE = "https://react.semantic-ui.com/images/wireframe/image.png";
|
||||||
|
|
||||||
|
@ -42,7 +42,7 @@ class RoomModal extends Component {
|
||||||
unsetImage = (e) => {
|
unsetImage = (e) => {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
this.setState({ ...this.state, img: "" });
|
this.setState({ ...this.state, img: "" });
|
||||||
}
|
};
|
||||||
|
|
||||||
setInitialState() {
|
setInitialState() {
|
||||||
this.setState(this.initialState);
|
this.setState(this.initialState);
|
||||||
|
@ -93,6 +93,13 @@ class RoomModal extends Component {
|
||||||
.catch((err) => console.error("error in deleting room", err));
|
.catch((err) => console.error("error in deleting room", err));
|
||||||
};
|
};
|
||||||
|
|
||||||
|
setSureTrue = () => {
|
||||||
|
this.setState({sure: true})
|
||||||
|
}
|
||||||
|
|
||||||
|
setSureFalse= () => {
|
||||||
|
this.setState({sure: false})
|
||||||
|
}
|
||||||
|
|
||||||
changeSomething = (event) => {
|
changeSomething = (event) => {
|
||||||
let nam = event.target.name;
|
let nam = event.target.name;
|
||||||
|
@ -223,16 +230,22 @@ class RoomModal extends Component {
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{this.type === "modify" ? (
|
{this.type === "modify" ? (
|
||||||
|
<div>
|
||||||
<Button
|
<Button
|
||||||
icon
|
icon
|
||||||
labelPosition="left"
|
labelPosition="left"
|
||||||
inverted
|
inverted
|
||||||
color="red"
|
color="red"
|
||||||
onClick={this.deleteRoom}
|
onClick={this.setSureTrue}
|
||||||
>
|
>
|
||||||
<Icon name="trash alternate" />
|
<Icon name="trash alternate" />
|
||||||
Delete room
|
Delete Room </Button>
|
||||||
</Button>
|
<Confirm
|
||||||
|
open={this.state.sure}
|
||||||
|
onCancel={this.setSureFalse}
|
||||||
|
onConfirm={this.deleteRoom}/>
|
||||||
|
</div>
|
||||||
|
|
||||||
) : null}
|
) : null}
|
||||||
</Modal.Content>
|
</Modal.Content>
|
||||||
<Modal.Actions>
|
<Modal.Actions>
|
||||||
|
|
|
@ -8,6 +8,8 @@ import {
|
||||||
Form,
|
Form,
|
||||||
Input,
|
Input,
|
||||||
Dropdown,
|
Dropdown,
|
||||||
|
Checkbox,
|
||||||
|
Segment,
|
||||||
} from "semantic-ui-react";
|
} from "semantic-ui-react";
|
||||||
import SelectIcons from "./SelectIcons";
|
import SelectIcons from "./SelectIcons";
|
||||||
import { connect } from "react-redux";
|
import { connect } from "react-redux";
|
||||||
|
@ -23,6 +25,7 @@ class SceneModal extends Component {
|
||||||
this.modifySceneModal = this.modifySceneModal.bind(this);
|
this.modifySceneModal = this.modifySceneModal.bind(this);
|
||||||
this.deleteScene = this.deleteScene.bind(this);
|
this.deleteScene = this.deleteScene.bind(this);
|
||||||
this.updateIcon = this.updateIcon.bind(this);
|
this.updateIcon = this.updateIcon.bind(this);
|
||||||
|
this.setGuestAccessEnabled = this.setGuestAccessEnabled.bind(this);
|
||||||
this.setCopyFrom = this.setCopyFrom.bind(this);
|
this.setCopyFrom = this.setCopyFrom.bind(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -41,6 +44,8 @@ class SceneModal extends Component {
|
||||||
selectedIcon: "home",
|
selectedIcon: "home",
|
||||||
scenes: this.scenes,
|
scenes: this.scenes,
|
||||||
copyFrom: null,
|
copyFrom: null,
|
||||||
|
guestAccessEnabled:
|
||||||
|
this.type === "new" ? null : this.props.scene.guestAccessEnabled,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -79,7 +84,9 @@ class SceneModal extends Component {
|
||||||
let data = {
|
let data = {
|
||||||
name: this.state.name,
|
name: this.state.name,
|
||||||
icon: this.state.selectedIcon,
|
icon: this.state.selectedIcon,
|
||||||
|
guestAccessEnabled: this.state.guestAccessEnabled,
|
||||||
};
|
};
|
||||||
|
console.log(data);
|
||||||
|
|
||||||
this.props
|
this.props
|
||||||
.saveScene(data, this.props.id)
|
.saveScene(data, this.props.id)
|
||||||
|
@ -104,21 +111,26 @@ class SceneModal extends Component {
|
||||||
};
|
};
|
||||||
|
|
||||||
closeModal = (e) => {
|
closeModal = (e) => {
|
||||||
this.setState({ openModal: false });
|
this.setState({ ...this.state, openModal: false });
|
||||||
};
|
};
|
||||||
|
|
||||||
openModal = (e) => {
|
openModal = (e) => {
|
||||||
this.setState({ openModal: true });
|
this.setState({ ...this.state, openModal: true });
|
||||||
};
|
};
|
||||||
|
|
||||||
updateIcon(e) {
|
updateIcon(e) {
|
||||||
this.setState({ selectedIcon: e });
|
this.setState({ ...this.state, selectedIcon: e });
|
||||||
}
|
}
|
||||||
|
|
||||||
setCopyFrom(_, copyFrom) {
|
setCopyFrom(_, copyFrom) {
|
||||||
this.setState({ ...this.state, copyFrom: copyFrom.value });
|
this.setState({ ...this.state, copyFrom: copyFrom.value });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setGuestAccessEnabled(val) {
|
||||||
|
console.log(this.state, val);
|
||||||
|
this.setState({ ...this.state, guestAccessEnabled: val });
|
||||||
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
const spaceDiv = {
|
const spaceDiv = {
|
||||||
background: "#f4f4f4",
|
background: "#f4f4f4",
|
||||||
|
@ -210,6 +222,20 @@ class SceneModal extends Component {
|
||||||
/>
|
/>
|
||||||
</Form.Field>
|
</Form.Field>
|
||||||
)}
|
)}
|
||||||
|
{this.type === "modify" ? (
|
||||||
|
<Form.Field>
|
||||||
|
<Segment compact style={{ marginBottom: "1rem"}}>
|
||||||
|
<Checkbox
|
||||||
|
label="Enable guest access"
|
||||||
|
checked={this.state.guestAccessEnabled}
|
||||||
|
toggle
|
||||||
|
onChange={(e, val) =>
|
||||||
|
this.setGuestAccessEnabled(val.checked)
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
</Segment>
|
||||||
|
</Form.Field>
|
||||||
|
) : null}
|
||||||
</Form>
|
</Form>
|
||||||
|
|
||||||
{this.type === "modify" ? (
|
{this.type === "modify" ? (
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
// vim: set ts=2 sw=2 et tw=80:
|
// vim: set ts=2 sw=2 et tw=80:
|
||||||
|
|
||||||
import React, { Component } from "react";
|
import React, { Component } from "react";
|
||||||
import { Segment, Card } from "semantic-ui-react";
|
import { Segment, Card, Header, Icon } from "semantic-ui-react";
|
||||||
import Device from "./devices/Device";
|
import Device from "./devices/Device";
|
||||||
import NewDevice from "./devices/NewDevice";
|
import NewDevice from "./devices/NewDevice";
|
||||||
import { connect } from "react-redux";
|
import { connect } from "react-redux";
|
||||||
|
@ -25,6 +25,8 @@ class DevicePanel extends Component {
|
||||||
render() {
|
render() {
|
||||||
return (
|
return (
|
||||||
<Card.Group centered style={{ paddingTop: "3rem" }}>
|
<Card.Group centered style={{ paddingTop: "3rem" }}>
|
||||||
|
{this.props.numbeOfRooms > 0 ? (
|
||||||
|
<React.Fragment>
|
||||||
{this.props.devices.map((e, i) => {
|
{this.props.devices.map((e, i) => {
|
||||||
return <Device key={i} tab={this.props.tab} id={e.id} />;
|
return <Device key={i} tab={this.props.tab} id={e.id} />;
|
||||||
})}
|
})}
|
||||||
|
@ -35,6 +37,19 @@ class DevicePanel extends Component {
|
||||||
</Segment>
|
</Segment>
|
||||||
</Card>
|
</Card>
|
||||||
) : null}
|
) : null}
|
||||||
|
</React.Fragment>
|
||||||
|
) : (
|
||||||
|
<Segment placeholder>
|
||||||
|
<Header icon>
|
||||||
|
<Icon
|
||||||
|
name="exclamation triangle"
|
||||||
|
style={{ paddingBottom: "1rem" }}
|
||||||
|
/>
|
||||||
|
Please create a room on the left, and then add devices to the
|
||||||
|
same.
|
||||||
|
</Header>
|
||||||
|
</Segment>
|
||||||
|
)}
|
||||||
</Card.Group>
|
</Card.Group>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -55,6 +70,9 @@ const mapStateToProps = (state, _) => ({
|
||||||
return state.active.activeRoom === -1;
|
return state.active.activeRoom === -1;
|
||||||
},
|
},
|
||||||
activeRoom: state.active.activeRoom,
|
activeRoom: state.active.activeRoom,
|
||||||
|
get numbeOfRooms() {
|
||||||
|
return Object.keys(state.rooms).length;
|
||||||
|
},
|
||||||
});
|
});
|
||||||
const DevicePanelContainer = connect(
|
const DevicePanelContainer = connect(
|
||||||
mapStateToProps,
|
mapStateToProps,
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import React, { Component } from "react";
|
import React, { Component } from "react";
|
||||||
import { connect } from "react-redux";
|
import { connect } from "react-redux";
|
||||||
import { RemoteService } from "../../remote";
|
import { RemoteService } from "../../remote";
|
||||||
import { Card, Segment, Header, Icon } from "semantic-ui-react";
|
import { Card, Segment, Header, Icon, Button } from "semantic-ui-react";
|
||||||
import Device from "../../components/dashboard/devices/Device";
|
import Device from "../../components/dashboard/devices/Device";
|
||||||
|
|
||||||
class HostsPanel extends Component {
|
class HostsPanel extends Component {
|
||||||
|
@ -12,20 +12,52 @@ class HostsPanel extends Component {
|
||||||
) {
|
) {
|
||||||
this.props.fetchDevices(null, this.props.activeHost).catch(console.error);
|
this.props.fetchDevices(null, this.props.activeHost).catch(console.error);
|
||||||
this.props.fetchAllRooms(this.props.activeHost).catch(console.error);
|
this.props.fetchAllRooms(this.props.activeHost).catch(console.error);
|
||||||
|
this.props.fetchAllScenes(this.props.activeHost).catch(console.error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
|
if (this.props.isActiveDefaultHost) {
|
||||||
return (
|
return (
|
||||||
<Card.Group centered style={{ paddingTop: "3rem" }}>
|
<Card.Group centered style={{ paddingTop: "3rem" }}>
|
||||||
{this.props.isActiveDefaultHost && (
|
|
||||||
<Segment placeholder>
|
<Segment placeholder>
|
||||||
<Header icon>
|
<Header icon>
|
||||||
<Icon name="folder open" />
|
<Icon
|
||||||
|
name="exclamation triangle"
|
||||||
|
style={{ paddingBottom: "1rem" }}
|
||||||
|
/>
|
||||||
Please select a host to visit on the left.
|
Please select a host to visit on the left.
|
||||||
</Header>
|
</Header>
|
||||||
</Segment>
|
</Segment>
|
||||||
)}
|
</Card.Group>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<React.Fragment>
|
||||||
|
<Header style={{ textAlign: "center", marginTop: "3rem" }} as="h3">
|
||||||
|
Scenes
|
||||||
|
</Header>
|
||||||
|
<Card.Group centered>
|
||||||
|
{this.props.hostScenes.map((scene) => (
|
||||||
|
<Card>
|
||||||
|
<Card.Header textAlign="center">
|
||||||
|
<Header style={{ margin: "1.5rem 0" }} as="h3">
|
||||||
|
{scene.name} <Icon name={scene.icon} />
|
||||||
|
</Header>
|
||||||
|
</Card.Header>
|
||||||
|
<Card.Content extras>
|
||||||
|
<div className="ui two buttons">
|
||||||
|
<Button>Apply</Button>
|
||||||
|
</div>
|
||||||
|
</Card.Content>
|
||||||
|
</Card>
|
||||||
|
))}
|
||||||
|
</Card.Group>
|
||||||
|
<Header style={{ textAlign: "center" }} as="h3">
|
||||||
|
Devices
|
||||||
|
</Header>
|
||||||
|
<Card.Group centered>
|
||||||
{this.props.hostDeviceIds.map((id) => {
|
{this.props.hostDeviceIds.map((id) => {
|
||||||
return (
|
return (
|
||||||
<Device
|
<Device
|
||||||
|
@ -37,6 +69,7 @@ class HostsPanel extends Component {
|
||||||
);
|
);
|
||||||
})}
|
})}
|
||||||
</Card.Group>
|
</Card.Group>
|
||||||
|
</React.Fragment>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -44,6 +77,7 @@ class HostsPanel extends Component {
|
||||||
const mapStateToProps = (state, _) => ({
|
const mapStateToProps = (state, _) => ({
|
||||||
isActiveDefaultHost: state.active.activeHost === -1,
|
isActiveDefaultHost: state.active.activeHost === -1,
|
||||||
activeHost: state.active.activeHost,
|
activeHost: state.active.activeHost,
|
||||||
|
hostScenes: state.hostScenes[state.active.activeHost] || [],
|
||||||
hostDevices: state.hostDevices,
|
hostDevices: state.hostDevices,
|
||||||
hostDeviceIds: Object.keys(state.hostDevices[state.active.activeHost] || {}),
|
hostDeviceIds: Object.keys(state.hostDevices[state.active.activeHost] || {}),
|
||||||
});
|
});
|
||||||
|
|
|
@ -44,7 +44,10 @@ class ScenesPanel extends Component {
|
||||||
) : (
|
) : (
|
||||||
<Segment placeholder>
|
<Segment placeholder>
|
||||||
<Header icon>
|
<Header icon>
|
||||||
<Icon name="folder open" />
|
<Icon
|
||||||
|
name="exclamation triangle"
|
||||||
|
style={{ paddingBottom: "1rem" }}
|
||||||
|
/>
|
||||||
Please select a scene on the left or add a new one.
|
Please select a scene on the left or add a new one.
|
||||||
</Header>
|
</Header>
|
||||||
</Segment>
|
</Segment>
|
||||||
|
|
|
@ -4,10 +4,6 @@
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
}
|
}
|
||||||
|
|
||||||
body {
|
|
||||||
overflow-y: hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
.container.curtain-container {
|
.container.curtain-container {
|
||||||
position: relative;
|
position: relative;
|
||||||
margin-top: 10%;
|
margin-top: 10%;
|
||||||
|
|
|
@ -1,13 +1,5 @@
|
||||||
import React, { Component, useState } from "react";
|
import React, { Component, useState } from "react";
|
||||||
import {
|
import { Button, Form, Icon, Header, Modal, Input } from "semantic-ui-react";
|
||||||
Button,
|
|
||||||
Form,
|
|
||||||
Icon,
|
|
||||||
Header,
|
|
||||||
Modal,
|
|
||||||
Input,
|
|
||||||
Checkbox,
|
|
||||||
} from "semantic-ui-react";
|
|
||||||
import { connect } from "react-redux";
|
import { connect } from "react-redux";
|
||||||
import { RemoteService } from "../../../remote";
|
import { RemoteService } from "../../../remote";
|
||||||
|
|
||||||
|
|
|
@ -141,6 +141,11 @@ class NewDevice extends Component {
|
||||||
case "buttonDimmer":
|
case "buttonDimmer":
|
||||||
case "knobDimmer":
|
case "knobDimmer":
|
||||||
outputs = this.state.lightsAttached;
|
outputs = this.state.lightsAttached;
|
||||||
|
if (this.state.lightsAttached === undefined ||
|
||||||
|
this.state.lightsAttached.length === 0) {
|
||||||
|
alert("No lights attached to this switch! Please, add a light a first.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
@ -160,8 +165,12 @@ class NewDevice extends Component {
|
||||||
render() {
|
render() {
|
||||||
const deviceOptions = [
|
const deviceOptions = [
|
||||||
//stuff
|
//stuff
|
||||||
{ key: "thermostat", text: "Thermostat", value: "thermostat", image: {} },
|
{ key: "thermostat", text: "Thermostat", value: "thermostat",
|
||||||
{ key: "curtains", text: "Curtain", value: "curtains", image: {} },
|
image: {avatar: true, src: "/img/thermostat-icon.png"}
|
||||||
|
},
|
||||||
|
{ key: "curtains", text: "Curtain", value: "curtains",
|
||||||
|
image: {avatar: true, src: "/img/curtains-icon.png"}
|
||||||
|
},
|
||||||
//stuff ends
|
//stuff ends
|
||||||
{
|
{
|
||||||
key: "light",
|
key: "light",
|
||||||
|
|
|
@ -164,7 +164,10 @@ class Thermostats extends Component {
|
||||||
const mapStateToProps2 = (state, ownProps) => ({
|
const mapStateToProps2 = (state, ownProps) => ({
|
||||||
...mapStateToProps(state, ownProps),
|
...mapStateToProps(state, ownProps),
|
||||||
get tempSensorsInRoom() {
|
get tempSensorsInRoom() {
|
||||||
const deviceIds = state.rooms[state.devices[ownProps.id].roomId].devices;
|
if (state.active.activeTab !== "Devices") return false;
|
||||||
|
const room = state.rooms[state.devices[ownProps.id].roomId];
|
||||||
|
if (!room) return false;
|
||||||
|
const deviceIds = room.devices;
|
||||||
const devices = [...deviceIds].map((id) => state.devices[id]);
|
const devices = [...deviceIds].map((id) => state.devices[id]);
|
||||||
const sensors = devices.filter(
|
const sensors = devices.filter(
|
||||||
(d) => d.kind === "sensor" && d.sensor === "TEMPERATURE"
|
(d) => d.kind === "sensor" && d.sensor === "TEMPERATURE"
|
||||||
|
|
|
@ -31,7 +31,7 @@ class Videocam extends Component {
|
||||||
|
|
||||||
setOnOff(onOff) {
|
setOnOff(onOff) {
|
||||||
const turn = onOff;
|
const turn = onOff;
|
||||||
if (this.props.tab === "Devices") {
|
if (this.props.tab === "Devices" || this.props.tab === "Hosts") {
|
||||||
this.props
|
this.props
|
||||||
.saveDevice({ ...this.props.device, on: turn })
|
.saveDevice({ ...this.props.device, on: turn })
|
||||||
.then((res) =>
|
.then((res) =>
|
||||||
|
@ -70,12 +70,16 @@ class Videocam extends Component {
|
||||||
/>
|
/>
|
||||||
</Grid.Column>
|
</Grid.Column>
|
||||||
</Grid.Row>
|
</Grid.Row>
|
||||||
</Grid>
|
<Grid.Row textAlign="center">
|
||||||
|
<Grid.Column>
|
||||||
<Checkbox
|
<Checkbox
|
||||||
checked={this.props.stateOrDevice.on}
|
checked={this.props.stateOrDevice.on}
|
||||||
toggle
|
toggle
|
||||||
onChange={(e, val) => this.setOnOff(val.checked)}
|
onChange={(e, val) => this.setOnOff(val.checked)}
|
||||||
/>
|
/>
|
||||||
|
</Grid.Column>
|
||||||
|
</Grid.Row>
|
||||||
|
</Grid>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
@ -242,6 +242,20 @@ export const RemoteService = {
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fetches user information via REST calls, if it is logged in
|
||||||
|
* @returns {Promise<Undefined, RemoteError>} promise that resolves to void and rejects
|
||||||
|
* with user-fiendly errors as a RemoteError
|
||||||
|
*/
|
||||||
|
userPermissions: (data) => {
|
||||||
|
return (dispatch) => {
|
||||||
|
return Endpoint.put("/user/permissions", {}, data).catch((err) => {
|
||||||
|
console.warn("Fetch user info error", err);
|
||||||
|
throw new RemoteError(["Network error"]);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Fetches user information via REST calls, if it is logged in
|
* Fetches user information via REST calls, if it is logged in
|
||||||
* @returns {Promise<Undefined, RemoteError>} promise that resolves to void and rejects
|
* @returns {Promise<Undefined, RemoteError>} promise that resolves to void and rejects
|
||||||
|
@ -290,10 +304,17 @@ export const RemoteService = {
|
||||||
* @returns {Promise<Undefined, RemoteError>} promise that resolves to void and rejects
|
* @returns {Promise<Undefined, RemoteError>} promise that resolves to void and rejects
|
||||||
* with user-fiendly errors as a RemoteError
|
* with user-fiendly errors as a RemoteError
|
||||||
*/
|
*/
|
||||||
fetchAllScenes: () => {
|
fetchAllScenes: (hostId = null) => {
|
||||||
return (dispatch) => {
|
return (dispatch) => {
|
||||||
return Endpoint.get("/scene")
|
return Endpoint.get("/scene", hostId ? { hostId } : {})
|
||||||
.then((res) => void dispatch(actions.scenesUpdate(res.data)))
|
.then(
|
||||||
|
(res) =>
|
||||||
|
void dispatch(
|
||||||
|
!hostId
|
||||||
|
? actions.scenesUpdate(res.data)
|
||||||
|
: actions.hostScenesUpdate(hostId, res.data)
|
||||||
|
)
|
||||||
|
)
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
console.error("Fetch all scenes error", err);
|
console.error("Fetch all scenes error", err);
|
||||||
throw new RemoteError(["Network error"]);
|
throw new RemoteError(["Network error"]);
|
||||||
|
@ -458,6 +479,7 @@ export const RemoteService = {
|
||||||
data = {
|
data = {
|
||||||
name: data.name,
|
name: data.name,
|
||||||
icon: data.icon,
|
icon: data.icon,
|
||||||
|
guestAccessEnabled: sceneId ? data.guestAccessEnabled : false,
|
||||||
};
|
};
|
||||||
|
|
||||||
return (sceneId
|
return (sceneId
|
||||||
|
|
|
@ -120,6 +120,15 @@ function reducer(previousState, action) {
|
||||||
createOrUpdateScene(scene);
|
createOrUpdateScene(scene);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case "HOST_SCENES_UPDATE":
|
||||||
|
change = {
|
||||||
|
hostScenes: {
|
||||||
|
[action.hostId]: { $set: action.scenes }, // stored as array
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
newState = update(previousState, change);
|
||||||
|
break;
|
||||||
case "STATES_UPDATE":
|
case "STATES_UPDATE":
|
||||||
//console.log(action.sceneStates);
|
//console.log(action.sceneStates);
|
||||||
change = null;
|
change = null;
|
||||||
|
@ -576,6 +585,7 @@ const initState = {
|
||||||
rooms: {},
|
rooms: {},
|
||||||
/** @type {[integer]Scene} */
|
/** @type {[integer]Scene} */
|
||||||
scenes: {},
|
scenes: {},
|
||||||
|
hostScenes: {},
|
||||||
/** @type {[integer]Automation} */
|
/** @type {[integer]Automation} */
|
||||||
automations: {},
|
automations: {},
|
||||||
/** @type {[integer]Device} */
|
/** @type {[integer]Device} */
|
||||||
|
|
|
@ -102,6 +102,11 @@ const actions = {
|
||||||
type: "SCENES_UPDATE",
|
type: "SCENES_UPDATE",
|
||||||
scenes,
|
scenes,
|
||||||
}),
|
}),
|
||||||
|
hostScenesUpdate: (hostId, scenes) => ({
|
||||||
|
type: "HOST_SCENES_UPDATE",
|
||||||
|
hostId,
|
||||||
|
scenes,
|
||||||
|
}),
|
||||||
deviceDelete: (deviceId) => ({
|
deviceDelete: (deviceId) => ({
|
||||||
type: "DEVICE_DELETE",
|
type: "DEVICE_DELETE",
|
||||||
deviceId,
|
deviceId,
|
||||||
|
|
|
@ -94,12 +94,12 @@ class Dashboard extends Component {
|
||||||
<div style={{ background: "#1b1c1d" }}>
|
<div style={{ background: "#1b1c1d" }}>
|
||||||
<Responsive minWidth={768}>
|
<Responsive minWidth={768}>
|
||||||
<Grid>
|
<Grid>
|
||||||
<Grid.Row color="black">
|
<Grid.Row color="black" style={{ paddingBottom: 0 }}>
|
||||||
<Grid.Column>
|
<Grid.Column>
|
||||||
<MyHeader />
|
<MyHeader />
|
||||||
</Grid.Column>
|
</Grid.Column>
|
||||||
</Grid.Row>
|
</Grid.Row>
|
||||||
<Grid.Row color="black">
|
<Grid.Row color="black" style={{ paddingTop: 0 }}>
|
||||||
<Grid.Column textAlign="center" width={16}>
|
<Grid.Column textAlign="center" width={16}>
|
||||||
<Menu fluid widths={4} inverted color="grey">
|
<Menu fluid widths={4} inverted color="grey">
|
||||||
<Menu.Item
|
<Menu.Item
|
||||||
|
|
|
@ -247,7 +247,7 @@ const Home = () => (
|
||||||
</a>
|
</a>
|
||||||
</List.Item>
|
</List.Item>
|
||||||
<List.Item>
|
<List.Item>
|
||||||
<a href="https://theshell.ch" target="blank">
|
<a href="https://www.theshell.ch" target="blank">
|
||||||
The Shell
|
The Shell
|
||||||
</a>
|
</a>
|
||||||
</List.Item>
|
</List.Item>
|
||||||
|
|
|
@ -116,7 +116,7 @@ export default class Signup extends Component {
|
||||||
<Form.Input
|
<Form.Input
|
||||||
icon="lock"
|
icon="lock"
|
||||||
iconPosition="left"
|
iconPosition="left"
|
||||||
placeholder="Password (at least 8 characters)"
|
placeholder="Password (at least 6 characters)"
|
||||||
name="password"
|
name="password"
|
||||||
type="password"
|
type="password"
|
||||||
onChange={this.onChangeHandler}
|
onChange={this.onChangeHandler}
|
||||||
|
|
|
@ -1940,11 +1940,6 @@ abab@^2.0.0:
|
||||||
resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a"
|
resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a"
|
||||||
integrity sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg==
|
integrity sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg==
|
||||||
|
|
||||||
abbrev@1:
|
|
||||||
version "1.1.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
|
|
||||||
integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==
|
|
||||||
|
|
||||||
accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7:
|
accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7:
|
||||||
version "1.3.7"
|
version "1.3.7"
|
||||||
resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd"
|
resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd"
|
||||||
|
@ -2113,19 +2108,11 @@ anymatch@~3.1.1:
|
||||||
normalize-path "^3.0.0"
|
normalize-path "^3.0.0"
|
||||||
picomatch "^2.0.4"
|
picomatch "^2.0.4"
|
||||||
|
|
||||||
aproba@^1.0.3, aproba@^1.1.1:
|
aproba@^1.1.1:
|
||||||
version "1.2.0"
|
version "1.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
|
resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
|
||||||
integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==
|
integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==
|
||||||
|
|
||||||
are-we-there-yet@~1.1.2:
|
|
||||||
version "1.1.5"
|
|
||||||
resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21"
|
|
||||||
integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==
|
|
||||||
dependencies:
|
|
||||||
delegates "^1.0.0"
|
|
||||||
readable-stream "^2.0.6"
|
|
||||||
|
|
||||||
argparse@^1.0.7:
|
argparse@^1.0.7:
|
||||||
version "1.0.10"
|
version "1.0.10"
|
||||||
resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
|
resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
|
||||||
|
@ -3252,11 +3239,6 @@ console-browserify@^1.1.0:
|
||||||
resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336"
|
resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336"
|
||||||
integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==
|
integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==
|
||||||
|
|
||||||
console-control-strings@^1.0.0, console-control-strings@~1.1.0:
|
|
||||||
version "1.1.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
|
|
||||||
integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=
|
|
||||||
|
|
||||||
constants-browserify@^1.0.0:
|
constants-browserify@^1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75"
|
resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75"
|
||||||
|
@ -3744,7 +3726,7 @@ debug@=3.1.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
ms "2.0.0"
|
ms "2.0.0"
|
||||||
|
|
||||||
debug@^3.0.0, debug@^3.1.1, debug@^3.2.5, debug@^3.2.6:
|
debug@^3.0.0, debug@^3.1.1, debug@^3.2.5:
|
||||||
version "3.2.6"
|
version "3.2.6"
|
||||||
resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
|
resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
|
||||||
integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==
|
integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==
|
||||||
|
@ -3780,11 +3762,6 @@ deep-equal@^1.0.1, deep-equal@^1.1.1:
|
||||||
object-keys "^1.1.1"
|
object-keys "^1.1.1"
|
||||||
regexp.prototype.flags "^1.2.0"
|
regexp.prototype.flags "^1.2.0"
|
||||||
|
|
||||||
deep-extend@^0.6.0:
|
|
||||||
version "0.6.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
|
|
||||||
integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==
|
|
||||||
|
|
||||||
deep-is@~0.1.3:
|
deep-is@~0.1.3:
|
||||||
version "0.1.3"
|
version "0.1.3"
|
||||||
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
|
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
|
||||||
|
@ -3845,11 +3822,6 @@ delayed-stream@~1.0.0:
|
||||||
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
|
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
|
||||||
integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk=
|
integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk=
|
||||||
|
|
||||||
delegates@^1.0.0:
|
|
||||||
version "1.0.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
|
|
||||||
integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=
|
|
||||||
|
|
||||||
depd@~1.1.2:
|
depd@~1.1.2:
|
||||||
version "1.1.2"
|
version "1.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
|
resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
|
||||||
|
@ -3868,11 +3840,6 @@ destroy@~1.0.4:
|
||||||
resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
|
resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
|
||||||
integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=
|
integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=
|
||||||
|
|
||||||
detect-libc@^1.0.2:
|
|
||||||
version "1.0.3"
|
|
||||||
resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
|
|
||||||
integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=
|
|
||||||
|
|
||||||
detect-newline@^2.1.0:
|
detect-newline@^2.1.0:
|
||||||
version "2.1.0"
|
version "2.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2"
|
resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2"
|
||||||
|
@ -4967,13 +4934,6 @@ fs-extra@^8.1.0:
|
||||||
jsonfile "^4.0.0"
|
jsonfile "^4.0.0"
|
||||||
universalify "^0.1.0"
|
universalify "^0.1.0"
|
||||||
|
|
||||||
fs-minipass@^1.2.5:
|
|
||||||
version "1.2.7"
|
|
||||||
resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7"
|
|
||||||
integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==
|
|
||||||
dependencies:
|
|
||||||
minipass "^2.6.0"
|
|
||||||
|
|
||||||
fs-minipass@^2.0.0:
|
fs-minipass@^2.0.0:
|
||||||
version "2.1.0"
|
version "2.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb"
|
resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb"
|
||||||
|
@ -5024,20 +4984,6 @@ functional-red-black-tree@^1.0.1:
|
||||||
resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
|
resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
|
||||||
integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=
|
integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=
|
||||||
|
|
||||||
gauge@~2.7.3:
|
|
||||||
version "2.7.4"
|
|
||||||
resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7"
|
|
||||||
integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=
|
|
||||||
dependencies:
|
|
||||||
aproba "^1.0.3"
|
|
||||||
console-control-strings "^1.0.0"
|
|
||||||
has-unicode "^2.0.0"
|
|
||||||
object-assign "^4.1.0"
|
|
||||||
signal-exit "^3.0.0"
|
|
||||||
string-width "^1.0.1"
|
|
||||||
strip-ansi "^3.0.1"
|
|
||||||
wide-align "^1.1.0"
|
|
||||||
|
|
||||||
gensync@^1.0.0-beta.1:
|
gensync@^1.0.0-beta.1:
|
||||||
version "1.0.0-beta.1"
|
version "1.0.0-beta.1"
|
||||||
resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269"
|
resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269"
|
||||||
|
@ -5229,11 +5175,6 @@ has-symbols@^1.0.0, has-symbols@^1.0.1:
|
||||||
resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8"
|
resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8"
|
||||||
integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==
|
integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==
|
||||||
|
|
||||||
has-unicode@^2.0.0:
|
|
||||||
version "2.0.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
|
|
||||||
integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=
|
|
||||||
|
|
||||||
has-value@^0.3.1:
|
has-value@^0.3.1:
|
||||||
version "0.3.1"
|
version "0.3.1"
|
||||||
resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f"
|
resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f"
|
||||||
|
@ -5491,7 +5432,7 @@ hyphenate-style-name@^1.0.3:
|
||||||
resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.3.tgz#097bb7fa0b8f1a9cf0bd5c734cf95899981a9b48"
|
resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.3.tgz#097bb7fa0b8f1a9cf0bd5c734cf95899981a9b48"
|
||||||
integrity sha512-EcuixamT82oplpoJ2XU4pDtKGWQ7b00CD9f1ug9IaQ3p1bkHMiKCZ9ut9QDI6qsa6cpUuB+A/I+zLtdNK4n2DQ==
|
integrity sha512-EcuixamT82oplpoJ2XU4pDtKGWQ7b00CD9f1ug9IaQ3p1bkHMiKCZ9ut9QDI6qsa6cpUuB+A/I+zLtdNK4n2DQ==
|
||||||
|
|
||||||
iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13:
|
iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@~0.4.13:
|
||||||
version "0.4.24"
|
version "0.4.24"
|
||||||
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
|
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
|
||||||
integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
|
integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
|
||||||
|
@ -5522,13 +5463,6 @@ iferr@^0.1.5:
|
||||||
resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501"
|
resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501"
|
||||||
integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE=
|
integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE=
|
||||||
|
|
||||||
ignore-walk@^3.0.1:
|
|
||||||
version "3.0.3"
|
|
||||||
resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37"
|
|
||||||
integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==
|
|
||||||
dependencies:
|
|
||||||
minimatch "^3.0.4"
|
|
||||||
|
|
||||||
ignore@^3.3.5:
|
ignore@^3.3.5:
|
||||||
version "3.3.10"
|
version "3.3.10"
|
||||||
resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043"
|
resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043"
|
||||||
|
@ -5632,7 +5566,7 @@ inherits@2.0.3:
|
||||||
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
|
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
|
||||||
integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
|
integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
|
||||||
|
|
||||||
ini@^1.3.5, ini@~1.3.0:
|
ini@^1.3.5:
|
||||||
version "1.3.5"
|
version "1.3.5"
|
||||||
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927"
|
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927"
|
||||||
integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==
|
integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==
|
||||||
|
@ -7235,14 +7169,6 @@ minipass-pipeline@^1.2.2:
|
||||||
dependencies:
|
dependencies:
|
||||||
minipass "^3.0.0"
|
minipass "^3.0.0"
|
||||||
|
|
||||||
minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0:
|
|
||||||
version "2.9.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6"
|
|
||||||
integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==
|
|
||||||
dependencies:
|
|
||||||
safe-buffer "^5.1.2"
|
|
||||||
yallist "^3.0.0"
|
|
||||||
|
|
||||||
minipass@^3.0.0, minipass@^3.1.1:
|
minipass@^3.0.0, minipass@^3.1.1:
|
||||||
version "3.1.1"
|
version "3.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.1.tgz#7607ce778472a185ad6d89082aa2070f79cedcd5"
|
resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.1.tgz#7607ce778472a185ad6d89082aa2070f79cedcd5"
|
||||||
|
@ -7250,13 +7176,6 @@ minipass@^3.0.0, minipass@^3.1.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
yallist "^4.0.0"
|
yallist "^4.0.0"
|
||||||
|
|
||||||
minizlib@^1.2.1:
|
|
||||||
version "1.3.3"
|
|
||||||
resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d"
|
|
||||||
integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==
|
|
||||||
dependencies:
|
|
||||||
minipass "^2.9.0"
|
|
||||||
|
|
||||||
mississippi@^3.0.0:
|
mississippi@^3.0.0:
|
||||||
version "3.0.0"
|
version "3.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022"
|
resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022"
|
||||||
|
@ -7289,7 +7208,7 @@ mixin-object@^2.0.1:
|
||||||
for-in "^0.1.3"
|
for-in "^0.1.3"
|
||||||
is-extendable "^0.1.1"
|
is-extendable "^0.1.1"
|
||||||
|
|
||||||
mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1:
|
mkdirp@^0.5.1, mkdirp@~0.5.1:
|
||||||
version "0.5.5"
|
version "0.5.5"
|
||||||
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
|
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
|
||||||
integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==
|
integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==
|
||||||
|
@ -7368,15 +7287,6 @@ natural-compare@^1.4.0:
|
||||||
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
|
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
|
||||||
integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
|
integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
|
||||||
|
|
||||||
needle@^2.2.1:
|
|
||||||
version "2.4.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/needle/-/needle-2.4.1.tgz#14af48732463d7475696f937626b1b993247a56a"
|
|
||||||
integrity sha512-x/gi6ijr4B7fwl6WYL9FwlCvRQKGlUNvnceho8wxkwXqN8jvVmmmATTmZPRRG7b/yC1eode26C2HO9jl78Du9g==
|
|
||||||
dependencies:
|
|
||||||
debug "^3.2.6"
|
|
||||||
iconv-lite "^0.4.4"
|
|
||||||
sax "^1.2.4"
|
|
||||||
|
|
||||||
negotiator@0.6.2:
|
negotiator@0.6.2:
|
||||||
version "0.6.2"
|
version "0.6.2"
|
||||||
resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
|
resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
|
||||||
|
@ -7468,35 +7378,11 @@ node-notifier@^5.4.2:
|
||||||
shellwords "^0.1.1"
|
shellwords "^0.1.1"
|
||||||
which "^1.3.0"
|
which "^1.3.0"
|
||||||
|
|
||||||
node-pre-gyp@*:
|
|
||||||
version "0.14.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz#9a0596533b877289bcad4e143982ca3d904ddc83"
|
|
||||||
integrity sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA==
|
|
||||||
dependencies:
|
|
||||||
detect-libc "^1.0.2"
|
|
||||||
mkdirp "^0.5.1"
|
|
||||||
needle "^2.2.1"
|
|
||||||
nopt "^4.0.1"
|
|
||||||
npm-packlist "^1.1.6"
|
|
||||||
npmlog "^4.0.2"
|
|
||||||
rc "^1.2.7"
|
|
||||||
rimraf "^2.6.1"
|
|
||||||
semver "^5.3.0"
|
|
||||||
tar "^4.4.2"
|
|
||||||
|
|
||||||
node-releases@^1.1.52, node-releases@^1.1.53:
|
node-releases@^1.1.52, node-releases@^1.1.53:
|
||||||
version "1.1.53"
|
version "1.1.53"
|
||||||
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.53.tgz#2d821bfa499ed7c5dffc5e2f28c88e78a08ee3f4"
|
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.53.tgz#2d821bfa499ed7c5dffc5e2f28c88e78a08ee3f4"
|
||||||
integrity sha512-wp8zyQVwef2hpZ/dJH7SfSrIPD6YoJz6BDQDpGEkcA0s3LpAQoxBIYmfIq6QAhC1DhwsyCgTaTTcONwX8qzCuQ==
|
integrity sha512-wp8zyQVwef2hpZ/dJH7SfSrIPD6YoJz6BDQDpGEkcA0s3LpAQoxBIYmfIq6QAhC1DhwsyCgTaTTcONwX8qzCuQ==
|
||||||
|
|
||||||
nopt@^4.0.1:
|
|
||||||
version "4.0.3"
|
|
||||||
resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48"
|
|
||||||
integrity sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==
|
|
||||||
dependencies:
|
|
||||||
abbrev "1"
|
|
||||||
osenv "^0.1.4"
|
|
||||||
|
|
||||||
normalize-package-data@^2.3.2:
|
normalize-package-data@^2.3.2:
|
||||||
version "2.5.0"
|
version "2.5.0"
|
||||||
resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
|
resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
|
||||||
|
@ -7539,27 +7425,6 @@ normalize-url@^3.0.0:
|
||||||
resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559"
|
resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559"
|
||||||
integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==
|
integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==
|
||||||
|
|
||||||
npm-bundled@^1.0.1:
|
|
||||||
version "1.1.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b"
|
|
||||||
integrity sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==
|
|
||||||
dependencies:
|
|
||||||
npm-normalize-package-bin "^1.0.1"
|
|
||||||
|
|
||||||
npm-normalize-package-bin@^1.0.1:
|
|
||||||
version "1.0.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2"
|
|
||||||
integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==
|
|
||||||
|
|
||||||
npm-packlist@^1.1.6:
|
|
||||||
version "1.4.8"
|
|
||||||
resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e"
|
|
||||||
integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==
|
|
||||||
dependencies:
|
|
||||||
ignore-walk "^3.0.1"
|
|
||||||
npm-bundled "^1.0.1"
|
|
||||||
npm-normalize-package-bin "^1.0.1"
|
|
||||||
|
|
||||||
npm-run-path@^2.0.0:
|
npm-run-path@^2.0.0:
|
||||||
version "2.0.2"
|
version "2.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
|
resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
|
||||||
|
@ -7567,16 +7432,6 @@ npm-run-path@^2.0.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
path-key "^2.0.0"
|
path-key "^2.0.0"
|
||||||
|
|
||||||
npmlog@^4.0.2:
|
|
||||||
version "4.1.2"
|
|
||||||
resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
|
|
||||||
integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==
|
|
||||||
dependencies:
|
|
||||||
are-we-there-yet "~1.1.2"
|
|
||||||
console-control-strings "~1.1.0"
|
|
||||||
gauge "~2.7.3"
|
|
||||||
set-blocking "~2.0.0"
|
|
||||||
|
|
||||||
nth-check@^1.0.2, nth-check@~1.0.1:
|
nth-check@^1.0.2, nth-check@~1.0.1:
|
||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c"
|
resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c"
|
||||||
|
@ -7786,11 +7641,6 @@ os-browserify@^0.3.0:
|
||||||
resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27"
|
resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27"
|
||||||
integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=
|
integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=
|
||||||
|
|
||||||
os-homedir@^1.0.0:
|
|
||||||
version "1.0.2"
|
|
||||||
resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
|
|
||||||
integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M=
|
|
||||||
|
|
||||||
os-locale@^3.0.0:
|
os-locale@^3.0.0:
|
||||||
version "3.1.0"
|
version "3.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a"
|
resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a"
|
||||||
|
@ -7800,19 +7650,11 @@ os-locale@^3.0.0:
|
||||||
lcid "^2.0.0"
|
lcid "^2.0.0"
|
||||||
mem "^4.0.0"
|
mem "^4.0.0"
|
||||||
|
|
||||||
os-tmpdir@^1.0.0, os-tmpdir@~1.0.2:
|
os-tmpdir@~1.0.2:
|
||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
|
resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
|
||||||
integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=
|
integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=
|
||||||
|
|
||||||
osenv@^0.1.4:
|
|
||||||
version "0.1.5"
|
|
||||||
resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410"
|
|
||||||
integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==
|
|
||||||
dependencies:
|
|
||||||
os-homedir "^1.0.0"
|
|
||||||
os-tmpdir "^1.0.0"
|
|
||||||
|
|
||||||
p-defer@^1.0.0:
|
p-defer@^1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c"
|
resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c"
|
||||||
|
@ -9127,16 +8969,6 @@ raw-body@2.4.0:
|
||||||
iconv-lite "0.4.24"
|
iconv-lite "0.4.24"
|
||||||
unpipe "1.0.0"
|
unpipe "1.0.0"
|
||||||
|
|
||||||
rc@^1.2.7:
|
|
||||||
version "1.2.8"
|
|
||||||
resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
|
|
||||||
integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==
|
|
||||||
dependencies:
|
|
||||||
deep-extend "^0.6.0"
|
|
||||||
ini "~1.3.0"
|
|
||||||
minimist "^1.2.0"
|
|
||||||
strip-json-comments "~2.0.1"
|
|
||||||
|
|
||||||
react-app-polyfill@^1.0.6:
|
react-app-polyfill@^1.0.6:
|
||||||
version "1.0.6"
|
version "1.0.6"
|
||||||
resolved "https://registry.yarnpkg.com/react-app-polyfill/-/react-app-polyfill-1.0.6.tgz#890f8d7f2842ce6073f030b117de9130a5f385f0"
|
resolved "https://registry.yarnpkg.com/react-app-polyfill/-/react-app-polyfill-1.0.6.tgz#890f8d7f2842ce6073f030b117de9130a5f385f0"
|
||||||
|
@ -9421,7 +9253,7 @@ read-pkg@^3.0.0:
|
||||||
normalize-package-data "^2.3.2"
|
normalize-package-data "^2.3.2"
|
||||||
path-type "^3.0.0"
|
path-type "^3.0.0"
|
||||||
|
|
||||||
"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6:
|
"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6:
|
||||||
version "2.3.7"
|
version "2.3.7"
|
||||||
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
|
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
|
||||||
integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
|
integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
|
||||||
|
@ -9787,7 +9619,7 @@ rimraf@2.6.3:
|
||||||
dependencies:
|
dependencies:
|
||||||
glob "^7.1.3"
|
glob "^7.1.3"
|
||||||
|
|
||||||
rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3, rimraf@^2.7.1:
|
rimraf@^2.5.4, rimraf@^2.6.3, rimraf@^2.7.1:
|
||||||
version "2.7.1"
|
version "2.7.1"
|
||||||
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
|
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
|
||||||
integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
|
integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
|
||||||
|
@ -9945,7 +9777,7 @@ semantic-ui-react@^0.88.2:
|
||||||
react-popper "^1.3.4"
|
react-popper "^1.3.4"
|
||||||
shallowequal "^1.1.0"
|
shallowequal "^1.1.0"
|
||||||
|
|
||||||
"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0:
|
"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0:
|
||||||
version "5.7.1"
|
version "5.7.1"
|
||||||
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
|
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
|
||||||
integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
|
integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
|
||||||
|
@ -10007,7 +9839,7 @@ serve-static@1.14.1:
|
||||||
parseurl "~1.3.3"
|
parseurl "~1.3.3"
|
||||||
send "0.17.1"
|
send "0.17.1"
|
||||||
|
|
||||||
set-blocking@^2.0.0, set-blocking@~2.0.0:
|
set-blocking@^2.0.0:
|
||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
|
resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
|
||||||
integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
|
integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
|
||||||
|
@ -10419,7 +10251,7 @@ string-width@^1.0.1:
|
||||||
is-fullwidth-code-point "^1.0.0"
|
is-fullwidth-code-point "^1.0.0"
|
||||||
strip-ansi "^3.0.0"
|
strip-ansi "^3.0.0"
|
||||||
|
|
||||||
"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1:
|
string-width@^2.0.0, string-width@^2.1.1:
|
||||||
version "2.1.1"
|
version "2.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
|
resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
|
||||||
integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==
|
integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==
|
||||||
|
@ -10560,11 +10392,6 @@ strip-json-comments@^3.0.1:
|
||||||
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.0.tgz#7638d31422129ecf4457440009fba03f9f9ac180"
|
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.0.tgz#7638d31422129ecf4457440009fba03f9f9ac180"
|
||||||
integrity sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w==
|
integrity sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w==
|
||||||
|
|
||||||
strip-json-comments@~2.0.1:
|
|
||||||
version "2.0.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
|
|
||||||
integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo=
|
|
||||||
|
|
||||||
style-loader@0.23.1:
|
style-loader@0.23.1:
|
||||||
version "0.23.1"
|
version "0.23.1"
|
||||||
resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.23.1.tgz#cb9154606f3e771ab6c4ab637026a1049174d925"
|
resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.23.1.tgz#cb9154606f3e771ab6c4ab637026a1049174d925"
|
||||||
|
@ -10673,19 +10500,6 @@ tapable@^1.0.0, tapable@^1.1.3:
|
||||||
resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2"
|
resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2"
|
||||||
integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==
|
integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==
|
||||||
|
|
||||||
tar@^4.4.2:
|
|
||||||
version "4.4.13"
|
|
||||||
resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525"
|
|
||||||
integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==
|
|
||||||
dependencies:
|
|
||||||
chownr "^1.1.1"
|
|
||||||
fs-minipass "^1.2.5"
|
|
||||||
minipass "^2.8.6"
|
|
||||||
minizlib "^1.2.1"
|
|
||||||
mkdirp "^0.5.0"
|
|
||||||
safe-buffer "^5.1.2"
|
|
||||||
yallist "^3.0.3"
|
|
||||||
|
|
||||||
terser-webpack-plugin@2.3.4:
|
terser-webpack-plugin@2.3.4:
|
||||||
version "2.3.4"
|
version "2.3.4"
|
||||||
resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-2.3.4.tgz#ac045703bd8da0936ce910d8fb6350d0e1dee5fe"
|
resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-2.3.4.tgz#ac045703bd8da0936ce910d8fb6350d0e1dee5fe"
|
||||||
|
@ -11398,13 +11212,6 @@ which@^2.0.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
isexe "^2.0.0"
|
isexe "^2.0.0"
|
||||||
|
|
||||||
wide-align@^1.1.0:
|
|
||||||
version "1.1.3"
|
|
||||||
resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457"
|
|
||||||
integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==
|
|
||||||
dependencies:
|
|
||||||
string-width "^1.0.2 || 2"
|
|
||||||
|
|
||||||
word-wrap@~1.2.3:
|
word-wrap@~1.2.3:
|
||||||
version "1.2.3"
|
version "1.2.3"
|
||||||
resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"
|
resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"
|
||||||
|
@ -11631,7 +11438,7 @@ xtend@^4.0.0, xtend@~4.0.1:
|
||||||
resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b"
|
resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b"
|
||||||
integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==
|
integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==
|
||||||
|
|
||||||
yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3:
|
yallist@^3.0.2:
|
||||||
version "3.1.1"
|
version "3.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"
|
resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"
|
||||||
integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
|
integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
|
||||||
|
|
Loading…
Reference in a new issue