Upgrade eslint to 4.8.0 (#445)

* Upgrade eslint

* Fix post-merge errors
This commit is contained in:
Andrey 2017-10-09 07:08:06 +03:00 committed by Paulus Schoutsen
parent 121c0d0879
commit bc0d44ca81
74 changed files with 651 additions and 639 deletions

View File

@ -40,6 +40,9 @@
"no-multi-assign": 0,
"radix": 0,
"no-alert": 0,
"prefer-destructuring": 0,
"no-restricted-globals": 0,
"prefer-promise-reject-errors": 0,
"import/prefer-default-export": 0,
"react/jsx-no-bind": [2, { "ignoreRefs": true }],
"react/jsx-no-duplicate-props": 2,

View File

@ -43,7 +43,9 @@ export default class Automation extends Component {
}
render({ automation, isWide }) {
const { alias, trigger, condition, action } = automation;
const {
alias, trigger, condition, action
} = automation;
return (
<div>

View File

@ -11,7 +11,9 @@ export default class NumericStateTrigger extends Component {
/* eslint-disable camelcase */
render({ trigger }) {
const { value_template, entity_id, below, above } = trigger;
const {
value_template, entity_id, below, above
} = trigger;
return (
<div>
<paper-input

View File

@ -11,7 +11,9 @@ export default class NumericStateCondition extends Component {
/* eslint-disable camelcase */
render({ condition }) {
const { value_template, entity_id, below, above } = condition;
const {
value_template, entity_id, below, above
} = condition;
return (
<div>
<paper-input

View File

@ -25,7 +25,9 @@ export default class SunCondition extends Component {
render({ condition }) {
/* eslint-disable camelcase */
const { after, after_offset, before, before_offset } = condition;
const {
after, after_offset, before, before_offset
} = condition;
return (
<div>
<label id="beforelabel">Before:</label>

View File

@ -74,5 +74,4 @@ export default class Action extends Component {
</div>
);
}
}

View File

@ -42,5 +42,4 @@ export default class Action extends Component {
</paper-card>
);
}
}

View File

@ -34,9 +34,9 @@
"bower": "^1.8.2",
"css-slam": "^2.0.2",
"del": "^3.0.0",
"eslint": "^3.19.0",
"eslint-config-airbnb-base": "^11.1.3",
"eslint-plugin-html": "^2.0.1",
"eslint": "^4.8.0",
"eslint-config-airbnb-base": "^12.0.2",
"eslint-plugin-html": "^3.2.2",
"eslint-plugin-import": "^2.2.0",
"eslint-plugin-react": "^7.0.0",
"gulp": "^3.9.1",

View File

@ -239,28 +239,26 @@ Polymer({
},
_updateComponent: function () {
this._rendered = window.AutomationEditor(
this.$.root, {
automation: this.config,
onChange: this.configChanged,
isWide: this.isWide,
}, this._rendered);
this._rendered = window.AutomationEditor(this.$.root, {
automation: this.config,
onChange: this.configChanged,
isWide: this.isWide,
}, this._rendered);
},
saveAutomation: function () {
var id = this.creatingNew ? '' + Date.now() : this.automation.attributes.id;
this.hass.callApi(
'post', 'config/automation/config/' + id, this.config).then(function () {
this.dirty = false;
this.hass.callApi('post', 'config/automation/config/' + id, this.config).then(function () {
this.dirty = false;
if (this.creatingNew) {
history.replaceState(null, null, '/config/automation/edit/' + id);
this.fire('location-changed');
}
}.bind(this), function (errors) {
this.errors = errors.body.message;
throw errors;
}.bind(this));
if (this.creatingNew) {
history.replaceState(null, null, '/config/automation/edit/' + id);
this.fire('location-changed');
}
}.bind(this), function (errors) {
this.errors = errors.body.message;
throw errors;
}.bind(this));
},
computeName: function (automation) {

View File

@ -119,8 +119,7 @@ Polymer({
},
automationTapped: function (ev) {
history.pushState(
null, null, '/config/automation/edit/' + this.automations[ev.model.index].attributes.id);
history.pushState(null, null, '/config/automation/edit/' + this.automations[ev.model.index].attributes.id);
this.fire('location-changed');
},

View File

@ -74,8 +74,7 @@ class HaConfigCloudAccount extends window.hassMixins.EventsMixin(Polymer.Element
}
handleLogout() {
this.hass.callApi('post', 'cloud/logout').then(
() => this.fire('ha-account-refreshed', { account: null }));
this.hass.callApi('post', 'cloud/logout').then(() => this.fire('ha-account-refreshed', { account: null }));
}
}

View File

@ -113,8 +113,7 @@
<script>
class HaConfigCloudForgotPassword extends
window.hassMixins.NavigateMixin(
window.hassMixins.EventsMixin(Polymer.Element)) {
window.hassMixins.NavigateMixin(window.hassMixins.EventsMixin(Polymer.Element)) {
static get is() { return 'ha-config-cloud-forgot-password'; }
static get properties() {
@ -180,15 +179,14 @@ class HaConfigCloudForgotPassword extends
this.hass.callApi('post', 'cloud/forgot_password', {
email: this.email,
}).then(
() => {
this._hasToken = true;
this._requestInProgress = false;
}, (err) => {
this._requestInProgress = false;
this.error = err && err.body && err.body.message ?
err.body.message : 'Unknown error';
});
}).then(() => {
this._hasToken = true;
this._requestInProgress = false;
}, (err) => {
this._requestInProgress = false;
this.error = err && err.body && err.body.message ?
err.body.message : 'Unknown error';
});
}
_handleHaveToken() {
@ -219,16 +217,15 @@ class HaConfigCloudForgotPassword extends
email: this.email,
confirmation_code: this._confirmationCode,
new_password: this._newPassword,
}).then(
() => {
// eslint-disable-next-line
}).then(() => {
// eslint-disable-next-line
alert('Password reset successful! You can now login.');
this.navigate('config/cloud/login');
}, (err) => {
this._requestInProgress = false;
this.error = err && err.body && err.body.message ?
err.body.message : 'Unknown error';
});
this.navigate('config/cloud/login');
}, (err) => {
this._requestInProgress = false;
this.error = err && err.body && err.body.message ?
err.body.message : 'Unknown error';
});
}
}

View File

@ -101,8 +101,7 @@
<script>
class HaConfigCloudLogin extends
window.hassMixins.NavigateMixin(
window.hassMixins.EventsMixin(Polymer.Element)) {
window.hassMixins.NavigateMixin(window.hassMixins.EventsMixin(Polymer.Element)) {
static get is() { return 'ha-config-cloud-login'; }
static get properties() {
@ -156,27 +155,26 @@ class HaConfigCloudLogin extends
this.hass.callApi('post', 'cloud/login', {
email: this.email,
password: this._password,
}).then(
(account) => {
this.fire('ha-account-refreshed', { account: account });
this.email = '';
this._password = '';
}, (err) => {
this._password = '';
this._requestInProgress = false;
if (!err || !err.body || !err.body.message) {
this.error = 'Unknown error';
return;
} else if (err.body.code === 'UserNotConfirmed') {
alert('You need to confirm your email before logging in.');
this.navigate('/config/cloud/register#confirm');
return;
} else if (err.body.code === 'PasswordChangeRequired') {
alert('You need to change your password before logging in.');
this.navigate('/config/cloud/forgot-password');
}
this.error = err.body.message;
});
}).then((account) => {
this.fire('ha-account-refreshed', { account: account });
this.email = '';
this._password = '';
}, (err) => {
this._password = '';
this._requestInProgress = false;
if (!err || !err.body || !err.body.message) {
this.error = 'Unknown error';
return;
} else if (err.body.code === 'UserNotConfirmed') {
alert('You need to confirm your email before logging in.');
this.navigate('/config/cloud/register#confirm');
return;
} else if (err.body.code === 'PasswordChangeRequired') {
alert('You need to change your password before logging in.');
this.navigate('/config/cloud/forgot-password');
}
this.error = err.body.message;
});
}
_handleRegister() {

View File

@ -134,8 +134,7 @@
<script>
class HaConfigCloudRegister extends
window.hassMixins.NavigateMixin(
window.hassMixins.EventsMixin(Polymer.Element)) {
window.hassMixins.NavigateMixin(window.hassMixins.EventsMixin(Polymer.Element)) {
static get is() { return 'ha-config-cloud-register'; }
static get properties() {
@ -202,16 +201,15 @@ class HaConfigCloudRegister extends
this.hass.callApi('post', 'cloud/register', {
email: this.email,
password: this._password,
}).then(
() => {
this._requestInProgress = false;
this._hasConfirmationCode = true;
}, (err) => {
this._password = '';
this._requestInProgress = false;
this._error = err && err.body && err.body.message ?
err.body.message : 'Unknown error';
});
}).then(() => {
this._requestInProgress = false;
this._hasConfirmationCode = true;
}, (err) => {
this._password = '';
this._requestInProgress = false;
this._error = err && err.body && err.body.message ?
err.body.message : 'Unknown error';
});
}
_handleShowVerifyAccount() {
@ -234,17 +232,16 @@ class HaConfigCloudRegister extends
this.hass.callApi('post', 'cloud/confirm_register', {
email: this.email,
confirmation_code: this._confirmationCode,
}).then(
() => {
// eslint-disable-next-line
}).then(() => {
// eslint-disable-next-line
alert('Confirmation successful. You can now login.');
this.navigate('config/cloud/login');
}, (err) => {
this._confirmationCode = '';
this._error = err && err.body && err.body.message ?
err.body.message : 'Unknown error';
this._requestInProgress = false;
});
this.navigate('config/cloud/login');
}, (err) => {
this._confirmationCode = '';
this._error = err && err.body && err.body.message ?
err.body.message : 'Unknown error';
this._requestInProgress = false;
});
}
}

View File

@ -75,7 +75,6 @@
<script>
class HaConfigCore extends Polymer.Element {
static get is() { return 'ha-config-core'; }
static get properties() {

View File

@ -130,7 +130,6 @@
<script>
class HaConfigSectionCore extends Polymer.Element {
static get is() { return 'ha-config-section-core'; }
static get properties() {

View File

@ -36,7 +36,6 @@
<script>
class HaConfigSectionGroup extends Polymer.Element {
static get is() { return 'ha-config-section-group'; }
static get properties() {

View File

@ -66,7 +66,6 @@
<script>
class HaConfigSectionHassbian extends Polymer.Element {
static get is() { return 'ha-config-section-hassbian'; }
static get properties() {

View File

@ -35,7 +35,6 @@
<script>
class HaConfigSectionThemes extends window.hassMixins.EventsMixin(Polymer.Element) {
static get is() { return 'ha-config-section-themes'; }
static get properties() {

View File

@ -132,7 +132,6 @@
<script>
class HaFormGroup extends Polymer.Element {
static get is() { return 'ha-form-group'; }
static get properties() {

View File

@ -33,7 +33,6 @@
<script>
class HaCustomizeAttribute extends Polymer.Element {
static get is() { return 'ha-customize-attribute'; }
static get properties() {

View File

@ -21,7 +21,6 @@
<script>
class HaFormCustomizeAttributes extends Polymer.MutableData(Polymer.Element) {
static get is() { return 'ha-form-customize-attributes'; }
static get properties() {

View File

@ -72,7 +72,6 @@
<script>
class HaFormCustomize extends Polymer.Element {
static get is() { return 'ha-form-customize'; }
static get properties() {
@ -139,17 +138,17 @@ class HaFormCustomize extends Polymer.Element {
loadEntity(entity) {
this.entity = entity;
return this.hass.callApi('GET', 'config/customize/config/' + entity.entity_id)
.then((data) => {
this.localConfig = data.local;
this.globalConfig = data.global;
this.newAttributes = [];
});
.then((data) => {
this.localConfig = data.local;
this.globalConfig = data.global;
this.newAttributes = [];
});
}
saveEntity() {
const data = {};
const attrs = this.localAttributes.concat(
this.globalAttributes, this.existingAttributes, this.newAttributes);
const attrs = this.localAttributes
.concat(this.globalAttributes, this.existingAttributes, this.newAttributes);
attrs.forEach((attr) => {
if (attr.closed || attr.secondary || !attr.attribute || !attr.value) return;
const value = attr.type === 'json' ? JSON.parse(attr.value) : attr.value;
@ -190,14 +189,14 @@ class HaFormCustomize extends Polymer.Element {
const localKeys = Object.keys(localConfig);
const globalKeys = Object.keys(globalConfig);
const entityKeys = Object.keys(entity.attributes)
.filter(key => !localKeys.includes(key) && !globalKeys.includes(key));
.filter(key => !localKeys.includes(key) && !globalKeys.includes(key));
return this._computeAttributes(entity.attributes, entityKeys, true);
}
computeShowWarning(localConfig, globalConfig) {
if (!localConfig || !globalConfig) return false;
return Object.keys(localConfig).some(
key => JSON.stringify(globalConfig[key]) !== JSON.stringify(localConfig[key]));
return Object.keys(localConfig)
.some(key => JSON.stringify(globalConfig[key]) !== JSON.stringify(localConfig[key]));
}
filterFromAttributes(attributes) {
@ -207,15 +206,15 @@ class HaFormCustomize extends Polymer.Element {
getNewAttributesOptions(localAttributes, globalAttributes, existingAttributes, newAttributes) {
const knownKeys =
Object.keys(window.hassAttributeUtil.LOGIC_STATE_ATTRIBUTES)
.filter((key) => {
const conf = window.hassAttributeUtil.LOGIC_STATE_ATTRIBUTES[key];
return conf && (!conf.domains || !this.entity ||
.filter((key) => {
const conf = window.hassAttributeUtil.LOGIC_STATE_ATTRIBUTES[key];
return conf && (!conf.domains || !this.entity ||
conf.domains.includes(window.hassUtil.computeDomain(this.entity)));
})
.filter(this.filterFromAttributes(localAttributes))
.filter(this.filterFromAttributes(globalAttributes))
.filter(this.filterFromAttributes(existingAttributes))
.filter(this.filterFromAttributes(newAttributes));
})
.filter(this.filterFromAttributes(localAttributes))
.filter(this.filterFromAttributes(globalAttributes))
.filter(this.filterFromAttributes(existingAttributes))
.filter(this.filterFromAttributes(newAttributes));
return knownKeys.sort().concat('Other');
}
@ -268,7 +267,11 @@ class HaFormCustomize extends Polymer.Element {
this.hasNewAttributes =
this.newAttributes && this.newAttributes.some(attr => !attr.closed);
this.newAttributesOptions = this.getNewAttributesOptions(
this.localAttributes, this.globalAttributes, this.existingAttributes, this.newAttributes);
this.localAttributes,
this.globalAttributes,
this.existingAttributes,
this.newAttributes
);
}
}
customElements.define(HaFormCustomize.is, HaFormCustomize);

View File

@ -31,7 +31,6 @@
<script>
class HaCustomizeArray extends window.hassMixins.EventsMixin(Polymer.Element) {
static get is() { return 'ha-customize-array'; }
static get properties() {
@ -58,7 +57,6 @@ class HaCustomizeArray extends window.hassMixins.EventsMixin(Polymer.Element) {
const options = this.getOptions(item);
return options.indexOf(item.value);
}
}
customElements.define(HaCustomizeArray.is, HaCustomizeArray);
</script>

View File

@ -14,7 +14,6 @@
<script>
class HaCustomizeBoolean extends Polymer.Element {
static get is() { return 'ha-customize-boolean'; }
static get properties() {

View File

@ -27,7 +27,6 @@
<script>
class HaCustomizeIcon extends Polymer.Element {
static get is() { return 'ha-customize-icon'; }
static get properties() {

View File

@ -30,7 +30,6 @@
<script>
class HaCustomizeKeyValue extends Polymer.Element {
static get is() { return 'ha-customize-key-value'; }
static get properties() {

View File

@ -13,7 +13,6 @@
<script>
class HaCustomizeString extends Polymer.Element {
static get is() { return 'ha-customize-string'; }
static get properties() {

View File

@ -74,8 +74,7 @@ Polymer({
},
_computeLoaded: function (hass, component) {
return component.loaded || window.hassUtil.isComponentLoaded(
hass, component.domain);
return component.loaded || window.hassUtil.isComponentLoaded(hass, component.domain);
},
_computeCaption: function (component) {
@ -87,8 +86,7 @@ Polymer({
},
_navigate: function (ev) {
history.pushState(
null, null, '/config/' + ev.model.item.domain);
history.pushState(null, null, '/config/' + ev.model.item.domain);
this.fire('location-changed');
},
});

View File

@ -132,9 +132,7 @@ class HaPanelConfig extends window.hassMixins.EventsMixin(Polymer.Element) {
ready() {
super.ready();
if (window.hassUtil.isComponentLoaded(this.hass, 'cloud')) {
this.hass.callApi('get', 'cloud/account').then(
(account) => { this.account = account; }
);
this.hass.callApi('get', 'cloud/account').then((account) => { this.account = account; });
}
this.addEventListener('ha-account-refreshed', (ev) => {
this.account = ev.detail.account;

View File

@ -234,28 +234,26 @@ Polymer({
},
_updateComponent: function () {
this._rendered = window.ScriptEditor(
this.$.root, {
script: this.config,
onChange: this.configChanged,
isWide: this.isWide,
}, this._rendered);
this._rendered = window.ScriptEditor(this.$.root, {
script: this.config,
onChange: this.configChanged,
isWide: this.isWide,
}, this._rendered);
},
saveScript: function () {
var id = this.creatingNew ? '' + Date.now() : window.hassUtil.computeObjectId(this.script);
this.hass.callApi(
'post', 'config/script/config/' + id, this.config).then(function () {
this.dirty = false;
this.hass.callApi('post', 'config/script/config/' + id, this.config).then(function () {
this.dirty = false;
if (this.creatingNew) {
history.replaceState(null, null, '/config/script/edit/' + id);
this.fire('location-changed');
}
}.bind(this), function (errors) {
this.errors = errors.body.message;
throw errors;
}.bind(this));
if (this.creatingNew) {
history.replaceState(null, null, '/config/script/edit/' + id);
this.fire('location-changed');
}
}.bind(this), function (errors) {
this.errors = errors.body.message;
throw errors;
}.bind(this));
},
computeName: function (script) {

View File

@ -115,8 +115,7 @@ Polymer({
},
scriptTapped: function (ev) {
history.pushState(
null, null, '/config/script/edit/' + this.scripts[ev.model.index].entity_id);
history.pushState(null, null, '/config/script/edit/' + this.scripts[ev.model.index].entity_id);
this.fire('location-changed');
},

View File

@ -449,38 +449,33 @@ Polymer({
this.selectedConfigParameterValue = -1;
this.selectedGroup = -1;
this.hass.callApi('GET', 'zwave/config/' + this.nodes[selectedNode].attributes.node_id).then(
(configs) => {
this.config = this._objToArray(configs);
});
this.hass.callApi('GET', 'zwave/config/' + this.nodes[selectedNode].attributes.node_id).then((configs) => {
this.config = this._objToArray(configs);
});
this.hass.callApi('GET', 'zwave/values/' + this.nodes[selectedNode].attributes.node_id).then(
(values) => {
this.values = this._objToArray(values);
});
this.hass.callApi('GET', 'zwave/values/' + this.nodes[selectedNode].attributes.node_id).then((values) => {
this.values = this._objToArray(values);
});
this.hass.callApi('GET', 'zwave/groups/' + this.nodes[selectedNode].attributes.node_id).then(
(groups) => {
this.groups = this._objToArray(groups);
});
this.hass.callApi('GET', 'zwave/groups/' + this.nodes[selectedNode].attributes.node_id).then((groups) => {
this.groups = this._objToArray(groups);
});
this.hasNodeUserCodes = false;
this.notifyPath('hasNodeUserCodes');
this.hass.callApi('GET', 'zwave/usercodes/' + this.nodes[selectedNode].attributes.node_id).then(
(usercodes) => {
this.userCodes = this._objToArray(usercodes);
this.hasNodeUserCodes = this.userCodes.length > 0;
this.notifyPath('hasNodeUserCodes');
});
this.hass.callApi('GET', 'zwave/usercodes/' + this.nodes[selectedNode].attributes.node_id).then((usercodes) => {
this.userCodes = this._objToArray(usercodes);
this.hasNodeUserCodes = this.userCodes.length > 0;
this.notifyPath('hasNodeUserCodes');
});
},
selectedEntityChanged: function (selectedEntity) {
if (selectedEntity === -1) return;
var el = this;
el.hass.callApi('GET', 'zwave/values/' + el.nodes[el.selectedNode].attributes.node_id).then(
(values) => {
el.values = el._objToArray(values);
});
el.hass.callApi('GET', 'zwave/values/' + el.nodes[el.selectedNode].attributes.node_id).then((values) => {
el.values = el._objToArray(values);
});
var valueId = el.entities[selectedEntity].attributes.value_id;
var valueData = el.values.find(function (obj) { return obj.key === valueId; });
@ -532,8 +527,10 @@ Polymer({
},
computeNodeNameServiceData: function (newNodeNameInput) {
return { node_id: this.nodes[this.selectedNode].attributes.node_id,
name: newNodeNameInput };
return {
node_id: this.nodes[this.selectedNode].attributes.node_id,
name: newNodeNameInput
};
},
computeRefreshEntityServiceData: function (selectedEntity) {
@ -555,8 +552,7 @@ Polymer({
ignored: this.entityIgnored,
polling_intensity: parseInt(this.entityPollingIntensity),
};
return this.hass.callApi(
'POST', 'config/zwave/device_config/' + this.entities[this.selectedEntity].entity_id, data);
return this.hass.callApi('POST', 'config/zwave/device_config/' + this.entities[this.selectedEntity].entity_id, data);
},
toggleHelp: function () {

View File

@ -220,25 +220,26 @@ Polymer({
computeAssocServiceData: function (selectedGroup, type) {
if (!this.groups === -1 || selectedGroup === -1 || this.selectedNode === -1) return -1;
return { node_id: this.nodes[this.selectedNode].attributes.node_id,
return {
node_id: this.nodes[this.selectedNode].attributes.node_id,
association: type,
target_node_id: this.nodes[this.selectedTargetNode].attributes.node_id,
group: this.groups[selectedGroup].key };
group: this.groups[selectedGroup].key
};
},
refreshGroups: function (selectedNode) {
var groupData = [];
this.hass.callApi('GET', 'zwave/groups/' + this.nodes[selectedNode].attributes.node_id).then(
function (groups) {
Object.keys(groups).forEach(function (key) {
groupData.push({
key: key,
value: groups[key],
});
this.hass.callApi('GET', 'zwave/groups/' + this.nodes[selectedNode].attributes.node_id).then(function (groups) {
Object.keys(groups).forEach(function (key) {
groupData.push({
key: key,
value: groups[key],
});
this.groups = groupData;
this.selectedGroupChanged(this.selectedGroup);
}.bind(this));
});
this.groups = groupData;
this.selectedGroupChanged(this.selectedGroup);
}.bind(this));
},
selectedGroupChanged: function (selectedGroup) {

View File

@ -236,8 +236,10 @@ Polymer({
},
computeWakeupServiceData: function (wakeupInput) {
return { node_id: this.nodes[this.selectedNode].attributes.node_id,
value: wakeupInput };
return {
node_id: this.nodes[this.selectedNode].attributes.node_id,
value: wakeupInput
};
},
computeConfigValueHelp: function (selectedConfigParameter) {
@ -257,9 +259,11 @@ Polymer({
} if (this.selectedConfigParameterType === 'List') {
valueData = this.selectedConfigParameterValues[selectedConfigValue];
}
return { node_id: this.nodes[this.selectedNode].attributes.node_id,
return {
node_id: this.nodes[this.selectedNode].attributes.node_id,
parameter: this.config[this.selectedConfigParameter].key,
value: valueData };
value: valueData
};
},
selectedConfigParameterChanged: function (selectedConfigParameter) {
@ -300,17 +304,16 @@ Polymer({
refreshConfig: function (selectedNode) {
var configData = [];
this.hass.callApi('GET', 'zwave/config/' + this.nodes[selectedNode].attributes.node_id).then(
function (config) {
Object.keys(config).forEach(function (key) {
configData.push({
key: key,
value: config[key],
});
this.hass.callApi('GET', 'zwave/config/' + this.nodes[selectedNode].attributes.node_id).then(function (config) {
Object.keys(config).forEach(function (key) {
configData.push({
key: key,
value: config[key],
});
this.config = configData;
this.selectedConfigParameterChanged(this.selectedConfigParameter);
}.bind(this));
});
this.config = configData;
this.selectedConfigParameterChanged(this.selectedConfigParameter);
}.bind(this));
},
});
</script>

View File

@ -145,13 +145,17 @@ Polymer({
var valueData = null;
if (type === 'Add') {
valueData = selectedUserCodeValue;
serviceData = { node_id: this.nodes[this.selectedNode].attributes.node_id,
serviceData = {
node_id: this.nodes[this.selectedNode].attributes.node_id,
code_slot: this.selectedUserCode,
usercode: valueData };
usercode: valueData
};
}
if (type === 'Delete') {
serviceData = { node_id: this.nodes[this.selectedNode].attributes.node_id,
code_slot: this.selectedUserCode };
serviceData = {
node_id: this.nodes[this.selectedNode].attributes.node_id,
code_slot: this.selectedUserCode
};
}
return serviceData;
},
@ -159,17 +163,16 @@ Polymer({
refreshUserCodes: function (selectedNode) {
this.selectedUserCodeValue = '';
var userCodes = [];
this.hass.callApi('GET', 'zwave/usercodes/' + this.nodes[selectedNode].attributes.node_id).then(
function (usercodes) {
Object.keys(usercodes).forEach(function (key) {
userCodes.push({
key: key,
value: usercodes[key],
});
this.hass.callApi('GET', 'zwave/usercodes/' + this.nodes[selectedNode].attributes.node_id).then(function (usercodes) {
Object.keys(usercodes).forEach(function (key) {
userCodes.push({
key: key,
value: usercodes[key],
});
this.userCodes = userCodes;
this.selectedUserCodeChanged(this.selectedUserCode);
}.bind(this));
});
this.userCodes = userCodes;
this.selectedUserCodeChanged(this.selectedUserCode);
}.bind(this));
},
});
</script>

View File

@ -122,17 +122,16 @@ Polymer({
refreshValues: function (selectedNode) {
var valueData = [];
this.hass.callApi('GET', 'zwave/values/' + this.nodes[selectedNode].attributes.node_id).then(
function (values) {
Object.keys(values).forEach(function (key) {
valueData.push({
key: key,
value: values[key],
});
this.hass.callApi('GET', 'zwave/values/' + this.nodes[selectedNode].attributes.node_id).then(function (values) {
Object.keys(values).forEach(function (key) {
valueData.push({
key: key,
value: values[key],
});
this.values = valueData;
this.selectedValueChanged(this.selectedValue);
}.bind(this));
});
this.values = valueData;
this.selectedValueChanged(this.selectedValue);
}.bind(this));
},
computeValueNameServiceData: function (newValueNameInput) {

View File

@ -141,10 +141,9 @@ Polymer({
this.errorLog = 'Loading error log…';
this.hass.callApi('GET', 'error_log').then(
function (log) {
this.errorLog = log || 'No errors have been reported.';
}.bind(this));
this.hass.callApi('GET', 'error_log').then(function (log) {
this.errorLog = log || 'No errors have been reported.';
}.bind(this));
},
});
</script>

View File

@ -177,8 +177,7 @@ Polymer({
_computeEndTime: function (_currentDate, periodIndex) {
var startTime = this._computeStartTime(_currentDate);
var endTime = new Date(startTime);
endTime.setDate(
startTime.getDate() + this._computeFilterDays(periodIndex));
endTime.setDate(startTime.getDate() + this._computeFilterDays(periodIndex));
return endTime;
},

View File

@ -52,8 +52,8 @@ Polymer({
var map = this._map = window.L.map(this.$.map);
var style = document.createElement('link');
style.setAttribute('href', window.HASS_DEV ?
'/static/home-assistant-polymer/bower_components/leaflet/dist/leaflet.css' :
'/static/images/leaflet/leaflet.css');
'/static/home-assistant-polymer/bower_components/leaflet/dist/leaflet.css' :
'/static/images/leaflet/leaflet.css');
style.setAttribute('rel', 'stylesheet');
this.$.map.parentNode.appendChild(style);
map.setView([51.505, -0.09], 13);
@ -79,10 +79,10 @@ Polymer({
if (this._mapItems.length === 0) {
this._map.setView(
new window.L.LatLng(this.hass.config.core.latitude, this.hass.config.core.longitude),
14);
14
);
} else {
bounds = new window.L.latLngBounds(
this._mapItems.map(function (item) { return item.getLatLng(); }));
bounds = new window.L.latLngBounds(this._mapItems.map(item => item.getLatLng()));
this._map.fitBounds(bounds.pad(0.5));
}
},

View File

@ -91,7 +91,8 @@ Polymer({
function () {
this.updateCameraFeedSrc(this.stateObj);
}.bind(this),
this.UPDATE_INTERVAL);
this.UPDATE_INTERVAL
);
},
detached: function () {

View File

@ -22,8 +22,10 @@ Polymer({
cardDataChanged: function (newData) {
if (!newData) return;
window.hassUtil.dynamicContentUpdater(this, 'HA-' + newData.cardType.toUpperCase() + '-CARD',
newData);
window.hassUtil.dynamicContentUpdater(
this, 'HA-' + newData.cardType.toUpperCase() + '-CARD',
newData
);
},
});
</script>

View File

@ -153,8 +153,7 @@
}
if (!this.chartEngine) {
this.chartEngine = new window.google.visualization.LineChart(
this.$.chart_id);
this.chartEngine = new window.google.visualization.LineChart(this.$.chart_id);
}
if (!this.attr.forecast) {

View File

@ -129,7 +129,8 @@ Polymer({
currentState = this.stateObj;
this.hass.callService(
serviceDomain, service,
{ entity_id: this.stateObj.entity_id })
{ entity_id: this.stateObj.entity_id }
)
.then(function () {
setTimeout(function () {
// If after 2 seconds we have not received a state update

View File

@ -116,7 +116,7 @@ Polymer({
return window.hassUtil.stateIcon(state);
case 'sun':
return state.state === 'above_horizon' ?
window.hassUtil.domainIcon(domain) : 'mdi:brightness-3';
window.hassUtil.domainIcon(domain) : 'mdi:brightness-3';
default:
return null;
}

View File

@ -57,10 +57,9 @@
if (!stateObj) {
return [];
}
return Object.keys(stateObj.attributes).filter(
function (key) {
return filtersArray.indexOf(key) === -1;
});
return Object.keys(stateObj.attributes).filter(function (key) {
return filtersArray.indexOf(key) === -1;
});
},
formatAttribute: function (attribute) {

View File

@ -189,19 +189,23 @@
'updateCards(columns, states, showIntroduction, panelVisible, viewVisible, orderedGroups)',
],
updateCards: function (columns, states, showIntroduction, panelVisible, viewVisible,
orderedGroups) {
/* eslint-disable no-console */
updateCards: function (
columns,
states,
showIntroduction,
panelVisible,
viewVisible,
orderedGroups
) {
if (!panelVisible || !viewVisible) {
return;
}
this.debounce(
'updateCards', function () {
// Things might have changed since it got scheduled.
if (this.panelVisible && this.viewVisible) {
this.cards = this.computeCards(columns, states, showIntroduction, orderedGroups);
}
}.bind(this), 10);
this.debounce('updateCards', function () {
// Things might have changed since it got scheduled.
if (this.panelVisible && this.viewVisible) {
this.cards = this.computeCards(columns, states, showIntroduction, orderedGroups);
}
}.bind(this), 10);
},
computeCards: function (columns, states, showIntroduction, orderedGroups) {

View File

@ -99,8 +99,7 @@
}, 2010, this);
}
},
}
);
});
</script>
</dom-module>

View File

@ -52,7 +52,8 @@ Polymer({
function () {
// no service worker.
el._setPushSupported(false);
});
}
);
},
handlePushChange: function (ev) {
if (ev.target.checked) {

View File

@ -172,7 +172,6 @@
<script>
class HaSidebar extends window.hassMixins.EventsMixin(Polymer.Element) {
static get is() { return 'ha-sidebar'; }
static get properties() {

View File

@ -22,7 +22,7 @@
}
class StateHistoryChartLine extends
Polymer.mixinBehaviors([Polymer.IronResizableBehavior], Polymer.Element) {
Polymer.mixinBehaviors([Polymer.IronResizableBehavior], Polymer.Element) {
static get is() { return 'state-history-chart-line'; }
static get properties() {
return {
@ -123,8 +123,7 @@
endTime = this.endTime ||
new Date(Math.max.apply(null, deviceStates.map(states =>
new Date(states.states[states.states.length - 1].last_changed)
)));
new Date(states.states[states.states.length - 1].last_changed))));
if (endTime > new Date()) {
endTime = new Date();
}
@ -162,10 +161,9 @@
// if we have to prevent interpolation, we add an old value for each
// value that should not be interpolated at the same time that our new
// line will be published.
data.push([timestamp].concat(prevValues.slice(1).map(
function (val, index) {
return noInterpolationValues[index] ? val : null;
})));
data.push([timestamp].concat(prevValues.slice(1).map(function (val, index) {
return noInterpolationValues[index] ? val : null;
})));
}
data.push(values);
prevValues = values;
@ -174,10 +172,9 @@
if (domain === 'thermostat' || domain === 'climate') {
// We differentiate between thermostats that have a target temperature
// range versus ones that have just a target temperature
hasTargetRange = states.states.reduce(
function (cum, cur) {
return cum || cur.attributes.target_temp_high !== cur.attributes.target_temp_low;
}, false);
hasTargetRange = states.states.reduce(function (cum, cur) {
return cum || cur.attributes.target_temp_high !== cur.attributes.target_temp_low;
}, false);
dataTable.addColumn('number', name + ' current temperature');
@ -193,7 +190,8 @@
var targetLow = saveParseFloat(state.attributes.target_temp_low);
pushData(
[new Date(state.last_changed), curTemp, targetHigh, targetLow],
noInterpolations);
noInterpolations
);
};
} else {
dataTable.addColumn('number', name + ' target temperature');
@ -233,11 +231,13 @@
finalDataTable = dataTables.slice(1).reduce(
function (tot, cur) {
return window.google.visualization.data.join(
tot, cur, 'full', [[0, 0]],
range(1, tot.getNumberOfColumns()),
range(1, cur.getNumberOfColumns()));
tot, cur, 'full', [[0, 0]],
range(1, tot.getNumberOfColumns()),
range(1, cur.getNumberOfColumns())
);
},
dataTables[0]);
dataTables[0]
);
}
this.chartEngine.draw(finalDataTable, options);

View File

@ -3,7 +3,7 @@
<script>
class StateHistoryChartTimeline extends
Polymer.mixinBehaviors([Polymer.IronResizableBehavior], Polymer.Element) {
Polymer.mixinBehaviors([Polymer.IronResizableBehavior], Polymer.Element) {
static get is() { return 'state-history-chart-timeline'; }
static get properties() {
return {
@ -67,19 +67,18 @@ class StateHistoryChartTimeline extends
dataTable.addRow([entityDisplay, stateDisplay, start, end]);
}
startTime = new Date(
stateHistory.reduce(
function (minTime, stateInfo) {
return Math.min(minTime, new Date(stateInfo.data[0].last_changed));
}, new Date()));
startTime = new Date(stateHistory.reduce(function (minTime, stateInfo) {
return Math.min(minTime, new Date(stateInfo.data[0].last_changed));
}, new Date()));
// end time is Math.max(startTime, last_event)
endTime = this.endTime ||
new Date(stateHistory.reduce(
function (maxTime, stateInfo) {
return Math.max(maxTime,
new Date(stateInfo.data[stateInfo.data.length - 1].last_changed));
}, startTime));
new Date(stateHistory.reduce(function (maxTime, stateInfo) {
return Math.max(
maxTime,
new Date(stateInfo.data[stateInfo.data.length - 1].last_changed)
);
}, startTime));
if (endTime > new Date()) {
endTime = new Date();

View File

@ -21,8 +21,7 @@
return;
}
const stateWithUnit = stateInfo.find(
state => 'unit_of_measurement' in state.attributes);
const stateWithUnit = stateInfo.find(state => 'unit_of_measurement' in state.attributes);
const unit = stateWithUnit ?
stateWithUnit.attributes.unit_of_measurement : false;
@ -45,38 +44,36 @@
}
});
const unitStates = Object.keys(lineChartDevices).map(
unit => ({
unit: unit,
data: lineChartDevices[unit].map((states) => {
const last = states[states.length - 1];
const domain = window.hassUtil.computeDomain(last);
return {
domain: domain,
name: window.hassUtil.computeStateName(last),
entity_id: last.entity_id,
states: states.map((state) => {
const result = {
state: state.state,
last_changed: state.last_changed,
};
if (DOMAINS_USE_LAST_UPDATED.indexOf(domain) !== -1) {
result.last_changed = state.last_updated;
const unitStates = Object.keys(lineChartDevices).map(unit => ({
unit: unit,
data: lineChartDevices[unit].map((states) => {
const last = states[states.length - 1];
const domain = window.hassUtil.computeDomain(last);
return {
domain: domain,
name: window.hassUtil.computeStateName(last),
entity_id: last.entity_id,
states: states.map((state) => {
const result = {
state: state.state,
last_changed: state.last_changed,
};
if (DOMAINS_USE_LAST_UPDATED.indexOf(domain) !== -1) {
result.last_changed = state.last_updated;
}
LINE_ATTRIBUTES_TO_KEEP.forEach((attr) => {
if (attr in state.attributes) {
result.attributes = result.attributes || {};
result.attributes[attr] = state.attributes[attr];
}
LINE_ATTRIBUTES_TO_KEEP.forEach((attr) => {
if (attr in state.attributes) {
result.attributes = result.attributes || {};
result.attributes[attr] = state.attributes[attr];
}
});
return result;
})
};
}),
}));
});
return result;
})
};
}),
}));
return {
line: unitStates, timeline: timelineDevices };
return { line: unitStates, timeline: timelineDevices };
}
class HaStateHistoryData extends Polymer.Element {
@ -129,8 +126,10 @@
hassChanged(newHass, oldHass) {
if (!oldHass && !this._madeFirstCall) {
this.filterChanged(this.filterType, this.entityId, this.startTime, this.endTime,
this.cacheConfig);
this.filterChanged(
this.filterType, this.entityId, this.startTime, this.endTime,
this.cacheConfig
);
}
}
@ -299,7 +298,8 @@
() => {
RECENT_CACHE[entityId] = false;
return null;
});
}
);
RECENT_CACHE[cacheKey] = {
created: Date.now(),
@ -329,7 +329,8 @@
const prom = this.hass.callApi('GET', 'history/period/' + filter).then(
stateHistory => computeHistory(stateHistory),
() => null);
() => null
);
return prom;
}

View File

@ -183,8 +183,8 @@ class MoreInfoDialog extends window.hassMixins.EventsMixin(Polymer.Element) {
computeShowHistoryComponent(hasHistoryComponent, stateObj) {
return this.hasHistoryComponent && stateObj &&
window.hassUtil.DOMAINS_WITH_NO_HISTORY.indexOf(
window.hassUtil.computeDomain(stateObj)) === -1;
window.hassUtil.DOMAINS_WITH_NO_HISTORY
.indexOf(window.hassUtil.computeDomain(stateObj)) === -1;
}
stateObjChanged(newVal) {

View File

@ -49,7 +49,6 @@ window.removeInitMsg = function () {
};
class HomeAssistant extends Polymer.Element {
static get is() { return 'home-assistant'; }
static get properties() {
@ -105,10 +104,12 @@ class HomeAssistant extends Polymer.Element {
this.iconsLoaded = true;
};
Polymer.importHref('/static/mdi-' + this.icons + '.html',
success,
() => Polymer.importHref('/static/mdi.html', success, success),
true /* true for async */);
Polymer.importHref(
'/static/mdi-' + this.icons + '.html',
success,
() => Polymer.importHref('/static/mdi.html', success, success),
true /* true for async */
);
}
connectionChanged(conn, oldConn) {
@ -131,27 +132,28 @@ class HomeAssistant extends Polymer.Element {
moreInfoEntityId: null,
callService: (domain, service, serviceData) =>
conn.callService(domain, service, serviceData || {})
.then(() => {
var message;
var name;
if (serviceData.entity_id && this.hass.states &&
.then(
() => {
var message;
var name;
if (serviceData.entity_id && this.hass.states &&
this.hass.states[serviceData.entity_id]) {
name = window.hassUtil.computeStateName(this.hass.states[serviceData.entity_id]);
name = window.hassUtil.computeStateName(this.hass.states[serviceData.entity_id]);
}
if (service === 'turn_on' && serviceData.entity_id) {
message = 'Turned on ' + (name || serviceData.entity_id) + '.';
} else if (service === 'turn_off' && serviceData.entity_id) {
message = 'Turned off ' + (name || serviceData.entity_id) + '.';
} else {
message = 'Service ' + domain + '/' + service + ' called.';
}
notifications.showNotification(message);
},
function () {
notifications.showNotification('Failed to call service ' + domain + '/' + service);
return Promise.reject();
}
if (service === 'turn_on' && serviceData.entity_id) {
message = 'Turned on ' + (name || serviceData.entity_id) + '.';
} else if (service === 'turn_off' && serviceData.entity_id) {
message = 'Turned off ' + (name || serviceData.entity_id) + '.';
} else {
message = 'Service ' + domain + '/' + service + ' called.';
}
notifications.showNotification(message);
},
function () {
notifications.showNotification(
'Failed to call service ' + domain + '/' + service);
return Promise.reject();
}),
),
callApi: (method, path, parameters) => {
var host = window.location.protocol + '//' + window.location.host;
var auth = conn.options.authToken ? conn.options : {};

View File

@ -368,8 +368,7 @@ Polymer({
if (currentView) {
states = window.HAWS.getViewEntities(hass.states, hass.states[currentView]);
} else {
states = window.HAWS.getViewEntities(
hass.states, hass.states[this.DEFAULT_VIEW_ENTITY_ID]);
states = window.HAWS.getViewEntities(hass.states, hass.states[this.DEFAULT_VIEW_ENTITY_ID]);
}
// Make sure certain domains are always shown.

View File

@ -95,14 +95,13 @@ Polymer({
panel.url,
function success() {
window.hassUtil.dynamicContentUpdater(
this.$.panel, 'ha-panel-' + panel.component_name, {
hass: this.hass,
narrow: this.narrow,
showMenu: this.showMenu,
route: this.routeTail,
panel: panel,
});
window.hassUtil.dynamicContentUpdater(this.$.panel, 'ha-panel-' + panel.component_name, {
hass: this.hass,
narrow: this.narrow,
showMenu: this.showMenu,
route: this.routeTail,
panel: panel,
});
this.resolved = true;
}.bind(this),
@ -110,7 +109,8 @@ Polymer({
this.errorLoading = true;
}.bind(this),
true /* async */);
true /* async */
);
},
updateAttributes: function () {

View File

@ -224,22 +224,20 @@ Polymer({
this.auxToggleChecked = newVal.attributes.aux_heat === 'on';
if (newVal.attributes.fan_list) {
this.fanIndex = newVal.attributes.fan_list.indexOf(
newVal.attributes.fan_mode);
this.fanIndex = newVal.attributes.fan_list.indexOf(newVal.attributes.fan_mode);
} else {
this.fanIndex = -1;
}
if (newVal.attributes.operation_list) {
this.operationIndex = newVal.attributes.operation_list.indexOf(
newVal.attributes.operation_mode);
this.operationIndex =
newVal.attributes.operation_list.indexOf(newVal.attributes.operation_mode);
} else {
this.operationIndex = -1;
}
if (newVal.attributes.swing_list) {
this.swingIndex = newVal.attributes.swing_list.indexOf(
newVal.attributes.swing_mode);
this.swingIndex = newVal.attributes.swing_list.indexOf(newVal.attributes.swing_mode);
} else {
this.swingIndex = -1;
}
@ -276,12 +274,10 @@ Polymer({
},
computeClassNames: function (stateObj) {
return 'more-info-climate ' + window.hassUtil.attributeClassNames(
stateObj, [
'away_mode', 'aux_heat', 'temperature', 'humidity', 'operation_list',
'fan_list', 'swing_list',
]
);
return 'more-info-climate ' + window.hassUtil.attributeClassNames(stateObj, [
'away_mode', 'aux_heat', 'temperature', 'humidity', 'operation_list',
'fan_list', 'swing_list',
]);
},
targetTemperatureChanged: function (ev) {
@ -298,12 +294,10 @@ Polymer({
if (targetTempLow === this.stateObj.attributes.target_temp_low &&
targetTempHigh === this.stateObj.attributes.target_temp_high) return;
this.callServiceHelper(
'set_temperature', {
target_temp_low: targetTempLow,
target_temp_high: targetTempHigh,
}
);
this.callServiceHelper('set_temperature', {
target_temp_low: targetTempLow,
target_temp_high: targetTempHigh,
});
},
targetHumiditySliderChanged: function (ev) {

View File

@ -48,7 +48,8 @@ Polymer({
} else {
window.hassUtil.dynamicContentUpdater(
this, 'MORE-INFO-' + window.hassUtil.stateMoreInfoType(stateObj).toUpperCase(),
{ hass: this.hass, stateObj: stateObj, isVisible: true });
{ hass: this.hass, stateObj: stateObj, isVisible: true }
);
}
},
});

View File

@ -95,8 +95,7 @@ Polymer({
this.oscillationToggleChecked = newVal.attributes.oscillating;
if (newVal.attributes.speed_list) {
this.speedIndex = newVal.attributes.speed_list.indexOf(
newVal.attributes.speed);
this.speedIndex = newVal.attributes.speed_list.indexOf(newVal.attributes.speed);
} else {
this.speedIndex = -1;
}
@ -109,9 +108,7 @@ Polymer({
},
computeClassNames: function (stateObj) {
return 'more-info-fan ' + window.hassUtil.attributeClassNames(
stateObj, ['oscillating', 'speed_list', 'direction']
);
return 'more-info-fan ' + window.hassUtil.attributeClassNames(stateObj, ['oscillating', 'speed_list', 'direction']);
},
speedChanged: function (speedIndex) {

View File

@ -95,8 +95,9 @@ Polymer({
} else {
window.hassUtil.dynamicContentUpdater(
this.$.groupedControlDetails,
'MORE-INFO-' + window.hassUtil.stateMoreInfoType(groupDomainStateObj).toUpperCase(),
{ stateObj: groupDomainStateObj, hass: this.hass });
'MORE-INFO-' + window.hassUtil.stateMoreInfoType(groupDomainStateObj).toUpperCase(),
{ stateObj: groupDomainStateObj, hass: this.hass }
);
}
},
});

View File

@ -138,8 +138,7 @@ Polymer({
this.wvSliderValue = newVal.attributes.white_value;
if (newVal.attributes.effect_list) {
this.effectIndex = newVal.attributes.effect_list.indexOf(
newVal.attributes.effect);
this.effectIndex = newVal.attributes.effect_list.indexOf(newVal.attributes.effect);
} else {
this.effectIndex = -1;
}
@ -160,8 +159,7 @@ Polymer({
computeClassNames: function (stateObj) {
var classes = [
window.hassUtil.attributeClassNames(
stateObj, ['color_temp', 'white_value', 'effect_list']),
window.hassUtil.attributeClassNames(stateObj, ['color_temp', 'white_value', 'effect_list']),
window.hassUtil.featureClassNames(stateObj, this.featureClassNames),
];

View File

@ -17,7 +17,6 @@
<script>
class StateCardContent extends Polymer.Element {
static get is() { return 'state-card-content'; }
static get properties() {
@ -54,7 +53,8 @@ class StateCardContent extends Polymer.Element {
hass: hass,
stateObj: stateObj,
inDialog: inDialog,
});
}
);
}
}
customElements.define(StateCardContent.is, StateCardContent);

View File

@ -44,7 +44,6 @@
<script>
class StateCardInputNumber extends Polymer.Element {
static get is() { return 'state-card-input_number'; }
static get properties() {

View File

@ -37,7 +37,6 @@
<script>
class StateCardInputText extends Polymer.Element {
static get is() { return 'state-card-input_text'; }
static get properties() {

View File

@ -49,7 +49,8 @@ Polymer({
ev.stopPropagation();
this.hass.callService(
'scene', 'turn_on',
{ entity_id: this.stateObj.entity_id });
{ entity_id: this.stateObj.entity_id }
);
},
});
</script>

View File

@ -55,7 +55,8 @@ Polymer({
ev.stopPropagation();
this.hass.callService(
'script', 'turn_on',
{ entity_id: this.stateObj.entity_id });
{ entity_id: this.stateObj.entity_id }
);
},
});
</script>

View File

@ -6,8 +6,10 @@
};
function addGetter(name, getter) {
Object.defineProperty(window.CoverEntity.prototype, name,
{ get: getter });
Object.defineProperty(
window.CoverEntity.prototype, name,
{ get: getter }
);
}
addGetter('isFullyOpen', function () {

View File

@ -32,10 +32,12 @@ window.hassAttributeUtil.LOGIC_STATE_ATTRIBUTES =
icon: { type: 'icon' },
emulated_hue: {
type: 'boolean',
domains: ['emulated_hue'] },
domains: ['emulated_hue']
},
emulated_hue_name: {
type: 'string',
domains: ['emulated_hue'] },
domains: ['emulated_hue']
},
haaska_hidden: undefined,
haaska_name: undefined,
homebridge_hidden: { type: 'boolean' },
@ -47,14 +49,17 @@ window.hassAttributeUtil.LOGIC_STATE_ATTRIBUTES =
type: 'array',
options: window.hassAttributeUtil.DOMAIN_DEVICE_CLASS,
description: 'Device class',
domains: ['binary_sensor', 'cover'] },
domains: ['binary_sensor', 'cover']
},
hidden: { type: 'boolean', description: 'Hide from UI' },
assumed_state: {
type: 'boolean',
domains: ['switch', 'light', 'cover', 'climate', 'fan', 'group'] },
domains: ['switch', 'light', 'cover', 'climate', 'fan', 'group']
},
initial_state: {
type: 'string',
domains: ['automation'] },
domains: ['automation']
},
unit_of_measurement: { type: 'string' },
};
</script>

View File

@ -22,7 +22,7 @@ window.hassCallApi = function (host, auth, method, path, parameters) {
if (data) {
resolve(data);
} else {
reject('Request not allowed in demo mode.');
reject(new Error('Request not allowed in demo mode.'));
}
});
}

View File

@ -33,10 +33,8 @@
window.hassMixins = window.hassMixins || {};
/* @polymerMixin */
window.hassMixins.EventsMixin = Polymer.dedupingMixin(
superClass => class extends superClass {
/**
window.hassMixins.EventsMixin = Polymer.dedupingMixin(superClass => class extends superClass {
/**
* Dispatches a custom event with an optional detail value.
*
* @param {string} type Name of event type.
@ -51,25 +49,24 @@ window.hassMixins.EventsMixin = Polymer.dedupingMixin(
* `node` on which to fire the event (HTMLElement, defaults to `this`).
* @return {Event} The new event that was fired.
*/
fire(type, detail, options) {
options = options || {};
detail = (detail === null || detail === undefined) ? {} : detail;
const event = new Event(type, {
bubbles: options.bubbles === undefined ? true : options.bubbles,
cancelable: Boolean(options.cancelable),
composed: options.composed === undefined ? true : options.composed
});
event.detail = detail;
const node = options.node || this;
node.dispatchEvent(event);
return event;
}
fire(type, detail, options) {
options = options || {};
detail = (detail === null || detail === undefined) ? {} : detail;
const event = new Event(type, {
bubbles: options.bubbles === undefined ? true : options.bubbles,
cancelable: Boolean(options.cancelable),
composed: options.composed === undefined ? true : options.composed
});
event.detail = detail;
const node = options.node || this;
node.dispatchEvent(event);
return event;
}
);
});
/* @polymerMixin */
window.hassMixins.NavigateMixin = Polymer.dedupingMixin(
superClass => class extends window.hassMixins.EventsMixin(superClass) {
window.hassMixins.NavigateMixin = Polymer.dedupingMixin(superClass =>
class extends window.hassMixins.EventsMixin(superClass) {
navigate(path, replace = false) {
if (replace) {
history.replaceState(null, null, path);
@ -78,6 +75,6 @@ window.hassMixins.NavigateMixin = Polymer.dedupingMixin(
}
this.fire('location-changed');
}
});
});
</script>

View File

@ -40,11 +40,9 @@ window.hassUtil.LANGUAGE = navigator.languages ?
window.hassUtil.attributeClassNames = function (stateObj, attributes) {
if (!stateObj) return '';
return attributes.map(
function (attribute) {
return attribute in stateObj.attributes ? 'has-' + attribute : '';
}
).join(' ');
return attributes.map(function (attribute) {
return attribute in stateObj.attributes ? 'has-' + attribute : '';
}).join(' ');
};
// Expects featureClassNames to be an object mapping feature-bit -> className
@ -53,11 +51,9 @@ window.hassUtil.featureClassNames = function (stateObj, featureClassNames) {
var features = stateObj.attributes.supported_features;
return Object.keys(featureClassNames).map(
function (feature) {
return (features & feature) !== 0 ? featureClassNames[feature] : '';
}
).join(' ');
return Object.keys(featureClassNames).map(function (feature) {
return (features & feature) !== 0 ? featureClassNames[feature] : '';
}).join(' ');
};
@ -164,8 +160,10 @@ if (toLocaleStringSupportsOptions()) {
if (toLocaleDateStringSupportsOptions()) {
window.hassUtil.formatDate = function (dateObj) {
return dateObj.toLocaleDateString(window.hassUtil.LANGUAGE,
{ year: 'numeric', month: 'long', day: 'numeric' });
return dateObj.toLocaleDateString(
window.hassUtil.LANGUAGE,
{ year: 'numeric', month: 'long', day: 'numeric' }
);
};
} else {
window.hassUtil.formatDate = function (dateObj) {
@ -175,8 +173,10 @@ if (toLocaleDateStringSupportsOptions()) {
if (toLocaleTimeStringSupportsOptions()) {
window.hassUtil.formatTime = function (dateObj) {
return dateObj.toLocaleTimeString(window.hassUtil.LANGUAGE,
{ hour: 'numeric', minute: '2-digit' });
return dateObj.toLocaleTimeString(
window.hassUtil.LANGUAGE,
{ hour: 'numeric', minute: '2-digit' }
);
};
} else {
window.hassUtil.formatTime = function (dateObj) {
@ -193,8 +193,10 @@ window.hassUtil.relativeTime = function (dateObj) {
for (i = 0; i < tests.length; i += 2) {
if (delta < tests[i]) {
delta = Math.floor(delta);
return format.replace('%s',
delta === 1 ? '1 ' + tests[i + 1] : delta + ' ' + tests[i + 1] + 's');
return format.replace(
'%s',
delta === 1 ? '1 ' + tests[i + 1] : delta + ' ' + tests[i + 1] + 's'
);
}
delta /= tests[i];
@ -353,8 +355,7 @@ window.hassUtil.domainIcon = function (domain, state) {
default:
/* eslint-disable no-console */
console.warn(
'Unable to find icon for domain ' + domain + ' (' + state + ')');
console.warn('Unable to find icon for domain ' + domain + ' (' + state + ')');
/* eslint-enable no-console */
return window.hassUtil.DEFAULT_ICON;
}
@ -445,7 +446,7 @@ window.hassUtil.computeStateName = function (stateObj) {
stateObj._entityDisplay = (
stateObj.attributes.friendly_name ||
window.HAWS.extractObjectId(stateObj.entity_id)
.replace(/_/g, ' '));
.replace(/_/g, ' '));
}
return stateObj._entityDisplay;

View File

@ -6,8 +6,10 @@
};
function addGetter(name, getter) {
Object.defineProperty(window.MediaPlayerEntity.prototype, name,
{ get: getter });
Object.defineProperty(
window.MediaPlayerEntity.prototype, name,
{ get: getter }
);
}
addGetter('isOff', function () {
@ -39,8 +41,7 @@
});
addGetter('hasMediaControl', function () {
return ['playing', 'paused', 'unknown'].indexOf(
this.stateObj.state) !== -1;
return ['playing', 'paused', 'unknown'].indexOf(this.stateObj.state) !== -1;
});
addGetter('volumeSliderValue', function () {

398
yarn.lock
View File

@ -511,18 +511,18 @@ agent-base@2:
extend "~3.0.0"
semver "~5.0.1"
ajv-keywords@^1.0.0:
version "1.5.1"
resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c"
ajv-keywords@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.0.tgz#a296e17f7bfae7c1ce4f7e0de53d29cb32162df0"
ajv@^4.7.0, ajv@^4.9.1:
ajv@^4.9.1:
version "4.11.8"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536"
dependencies:
co "^4.6.0"
json-stable-stringify "^1.0.1"
ajv@^5.1.0:
ajv@^5.1.0, ajv@^5.2.0, ajv@^5.2.3:
version "5.2.3"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.2.3.tgz#c06f598778c44c6b161abafe3466b81ad1814ed2"
dependencies:
@ -559,6 +559,10 @@ ansi-escapes@^1.1.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e"
ansi-escapes@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.0.0.tgz#ec3e8b4e9f8064fc02c3ac9b65f1c275bda8ef92"
ansi-regex@^0.2.0, ansi-regex@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-0.2.1.tgz#0d8e946967a3d8143f93e24e298525fc1b2235f9"
@ -579,6 +583,12 @@ ansi-styles@^2.2.1:
version "2.2.1"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
ansi-styles@^3.1.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88"
dependencies:
color-convert "^1.9.0"
ansi-styles@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.0.0.tgz#cb102df1c56f5123eab8b67cd7b98027a0279178"
@ -781,7 +791,7 @@ aws4@^1.2.1, aws4@^1.6.0:
version "1.6.0"
resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e"
babel-code-frame@^6.16.0, babel-code-frame@^6.26.0:
babel-code-frame@^6.22.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"
dependencies:
@ -1808,6 +1818,14 @@ chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3:
strip-ansi "^3.0.0"
supports-color "^2.0.0"
chalk@^2.0.0, 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@~0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-0.4.0.tgz#5199a3ddcd0c1efe23bc08c1b027b06176e0c64f"
@ -1897,6 +1915,12 @@ cli-cursor@^1.0.1:
dependencies:
restore-cursor "^1.0.1"
cli-cursor@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5"
dependencies:
restore-cursor "^2.0.0"
cli-table@^0.3.1:
version "0.3.1"
resolved "https://registry.yarnpkg.com/cli-table/-/cli-table-0.3.1.tgz#f53b05266a8b1a0b934b3d0821e6e2dc5914ae23"
@ -1955,6 +1979,16 @@ code-point-at@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
color-convert@^1.9.0:
version "1.9.0"
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a"
dependencies:
color-name "^1.1.1"
color-name@^1.1.1:
version "1.1.3"
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
colors@1.0.3, colors@1.0.x:
version "1.0.3"
resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b"
@ -2070,7 +2104,7 @@ concat-stream@1.5.x:
readable-stream "~2.0.0"
typedarray "~0.0.5"
concat-stream@^1.4.7, concat-stream@^1.5.0, concat-stream@^1.5.2:
concat-stream@^1.4.7, concat-stream@^1.5.0, concat-stream@^1.6.0:
version "1.6.0"
resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7"
dependencies:
@ -2160,7 +2194,7 @@ create-error-class@^3.0.0, create-error-class@^3.0.1:
dependencies:
capture-stack-trace "^1.0.0"
cross-spawn@^5.0.1:
cross-spawn@^5.0.1, cross-spawn@^5.1.0:
version "5.1.0"
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449"
dependencies:
@ -2217,12 +2251,6 @@ cycle@1.0.x:
version "1.0.3"
resolved "https://registry.yarnpkg.com/cycle/-/cycle-1.0.3.tgz#21e80b2be8580f98b468f379430662b046c34ad2"
d@1:
version "1.0.0"
resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f"
dependencies:
es5-ext "^0.10.9"
dargs@^5.1.0:
version "5.1.0"
resolved "https://registry.yarnpkg.com/dargs/-/dargs-5.1.0.tgz#ec7ea50c78564cd36c9d5ec18f66329fade27829"
@ -2244,7 +2272,7 @@ dateformat@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-2.0.0.tgz#2743e3abb5c3fc2462e527dca445e04e9f4dee17"
debug@2, debug@2.6.9, debug@^2.0.0, debug@^2.1.0, debug@^2.1.1:
debug@2, debug@2.6.9, debug@^2.0.0, debug@^2.1.0:
version "2.6.9"
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
dependencies:
@ -2268,6 +2296,12 @@ debug@2.6.8, debug@^2.2.0, debug@^2.6.8:
dependencies:
ms "2.0.0"
debug@^3.0.1:
version "3.1.0"
resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
dependencies:
ms "2.0.0"
debug@~2.1.1:
version "2.1.3"
resolved "https://registry.yarnpkg.com/debug/-/debug-2.1.3.tgz#ce8ab1b5ee8fbee2bfa3b633cab93d366b63418e"
@ -2635,32 +2669,6 @@ es-to-primitive@^1.1.1:
is-date-object "^1.0.1"
is-symbol "^1.0.1"
es5-ext@^0.10.14, es5-ext@^0.10.9, es5-ext@~0.10.14:
version "0.10.30"
resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.30.tgz#7141a16836697dbabfaaaeee41495ce29f52c939"
dependencies:
es6-iterator "2"
es6-symbol "~3.1"
es6-iterator@2, es6-iterator@^2.0.1, es6-iterator@~2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.1.tgz#8e319c9f0453bf575d374940a655920e59ca5512"
dependencies:
d "1"
es5-ext "^0.10.14"
es6-symbol "^3.1"
es6-map@^0.1.3:
version "0.1.5"
resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz#9136e0503dcc06a301690f0bb14ff4e364e949f0"
dependencies:
d "1"
es5-ext "~0.10.14"
es6-iterator "~2.0.1"
es6-set "~0.1.5"
es6-symbol "~3.1.1"
event-emitter "~0.3.5"
es6-object-assign@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/es6-object-assign/-/es6-object-assign-1.1.0.tgz#c2c3582656247c39ea107cb1e6652b6f9f24523c"
@ -2673,32 +2681,6 @@ es6-promise@^4.0.5:
version "4.1.1"
resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.1.1.tgz#8811e90915d9a0dba36274f0b242dbda78f9c92a"
es6-set@~0.1.5:
version "0.1.5"
resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1"
dependencies:
d "1"
es5-ext "~0.10.14"
es6-iterator "~2.0.1"
es6-symbol "3.1.1"
event-emitter "~0.3.5"
es6-symbol@3.1.1, es6-symbol@^3.1, es6-symbol@^3.1.1, es6-symbol@~3.1, es6-symbol@~3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77"
dependencies:
d "1"
es5-ext "~0.10.14"
es6-weak-map@^2.0.1:
version "2.0.2"
resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f"
dependencies:
d "1"
es5-ext "^0.10.14"
es6-iterator "^2.0.1"
es6-symbol "^3.1.1"
escape-html@1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.1.tgz#181a286ead397a39a92857cfb1d43052e356bff0"
@ -2722,18 +2704,9 @@ escodegen@^1.7.0:
optionalDependencies:
source-map "~0.2.0"
escope@^3.6.0:
version "3.6.0"
resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3"
dependencies:
es6-map "^0.1.3"
es6-weak-map "^2.0.1"
esrecurse "^4.1.0"
estraverse "^4.1.1"
eslint-config-airbnb-base@^11.1.3:
version "11.3.2"
resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-11.3.2.tgz#8703b11abe3c88ac7ec2b745b7fdf52e00ae680a"
eslint-config-airbnb-base@^12.0.2:
version "12.0.2"
resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-12.0.2.tgz#45fea317d71b8f1da323c730f3a8471988757793"
dependencies:
eslint-restricted-globals "^0.1.1"
@ -2751,11 +2724,12 @@ eslint-module-utils@^2.1.1:
debug "^2.6.8"
pkg-dir "^1.0.0"
eslint-plugin-html@^2.0.1:
version "2.0.3"
resolved "https://registry.yarnpkg.com/eslint-plugin-html/-/eslint-plugin-html-2.0.3.tgz#7c89883ab0c85fa5d28b666a14a4e906aa90b897"
eslint-plugin-html@^3.2.2:
version "3.2.2"
resolved "https://registry.yarnpkg.com/eslint-plugin-html/-/eslint-plugin-html-3.2.2.tgz#ef7093621d3a93de3206fd1f92f347ea9a1a4dfa"
dependencies:
htmlparser2 "^3.8.2"
semver "^5.4.1"
eslint-plugin-import@^2.2.0:
version "2.7.0"
@ -2785,45 +2759,54 @@ eslint-restricted-globals@^0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/eslint-restricted-globals/-/eslint-restricted-globals-0.1.1.tgz#35f0d5cbc64c2e3ed62e93b4b1a7af05ba7ed4d7"
eslint@^3.19.0:
version "3.19.0"
resolved "https://registry.yarnpkg.com/eslint/-/eslint-3.19.0.tgz#c8fc6201c7f40dd08941b87c085767386a679acc"
eslint-scope@^3.7.1:
version "3.7.1"
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8"
dependencies:
babel-code-frame "^6.16.0"
chalk "^1.1.3"
concat-stream "^1.5.2"
debug "^2.1.1"
esrecurse "^4.1.0"
estraverse "^4.1.1"
eslint@^4.8.0:
version "4.8.0"
resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.8.0.tgz#229ef0e354e0e61d837c7a80fdfba825e199815e"
dependencies:
ajv "^5.2.0"
babel-code-frame "^6.22.0"
chalk "^2.1.0"
concat-stream "^1.6.0"
cross-spawn "^5.1.0"
debug "^3.0.1"
doctrine "^2.0.0"
escope "^3.6.0"
espree "^3.4.0"
eslint-scope "^3.7.1"
espree "^3.5.1"
esquery "^1.0.0"
estraverse "^4.2.0"
esutils "^2.0.2"
file-entry-cache "^2.0.0"
glob "^7.0.3"
globals "^9.14.0"
ignore "^3.2.0"
functional-red-black-tree "^1.0.1"
glob "^7.1.2"
globals "^9.17.0"
ignore "^3.3.3"
imurmurhash "^0.1.4"
inquirer "^0.12.0"
is-my-json-valid "^2.10.0"
inquirer "^3.0.6"
is-resolvable "^1.0.0"
js-yaml "^3.5.1"
json-stable-stringify "^1.0.0"
js-yaml "^3.9.1"
json-stable-stringify "^1.0.1"
levn "^0.3.0"
lodash "^4.0.0"
mkdirp "^0.5.0"
lodash "^4.17.4"
minimatch "^3.0.2"
mkdirp "^0.5.1"
natural-compare "^1.4.0"
optionator "^0.8.2"
path-is-inside "^1.0.1"
pluralize "^1.2.1"
progress "^1.1.8"
require-uncached "^1.0.2"
shelljs "^0.7.5"
strip-bom "^3.0.0"
path-is-inside "^1.0.2"
pluralize "^7.0.0"
progress "^2.0.0"
require-uncached "^1.0.3"
semver "^5.3.0"
strip-ansi "^4.0.0"
strip-json-comments "~2.0.1"
table "^3.7.8"
table "^4.0.1"
text-table "~0.2.0"
user-home "^2.0.0"
espree@^3.1.3:
version "3.5.0"
@ -2832,7 +2815,7 @@ espree@^3.1.3:
acorn "^5.1.1"
acorn-jsx "^3.0.0"
espree@^3.1.7, espree@^3.4.0:
espree@^3.1.7, espree@^3.4.0, espree@^3.5.1:
version "3.5.1"
resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.1.tgz#0c988b8ab46db53100a1954ae4ba995ddd27d87e"
dependencies:
@ -2906,13 +2889,6 @@ etag@~1.8.1:
version "1.8.1"
resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
event-emitter@~0.3.5:
version "0.3.5"
resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39"
dependencies:
d "1"
es5-ext "~0.10.14"
event-stream@^3.0.20:
version "3.3.4"
resolved "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.4.tgz#4ab4c9a0f5a54db9338b4c34d86bfce8f4b35571"
@ -3025,6 +3001,14 @@ external-editor@^1.1.0:
spawn-sync "^1.0.15"
tmp "^0.0.29"
external-editor@^2.0.4:
version "2.0.5"
resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.0.5.tgz#52c249a3981b9ba187c7cacf5beb50bf1d91a6bc"
dependencies:
iconv-lite "^0.4.17"
jschardet "^1.4.2"
tmp "^0.0.33"
extglob@^0.3.1:
version "0.3.2"
resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1"
@ -3085,6 +3069,12 @@ figures@^1.3.5:
escape-string-regexp "^1.0.5"
object-assign "^4.1.0"
figures@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962"
dependencies:
escape-string-regexp "^1.0.5"
file-entry-cache@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361"
@ -3311,6 +3301,10 @@ function-bind@^1.0.2, function-bind@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
functional-red-black-tree@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
gauge@~2.7.3:
version "2.7.4"
resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7"
@ -3514,7 +3508,7 @@ global-prefix@^0.1.4:
is-windows "^0.2.0"
which "^1.2.12"
globals@^9.14.0, globals@^9.18.0:
globals@^9.17.0, globals@^9.18.0:
version "9.18.0"
resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a"
@ -3838,6 +3832,10 @@ has-flag@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa"
has-flag@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51"
has-gulplog@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/has-gulplog/-/has-gulplog-0.1.0.tgz#6414c82913697da51590397dafb12f22967811ce"
@ -4038,11 +4036,11 @@ hydrolysis@^1.19.1:
estraverse "^3.1.0"
path-is-absolute "^1.0.0"
iconv-lite@0.4.19, iconv-lite@~0.4.13:
iconv-lite@0.4.19, iconv-lite@^0.4.17, iconv-lite@~0.4.13:
version "0.4.19"
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b"
ignore@^3.2.0:
ignore@^3.3.3:
version "3.3.5"
resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.5.tgz#c4e715455f6073a8d7e5dae72d2fc9d71663dba6"
@ -4083,24 +4081,6 @@ ini@^1.3.4, ini@~1.3.0:
version "1.3.4"
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e"
inquirer@^0.12.0:
version "0.12.0"
resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-0.12.0.tgz#1ef2bfd63504df0bc75785fff8c2c41df12f077e"
dependencies:
ansi-escapes "^1.1.0"
ansi-regex "^2.0.0"
chalk "^1.0.0"
cli-cursor "^1.0.1"
cli-width "^2.0.0"
figures "^1.3.5"
lodash "^4.3.0"
readline2 "^1.0.1"
run-async "^0.1.0"
rx-lite "^3.1.2"
string-width "^1.0.1"
strip-ansi "^3.0.0"
through "^2.3.6"
inquirer@^1.0.2:
version "1.2.3"
resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-1.2.3.tgz#4dec6f32f37ef7bb0b2ed3f1d1a5c3f545074918"
@ -4120,6 +4100,25 @@ inquirer@^1.0.2:
strip-ansi "^3.0.0"
through "^2.3.6"
inquirer@^3.0.6:
version "3.3.0"
resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9"
dependencies:
ansi-escapes "^3.0.0"
chalk "^2.0.0"
cli-cursor "^2.1.0"
cli-width "^2.0.0"
external-editor "^2.0.4"
figures "^2.0.0"
lodash "^4.3.0"
mute-stream "0.0.7"
run-async "^2.2.0"
rx-lite "^4.0.8"
rx-lite-aggregates "^4.0.8"
string-width "^2.1.0"
strip-ansi "^4.0.0"
through "^2.3.6"
interpret@^1.0.0:
version "1.0.3"
resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.3.tgz#cbc35c62eeee73f19ab7b10a801511401afc0f90"
@ -4247,7 +4246,7 @@ is-module@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591"
is-my-json-valid@^2.10.0, is-my-json-valid@^2.12.4:
is-my-json-valid@^2.12.4:
version "2.16.1"
resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.16.1.tgz#5a846777e2c2620d1e69104e5d3a03b1f6088f11"
dependencies:
@ -4429,7 +4428,7 @@ js-tokens@^3.0.0, js-tokens@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
js-yaml@^3.5.1:
js-yaml@^3.9.1:
version "3.10.0"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc"
dependencies:
@ -4440,6 +4439,10 @@ jsbn@~0.1.0:
version "0.1.1"
resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
jschardet@^1.4.2:
version "1.5.1"
resolved "https://registry.yarnpkg.com/jschardet/-/jschardet-1.5.1.tgz#c519f629f86b3a5bedba58a88d311309eec097f9"
jsesc@^1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b"
@ -4843,7 +4846,7 @@ lodash@^3.0.0, lodash@^3.0.1, lodash@^3.10.1:
version "3.10.1"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6"
lodash@^4.0.0, lodash@^4.11.1, lodash@^4.13.1, lodash@^4.14.0, lodash@^4.16.6, lodash@^4.17.2, lodash@^4.17.4, lodash@^4.3.0, lodash@^4.8.0:
lodash@^4.11.1, lodash@^4.13.1, lodash@^4.14.0, lodash@^4.16.6, lodash@^4.17.2, lodash@^4.17.4, lodash@^4.3.0, lodash@^4.8.0:
version "4.17.4"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"
@ -5045,6 +5048,10 @@ mime@1.4.1, mime@^1.2.11, mime@^1.3.4:
version "1.4.1"
resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6"
mimic-fn@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18"
minimalistic-assert@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3"
@ -5177,14 +5184,14 @@ multipipe@^1.0.2:
duplexer2 "^0.1.2"
object-assign "^4.1.0"
mute-stream@0.0.5:
version "0.0.5"
resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.5.tgz#8fbfabb0a98a253d3184331f9e8deb7372fac6c0"
mute-stream@0.0.6:
version "0.0.6"
resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.6.tgz#48962b19e169fd1dfc240b3f1e7317627bbc47db"
mute-stream@0.0.7:
version "0.0.7"
resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab"
mz@^2.4.0, mz@^2.6.0:
version "2.7.0"
resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32"
@ -5390,6 +5397,12 @@ onetime@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789"
onetime@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4"
dependencies:
mimic-fn "^1.0.0"
opn@^3.0.2:
version "3.0.3"
resolved "https://registry.yarnpkg.com/opn/-/opn-3.0.3.tgz#b6d99e7399f78d65c3baaffef1fb288e9b85243a"
@ -5438,7 +5451,7 @@ os-shim@^0.1.2:
version "0.1.3"
resolved "https://registry.yarnpkg.com/os-shim/-/os-shim-0.1.3.tgz#6b62c3791cf7909ea35ed46e17658bb417cb3917"
os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.1:
os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.1, os-tmpdir@~1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
@ -5582,7 +5595,7 @@ path-is-absolute@^1.0.0, path-is-absolute@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
path-is-inside@^1.0.1:
path-is-inside@^1.0.1, path-is-inside@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53"
@ -5694,9 +5707,9 @@ plist@^2.0.1:
xmlbuilder "8.2.2"
xmldom "0.1.x"
pluralize@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz#d1a21483fd22bb41e58a12fa3421823140897c45"
pluralize@^7.0.0:
version "7.0.0"
resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777"
plylog@^0.4.0:
version "0.4.0"
@ -5953,10 +5966,14 @@ process-nextick-args@^1.0.6, process-nextick-args@~1.0.6:
version "1.0.7"
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3"
progress@1.1.8, progress@^1.1.8:
progress@1.1.8:
version "1.1.8"
resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be"
progress@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f"
promise@^6.0.1:
version "6.1.0"
resolved "https://registry.yarnpkg.com/promise/-/promise-6.1.0.tgz#2ce729f6b94b45c26891ad0602c5c90e04c6eef6"
@ -6161,14 +6178,6 @@ readdirp@^2.0.0:
readable-stream "^2.0.2"
set-immediate-shim "^1.0.1"
readline2@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/readline2/-/readline2-1.0.1.tgz#41059608ffc154757b715d9989d199ffbf372e35"
dependencies:
code-point-at "^1.0.0"
is-fullwidth-code-point "^1.0.0"
mute-stream "0.0.5"
rechoir@^0.6.2:
version "0.6.2"
resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384"
@ -6361,7 +6370,7 @@ require-relative@0.8.7:
version "0.8.7"
resolved "https://registry.yarnpkg.com/require-relative/-/require-relative-0.8.7.tgz#7999539fc9e047a37928fa196f8e1563dabd36de"
require-uncached@^1.0.2:
require-uncached@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3"
dependencies:
@ -6404,6 +6413,13 @@ restore-cursor@^1.0.1:
exit-hook "^1.0.0"
onetime "^1.0.0"
restore-cursor@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf"
dependencies:
onetime "^2.0.0"
signal-exit "^3.0.2"
right-align@^0.1.1:
version "0.1.3"
resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef"
@ -6495,12 +6511,6 @@ rollup@^0.50.0:
version "0.50.0"
resolved "https://registry.yarnpkg.com/rollup/-/rollup-0.50.0.tgz#4c158f4e780e6cb33ff0dbfc184a52cc58cd5f3b"
run-async@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/run-async/-/run-async-0.1.0.tgz#c8ad4a5e110661e402a7d21b530e009f25f8e389"
dependencies:
once "^1.3.0"
run-async@^2.0.0, run-async@^2.2.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0"
@ -6514,9 +6524,15 @@ run-sequence@^2.2.0:
chalk "^1.1.3"
gulp-util "^3.0.8"
rx-lite@^3.1.2:
version "3.1.2"
resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102"
rx-lite-aggregates@^4.0.8:
version "4.0.8"
resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be"
dependencies:
rx-lite "*"
rx-lite@*, rx-lite@^4.0.8:
version "4.0.8"
resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444"
rx@^4.1.0:
version "4.1.0"
@ -6570,7 +6586,7 @@ semver-diff@^2.0.0:
dependencies:
semver "^5.0.3"
"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0:
"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1:
version "5.4.1"
resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e"
@ -6702,7 +6718,7 @@ shebang-regex@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
shelljs@^0.7.0, shelljs@^0.7.5:
shelljs@^0.7.0:
version "0.7.8"
resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.8.tgz#decbcf874b0d1e5fb72e14b164a9683048e9acb3"
dependencies:
@ -6714,7 +6730,7 @@ sigmund@~1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590"
signal-exit@^3.0.0:
signal-exit@^3.0.0, signal-exit@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
@ -6735,9 +6751,11 @@ slash@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55"
slice-ansi@0.0.4:
version "0.0.4"
resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35"
slice-ansi@1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d"
dependencies:
is-fullwidth-code-point "^2.0.0"
slide@^1.1.5:
version "1.1.6"
@ -6966,7 +6984,7 @@ string-width@^1.0.1, string-width@^1.0.2:
is-fullwidth-code-point "^1.0.0"
strip-ansi "^3.0.0"
string-width@^2.0.0:
string-width@^2.1.0, string-width@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
dependencies:
@ -7068,6 +7086,12 @@ supports-color@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
supports-color@^4.0.0:
version "4.4.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.4.0.tgz#883f7ddabc165142b2a61427f3352ded195d1a3e"
dependencies:
has-flag "^2.0.0"
sw-precache@^5.1.1, sw-precache@^5.2.0:
version "5.2.0"
resolved "https://registry.yarnpkg.com/sw-precache/-/sw-precache-5.2.0.tgz#eb6225ce580ceaae148194578a0ad01ab7ea199c"
@ -7108,16 +7132,16 @@ table-layout@^0.3.0:
typical "^2.6.0"
wordwrapjs "^2.0.0-0"
table@^3.7.8:
version "3.8.3"
resolved "https://registry.yarnpkg.com/table/-/table-3.8.3.tgz#2bbc542f0fda9861a755d3947fefd8b3f513855f"
table@^4.0.1:
version "4.0.2"
resolved "https://registry.yarnpkg.com/table/-/table-4.0.2.tgz#a33447375391e766ad34d3486e6e2aedc84d2e36"
dependencies:
ajv "^4.7.0"
ajv-keywords "^1.0.0"
chalk "^1.1.1"
lodash "^4.0.0"
slice-ansi "0.0.4"
string-width "^2.0.0"
ajv "^5.2.3"
ajv-keywords "^2.1.0"
chalk "^2.1.0"
lodash "^4.17.4"
slice-ansi "1.0.0"
string-width "^2.1.1"
tar-fs@^1.12.0:
version "1.16.0"
@ -7273,6 +7297,12 @@ tmp@^0.0.29:
dependencies:
os-tmpdir "~1.0.1"
tmp@^0.0.33:
version "0.0.33"
resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9"
dependencies:
os-tmpdir "~1.0.2"
to-absolute-glob@^0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/to-absolute-glob/-/to-absolute-glob-0.1.1.tgz#1cdfa472a9ef50c239ee66999b662ca0eb39937f"