diff --git a/.eslintrc.espruino.js b/.eslintrc.espruino.js index 6e44ac98..28db8afd 100644 --- a/.eslintrc.espruino.js +++ b/.eslintrc.espruino.js @@ -9,16 +9,22 @@ module.exports = { ], rules: { - 'no-underscore-dangle': 'off', - 'func-names': 'off', - 'space-before-function-paren': ['error', 'never'], 'comma-dangle': ['error', 'never'], + 'func-names': 'off', + 'no-param-reassign': ["error", { "props": false }], + 'no-underscore-dangle': 'off', 'object-shorthand': ['error', 'never'], 'prefer-arrow-callback': 'off', + 'space-before-function-paren': ['error', 'never'], }, globals: { + Pin: true, analogRead: true, + analogWrite: true, + digitalRead: true, + digitalWrite: true, + setWatch: true, }, }; diff --git a/nodes/espruino/button.js b/nodes/espruino/button.js index 2637ee14..5ad376f1 100644 --- a/nodes/espruino/button.js +++ b/nodes/espruino/button.js @@ -1,6 +1,6 @@ module.exports.setup = function(e) { - var pin = new Pin(e.props.pin); + const pin = new Pin(e.props.pin); setWatch(function(evt) { e.fire({ state: evt.state }); diff --git a/nodes/espruino/led.js b/nodes/espruino/led.js index a0c56bd6..68e395a5 100644 --- a/nodes/espruino/led.js +++ b/nodes/espruino/led.js @@ -4,7 +4,11 @@ module.exports.setup = function(e) { }; module.exports.evaluate = function(e) { - var b = e.inputs.brightness; - b = b * b * b; - analogWrite(e.context.pin, b); + const b = e.inputs.brightness; + + // Adjust duty cycle as a power function to align brightness + // perception by human eye + const duty = b * b * b; + + analogWrite(e.context.pin, duty); }; diff --git a/nodes/espruino/pot.js b/nodes/espruino/pot.js index 52b22fc9..87aaf8ad 100644 --- a/nodes/espruino/pot.js +++ b/nodes/espruino/pot.js @@ -5,5 +5,4 @@ module.exports.setup = function(e) { module.exports.evaluate = function(e) { e.fire({ value: analogRead(e.context.pin) }); - return analogRead(pin); }; diff --git a/nodes/espruino/servo.js b/nodes/espruino/servo.js index f3f365e5..bd336769 100644 --- a/nodes/espruino/servo.js +++ b/nodes/espruino/servo.js @@ -4,8 +4,8 @@ module.exports.setup = function(e) { }; module.exports.evaluate = function(e) { - var minPulse = +e.props.minPulse; - var maxPulse = +e.props.maxPulse; - var us = minPulse + (maxPulse - minPulse) * e.inputs.value; + const minPulse = +e.props.minPulse; + const maxPulse = +e.props.maxPulse; + const us = minPulse + (maxPulse - minPulse) * e.inputs.value; analogWrite(e.context.pin, us / 20000, { freq: 50 }); }; diff --git a/nodes/js/constBool.js b/nodes/js/constBool.js index c7ae2c07..2fd6e640 100644 --- a/nodes/js/constBool.js +++ b/nodes/js/constBool.js @@ -1,4 +1,4 @@ module.exports.setup = function(e) { - e.fire({value: e.props.value}); + e.fire({ value: e.props.value }); }; diff --git a/nodes/js/constNumber.js b/nodes/js/constNumber.js index c7ae2c07..2fd6e640 100644 --- a/nodes/js/constNumber.js +++ b/nodes/js/constNumber.js @@ -1,4 +1,4 @@ module.exports.setup = function(e) { - e.fire({value: e.props.value}); + e.fire({ value: e.props.value }); }; diff --git a/nodes/js/constSting.js b/nodes/js/constSting.js index c7ae2c07..2fd6e640 100644 --- a/nodes/js/constSting.js +++ b/nodes/js/constSting.js @@ -1,4 +1,4 @@ module.exports.setup = function(e) { - e.fire({value: e.props.value}); + e.fire({ value: e.props.value }); }; diff --git a/nodes/js/either.js b/nodes/js/either.js index cbb8052d..bc79add5 100644 --- a/nodes/js/either.js +++ b/nodes/js/either.js @@ -1,5 +1,5 @@ module.exports.evaluate = function(e) { - var out = e.inputs.inp ? e.inputs.trueValue : e.inputs.falseValue; + const out = e.inputs.inp ? e.inputs.trueValue : e.inputs.falseValue; return { out: out }; }; diff --git a/nodes/js/latch.js b/nodes/js/latch.js index 7fb849e6..4966fe1f 100644 --- a/nodes/js/latch.js +++ b/nodes/js/latch.js @@ -4,13 +4,17 @@ module.exports.setup = function(e) { }; module.exports.evaluate = function(e) { - var inputs = e.inputs; - var ctx = e.context; + const inputs = e.inputs; + let newState; + if (inputs.toggle) { - return (ctx.state = !ctx.state); + newState = !e.context.state; } else if (inputs.set) { - return (ctx.state = true); + newState = true; } else /* if (inputs.reset) */ { - return (ctx.state = false); + newState = false; } + + e.context.state = newState; + return { state: newState }; }; diff --git a/nodes/js/map.js b/nodes/js/map.js index 2a71a2f0..82b83c86 100644 --- a/nodes/js/map.js +++ b/nodes/js/map.js @@ -1,8 +1,9 @@ module.exports.evaluate = function(e) { - var inputs = e.inputs; - var k = (inputs.inp - inputs.inA) / (inputs.inB - inputs.inA); - var out = inputs.outA + k * (inputs.outB - inputs.outA); + const inputs = e.inputs; + const k = (inputs.inp - inputs.inA) / (inputs.inB - inputs.inA); + + let out = inputs.outA + k * (inputs.outB - inputs.outA); if (inputs.clip) { if (inputs.outB > inputs.outA) { diff --git a/nodes/js/not.js b/nodes/js/not.js index f6cf6191..50aaf45b 100644 --- a/nodes/js/not.js +++ b/nodes/js/not.js @@ -1,4 +1,4 @@ module.exports.evaluate = function(e) { - return {out: !e.inputs.in}; + return { out: !e.inputs.in }; }; diff --git a/package.json b/package.json index 6e4e4ed5..f16f15dc 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "build-chrome": "webpack --progress --colors --config webpack/chrome-dev.js", "dev-chrome": "webpack --watch --progress --colors --config webpack/chrome-dev.js", "lint-es6": "eslint --ext .js --ext .jsx ./app ./targets ./test --ignore-path targets/xod-espruino/runtime.js || true", - "lint-espruino": "eslint --config .eslintrc.espruino.js targets/xod-espruino/runtime.js || true", + "lint-espruino": "eslint --config .eslintrc.espruino.js targets/xod-espruino/runtime.js nodes/js nodes/espruino || true", "lint": "npm-run-all lint-es6 lint-espruino", "test": "mocha-webpack \"test/**/*Spec.js\"", "travis": "npm-run-all --continue-on-error lint test"